Extract center_preferring_top_left_in_area()

This commit is contained in:
Ivan Molodetskikh
2024-12-15 10:30:32 +03:00
parent 9c205f77a2
commit 43a4bae010
2 changed files with 17 additions and 8 deletions
+5 -8
View File
@@ -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<W: LayoutElement> FloatingSpace<W> {
}
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);
+12
View File
@@ -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<f64, Logical>,
size: Size<f64, Logical>,
) -> Point<f64, Logical> {
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<PathBuf>) {
let mut notification = notify_rust::Notification::new();