By default minimize real fullscreen windows when they lose focus so the desktop video mode is restored.

This fixes https://github.com/libsdl-org/SDL/issues/4039
This commit is contained in:
Sam Lantinga 2021-07-28 14:20:29 -07:00
parent 1e07dba09b
commit 8e35ff5cb3

View File

@ -2887,6 +2887,8 @@ SDL_OnWindowFocusGained(SDL_Window * window)
static SDL_bool static SDL_bool
ShouldMinimizeOnFocusLoss(SDL_Window * window) ShouldMinimizeOnFocusLoss(SDL_Window * window)
{ {
const char *hint;
if (!(window->flags & SDL_WINDOW_FULLSCREEN) || window->is_destroying) { if (!(window->flags & SDL_WINDOW_FULLSCREEN) || window->is_destroying) {
return SDL_FALSE; return SDL_FALSE;
} }
@ -2902,12 +2904,21 @@ ShouldMinimizeOnFocusLoss(SDL_Window * window)
#ifdef __ANDROID__ #ifdef __ANDROID__
{ {
extern SDL_bool Android_JNI_ShouldMinimizeOnFocusLoss(void); extern SDL_bool Android_JNI_ShouldMinimizeOnFocusLoss(void);
if (! Android_JNI_ShouldMinimizeOnFocusLoss()) { if (!Android_JNI_ShouldMinimizeOnFocusLoss()) {
return SDL_FALSE; return SDL_FALSE;
} }
} }
#endif #endif
/* Real fullscreen windows should minimize on focus loss so the desktop video mode is restored */
hint = SDL_GetHint(SDL_HINT_VIDEO_MINIMIZE_ON_FOCUS_LOSS);
if (!hint || !*hint || SDL_strcasecmp(hint, "auto") == 0) {
if ((window->flags & SDL_WINDOW_FULLSCREEN_DESKTOP) == SDL_WINDOW_FULLSCREEN_DESKTOP) {
return SDL_FALSE;
} else {
return SDL_TRUE;
}
}
return SDL_GetHintBoolean(SDL_HINT_VIDEO_MINIMIZE_ON_FOCUS_LOSS, SDL_FALSE); return SDL_GetHintBoolean(SDL_HINT_VIDEO_MINIMIZE_ON_FOCUS_LOSS, SDL_FALSE);
} }