aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/layout/floating.rs13
-rw-r--r--src/utils/mod.rs12
2 files changed, 17 insertions, 8 deletions
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<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);
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<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();