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.
This commit is contained in:
Nicholas Marriott 2009-06-24 17:36:15 +00:00
parent 2de599ac0e
commit da8401d8be

View File

@ -966,7 +966,7 @@ server_check_window_content(
return (1); return (1);
} }
/* Check if window still exists.. */ /* Check if window still exists. */
void void
server_check_window(struct window *w) server_check_window(struct window *w)
{ {
@ -984,13 +984,18 @@ server_check_window(struct window *w)
wp = TAILQ_FIRST(&w->panes); wp = TAILQ_FIRST(&w->panes);
while (wp != NULL) { while (wp != NULL) {
wq = TAILQ_NEXT(wp, entry); wq = TAILQ_NEXT(wp, entry);
if (wp->fd != -1) /*
destroyed = 0; * If the pane has died and the remain-on-exit flag is not set,
else if (!flag) { * 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); window_remove_pane(w, wp);
server_redraw_window(w); server_redraw_window(w);
layout_refresh(w, 0); layout_refresh(w, 0);
} } else
destroyed = 0;
wp = wq; wp = wq;
} }