diff options
| author | Ivan Molodetskikh <yalterz@gmail.com> | 2023-12-29 11:38:01 +0400 |
|---|---|---|
| committer | Ivan Molodetskikh <yalterz@gmail.com> | 2023-12-29 11:38:01 +0400 |
| commit | 44d3a5b9a2b0ce2bfeccfa0be16196052b6fdd50 (patch) | |
| tree | 4219c2563836c26dc48f65465ae8d521f3e48e1b | |
| parent | 5d95de97a0a1105c91d6e4dce92ac2239ebdc4ee (diff) | |
| download | niri-44d3a5b9a2b0ce2bfeccfa0be16196052b6fdd50.tar.gz niri-44d3a5b9a2b0ce2bfeccfa0be16196052b6fdd50.tar.bz2 niri-44d3a5b9a2b0ce2bfeccfa0be16196052b6fdd50.zip | |
Use saturating_sub in window_height_for_tile_height()
| -rw-r--r-- | src/layout/mod.rs | 31 | ||||
| -rw-r--r-- | src/layout/tile.rs | 2 |
2 files changed, 32 insertions, 1 deletions
diff --git a/src/layout/mod.rs b/src/layout/mod.rs index 48d7ed9e..0ef10b16 100644 --- a/src/layout/mod.rs +++ b/src/layout/mod.rs @@ -1752,6 +1752,19 @@ mod tests { } } + #[track_caller] + fn check_ops_with_options(options: Options, ops: &[Op]) { + let mut layout = Layout { + options: Rc::new(options), + ..Default::default() + }; + + for op in ops { + op.apply(&mut layout); + layout.verify_invariants(); + } + } + #[test] fn operations_dont_panic() { let every_op = [ @@ -2081,6 +2094,24 @@ mod tests { check_ops(&ops); } + #[test] + fn large_negative_height_change() { + let ops = [ + Op::AddOutput(1), + Op::AddWindow { + id: 1, + bbox: Rectangle::from_loc_and_size((0, 0), (100, 200)), + }, + Op::SetWindowHeight(SizeChange::AdjustProportion(-1e129)), + ]; + + let mut options = Options::default(); + options.border.off = false; + options.border.width = 1; + + check_ops_with_options(options, &ops); + } + proptest! { #