diff --git a/types/data_device/wlr_drag.c b/types/data_device/wlr_drag.c index 0393f283..93614774 100644 --- a/types/data_device/wlr_drag.c +++ b/types/data_device/wlr_drag.c @@ -350,6 +350,7 @@ static void drag_handle_drag_source_destroy(struct wl_listener *listener, static void drag_icon_surface_role_commit(struct wlr_surface *surface) { assert(surface->role == &drag_icon_surface_role); + pixman_region32_clear(&surface->input_region); if (wlr_surface_has_buffer(surface)) { wlr_surface_map(surface); } @@ -383,9 +384,7 @@ static struct wlr_drag_icon *drag_icon_create(struct wlr_drag *drag, icon->surface->role_data = icon; - if (wlr_surface_has_buffer(surface)) { - wlr_surface_map(surface); - } + drag_icon_surface_role_commit(surface); return icon; } diff --git a/types/seat/wlr_seat_pointer.c b/types/seat/wlr_seat_pointer.c index b5eb84f7..ab1bb830 100644 --- a/types/seat/wlr_seat_pointer.c +++ b/types/seat/wlr_seat_pointer.c @@ -71,6 +71,7 @@ struct wlr_seat_client *wlr_seat_client_from_pointer_resource( } static void pointer_cursor_surface_handle_commit(struct wlr_surface *surface) { + pixman_region32_clear(&surface->input_region); if (wlr_surface_has_buffer(surface)) { wlr_surface_map(surface); } diff --git a/types/tablet_v2/wlr_tablet_v2_tool.c b/types/tablet_v2/wlr_tablet_v2_tool.c index cbd98fe1..dffa64a4 100644 --- a/types/tablet_v2/wlr_tablet_v2_tool.c +++ b/types/tablet_v2/wlr_tablet_v2_tool.c @@ -17,6 +17,7 @@ static const struct wlr_tablet_tool_v2_grab_interface default_tool_grab_interface; static void tablet_tool_cursor_surface_handle_commit(struct wlr_surface *surface) { + pixman_region32_clear(&surface->input_region); if (wlr_surface_has_buffer(surface)) { wlr_surface_map(surface); }