Skip to content

Commit

Permalink
Cocoa mouse code: Replaced NSPointInRect with NSMouseInRect (thanks E…
Browse files Browse the repository at this point in the history
…ric Wasylishen!) Fixes bug #3312.
  • Loading branch information
slime73 committed May 2, 2016
1 parent d383502 commit b15efce
Show file tree
Hide file tree
Showing 3 changed files with 7 additions and 14 deletions.
4 changes: 2 additions & 2 deletions src/video/cocoa/SDL_cocoamouse.m
Expand Up @@ -316,7 +316,7 @@ + (NSCursor *)invisibleCursor

for (NSScreen *screen in [NSScreen screens]) {
NSRect frame = [screen frame];
if (NSPointInRect(cocoaLocation, frame)) {
if (NSMouseInRect(cocoaLocation, frame, NO)) {
*x = (int) cocoaLocation.x;
*y = (int) ((frame.origin.y + frame.size.height) - cocoaLocation.y);
break;
Expand Down Expand Up @@ -398,7 +398,7 @@ + (NSCursor *)invisibleCursor
/* Ignore events that aren't inside the client area (i.e. title bar.) */
if ([event window]) {
NSRect windowRect = [[[event window] contentView] frame];
if (!NSPointInRect([event locationInWindow], windowRect)) {
if (!NSMouseInRect([event locationInWindow], windowRect, NO)) {
return;
}
}
Expand Down
8 changes: 4 additions & 4 deletions src/video/cocoa/SDL_cocoamousetap.m
Expand Up @@ -96,7 +96,7 @@
eventLocation = CGEventGetUnflippedLocation(event);
windowRect = [nswindow contentRectForFrameRect:[nswindow frame]];

if (!NSPointInRect(NSPointFromCGPoint(eventLocation), windowRect)) {
if (!NSMouseInRect(NSPointFromCGPoint(eventLocation), windowRect, NO)) {

/* This is in CGs global screenspace coordinate system, which has a
* flipped Y.
Expand All @@ -109,10 +109,10 @@
newLocation.x = NSMaxX(windowRect) - 1.0;
}

if (eventLocation.y < NSMinY(windowRect)) {
if (eventLocation.y <= NSMinY(windowRect)) {
newLocation.y -= (NSMinY(windowRect) - eventLocation.y + 1);
} else if (eventLocation.y >= NSMaxY(windowRect)) {
newLocation.y += (eventLocation.y - NSMaxY(windowRect) + 1);
} else if (eventLocation.y > NSMaxY(windowRect)) {
newLocation.y += (eventLocation.y - NSMaxY(windowRect));
}

CGWarpMouseCursorPosition(newLocation);
Expand Down
9 changes: 1 addition & 8 deletions src/video/cocoa/SDL_cocoawindow.m
Expand Up @@ -839,14 +839,7 @@ - (void)mouseDown:(NSEvent *)theEvent
/* Ignore events that aren't inside the client area (i.e. title bar.) */
if ([theEvent window]) {
NSRect windowRect = [[[theEvent window] contentView] frame];

/* add one to size, since NSPointInRect is exclusive of the bottom
edges, which mean it misses the top of the window by one pixel
(as the origin is the bottom left). */
windowRect.size.width += 1;
windowRect.size.height += 1;

if (!NSPointInRect([theEvent locationInWindow], windowRect)) {
if (!NSMouseInRect([theEvent locationInWindow], windowRect, NO)) {
return;
}
}
Expand Down

0 comments on commit b15efce

Please sign in to comment.