aboutsummaryrefslogtreecommitdiff
path: root/src/layout/tests.rs
diff options
context:
space:
mode:
authorIvan Molodetskikh <yalterz@gmail.com>2025-03-22 13:52:08 +0300
committerIvan Molodetskikh <yalterz@gmail.com>2025-03-22 13:57:37 +0300
commited20822ce947198e4106698d7afffd0a832a7b3c (patch)
tree8efa601a22f9db500a6b3c8cc88a101c1f13b644 /src/layout/tests.rs
parente88dfae46fed95a2b302e1d1e805da10c2b95fa1 (diff)
downloadniri-ed20822ce947198e4106698d7afffd0a832a7b3c.tar.gz
niri-ed20822ce947198e4106698d7afffd0a832a7b3c.tar.bz2
niri-ed20822ce947198e4106698d7afffd0a832a7b3c.zip
layout: Reset unfullscreen view offset when removing window
Another old bug found by randomized tests after I expanded the testing mock window.
Diffstat (limited to 'src/layout/tests.rs')
-rw-r--r--src/layout/tests.rs46
1 files changed, 46 insertions, 0 deletions
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<TestWindow>, id: usize, mut parent_id: usize) -> bool {
if parent_id == id {
return true;