mirror of
https://github.com/tmux/tmux.git
synced 2026-05-30 14:16:18 +00:00
fix: added conditionals and more finding logic to avoid displaying hidden panes.
This commit is contained in:
29
window.c
29
window.c
@@ -843,19 +843,35 @@ 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) {
|
||||
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 (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 (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;
|
||||
@@ -863,7 +879,6 @@ window_lost_pane(struct window *w, struct window_pane *wp)
|
||||
window_update_focus(w);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
window_remove_pane(struct window *w, struct window_pane *wp)
|
||||
|
||||
Reference in New Issue
Block a user