From bffa140a78972a0c9345dfbe9770697b8fe927ff Mon Sep 17 00:00:00 2001 From: DreamMaoMao <2523610504@qq.com> Date: Mon, 29 Jun 2026 10:06:28 +0800 Subject: [PATCH] fix: Fix ignoring hidden clients --- src/animation/client.h | 3 +-- src/animation/tag.h | 3 +-- src/fetch/client.h | 6 +++--- 3 files changed, 5 insertions(+), 7 deletions(-) diff --git a/src/animation/client.h b/src/animation/client.h index 4a176676..c6e1218c 100644 --- a/src/animation/client.h +++ b/src/animation/client.h @@ -661,8 +661,7 @@ struct ivec2 clip_to_hide(Client *c, struct wlr_box *clip_box) { (ISSCROLLTILED(c) || c->animation.tagouting || c->animation.tagining)) { c->is_clip_to_hide = true; wlr_scene_node_set_enabled(&c->scene->node, false); - } else if (c->is_clip_to_hide && VISIBLEON(c, c->mon) && - !c->is_logic_hide) { + } else if (c->is_clip_to_hide && VISIBLEON(c, c->mon)) { c->is_clip_to_hide = false; c->is_logic_hide = false; wlr_scene_node_set_enabled(&c->scene->node, true); diff --git a/src/animation/tag.h b/src/animation/tag.h index d61429b8..4395fa67 100644 --- a/src/animation/tag.h +++ b/src/animation/tag.h @@ -45,8 +45,7 @@ void set_tagin_animation(Monitor *m, Client *c) { void set_arrange_visible(Monitor *m, Client *c, bool want_animation) { - if ((!ISTILED(c) || (!c->is_clip_to_hide || !is_scroller_layout(c->mon))) && - !c->is_logic_hide) { + if (!ISTILED(c) || (!c->is_clip_to_hide || !is_scroller_layout(c->mon))) { c->is_clip_to_hide = false; c->is_logic_hide = false; wlr_scene_node_set_enabled(&c->scene->node, true); diff --git a/src/fetch/client.h b/src/fetch/client.h index 20be6596..c67b9022 100644 --- a/src/fetch/client.h +++ b/src/fetch/client.h @@ -184,11 +184,11 @@ Client *find_client_by_direction(Client *tc, const Arg *arg, break; wl_list_for_each(c, &clients, link) { - if (!c || c == tc) + if (!c || !c->mon || c == tc) continue; if (!findfloating && c->isfloating) continue; - if (c->is_logic_hide) + if (!VISIBLEON(c, c->mon)) continue; if (c->isunglobal) continue; @@ -444,7 +444,7 @@ Client *get_focused_stack_client(Client *sc, Client *custom_focus_client) { return sc; wl_list_for_each(tc, &fstack, flink) { - if (tc->iskilling || tc->isunglobal || tc->is_logic_hide) + if (tc->iskilling || tc->isunglobal) continue; if (!VISIBLEON(tc, sc->mon)) continue;