diff options
author | Nicholas Marriott <nicm@openbsd.org> | 2010-10-23 13:04:34 +0000 |
---|---|---|
committer | Nicholas Marriott <nicm@openbsd.org> | 2010-10-23 13:04:34 +0000 |
commit | 5de84eca3dbaa7b9fcc378a58198ced8a2d95a3e (patch) | |
tree | a253452ab5ec7f758f1b92466c2bad623b72e5a6 /window.c | |
parent | a3efd2ab5aa80757dff1570444faae927ece15b8 (diff) | |
download | rtmux-5de84eca3dbaa7b9fcc378a58198ced8a2d95a3e.tar.gz rtmux-5de84eca3dbaa7b9fcc378a58198ced8a2d95a3e.tar.bz2 rtmux-5de84eca3dbaa7b9fcc378a58198ced8a2d95a3e.zip |
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.c | 14 |
1 files changed, 10 insertions, 4 deletions
@@ -325,6 +325,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); @@ -369,10 +370,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); |