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:
commit
5d02ffdfd2
2 changed files with 14 additions and 8 deletions
|
|
@ -81,12 +81,11 @@ impl Renderer<'_> {
|
||||||
let th = theme.sizes.title_height.get();
|
let th = theme.sizes.title_height.get();
|
||||||
let srgb_srgb = self.state.color_manager.srgb_srgb();
|
let srgb_srgb = self.state.color_manager.srgb_srgb();
|
||||||
let srgb = &srgb_srgb.linear;
|
let srgb = &srgb_srgb.linear;
|
||||||
if let Some(fs) = fullscreen {
|
if let Some(fs) = &fullscreen {
|
||||||
fs.node_render(self, x, y, None);
|
fs.node_render(self, x, y, None);
|
||||||
} else {
|
} else {
|
||||||
render_layer!(output.layers[0]);
|
render_layer!(output.layers[0]);
|
||||||
render_layer!(output.layers[1]);
|
render_layer!(output.layers[1]);
|
||||||
render_layer!(output.layers[2]);
|
|
||||||
let non_exclusive_rect = output.non_exclusive_rect_rel.get();
|
let non_exclusive_rect = output.non_exclusive_rect_rel.get();
|
||||||
let (x, y) = non_exclusive_rect.translate_inv(x, y);
|
let (x, y) = non_exclusive_rect.translate_inv(x, y);
|
||||||
{
|
{
|
||||||
|
|
@ -183,6 +182,9 @@ impl Renderer<'_> {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
render_stacked!(self.state.root.stacked);
|
render_stacked!(self.state.root.stacked);
|
||||||
|
if fullscreen.is_none() {
|
||||||
|
render_layer!(output.layers[2]);
|
||||||
|
}
|
||||||
render_layer!(output.layers[3]);
|
render_layer!(output.layers[3]);
|
||||||
render_stacked!(self.state.root.stacked_above_layers);
|
render_stacked!(self.state.root.stacked_above_layers);
|
||||||
if let Some(ws) = output.workspace.get()
|
if let Some(ws) = output.workspace.get()
|
||||||
|
|
|
||||||
|
|
@ -1499,8 +1499,16 @@ impl Node for OutputNode {
|
||||||
return res;
|
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() {
|
if res.accepts_input() {
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
@ -1511,10 +1519,6 @@ impl Node for OutputNode {
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
let mut fullscreen = None;
|
|
||||||
if let Some(ws) = self.workspace.get() {
|
|
||||||
fullscreen = ws.fullscreen.get();
|
|
||||||
}
|
|
||||||
if let Some(fs) = fullscreen {
|
if let Some(fs) = fullscreen {
|
||||||
tree.push(FoundNode {
|
tree.push(FoundNode {
|
||||||
node: fs.clone(),
|
node: fs.clone(),
|
||||||
|
|
@ -1561,7 +1565,7 @@ impl Node for OutputNode {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if search_layers {
|
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
|
FindTreeResult::AcceptsInput
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue