From b14be7b8dda71d3efa926130f96e430fdad8f506 Mon Sep 17 00:00:00 2001 From: Zedhugh Chen Date: Tue, 5 May 2026 02:59:16 +0800 Subject: [PATCH] =?UTF-8?q?feat(policy):=20=E5=9C=A8=E7=AA=97=E5=8F=A3?= =?UTF-8?q?=E7=AE=A1=E7=90=86/=E5=8F=96=E6=B6=88=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E6=97=B6=E6=8E=A8=E9=80=81=E7=AA=97=E5=8F=A3=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E5=8F=98=E6=9B=B4=20effect?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/core/policy.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/core/policy.c b/src/core/policy.c index b90f017..fbe0290 100644 --- a/src/core/policy.c +++ b/src/core/policy.c @@ -241,6 +241,22 @@ static void set_foucs_window( } } +static void push_window_list_effect(const state_t *state, plan_t *plan) { + window_list_t list = {0}; + for (size_t i = 0; i < state_window_count(state); ++i) { + auto window = state_window_at(state, i); + window_list_push(&list, window->id); + } + effect_t effect = { + .type = ZDWM_EFFECT_CHANGE_WINDOW_LIST, + .as.change_window_list = { + .windows = list.windows, + .count = list.count, + }, + }; + plan_push_effect(plan, &effect); +} + static void manage_window( const policy_context_t *ctx, const manage_window_command_t *command, @@ -253,6 +269,7 @@ static void manage_window( state_window_set_workspace(state, window_id, workspace_id); state_window_set_floating(state, window_id, command->floating); set_foucs_window(ctx, workspace_id, window_id, plan); + push_window_list_effect(state, plan); auto need_layout = window_need_layout(window); if (need_layout) { @@ -326,6 +343,8 @@ unmanage_window(const policy_context_t *ctx, window_id_t window, plan_t *plan) { auto old_focused_window = workspace->focused_window_id; state_window_remove(state, window); + push_window_list_effect(state, plan); + if (window_need_layout(win)) { adjust_layout_windows_border_width(state, ctx->border->width, workspace_id); plan->need_relayout = true;