mirror of
https://github.com/glfw/glfw.git
synced 2026-09-21 00:30:57 +00:00
Cleanup
Move global data to library struct. Simplify semantics. Update changelog. Related to #1028.
This commit is contained in:
@@ -102,6 +102,7 @@ typedef struct _GLFWlibraryNS
|
||||
CGEventSourceRef eventSource;
|
||||
id delegate;
|
||||
id autoreleasePool;
|
||||
GLFWbool cursorHidden;
|
||||
TISInputSourceRef inputSource;
|
||||
IOHIDManagerRef hidManager;
|
||||
id unicodeData;
|
||||
|
||||
+20
-12
@@ -88,18 +88,26 @@ static GLFWbool cursorInClientArea(_GLFWwindow* window)
|
||||
return [window->ns.view mouse:pos inRect:[window->ns.view frame]];
|
||||
}
|
||||
|
||||
// Updates cursor visibility
|
||||
// Hides the cursor if not already hidden
|
||||
//
|
||||
static void setCursorVisibility(_GLFWwindow* window, BOOL makeVisible)
|
||||
static void hideCursor(_GLFWwindow* window)
|
||||
{
|
||||
static BOOL isCursorVisible = YES;
|
||||
|
||||
if (makeVisible && !isCursorVisible)
|
||||
[NSCursor unhide];
|
||||
else if (!makeVisible && isCursorVisible)
|
||||
if (!_glfw.ns.cursorHidden)
|
||||
{
|
||||
[NSCursor hide];
|
||||
_glfw.ns.cursorHidden = GLFW_TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
isCursorVisible = makeVisible;
|
||||
// Shows the cursor if not already shown
|
||||
//
|
||||
static void showCursor(_GLFWwindow* window)
|
||||
{
|
||||
if (_glfw.ns.cursorHidden)
|
||||
{
|
||||
[NSCursor unhide];
|
||||
_glfw.ns.cursorHidden = GLFW_FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
// Updates the cursor image according to its cursor mode
|
||||
@@ -108,7 +116,7 @@ static void updateCursorImage(_GLFWwindow* window)
|
||||
{
|
||||
if (window->cursorMode == GLFW_CURSOR_NORMAL)
|
||||
{
|
||||
setCursorVisibility(window, YES);
|
||||
showCursor(window);
|
||||
|
||||
if (window->cursor)
|
||||
[(NSCursor*) window->cursor->ns.object set];
|
||||
@@ -116,7 +124,7 @@ static void updateCursorImage(_GLFWwindow* window)
|
||||
[[NSCursor arrowCursor] set];
|
||||
}
|
||||
else
|
||||
setCursorVisibility(window, NO);
|
||||
hideCursor(window);
|
||||
}
|
||||
|
||||
// Transforms the specified y-coordinate between the CG display and NS screen
|
||||
@@ -525,7 +533,7 @@ static const NSRange kEmptyRange = { NSNotFound, 0 };
|
||||
- (void)mouseExited:(NSEvent *)event
|
||||
{
|
||||
if (window->cursorMode == GLFW_CURSOR_HIDDEN)
|
||||
setCursorVisibility(window, YES);
|
||||
showCursor(window);
|
||||
|
||||
_glfwInputCursorEnter(window, GLFW_FALSE);
|
||||
}
|
||||
@@ -533,7 +541,7 @@ static const NSRange kEmptyRange = { NSNotFound, 0 };
|
||||
- (void)mouseEntered:(NSEvent *)event
|
||||
{
|
||||
if (window->cursorMode == GLFW_CURSOR_HIDDEN)
|
||||
setCursorVisibility(window, NO);
|
||||
hideCursor(window);
|
||||
|
||||
_glfwInputCursorEnter(window, GLFW_TRUE);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user