diff -r -U 5 SDL2-2.0.2-orig/include/SDL_hints.h SDL2-2.0.2/include/SDL_hints.h --- SDL2-2.0.2-orig/include/SDL_hints.h 2014-03-07 22:36:49.000000000 -0600 +++ SDL2-2.0.2/include/SDL_hints.h 2014-03-08 10:52:56.846576409 -0600 @@ -193,10 +193,16 @@ * By default SDL will use raw input for relative mouse mode */ #define SDL_HINT_MOUSE_RELATIVE_MODE_WARP "SDL_MOUSE_RELATIVE_MODE_WARP" /** + * \brief Raise your SDL_Window (grab focus) when it is unhidden or restored. Defaults to true. + * + */ +#define SDL_HINT_VIDEO_RAISE_ON_RESTORE "SDL_VIDEO_RAISE_ON_RESTORE" + +/** * \brief Minimize your SDL_Window if it loses key focus when in fullscreen mode. Defaults to true. * */ #define SDL_HINT_VIDEO_MINIMIZE_ON_FOCUS_LOSS "SDL_VIDEO_MINIMIZE_ON_FOCUS_LOSS" diff -r -U 5 SDL2-2.0.2-orig/src/video/SDL_video.c SDL2-2.0.2/src/video/SDL_video.c --- SDL2-2.0.2-orig/src/video/SDL_video.c 2014-03-07 22:36:51.000000000 -0600 +++ SDL2-2.0.2/src/video/SDL_video.c 2014-03-08 10:57:51.581000655 -0600 @@ -2116,14 +2116,29 @@ SDL_OnWindowMinimized(SDL_Window * window) { SDL_UpdateFullscreenMode(window, SDL_FALSE); } +static SDL_bool ShouldRaiseOnRestore() +{ + const char *hint = SDL_GetHint(SDL_HINT_VIDEO_RAISE_ON_RESTORE); + if (hint) { + if (*hint == '0') { + return SDL_FALSE; + } else { + return SDL_TRUE; + } + } + return SDL_TRUE; +} + void SDL_OnWindowRestored(SDL_Window * window) { - SDL_RaiseWindow(window); + if (ShouldRaiseOnRestore()) { + SDL_RaiseWindow(window); + } if (FULLSCREEN_VISIBLE(window)) { SDL_UpdateFullscreenMode(window, SDL_TRUE); } }