Fix up winlink lists after swap-window.

pull/705/head
nicm 2016-12-14 17:38:59 +00:00
parent b851c628f4
commit e36f932f62
1 changed files with 10 additions and 4 deletions

View File

@ -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);