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

Diff for /src/usr.bin/tmux/server-client.c between version 1.81 and 1.82

version 1.81, 2012/10/26 14:35:42 version 1.82, 2013/01/15 22:55:29
Line 34 
Line 34 
 void    server_client_check_redraw(struct client *);  void    server_client_check_redraw(struct client *);
 void    server_client_set_title(struct client *);  void    server_client_set_title(struct client *);
 void    server_client_reset_state(struct client *);  void    server_client_reset_state(struct client *);
   int     server_client_assume_paste(struct session *);
   
 int     server_client_msg_dispatch(struct client *);  int     server_client_msg_dispatch(struct client *);
 void    server_client_msg_command(struct client *, struct msg_command_data *);  void    server_client_msg_command(struct client *, struct msg_command_data *);
Line 325 
Line 326 
         window_pane_mouse(wp, c->session, m);          window_pane_mouse(wp, c->session, m);
 }  }
   
   /* Is this fast enough to probably be a paste? */
   int
   server_client_assume_paste(struct session *s)
   {
           struct timeval  tv;
           u_int           t;
   
           if ((t = options_get_number(&s->options, "assume-paste-time")) == 0)
                   return 0;
   
           timersub(&s->activity_time, &s->last_activity_time, &tv);
           if (tv.tv_sec == 0 && tv.tv_usec < t * 1000)
                   return 1;
           return 0;
   }
   
 /* Handle data key input from client. */  /* Handle data key input from client. */
 void  void
 server_client_handle_key(struct client *c, int key)  server_client_handle_key(struct client *c, int key)
Line 334 
Line 351 
         struct window_pane      *wp;          struct window_pane      *wp;
         struct timeval           tv;          struct timeval           tv;
         struct key_binding      *bd;          struct key_binding      *bd;
         int                      xtimeout, isprefix;          int                      xtimeout, isprefix, ispaste;
   
         /* Check the client is good to accept input. */          /* Check the client is good to accept input. */
         if ((c->flags & (CLIENT_DEAD|CLIENT_SUSPENDED)) != 0)          if ((c->flags & (CLIENT_DEAD|CLIENT_SUSPENDED)) != 0)
Line 346 
Line 363 
         /* Update the activity timer. */          /* Update the activity timer. */
         if (gettimeofday(&c->activity_time, NULL) != 0)          if (gettimeofday(&c->activity_time, NULL) != 0)
                 fatal("gettimeofday failed");                  fatal("gettimeofday failed");
   
           memcpy(&s->last_activity_time, &s->activity_time,
               sizeof s->last_activity_time);
         memcpy(&s->activity_time, &c->activity_time, sizeof s->activity_time);          memcpy(&s->activity_time, &c->activity_time, sizeof s->activity_time);
   
         w = c->session->curw->window;          w = c->session->curw->window;
Line 382 
Line 402 
         }          }
   
         /* Is this a prefix key? */          /* Is this a prefix key? */
         if (key == options_get_number(&c->session->options, "prefix"))          if (key == options_get_number(&s->options, "prefix"))
                 isprefix = 1;                  isprefix = 1;
         else if (key == options_get_number(&c->session->options, "prefix2"))          else if (key == options_get_number(&s->options, "prefix2"))
                 isprefix = 1;                  isprefix = 1;
         else          else
                 isprefix = 0;                  isprefix = 0;
   
           /* Treat prefix as a regular key when pasting is detected. */
           ispaste = server_client_assume_paste(s);
           if (ispaste)
                   isprefix = 0;
   
         /* No previous prefix key. */          /* No previous prefix key. */
         if (!(c->flags & CLIENT_PREFIX)) {          if (!(c->flags & CLIENT_PREFIX)) {
                 if (isprefix)                  if (isprefix) {
                         c->flags |= CLIENT_PREFIX;                          c->flags |= CLIENT_PREFIX;
                 else {                          return;
                         /* Try as a non-prefix key binding. */  
                         if ((bd = key_bindings_lookup(key)) == NULL) {  
                                 if (!(c->flags & CLIENT_READONLY))  
                                         window_pane_key(wp, c->session, key);  
                         } else  
                                 key_bindings_dispatch(bd, c);  
                 }                  }
   
                   /* Try as a non-prefix key binding. */
                   if (ispaste || (bd = key_bindings_lookup(key)) == NULL) {
                           if (!(c->flags & CLIENT_READONLY))
                                   window_pane_key(wp, s, key);
                   } else
                           key_bindings_dispatch(bd, c);
                 return;                  return;
         }          }
   
Line 413 
Line 439 
                         if (isprefix)                          if (isprefix)
                                 c->flags |= CLIENT_PREFIX;                                  c->flags |= CLIENT_PREFIX;
                         else if (!(c->flags & CLIENT_READONLY))                          else if (!(c->flags & CLIENT_READONLY))
                                 window_pane_key(wp, c->session, key);                                  window_pane_key(wp, s, key);
                 }                  }
                 return;                  return;
         }          }
Line 424 
Line 450 
                 if (isprefix)                  if (isprefix)
                         c->flags |= CLIENT_PREFIX;                          c->flags |= CLIENT_PREFIX;
                 else if (!(c->flags & CLIENT_READONLY))                  else if (!(c->flags & CLIENT_READONLY))
                         window_pane_key(wp, c->session, key);                          window_pane_key(wp, s, key);
                 return;                  return;
         }          }
   
         /* If this key can repeat, reset the repeat flags and timer. */          /* If this key can repeat, reset the repeat flags and timer. */
         xtimeout = options_get_number(&c->session->options, "repeat-time");          xtimeout = options_get_number(&s->options, "repeat-time");
         if (xtimeout != 0 && bd->can_repeat) {          if (xtimeout != 0 && bd->can_repeat) {
                 c->flags |= CLIENT_PREFIX|CLIENT_REPEAT;                  c->flags |= CLIENT_PREFIX|CLIENT_REPEAT;
   

Legend:
Removed from v.1.81  
changed lines
  Added in v.1.82