From 55e2ea0c3bb0bccae351aa6e82987a0b77da54ae Mon Sep 17 00:00:00 2001 From: Ivan Molodetskikh Date: Mon, 10 Feb 2025 08:47:44 +0300 Subject: layout: Extract tile.hit(), HitType::hit_tile() --- src/layout/tile.rs | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) (limited to 'src/layout/tile.rs') diff --git a/src/layout/tile.rs b/src/layout/tile.rs index ff099bab..a08f058f 100644 --- a/src/layout/tile.rs +++ b/src/layout/tile.rs @@ -10,8 +10,8 @@ use super::focus_ring::{FocusRing, FocusRingRenderElement}; use super::opening_window::{OpenAnimation, OpeningWindowRenderElement}; use super::shadow::Shadow; use super::{ - LayoutElement, LayoutElementRenderElement, LayoutElementRenderSnapshot, Options, SizeFrac, - RESIZE_ANIMATION_THRESHOLD, + HitType, LayoutElement, LayoutElementRenderElement, LayoutElementRenderSnapshot, Options, + SizeFrac, RESIZE_ANIMATION_THRESHOLD, }; use crate::animation::{Animation, Clock}; use crate::niri_render_elements; @@ -606,16 +606,27 @@ impl Tile { loc } - pub fn is_in_input_region(&self, mut point: Point) -> bool { + fn is_in_input_region(&self, mut point: Point) -> bool { point -= self.window_loc().to_f64(); self.window.is_in_input_region(point) } - pub fn is_in_activation_region(&self, point: Point) -> bool { + fn is_in_activation_region(&self, point: Point) -> bool { let activation_region = Rectangle::from_size(self.tile_size()); activation_region.contains(point) } + pub fn hit(&self, point: Point) -> Option { + if self.is_in_input_region(point) { + let win_pos = self.buf_loc(); + Some(HitType::Input { win_pos }) + } else if self.is_in_activation_region(point) { + Some(HitType::Activate) + } else { + None + } + } + pub fn request_tile_size( &mut self, mut size: Size, -- cgit