diff --git a/src/video/wayland/SDL_waylandwindow.c b/src/video/wayland/SDL_waylandwindow.c index a6ff2fb92..54502308c 100644 --- a/src/video/wayland/SDL_waylandwindow.c +++ b/src/video/wayland/SDL_waylandwindow.c @@ -850,6 +850,11 @@ Wayland_RestoreWindow(_THIS, SDL_Window * window) SDL_WindowData *wind = window->driverdata; const SDL_VideoData *viddata = (const SDL_VideoData *) _this->driverdata; + /* Set this flag now even if we never actually maximized, eventually + * ShowWindow will take care of it along with the other window state. + */ + window->flags &= ~SDL_WINDOW_MAXIMIZED; + /* Note that xdg-shell does NOT provide a way to unset minimize! */ if (viddata->shell.xdg) { if (wind->shell_surface.xdg.roleobj.toplevel == NULL) { @@ -894,6 +899,15 @@ Wayland_MaximizeWindow(_THIS, SDL_Window * window) SDL_WindowData *wind = window->driverdata; SDL_VideoData *viddata = (SDL_VideoData *) _this->driverdata; + if (!(window->flags & SDL_WINDOW_RESIZABLE)) { + return; + } + + /* Set this flag now even if we don't actually maximize yet, eventually + * ShowWindow will take care of it along with the other window state. + */ + window->flags |= SDL_WINDOW_MAXIMIZED; + if (viddata->shell.xdg) { if (wind->shell_surface.xdg.roleobj.toplevel == NULL) { return; /* Can't do anything yet, wait for ShowWindow */