From 2ceeb74e25174d84741519bfb0584a720619df62 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Mon, 11 Nov 2013 03:02:42 -0800 Subject: [PATCH] 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. --- src/video/SDL_video.c | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/src/video/SDL_video.c b/src/video/SDL_video.c index 46796e8055b3e..44f3daa54ef03 100755 --- a/src/video/SDL_video.c +++ b/src/video/SDL_video.c @@ -2134,8 +2134,22 @@ SDL_OnWindowFocusGained(SDL_Window * 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); if (hint) { if (*hint == '0') { @@ -2144,7 +2158,8 @@ static SDL_bool ShouldMinimizeOnFocusLoss() return SDL_TRUE; } } - return SDL_TRUE; + + return default_minimize; } void @@ -2156,8 +2171,7 @@ SDL_OnWindowFocusLost(SDL_Window * window) SDL_UpdateWindowGrab(window); - /* If we're fullscreen and lose focus, minimize unless the hint tells us otherwise */ - if ((window->flags & SDL_WINDOW_FULLSCREEN) && ShouldMinimizeOnFocusLoss()) { + if (ShouldMinimizeOnFocusLoss(window)) { SDL_MinimizeWindow(window); } }