From ed20822ce947198e4106698d7afffd0a832a7b3c Mon Sep 17 00:00:00 2001 From: Ivan Molodetskikh Date: Sat, 22 Mar 2025 13:52:08 +0300 Subject: layout: Reset unfullscreen view offset when removing window Another old bug found by randomized tests after I expanded the testing mock window. --- src/layout/tests.rs | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) (limited to 'src/layout/tests.rs') diff --git a/src/layout/tests.rs b/src/layout/tests.rs index 8e1c3adf..f7e5c759 100644 --- a/src/layout/tests.rs +++ b/src/layout/tests.rs @@ -3262,6 +3262,52 @@ fn windowed_fullscreen_to_fullscreen() { check_ops(&ops); } +#[test] +fn move_pending_unfullscreen_window_out_of_active_column() { + let ops = [ + Op::AddOutput(1), + Op::AddWindow { + params: TestWindowParams::new(1), + }, + Op::FullscreenWindow(1), + Op::Communicate(1), + Op::AddWindow { + params: TestWindowParams::new(2), + }, + Op::ConsumeWindowIntoColumn, + // Window 1 is now pending unfullscreen. + // Moving it out should reset view_offset_before_fullscreen. + Op::MoveWindowToWorkspaceDown, + ]; + + check_ops(&ops); +} + +#[test] +fn move_unfocused_pending_unfullscreen_window_out_of_active_column() { + let ops = [ + Op::AddOutput(1), + Op::AddWindow { + params: TestWindowParams::new(1), + }, + Op::FullscreenWindow(1), + Op::Communicate(1), + Op::AddWindow { + params: TestWindowParams::new(2), + }, + Op::ConsumeWindowIntoColumn, + // Window 1 is now pending unfullscreen. + // Moving it out should reset view_offset_before_fullscreen. + Op::FocusWindowDown, + Op::MoveWindowToWorkspace { + window_id: Some(1), + workspace_idx: 1, + }, + ]; + + check_ops(&ops); +} + fn parent_id_causes_loop(layout: &Layout, id: usize, mut parent_id: usize) -> bool { if parent_id == id { return true; -- cgit