From b05f0abeebd9e35b7fce82ec32ad8a6d69dcc80c Mon Sep 17 00:00:00 2001 From: nicm Date: Sat, 4 Jul 2026 20:17:53 +0000 Subject: [PATCH] Do not ignore filter when >1 pane. GitHub issue 5326. --- window-tree.c | 32 +++++++++++++------------------- 1 file changed, 13 insertions(+), 19 deletions(-) diff --git a/window-tree.c b/window-tree.c index c37082c91..8a9749009 100644 --- a/window-tree.c +++ b/window-tree.c @@ -326,8 +326,8 @@ window_tree_build_window(struct session *s, struct winlink *wl, struct window_tree_itemdata *item; struct mode_tree_item *mti; char *name, *text; - struct window_pane *wp, **l; - u_int n, i; + struct window_pane **l; + u_int n, i, found; int expanded; struct format_tree *ft; @@ -354,29 +354,23 @@ window_tree_build_window(struct session *s, struct winlink *wl, free(name); mode_tree_align(mti, 1); - if ((wp = TAILQ_FIRST(&wl->window->panes)) == NULL) - goto empty; - if (TAILQ_NEXT(wp, entry) == NULL) { - if (!window_tree_filter_pane(s, wl, wp, filter)) - goto empty; - } - l = sort_get_panes_window(wl->window, &n, sort_crit); - if (n == 0) - goto empty; + found = 0; for (i = 0; i < n; i++) { + if (!window_tree_filter_pane(s, wl, l[i], filter)) + continue; + found++; if (data->hide_preview_this_pane && l[i] == data->wp) continue; - if (window_tree_filter_pane(s, wl, l[i], filter)) - window_tree_build_pane(s, wl, l[i], modedata, mti); + window_tree_build_pane(s, wl, l[i], modedata, mti); + } + if (found == 0) { + window_tree_free_item(item); + data->item_size--; + mode_tree_remove(data->data, mti); + return (0); } return (1); - -empty: - window_tree_free_item(item); - data->item_size--; - mode_tree_remove(data->data, mti); - return (0); } static void