From 0e5e772ba9c67d6822e2e22fc782657f8ec58000 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Wed, 13 May 2026 20:39:38 -0700 Subject: [PATCH] Fixed windows getting the wrong size when setting size and aspect ratio back to back --- src/video/SDL_video.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/video/SDL_video.c b/src/video/SDL_video.c index 86826b8b61..318f05b1df 100644 --- a/src/video/SDL_video.c +++ b/src/video/SDL_video.c @@ -3239,10 +3239,15 @@ bool SDL_SetWindowAspectRatio(SDL_Window *window, float min_aspect, float max_as window->min_aspect = min_aspect; window->max_aspect = max_aspect; + if (_this->SetWindowAspectRatio) { _this->SetWindowAspectRatio(_this, window); } - return SDL_SetWindowSize(window, window->floating.w, window->floating.h); + + // Ensure that window has the correct aspect ratio + int w = window->last_size_pending ? window->pending.w : window->floating.w; + int h = window->last_size_pending ? window->pending.h : window->floating.h; + return SDL_SetWindowSize(window, w, h); } bool SDL_GetWindowAspectRatio(SDL_Window *window, float *min_aspect, float *max_aspect) @@ -3346,8 +3351,6 @@ bool SDL_SetWindowMinimumSize(SDL_Window *window, int min_w, int min_h) // Ensure that window is not smaller than minimal size int w = window->last_size_pending ? window->pending.w : window->floating.w; int h = window->last_size_pending ? window->pending.h : window->floating.h; - w = window->min_w ? SDL_max(w, window->min_w) : w; - h = window->min_h ? SDL_max(h, window->min_h) : h; return SDL_SetWindowSize(window, w, h); } @@ -3388,8 +3391,6 @@ bool SDL_SetWindowMaximumSize(SDL_Window *window, int max_w, int max_h) // Ensure that window is not larger than maximal size int w = window->last_size_pending ? window->pending.w : window->floating.w; int h = window->last_size_pending ? window->pending.h : window->floating.h; - w = window->max_w ? SDL_min(w, window->max_w) : w; - h = window->max_h ? SDL_min(h, window->max_h) : h; return SDL_SetWindowSize(window, w, h); }