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

Diff for /src/usr.bin/tmux/cmd-select-layout.c between version 1.24 and 1.25

version 1.24, 2014/10/20 22:34:31 version 1.25, 2015/04/28 10:43:13
Line 18 
Line 18 
   
 #include <sys/types.h>  #include <sys/types.h>
   
   #include <stdlib.h>
   
 #include "tmux.h"  #include "tmux.h"
   
 /*  /*
Line 28 
Line 30 
   
 const struct cmd_entry cmd_select_layout_entry = {  const struct cmd_entry cmd_select_layout_entry = {
         "select-layout", "selectl",          "select-layout", "selectl",
         "npt:", 0, 1,          "nopt:", 0, 1,
         "[-np] " CMD_TARGET_WINDOW_USAGE " [layout-name]",          "[-nop] " CMD_TARGET_WINDOW_USAGE " [layout-name]",
         0,          0,
         cmd_select_layout_exec          cmd_select_layout_exec
 };  };
Line 55 
Line 57 
 {  {
         struct args     *args = self->args;          struct args     *args = self->args;
         struct winlink  *wl;          struct winlink  *wl;
           struct window   *w;
         const char      *layoutname;          const char      *layoutname;
           char            *oldlayout;
         int              next, previous, layout;          int              next, previous, layout;
   
         if ((wl = cmd_find_window(cmdq, args_get(args, 't'), NULL)) == NULL)          if ((wl = cmd_find_window(cmdq, args_get(args, 't'), NULL)) == NULL)
                 return (CMD_RETURN_ERROR);                  return (CMD_RETURN_ERROR);
         server_unzoom_window(wl->window);          w = wl->window;
   
           server_unzoom_window(w);
   
         next = self->entry == &cmd_next_layout_entry;          next = self->entry == &cmd_next_layout_entry;
         if (args_has(self->args, 'n'))          if (args_has(args, 'n'))
                 next = 1;                  next = 1;
         previous = self->entry == &cmd_previous_layout_entry;          previous = self->entry == &cmd_previous_layout_entry;
         if (args_has(self->args, 'p'))          if (args_has(args, 'p'))
                 previous = 1;                  previous = 1;
   
           oldlayout = w->old_layout;
           w->old_layout = layout_dump(w->layout_root);
   
         if (next || previous) {          if (next || previous) {
                 if (next)                  if (next)
                         layout = layout_set_next(wl->window);                          layout_set_next(w);
                 else                  else
                         layout = layout_set_previous(wl->window);                          layout_set_previous(w);
                 server_redraw_window(wl->window);                  goto changed;
                 return (CMD_RETURN_NORMAL);  
         }          }
   
         if (args->argc == 0)          if (!args_has(args, 'o')) {
                 layout = wl->window->lastlayout;                  if (args->argc == 0)
         else                          layout = w->lastlayout;
                 layout = layout_set_lookup(args->argv[0]);                  else
         if (layout != -1) {                          layout = layout_set_lookup(args->argv[0]);
                 layout = layout_set_select(wl->window, layout);                  if (layout != -1) {
                 server_redraw_window(wl->window);                          layout_set_select(w, layout);
                 return (CMD_RETURN_NORMAL);                          goto changed;
                   }
         }          }
   
         if (args->argc != 0) {          if (args->argc != 0)
                 layoutname = args->argv[0];                  layoutname = args->argv[0];
                 if (layout_parse(wl->window, layoutname) == -1) {          else if (args_has(args, 'o'))
                   layoutname = oldlayout;
           else
                   layoutname = NULL;
   
           if (layoutname != NULL) {
                   if (layout_parse(w, layoutname) == -1) {
                         cmdq_error(cmdq, "can't set layout: %s", layoutname);                          cmdq_error(cmdq, "can't set layout: %s", layoutname);
                         return (CMD_RETURN_ERROR);                          goto error;
                 }                  }
                 server_redraw_window(wl->window);                  goto changed;
         }          }
   
           free(oldlayout);
         return (CMD_RETURN_NORMAL);          return (CMD_RETURN_NORMAL);
   
   changed:
           free(oldlayout);
           server_redraw_window(w);
           return (CMD_RETURN_NORMAL);
   
   error:
           free(w->old_layout);
           w->old_layout = oldlayout;
           return (CMD_RETURN_ERROR);
 }  }

Legend:
Removed from v.1.24  
changed lines
  Added in v.1.25