Use view->scene_tree as toplevel for view + some legwork:

desktop.c move_to_front() calls wlr_scene_node_raise_to_top
desktop.c, ssd/include.h add LAB_SSD_{OSD, MENU, LAYER_SURFACE} enums
desktop.c desktop_surface_and_view_at() -> desktop_node_and_view_at()
cursor.c reenable cursor_rebase()
cursor.c reenable button click on layer surface
This commit is contained in:
Consolatis 2022-02-18 00:07:37 +01:00 committed by Johan Malm
parent 688abf7db1
commit 7ea733761b
7 changed files with 126 additions and 64 deletions

View file

@ -90,7 +90,11 @@ handle_destroy(struct wl_listener *listener, void *data)
wl_list_remove(&view->request_configure.link);
wl_list_remove(&view->request_maximize.link);
wl_list_remove(&view->request_fullscreen.link);
ssd_destroy(view);
if (view->scene_tree) {
ssd_destroy(view);
wlr_scene_node_destroy(&view->scene_tree->node);
view->scene_tree = NULL;
}
free(view);
}
@ -256,13 +260,17 @@ map(struct view *view)
}
view->surface = view->xwayland_surface->surface;
view->scene_tree = wlr_scene_tree_create(&view->server->view_tree->node);
view->scene_node = wlr_scene_subsurface_tree_create(
&view->server->view_tree->node, view->surface);
&view->scene_tree->node, view->surface);
if (!view->scene_node) {
wlr_scene_node_destroy(&view->scene_tree->node);
view->scene_tree = NULL;
wl_resource_post_no_memory(view->surface->resource);
/* TODO: should we free(view) here? */
return;
}
view->scene_node->data = view;
view->scene_tree->node.data = view;
view->ssd.enabled = want_deco(view);