aboutsummaryrefslogtreecommitdiff
path: root/src/layout/mod.rs
diff options
context:
space:
mode:
authorIvan Molodetskikh <yalterz@gmail.com>2024-04-13 18:17:49 +0400
committerIvan Molodetskikh <yalterz@gmail.com>2024-04-13 20:07:37 +0400
commit2c873044e8c1150e1dcc9dd97cb232837d6b9312 (patch)
treea49ee3edb9b69f5fbd994068ff39953ed3cc0366 /src/layout/mod.rs
parent1336a581a622e497e2bdbf46a3763cd7656fa033 (diff)
downloadniri-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.rs101
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