gdk/x11: Reset all scroll valuators on enter
authorCarlos Garnacho <carlosg@gnome.org>
Sat, 4 Feb 2023 12:10:42 +0000 (13:10 +0100)
committerCarlos Garnacho <carlosg@gnome.org>
Sat, 4 Feb 2023 12:13:19 +0000 (13:13 +0100)
We no longer need to make much distinction between multiple logical
devices, plus it breaks esp. with the Xwayland input device distribution.
Just iterate across all devices and reset their scroll valuators.

Closes: https://gitlab.gnome.org/GNOME/gtk/-/issues/4160
gdk/x11/gdkdevicemanager-xi2.c

index 4f3d69fc83fb02a3b69f4b1e062c3bc518b20257..46f2f048f9741805a48806c721aa67ee0114235c 100644 (file)
@@ -2066,19 +2066,10 @@ gdk_x11_device_manager_xi2_translate_event (GdkEventTranslator *translator,
             xev->detail != XINotifyInferior && xev->mode != XINotifyPassiveUngrab &&
             GDK_IS_TOPLEVEL (surface))
           {
-            if (gdk_x11_device_xi2_get_device_type ((GdkX11DeviceXI2 *) device) != GDK_X11_DEVICE_TYPE_LOGICAL)
-              _gdk_device_xi2_reset_scroll_valuators (GDK_X11_DEVICE_XI2 (source_device));
-            else
-              {
-                GList *physical_devices, *l;
-
-                physical_devices = gdk_device_list_physical_devices (source_device);
+            GList *l;
 
-                for (l = physical_devices; l; l = l->next)
-                  _gdk_device_xi2_reset_scroll_valuators (GDK_X11_DEVICE_XI2 (l->data));
-
-                g_list_free (physical_devices);
-              }
+            for (l = device_manager->devices; l; l = l->next)
+              _gdk_device_xi2_reset_scroll_valuators (GDK_X11_DEVICE_XI2 (l->data));
           }
 
         event = gdk_crossing_event_new (ev->evtype == XI_Enter