[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.95 and 1.96

version 1.95, 2013/10/23 11:31:03 version 1.96, 2013/11/08 12:39:20
Line 51 
Line 51 
 void    window_copy_goto_line(struct window_pane *, const char *);  void    window_copy_goto_line(struct window_pane *, const char *);
 void    window_copy_update_cursor(struct window_pane *, u_int, u_int);  void    window_copy_update_cursor(struct window_pane *, u_int, u_int);
 void    window_copy_start_selection(struct window_pane *);  void    window_copy_start_selection(struct window_pane *);
 int     window_copy_update_selection(struct window_pane *);  int     window_copy_update_selection(struct window_pane *, int);
 void   *window_copy_get_selection(struct window_pane *, size_t *);  void   *window_copy_get_selection(struct window_pane *, size_t *);
 void    window_copy_copy_buffer(struct window_pane *, int, void *, size_t);  void    window_copy_copy_buffer(struct window_pane *, int, void *, size_t);
 void    window_copy_copy_pipe(  void    window_copy_copy_pipe(
Line 329 
Line 329 
                 data->oy = screen_hsize(data->backing);                  data->oy = screen_hsize(data->backing);
         else          else
                 data->oy += n;                  data->oy += n;
         window_copy_update_selection(wp);          window_copy_update_selection(wp, 1);
         window_copy_redraw_screen(wp);          window_copy_redraw_screen(wp);
 }  }
   
Line 458 
Line 458 
                         else                          else
                                 data->oy -= n;                                  data->oy -= n;
                 }                  }
                 window_copy_update_selection(wp);                  window_copy_update_selection(wp, 1);
                 window_copy_redraw_screen(wp);                  window_copy_redraw_screen(wp);
                 break;                  break;
         case MODEKEYCOPY_HALFPAGEUP:          case MODEKEYCOPY_HALFPAGEUP:
Line 469 
Line 469 
                         else                          else
                                 data->oy += n;                                  data->oy += n;
                 }                  }
                 window_copy_update_selection(wp);                  window_copy_update_selection(wp, 1);
                 window_copy_redraw_screen(wp);                  window_copy_redraw_screen(wp);
                 break;                  break;
         case MODEKEYCOPY_HALFPAGEDOWN:          case MODEKEYCOPY_HALFPAGEDOWN:
Line 480 
Line 480 
                         else                          else
                                 data->oy -= n;                                  data->oy -= n;
                 }                  }
                 window_copy_update_selection(wp);                  window_copy_update_selection(wp, 1);
                 window_copy_redraw_screen(wp);                  window_copy_redraw_screen(wp);
                 break;                  break;
         case MODEKEYCOPY_TOPLINE:          case MODEKEYCOPY_TOPLINE:
                 data->cx = 0;                  data->cx = 0;
                 data->cy = 0;                  data->cy = 0;
                 window_copy_update_selection(wp);                  window_copy_update_selection(wp, 1);
                 window_copy_redraw_screen(wp);                  window_copy_redraw_screen(wp);
                 break;                  break;
         case MODEKEYCOPY_MIDDLELINE:          case MODEKEYCOPY_MIDDLELINE:
                 data->cx = 0;                  data->cx = 0;
                 data->cy = (screen_size_y(s) - 1) / 2;                  data->cy = (screen_size_y(s) - 1) / 2;
                 window_copy_update_selection(wp);                  window_copy_update_selection(wp, 1);
                 window_copy_redraw_screen(wp);                  window_copy_redraw_screen(wp);
                 break;                  break;
         case MODEKEYCOPY_BOTTOMLINE:          case MODEKEYCOPY_BOTTOMLINE:
                 data->cx = 0;                  data->cx = 0;
                 data->cy = screen_size_y(s) - 1;                  data->cy = screen_size_y(s) - 1;
                 window_copy_update_selection(wp);                  window_copy_update_selection(wp, 1);
                 window_copy_redraw_screen(wp);                  window_copy_redraw_screen(wp);
                 break;                  break;
         case MODEKEYCOPY_HISTORYTOP:          case MODEKEYCOPY_HISTORYTOP:
                 data->cx = 0;                  data->cx = 0;
                 data->cy = 0;                  data->cy = 0;
                 data->oy = screen_hsize(data->backing);                  data->oy = screen_hsize(data->backing);
                 window_copy_update_selection(wp);                  window_copy_update_selection(wp, 1);
                 window_copy_redraw_screen(wp);                  window_copy_redraw_screen(wp);
                 break;                  break;
         case MODEKEYCOPY_HISTORYBOTTOM:          case MODEKEYCOPY_HISTORYBOTTOM:
                 data->cx = 0;                  data->cx = 0;
                 data->cy = screen_size_y(s) - 1;                  data->cy = screen_size_y(s) - 1;
                 data->oy = 0;                  data->oy = 0;
                 window_copy_update_selection(wp);                  window_copy_update_selection(wp, 1);
                 window_copy_redraw_screen(wp);                  window_copy_redraw_screen(wp);
                 break;                  break;
         case MODEKEYCOPY_STARTSELECTION:          case MODEKEYCOPY_STARTSELECTION:
