diff options
| author | Rémi Labeyrie <calops@tocards.net> | 2024-12-21 15:34:14 +0100 |
|---|---|---|
| committer | Ivan Molodetskikh <yalterz@gmail.com> | 2024-12-22 15:13:17 +0300 |
| commit | b1c40a9079b37aeac55a924e1826de77fd989645 (patch) | |
| tree | 1e38fdb66e57debe105b3de68301a2add3a97b4d | |
| parent | b014c267ae199f7022bf691333e64ad6d05907f1 (diff) | |
| download | niri-b1c40a9079b37aeac55a924e1826de77fd989645.tar.gz niri-b1c40a9079b37aeac55a924e1826de77fd989645.tar.bz2 niri-b1c40a9079b37aeac55a924e1826de77fd989645.zip | |
fix: check for layer surface under cursor when clicking
| -rw-r--r-- | src/niri.rs | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/src/niri.rs b/src/niri.rs index 336446b3..03b4b4e4 100644 --- a/src/niri.rs +++ b/src/niri.rs @@ -2420,7 +2420,19 @@ impl Niri { // 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(); + let layer_under = |layer| { + layers + .layer_under(layer, pos_within_output) + .and_then(|layer| { + let layer_pos_within_output = + layers.layer_geometry(layer).unwrap().loc.to_f64(); + layer.surface_under( + pos_within_output - layer_pos_within_output, + WindowSurfaceType::ALL, + ) + }) + .is_some() + }; if layer_under(Layer::Overlay) { return None; } |
