From eabce13fc5c44a7f7c2b17ceab63d26211c37128 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 2 Feb 2026 08:47:37 +0100 Subject: [PATCH] extended SanitizeFlags() to account for problematic resizing/mizing flag mixups --- src/platforms/rcore_desktop_win32.c | 37 ++++++++++++++++++++++++++--- 1 file changed, 34 insertions(+), 3 deletions(-) diff --git a/src/platforms/rcore_desktop_win32.c b/src/platforms/rcore_desktop_win32.c index 38d3eeee4..aa503da46 100644 --- a/src/platforms/rcore_desktop_win32.c +++ b/src/platforms/rcore_desktop_win32.c @@ -2111,10 +2111,41 @@ static void UpdateWindowStyle(HWND hwnd, unsigned desiredFlags) // Sanitize flags static unsigned SanitizeFlags(int mode, unsigned flags) { - if ((flags & FLAG_WINDOW_MAXIMIZED) && (flags & FLAG_BORDERLESS_WINDOWED_MODE)) + if (flags & FLAG_WINDOW_MAXIMIZED) { - TRACELOG(LOG_WARNING, "WIN32: WINDOW: Borderless windows mode overriding maximized window flag"); - flags &= ~FLAG_WINDOW_MAXIMIZED; + if (flags & FLAG_BORDERLESS_WINDOWED_MODE) + { + TRACELOG(LOG_WARNING, "WIN32: WINDOW: Borderless windows mode overriding maximized window flag"); + flags &= ~FLAG_WINDOW_MAXIMIZED; + } + + if (~flags & FLAG_WINDOW_RESIZABLE) + { + if (!(CORE.Window.flags & FLAG_WINDOW_MAXIMIZED)) + { + TRACELOG(LOG_WARNING, "WIN32: WINDOW: Cannot maximize a non-resizable window"); + flags &= ~FLAG_WINDOW_MAXIMIZED; + } + else if (CORE.Window.flags & FLAG_WINDOW_RESIZABLE) + { + TRACELOG(LOG_WARNING, "WIN32: WINDOW: Cannot set window as non-resizable when maximized"); + flags |= FLAG_WINDOW_RESIZABLE; + } + } + else if (!(CORE.Window.flags & FLAG_WINDOW_MAXIMIZED)) + { + if (CORE.Window.flags & FLAG_WINDOW_MINIMIZED) + { + // Window needs to be unminimized before it can be maximized since minimizing takes precedence + flags &= ~FLAG_WINDOW_MINIMIZED; + } + else if ((flags & FLAG_WINDOW_MINIMIZED) && !(CORE.Window.flags & FLAG_WINDOW_MINIMIZED)) + { + TRACELOG(LOG_WARNING, "WIN32: WINDOW: Cannot minimize and maximize a window in the same frame"); + flags &= ~FLAG_WINDOW_MINIMIZED; + flags &= ~FLAG_WINDOW_MAXIMIZED; + } + } } if (mode == 1)