=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/tmux/window.c,v retrieving revision 1.57 retrieving revision 1.58 diff -c -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 **** ! /* $OpenBSD: window.c,v 1.57 2010/10/23 12:51:51 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott --- 1,4 ---- ! /* $OpenBSD: window.c,v 1.58 2010/10/23 13:04:34 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott *************** *** 325,330 **** --- 325,331 ---- 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,378 **** 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); ! } TAILQ_REMOVE(&w->panes, wp, entry); window_pane_destroy(wp); --- 370,384 ---- window_remove_pane(struct window *w, struct window_pane *wp) { if (wp == w->active) { ! 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);