fix(policy): 新增窗口后通知原焦点窗口状态变更

This commit is contained in:
2026-08-01 16:50:11 +08:00
parent 6b2f0e3218
commit b8ca575458

View File

@@ -948,10 +948,13 @@ static void manage_window(
auto window = state_window_add(state, &command->info); auto window = state_window_add(state, &command->info);
auto window_id = window->id; auto window_id = window->id;
auto workspace_id = command->workspace; auto workspace_id = command->workspace;
auto workspace = state_workspace_get(state, workspace_id);
auto old_focused_window = workspace->focused_window_id;
state_window_set_workspace(state, window_id, workspace_id); state_window_set_workspace(state, window_id, workspace_id);
set_foucs_window(ctx, workspace_id, window_id, plan); set_foucs_window(ctx, workspace_id, window_id, plan);
plan_push_grab_button_effect(plan, window_id); plan_push_grab_button_effect(plan, window_id);
push_window_list_effect(state, plan); push_window_list_effect(state, plan);
listeners_notify_window_updated(ctx->listeners, state, old_focused_window);
listeners_notify_window_added(ctx->listeners, state, window_id); listeners_notify_window_added(ctx->listeners, state, window_id);
if (window_should_fix_size(window)) { if (window_should_fix_size(window)) {
@@ -960,7 +963,6 @@ static void manage_window(
state_window_set_floating(state, window_id, command->floating); state_window_set_floating(state, window_id, command->floating);
} }
auto workspace = state_workspace_get(state, workspace_id);
auto need_layout = window_need_layout(window); auto need_layout = window_need_layout(window);
auto layout_func = layout_get(ctx->layouts, workspace->layout_id); auto layout_func = layout_get(ctx->layouts, workspace->layout_id);