aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorIvan Molodetskikh <yalterz@gmail.com>2024-01-12 08:45:39 +0400
committerIvan Molodetskikh <yalterz@gmail.com>2024-01-12 08:45:39 +0400
commite46b614c2bf08dd7b09ca8a84321f2c066855aaa (patch)
tree4dfff0be5cb1a1473c2fe43a96f425add5c06ef3 /src
parent78aa08b100f87fbde3738c78db5a8942e7e9b991 (diff)
downloadniri-e46b614c2bf08dd7b09ca8a84321f2c066855aaa.tar.gz
niri-e46b614c2bf08dd7b09ca8a84321f2c066855aaa.tar.bz2
niri-e46b614c2bf08dd7b09ca8a84321f2c066855aaa.zip
Fix clicks activating windows through layer-shell surfaces
Diffstat (limited to 'src')
-rw-r--r--src/niri.rs13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/niri.rs b/src/niri.rs
index 3080fbe1..4aa61e83 100644
--- a/src/niri.rs
+++ b/src/niri.rs
@@ -1055,6 +1055,19 @@ impl Niri {
}
let (output, pos_within_output) = self.output_under(pos)?;
+
+ // Check if some layer-shell surface is on top.
+ let layers = layer_map_for_output(output);
+ let layer_under = |layer| layers.layer_under(layer, pos_within_output).is_some();
+ if layer_under(Layer::Overlay) {
+ return None;
+ }
+
+ let mon = self.layout.monitor_for_output(output).unwrap();
+ if !mon.render_above_top_layer() && layer_under(Layer::Top) {
+ return None;
+ }
+
let (window, _loc) = self.layout.window_under(output, pos_within_output)?;
Some(window)
}