1
0
Fork 0
forked from wry/wry

Merge pull request #507 from mahkoh/jorth/layer-shell-fix

layer-shell: don't render top layer if there is a fullscreen window
This commit is contained in:
mahkoh 2025-07-17 09:22:31 +02:00 committed by GitHub
commit 5d02ffdfd2
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 14 additions and 8 deletions

View file

@ -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()

View file

@ -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
}