From 10f4e6fec67542ac01c8f2364e7c3db05f0831a6 Mon Sep 17 00:00:00 2001 From: "J?rgen P. Tjern?" Date: Tue, 4 Jun 2013 14:54:49 -0700 Subject: [PATCH] Mac: Fix incorrect relative jump on focus / start. We should no longer send huge jumps on relative mode focus changes if the cursor was moved around, or on initial start. Fixes http://bugzilla.libsdl.org/show_bug.cgi?id=1836 --- src/video/cocoa/SDL_cocoamouse.m | 10 ++++++---- src/video/cocoa/SDL_cocoawindow.m | 3 ++- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/video/cocoa/SDL_cocoamouse.m b/src/video/cocoa/SDL_cocoamouse.m index fd76bb584..58b666f03 100644 --- a/src/video/cocoa/SDL_cocoamouse.m +++ b/src/video/cocoa/SDL_cocoamouse.m @@ -224,10 +224,12 @@ + (NSCursor *)invisibleCursor CGWarpMouseCursorPosition(point); CGSetLocalEventsSuppressionInterval(0.25); - /* CGWarpMouseCursorPosition doesn't generate a window event, unlike our - * other implementations' APIs. - */ - SDL_SendMouseMotion(mouse->focus, mouse->mouseID, 0, x, y); + if (!mouse->relative_mode) { + /* CGWarpMouseCursorPosition doesn't generate a window event, unlike our + * other implementations' APIs. + */ + SDL_SendMouseMotion(mouse->focus, mouse->mouseID, 0, x, y); + } } static int diff --git a/src/video/cocoa/SDL_cocoawindow.m b/src/video/cocoa/SDL_cocoawindow.m index 06f0fd28e..a3053075e 100644 --- a/src/video/cocoa/SDL_cocoawindow.m +++ b/src/video/cocoa/SDL_cocoawindow.m @@ -240,12 +240,13 @@ - (void)windowDidDeminiaturize:(NSNotification *)aNotification - (void)windowDidBecomeKey:(NSNotification *)aNotification { SDL_Window *window = _data->window; + SDL_Mouse *mouse = SDL_GetMouse(); /* We're going to get keyboard events, since we're key. */ SDL_SetKeyboardFocus(window); /* If we just gained focus we need the updated mouse position */ - { + if (!mouse->relative_mode) { NSPoint point; int x, y;