container: Assign container scene descriptor to view aswell

We have to do with for fullscreen surfaces: Fullscreen surfaces
technically aren't part of their container anymore visually (so the
scene doesn't have it) but we want acknowledge the container it belongs
to for input reasons.

This will allow us to simplify node_at_coords later.
This commit is contained in:
Alexander Orzechowski 2024-08-26 15:46:04 -04:00
parent bdcffbd611
commit 3e7306489f
3 changed files with 4 additions and 8 deletions

View file

@ -82,14 +82,6 @@ struct sway_node *node_at_coords(
struct sway_container *con = scene_descriptor_try_get(current,
SWAY_SCENE_DESC_CONTAINER);
if (!con) {
struct sway_view *view = scene_descriptor_try_get(current,
SWAY_SCENE_DESC_VIEW);
if (view) {
con = view->container;
}
}
if (!con) {
struct sway_popup_desc *popup =
scene_descriptor_try_get(current, SWAY_SCENE_DESC_POPUP);

View file

@ -506,6 +506,8 @@ void container_destroy(struct sway_container *con) {
if (con->view && con->view->container == con) {
con->view->container = NULL;
scene_descriptor_destroy(&con->view->scene_tree->node, SWAY_SCENE_DESC_CONTAINER);
wlr_scene_node_destroy(&con->output_handler->node);
if (con->view->destroying) {
view_destroy(con->view);

View file

@ -723,6 +723,8 @@ void view_map(struct sway_view *view, struct wlr_surface *wlr_surface,
view->surface = wlr_surface;
view_populate_pid(view);
view->container = container_create(view);
scene_descriptor_assign(&view->scene_tree->node,
SWAY_SCENE_DESC_CONTAINER, view->container);
if (view->ctx == NULL) {
struct launcher_ctx *ctx = launcher_ctx_find_pid(view->pid);