diff --git a/src/cocoa_platform.h b/src/cocoa_platform.h index 368fb10f..6aafa325 100644 --- a/src/cocoa_platform.h +++ b/src/cocoa_platform.h @@ -62,7 +62,6 @@ typedef struct _GLFWwindowNS id delegate; id view; unsigned int modifierFlags; - int cursorInside; } _GLFWwindowNS; diff --git a/src/cocoa_window.m b/src/cocoa_window.m index b752da49..4b91635d 100644 --- a/src/cocoa_window.m +++ b/src/cocoa_window.m @@ -439,13 +439,11 @@ static int translateKey(unsigned int key) - (void)mouseExited:(NSEvent *)event { - window->ns.cursorInside = GL_FALSE; _glfwInputCursorEnter(window, GL_FALSE); } - (void)mouseEntered:(NSEvent *)event { - window->ns.cursorInside = GL_TRUE; _glfwInputCursorEnter(window, GL_TRUE); } @@ -1199,7 +1197,10 @@ void _glfwPlatformDestroyCursor(_GLFWcursor* cursor) void _glfwPlatformSetCursor(_GLFWwindow* window, _GLFWcursor* cursor) { - if (window->cursorMode == GLFW_CURSOR_NORMAL && window->ns.cursorInside) + const NSPoint p = [window->ns.object mouseLocationOutsideOfEventStream]; + + if (window->cursorMode == GLFW_CURSOR_NORMAL && + [window->ns.view mouse:p inRect:[window->ns.view frame]]) { if (cursor) [(NSCursor*) cursor->ns.object set];