From 4440476a35e00d7b4e468e5049a8b4c53c33c7bc Mon Sep 17 00:00:00 2001 From: Levi Neely <141506390+lneely@users.noreply.github.com> Date: Wed, 13 May 2026 21:29:46 +0200 Subject: [PATCH] Fix dialog position: update children when reparenting frame_buf When fake_leader is reparented into the frame, its children (the WINGs view frame_buf) weren't being repositioned. Now cascades position updates to children of the reparented frame_buf. --- src/backend/wayland/wl_backend.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/backend/wayland/wl_backend.c b/src/backend/wayland/wl_backend.c index 5574925..0e84461 100644 --- a/src/backend/wayland/wl_backend.c +++ b/src/backend/wayland/wl_backend.c @@ -5808,6 +5808,17 @@ wl_client_reparent(WNativeWindow client, WNativeWindow new_parent, int x, int y) fb->y = parent_fb->y + y; if (fb->scene_buf) wlr_scene_node_set_position(&fb->scene_buf->node, fb->x, fb->y); + /* Also update children of the reparented frame_buf */ + struct wl_frame_buf *child; + wl_list_for_each(child, &wl_state.frame_list, link) { + if (child->parent_id == client) { + child->x = fb->x + child->rel_x; + child->y = fb->y + child->rel_y; + if (child->scene_buf) + wlr_scene_node_set_position(&child->scene_buf->node, + child->x, child->y); + } + } } } }