Wayland: Fix maximized state lost while hidden

If a window was created as maximized, or created as hidden and then
iconified or maximized before first being shown, that state was lost and
the window was shown as restored.

(cherry picked from commit 77819c0c54)
This commit is contained in:
Camilla Löwy 2022-06-15 18:20:16 +02:00
parent e79d6fe40a
commit a0259b9426
2 changed files with 10 additions and 2 deletions

View File

@ -176,6 +176,8 @@ information on what to include when reporting a bug.
scale changed
- [Wayland] Bugfix: `glfwSetWindowAspectRatio` reported an error instead of
applying the specified ratio
- [Wayland] Bugfix: `GLFW_MAXIMIZED` window hint had no effect
- [Wayland] Bugfix: `glfwRestoreWindow` had no effect before first show
## Contact

View File

@ -745,6 +745,8 @@ static GLFWbool createNativeSurface(_GLFWwindow* window,
window->wl.scale = 1;
window->wl.title = _glfw_strdup(wndconfig->title);
window->wl.maximized = wndconfig->maximized;
window->wl.transparent = fbconfig->transparent;
if (!window->wl.transparent)
setOpaqueRegion(window);
@ -2068,10 +2070,12 @@ void _glfwPlatformRestoreWindow(_GLFWwindow* window)
{
// We assume we are not minimized and acto only on maximization
if (window->wl.xdg.toplevel)
if (window->wl.maximized)
{
if (window->wl.maximized)
if (window->wl.xdg.toplevel)
xdg_toplevel_unset_maximized(window->wl.xdg.toplevel);
else
window->wl.maximized = GLFW_FALSE;
}
}
}
@ -2080,6 +2084,8 @@ void _glfwPlatformMaximizeWindow(_GLFWwindow* window)
{
if (window->wl.xdg.toplevel)
xdg_toplevel_set_maximized(window->wl.xdg.toplevel);
else
window->wl.maximized = GLFW_TRUE;
}
void _glfwPlatformShowWindow(_GLFWwindow* window)