From f4f2a1f6deeffa5c13d871c534ac99ea398e9175 Mon Sep 17 00:00:00 2001 From: Ivan Molodetskikh Date: Sun, 22 Dec 2024 09:28:57 +0300 Subject: floating: Remember and restore window size --- src/layout/tile.rs | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'src/layout/tile.rs') diff --git a/src/layout/tile.rs b/src/layout/tile.rs index 1b9aac2d..13adbd50 100644 --- a/src/layout/tile.rs +++ b/src/layout/tile.rs @@ -54,6 +54,12 @@ pub struct Tile { /// Whether the tile should float upon unfullscreening. unfullscreen_to_floating: bool, + /// The size that the window should assume when going floating. + /// + /// This is generally the last size the window had when it was floating. It can be unknown if + /// the window starts out in the tiling layout or fullscreen. + floating_window_size: Option>, + /// The animation upon opening a window. open_animation: Option, @@ -128,6 +134,7 @@ impl Tile { fullscreen_backdrop: SolidColorBuffer::new((0., 0.), [0., 0., 0., 1.]), fullscreen_size: Default::default(), unfullscreen_to_floating: false, + floating_window_size: None, open_animation: None, resize_animation: None, move_x_animation: None, @@ -935,6 +942,14 @@ impl Tile { self.unfullscreen_to_floating = value; } + pub fn floating_window_size(&self) -> Option> { + self.floating_window_size + } + + pub fn set_floating_window_size(&mut self, floating_window_size: Size) { + self.floating_window_size = Some(floating_window_size); + } + #[cfg(test)] pub fn verify_invariants(&self) { use approx::assert_abs_diff_eq; -- cgit