From: José Expósito Date: Mon, 20 Sep 2021 18:00:04 +0000 (+0200) Subject: gdk/x11: Handle high-resolution scroll events X-Git-Tag: archive/raspbian/4.8.3+ds-2+rpi1~3^2~20^2~4^2~3^2~2 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=37a561eb53ae42e5d786eed1309fd17b872c6ee1;p=gtk4.git gdk/x11: Handle high-resolution scroll events --- diff --git a/gdk/x11/gdkdevicemanager-xi2.c b/gdk/x11/gdkdevicemanager-xi2.c index a146333b5d..44e3342338 100644 --- a/gdk/x11/gdkdevicemanager-xi2.c +++ b/gdk/x11/gdkdevicemanager-xi2.c @@ -1729,6 +1729,7 @@ gdk_x11_device_manager_xi2_translate_event (GdkEventTranslator *translator, &xev->valuators, &delta_x, &delta_y)) { GdkModifierType state; + GdkScrollDirection direction; GDK_DISPLAY_NOTE (display, EVENTS, g_message ("smooth scroll: \n\tdevice: %u\n\tsource device: %u\n\twindow %ld\n\tdeltas: %f %f", @@ -1737,21 +1738,19 @@ gdk_x11_device_manager_xi2_translate_event (GdkEventTranslator *translator, state = _gdk_x11_device_xi2_translate_state (&xev->mods, &xev->buttons, &xev->group); + if (delta_x > 0) + direction = GDK_SCROLL_RIGHT; + else if (delta_x < 0) + direction = GDK_SCROLL_LEFT; + else if (delta_y > 0) + direction = GDK_SCROLL_DOWN; + else + direction = GDK_SCROLL_UP; + if (gdk_device_get_source (source_device) != GDK_SOURCE_TOUCHPAD && ((delta_x == 0.0 && ABS (delta_y) == 1.0) || (ABS (delta_x) == 1.0 && delta_y == 0.0))) { - GdkScrollDirection direction; - - if (delta_x > 0) - direction = GDK_SCROLL_RIGHT; - else if (delta_x < 0) - direction = GDK_SCROLL_LEFT; - else if (delta_y > 0) - direction = GDK_SCROLL_DOWN; - else - direction = GDK_SCROLL_UP; - event = gdk_scroll_event_new_discrete (surface, device, NULL, @@ -1759,6 +1758,17 @@ gdk_x11_device_manager_xi2_translate_event (GdkEventTranslator *translator, state, direction); } + else if (gdk_device_get_source (source_device) == GDK_SOURCE_MOUSE) + { + event = gdk_scroll_event_new_value120 (surface, + device, + NULL, + xev->time, + state, + direction, + delta_x * 120.0, + delta_y * 120.0); + } else { event = gdk_scroll_event_new (surface,