aboutsummaryrefslogtreecommitdiff
path: root/src/layout
diff options
context:
space:
mode:
Diffstat (limited to 'src/layout')
-rw-r--r--src/layout/mod.rs21
-rw-r--r--src/layout/workspace.rs6
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;