|
@@ -293,8 +293,11 @@ static int Cocoa_SetRelativeMouseMode(SDL_bool enabled)
|
|
|
if (enabled) {
|
|
|
if (window) {
|
|
|
/* make sure the mouse isn't at the corner of the window, as this can confuse things if macOS thinks a window resize is happening on the first click. */
|
|
|
+ SDL_MouseData *mousedriverdata = (SDL_MouseData*)SDL_GetMouse()->driverdata;
|
|
|
const CGPoint point = CGPointMake((float)(window->x + (window->w / 2)), (float)(window->y + (window->h / 2)));
|
|
|
- Cocoa_HandleMouseWarp(point.x, point.y);
|
|
|
+ if (mousedriverdata) {
|
|
|
+ mousedriverdata->justEnabledRelative = SDL_TRUE;
|
|
|
+ }
|
|
|
CGWarpMouseCursorPosition(point);
|
|
|
}
|
|
|
DLog("Turning on.");
|
|
@@ -465,6 +468,11 @@ void Cocoa_HandleMouseEvent(_THIS, NSEvent *event)
|
|
|
seenWarp = driverdata->seenWarp;
|
|
|
driverdata->seenWarp = NO;
|
|
|
|
|
|
+ if (driverdata->justEnabledRelative) {
|
|
|
+ driverdata->justEnabledRelative = SDL_FALSE;
|
|
|
+ return; // dump the first event back.
|
|
|
+ }
|
|
|
+
|
|
|
location = [NSEvent mouseLocation];
|
|
|
lastMoveX = driverdata->lastMoveX;
|
|
|
lastMoveY = driverdata->lastMoveY;
|