aboutsummaryrefslogtreecommitdiff
path: root/src/layout/workspace.rs
diff options
context:
space:
mode:
authorIvan Molodetskikh <yalterz@gmail.com>2024-12-30 13:22:02 +0300
committerIvan Molodetskikh <yalterz@gmail.com>2024-12-30 20:12:37 +0300
commit793e92e9d69f3640754d9ece40ddc7723cf49292 (patch)
tree3137096aa90fb1685becf1e78c0b97fbad10f4d8 /src/layout/workspace.rs
parenta7c57f4fafabed609ef75b92715beb4e7335d823 (diff)
downloadniri-793e92e9d69f3640754d9ece40ddc7723cf49292.tar.gz
niri-793e92e9d69f3640754d9ece40ddc7723cf49292.tar.bz2
niri-793e92e9d69f3640754d9ece40ddc7723cf49292.zip
Add default-floating-position relative-to property
Diffstat (limited to 'src/layout/workspace.rs')
-rw-r--r--src/layout/workspace.rs13
1 files changed, 3 insertions, 10 deletions
diff --git a/src/layout/workspace.rs b/src/layout/workspace.rs
index 113b6df0..25a03987 100644
--- a/src/layout/workspace.rs
+++ b/src/layout/workspace.rs
@@ -1143,9 +1143,8 @@ impl<W: LayoutElement> Workspace<W> {
removed.tile.stop_move_animations();
// Come up with a default floating position close to the tile position.
- if removed.tile.floating_pos.is_none()
- && removed.tile.default_floating_logical_pos().is_none()
- {
+ let stored_or_default = self.floating.stored_or_default_tile_pos(&removed.tile);
+ if stored_or_default.is_none() {
let offset = if self.options.center_focused_column == CenterFocusedColumn::Always {
Point::from((0., 0.))
} else {
@@ -1236,13 +1235,7 @@ impl<W: LayoutElement> Workspace<W> {
};
let working_area_loc = self.floating.working_area().loc;
- let pos = tile
- .floating_pos
- .map(|pos| self.floating.scale_by_working_area(pos));
- let pos = pos.or_else(|| {
- tile.default_floating_logical_pos()
- .map(|pos| pos + working_area_loc)
- });
+ let pos = self.floating.stored_or_default_tile_pos(tile);
// If there's no stored floating position, we can only set both components at once, not
// adjust.