Skip to content

Commit

Permalink
Fullscreen space naming cleanup to avoid confusion with normal fullsc…
Browse files Browse the repository at this point in the history
…reen mode
  • Loading branch information
slouken committed Nov 12, 2013
1 parent 7459b15 commit 5f8a0b1
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 19 deletions.
4 changes: 2 additions & 2 deletions src/video/cocoa/SDL_cocoawindow.h
Expand Up @@ -40,15 +40,15 @@ typedef enum
BOOL observingVisible;
BOOL wasCtrlLeft;
BOOL wasVisible;
BOOL isFullscreen;
BOOL isFullscreenSpace;
BOOL inFullscreenTransition;
PendingWindowOperation pendingWindowOperation;
}

-(void) listen:(SDL_WindowData *) data;
-(void) pauseVisibleObservation;
-(void) resumeVisibleObservation;
-(BOOL) setFullscreenState:(BOOL) state;
-(BOOL) setFullscreenSpace:(BOOL) state;
-(BOOL) isInFullscreenTransition;
-(void) addPendingWindowOperation:(PendingWindowOperation) operation;
-(void) close;
Expand Down
42 changes: 25 additions & 17 deletions src/video/cocoa/SDL_cocoawindow.m
Expand Up @@ -101,7 +101,7 @@ - (void)listen:(SDL_WindowData *)data
observingVisible = YES;
wasCtrlLeft = NO;
wasVisible = [window isVisible];
isFullscreen = NO;
isFullscreenSpace = NO;
inFullscreenTransition = NO;
pendingWindowOperation = PENDING_OPERATION_NONE;

Expand Down Expand Up @@ -184,34 +184,38 @@ -(void) resumeVisibleObservation
}
}

-(BOOL) setFullscreenState:(BOOL) state;
-(BOOL) setFullscreenSpace:(BOOL) state;
{
#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1070
SDL_Window *window = _data->window;
NSWindow *nswindow = _data->nswindow;
BOOL canSetState = NO;
BOOL canSetSpace = NO;

/* Make sure we can support this fullscreen style */
if (![nswindow respondsToSelector: @selector(toggleFullScreen:)]) {
/* Make sure the window supports switching to fullscreen spaces */
if (![nswindow respondsToSelector: @selector(collectionBehavior)]) {
return NO;
}
if ([nswindow collectionBehavior] != NSWindowCollectionBehaviorFullScreenPrimary) {
return NO;
}

pendingWindowOperation = PENDING_OPERATION_NONE;

/* We can enter new style fullscreen mode for "fullscreen desktop" */
/* We can enter fullscreen spaces for "fullscreen desktop" */
if ((window->flags & SDL_WINDOW_FULLSCREEN_DESKTOP) == SDL_WINDOW_FULLSCREEN_DESKTOP) {
canSetState = YES;
canSetSpace = YES;
}

/* We can always leave new style fullscreen mode */
if (!state && isFullscreen) {
canSetState = YES;
/* We can always leave fullscreen spaces */
if (!state && isFullscreenSpace) {
canSetSpace = YES;
}

if (!canSetState) {
if (!canSetSpace) {
return NO;
}

if (state == isFullscreen) {
if (state == isFullscreenSpace) {
return YES;
}

Expand All @@ -226,6 +230,9 @@ -(BOOL) setFullscreenState:(BOOL) state;

[nswindow performSelectorOnMainThread: @selector(toggleFullScreen:) withObject:nswindow waitUntilDone:NO];
return YES;
#else
return NO
#endif /* SDK >= 10.7 */
}

-(BOOL) isInFullscreenTransition
Expand Down Expand Up @@ -430,19 +437,20 @@ - (void)windowWillEnterFullScreen:(NSNotification *)aNotification
}
}

isFullscreen = YES;
isFullscreenSpace = YES;
inFullscreenTransition = YES;
}

- (void)windowDidEnterFullScreen:(NSNotification *)aNotification
{
SDL_Window *window = _data->window;
NSWindow *nswindow = _data->nswindow;

inFullscreenTransition = NO;

if (pendingWindowOperation == PENDING_OPERATION_LEAVE_FULLSCREEN) {
pendingWindowOperation = PENDING_OPERATION_NONE;
[self setFullscreenState:NO];
[self setFullscreenSpace:NO];
} else {
pendingWindowOperation = PENDING_OPERATION_NONE;
/* Force the size change event in case it was delivered earlier
Expand All @@ -466,7 +474,7 @@ - (void)windowWillExitFullScreen:(NSNotification *)aNotification
window->flags = flags;
}

isFullscreen = NO;
isFullscreenSpace = NO;
inFullscreenTransition = YES;
}

Expand All @@ -479,7 +487,7 @@ - (void)windowDidExitFullScreen:(NSNotification *)aNotification

if (pendingWindowOperation == PENDING_OPERATION_ENTER_FULLSCREEN) {
pendingWindowOperation = PENDING_OPERATION_NONE;
[self setFullscreenState:YES];
[self setFullscreenSpace:YES];
} else if (pendingWindowOperation == PENDING_OPERATION_MINIMIZE) {
pendingWindowOperation = PENDING_OPERATION_NONE;
[nswindow miniaturize:nil];
Expand Down Expand Up @@ -1272,7 +1280,7 @@ - (void)resetCursorRects
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
SDL_WindowData *data = (SDL_WindowData *) window->driverdata;

if (![data->listener setFullscreenState:(fullscreen ? YES : NO)]) {
if (![data->listener setFullscreenSpace:(fullscreen ? YES : NO)]) {
Cocoa_SetWindowFullscreen_OldStyle(_this, window, display, fullscreen);
}

Expand Down

0 comments on commit 5f8a0b1

Please sign in to comment.