Wayland: Fix erratic fallback decoration behavior
The handler for xdg_toplevel::configure treated the provided size as the
content area size when instead it is the size of the bounding rectangle
of the wl_surface and all its subsurfaces.
This caused the fallback decorations to try positioning themselves
outside themselves, causing feedback loops during interactive resizing.
Fixes #1991
Fixes #2115
Closes #2127
Related to #1914
(cherry picked from commit 0f5b095042
)
This commit is contained in:
parent
4ba1208239
commit
cdbcb8c5a7
@ -23,6 +23,7 @@ video tutorials.
|
||||
- Waris Boonyasiriwat
|
||||
- Kyle Brenneman
|
||||
- Rok Breulj
|
||||
- TheBrokenRail
|
||||
- Kai Burjack
|
||||
- Martin Capitanio
|
||||
- Nicolas Caramelli
|
||||
@ -143,6 +144,7 @@ video tutorials.
|
||||
- Jon Morton
|
||||
- Pierre Moulon
|
||||
- Martins Mozeiko
|
||||
- James Murphy
|
||||
- Julian Møller
|
||||
- ndogxj
|
||||
- Kristian Nielsen
|
||||
|
@ -162,6 +162,8 @@ information on what to include when reporting a bug.
|
||||
- [Wayland] Bugfix: A window content scale event would be emitted every time
|
||||
the window resized
|
||||
- [Wayland] Bugfix: If `glfwInit` failed it would close stdin
|
||||
- [Wayland] Bugfix: Manual resizing with fallback decorations behaved erratically
|
||||
(#1991,#2115,#2127)
|
||||
|
||||
|
||||
## Contact
|
||||
|
@ -537,10 +537,19 @@ static void xdgToplevelHandleConfigure(void* userData,
|
||||
window->wl.fullscreen = fullscreen;
|
||||
|
||||
if (width && height)
|
||||
{
|
||||
if (window->wl.decorations.top.surface)
|
||||
{
|
||||
window->wl.pending.width = _glfw_max(0, width - GLFW_BORDER_SIZE * 2);
|
||||
window->wl.pending.height =
|
||||
_glfw_max(0, height - GLFW_BORDER_SIZE - GLFW_CAPTION_HEIGHT);
|
||||
}
|
||||
else
|
||||
{
|
||||
window->wl.pending.width = width;
|
||||
window->wl.pending.height = height;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
window->wl.pending.width = window->wl.width;
|
||||
|
Loading…
Reference in New Issue
Block a user