From e409453fbd49a30e2059271b78567b430dc5800a Mon Sep 17 00:00:00 2001 From: Ivan Molodetskikh Date: Mon, 23 Dec 2024 08:52:45 +0300 Subject: floating: Update stored size only on removal --- src/layout/floating.rs | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) (limited to 'src/layout/floating.rs') diff --git a/src/layout/floating.rs b/src/layout/floating.rs index 8c1840d4..58ef8427 100644 --- a/src/layout/floating.rs +++ b/src/layout/floating.rs @@ -465,7 +465,7 @@ impl FloatingSpace { } fn remove_tile_by_idx(&mut self, idx: usize) -> RemovedTile { - let tile = self.tiles.remove(idx); + let mut tile = self.tiles.remove(idx); self.data.remove(idx); if self.tiles.is_empty() { @@ -482,6 +482,9 @@ impl FloatingSpace { } } + // Store the floating size. + tile.set_floating_window_size(tile.window().expected_size()); + let width = ColumnWidth::Fixed(tile.window_size().w); RemovedTile { tile, @@ -602,9 +605,6 @@ impl FloatingSpace { let win_size = Size::from((win_width, win_height)); win.request_size_once(win_size, animate); - - // Store it right away so pending resizes are not lost when moving across floating spaces. - tile.set_floating_window_size(win_size); } pub fn set_window_height(&mut self, id: Option<&W::Id>, change: SizeChange, animate: bool) { @@ -631,9 +631,6 @@ impl FloatingSpace { let win_size = Size::from((win_width, win_height)); win.request_size_once(win_size, animate); - - // Store it right away so pending resizes are not lost when moving across floating spaces. - tile.set_floating_window_size(win_size); } fn focus_directional( @@ -762,10 +759,6 @@ impl FloatingSpace { tile.update_window(); data.update(tile); - // Update the stored floating window size. - let floating_size = tile.window().expected_size(); - tile.set_floating_window_size(floating_size); - // When resizing by top/left edge, update the position accordingly. if let Some(resize) = resize { let mut offset = Point::from((0., 0.)); -- cgit