From 8d55fbe4d206caf94e525ede2fd1c855d6aeeb99 Mon Sep 17 00:00:00 2001
From: Frank Praznik <[EMAIL REDACTED]>
Date: Sun, 15 Mar 2026 16:03:52 -0400
Subject: [PATCH] wayland: Fix the state check when resizing a hidden window
The floating state is only set after the first configuration event arrives, so size changes before the window was initially shown could be dropped. Use the flags instead.
---
src/video/wayland/SDL_waylandwindow.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/src/video/wayland/SDL_waylandwindow.c b/src/video/wayland/SDL_waylandwindow.c
index e45728802b2d4..d2ad64974d738 100644
--- a/src/video/wayland/SDL_waylandwindow.c
+++ b/src/video/wayland/SDL_waylandwindow.c
@@ -3084,10 +3084,12 @@ void Wayland_SetWindowSize(SDL_VideoDevice *_this, SDL_Window *window)
*/
FlushPendingEvents(window);
+ const bool resizable_state = !(window->flags & (SDL_WINDOW_MAXIMIZED || SDL_WINDOW_FULLSCREEN));
+
/* Maximized and fullscreen windows don't get resized, and the new size is ignored
* if this is just to recalculate the min/max or aspect limits on a tiled window.
*/
- if (wind->floating || (window->tiled && !wind->limits_changed) ||
+ if (resizable_state || (window->tiled && !wind->limits_changed) ||
wind->shell_surface_type == WAYLAND_SHELL_SURFACE_TYPE_CUSTOM) {
if (!wind->scale_to_display) {
wind->requested.logical_width = window->pending.w;