From 5b8b505af5d5925ae9e617ee8f3c7a0f9c43409d Mon Sep 17 00:00:00 2001 From: Alexander Orzechowski Date: Thu, 23 Nov 2023 10:09:48 -0500 Subject: input: Query scene graph for relevant surface/node intersections --- sway/tree/root.c | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) (limited to 'sway/tree/root.c') diff --git a/sway/tree/root.c b/sway/tree/root.c index e4941566..fbdd9a96 100644 --- a/sway/tree/root.c +++ b/sway/tree/root.c @@ -9,6 +9,7 @@ #include "sway/input/seat.h" #include "sway/ipc-server.h" #include "sway/output.h" +#include "sway/scene_descriptor.h" #include "sway/tree/arrange.h" #include "sway/tree/container.h" #include "sway/tree/root.h" @@ -44,13 +45,19 @@ struct sway_root *root_create(struct wl_display *wl_display) { bool failed = false; root->staging = alloc_scene_tree(&root_scene->tree, &failed); - - root->layers.tiling = alloc_scene_tree(&root_scene->tree, &failed); - root->layers.floating = alloc_scene_tree(&root_scene->tree, &failed); - root->layers.fullscreen = alloc_scene_tree(&root_scene->tree, &failed); - root->layers.fullscreen_global = alloc_scene_tree(&root_scene->tree, &failed); - root->layers.seat = alloc_scene_tree(&root_scene->tree, &failed); - root->layers.session_lock = alloc_scene_tree(&root_scene->tree, &failed); + root->layer_tree = alloc_scene_tree(&root_scene->tree, &failed); + + root->layers.tiling = alloc_scene_tree(root->layer_tree, &failed); + root->layers.floating = alloc_scene_tree(root->layer_tree, &failed); + root->layers.fullscreen = alloc_scene_tree(root->layer_tree, &failed); + root->layers.fullscreen_global = alloc_scene_tree(root->layer_tree, &failed); + root->layers.seat = alloc_scene_tree(root->layer_tree, &failed); + root->layers.session_lock = alloc_scene_tree(root->layer_tree, &failed); + + if (!failed && !scene_descriptor_assign(&root->layers.seat->node, + SWAY_SCENE_DESC_NON_INTERACTIVE, (void *)1)) { + failed = true; + } if (failed) { wlr_scene_node_destroy(&root_scene->tree.node); -- cgit v1.2.3-54-g00ecf