From cd079e8fbfb6e2606e000f5357ef3a5cec2f3fe3 Mon Sep 17 00:00:00 2001 From: Tiago Cunha Date: Sun, 24 Oct 2010 01:34:30 +0000 Subject: Sync OpenBSD patchset 780: Add a last-pane command (bound to ; by default). Requested ages ago by somebody whose name I have forgotten. --- window.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) (limited to 'window.c') diff --git a/window.c b/window.c index ef137997..1c9160bc 100644 --- a/window.c +++ b/window.c @@ -1,4 +1,4 @@ -/* $Id: window.c,v 1.139 2010-10-24 01:32:35 tcunha Exp $ */ +/* $Id: window.c,v 1.140 2010-10-24 01:34:30 tcunha Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott @@ -322,6 +322,7 @@ window_resize(struct window *w, u_int sx, u_int sy) 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); @@ -366,10 +367,15 @@ void 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); -- cgit