gdk/wayland: Use right modifiers for tablet button events
authorCarlos Garnacho <carlosg@gnome.org>
Thu, 2 Dec 2021 15:19:16 +0000 (16:19 +0100)
committerCarlos Garnacho <carlosg@gnome.org>
Thu, 2 Dec 2021 16:06:35 +0000 (17:06 +0100)
We are looking up the seat logical pointer modifiers (i.e. the wl_pointer),
not the ones for the tablet tool device. This breaks accounting further
along in GTK leaving stuck implicit grabs.

Fixes: https://gitlab.gnome.org/GNOME/gtk/-/issues/4102
gdk/wayland/gdkdevice-wayland.c

index fdfb8968c07f79bfb44c675ea9193a555560b687..d0bc73eb97ca8a96f798183f8f8b2408ceb72ca6 100644 (file)
@@ -3621,7 +3621,6 @@ tablet_create_button_event_frame (GdkWaylandTabletData *tablet,
                                   GdkEventType          evtype,
                                   guint                 button)
 {
-  GdkWaylandSeat *seat = GDK_WAYLAND_SEAT (tablet->seat);
   GdkEvent *event;
 
   event = gdk_button_event_new (evtype,
@@ -3629,7 +3628,7 @@ tablet_create_button_event_frame (GdkWaylandTabletData *tablet,
                                 tablet->logical_device,
                                 tablet->current_tool->tool,
                                 tablet->pointer_info.time,
-                                device_get_modifiers (seat->logical_pointer),
+                                device_get_modifiers (tablet->logical_device),
                                 button,
                                 tablet->pointer_info.surface_x,
                                 tablet->pointer_info.surface_y,