properly restore previous window size

when returning from fullscreen or changing rendering resolution
This commit is contained in:
Fabian Greffrath 2020-01-08 22:18:27 +01:00
parent 889f1e163e
commit cd4b09f195

View File

@ -56,6 +56,9 @@ SDL_Renderer *renderer;
SDL_Surface *argbbuffer; SDL_Surface *argbbuffer;
SDL_Texture *texture; SDL_Texture *texture;
// [FG] window size when returning from fullscreen mode
static int window_width, window_height;
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
// //
// JOYSTICK // phares 4/3/98 // JOYSTICK // phares 4/3/98
@ -468,6 +471,13 @@ static void HandleWindowEvent(SDL_WindowEvent *event)
{ {
switch (event->event) switch (event->event)
{ {
case SDL_WINDOWEVENT_RESIZED:
if (!fullscreen)
{
SDL_GetWindowSize(screen, &window_width, &window_height);
}
break;
// Don't render the screen when the window is minimized: // Don't render the screen when the window is minimized:
case SDL_WINDOWEVENT_MINIMIZED: case SDL_WINDOWEVENT_MINIMIZED:
@ -509,9 +519,6 @@ static boolean ToggleFullScreenKeyShortcut(SDL_Keysym *sym)
return sym->scancode == SDL_SCANCODE_RETURN && (sym->mod & flags) != 0; return sym->scancode == SDL_SCANCODE_RETURN && (sym->mod & flags) != 0;
} }
// [FG] window size when returning from fullscreen mode
static int window_width, window_height;
static void I_ToggleFullScreen(void) static void I_ToggleFullScreen(void)
{ {
unsigned int flags = 0; unsigned int flags = 0;
@ -951,8 +958,11 @@ static void I_InitGraphicsMode(void)
SDL_SetWindowMinimumSize(screen, v_w, actualheight); SDL_SetWindowMinimumSize(screen, v_w, actualheight);
// [FG] window size when returning from fullscreen mode // [FG] window size when returning from fullscreen mode
window_width = scalefactor * v_w; if (!window_width || !window_height)
window_height = scalefactor * actualheight; {
window_width = scalefactor * v_w;
window_height = scalefactor * actualheight;
}
if (!(flags & SDL_WINDOW_FULLSCREEN_DESKTOP)) if (!(flags & SDL_WINDOW_FULLSCREEN_DESKTOP))
{ {