diff options
author | nicm <nicm> | 2020-04-22 21:15:33 +0000 |
---|---|---|
committer | nicm <nicm> | 2020-04-22 21:15:33 +0000 |
commit | 950af3363678de5b88cb6713f4837f1001e46d47 (patch) | |
tree | d7db0df32b5277928c1cdd82e8276497b7bbf201 /cmd-move-window.c | |
parent | 899b3d2436ffc49e264cc869ddf35e8a9d01522b (diff) | |
download | rtmux-950af3363678de5b88cb6713f4837f1001e46d47.tar.gz rtmux-950af3363678de5b88cb6713f4837f1001e46d47.tar.bz2 rtmux-950af3363678de5b88cb6713f4837f1001e46d47.zip |
Improve join-pane, move-pane and break-pane:
- There is no need for join-pane and move-pane to be different.
- break-pane can just behave like move-window if the source has only one
pane, instead of failing.
- Add -a to break-pane like move-window.
Also add missing man page bits for previous window-tree.c changes.
GitHub issue 2176.
Diffstat (limited to 'cmd-move-window.c')
-rw-r--r-- | cmd-move-window.c | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/cmd-move-window.c b/cmd-move-window.c index eb6f4f1a..94b6c950 100644 --- a/cmd-move-window.c +++ b/cmd-move-window.c @@ -63,9 +63,9 @@ cmd_move_window_exec(struct cmd *self, struct cmdq_item *item) struct cmd_find_state *source = cmdq_get_source(item); struct cmd_find_state target; const char *tflag = args_get(args, 't'); - struct session *src; + struct session *src = source->s; struct session *dst; - struct winlink *wl; + struct winlink *wl = source->wl; char *cause; int idx, kflag, dflag, sflag; @@ -83,9 +83,7 @@ cmd_move_window_exec(struct cmd *self, struct cmdq_item *item) if (cmd_find_target(&target, item, tflag, CMD_FIND_WINDOW, CMD_FIND_WINDOW_INDEX) != 0) return (CMD_RETURN_ERROR); - src = source->s; dst = target.s; - wl = source->wl; idx = target.idx; kflag = args_has(args, 'k'); @@ -93,12 +91,16 @@ cmd_move_window_exec(struct cmd *self, struct cmdq_item *item) sflag = args_has(args, 's'); if (args_has(args, 'a')) { - if ((idx = winlink_shuffle_up(dst, dst->curw)) == -1) + if (target.wl != NULL) + idx = winlink_shuffle_up(dst, target.wl); + else + idx = winlink_shuffle_up(dst, dst->curw); + if (idx == -1) return (CMD_RETURN_ERROR); } if (server_link_window(src, wl, dst, idx, kflag, !dflag, &cause) != 0) { - cmdq_error(item, "can't link window: %s", cause); + cmdq_error(item, "%s", cause); free(cause); return (CMD_RETURN_ERROR); } |