=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/tmux/window.c,v retrieving revision 1.57 retrieving revision 1.58 diff -u -r1.57 -r1.58 --- src/usr.bin/tmux/window.c 2010/10/23 12:51:51 1.57 +++ src/usr.bin/tmux/window.c 2010/10/23 13:04:34 1.58 @@ -1,4 +1,4 @@ -/* $OpenBSD: window.c,v 1.57 2010/10/23 12:51:51 nicm Exp $ */ +/* $OpenBSD: window.c,v 1.58 2010/10/23 13:04:34 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott @@ -325,6 +325,7 @@ void window_set_active_pane(struct window *w, struct window_pane *wp) { + w->last = w->active; w->active = wp; while (!window_pane_visible(w->active)) { w->active = TAILQ_PREV(w->active, window_panes, entry); @@ -369,10 +370,15 @@ window_remove_pane(struct window *w, struct window_pane *wp) { if (wp == w->active) { - w->active = TAILQ_PREV(wp, window_panes, entry); - if (w->active == NULL) - w->active = TAILQ_NEXT(wp, entry); - } + w->active = w->last; + w->last = NULL; + if (w->active == NULL) { + w->active = TAILQ_PREV(wp, window_panes, entry); + if (w->active == NULL) + w->active = TAILQ_NEXT(wp, entry); + } + } else if (wp == w->last) + w->last = NULL; TAILQ_REMOVE(&w->panes, wp, entry); window_pane_destroy(wp);