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-25 16:01:42 +00:00
parent 942ea4267d
commit 944520b3a8

View File

@ -1,4 +1,4 @@
/* $Id: server.c,v 1.145 2009-05-19 13:32:55 tcunha Exp $ */
/* $OpenBSD: server.c,v 1.2 2009/06/24 17:36:15 nicm Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
@ -980,7 +980,7 @@ server_check_window_content(
return (1);
}
/* Check if window still exists.. */
/* Check if window still exists. */
void
server_check_window(struct window *w)
{
@ -998,13 +998,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;
}