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

Diff for /src/usr.bin/tmux/input.c between version 1.8 and 1.9

version 1.8, 2009/06/04 21:02:21 version 1.9, 2009/07/13 10:43:52
Line 1151 
Line 1151 
 void  void
 input_handle_sequence_sm(struct input_ctx *ictx)  input_handle_sequence_sm(struct input_ctx *ictx)
 {  {
         uint16_t        n;          struct window_pane      *wp = ictx->wp;
           struct screen           *s = &wp->base;
           u_int                    sx, sy;
           uint16_t                 n;
   
         if (ARRAY_LENGTH(&ictx->args) > 1)          if (ARRAY_LENGTH(&ictx->args) > 1)
                 return;                  return;
Line 1172 
Line 1175 
                         screen_write_mousemode(&ictx->ctx, 1);                          screen_write_mousemode(&ictx->ctx, 1);
                         log_debug("mouse on");                          log_debug("mouse on");
                         break;                          break;
                   case 1049:
                           if (wp->saved_grid != NULL)
                                   break;
                           sx = screen_size_x(s);
                           sy = screen_size_y(s);
   
                           /*
                            * Enter alternative screen mode. A copy of the visible
                            * screen is saved and the history is not updated
                            */
   
                           wp->saved_grid = grid_create(sx, sy, 0);
                           grid_duplicate_lines(
                               wp->saved_grid, 0, s->grid, screen_hsize(s), sy);
                           wp->saved_cx = s->cx;
                           wp->saved_cy = s->cy;
   
                           grid_view_clear(s->grid, 0, 0, sx, sy);
   
                           wp->base.grid->flags &= ~GRID_HISTORY;
   
                           wp->flags |= PANE_REDRAW;
                           break;
                 default:                  default:
                         log_debug("unknown SM [%hhu]: %u", ictx->private, n);                          log_debug("unknown SM [%hhu]: %u", ictx->private, n);
                         break;                          break;
Line 1195 
Line 1221 
 void  void
 input_handle_sequence_rm(struct input_ctx *ictx)  input_handle_sequence_rm(struct input_ctx *ictx)
 {  {
         uint16_t         n;          struct window_pane      *wp = ictx->wp;
           struct screen           *s = &wp->base;
           u_int                    sx, sy;
           uint16_t                 n;
   
         if (ARRAY_LENGTH(&ictx->args) > 1)          if (ARRAY_LENGTH(&ictx->args) > 1)
                 return;                  return;
Line 1215 
Line 1244 
                 case 1000:                  case 1000:
                         screen_write_mousemode(&ictx->ctx, 0);                          screen_write_mousemode(&ictx->ctx, 0);
                         log_debug("mouse off");                          log_debug("mouse off");
                           break;
                   case 1049:
                           if (wp->saved_grid == NULL)
                                   break;
                           sx = screen_size_x(s);
                           sy = screen_size_y(s);
   
                           /*
                            * Exit alternative screen mode and restore the copied
                            * grid.
                            */
   
                           /*
                            * If the current size is bigger, temporarily resize
                            * to the old size before copying back.
                            */
                           if (sy > wp->saved_grid->sy)
                                   screen_resize(s, sx, wp->saved_grid->sy);
   
                           /* Restore the grid and cursor position. */
                           grid_duplicate_lines(
                               s->grid, screen_hsize(s), wp->saved_grid, 0, sy);
                           s->cx = wp->saved_cx;
                           if (s->cx > screen_size_x(s) - 1)
                                   s->cx = screen_size_x(s) - 1;
                           s->cy = wp->saved_cy;
                           if (s->cy > screen_size_y(s) - 1)
                                   s->cy = screen_size_y(s) - 1;
   
                           /*
                            * Turn history back on (so resize can use it) and then
                            * resize back to the current size.
                            */
                           wp->base.grid->flags |= GRID_HISTORY;
                           if (sy > wp->saved_grid->sy)
                                   screen_resize(s, sx, sy);
   
                           grid_destroy(wp->saved_grid);
                           wp->saved_grid = NULL;
   
                           wp->flags |= PANE_REDRAW;
                         break;                          break;
                 default:                  default:
                         log_debug("unknown RM [%hhu]: %u", ictx->private, n);                          log_debug("unknown RM [%hhu]: %u", ictx->private, n);

Legend:
Removed from v.1.8  
changed lines
  Added in v.1.9