|
@@ -22,6 +22,10 @@ |
|
|
|
|
|
#if SDL_VIDEO_DRIVER_COCOA |
|
|
|
|
|
#if MAC_OS_X_VERSION_MAX_ALLOWED < 1070 |
|
|
# error SDL for Mac OS X must be built with a 10.7 SDK or above. |
|
|
#endif /* MAC_OS_X_VERSION_MAX_ALLOWED < 1070 */ |
|
|
|
|
|
#include "SDL_syswm.h" |
|
|
#include "SDL_timer.h" /* For SDL_GetTicks() */ |
|
|
#include "SDL_hints.h" |
|
@@ -35,14 +39,6 @@ |
|
|
#include "SDL_cocoamouse.h" |
|
|
#include "SDL_cocoaopengl.h" |
|
|
|
|
|
#if MAC_OS_X_VERSION_MAX_ALLOWED < 1070 |
|
|
/* Taken from AppKit/NSOpenGLView.h in 10.8 SDK. */ |
|
|
@interface NSView (NSOpenGLSurfaceResolution) |
|
|
- (BOOL)wantsBestResolutionOpenGLSurface; |
|
|
- (void)setWantsBestResolutionOpenGLSurface:(BOOL)flag; |
|
|
@end |
|
|
#endif |
|
|
|
|
|
static Uint32 s_moveHack; |
|
|
|
|
|
static void ConvertNSRect(NSRect *r) |
|
@@ -140,12 +136,10 @@ - (void)listen:(SDL_WindowData *)data |
|
|
[center addObserver:self selector:@selector(windowDidDeminiaturize:) name:NSWindowDidDeminiaturizeNotification object:window]; |
|
|
[center addObserver:self selector:@selector(windowDidBecomeKey:) name:NSWindowDidBecomeKeyNotification object:window]; |
|
|
[center addObserver:self selector:@selector(windowDidResignKey:) name:NSWindowDidResignKeyNotification object:window]; |
|
|
#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1070 |
|
|
[center addObserver:self selector:@selector(windowWillEnterFullScreen:) name:NSWindowWillEnterFullScreenNotification object:window]; |
|
|
[center addObserver:self selector:@selector(windowDidEnterFullScreen:) name:NSWindowDidEnterFullScreenNotification object:window]; |
|
|
[center addObserver:self selector:@selector(windowWillExitFullScreen:) name:NSWindowWillExitFullScreenNotification object:window]; |
|
|
[center addObserver:self selector:@selector(windowDidExitFullScreen:) name:NSWindowDidExitFullScreenNotification object:window]; |
|
|
#endif /* Mac OS X 10.7+ */ |
|
|
} else { |
|
|
[window setDelegate:self]; |
|
|
} |
|
@@ -211,7 +205,6 @@ -(void) resumeVisibleObservation |
|
|
|
|
|
-(BOOL) setFullscreenSpace:(BOOL) state; |
|
|
{ |
|
|
#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1070 |
|
|
SDL_Window *window = _data->window; |
|
|
NSWindow *nswindow = _data->nswindow; |
|
|
|
|
@@ -245,9 +238,6 @@ -(BOOL) setFullscreenSpace:(BOOL) state; |
|
|
|
|
|
[nswindow performSelectorOnMainThread: @selector(toggleFullScreen:) withObject:nswindow waitUntilDone:NO]; |
|
|
return YES; |
|
|
#else |
|
|
return NO; |
|
|
#endif /* SDK >= 10.7 */ |
|
|
} |
|
|
|
|
|
-(BOOL) isInFullscreenSpace |
|
@@ -282,12 +272,10 @@ - (void)close |
|
|
[center removeObserver:self name:NSWindowDidDeminiaturizeNotification object:window]; |
|
|
[center removeObserver:self name:NSWindowDidBecomeKeyNotification object:window]; |
|
|
[center removeObserver:self name:NSWindowDidResignKeyNotification object:window]; |
|
|
#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1070 |
|
|
[center removeObserver:self name:NSWindowWillEnterFullScreenNotification object:window]; |
|
|
[center removeObserver:self name:NSWindowDidEnterFullScreenNotification object:window]; |
|
|
[center removeObserver:self name:NSWindowWillExitFullScreenNotification object:window]; |
|
|
[center removeObserver:self name:NSWindowDidExitFullScreenNotification object:window]; |
|
|
#endif /* Mac OS X 10.7+ */ |
|
|
} else { |
|
|
[window setDelegate:nil]; |
|
|
} |
|
@@ -931,14 +919,12 @@ - (void)resetCursorRects |
|
|
return -1; |
|
|
} |
|
|
[nswindow setBackgroundColor:[NSColor blackColor]]; |
|
|
#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1070 |
|
|
if ([nswindow respondsToSelector:@selector(setCollectionBehavior:)]) { |
|
|
const char *hint = SDL_GetHint(SDL_HINT_VIDEO_FULLSCREEN_SPACES); |
|
|
if (hint && SDL_atoi(hint) > 0) { |
|
|
[nswindow setCollectionBehavior:NSWindowCollectionBehaviorFullScreenPrimary]; |
|
|
} |
|
|
} |
|
|
#endif |
|
|
|
|
|
/* Create a default view for this window */ |
|
|
rect = [nswindow contentRectForFrameRect:[nswindow frame]]; |
|
@@ -1419,7 +1405,6 @@ - (void)resetCursorRects |
|
|
Cocoa_SetWindowFullscreenSpace(SDL_Window * window, SDL_bool state) |
|
|
{ |
|
|
SDL_bool succeeded = SDL_FALSE; |
|
|
#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1070 |
|
|
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; |
|
|
SDL_WindowData *data = (SDL_WindowData *) window->driverdata; |
|
|
|
|
@@ -1428,7 +1413,6 @@ - (void)resetCursorRects |
|
|
} |
|
|
|
|
|
[pool release]; |
|
|
#endif /* SDK 10.7+ */ |
|
|
|
|
|
return succeeded; |
|
|
} |
|
|