Commit a70a94e0b3d5c4788535ac7796bc5814095c36d3

Sam Lantinga 2021-10-15T18:11:19

Don't send a mouse leave event if the mouse is outside the window when gaining focus and in relative mode.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
diff --git a/src/video/windows/SDL_windowsevents.c b/src/video/windows/SDL_windowsevents.c
index 3a41e14..d30642a 100644
--- a/src/video/windows/SDL_windowsevents.c
+++ b/src/video/windows/SDL_windowsevents.c
@@ -403,9 +403,12 @@ WIN_UpdateFocus(SDL_Window *window)
 
         SDL_SetKeyboardFocus(window);
 
-        GetCursorPos(&cursorPos);
-        ScreenToClient(hwnd, &cursorPos);
-        SDL_SendMouseMotion(window, 0, 0, cursorPos.x, cursorPos.y);
+        /* In relative mode we are guaranteed to have mouse focus if we have keyboard focus */
+        if (!SDL_GetMouse()->relative_mode) {
+            GetCursorPos(&cursorPos);
+            ScreenToClient(hwnd, &cursorPos);
+            SDL_SendMouseMotion(window, 0, 0, cursorPos.x, cursorPos.y);
+        }
 
         WIN_CheckAsyncMouseRelease(data);
         WIN_UpdateClipCursor(window);