diff options
author | Thomas Adam <thomas@xteddy.org> | 2016-12-14 20:01:11 +0000 |
---|---|---|
committer | Thomas Adam <thomas@xteddy.org> | 2016-12-14 20:01:11 +0000 |
commit | 00445ebadd505922a9c9dc455fa33244f4c4fb6b (patch) | |
tree | 2479ea0358394a5cbc6a8b16092b1ac7d08e5c09 /cmd-swap-window.c | |
parent | dda701d95fd539d7af8f76a8fe9d9cf71691b79a (diff) | |
parent | e36f932f625e90320ccf58efc7059c7db9a37e9c (diff) | |
download | rtmux-00445ebadd505922a9c9dc455fa33244f4c4fb6b.tar.gz rtmux-00445ebadd505922a9c9dc455fa33244f4c4fb6b.tar.bz2 rtmux-00445ebadd505922a9c9dc455fa33244f4c4fb6b.zip |
Merge branch 'obsd-master'
Diffstat (limited to 'cmd-swap-window.c')
-rw-r--r-- | cmd-swap-window.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/cmd-swap-window.c b/cmd-swap-window.c index 0a0fcab9..0a93fa6e 100644 --- a/cmd-swap-window.c +++ b/cmd-swap-window.c @@ -48,7 +48,7 @@ cmd_swap_window_exec(struct cmd *self, struct cmdq_item *item) struct session *src, *dst; struct session_group *sg_src, *sg_dst; struct winlink *wl_src, *wl_dst; - struct window *w; + struct window *w_src, *w_dst; wl_src = item->state.sflag.wl; src = item->state.sflag.s; @@ -67,9 +67,15 @@ cmd_swap_window_exec(struct cmd *self, struct cmdq_item *item) if (wl_dst->window == wl_src->window) return (CMD_RETURN_NORMAL); - w = wl_dst->window; - wl_dst->window = wl_src->window; - wl_src->window = w; + w_dst = wl_dst->window; + TAILQ_REMOVE(&w_dst->winlinks, wl_dst, wentry); + w_src = wl_src->window; + TAILQ_REMOVE(&w_src->winlinks, wl_src, wentry); + + wl_dst->window = w_src; + TAILQ_INSERT_TAIL(&w_src->winlinks, wl_dst, wentry); + wl_src->window = w_dst; + TAILQ_INSERT_TAIL(&w_dst->winlinks, wl_src, wentry); if (!args_has(self->args, 'd')) { session_select(dst, wl_dst->idx); |