From 40c2c328cdd1cbf948ee750885d7d0f7a6845237 Mon Sep 17 00:00:00 2001 From: Zedhugh Chen Date: Tue, 23 Jun 2026 03:22:45 +0800 Subject: [PATCH] =?UTF-8?q?fix(policy):=20=E4=BF=AE=E5=A4=8D=E5=88=87?= =?UTF-8?q?=E6=8D=A2=E7=84=A6=E7=82=B9=E6=97=B6=E7=9A=84=E8=BE=B9=E6=A1=86?= =?UTF-8?q?=E9=A2=9C=E8=89=B2=E8=AE=BE=E7=BD=AE=E5=92=8C=E6=96=B0=E7=AA=97?= =?UTF-8?q?=E5=8F=A3=E5=8F=AF=E8=83=BD=E4=B8=8D=E8=A7=A6=E5=8F=91=E5=B8=83?= =?UTF-8?q?=E5=B1=80=20bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/core/policy.c | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/src/core/policy.c b/src/core/policy.c index a3ea72f..6bbda75 100644 --- a/src/core/policy.c +++ b/src/core/policy.c @@ -865,9 +865,6 @@ static void set_foucs_window( auto workspace = state_workspace_get(state, workspace_id); if (!workspace) return; - auto old_focused_window_id = workspace->focused_window_id; - if (window_id == old_focused_window_id) return; - state_workspace_set_focused_window(state, workspace_id, window_id); plan_push_focus_effect(plan, window_id); @@ -875,9 +872,12 @@ static void set_foucs_window( auto color = &border->focused_color; plan_push_change_border_color_effect(plan, window_id, color); } - if (state_window_get(state, old_focused_window_id)) { + for (size_t i = 0; i < state_window_count(state); ++i) { + auto window = state_window_at(state, i); + if (window->workspace_id != workspace_id) continue; + if (workspace->focused_window_id == window->id) continue; auto color = &border->normal_color; - plan_push_change_border_color_effect(plan, old_focused_window_id, color); + plan_push_change_border_color_effect(plan, window->id, color); } } @@ -936,8 +936,11 @@ static void manage_window( state_window_set_floating(state, window_id, command->floating); } + auto workspace = state_workspace_get(state, workspace_id); auto need_layout = window_need_layout(window); - if (need_layout) { + auto layout_func = layout_get(ctx->layouts, workspace->layout_id); + + if (need_layout && layout_func) { adjust_layout_windows_border_width(state, ctx->border->width, workspace_id); } else { state_window_set_border_width(state, window_id, ctx->border->width); @@ -948,11 +951,7 @@ static void manage_window( plan_push_map_effect(plan, window_id); plan_push_focus_effect(plan, window_id); - if (window_need_layout(window)) { - plan->need_relayout = true; - - return; - } + plan->need_relayout = true; effect_t configure_effect = { .type = ZDWM_EFFECT_CONFIGURE_WINDOW,