diff --git a/window.c b/window.c index 6cb175c3..de6049ee 100644 --- a/window.c +++ b/window.c @@ -699,8 +699,8 @@ window_zoom(struct window_pane *wp) if (w->flags & WINDOW_ZOOMED) return (-1); - if (window_count_panes(w, 1) == 1) - return (-1); + if (window_count_panes(w, 1) == 1) + return (-1); if (w->active != wp) window_set_active_pane(w, wp, 1); @@ -805,40 +805,25 @@ window_add_pane(struct window *w, struct window_pane *other, u_int hlimit, void window_lost_pane(struct window *w, struct window_pane *wp) { - struct window_pane *wpp, *twpp; - log_debug("%s: @%u pane %%%u", __func__, w->id, wp->id); if (wp == marked_pane.wp) server_clear_marked(); window_pane_stack_remove(&w->last_panes, wp); - if (wp != w->active) - return; - - /* Try to find a good fit. */ - wpp = TAILQ_FIRST(&w->last_panes); - if (wpp == NULL || wpp->flags & PANE_HIDDEN) { - wpp = TAILQ_PREV(wp, window_panes, entry); - if (wpp == NULL || wpp->flags & PANE_HIDDEN) - wpp = TAILQ_NEXT(wp, entry); - } - /* Try to find any fit. */ - if (wpp == NULL || (wpp->flags & PANE_HIDDEN)) { - TAILQ_FOREACH_SAFE(wpp, &w->panes, entry, twpp) { - if (wpp != wp && (~wpp->flags & PANE_HIDDEN)) - break; + if (wp == w->active) { + w->active = TAILQ_FIRST(&w->last_panes); + if (w->active == NULL) { + w->active = TAILQ_PREV(wp, window_panes, entry); + if (w->active == NULL) + w->active = TAILQ_NEXT(wp, entry); + } + if (w->active != NULL) { + window_pane_stack_remove(&w->last_panes, w->active); + w->active->flags |= PANE_CHANGED; + notify_window("window-pane-changed", w); + window_update_focus(w); } - } - if (wpp != NULL && (wpp->flags & PANE_HIDDEN)) - wpp = NULL; - - w->active = wpp; - if (w->active != NULL) { - window_pane_stack_remove(&w->last_panes, w->active); - w->active->flags |= PANE_CHANGED; - notify_window("window-pane-changed", w); - window_update_focus(w); } }