diff --git a/tmux.h b/tmux.h index 17d3b81f..c3f7fff4 100644 --- a/tmux.h +++ b/tmux.h @@ -3421,6 +3421,7 @@ struct window *window_create(u_int, u_int, u_int, u_int); void window_pane_set_event(struct window_pane *); struct window_pane *window_get_active_at(struct window *, u_int, u_int); struct window_pane *window_find_string(struct window *, const char *); +int window_has_floating_panes(struct window *); int window_has_pane(struct window *, struct window_pane *); int window_set_active_pane(struct window *, struct window_pane *, int); diff --git a/window-tree.c b/window-tree.c index eeaafd4f..21029c00 100644 --- a/window-tree.c +++ b/window-tree.c @@ -249,7 +249,7 @@ 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, *fwp, **l; + struct window_pane *wp, **l; u_int n, i; int expanded; struct format_tree *ft; @@ -267,15 +267,9 @@ window_tree_build_window(struct session *s, struct winlink *wl, format_free(ft); if (data->type == WINDOW_TREE_SESSION || - data->type == WINDOW_TREE_WINDOW) { + data->type == WINDOW_TREE_WINDOW) expanded = 0; - TAILQ_FOREACH(fwp, &wl->window->panes, entry) { - if (fwp->flags & PANE_FLOATING) { - expanded = 1; - break; - } - } - } else + else expanded = 1; mti = mode_tree_add(data->data, parent, item, (uint64_t)wl, name, text, expanded); diff --git a/window.c b/window.c index d4b97385..dc2d67cc 100644 --- a/window.c +++ b/window.c @@ -461,6 +461,18 @@ window_pane_send_resize(struct window_pane *wp, u_int sx, u_int sy) fatal("ioctl failed"); } +int +window_has_floating_panes(struct window *w) +{ + struct window_pane *wp; + + TAILQ_FOREACH(wp, &w->panes, entry) { + if (wp->flags & PANE_FLOATING) + return (1); + } + return (0); +} + int window_has_pane(struct window *w, struct window_pane *wp) {