Skip to content

Commit

Permalink
Don't minimize by default when in fullscreen desktop mode.
Browse files Browse the repository at this point in the history
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 2ceeb74
Showing 1 changed file with 18 additions and 4 deletions.
22 changes: 18 additions & 4 deletions src/video/SDL_video.c
Expand Up @@ -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') {
Expand All @@ -2144,7 +2158,8 @@ static SDL_bool ShouldMinimizeOnFocusLoss()
return SDL_TRUE;
}
}
return SDL_TRUE;

return default_minimize;
}

void
Expand All @@ -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);
}
}
Expand Down

0 comments on commit 2ceeb74

Please sign in to comment.