seat: re-map tablet to output on output change

This commit is contained in:
Jens Peters 2024-01-09 06:58:35 +01:00 committed by Johan Malm
parent 8de5d7e653
commit 17e15ed987
3 changed files with 18 additions and 0 deletions

View file

@ -460,6 +460,7 @@ void seat_set_pressed(struct seat *seat, struct view *view,
struct wlr_scene_node *node, struct wlr_surface *surface,
struct wlr_surface *toplevel, uint32_t resize_edges);
void seat_reset_pressed(struct seat *seat);
void seat_output_layout_changed(struct seat *seat);
void interactive_begin(struct view *view, enum input_mode mode, uint32_t edges);
void interactive_finish(struct view *view);

View file

@ -106,6 +106,7 @@ output_destroy_notify(struct wl_listener *listener, void *data)
wl_list_remove(&output->frame.link);
wl_list_remove(&output->destroy.link);
wl_list_remove(&output->request_state.link);
seat_output_layout_changed(&output->server->seat);
for (size_t i = 0; i < ARRAY_SIZE(output->layer_tree); i++) {
wlr_scene_node_destroy(&output->layer_tree[i]->node);
@ -350,6 +351,7 @@ new_output_notify(struct wl_listener *listener, void *data)
server->pending_output_layout_change--;
do_output_layout_change(server);
seat_output_layout_changed(&output->server->seat);
}
void

View file

@ -643,3 +643,18 @@ seat_reset_pressed(struct seat *seat)
seat->pressed.toplevel = NULL;
seat->pressed.resize_edges = 0;
}
void
seat_output_layout_changed(struct seat *seat)
{
struct input *input = NULL;
wl_list_for_each(input, &seat->inputs, link) {
switch (input->wlr_input_device->type) {
case WLR_INPUT_DEVICE_TABLET_TOOL:
map_input_to_output(seat, input->wlr_input_device, rc.tablet.output_name);
break;
default:
break;
}
}
}