mirror of
				https://github.com/glfw/glfw.git
				synced 2025-10-31 20:52:38 +00:00 
			
		
		
		
	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