Commit 5b2ff76c12af3663367996019c436ee116b221b8

Ryan C. Gordon 2015-05-31T13:58:36

Cocoa: send a MOUSEMOTION event when warping cursor from outside the window. Fixes Bugzilla #2984.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
diff --git a/src/video/cocoa/SDL_cocoamouse.m b/src/video/cocoa/SDL_cocoamouse.m
index 4f15373..9c37c47 100644
--- a/src/video/cocoa/SDL_cocoamouse.m
+++ b/src/video/cocoa/SDL_cocoamouse.m
@@ -230,6 +230,10 @@ Cocoa_WarpMouseGlobal(int x, int y)
 static void
 Cocoa_WarpMouse(SDL_Window * window, int x, int y)
 {
+    /* pretend we have the mouse focus, even if we don't, so
+        Cocoa_WarpMouseGlobal() will properly fake a mouse motion event. */
+    SDL_Mouse *mouse = SDL_GetMouse();
+    mouse->focus = window;
     Cocoa_WarpMouseGlobal(x + window->x, y + window->y);
 }