diff options
Diffstat (limited to 'src')
| -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; |
