layout/floating: In unmap, don't alter size if no pending changes

If the intent here was that the `if let` would only handle the case
where there are pending changes, then something like this should be
right.

Seems to fix behavior in
https://github.com/pop-os/cosmic-comp/issues/1819.
https://github.com/pop-os/cosmic-comp/issues/1645 may be the same issue.
This commit is contained in:
Ian Douglas Scott 2025-12-16 18:57:30 -08:00 committed by Jacob Kauffmann
parent 7b8fca9ece
commit 612ff2f523
2 changed files with 11 additions and 2 deletions

View file

@ -175,6 +175,13 @@ impl CosmicSurface {
}
}
pub fn has_pending_changes(&self) -> bool {
match self.0.underlying_surface() {
WindowSurface::Wayland(toplevel) => toplevel.has_pending_changes(),
WindowSurface::X11(_surface) => false,
}
}
pub fn global_geometry(&self) -> Option<Rectangle<i32, Global>> {
*self
.0

View file

@ -679,8 +679,10 @@ impl FloatingLayout {
mapped_geometry.size = last_size;
}
} else if !window.is_maximized(true) {
if let Some(pending_size) = window.pending_size() {
mapped_geometry.size = pending_size.as_local();
if window.active_window().has_pending_changes() {
if let Some(pending_size) = window.pending_size() {
mapped_geometry.size = pending_size.as_local();
}
}
*window.last_geometry.lock().unwrap() = Some(mapped_geometry);
}