From 268893cc9b77f7e96343bb11108d95d3d64ca4b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Deuc=D0=B5?= <shurd@sasktel.net> Date: Sat, 3 Jun 2023 21:13:45 -0400 Subject: [PATCH] When switching from fullscreen mode, recalculate win size. --- src/conio/sdl_con.c | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/conio/sdl_con.c b/src/conio/sdl_con.c index 8c84186efc..412f31f88b 100644 --- a/src/conio/sdl_con.c +++ b/src/conio/sdl_con.c @@ -663,8 +663,25 @@ static void sdl_add_key(unsigned int keyval, struct video_stats *vs) if(keyval==0xa600 && vs != NULL) { fullscreen=!fullscreen; cio_api.mode=fullscreen?CIOLIB_MODE_SDL_FULLSCREEN:CIOLIB_MODE_SDL; - sdl.SetWindowFullscreen(win, fullscreen ? SDL_WINDOW_FULLSCREEN_DESKTOP : 0); update_cvstat(vs); + sdl.SetWindowFullscreen(win, fullscreen ? SDL_WINDOW_FULLSCREEN_DESKTOP : 0); + if (!fullscreen) { + int w, h; + + // Get current window size + sdl.GetWindowSize(win, &w, &h); + // Limit to max window size if available + SDL_Rect r; + if (sdl.GetDisplayUsableBounds(0, &r) == 0) { + if (w > r.w) + w = r.w; + if (h > r.h) + h = r.h; + } + // Set size based on current max + vs->scaling = bitmap_double_mult_inside(w, h); + bitmap_get_scaled_win_size(vs->scaling, &vs->winwidth, &vs->winheight, w, h); + } setup_surfaces(vs); return; } -- GitLab