unmanaged->ly = xsurface->y;
}
-static struct view *
-parent_view(struct server *server, struct wlr_xwayland_surface *surface)
-{
- struct wlr_xwayland_surface *s = surface;
- while (s->parent) {
- s = s->parent;
- }
- struct view *view;
- wl_list_for_each(view, &server->views, link) {
- if (view->xwayland_surface == s) {
- return view;
- }
- }
- return NULL;
-}
-
void
unmanaged_handle_map(struct wl_listener *listener, void *data)
{
seat_focus_surface(&unmanaged->server->seat, xsurface->surface);
}
- int lx = unmanaged->lx;
- int ly = unmanaged->ly;
- struct wlr_scene_node *parent, *node;
- struct view *view = parent_view(unmanaged->server, xsurface);
- if (!view || !view->scene_node) {
- parent = &unmanaged->server->unmanaged_tree->node;
- } else {
- lx -= view->x;
- ly -= view->y;
- parent = &view->scene_tree->node;
- }
/* node will be destroyed automatically once surface is destroyed */
- node = &wlr_scene_surface_create(parent, xsurface->surface)->buffer->node;
- wlr_scene_node_set_position(node, lx, ly);
+ struct wlr_scene_node *node = &wlr_scene_surface_create(
+ &unmanaged->server->unmanaged_tree->node,
+ xsurface->surface)->buffer->node;
+ wlr_scene_node_set_position(node, unmanaged->lx, unmanaged->ly);
}
static void