From 8a6d6fe6b1107218f82ac8a9157aed5d30a0f67e Mon Sep 17 00:00:00 2001 From: Luca Bacci Date: Thu, 19 May 2022 15:04:41 +0200 Subject: [PATCH] DirectManipulation: Account for DPI scale --- gdk/win32/gdkinput-dmanipulation.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/gdk/win32/gdkinput-dmanipulation.c b/gdk/win32/gdkinput-dmanipulation.c index 82b60e209b..942db6cdc2 100644 --- a/gdk/win32/gdkinput-dmanipulation.c +++ b/gdk/win32/gdkinput-dmanipulation.c @@ -167,8 +167,10 @@ DManipEventHandler_OnContentUpdated (IDirectManipulationViewportEventHandler *se { case GESTURE_PAN: { + GdkWin32Surface *surface_win32; GdkModifierType state; uint32_t time; + int scale; float pan_x; float pan_y; GdkEvent *event; @@ -176,14 +178,16 @@ DManipEventHandler_OnContentUpdated (IDirectManipulationViewportEventHandler *se pan_x = transform[4]; pan_y = transform[5]; + surface_win32 = GDK_WIN32_SURFACE (self->surface); + scale = surface_win32->surface_scale; state = util_get_modifier_state (); time = (uint32_t) GetMessageTime (); event = gdk_scroll_event_new (self->surface, self->device, NULL, time, state, - self->pan_x - pan_x, - self->pan_y - pan_y, + (self->pan_x - pan_x) / scale, + (self->pan_y - pan_y) / scale, FALSE, GDK_SCROLL_UNIT_SURFACE); _gdk_win32_append_event (event);