[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.265 and 1.266

version 1.265, 2020/04/03 05:18:02 version 1.266, 2020/04/06 17:51:34
Line 130 
Line 130 
 static void     window_copy_move_mouse(struct mouse_event *);  static void     window_copy_move_mouse(struct mouse_event *);
 static void     window_copy_drag_update(struct client *, struct mouse_event *);  static void     window_copy_drag_update(struct client *, struct mouse_event *);
 static void     window_copy_drag_release(struct client *, struct mouse_event *);  static void     window_copy_drag_release(struct client *, struct mouse_event *);
   static struct screen* window_copy_clone_screen(struct screen *src);
   
 const struct window_mode window_copy_mode = {  const struct window_mode window_copy_mode = {
         .name = "copy-mode",          .name = "copy-mode",
Line 205 
Line 206 
         struct screen   *backing;          struct screen   *backing;
         int              backing_written; /* backing display started */          int              backing_written; /* backing display started */
   
           int              viewmode;      /* view mode entered */
   
         u_int            oy;            /* number of lines scrolled up */          u_int            oy;            /* number of lines scrolled up */
   
         u_int            selx;          /* beginning of selection */          u_int            selx;          /* beginning of selection */
Line 295 
Line 298 
         }          }
 }  }
   
   static struct screen *
   window_copy_clone_screen(struct screen *src)
   {
           struct screen                   *dst;
           struct screen_write_ctx          ctx;
   
           dst = xcalloc(1, sizeof *dst);
           screen_init(dst, screen_size_x(src),
               screen_hsize(src) + screen_size_y(src), src->grid->hlimit);
           grid_duplicate_lines(dst->grid, 0, src->grid, 0,
               screen_hsize(src) + screen_size_y(src));
           dst->grid->sy = screen_size_y(src);
           dst->grid->hsize = screen_hsize(src);
   
           screen_write_start(&ctx, NULL, dst);
           screen_write_cursormove(&ctx, src->cx, src->cy, 0);
           screen_write_stop(&ctx);
   
           return (dst);
   }
   
 static struct window_copy_mode_data *  static struct window_copy_mode_data *
 window_copy_common_init(struct window_mode_entry *wme)  window_copy_common_init(struct window_mode_entry *wme)
 {  {
Line 320 
Line 344 
         data->searchmark = NULL;          data->searchmark = NULL;
         data->searchx = data->searchy = data->searcho = -1;          data->searchx = data->searchy = data->searcho = -1;
         data->timeout = 0;          data->timeout = 0;
           data->viewmode = 0;
   
         data->jumptype = WINDOW_COPY_OFF;          data->jumptype = WINDOW_COPY_OFF;
         data->jumpchar = '\0';          data->jumpchar = '\0';
Line 343 
Line 368 
   
         data = window_copy_common_init(wme);          data = window_copy_common_init(wme);
   
         if (wp->fd != -1 && wp->disabled++ == 0)          data->backing = window_copy_clone_screen(&wp->base);
                 bufferevent_disable(wp->event, EV_READ|EV_WRITE);  
   
         data->backing = &wp->base;  
         data->cx = data->backing->cx;          data->cx = data->backing->cx;
         data->cy = data->backing->cy;          data->cy = data->backing->cy;
   
Line 375 
Line 397 
         struct screen                   *s;          struct screen                   *s;
   
         data = window_copy_common_init(wme);          data = window_copy_common_init(wme);
           data->viewmode = 1;
   
         data->backing = s = xmalloc(sizeof *data->backing);          data->backing = s = xmalloc(sizeof *data->backing);
         screen_init(s, screen_size_x(base), screen_size_y(base), UINT_MAX);          screen_init(s, screen_size_x(base), screen_size_y(base), UINT_MAX);
Line 385 
Line 408 
 static void  static void
 window_copy_free(struct window_mode_entry *wme)  window_copy_free(struct window_mode_entry *wme)
 {  {
         struct window_pane              *wp = wme->wp;  
         struct window_copy_mode_data    *data = wme->data;          struct window_copy_mode_data    *data = wme->data;
   
         evtimer_del(&data->dragtimer);          evtimer_del(&data->dragtimer);
   
         if (wp->fd != -1 && --wp->disabled == 0)  
                 bufferevent_enable(wp->event, EV_READ|EV_WRITE);  
   
         free(data->searchmark);          free(data->searchmark);
         free(data->searchstr);          free(data->searchstr);
   
         if (data->backing != &wp->base) {          screen_free(data->backing);
                 screen_free(data->backing);          free(data->backing);
                 free(data->backing);  
         }  
         screen_free(&data->screen);  
   
           screen_free(&data->screen);
         free(data);          free(data);
 }  }
   
Line 425 
Line 442 
         struct grid_cell                 gc;          struct grid_cell                 gc;
         u_int                            old_hsize, old_cy;          u_int                            old_hsize, old_cy;
   
         if (backing == &wp->base)  
                 return;  
   
         memcpy(&gc, &grid_default_cell, sizeof gc);          memcpy(&gc, &grid_default_cell, sizeof gc);
   
         old_hsize = screen_hsize(data->backing);          old_hsize = screen_hsize(data->backing);
Line 663 
Line 677 
 static void  static void
 window_copy_resize(struct window_mode_entry *wme, u_int sx, u_int sy)  window_copy_resize(struct window_mode_entry *wme, u_int sx, u_int sy)
 {  {
         struct window_pane              *wp = wme->wp;  
         struct window_copy_mode_data    *data = wme->data;          struct window_copy_mode_data    *data = wme->data;
         struct screen                   *s = &data->screen;          struct screen                   *s = &data->screen;
         struct screen_write_ctx          ctx;          struct screen_write_ctx          ctx;
         int                              search;          int                              search;
   
         screen_resize(s, sx, sy, 1);          screen_resize(s, sx, sy, 1);
         if (data->backing != &wp->base)          screen_resize(data->backing, sx, sy, 1);
                 screen_resize(data->backing, sx, sy, 1);  
   
         if (data->cy > sy - 1)          if (data->cy > sy - 1)
                 data->cy = sy - 1;                  data->cy = sy - 1;
Line 1984 
Line 1996 
         return (action);          return (action);
 }  }
   
   static enum window_copy_cmd_action
   window_copy_cmd_refresh_from_pane(struct window_copy_cmd_state *cs)
   {
           struct window_mode_entry        *wme = cs->wme;
           struct window_pane              *wp = wme->wp;
           struct window_copy_mode_data    *data = wme->data;
   
           if (data->viewmode)
                   return (WINDOW_COPY_CMD_NOTHING);
   
           screen_free(data->backing);
           free(data->backing);
           data->backing = window_copy_clone_screen(&wp->base);
   
           return (WINDOW_COPY_CMD_REDRAW);
   }
   
 static const struct {  static const struct {
         const char                       *command;          const char                       *command;
         int                               minargs;          int                               minargs;
Line 2089 
Line 2118 
           window_copy_cmd_previous_word },            window_copy_cmd_previous_word },
         { "rectangle-toggle", 0, 0, 0,          { "rectangle-toggle", 0, 0, 0,
           window_copy_cmd_rectangle_toggle },            window_copy_cmd_rectangle_toggle },
           { "refresh-from-pane", 0, 0, 0,
             window_copy_cmd_refresh_from_pane },
         { "scroll-down", 0, 0, 1,          { "scroll-down", 0, 0, 1,
           window_copy_cmd_scroll_down },            window_copy_cmd_scroll_down },
         { "scroll-down-and-cancel", 0, 0, 0,          { "scroll-down-and-cancel", 0, 0, 0,

Legend:
Removed from v.1.265  
changed lines
  Added in v.1.266