diff options
| author | Ivan Molodetskikh <yalterz@gmail.com> | 2025-06-13 08:52:09 +0300 |
|---|---|---|
| committer | Ivan Molodetskikh <yalterz@gmail.com> | 2025-06-13 08:54:59 +0300 |
| commit | 83ec36953611ab11dd36c3c3632db7bd3fea9b82 (patch) | |
| tree | 2c9d8be1b9c882fc36e81b54ce775a6c908392d1 /src/layout/tests.rs | |
| parent | 97dfd2b1a00bcb9b765a8fa92ce39d2e0c79abc2 (diff) | |
| download | niri-83ec36953611ab11dd36c3c3632db7bd3fea9b82.tar.gz niri-83ec36953611ab11dd36c3c3632db7bd3fea9b82.tar.bz2 niri-83ec36953611ab11dd36c3c3632db7bd3fea9b82.zip | |
layout/scrolling: Take unfullscreen view offset unconditionally
It might get set and unset all while the view is frozen with a gesture.
Diffstat (limited to 'src/layout/tests.rs')
| -rw-r--r-- | src/layout/tests.rs | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/src/layout/tests.rs b/src/layout/tests.rs index acfced00..524ade8b 100644 --- a/src/layout/tests.rs +++ b/src/layout/tests.rs @@ -3471,6 +3471,69 @@ fn interactive_move_unfullscreen_to_floating_stops_dnd_scroll() { check_ops(&ops); } +#[test] +fn unfullscreen_view_offset_not_reset_during_dnd_gesture() { + let ops = [ + Op::AddOutput(1), + Op::AddWindow { + params: TestWindowParams::new(3), + }, + Op::FullscreenWindow(3), + Op::Communicate(3), + Op::DndUpdate { + output_idx: 1, + px: 0.0, + py: 0.0, + }, + Op::FullscreenWindow(3), + Op::Communicate(3), + ]; + + check_ops(&ops); +} + +#[test] +fn unfullscreen_view_offset_not_reset_during_gesture() { + let ops = [ + Op::AddOutput(1), + Op::AddWindow { + params: TestWindowParams::new(3), + }, + Op::FullscreenWindow(3), + Op::Communicate(3), + Op::ViewOffsetGestureBegin { + output_idx: 1, + workspace_idx: None, + is_touchpad: false, + }, + Op::FullscreenWindow(3), + Op::Communicate(3), + ]; + + check_ops(&ops); +} + +#[test] +fn unfullscreen_view_offset_not_reset_during_ongoing_gesture() { + let ops = [ + Op::AddOutput(1), + Op::AddWindow { + params: TestWindowParams::new(3), + }, + Op::ViewOffsetGestureBegin { + output_idx: 1, + workspace_idx: None, + is_touchpad: false, + }, + Op::FullscreenWindow(3), + Op::Communicate(3), + Op::FullscreenWindow(3), + Op::Communicate(3), + ]; + + check_ops(&ops); +} + fn parent_id_causes_loop(layout: &Layout<TestWindow>, id: usize, mut parent_id: usize) -> bool { if parent_id == id { return true; |
