aboutsummaryrefslogtreecommitdiff
path: root/src/layout/monitor.rs
diff options
context:
space:
mode:
authorIvan Molodetskikh <yalterz@gmail.com>2025-02-10 08:03:39 +0300
committerIvan Molodetskikh <yalterz@gmail.com>2025-02-10 07:29:33 -0800
commit1d883931b4ae7704128f02fd566486fb02351196 (patch)
tree575124aeaa26ee6a0ccff0c55a3facda9dfe9944 /src/layout/monitor.rs
parentb65fad09d8f5253a28ee7ad9d293583641fc2c36 (diff)
downloadniri-1d883931b4ae7704128f02fd566486fb02351196.tar.gz
niri-1d883931b4ae7704128f02fd566486fb02351196.tar.bz2
niri-1d883931b4ae7704128f02fd566486fb02351196.zip
Account for border in contents_under()
Fixes pointer clicks going through window borders to a layer surface below, also fixes window not getting activated in all cases from a border click.
Diffstat (limited to 'src/layout/monitor.rs')
-rw-r--r--src/layout/monitor.rs11
1 files changed, 4 insertions, 7 deletions
diff --git a/src/layout/monitor.rs b/src/layout/monitor.rs
index ebafad17..53bf5377 100644
--- a/src/layout/monitor.rs
+++ b/src/layout/monitor.rs
@@ -14,7 +14,7 @@ use super::tile::Tile;
use super::workspace::{
OutputId, Workspace, WorkspaceAddWindowTarget, WorkspaceId, WorkspaceRenderElement,
};
-use super::{ActivateWindow, LayoutElement, Options};
+use super::{ActivateWindow, HitType, LayoutElement, Options};
use crate::animation::{Animation, Clock};
use crate::input::swipe_tracker::SwipeTracker;
use crate::render_helpers::renderer::NiriRenderer;
@@ -1007,13 +1007,10 @@ impl<W: LayoutElement> Monitor<W> {
Some((ws, bounds.loc))
}
- pub fn window_under(
- &self,
- pos_within_output: Point<f64, Logical>,
- ) -> Option<(&W, Option<Point<f64, Logical>>)> {
+ pub fn window_under(&self, pos_within_output: Point<f64, Logical>) -> Option<(&W, HitType)> {
let (ws, offset) = self.workspace_under(pos_within_output)?;
- let (win, win_pos) = ws.window_under(pos_within_output - offset)?;
- Some((win, win_pos.map(|p| p + offset)))
+ let (win, hit) = ws.window_under(pos_within_output - offset)?;
+ Some((win, hit.offset_win_pos(offset)))
}
pub fn resize_edges_under(&self, pos_within_output: Point<f64, Logical>) -> Option<ResizeEdge> {