diff --git a/src/wayland/handlers/toplevel_info.rs b/src/wayland/handlers/toplevel_info.rs index 18b16a07..37033f4f 100644 --- a/src/wayland/handlers/toplevel_info.rs +++ b/src/wayland/handlers/toplevel_info.rs @@ -48,7 +48,11 @@ impl Window for CosmicSurface { } fn is_sticky(&self) -> bool { - CosmicSurface::is_sticky(&self) + CosmicSurface::is_sticky(self) + } + + fn is_resizing(&self) -> bool { + CosmicSurface::is_resizing(self, true).unwrap_or(false) } fn global_geometry(&self) -> Option> { diff --git a/src/wayland/protocols/toplevel_info.rs b/src/wayland/protocols/toplevel_info.rs index 0fe1ec1b..b52ae354 100644 --- a/src/wayland/protocols/toplevel_info.rs +++ b/src/wayland/protocols/toplevel_info.rs @@ -33,6 +33,7 @@ pub trait Window: IsAlive + Clone + PartialEq + Send { fn is_fullscreen(&self) -> bool; fn is_minimized(&self) -> bool; fn is_sticky(&self) -> bool; + fn is_resizing(&self) -> bool; fn global_geometry(&self) -> Option>; fn user_data(&self) -> &UserDataMap; } @@ -536,12 +537,14 @@ where changed = true; } - let geometry = window.global_geometry(); let mut geometry_changed = false; - if handle_state.geometry != geometry { - handle_state.geometry = geometry; - changed = true; - geometry_changed = true; + if !window.is_resizing() { + let geometry = window.global_geometry(); + if handle_state.geometry != geometry { + handle_state.geometry = geometry; + changed = true; + geometry_changed = true; + } } if let Ok(client) = dh.get_client(instance.id()) {