feat(policy): 处理窗口元数据变更事件

This commit is contained in:
2026-05-07 01:58:00 +08:00
parent b14be7b8dd
commit 964de33b23

View File

@@ -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);