From 7cb9bd667f44341c6b9f785ae141c768e97ca106 Mon Sep 17 00:00:00 2001 From: Julian Orth Date: Mon, 6 May 2024 19:52:42 +0200 Subject: [PATCH] layer-shell: fix input routing to bottom and background layers --- src/tree/output.rs | 22 +++++++++++++++------- src/tree/workspace.rs | 4 ++-- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/src/tree/output.rs b/src/tree/output.rs index 6717cc7c..21df694c 100644 --- a/src/tree/output.rs +++ b/src/tree/output.rs @@ -843,21 +843,29 @@ impl Node for OutputNode { }); fs.tl_as_node().node_find_tree_at(x, y, tree, usecase) } else { - if y >= bar_height { - y -= bar_height; - let len = tree.len(); + let mut search_layers = true; + if y < bar_height { + search_layers = false; + } else { if let Some(ws) = self.workspace.get() { + let y = y - bar_height; + let len = tree.len(); tree.push(FoundNode { node: ws.clone(), x, y, }); - ws.node_find_tree_at(x, y, tree, usecase); - } - if tree.len() == len { - self.find_layer_surface_at(x, y, &[BOTTOM, BACKGROUND], tree, usecase); + match ws.node_find_tree_at(x, y, tree, usecase) { + FindTreeResult::AcceptsInput => search_layers = false, + FindTreeResult::Other => { + tree.truncate(len); + } + } } } + if search_layers { + self.find_layer_surface_at(x, y, &[BOTTOM, BACKGROUND], tree, usecase); + } FindTreeResult::AcceptsInput } } diff --git a/src/tree/workspace.rs b/src/tree/workspace.rs index f4f91d69..ed2835a5 100644 --- a/src/tree/workspace.rs +++ b/src/tree/workspace.rs @@ -264,9 +264,9 @@ impl Node for WorkspaceNode { x, y, }); - n.node_find_tree_at(x, y, tree, usecase); + return n.node_find_tree_at(x, y, tree, usecase); } - FindTreeResult::AcceptsInput + FindTreeResult::Other } fn node_render(&self, renderer: &mut Renderer, x: i32, y: i32, _bounds: Option<&Rect>) {