Wayland: Fix toggling of server-side decorations

This is a temporary local fix to have updates to GLFW_DECORATED mostly
work as intended.  The whole decoration state machine needs to be
restructured, but not by this commit.

(cherry picked from commit 229d628ec4)
This commit is contained in:
Camilla Löwy 2022-06-13 19:37:34 +02:00
parent e04a7d152a
commit 8b26801a30
2 changed files with 19 additions and 3 deletions

View File

@ -165,6 +165,8 @@ information on what to include when reporting a bug.
- [Wayland] Bugfix: Manual resizing with fallback decorations behaved erratically - [Wayland] Bugfix: Manual resizing with fallback decorations behaved erratically
(#1991,#2115,#2127) (#1991,#2115,#2127)
- [Wayland] Bugfix: Size limits included frame size for fallback decorations - [Wayland] Bugfix: Size limits included frame size for fallback decorations
- [Wayland] Bugfix: Updating `GLFW_DECORATED` had no effect on server-side
decorations
## Contact ## Contact

View File

@ -2160,12 +2160,26 @@ void _glfwPlatformSetWindowResizable(_GLFWwindow* window, GLFWbool enabled)
} }
void _glfwPlatformSetWindowDecorated(_GLFWwindow* window, GLFWbool enabled) void _glfwPlatformSetWindowDecorated(_GLFWwindow* window, GLFWbool enabled)
{
if (window->wl.xdg.decoration)
{
uint32_t mode;
if (enabled)
mode = ZXDG_TOPLEVEL_DECORATION_V1_MODE_SERVER_SIDE;
else
mode = ZXDG_TOPLEVEL_DECORATION_V1_MODE_CLIENT_SIDE;
zxdg_toplevel_decoration_v1_set_mode(window->wl.xdg.decoration, mode);
}
else
{ {
if (enabled) if (enabled)
createDecorations(window); createDecorations(window);
else else
destroyDecorations(window); destroyDecorations(window);
} }
}
void _glfwPlatformSetWindowFloating(_GLFWwindow* window, GLFWbool enabled) void _glfwPlatformSetWindowFloating(_GLFWwindow* window, GLFWbool enabled)
{ {