diff --git a/src/renderer.rs b/src/renderer.rs index 0c698b23..d2161089 100644 --- a/src/renderer.rs +++ b/src/renderer.rs @@ -81,12 +81,11 @@ impl Renderer<'_> { let th = theme.sizes.title_height.get(); let srgb_srgb = self.state.color_manager.srgb_srgb(); let srgb = &srgb_srgb.linear; - if let Some(fs) = fullscreen { + if let Some(fs) = &fullscreen { fs.node_render(self, x, y, None); } else { render_layer!(output.layers[0]); render_layer!(output.layers[1]); - render_layer!(output.layers[2]); let non_exclusive_rect = output.non_exclusive_rect_rel.get(); let (x, y) = non_exclusive_rect.translate_inv(x, y); { @@ -183,6 +182,9 @@ impl Renderer<'_> { }; } render_stacked!(self.state.root.stacked); + if fullscreen.is_none() { + render_layer!(output.layers[2]); + } render_layer!(output.layers[3]); render_stacked!(self.state.root.stacked_above_layers); if let Some(ws) = output.workspace.get() diff --git a/src/tree/output.rs b/src/tree/output.rs index 7aaba7a4..b3cce86c 100644 --- a/src/tree/output.rs +++ b/src/tree/output.rs @@ -1499,8 +1499,16 @@ impl Node for OutputNode { return res; } } + let mut fullscreen = None; + if let Some(ws) = self.workspace.get() { + fullscreen = ws.fullscreen.get(); + } { - let res = self.find_layer_surface_at(x, y, &[OVERLAY], tree, usecase); + let mut layers = &[OVERLAY, TOP][..]; + if fullscreen.is_some() { + layers = &[OVERLAY]; + } + let res = self.find_layer_surface_at(x, y, layers, tree, usecase); if res.accepts_input() { return res; } @@ -1511,10 +1519,6 @@ impl Node for OutputNode { return res; } } - let mut fullscreen = None; - if let Some(ws) = self.workspace.get() { - fullscreen = ws.fullscreen.get(); - } if let Some(fs) = fullscreen { tree.push(FoundNode { node: fs.clone(), @@ -1561,7 +1565,7 @@ impl Node for OutputNode { } } if search_layers { - self.find_layer_surface_at(x, y, &[TOP, BOTTOM, BACKGROUND], tree, usecase); + self.find_layer_surface_at(x, y, &[BOTTOM, BACKGROUND], tree, usecase); } FindTreeResult::AcceptsInput }