fix: restore snapped windows as snapped after maximize/minimize

This commit is contained in:
Hojjat 2026-04-21 15:52:26 -06:00 committed by Victoria Brekenfeld
parent 7c02df250e
commit b5186ef21a
4 changed files with 42 additions and 7 deletions

View file

@ -385,11 +385,13 @@ impl FloatingLayout {
} else {
self.animations.remove(&mapped);
}
if mapped.floating_tiled.lock().unwrap().take().is_some()
// Restore to the corner this was snapped to if any
let snapped = mapped.floating_tiled.lock().unwrap().take();
if let Some(snapped) = snapped
&& let Some(state) = mapped.maximized_state.lock().unwrap().as_mut()
&& let Some(real_old_geo) = *mapped.last_geometry.lock().unwrap()
&& state.original_snapped.is_none()
{
state.original_geometry = real_old_geo;
state.original_snapped = Some(snapped);
};
self.space
.map_element(mapped, geometry.loc.as_logical(), true);
@ -1198,6 +1200,7 @@ impl FloatingLayout {
*maximized_state = Some(MaximizedState {
original_geometry: start_rectangle,
original_layer: layer,
original_snapped: None,
});
std::mem::drop(maximized_state);