win32: Use STYLE_BORDERLESS when showing a pending fullscreen window

In addition to hiding the border on bordered windows that will immediately become fullscreen, The combination of flags used in STYLE_BORDERLESS_WINDOWED will still show the borders on borderless windows if the initial window size exactly matches the desktop, so STYLE_BORDERLESS must be used instead.
This commit is contained in:
Frank Praznik
2025-08-05 15:51:50 -04:00
parent aae7736ec6
commit 90a023007f

View File

@@ -1071,16 +1071,16 @@ void WIN_ShowWindow(SDL_VideoDevice *_this, SDL_Window *window)
WIN_SetWindowPosition(_this, window); WIN_SetWindowPosition(_this, window);
} }
// If the window isn't borderless and will be fullscreen, use the borderless style to hide the initial borders. /* If the window will immediately become fullscreen, use the borderless style to hide the initial borders.
*
* Note: The combination of flags used in STYLE_BORDERLESS_WINDOWED will still briefly show the borders if
* the initial window size exactly matches the desktop, so STYLE_BORDERLESS must be used instead.
*/
if (window->pending_flags & SDL_WINDOW_FULLSCREEN) { if (window->pending_flags & SDL_WINDOW_FULLSCREEN) {
if (!(window->flags & SDL_WINDOW_BORDERLESS)) { style = GetWindowLong(hwnd, GWL_STYLE);
window->flags |= SDL_WINDOW_BORDERLESS; style &= ~STYLE_MASK;
style = GetWindowLong(hwnd, GWL_STYLE); style |= STYLE_BORDERLESS;
style &= ~STYLE_MASK; SetWindowLong(hwnd, GWL_STYLE, style);
style |= GetWindowStyle(window);
SetWindowLong(hwnd, GWL_STYLE, style);
window->flags &= ~SDL_WINDOW_BORDERLESS;
}
} }
style = GetWindowLong(hwnd, GWL_EXSTYLE); style = GetWindowLong(hwnd, GWL_EXSTYLE);
if (style & WS_EX_NOACTIVATE) { if (style & WS_EX_NOACTIVATE) {