[BACK]Return to cmd-resize-pane.c CVS log [TXT][DIR] Up to [local] / src / usr.bin / tmux

Diff for /src/usr.bin/tmux/cmd-resize-pane.c between version 1.8 and 1.9

version 1.8, 2009/12/03 22:50:10 version 1.9, 2011/01/04 00:42:47
Line 26 
Line 26 
  * Increase or decrease pane size.   * Increase or decrease pane size.
  */   */
   
 void    cmd_resize_pane_init(struct cmd *, int);  void    cmd_resize_pane_key_binding(struct cmd *, int);
 int     cmd_resize_pane_exec(struct cmd *, struct cmd_ctx *);  int     cmd_resize_pane_exec(struct cmd *, struct cmd_ctx *);
   
 const struct cmd_entry cmd_resize_pane_entry = {  const struct cmd_entry cmd_resize_pane_entry = {
         "resize-pane", "resizep",          "resize-pane", "resizep",
           "DLRt:U", 0, 1,
         "[-DLRU] " CMD_TARGET_PANE_USAGE " [adjustment]",          "[-DLRU] " CMD_TARGET_PANE_USAGE " [adjustment]",
         CMD_ARG01, "DLRU",          0,
         cmd_resize_pane_init,          cmd_resize_pane_key_binding,
         cmd_target_parse,          NULL,
         cmd_resize_pane_exec,          cmd_resize_pane_exec
         cmd_target_free,  
         cmd_target_print  
 };  };
   
 void  void
 cmd_resize_pane_init(struct cmd *self, int key)  cmd_resize_pane_key_binding(struct cmd *self, int key)
 {  {
         struct cmd_target_data  *data;          switch (key) {
           case KEYC_UP | KEYC_CTRL:
         cmd_target_init(self, key);                  self->args = args_create(0);
         data = self->data;                  args_set(self->args, 'U', NULL);
                   break;
         if (key == (KEYC_UP | KEYC_CTRL))          case KEYC_DOWN | KEYC_CTRL:
                 cmd_set_flag(&data->chflags, 'U');                  self->args = args_create(0);
         if (key == (KEYC_DOWN | KEYC_CTRL))                  args_set(self->args, 'D', NULL);
                 cmd_set_flag(&data->chflags, 'D');                  break;
         if (key == (KEYC_LEFT | KEYC_CTRL))          case KEYC_LEFT | KEYC_CTRL:
                 cmd_set_flag(&data->chflags, 'L');                  self->args = args_create(0);
         if (key == (KEYC_RIGHT | KEYC_CTRL))                  args_set(self->args, 'L', NULL);
                 cmd_set_flag(&data->chflags, 'R');                  break;
           case KEYC_RIGHT | KEYC_CTRL:
         if (key == (KEYC_UP | KEYC_ESCAPE)) {                  self->args = args_create(0);
                 cmd_set_flag(&data->chflags, 'U');                  args_set(self->args, 'R', NULL);
                 data->arg = xstrdup("5");                  break;
           case KEYC_UP | KEYC_ESCAPE:
                   self->args = args_create(1, "5");
                   args_set(self->args, 'U', NULL);
                   break;
           case KEYC_DOWN | KEYC_ESCAPE:
                   self->args = args_create(1, "5");
                   args_set(self->args, 'D', NULL);
                   break;
           case KEYC_LEFT | KEYC_ESCAPE:
                   self->args = args_create(1, "5");
                   args_set(self->args, 'L', NULL);
                   break;
           case KEYC_RIGHT | KEYC_ESCAPE:
                   self->args = args_create(1, "5");
                   args_set(self->args, 'R', NULL);
                   break;
           default:
                   self->args = args_create(0);
                   break;
         }          }
         if (key == (KEYC_DOWN | KEYC_ESCAPE)) {  
                 cmd_set_flag(&data->chflags, 'D');  
                 data->arg = xstrdup("5");  
         }  
         if (key == (KEYC_LEFT | KEYC_ESCAPE)) {  
                 cmd_set_flag(&data->chflags, 'L');  
                 data->arg = xstrdup("5");  
         }  
         if (key == (KEYC_RIGHT | KEYC_ESCAPE)) {  
                 cmd_set_flag(&data->chflags, 'R');  
                 data->arg = xstrdup("5");  
         }  
 }  }
   
 int  int
 cmd_resize_pane_exec(struct cmd *self, struct cmd_ctx *ctx)  cmd_resize_pane_exec(struct cmd *self, struct cmd_ctx *ctx)
 {  {
         struct cmd_target_data  *data = self->data;          struct args             *args = self->args;
         struct winlink          *wl;          struct winlink          *wl;
         const char              *errstr;          const char              *errstr;
         struct window_pane      *wp;          struct window_pane      *wp;
         u_int                    adjust;          u_int                    adjust;
   
         if ((wl = cmd_find_pane(ctx, data->target, NULL, &wp)) == NULL)          if ((wl = cmd_find_pane(ctx, args_get(args, 't'), NULL, &wp)) == NULL)
                 return (-1);                  return (-1);
   
         if (data->arg == NULL)          if (args->argc == 0)
                 adjust = 1;                  adjust = 1;
         else {          else {
                 adjust = strtonum(data->arg, 1, INT_MAX, &errstr);                  adjust = strtonum(args->argv[0], 1, INT_MAX, &errstr);
                 if (errstr != NULL) {                  if (errstr != NULL) {
                         ctx->error(ctx, "adjustment %s: %s", errstr, data->arg);                          ctx->error(ctx, "adjustment %s", errstr);
                         return (-1);                          return (-1);
                 }                  }
         }          }
   
         if (cmd_check_flag(data->chflags, 'L'))          if (args_has(self->args, 'L'))
                 layout_resize_pane(wp, LAYOUT_LEFTRIGHT, -adjust);                  layout_resize_pane(wp, LAYOUT_LEFTRIGHT, -adjust);
         else if (cmd_check_flag(data->chflags, 'R'))          else if (args_has(self->args, 'R'))
                 layout_resize_pane(wp, LAYOUT_LEFTRIGHT, adjust);                  layout_resize_pane(wp, LAYOUT_LEFTRIGHT, adjust);
         else if (cmd_check_flag(data->chflags, 'U'))          else if (args_has(self->args, 'U'))
                 layout_resize_pane(wp, LAYOUT_TOPBOTTOM, -adjust);                  layout_resize_pane(wp, LAYOUT_TOPBOTTOM, -adjust);
         else if (cmd_check_flag(data->chflags, 'D'))          else if (args_has(self->args, 'D'))
                 layout_resize_pane(wp, LAYOUT_TOPBOTTOM, adjust);                  layout_resize_pane(wp, LAYOUT_TOPBOTTOM, adjust);
         server_redraw_window(wl->window);          server_redraw_window(wl->window);
   

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