diff options
| author | Ivan Molodetskikh <yalterz@gmail.com> | 2024-06-13 09:50:11 +0300 |
|---|---|---|
| committer | Ivan Molodetskikh <yalterz@gmail.com> | 2024-06-17 09:02:22 +0300 |
| commit | 032589446a4bb0ae856cfa035feeb3113d50ca8f (patch) | |
| tree | 456cfd2f7882e23b44d13feeaea04c1f4936eefd /src/layout | |
| parent | 9ae98e09cb66da8ec8e1cd716ca1db64cd30cbd9 (diff) | |
| download | niri-032589446a4bb0ae856cfa035feeb3113d50ca8f.tar.gz niri-032589446a4bb0ae856cfa035feeb3113d50ca8f.tar.bz2 niri-032589446a4bb0ae856cfa035feeb3113d50ca8f.zip | |
Fix cached data not updating on config change
Diffstat (limited to 'src/layout')
| -rw-r--r-- | src/layout/mod.rs | 21 | ||||
| -rw-r--r-- | src/layout/workspace.rs | 6 |
2 files changed, 25 insertions, 2 deletions
diff --git a/src/layout/mod.rs b/src/layout/mod.rs index 2183bdf1..135f694f 100644 --- a/src/layout/mod.rs +++ b/src/layout/mod.rs @@ -3912,6 +3912,27 @@ mod tests { assert_eq!(workspaces.len(), 2); } + #[test] + fn config_change_updates_cached_sizes() { + let mut config = Config::default(); + config.layout.border.off = false; + config.layout.border.width = 2; + + let mut layout = Layout::new(&config); + + Op::AddWindow { + id: 1, + bbox: Rectangle::from_loc_and_size((0, 0), (1280, 200)), + min_max_size: Default::default(), + } + .apply(&mut layout); + + config.layout.border.width = 4; + layout.update_config(&config); + + layout.verify_invariants(); + } + fn arbitrary_spacing() -> impl Strategy<Value = u16> { // Give equal weight to: // - 0: the element is disabled diff --git a/src/layout/workspace.rs b/src/layout/workspace.rs index d3f583d2..cf0a83e9 100644 --- a/src/layout/workspace.rs +++ b/src/layout/workspace.rs @@ -457,8 +457,9 @@ impl<W: LayoutElement> Workspace<W> { } pub fn update_config(&mut self, options: Rc<Options>) { - for column in &mut self.columns { + for (column, data) in zip(&mut self.columns, &mut self.data) { column.update_config(options.clone()); + data.update(column); } self.options = options; @@ -2741,8 +2742,9 @@ impl<W: LayoutElement> Column<W> { update_sizes = true; } - for tile in &mut self.tiles { + for (tile, data) in zip(&mut self.tiles, &mut self.data) { tile.update_config(options.clone()); + data.update(tile); } self.options = options; |
