[BACK]Return to grid.c CVS log [TXT][DIR] Up to [local] / src / usr.bin / tmux

Diff for /src/usr.bin/tmux/grid.c between version 1.109 and 1.110

version 1.109, 2020/05/16 16:22:01 version 1.110, 2020/05/25 09:32:10
Line 100 
Line 100 
 }  }
   
 /* Set cell as extended. */  /* Set cell as extended. */
 static struct grid_cell *  static struct grid_extd_entry *
 grid_extended_cell(struct grid_line *gl, struct grid_cell_entry *gce,  grid_extended_cell(struct grid_line *gl, struct grid_cell_entry *gce,
     const struct grid_cell *gc)      const struct grid_cell *gc)
 {  {
         struct grid_cell        *gcp;          struct grid_extd_entry  *gee;
         int                      flags = (gc->flags & ~GRID_FLAG_CLEARED);          int                      flags = (gc->flags & ~GRID_FLAG_CLEARED);
   
         if (~gce->flags & GRID_FLAG_EXTENDED)          if (~gce->flags & GRID_FLAG_EXTENDED)
Line 113 
Line 113 
                 fatalx("offset too big");                  fatalx("offset too big");
         gl->flags |= GRID_LINE_EXTENDED;          gl->flags |= GRID_LINE_EXTENDED;
   
         gcp = &gl->extddata[gce->offset];          gee = &gl->extddata[gce->offset];
         memcpy(gcp, gc, sizeof *gcp);          gee->data = utf8_map_big(&gc->data);
         gcp->flags = flags;          gee->attr = gc->attr;
         return (gcp);          gee->flags = flags;
           gee->fg = gc->fg;
           gee->bg = gc->bg;
           gee->us = gc->us;
           return (gee);
 }  }
   
 /* Free up unused extended cells. */  /* Free up unused extended cells. */
Line 124 
Line 128 
 grid_compact_line(struct grid_line *gl)  grid_compact_line(struct grid_line *gl)
 {  {
         int                      new_extdsize = 0;          int                      new_extdsize = 0;
         struct grid_cell        *new_extddata;          struct grid_extd_entry  *new_extddata;
         struct grid_cell_entry  *gce;          struct grid_cell_entry  *gce;
         struct grid_cell        *gc;          struct grid_extd_entry  *gee;
         u_int                    px, idx;          u_int                    px, idx;
   
         if (gl->extdsize == 0)          if (gl->extdsize == 0)
Line 150 
Line 154 
         for (px = 0; px < gl->cellsize; px++) {          for (px = 0; px < gl->cellsize; px++) {
                 gce = &gl->celldata[px];                  gce = &gl->celldata[px];
                 if (gce->flags & GRID_FLAG_EXTENDED) {                  if (gce->flags & GRID_FLAG_EXTENDED) {
                         gc = &gl->extddata[gce->offset];                          gee = &gl->extddata[gce->offset];
                         memcpy(&new_extddata[idx], gc, sizeof *gc);                          memcpy(&new_extddata[idx], gee, sizeof *gee);
                         gce->offset = idx++;                          gce->offset = idx++;
                 }                  }
         }          }
Line 181 
Line 185 
 {  {
         struct grid_line        *gl = &gd->linedata[py];          struct grid_line        *gl = &gd->linedata[py];
         struct grid_cell_entry  *gce = &gl->celldata[px];          struct grid_cell_entry  *gce = &gl->celldata[px];
         struct grid_cell        *gc;          struct grid_extd_entry  *gee;
   
         memcpy(gce, &grid_cleared_entry, sizeof *gce);          memcpy(gce, &grid_cleared_entry, sizeof *gce);
         if (bg != 8) {          if (bg != 8) {
                 if (bg & COLOUR_FLAG_RGB) {                  if (bg & COLOUR_FLAG_RGB) {
                         grid_get_extended_cell(gl, gce, gce->flags);                          grid_get_extended_cell(gl, gce, gce->flags);
                         gl->flags |= GRID_LINE_EXTENDED;                          gee = grid_extended_cell(gl, gce, &grid_cleared_cell);
                           gee->bg = bg;
                         gc = &gl->extddata[gce->offset];  
                         memcpy(gc, &grid_cleared_cell, sizeof *gc);  
                         gc->bg = bg;  
                 } else {                  } else {
                         if (bg & COLOUR_FLAG_256)                          if (bg & COLOUR_FLAG_256)
                                 gce->flags |= GRID_FLAG_BG256;                                  gce->flags |= GRID_FLAG_BG256;
Line 483 
Line 484 
 grid_get_cell1(struct grid_line *gl, u_int px, struct grid_cell *gc)  grid_get_cell1(struct grid_line *gl, u_int px, struct grid_cell *gc)
 {  {
         struct grid_cell_entry  *gce = &gl->celldata[px];          struct grid_cell_entry  *gce = &gl->celldata[px];
           struct grid_extd_entry  *gee;
   
         if (gce->flags & GRID_FLAG_EXTENDED) {          if (gce->flags & GRID_FLAG_EXTENDED) {
                 if (gce->offset >= gl->extdsize)                  if (gce->offset >= gl->extdsize)
                         memcpy(gc, &grid_default_cell, sizeof *gc);                          memcpy(gc, &grid_default_cell, sizeof *gc);
                 else                  else {
                         memcpy(gc, &gl->extddata[gce->offset], sizeof *gc);                          gee = &gl->extddata[gce->offset];
                           gc->flags = gee->flags;
                           gc->attr = gee->attr;
                           gc->fg = gee->fg;
                           gc->bg = gee->bg;
                           gc->us = gee->us;
                           utf8_get_big(gee->data, &gc->data);
                   }
                 return;                  return;
         }          }
   
Line 545 
Line 554 
 {  {
         struct grid_line        *gl;          struct grid_line        *gl;
         struct grid_cell_entry  *gce;          struct grid_cell_entry  *gce;
         struct grid_cell        *gcp;          struct grid_extd_entry  *gee;
         u_int                    i;          u_int                    i;
   
         if (grid_check_y(gd, __func__, py) != 0)          if (grid_check_y(gd, __func__, py) != 0)
Line 560 
Line 569 
         for (i = 0; i < slen; i++) {          for (i = 0; i < slen; i++) {
                 gce = &gl->celldata[px + i];                  gce = &gl->celldata[px + i];
                 if (grid_need_extended_cell(gce, gc)) {                  if (grid_need_extended_cell(gce, gc)) {
                         gcp = grid_extended_cell(gl, gce, gc);                          gee = grid_extended_cell(gl, gce, gc);
                         utf8_set(&gcp->data, s[i]);                          gee->data = utf8_set_big(s[i], 1);
                 } else                  } else
                         grid_store_cell(gce, gc, s[i]);                          grid_store_cell(gce, gc, s[i]);
         }          }

Legend:
Removed from v.1.109  
changed lines
  Added in v.1.110