feat(policy): 处理窗口元数据变更事件
This commit is contained in:
@@ -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(
|
static void route_configure_request(
|
||||||
state_t *state,
|
state_t *state,
|
||||||
const configure_data_t *data,
|
const configure_data_t *data,
|
||||||
@@ -190,6 +217,9 @@ void policy_route_event(
|
|||||||
case ZDWM_EVENT_WINDOW_REMOVE:
|
case ZDWM_EVENT_WINDOW_REMOVE:
|
||||||
route_window_remove(state, &event->as.window_remove, out);
|
route_window_remove(state, &event->as.window_remove, out);
|
||||||
break;
|
break;
|
||||||
|
case ZDWM_EVENT_WINDOW_METADATA_CHANGED:
|
||||||
|
route_window_metadata_changed(state, &event->as.window_metadata_change);
|
||||||
|
break;
|
||||||
case ZDWM_EVENT_CONFIGURE_REQUEST: {
|
case ZDWM_EVENT_CONFIGURE_REQUEST: {
|
||||||
auto data = &event->as.configure_request;
|
auto data = &event->as.configure_request;
|
||||||
route_configure_request(state, data, ctx->layouts, out);
|
route_configure_request(state, data, ctx->layouts, out);
|
||||||
|
|||||||
Reference in New Issue
Block a user