aboutsummaryrefslogtreecommitdiff
path: root/window.c
diff options
context:
space:
mode:
authorTiago Cunha <tcunha@gmx.com>2010-10-24 01:34:30 +0000
committerTiago Cunha <tcunha@gmx.com>2010-10-24 01:34:30 +0000
commitcd079e8fbfb6e2606e000f5357ef3a5cec2f3fe3 (patch)
treeaed55d5695f85f29356246e170ad09fd385d8324 /window.c
parent8703e9f2f90e52ca69b7126f1aa03b48f86a67f6 (diff)
downloadrtmux-cd079e8fbfb6e2606e000f5357ef3a5cec2f3fe3.tar.gz
rtmux-cd079e8fbfb6e2606e000f5357ef3a5cec2f3fe3.tar.bz2
rtmux-cd079e8fbfb6e2606e000f5357ef3a5cec2f3fe3.zip
Sync OpenBSD patchset 780:
Add a last-pane command (bound to ; by default). Requested ages ago by somebody whose name I have forgotten.
Diffstat (limited to 'window.c')
-rw-r--r--window.c16
1 files changed, 11 insertions, 5 deletions
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 <nicm@users.sourceforge.net>
@@ -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);