[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.4 and 1.5

version 1.4, 2009/07/11 19:09:24 version 1.5, 2009/07/12 16:12:34
Line 48 
Line 48 
             struct window_pane *, char **, size_t *, u_int, u_int, u_int);              struct window_pane *, char **, size_t *, u_int, u_int, u_int);
 int     window_copy_is_space(struct window_pane *, u_int, u_int);  int     window_copy_is_space(struct window_pane *, u_int, u_int);
 u_int   window_copy_find_length(struct window_pane *, u_int);  u_int   window_copy_find_length(struct window_pane *, u_int);
   void    window_copy_set_cursor_x(struct window_pane *, u_int);
 void    window_copy_cursor_start_of_line(struct window_pane *);  void    window_copy_cursor_start_of_line(struct window_pane *);
 void    window_copy_cursor_end_of_line(struct window_pane *);  void    window_copy_cursor_end_of_line(struct window_pane *);
 void    window_copy_cursor_left(struct window_pane *);  void    window_copy_cursor_left(struct window_pane *);
Line 542 
Line 543 
         return (px);          return (px);
 }  }
   
   /*
    * Set the cursor X coordinate and scroll horizontally to make it visible.
    * Also redraw the selection or the cursor, as needed.
    */
 void  void
 window_copy_cursor_start_of_line(struct window_pane *wp)  window_copy_set_cursor_x(struct window_pane *wp, u_int px)
 {  {
         struct window_copy_mode_data    *data = wp->modedata;          struct window_copy_mode_data    *data = wp->modedata;
   
         if (data->ox != 0)  
                 window_copy_scroll_right(wp, data->ox);  
         data->cx = 0;  
   
         if (window_copy_update_selection(wp))  
                 window_copy_redraw_lines(wp, data->cy, 1);  
         else  
                 window_copy_update_cursor(wp);  
 }  
   
 void  
 window_copy_cursor_end_of_line(struct window_pane *wp)  
 {  
         struct window_copy_mode_data    *data = wp->modedata;  
         struct screen                   *s = &data->screen;          struct screen                   *s = &data->screen;
         u_int                            px, py;  
   
         py = screen_hsize(&wp->base) + data->cy - data->oy;  
         px = window_copy_find_length(wp, py);  
   
         /* On screen. */          /* On screen. */
         if (px > data->ox && px <= data->ox + screen_size_x(s) - 1)          if (px > data->ox && px <= data->ox + screen_size_x(s) - 1)
                 data->cx = px - data->ox;                  data->cx = px - data->ox;
Line 600 
Line 586 
 }  }
   
 void  void
   window_copy_cursor_start_of_line(struct window_pane *wp)
   {
           struct window_copy_mode_data    *data = wp->modedata;
   
           if (data->ox != 0)
                   window_copy_scroll_right(wp, data->ox);
           data->cx = 0;
   
           if (window_copy_update_selection(wp))
                   window_copy_redraw_lines(wp, data->cy, 1);
           else
                   window_copy_update_cursor(wp);
   }
   
   void
   window_copy_cursor_end_of_line(struct window_pane *wp)
   {
           struct window_copy_mode_data    *data = wp->modedata;
           u_int                            px, py;
   
           py = screen_hsize(&wp->base) + data->cy - data->oy;
           px = window_copy_find_length(wp, py);
   
           window_copy_set_cursor_x(wp, px);
   }
   
   void
 window_copy_cursor_left(struct window_pane *wp)  window_copy_cursor_left(struct window_pane *wp)
 {  {
         struct window_copy_mode_data    *data = wp->modedata;          struct window_copy_mode_data    *data = wp->modedata;
Line 748 
Line 761 
         }          }
 out:  out:
   
         /* On screen. */          window_copy_set_cursor_x(wp, px);
         if (px > data->ox && px <= data->ox + screen_size_x(s) - 1)  
                 data->cx = px - data->ox;  
   
         /* Off right of screen. */  
         if (px > data->ox + screen_size_x(s) - 1) {  
                 /* Move cursor to last and scroll screen. */  
                 window_copy_scroll_left(  
                     wp, px - data->ox - (screen_size_x(s) - 1));  
                 data->cx = screen_size_x(s) - 1;  
         }  
   
         /* Off left of screen. */  
         if (px <= data->ox) {  
                 if (px < screen_size_x(s) - 1) {  
                         /* Short enough to fit on screen. */  
                         window_copy_scroll_right(wp, data->ox);  
                         data->cx = px;  
                 } else {  
                         /* Too long to fit on screen. */  
                         window_copy_scroll_right(  
                             wp, data->ox - (px - (screen_size_x(s) - 1)));  
                         data->cx = screen_size_x(s) - 1;  
                 }  
         }  
   
         if (window_copy_update_selection(wp))  
                 window_copy_redraw_lines(wp, data->cy, 1);  
         else  
                 window_copy_update_cursor(wp);  
 }  }
   
 void  void
 window_copy_cursor_previous_word(struct window_pane *wp)  window_copy_cursor_previous_word(struct window_pane *wp)
 {  {
         struct window_copy_mode_data    *data = wp->modedata;          struct window_copy_mode_data    *data = wp->modedata;
         struct screen                   *s = &data->screen;  
         u_int                            ox, px, py, skip;          u_int                            ox, px, py, skip;
   
         ox = px = data->ox + data->cx;          ox = px = data->ox + data->cx;
Line 830 
Line 813 
         }          }
 out:  out:
   
         /* On screen. */          window_copy_set_cursor_x(wp, px);
         if (px > data->ox && px <= data->ox + screen_size_x(s) - 1)  
                 data->cx = px - data->ox;  
   
         /* Off right of screen. */  
         if (px > data->ox + screen_size_x(s) - 1) {  
                 /* Move cursor to last and scroll screen. */  
                 window_copy_scroll_left(  
                     wp, px - data->ox - (screen_size_x(s) - 1));  
                 data->cx = screen_size_x(s) - 1;  
         }  
   
         /* Off left of screen. */  
         if (px <= data->ox) {  
                 if (px < screen_size_x(s) - 1) {  
                         /* Short enough to fit on screen. */  
                         window_copy_scroll_right(wp, data->ox);  
                         data->cx = px;  
                 } else {  
                         /* Too long to fit on screen. */  
                         window_copy_scroll_right(  
                             wp, data->ox - (px - (screen_size_x(s) - 1)));  
                         data->cx = screen_size_x(s) - 1;  
                 }  
         }  
   
         if (window_copy_update_selection(wp))  
                 window_copy_redraw_lines(wp, data->cy, 1);  
         else  
                 window_copy_update_cursor(wp);  
 }  }
   
 void  void

Legend:
Removed from v.1.4  
changed lines
  Added in v.1.5