This commit is contained in:
Matt Oakes 2026-01-11 00:09:59 +03:00 committed by GitHub
commit f6b2c62087
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -68,6 +68,26 @@ update_output_manager_config(struct cg_server *server)
wlr_output_manager_v1_set_configuration(server->output_manager_v1, config);
}
static void
update_cursor_map_to_output(struct cg_server *server)
{
struct cg_output *only_enabled_output = NULL;
struct cg_output *output;
wl_list_for_each (output, &server->outputs, link) {
if (!only_enabled_output && output->wlr_output->enabled) {
only_enabled_output = output;
} else {
only_enabled_output = NULL;
}
}
if (only_enabled_output) {
wlr_cursor_map_to_output(server->seat->cursor, only_enabled_output->wlr_output);
} else {
wlr_cursor_map_to_output(server->seat->cursor, NULL);
}
}
static inline void
output_layout_add_auto(struct cg_output *output)
{
@ -113,6 +133,7 @@ output_enable(struct cg_output *output)
output_layout_add_auto(output);
}
update_cursor_map_to_output(output->server);
update_output_manager_config(output->server);
}
@ -159,6 +180,7 @@ handle_output_commit(struct wl_listener *listener, void *data)
* - always update output manager configuration even if the output is now disabled */
if (event->state->committed & OUTPUT_CONFIG_UPDATED) {
update_cursor_map_to_output(output->server);
update_output_manager_config(output->server);
}
}
@ -170,6 +192,7 @@ handle_output_request_state(struct wl_listener *listener, void *data)
struct wlr_output_event_request_state *event = data;
if (wlr_output_commit_state(output->wlr_output, event->state)) {
update_cursor_map_to_output(output->server);
update_output_manager_config(output->server);
}
}
@ -180,6 +203,7 @@ handle_output_layout_change(struct wl_listener *listener, void *data)
struct cg_server *server = wl_container_of(listener, server, output_layout_change);
view_position_all(server);
update_cursor_map_to_output(server);
update_output_manager_config(server);
}
@ -317,6 +341,7 @@ handle_new_output(struct wl_listener *listener, void *data)
}
view_position_all(output->server);
update_cursor_map_to_output(output->server);
update_output_manager_config(output->server);
}