diff --git a/gdk/x11/gdkdevicemanager-xi2.c b/gdk/x11/gdkdevicemanager-xi2.c index 0584eacb3a..a2897b4c56 100644 --- a/gdk/x11/gdkdevicemanager-xi2.c +++ b/gdk/x11/gdkdevicemanager-xi2.c @@ -1567,18 +1567,22 @@ gdk_x11_device_manager_xi2_translate_event (GdkEventTranslator *translator, GUINT_TO_POINTER (xev->sourceid)); gdk_event_set_source_device (event, source_device); - if (gdk_device_get_device_type (source_device) != GDK_DEVICE_TYPE_MASTER) - _gdk_device_xi2_reset_scroll_valuators (GDK_X11_DEVICE_XI2 (source_device)); - else + if (ev->evtype == XI_Enter && xev->detail != XINotifyInferior && + gdk_window_get_window_type (window) == GDK_WINDOW_TOPLEVEL) { - GList *slaves, *l; + if (gdk_device_get_device_type (source_device) != GDK_DEVICE_TYPE_MASTER) + _gdk_device_xi2_reset_scroll_valuators (GDK_X11_DEVICE_XI2 (source_device)); + else + { + GList *slaves, *l; - slaves = gdk_device_list_slave_devices (source_device); + slaves = gdk_device_list_slave_devices (source_device); - for (l = slaves; l; l = l->next) - _gdk_device_xi2_reset_scroll_valuators (GDK_X11_DEVICE_XI2 (l->data)); + for (l = slaves; l; l = l->next) + _gdk_device_xi2_reset_scroll_valuators (GDK_X11_DEVICE_XI2 (l->data)); - g_list_free (slaves); + g_list_free (slaves); + } } event->crossing.mode = translate_crossing_mode (xev->mode);