diff options
author | nicm <nicm> | 2015-06-17 16:50:28 +0000 |
---|---|---|
committer | nicm <nicm> | 2015-06-17 16:50:28 +0000 |
commit | 0ff335961eec019d776f19bd8c26cce7cde0effa (patch) | |
tree | c45e265253049e3e04755c09eac03006fa3f5f55 /cmd-new-window.c | |
parent | 021cdbe1c0111951a1f63b09b41c9e3db3793db5 (diff) | |
download | rtmux-0ff335961eec019d776f19bd8c26cce7cde0effa.tar.gz rtmux-0ff335961eec019d776f19bd8c26cce7cde0effa.tar.bz2 rtmux-0ff335961eec019d776f19bd8c26cce7cde0effa.zip |
Move the shuffle code from new-window -a into a function and add a -a
flag for move-window too. From Thomas Adam.
Diffstat (limited to 'cmd-new-window.c')
-rw-r--r-- | cmd-new-window.c | 18 |
1 files changed, 2 insertions, 16 deletions
diff --git a/cmd-new-window.c b/cmd-new-window.c index c05a0ce8..9cead449 100644 --- a/cmd-new-window.c +++ b/cmd-new-window.c @@ -51,7 +51,7 @@ cmd_new_window_exec(struct cmd *self, struct cmd_q *cmdq) struct winlink *wl; const char *cmd, *path, *template; char **argv, *cause, *cp; - int argc, idx, last, detached, cwd, fd = -1; + int argc, idx, detached, cwd, fd = -1; struct format_tree *ft; struct environ_entry *envent; @@ -59,24 +59,10 @@ cmd_new_window_exec(struct cmd *self, struct cmd_q *cmdq) wl = cmd_find_window(cmdq, args_get(args, 't'), &s); if (wl == NULL) return (CMD_RETURN_ERROR); - idx = wl->idx + 1; - - /* Find the next free index. */ - for (last = idx; last < INT_MAX; last++) { - if (winlink_find_by_index(&s->windows, last) == NULL) - break; - } - if (last == INT_MAX) { + if ((idx = winlink_shuffle_up(s, wl)) == -1) { cmdq_error(cmdq, "no free window indexes"); return (CMD_RETURN_ERROR); } - - /* Move everything from last - 1 to idx up a bit. */ - for (; last > idx; last--) { - wl = winlink_find_by_index(&s->windows, last - 1); - server_link_window(s, wl, s, last, 0, 0, NULL); - server_unlink_window(s, wl); - } } else { idx = cmd_find_index(cmdq, args_get(args, 't'), &s); if (idx == -2) |