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

Diff for /src/usr.bin/tmux/screen.c between version 1.51 and 1.52

version 1.51, 2018/07/04 09:44:07 version 1.52, 2018/07/31 11:49:26
Line 25 
Line 25 
   
 #include "tmux.h"  #include "tmux.h"
   
   /* Selected area in screen. */
   struct screen_sel {
           int              hidden;
           int              rectangle;
           int              modekeys;
   
           u_int            sx;
           u_int            sy;
   
           u_int            ex;
           u_int            ey;
   
           struct grid_cell cell;
   };
   
   /* Entry on title stack. */
 struct screen_title_entry {  struct screen_title_entry {
         char                            *text;          char                            *text;
   
Line 67 
Line 83 
         s->cstyle = 0;          s->cstyle = 0;
         s->ccolour = xstrdup("");          s->ccolour = xstrdup("");
         s->tabs = NULL;          s->tabs = NULL;
           s->sel = NULL;
   
         screen_reinit(s);          screen_reinit(s);
 }  }
Line 95 
Line 112 
 void  void
 screen_free(struct screen *s)  screen_free(struct screen *s)
 {  {
           free(s->sel);
         free(s->tabs);          free(s->tabs);
         free(s->title);          free(s->title);
         free(s->ccolour);          free(s->ccolour);
Line 317 
Line 335 
 /* Set selection. */  /* Set selection. */
 void  void
 screen_set_selection(struct screen *s, u_int sx, u_int sy,  screen_set_selection(struct screen *s, u_int sx, u_int sy,
     u_int ex, u_int ey, u_int rectflag, struct grid_cell *gc)      u_int ex, u_int ey, u_int rectangle, int modekeys, struct grid_cell *gc)
 {  {
         struct screen_sel       *sel = &s->sel;          if (s->sel == NULL)
                   s->sel = xcalloc(1, sizeof *s->sel);
   
         memcpy(&sel->cell, gc, sizeof sel->cell);          memcpy(&s->sel->cell, gc, sizeof s->sel->cell);
         sel->flag = 1;          s->sel->hidden = 0;
         sel->hidden = 0;          s->sel->rectangle = rectangle;
           s->sel->modekeys = modekeys;
   
         sel->rectflag = rectflag;          s->sel->sx = sx;
           s->sel->sy = sy;
         sel->sx = sx; sel->sy = sy;          s->sel->ex = ex;
         sel->ex = ex; sel->ey = ey;          s->sel->ey = ey;
 }  }
   
 /* Clear selection. */  /* Clear selection. */
 void  void
 screen_clear_selection(struct screen *s)  screen_clear_selection(struct screen *s)
 {  {
         struct screen_sel       *sel = &s->sel;          free(s->sel);
           s->sel = NULL;
         sel->flag = 0;  
         sel->hidden = 0;  
         sel->lineflag = LINE_SEL_NONE;  
 }  }
   
 /* Hide selection. */  /* Hide selection. */
 void  void
 screen_hide_selection(struct screen *s)  screen_hide_selection(struct screen *s)
 {  {
         struct screen_sel       *sel = &s->sel;          if (s->sel != NULL)
                   s->sel->hidden = 1;
         sel->hidden = 1;  
 }  }
   
 /* Check if cell in selection. */  /* Check if cell in selection. */
 int  int
 screen_check_selection(struct screen *s, u_int px, u_int py)  screen_check_selection(struct screen *s, u_int px, u_int py)
 {  {
         struct screen_sel       *sel = &s->sel;          struct screen_sel       *sel = s->sel;
         u_int                    xx;          u_int                    xx;
   
         if (!sel->flag || sel->hidden)          if (sel == NULL || sel->hidden)
                 return (0);                  return (0);
   
         if (sel->rectflag) {          if (sel->rectangle) {
                 if (sel->sy < sel->ey) {                  if (sel->sy < sel->ey) {
                         /* start line < end line -- downward selection. */                          /* start line < end line -- downward selection. */
                         if (py < sel->sy || py > sel->ey)                          if (py < sel->sy || py > sel->ey)
Line 454 
Line 470 
 screen_select_cell(struct screen *s, struct grid_cell *dst,  screen_select_cell(struct screen *s, struct grid_cell *dst,
     const struct grid_cell *src)      const struct grid_cell *src)
 {  {
         if (!s->sel.flag || s->sel.hidden)          if (s->sel == NULL || s->sel->hidden)
                 return;                  return;
   
         memcpy(dst, &s->sel.cell, sizeof *dst);          memcpy(dst, &s->sel->cell, sizeof *dst);
   
         utf8_copy(&dst->data, &src->data);          utf8_copy(&dst->data, &src->data);
         dst->attr = dst->attr & ~GRID_ATTR_CHARSET;          dst->attr = dst->attr & ~GRID_ATTR_CHARSET;

Legend:
Removed from v.1.51  
changed lines
  Added in v.1.52