aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Adam <thomas@xteddy.org>2016-12-14 20:01:11 +0000
committerThomas Adam <thomas@xteddy.org>2016-12-14 20:01:11 +0000
commit00445ebadd505922a9c9dc455fa33244f4c4fb6b (patch)
tree2479ea0358394a5cbc6a8b16092b1ac7d08e5c09
parentdda701d95fd539d7af8f76a8fe9d9cf71691b79a (diff)
parente36f932f625e90320ccf58efc7059c7db9a37e9c (diff)
downloadrtmux-00445ebadd505922a9c9dc455fa33244f4c4fb6b.tar.gz
rtmux-00445ebadd505922a9c9dc455fa33244f4c4fb6b.tar.bz2
rtmux-00445ebadd505922a9c9dc455fa33244f4c4fb6b.zip
Merge branch 'obsd-master'
-rw-r--r--cmd-swap-window.c14
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);