Index: SDL_QuartzWindow.h =================================================================== --- SDL_QuartzWindow.h (revision 3264) +++ SDL_QuartzWindow.h (working copy) @@ -37,3 +37,7 @@ - (BOOL)windowShouldClose:(id)sender; @end +/* Subclass of NSView to set cursor rectangle */ +@interface SDL_QuartzView : NSView +- (void)resetCursorRects; +@end Index: SDL_QuartzWM.m =================================================================== --- SDL_QuartzWM.m (revision 3264) +++ SDL_QuartzWM.m (working copy) @@ -123,7 +123,12 @@ } } else { - [ cursor->nscursor set ]; + if (qz_window ==nil || (mode_flags & SDL_FULLSCREEN)) { + [ cursor->nscursor set ]; + } + else { + [ qz_window invalidateCursorRectsForView: [ qz_window contentView ] ]; + } if ( ! cursor_should_be_visible ) { QZ_ShowMouse (this); cursor_should_be_visible = YES; Index: SDL_QuartzVideo.m =================================================================== --- SDL_QuartzVideo.m (revision 3264) +++ SDL_QuartzVideo.m (working copy) @@ -756,6 +756,7 @@ } [ qz_window setDelegate: [ [ [ SDL_QuartzWindowDelegate alloc ] init ] autorelease ] ]; + [ qz_window setContentView: [ [ [ SDL_QuartzView alloc ] init ] autorelease ] ]; } /* We already have a window, just change its size */ else { Index: SDL_QuartzWindow.m =================================================================== --- SDL_QuartzWindow.m (revision 3264) +++ SDL_QuartzWindow.m (working copy) @@ -217,3 +217,19 @@ } @end + +@implementation SDL_QuartzView + +struct WMcursor { + NSCursor *nscursor; +}; + +- (void)resetCursorRects +{ + SDL_Cursor *sdlc = SDL_GetCursor(); + if (sdlc != NULL && sdlc->wm_cursor != NULL) { + [self addCursorRect: [self visibleRect] cursor: sdlc->wm_cursor->nscursor]; + } +} + +@end