aboutsummaryrefslogtreecommitdiff
path: root/src/layout/floating.rs
diff options
context:
space:
mode:
authorIvan Molodetskikh <yalterz@gmail.com>2024-12-29 10:39:21 +0300
committerIvan Molodetskikh <yalterz@gmail.com>2024-12-30 20:12:37 +0300
commit3c2e1554c6f1fe0d7d96094aa93f72f4ced613e5 (patch)
tree9b3c883f1f3256e49250bb5c26716ebcf1a38bba /src/layout/floating.rs
parent744955ba69176a0e2937f18958908274583223d4 (diff)
downloadniri-3c2e1554c6f1fe0d7d96094aa93f72f4ced613e5.tar.gz
niri-3c2e1554c6f1fe0d7d96094aa93f72f4ced613e5.tar.bz2
niri-3c2e1554c6f1fe0d7d96094aa93f72f4ced613e5.zip
Add default-floating-position window rule
Diffstat (limited to 'src/layout/floating.rs')
-rw-r--r--src/layout/floating.rs14
1 files changed, 8 insertions, 6 deletions
diff --git a/src/layout/floating.rs b/src/layout/floating.rs
index af208615..d40d1b17 100644
--- a/src/layout/floating.rs
+++ b/src/layout/floating.rs
@@ -415,12 +415,14 @@ impl<W: LayoutElement> FloatingSpace<W> {
}
}
- let pos = tile
- .floating_pos
- .map(|pos| self.scale_by_working_area(pos))
- .unwrap_or_else(|| {
- center_preferring_top_left_in_area(self.working_area, tile.tile_size())
- });
+ let pos = tile.floating_pos.map(|pos| self.scale_by_working_area(pos));
+ let pos = pos.or_else(|| {
+ tile.default_floating_logical_pos()
+ .map(|pos| pos + self.working_area.loc)
+ });
+ let pos = pos.unwrap_or_else(|| {
+ center_preferring_top_left_in_area(self.working_area, tile.tile_size())
+ });
let data = Data::new(self.working_area, &tile, pos);
self.data.insert(idx, data);