mirror of
https://github.com/gwm17/glfw.git
synced 2024-11-23 02:38:52 -05:00
Removed use of cursor rectangles.
Poor use of cursor rectangles broke Lion full screen and led to rect reset loop. Cursor image is now updated only with the existing enter/exit detection NSTrackingArea. Fixes #339. Fixes #375.
This commit is contained in:
parent
e57da19d4a
commit
e480c76a11
|
@ -64,30 +64,19 @@ static void centerCursor(_GLFWwindow *window)
|
|||
_glfwPlatformSetCursorPos(window, width / 2.0, height / 2.0);
|
||||
}
|
||||
|
||||
// Get the cursor object that window uses in the specified cursor mode
|
||||
//
|
||||
static NSCursor* getModeCursor(_GLFWwindow* window)
|
||||
{
|
||||
if (window->cursorMode == GLFW_CURSOR_NORMAL)
|
||||
{
|
||||
if (window->cursor)
|
||||
return (NSCursor*) window->cursor->ns.object;
|
||||
else
|
||||
return [NSCursor arrowCursor];
|
||||
}
|
||||
else
|
||||
return (NSCursor*) _glfw.ns.cursor;
|
||||
}
|
||||
|
||||
// Update the cursor to match the specified cursor mode
|
||||
//
|
||||
static void updateModeCursor(_GLFWwindow* window)
|
||||
{
|
||||
// This is required for the cursor to update if it's inside the window
|
||||
[getModeCursor(window) set];
|
||||
|
||||
// This is required for the cursor to update if it's outside the window
|
||||
[window->ns.object invalidateCursorRectsForView:window->ns.view];
|
||||
if (window->cursorMode == GLFW_CURSOR_NORMAL)
|
||||
{
|
||||
if (window->cursor)
|
||||
[(NSCursor*) window->cursor->ns.object set];
|
||||
else
|
||||
[[NSCursor arrowCursor] set];
|
||||
}
|
||||
else
|
||||
[(NSCursor*) _glfw.ns.cursor set];
|
||||
}
|
||||
|
||||
// Enter fullscreen mode
|
||||
|
@ -476,10 +465,11 @@ static int translateKey(unsigned int key)
|
|||
[trackingArea release];
|
||||
}
|
||||
|
||||
NSTrackingAreaOptions options = NSTrackingMouseEnteredAndExited |
|
||||
NSTrackingActiveInKeyWindow |
|
||||
NSTrackingCursorUpdate |
|
||||
NSTrackingInVisibleRect;
|
||||
const NSTrackingAreaOptions options = NSTrackingMouseEnteredAndExited |
|
||||
NSTrackingActiveInKeyWindow |
|
||||
NSTrackingCursorUpdate |
|
||||
NSTrackingInVisibleRect |
|
||||
NSTrackingAssumeInside;
|
||||
|
||||
trackingArea = [[NSTrackingArea alloc] initWithRect:[self bounds]
|
||||
options:options
|
||||
|
@ -570,11 +560,6 @@ static int translateKey(unsigned int key)
|
|||
_glfwInputScroll(window, deltaX, deltaY);
|
||||
}
|
||||
|
||||
- (void)resetCursorRects
|
||||
{
|
||||
[self addCursorRect:[self bounds] cursor:getModeCursor(window)];
|
||||
}
|
||||
|
||||
- (NSDragOperation)draggingEntered:(id <NSDraggingInfo>)sender
|
||||
{
|
||||
if ((NSDragOperationGeneric & [sender draggingSourceOperationMask])
|
||||
|
|
Loading…
Reference in New Issue
Block a user