=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/tmux/cmd-swap-window.c,v retrieving revision 1.20 retrieving revision 1.21 diff -u -r1.20 -r1.21 --- src/usr.bin/tmux/cmd-swap-window.c 2016/10/16 19:04:05 1.20 +++ src/usr.bin/tmux/cmd-swap-window.c 2016/12/14 17:38:59 1.21 @@ -1,4 +1,4 @@ -/* $OpenBSD: cmd-swap-window.c,v 1.20 2016/10/16 19:04:05 nicm Exp $ */ +/* $OpenBSD: cmd-swap-window.c,v 1.21 2016/12/14 17:38:59 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott @@ -48,7 +48,7 @@ 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 @@ 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);