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); + } + } } } }