From da8401d8bee19d9f5394ddef0c7905b6a8ac9932 Mon Sep 17 00:00:00 2001 From: Nicholas Marriott Date: Wed, 24 Jun 2009 17:36:15 +0000 Subject: [PATCH] Make remain-on-exit work again when there is only one pane left, which was broken sometime during the pane/layout changes. Reported/tested by Iain Morgan, thanks. --- server.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/server.c b/server.c index 67931c99..ae2b071d 100644 --- a/server.c +++ b/server.c @@ -966,7 +966,7 @@ server_check_window_content( return (1); } -/* Check if window still exists.. */ +/* Check if window still exists. */ void server_check_window(struct window *w) { @@ -984,13 +984,18 @@ server_check_window(struct window *w) wp = TAILQ_FIRST(&w->panes); while (wp != NULL) { wq = TAILQ_NEXT(wp, entry); - if (wp->fd != -1) - destroyed = 0; - else if (!flag) { + /* + * If the pane has died and the remain-on-exit flag is not set, + * remove the pane; otherwise, if the flag is set, don't allow + * the window to be destroyed (or it'll close when the last + * pane dies). + */ + if (wp->fd == -1 && !flag) { window_remove_pane(w, wp); server_redraw_window(w); layout_refresh(w, 0); - } + } else + destroyed = 0; wp = wq; }