mirror of
https://github.com/swaywm/sway.git
synced 2026-04-21 06:46:22 -04:00
xdg_shell: don't overwrite for_window directive geometry
When a floating container is resized (e.g., via for_window rules or internal transactions), a race condition occurs if the client commits a buffer with its old geometry before processing the new configure event. Sway currently accepts these stale dimensions and calls view_update_size, causing the container to snap back to the client's previous size and overwriting the compositor's intended geometry.
This commit is contained in:
parent
9a5f09c867
commit
6ca9eea081
1 changed files with 2 additions and 1 deletions
|
|
@ -321,7 +321,8 @@ static void handle_commit(struct wl_listener *listener, void *data) {
|
|||
// containers, we resize the container to match. For tiling containers,
|
||||
// we only recenter the surface.
|
||||
memcpy(&view->geometry, new_geo, sizeof(struct wlr_box));
|
||||
if (container_is_floating(view->container)) {
|
||||
bool pending_configures = xdg_surface->current.configure_serial < xdg_surface->scheduled_serial;
|
||||
if (container_is_floating(view->container) && !view->container->node.instruction && !pending_configures) {
|
||||
view_update_size(view);
|
||||
// Only set the toplevel size the current container actually has a size.
|
||||
if (view->container->current.width) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue