From 34bcc6ea9369fda19f4fb776e59f37e5dafc0051 Mon Sep 17 00:00:00 2001 From: Ivan Molodetskikh Date: Sat, 11 May 2024 08:26:49 +0400 Subject: Split get resize data from update --- src/layout/mod.rs | 7 +++++-- src/layout/workspace.rs | 10 ++++++---- 2 files changed, 11 insertions(+), 6 deletions(-) (limited to 'src/layout') diff --git a/src/layout/mod.rs b/src/layout/mod.rs index ad241d94..22aaa7fa 100644 --- a/src/layout/mod.rs +++ b/src/layout/mod.rs @@ -176,7 +176,8 @@ pub trait LayoutElement { fn set_interactive_resize(&mut self, data: Option); fn cancel_interactive_resize(&mut self); - fn interactive_resize_data(&mut self, serial: Serial) -> Option; + fn update_interactive_resize(&mut self, serial: Serial); + fn interactive_resize_data(&self) -> Option; } #[derive(Debug)] @@ -2209,7 +2210,9 @@ mod tests { fn cancel_interactive_resize(&mut self) {} - fn interactive_resize_data(&mut self, _serial: Serial) -> Option { + fn update_interactive_resize(&mut self, _serial: Serial) {} + + fn interactive_resize_data(&self) -> Option { None } } diff --git a/src/layout/workspace.rs b/src/layout/workspace.rs index 1b6b14ff..a069abbf 100644 --- a/src/layout/workspace.rs +++ b/src/layout/workspace.rs @@ -1189,13 +1189,15 @@ impl Workspace { let tile = &mut col.tiles[tile_idx]; let window = tile.window_mut(); - let resize = serial.and_then(|serial| window.interactive_resize_data(serial)); + let resize = window.interactive_resize_data(); + + if let Some(serial) = serial { + window.update_interactive_resize(serial); + } // If this was the last resize commit, this function will now return None. This way we // can animate the window into view after the last resize commit. - let resize_still_ongoing = serial - .and_then(|serial| window.interactive_resize_data(serial)) - .is_some(); + let resize_still_ongoing = window.interactive_resize_data().is_some(); if let Some(resize) = resize { // If this is an interactive resize commit of an active window, then we need to -- cgit