aboutsummaryrefslogtreecommitdiff
path: root/src/layout/tests.rs
diff options
context:
space:
mode:
authorIvan Molodetskikh <yalterz@gmail.com>2025-01-31 19:24:26 +0300
committerIvan Molodetskikh <yalterz@gmail.com>2025-01-31 21:30:22 +0300
commita0e2a15c60162e4f0a589fb5f0ce0899bce213b5 (patch)
tree5810709fa4c8819692e3f7d8047b6c5f80e8f8de /src/layout/tests.rs
parent88c6778771d8196621072b562466f6e8e68dbbc3 (diff)
downloadniri-a0e2a15c60162e4f0a589fb5f0ce0899bce213b5.tar.gz
niri-a0e2a15c60162e4f0a589fb5f0ce0899bce213b5.tar.bz2
niri-a0e2a15c60162e4f0a589fb5f0ce0899bce213b5.zip
Take border into account for fixed preset-column-width for tiled windows
Diffstat (limited to 'src/layout/tests.rs')
-rw-r--r--src/layout/tests.rs65
1 files changed, 65 insertions, 0 deletions
diff --git a/src/layout/tests.rs b/src/layout/tests.rs
index 47484817..e39b3ca5 100644
--- a/src/layout/tests.rs
+++ b/src/layout/tests.rs
@@ -3002,6 +3002,71 @@ fn move_workspace_to_same_monitor_doesnt_reorder() {
assert_eq!(counts, &[1, 2, 0]);
}
+#[test]
+fn preset_column_width_fixed_correct_with_border() {
+ let ops = [
+ Op::AddOutput(0),
+ Op::AddWindow {
+ params: TestWindowParams::new(0),
+ },
+ Op::SwitchPresetColumnWidth,
+ ];
+
+ let options = Options {
+ preset_column_widths: vec![PresetSize::Fixed(500)],
+ ..Default::default()
+ };
+ let mut layout = check_ops_with_options(options, &ops);
+
+ let win = layout.windows().next().unwrap().1;
+ assert_eq!(win.requested_size().unwrap().w, 500);
+
+ // Add border.
+ let options = Options {
+ preset_column_widths: vec![PresetSize::Fixed(500)],
+ border: niri_config::Border {
+ off: false,
+ width: FloatOrInt(5.),
+ ..Default::default()
+ },
+ ..Default::default()
+ };
+ layout.update_options(options);
+
+ // With border, the window gets less size.
+ let win = layout.windows().next().unwrap().1;
+ assert_eq!(win.requested_size().unwrap().w, 490);
+
+ // However, preset fixed width will still work correctly.
+ layout.toggle_width();
+ let win = layout.windows().next().unwrap().1;
+ assert_eq!(win.requested_size().unwrap().w, 500);
+}
+
+#[test]
+fn preset_column_width_reset_after_set_width() {
+ let ops = [
+ Op::AddOutput(0),
+ Op::AddWindow {
+ params: TestWindowParams::new(0),
+ },
+ Op::SwitchPresetColumnWidth,
+ Op::SetWindowWidth {
+ id: None,
+ change: SizeChange::AdjustFixed(-10),
+ },
+ Op::SwitchPresetColumnWidth,
+ ];
+
+ let options = Options {
+ preset_column_widths: vec![PresetSize::Fixed(500), PresetSize::Fixed(1000)],
+ ..Default::default()
+ };
+ let layout = check_ops_with_options(options, &ops);
+ let win = layout.windows().next().unwrap().1;
+ assert_eq!(win.requested_size().unwrap().w, 500);
+}
+
fn parent_id_causes_loop(layout: &Layout<TestWindow>, id: usize, mut parent_id: usize) -> bool {
if parent_id == id {
return true;