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

Diff for /src/usr.bin/tmux/window-copy.c between version 1.15 and 1.16

version 1.15, 2009/08/08 13:29:27 version 1.16, 2009/08/08 15:57:49
Line 449 
Line 449 
         if (sy == ey)          if (sy == ey)
                 window_copy_copy_line(wp, &buf, &off, sy, sx, ex);                  window_copy_copy_line(wp, &buf, &off, sy, sx, ex);
         else {          else {
                 xx = window_copy_find_length(wp, sy);                  xx = screen_size_x(s);
                 window_copy_copy_line(wp, &buf, &off, sy, sx, xx);                  window_copy_copy_line(wp, &buf, &off, sy, sx, xx);
                 if (ey - sy > 1) {                  if (ey - sy > 1) {
                         for (i = sy + 1; i < ey; i++) {                          for (i = sy + 1; i < ey; i++)
                                 xx = window_copy_find_length(wp, i);  
                                 window_copy_copy_line(wp, &buf, &off, i, 0, xx);                                  window_copy_copy_line(wp, &buf, &off, i, 0, xx);
                         }  
                 }                  }
                 window_copy_copy_line(wp, &buf, &off, ey, 0, ex);                  window_copy_copy_line(wp, &buf, &off, ey, 0, ex);
         }          }
Line 473 
Line 471 
 window_copy_copy_line(struct window_pane *wp,  window_copy_copy_line(struct window_pane *wp,
     char **buf, size_t *off, u_int sy, u_int sx, u_int ex)      char **buf, size_t *off, u_int sy, u_int sx, u_int ex)
 {  {
           struct grid             *gd = wp->base.grid;
         const struct grid_cell  *gc;          const struct grid_cell  *gc;
         const struct grid_utf8  *gu;          const struct grid_utf8  *gu;
         u_int                    i, j, xx;          struct grid_line        *gl;
           u_int                    i, j, xx, wrapped = 0;
   
         if (sx > ex)          if (sx > ex)
                 return;                  return;
   
         xx = window_copy_find_length(wp, sy);          /*
            * Work out if the line was wrapped at the screen edge and all of it is
            * on screen.
            */
           gl = &gd->linedata[sy];
           if (gl->flags & GRID_LINE_WRAPPED && gl->cellsize <= gd->sx)
                   wrapped = 1;
   
           /* If the line was wrapped, don't strip spaces (use the full length). */
           if (wrapped)
                   xx = gl->cellsize;
           else
                   xx = window_copy_find_length(wp, sy);
         if (ex > xx)          if (ex > xx)
                 ex = xx;                  ex = xx;
         if (sx > xx)          if (sx > xx)
Line 488 
Line 500 
   
         if (sx < ex) {          if (sx < ex) {
                 for (i = sx; i < ex; i++) {                  for (i = sx; i < ex; i++) {
                         gc = grid_peek_cell(wp->base.grid, i, sy);                          gc = grid_peek_cell(gd, i, sy);
                         if (gc->flags & GRID_FLAG_PADDING)                          if (gc->flags & GRID_FLAG_PADDING)
                                 continue;                                  continue;
                         if (!(gc->flags & GRID_FLAG_UTF8)) {                          if (!(gc->flags & GRID_FLAG_UTF8)) {
                                 *buf = xrealloc(*buf, 1, (*off) + 1);                                  *buf = xrealloc(*buf, 1, (*off) + 1);
                                 (*buf)[(*off)++] = gc->data;                                  (*buf)[(*off)++] = gc->data;
                         } else {                          } else {
                                 gu = grid_peek_utf8(wp->base.grid, i, sy);                                  gu = grid_peek_utf8(gd, i, sy);
                                 *buf = xrealloc(*buf, 1, (*off) + UTF8_SIZE);                                  *buf = xrealloc(*buf, 1, (*off) + UTF8_SIZE);
                                 for (j = 0; j < UTF8_SIZE; j++) {                                  for (j = 0; j < UTF8_SIZE; j++) {
                                         if (gu->data[j] == 0xff)                                          if (gu->data[j] == 0xff)
Line 506 
Line 518 
                 }                  }
         }          }
   
         *buf = xrealloc(*buf, 1, (*off) + 1);          /* Only add a newline if the line wasn't wrapped. */
         (*buf)[*off] = '\n';          if (!wrapped) {
         (*off)++;                  *buf = xrealloc(*buf, 1, (*off) + 1);
                   (*buf)[(*off)++] = '\n';
           }
 }  }
   
 int  int

Legend:
Removed from v.1.15  
changed lines
  Added in v.1.16