From 964de33b23f29354dfcea08faeb81225f916a5d0 Mon Sep 17 00:00:00 2001 From: Zedhugh Chen Date: Thu, 7 May 2026 01:58:00 +0800 Subject: [PATCH] =?UTF-8?q?feat(policy):=20=E5=A4=84=E7=90=86=E7=AA=97?= =?UTF-8?q?=E5=8F=A3=E5=85=83=E6=95=B0=E6=8D=AE=E5=8F=98=E6=9B=B4=E4=BA=8B?= =?UTF-8?q?=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/core/policy.c | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/src/core/policy.c b/src/core/policy.c index fbe0290..bab29dc 100644 --- a/src/core/policy.c +++ b/src/core/policy.c @@ -140,6 +140,33 @@ static void route_window_remove( } } +static void route_window_metadata_changed( + state_t *state, + const window_metadata_change_event_t *e +) { + auto window = state_window_get(state, e->window); + if (!window) return; + + auto window_id = e->window; + auto metadata = &e->metadata; + + if (e->changed_fields & ZDWM_WINDOW_METADATA_CHANGE_TITLE) { + state_window_set_title(state, window_id, metadata->title); + } + if (e->changed_fields & ZDWM_WINDOW_METADATA_CHANGE_APP_ID) { + state_window_set_app_id(state, window_id, metadata->app_id); + } + if (e->changed_fields & ZDWM_WINDOW_METADATA_CHANGE_ROLE) { + state_window_set_role(state, window_id, metadata->role); + } + if (e->changed_fields & ZDWM_WINDOW_METADATA_CHANGE_CLASS) { + state_window_set_class(state, window_id, metadata->class_name); + } + if (e->changed_fields & ZDWM_WINDOW_METADATA_CHANGE_INSTANCE) { + state_window_set_instance(state, window_id, metadata->instance_name); + } +} + static void route_configure_request( state_t *state, const configure_data_t *data, @@ -190,6 +217,9 @@ void policy_route_event( case ZDWM_EVENT_WINDOW_REMOVE: route_window_remove(state, &event->as.window_remove, out); break; + case ZDWM_EVENT_WINDOW_METADATA_CHANGED: + route_window_metadata_changed(state, &event->as.window_metadata_change); + break; case ZDWM_EVENT_CONFIGURE_REQUEST: { auto data = &event->as.configure_request; route_configure_request(state, data, ctx->layouts, out);