mirror of
https://github.com/niri-wm/niri.git
synced 2026-06-24 02:01:18 +07:00
Extract center_preferring_top_left_in_area()
This commit is contained in:
@@ -16,7 +16,10 @@ use crate::niri_render_elements;
|
|||||||
use crate::render_helpers::renderer::NiriRenderer;
|
use crate::render_helpers::renderer::NiriRenderer;
|
||||||
use crate::render_helpers::RenderTarget;
|
use crate::render_helpers::RenderTarget;
|
||||||
use crate::utils::transaction::TransactionBlocker;
|
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;
|
use crate::window::ResolvedWindowRules;
|
||||||
|
|
||||||
/// Space for floating windows.
|
/// Space for floating windows.
|
||||||
@@ -386,13 +389,7 @@ impl<W: LayoutElement> FloatingSpace<W> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
let pos = pos.unwrap_or_else(|| {
|
let pos = pos.unwrap_or_else(|| {
|
||||||
let area_size = self.working_area.size.to_point();
|
center_preferring_top_left_in_area(self.working_area, tile.tile_size())
|
||||||
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
|
|
||||||
});
|
});
|
||||||
|
|
||||||
let data = Data::new(self.working_area, &tile, pos);
|
let data = Data::new(self.working_area, &tile, pos);
|
||||||
|
|||||||
@@ -284,6 +284,18 @@ pub fn clamp_preferring_top_left_in_area(
|
|||||||
rect.loc.y = f64::max(rect.loc.y, area.loc.y);
|
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")]
|
#[cfg(feature = "dbus")]
|
||||||
pub fn show_screenshot_notification(image_path: Option<PathBuf>) {
|
pub fn show_screenshot_notification(image_path: Option<PathBuf>) {
|
||||||
let mut notification = notify_rust::Notification::new();
|
let mut notification = notify_rust::Notification::new();
|
||||||
|
|||||||
Reference in New Issue
Block a user