From 43a4bae010b814089fe96b9c70c30bdf04b697a4 Mon Sep 17 00:00:00 2001 From: Ivan Molodetskikh Date: Sun, 15 Dec 2024 10:30:32 +0300 Subject: Extract center_preferring_top_left_in_area() --- src/layout/floating.rs | 13 +++++-------- src/utils/mod.rs | 12 ++++++++++++ 2 files changed, 17 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/layout/floating.rs b/src/layout/floating.rs index c18cb646..417c7518 100644 --- a/src/layout/floating.rs +++ b/src/layout/floating.rs @@ -16,7 +16,10 @@ use crate::niri_render_elements; use crate::render_helpers::renderer::NiriRenderer; use crate::render_helpers::RenderTarget; use crate::utils::transaction::TransactionBlocker; -use crate::utils::{clamp_preferring_top_left_in_area, ensure_min_max_size, ResizeEdge}; +use crate::utils::{ + center_preferring_top_left_in_area, clamp_preferring_top_left_in_area, ensure_min_max_size, + ResizeEdge, +}; use crate::window::ResolvedWindowRules; /// Space for floating windows. @@ -386,13 +389,7 @@ impl FloatingSpace { } let pos = pos.unwrap_or_else(|| { - let area_size = self.working_area.size.to_point(); - let tile_size = tile.tile_size().to_point(); - let mut offset = (area_size - tile_size).downscale(2.); - // Prefer top-left corner if larger than the working area. - offset.x = f64::max(offset.x, 0.); - offset.y = f64::max(offset.y, 0.); - self.working_area.loc + offset + center_preferring_top_left_in_area(self.working_area, tile.tile_size()) }); let data = Data::new(self.working_area, &tile, pos); diff --git a/src/utils/mod.rs b/src/utils/mod.rs index e7dff735..7ab89a72 100644 --- a/src/utils/mod.rs +++ b/src/utils/mod.rs @@ -284,6 +284,18 @@ pub fn clamp_preferring_top_left_in_area( rect.loc.y = f64::max(rect.loc.y, area.loc.y); } +pub fn center_preferring_top_left_in_area( + area: Rectangle, + size: Size, +) -> Point { + let area_size = area.size.to_point(); + let size = size.to_point(); + let mut offset = (area_size - size).downscale(2.); + offset.x = f64::max(offset.x, 0.); + offset.y = f64::max(offset.y, 0.); + area.loc + offset +} + #[cfg(feature = "dbus")] pub fn show_screenshot_notification(image_path: Option) { let mut notification = notify_rust::Notification::new(); -- cgit