From: Ricardo Maia Louro Date: Sun, 14 Aug 2022 17:27:03 +0000 (+0100) Subject: GdkWin32: Support high resolution scroll wheel events X-Git-Tag: archive/raspbian/4.8.3+ds-2+rpi1~3^2~20^2~3^2~82^2 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=6ceacee0f90c6e5a7a09380ef4be810b76db10cb;p=gtk4.git GdkWin32: Support high resolution scroll wheel events --- diff --git a/gdk/win32/gdkevents-win32.c b/gdk/win32/gdkevents-win32.c index 23f99c1ab7..ee5bc47b39 100644 --- a/gdk/win32/gdkevents-win32.c +++ b/gdk/win32/gdkevents-win32.c @@ -2669,6 +2669,7 @@ gdk_event_translate (MSG *msg, { int16_t scroll_x = 0; int16_t scroll_y = 0; + GdkScrollDirection direction; char classname[64]; @@ -2720,15 +2721,24 @@ gdk_event_translate (MSG *msg, _gdk_device_virtual_set_active (_gdk_device_manager->core_pointer, _gdk_device_manager->system_pointer); - event = gdk_scroll_event_new (window, - device_manager_win32->core_pointer, - NULL, - _gdk_win32_get_next_tick (msg->time), - build_pointer_event_state (msg), - (double) scroll_x / (double) WHEEL_DELTA, - (double) -scroll_y / (double) WHEEL_DELTA, - FALSE, - GDK_SCROLL_UNIT_WHEEL); + direction = 0; + if (msg->message == WM_MOUSEWHEEL) + direction = (((short) HIWORD (msg->wParam)) > 0) + ? GDK_SCROLL_UP + : GDK_SCROLL_DOWN; + else if (msg->message == WM_MOUSEHWHEEL) + direction = (((short) HIWORD (msg->wParam)) > 0) + ? GDK_SCROLL_RIGHT + : GDK_SCROLL_LEFT; + + event = gdk_scroll_event_new_value120 (window, + device_manager_win32->core_pointer, + NULL, + _gdk_win32_get_next_tick (msg->time), + build_pointer_event_state (msg), + direction, + (double) scroll_x, + (double) -scroll_y); _gdk_win32_append_event (event);