Don't minimize by default when in fullscreen desktop mode.

This fixes behavior with the new Mac OS X fullscreen space code, as well as improve behavior on Linux desktops.
The default for normal fullscreen mode is still to minimize because we're likely doing a mode switch and don't want to stick around as a borderless window in the background.
This commit is contained in:
Sam Lantinga 2013-11-11 03:02:42 -08:00
parent 4c1322f693
commit 2ceeb74e25
1 changed files with 18 additions and 4 deletions

View File

@ -2134,8 +2134,22 @@ SDL_OnWindowFocusGained(SDL_Window * window)
SDL_UpdateWindowGrab(window); SDL_UpdateWindowGrab(window);
} }
static SDL_bool ShouldMinimizeOnFocusLoss() static SDL_bool
ShouldMinimizeOnFocusLoss(SDL_Window * window)
{ {
SDL_bool default_minimize;
if (!(window->flags & SDL_WINDOW_FULLSCREEN)) {
return SDL_FALSE;
}
if ((window->flags & SDL_WINDOW_FULLSCREEN_DESKTOP) == SDL_WINDOW_FULLSCREEN_DESKTOP) {
/* We're not doing a mode switch, so it's okay to stay around */
default_minimize = SDL_FALSE;
} else {
default_minimize = SDL_TRUE;
}
const char *hint = SDL_GetHint(SDL_HINT_VIDEO_MINIMIZE_ON_FOCUS_LOSS); const char *hint = SDL_GetHint(SDL_HINT_VIDEO_MINIMIZE_ON_FOCUS_LOSS);
if (hint) { if (hint) {
if (*hint == '0') { if (*hint == '0') {
@ -2144,7 +2158,8 @@ static SDL_bool ShouldMinimizeOnFocusLoss()
return SDL_TRUE; return SDL_TRUE;
} }
} }
return SDL_TRUE;
return default_minimize;
} }
void void
@ -2156,8 +2171,7 @@ SDL_OnWindowFocusLost(SDL_Window * window)
SDL_UpdateWindowGrab(window); SDL_UpdateWindowGrab(window);
/* If we're fullscreen and lose focus, minimize unless the hint tells us otherwise */ if (ShouldMinimizeOnFocusLoss(window)) {
if ((window->flags & SDL_WINDOW_FULLSCREEN) && ShouldMinimizeOnFocusLoss()) {
SDL_MinimizeWindow(window); SDL_MinimizeWindow(window);
} }
} }