@ -309,6 +309,8 @@ static int convertMacKeyCode(unsigned int macKeyCode)
/ / Content view class for the GLFW window
/ / Content view class for the GLFW window
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
static NSCursor * emptyCursor = nil ;
@ interface GLFWContentView : NSView
@ interface GLFWContentView : NSView
{
{
_GLFWwindow * window ;
_GLFWwindow * window ;
@ -321,6 +323,16 @@ static int convertMacKeyCode(unsigned int macKeyCode)
@ implementation GLFWContentView
@ implementation GLFWContentView
+ ( void ) initialize
{
if ( self == [ GLFWContentView class ] )
{
NSImage * emptyImage = [ [ NSImage alloc ] initWithSize : NSMakeSize ( 1 , 1 ) ] ;
emptyCursor = [ [ NSCursor alloc ] initWithImage : emptyImage hotSpot : NSZeroPoint ] ;
[ emptyImage release ] ;
}
}
- ( id ) initWithGlfwWindow : ( _GLFWwindow * ) initWindow
- ( id ) initWithGlfwWindow : ( _GLFWwindow * ) initWindow
{
{
self = [ super init ] ;
self = [ super init ] ;
@ -494,6 +506,11 @@ static int convertMacKeyCode(unsigned int macKeyCode)
_glfwInputScroll ( window , deltaX , deltaY ) ;
_glfwInputScroll ( window , deltaX , deltaY ) ;
}
}
- ( void ) resetCursorRects
{
[ self addCursorRect : [ self bounds ] cursor : emptyCursor ] ;
}
@ end
@ end
@ -929,16 +946,21 @@ void _glfwPlatformSetCursorPos(_GLFWwindow* window, double x, double y)
void _glfwPlatformSetCursorMode ( _GLFWwindow * window , int mode )
void _glfwPlatformSetCursorMode ( _GLFWwindow * window , int mode )
{
{
/ / Unhide the cursor if the last mode was CAPTURED .
if ( window - > cursorMode == GLFW_CURSOR_CAPTURED ) {
CGAssociateMouseAndMouseCursorPosition ( true ) ;
}
switch ( mode )
switch ( mode )
{
{
case GLFW_CURSOR_NORMAL :
case GLFW_CURSOR_NORMAL :
[ NSCursor unhide ] ;
[ window - > ns . object disableCursorRects ] ;
CGAssociateMouseAndMouseCursorPosition ( true ) ;
break ;
break ;
case GLFW_CURSOR_HIDDEN :
case GLFW_CURSOR_HIDDEN :
[ window - > ns . object enableCursorRects ] ;
break ;
break ;
case GLFW_CURSOR_CAPTURED :
case GLFW_CURSOR_CAPTURED :
[ NSCursor hide ] ;
[ window - > ns . object enableCursorRects ] ;
CGAssociateMouseAndMouseCursorPosition ( false ) ;
CGAssociateMouseAndMouseCursorPosition ( false ) ;
break ;
break ;
}
}