extended SanitizeFlags() to account for problematic resizing/mizing flag mixups

This commit is contained in:
unknown 2026-02-02 08:47:37 +01:00
parent 6f0dc1a9ca
commit eabce13fc5

View File

@ -2111,12 +2111,43 @@ static void UpdateWindowStyle(HWND hwnd, unsigned desiredFlags)
// Sanitize flags // Sanitize flags
static unsigned SanitizeFlags(int mode, unsigned flags) static unsigned SanitizeFlags(int mode, unsigned flags)
{ {
if ((flags & FLAG_WINDOW_MAXIMIZED) && (flags & FLAG_BORDERLESS_WINDOWED_MODE)) if (flags & FLAG_WINDOW_MAXIMIZED)
{
if (flags & FLAG_BORDERLESS_WINDOWED_MODE)
{ {
TRACELOG(LOG_WARNING, "WIN32: WINDOW: Borderless windows mode overriding maximized window flag"); TRACELOG(LOG_WARNING, "WIN32: WINDOW: Borderless windows mode overriding maximized window flag");
flags &= ~FLAG_WINDOW_MAXIMIZED; 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) if (mode == 1)
{ {
if ((flags & FLAG_MSAA_4X_HINT) && (!(CORE.Window.flags & FLAG_MSAA_4X_HINT))) if ((flags & FLAG_MSAA_4X_HINT) && (!(CORE.Window.flags & FLAG_MSAA_4X_HINT)))