diff options
| author | Ivan Molodetskikh <yalterz@gmail.com> | 2024-01-12 08:45:39 +0400 |
|---|---|---|
| committer | Ivan Molodetskikh <yalterz@gmail.com> | 2024-01-12 08:45:39 +0400 |
| commit | e46b614c2bf08dd7b09ca8a84321f2c066855aaa (patch) | |
| tree | 4dfff0be5cb1a1473c2fe43a96f425add5c06ef3 /src/niri.rs | |
| parent | 78aa08b100f87fbde3738c78db5a8942e7e9b991 (diff) | |
| download | niri-e46b614c2bf08dd7b09ca8a84321f2c066855aaa.tar.gz niri-e46b614c2bf08dd7b09ca8a84321f2c066855aaa.tar.bz2 niri-e46b614c2bf08dd7b09ca8a84321f2c066855aaa.zip | |
Fix clicks activating windows through layer-shell surfaces
Diffstat (limited to 'src/niri.rs')
| -rw-r--r-- | src/niri.rs | 13 |
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) } |
