From dd94c5fa545d4fa2e8d80d70ab8f9e47b7a41840 Mon Sep 17 00:00:00 2001 From: "J?rgen P. Tjern?" Date: Wed, 26 Feb 2014 16:10:52 -0800 Subject: [PATCH] Mac: Don't disassociate cursor if window is moving / doesn't have focus. Bug: https://bugzilla.libsdl.org/show_bug.cgi?id=2396 --- src/video/cocoa/SDL_cocoamouse.m | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/video/cocoa/SDL_cocoamouse.m b/src/video/cocoa/SDL_cocoamouse.m index 71b782caa2534..d9292b87726f4 100644 --- a/src/video/cocoa/SDL_cocoamouse.m +++ b/src/video/cocoa/SDL_cocoamouse.m @@ -244,8 +244,23 @@ + (NSCursor *)invisibleCursor static int Cocoa_SetRelativeMouseMode(SDL_bool enabled) { - CGError result; + /* We will re-apply the relative mode when the window gets focus, if it + * doesn't have focus right now. + */ + SDL_Window *window = SDL_GetMouseFocus(); + if (!window) { + return 0; + } + /* We will re-apply the relative mode when the window finishes being moved, + * if it is being moved right now. + */ + SDL_WindowData *data = (SDL_WindowData *) window->driverdata; + if ([data->listener isMoving]) { + return; + } + + CGError result; if (enabled) { DLog("Turning on."); result = CGAssociateMouseAndMouseCursorPosition(NO);