Skip to content

Commit

Permalink
Implemented Cocoa GetAbsoluteMouseState().
Browse files Browse the repository at this point in the history
  • Loading branch information
icculus committed Jun 11, 2014
1 parent 4676705 commit 2cce7b2
Showing 1 changed file with 26 additions and 0 deletions.
26 changes: 26 additions & 0 deletions src/video/cocoa/SDL_cocoamouse.m
Expand Up @@ -282,6 +282,31 @@ + (NSCursor *)invisibleCursor
return 0;
}

static Uint32
Cocoa_GetAbsoluteMouseState(int *x, int *y)
{
const NSUInteger cocoaButtons = [NSEvent pressedMouseButtons];
const NSPoint cocoaLocation = [NSEvent mouseLocation];
Uint32 retval = 0;

for (NSScreen *screen in [NSScreen screens]) {
NSRect frame = [screen frame];
if (NSPointInRect(cocoaLocation, frame)) {
*x = (int) cocoaLocation.x;
*y = (int) ((frame.origin.y + frame.size.height) - cocoaLocation.y);
break;
}
}

retval |= (cocoaButtons & (1 << 0)) ? SDL_BUTTON_LMASK : 0;
retval |= (cocoaButtons & (1 << 1)) ? SDL_BUTTON_RMASK : 0;
retval |= (cocoaButtons & (1 << 2)) ? SDL_BUTTON_MMASK : 0;
retval |= (cocoaButtons & (1 << 3)) ? SDL_BUTTON_X1MASK : 0;
retval |= (cocoaButtons & (1 << 4)) ? SDL_BUTTON_X2MASK : 0;

return retval;
}

void
Cocoa_InitMouse(_THIS)
{
Expand All @@ -296,6 +321,7 @@ + (NSCursor *)invisibleCursor
mouse->WarpMouse = Cocoa_WarpMouse;
mouse->SetRelativeMouseMode = Cocoa_SetRelativeMouseMode;
mouse->CaptureMouse = Cocoa_CaptureMouse;
mouse->GetAbsoluteMouseState = Cocoa_GetAbsoluteMouseState;

SDL_SetDefaultCursor(Cocoa_CreateDefaultCursor());

Expand Down

0 comments on commit 2cce7b2

Please sign in to comment.