diff options
| author | Ivan Molodetskikh <yalterz@gmail.com> | 2024-04-13 18:17:49 +0400 |
|---|---|---|
| committer | Ivan Molodetskikh <yalterz@gmail.com> | 2024-04-13 20:07:37 +0400 |
| commit | 2c873044e8c1150e1dcc9dd97cb232837d6b9312 (patch) | |
| tree | a49ee3edb9b69f5fbd994068ff39953ed3cc0366 /src/layout/mod.rs | |
| parent | 1336a581a622e497e2bdbf46a3763cd7656fa033 (diff) | |
| download | niri-2c873044e8c1150e1dcc9dd97cb232837d6b9312.tar.gz niri-2c873044e8c1150e1dcc9dd97cb232837d6b9312.tar.bz2 niri-2c873044e8c1150e1dcc9dd97cb232837d6b9312.zip | |
Restore view offset upon unfullscreening
Diffstat (limited to 'src/layout/mod.rs')
| -rw-r--r-- | src/layout/mod.rs | 101 |
1 files changed, 101 insertions, 0 deletions
diff --git a/src/layout/mod.rs b/src/layout/mod.rs index afb101c8..b9c0172a 100644 --- a/src/layout/mod.rs +++ b/src/layout/mod.rs @@ -3037,6 +3037,107 @@ mod tests { ); } + #[test] + fn unfullscreen_view_offset_not_reset_on_removal() { + let ops = [ + Op::AddOutput(1), + Op::AddWindow { + id: 0, + bbox: Rectangle::from_loc_and_size((0, 0), (100, 200)), + min_max_size: Default::default(), + }, + Op::FullscreenWindow(0), + Op::AddWindow { + id: 1, + bbox: Rectangle::from_loc_and_size((0, 0), (100, 200)), + min_max_size: Default::default(), + }, + Op::ConsumeOrExpelWindowRight, + ]; + + check_ops(&ops); + } + + #[test] + fn unfullscreen_view_offset_not_reset_on_consume() { + let ops = [ + Op::AddOutput(1), + Op::AddWindow { + id: 0, + bbox: Rectangle::from_loc_and_size((0, 0), (100, 200)), + min_max_size: Default::default(), + }, + Op::FullscreenWindow(0), + Op::AddWindow { + id: 1, + bbox: Rectangle::from_loc_and_size((0, 0), (100, 200)), + min_max_size: Default::default(), + }, + Op::ConsumeWindowIntoColumn, + ]; + + check_ops(&ops); + } + + #[test] + fn unfullscreen_view_offset_not_reset_on_quick_double_toggle() { + let ops = [ + Op::AddOutput(1), + Op::AddWindow { + id: 0, + bbox: Rectangle::from_loc_and_size((0, 0), (100, 200)), + min_max_size: Default::default(), + }, + Op::FullscreenWindow(0), + Op::FullscreenWindow(0), + ]; + + check_ops(&ops); + } + + #[test] + fn unfullscreen_view_offset_set_on_fullscreening_inactive_tile_in_column() { + let ops = [ + Op::AddOutput(1), + Op::AddWindow { + id: 0, + bbox: Rectangle::from_loc_and_size((0, 0), (100, 200)), + min_max_size: Default::default(), + }, + Op::AddWindow { + id: 1, + bbox: Rectangle::from_loc_and_size((0, 0), (100, 200)), + min_max_size: Default::default(), + }, + Op::ConsumeOrExpelWindowLeft, + Op::FullscreenWindow(0), + ]; + + check_ops(&ops); + } + + #[test] + fn unfullscreen_view_offset_not_reset_on_gesture() { + let ops = [ + Op::AddOutput(1), + Op::AddWindow { + id: 0, + bbox: Rectangle::from_loc_and_size((0, 0), (200, 200)), + min_max_size: Default::default(), + }, + Op::AddWindow { + id: 1, + bbox: Rectangle::from_loc_and_size((0, 0), (1280, 200)), + min_max_size: Default::default(), + }, + Op::FullscreenWindow(1), + Op::ViewOffsetGestureBegin { output_idx: 1 }, + Op::ViewOffsetGestureEnd, + ]; + + check_ops(&ops); + } + fn arbitrary_spacing() -> impl Strategy<Value = u16> { // Give equal weight to: // - 0: the element is disabled |