Line 865 
Line 865 
         if (s->mode & MODE_MOUSE_BUTTON) {          if (s->mode & MODE_MOUSE_BUTTON) {
                 if (~m->event & MOUSE_EVENT_UP) {                  if (~m->event & MOUSE_EVENT_UP) {
                         window_copy_update_cursor(wp, m->x, m->y);                          window_copy_update_cursor(wp, m->x, m->y);
                         if (window_copy_update_selection(wp))                          if (window_copy_update_selection(wp, 1))
                                 window_copy_redraw_screen(wp);                                  window_copy_redraw_screen(wp);
                         return;                          return;
                 }                  }
Line 915 
Line 915 
         }          }
         data->oy = gd->hsize - offset;          data->oy = gd->hsize - offset;
   
         window_copy_update_selection(wp);          window_copy_update_selection(wp, 1);
         window_copy_redraw_screen(wp);          window_copy_redraw_screen(wp);
 }  }
   
Line 1108 
Line 1108 
                 return;                  return;
   
         data->oy = lineno;          data->oy = lineno;
         window_copy_update_selection(wp);          window_copy_update_selection(wp, 1);
         window_copy_redraw_screen(wp);          window_copy_redraw_screen(wp);
 }  }
   
Line 1221 
Line 1221 
         data->sely = screen_hsize(data->backing) + data->cy - data->oy;          data->sely = screen_hsize(data->backing) + data->cy - data->oy;
   
         s->sel.flag = 1;          s->sel.flag = 1;
         window_copy_update_selection(wp);          window_copy_update_selection(wp, 1);
 }  }
   
 int  int
 window_copy_update_selection(struct window_pane *wp)  window_copy_update_selection(struct window_pane *wp, int may_redraw)
 {  {
         struct window_copy_mode_data    *data = wp->modedata;          struct window_copy_mode_data    *data = wp->modedata;
         struct screen                   *s = &data->screen;          struct screen                   *s = &data->screen;
Line 1260 
Line 1260 
         screen_set_selection(s,          screen_set_selection(s,
             sx, sy, data->cx, screen_hsize(s) + data->cy, data->rectflag, &gc);              sx, sy, data->cx, screen_hsize(s) + data->cy, data->rectflag, &gc);
   
         if (data->rectflag) {          if (data->rectflag && may_redraw) {
                 /*                  /*
                  * Can't rely on the caller to redraw the right lines for                   * Can't rely on the caller to redraw the right lines for
                  * rectangle selection - find the highest line and the number                   * rectangle selection - find the highest line and the number
Line 1564 
Line 1564 
                 }                  }
         }          }
         window_copy_update_cursor(wp, 0, data->cy);          window_copy_update_cursor(wp, 0, data->cy);
         if (window_copy_update_selection(wp))          if (window_copy_update_selection(wp, 1))
                 window_copy_redraw_lines(wp, data->cy, 1);                  window_copy_redraw_lines(wp, data->cy, 1);
 }  }
   
Line 1589 
Line 1589 
         }          }
   
         window_copy_update_cursor(wp, px, data->cy);          window_copy_update_cursor(wp, px, data->cy);
         if (window_copy_update_selection(wp))          if (window_copy_update_selection(wp, 1))
                 window_copy_redraw_lines(wp, data->cy, 1);                  window_copy_redraw_lines(wp, data->cy, 1);
 }  }
   
Line 1619 
Line 1619 
         }          }
         window_copy_update_cursor(wp, px, data->cy);          window_copy_update_cursor(wp, px, data->cy);
   
         if (window_copy_update_selection(wp))          if (window_copy_update_selection(wp, 1))
                 window_copy_redraw_lines(wp, data->cy, 1);                  window_copy_redraw_lines(wp, data->cy, 1);
 }  }
   
Line 1666 
Line 1666 
                 window_copy_cursor_end_of_line(wp);                  window_copy_cursor_end_of_line(wp);
         } else {          } else {
                 window_copy_update_cursor(wp, data->cx - 1, data->cy);                  window_copy_update_cursor(wp, data->cx - 1, data->cy);
                 if (window_copy_update_selection(wp))                  if (window_copy_update_selection(wp, 1))
                         window_copy_redraw_lines(wp, data->cy, 1);                          window_copy_redraw_lines(wp, data->cy, 1);
         }          }
 }  }
Line 1689 
Line 1689 
                 window_copy_cursor_down(wp, 0);                  window_copy_cursor_down(wp, 0);
         } else {          } else {
                 window_copy_update_cursor(wp, data->cx + 1, data->cy);                  window_copy_update_cursor(wp, data->cx + 1, data->cy);
                 if (window_copy_update_selection(wp))                  if (window_copy_update_selection(wp, 1))
                         window_copy_redraw_lines(wp, data->cy, 1);                          window_copy_redraw_lines(wp, data->cy, 1);
         }          }
 }  }
Line 1719 
Line 1719 
                 }                  }
         } else {          } else {
                 window_copy_update_cursor(wp, data->cx, data->cy - 1);                  window_copy_update_cursor(wp, data->cx, data->cy - 1);
                 if (window_copy_update_selection(wp)) {                  if (window_copy_update_selection(wp, 1)) {
                         if (data->cy == screen_size_y(s) - 1)                          if (data->cy == screen_size_y(s) - 1)
                                 window_copy_redraw_lines(wp, data->cy, 1);                                  window_copy_redraw_lines(wp, data->cy, 1);
                         else                          else
Line 1757 
Line 1757 
                         window_copy_redraw_lines(wp, data->cy - 1, 2);                          window_copy_redraw_lines(wp, data->cy - 1, 2);
         } else {          } else {
                 window_copy_update_cursor(wp, data->cx, data->cy + 1);                  window_copy_update_cursor(wp, data->cx, data->cy + 1);
                 if (window_copy_update_selection(wp))                  if (window_copy_update_selection(wp, 1))
                         window_copy_redraw_lines(wp, data->cy - 1, 2);                          window_copy_redraw_lines(wp, data->cy - 1, 2);
         }          }
   
Line 1789 
Line 1789 
                 if (!(gc->flags & GRID_FLAG_PADDING) &&                  if (!(gc->flags & GRID_FLAG_PADDING) &&
                     ud.size == 1 && *ud.data == data->jumpchar) {                      ud.size == 1 && *ud.data == data->jumpchar) {
                         window_copy_update_cursor(wp, px, data->cy);                          window_copy_update_cursor(wp, px, data->cy);
                         if (window_copy_update_selection(wp))                          if (window_copy_update_selection(wp, 1))
                                 window_copy_redraw_lines(wp, data->cy, 1);                                  window_copy_redraw_lines(wp, data->cy, 1);
                         return;                          return;
                 }                  }
Line 1818 
Line 1818 
                 if (!(gc->flags & GRID_FLAG_PADDING) &&                  if (!(gc->flags & GRID_FLAG_PADDING) &&
                     ud.size == 1 && *ud.data == data->jumpchar) {                      ud.size == 1 && *ud.data == data->jumpchar) {
                         window_copy_update_cursor(wp, px, data->cy);                          window_copy_update_cursor(wp, px, data->cy);
                         if (window_copy_update_selection(wp))                          if (window_copy_update_selection(wp, 1))
                                 window_copy_redraw_lines(wp, data->cy, 1);                                  window_copy_redraw_lines(wp, data->cy, 1);
                         return;                          return;
                 }                  }
Line 1847 
Line 1847 
                 if (!(gc->flags & GRID_FLAG_PADDING) &&                  if (!(gc->flags & GRID_FLAG_PADDING) &&
                     ud.size == 1 && *ud.data == data->jumpchar) {                      ud.size == 1 && *ud.data == data->jumpchar) {
                         window_copy_update_cursor(wp, px - 1, data->cy);                          window_copy_update_cursor(wp, px - 1, data->cy);
                         if (window_copy_update_selection(wp))                          if (window_copy_update_selection(wp, 1))
                                 window_copy_redraw_lines(wp, data->cy, 1);                                  window_copy_redraw_lines(wp, data->cy, 1);
                         return;                          return;
                 }                  }
Line 1876 
Line 1876 
                 if (!(gc->flags & GRID_FLAG_PADDING) &&                  if (!(gc->flags & GRID_FLAG_PADDING) &&
                     ud.size == 1 && *ud.data == data->jumpchar) {                      ud.size == 1 && *ud.data == data->jumpchar) {
                         window_copy_update_cursor(wp, px + 1, data->cy);                          window_copy_update_cursor(wp, px + 1, data->cy);
                         if (window_copy_update_selection(wp))                          if (window_copy_update_selection(wp, 1))
                                 window_copy_redraw_lines(wp, data->cy, 1);                                  window_copy_redraw_lines(wp, data->cy, 1);
                         return;                          return;
                 }                  }
Line 1924 
Line 1924 
         } while (expected == 1);          } while (expected == 1);
   
         window_copy_update_cursor(wp, px, data->cy);          window_copy_update_cursor(wp, px, data->cy);
         if (window_copy_update_selection(wp))          if (window_copy_update_selection(wp, 1))
                 window_copy_redraw_lines(wp, data->cy, 1);                  window_copy_redraw_lines(wp, data->cy, 1);
 }  }
   
Line 1974 
Line 1974 
                 px--;                  px--;
   
         window_copy_update_cursor(wp, px, data->cy);          window_copy_update_cursor(wp, px, data->cy);
         if (window_copy_update_selection(wp))          if (window_copy_update_selection(wp, 1))
                 window_copy_redraw_lines(wp, data->cy, 1);                  window_copy_redraw_lines(wp, data->cy, 1);
 }  }
   
Line 2012 
Line 2012 
   
 out:  out:
         window_copy_update_cursor(wp, px, data->cy);          window_copy_update_cursor(wp, px, data->cy);
         if (window_copy_update_selection(wp))          if (window_copy_update_selection(wp, 1))
                 window_copy_redraw_lines(wp, data->cy, 1);                  window_copy_redraw_lines(wp, data->cy, 1);
 }  }
   
Line 2029 
Line 2029 
                 return;                  return;
         data->oy -= ny;          data->oy -= ny;
   
           window_copy_update_selection(wp, 0);
   
         screen_write_start(&ctx, wp, NULL);          screen_write_start(&ctx, wp, NULL);
         screen_write_cursormove(&ctx, 0, 0);          screen_write_cursormove(&ctx, 0, 0);
         screen_write_deleteline(&ctx, ny);          screen_write_deleteline(&ctx, ny);
Line 2038 
Line 2040 
                 window_copy_write_line(wp, &ctx, 1);                  window_copy_write_line(wp, &ctx, 1);
         if (screen_size_y(s) > 3)          if (screen_size_y(s) > 3)
                 window_copy_write_line(wp, &ctx, screen_size_y(s) - 2);                  window_copy_write_line(wp, &ctx, screen_size_y(s) - 2);
         if (s->sel.flag && screen_size_y(s) > ny) {          if (s->sel.flag && screen_size_y(s) > ny)
                 window_copy_update_selection(wp);  
                 window_copy_write_line(wp, &ctx, screen_size_y(s) - ny - 1);                  window_copy_write_line(wp, &ctx, screen_size_y(s) - ny - 1);
         }  
         screen_write_cursormove(&ctx, data->cx, data->cy);          screen_write_cursormove(&ctx, data->cx, data->cy);
         window_copy_update_selection(wp);  
         screen_write_stop(&ctx);          screen_write_stop(&ctx);
 }  }
   
Line 2063 
Line 2062 
                 return;                  return;
         data->oy += ny;          data->oy += ny;
   
           window_copy_update_selection(wp, 0);
   
         screen_write_start(&ctx, wp, NULL);          screen_write_start(&ctx, wp, NULL);
         screen_write_cursormove(&ctx, 0, 0);          screen_write_cursormove(&ctx, 0, 0);
         screen_write_insertline(&ctx, ny);          screen_write_insertline(&ctx, ny);
         window_copy_write_lines(wp, &ctx, 0, ny);          window_copy_write_lines(wp, &ctx, 0, ny);
         if (s->sel.flag && screen_size_y(s) > ny) {          if (s->sel.flag && screen_size_y(s) > ny)
                 window_copy_update_selection(wp);  
                 window_copy_write_line(wp, &ctx, ny);                  window_copy_write_line(wp, &ctx, ny);
         } else if (ny == 1) /* nuke position */          else if (ny == 1) /* nuke position */
                 window_copy_write_line(wp, &ctx, 1);                  window_copy_write_line(wp, &ctx, 1);
         screen_write_cursormove(&ctx, data->cx, data->cy);          screen_write_cursormove(&ctx, data->cx, data->cy);
         window_copy_update_selection(wp);  
         screen_write_stop(&ctx);          screen_write_stop(&ctx);
 }  }
   
Line 2090 
Line 2089 
         if (data->cx > px)          if (data->cx > px)
                 window_copy_update_cursor(wp, px, data->cy);                  window_copy_update_cursor(wp, px, data->cy);
   
         window_copy_update_selection(wp);          window_copy_update_selection(wp, 1);
         window_copy_redraw_screen(wp);          window_copy_redraw_screen(wp);
 }  }

Legend:
Removed from v.1.95  
changed lines
  Added in v.1.96