From 5f98fcf00b09a0cf16f6a0f50ba15665a49de518 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Tue, 30 Jan 2024 11:11:10 -0800 Subject: [PATCH] Use the exact motion associated with the warp When Windows DPI scaling is enabled, the warp coordinates will be modified, so make sure we send exactly the coordinates that the warp attempted. Fixes https://github.com/libsdl-org/SDL/issues/8940 (cherry picked from commit 8ce6fb25131912c7e83267bff03a5d1797545d5c) --- src/video/windows/SDL_windowsmouse.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/video/windows/SDL_windowsmouse.c b/src/video/windows/SDL_windowsmouse.c index 3aba35f4d..214197b6b 100644 --- a/src/video/windows/SDL_windowsmouse.c +++ b/src/video/windows/SDL_windowsmouse.c @@ -282,6 +282,8 @@ static void WIN_WarpMouse(SDL_Window *window, int x, int y) SDL_WindowData *data = (SDL_WindowData *)window->driverdata; HWND hwnd = data->hwnd; POINT pt; + int warp_x = x; + int warp_y = y; /* Don't warp the mouse while we're doing a modal interaction */ if (data->in_title_click || data->focus_click_pending) { @@ -295,7 +297,7 @@ static void WIN_WarpMouse(SDL_Window *window, int x, int y) WIN_SetCursorPos(pt.x, pt.y); /* Send the exact mouse motion associated with this warp */ - SDL_SendMouseMotion(window, SDL_GetMouse()->mouseID, 0, x, y); + SDL_SendMouseMotion(window, SDL_GetMouse()->mouseID, 0, warp_x, warp_y); } static int WIN_WarpMouseGlobal(int x, int y)