Skip to content
Permalink
Browse files
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.
  • Loading branch information
slouken committed Nov 11, 2013
1 parent 4c1322f commit 2ceeb74e25174d84741519bfb0584a720619df62
Showing with 18 additions and 4 deletions.
  1. +18 −4 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);
}
}

0 comments on commit 2ceeb74

Please sign in to comment.