From b1287019ec991fe1c0653cd0484225959955c5ad Mon Sep 17 00:00:00 2001 From: Dusty DeWeese Date: Fri, 25 Jun 2021 18:34:01 -0700 Subject: [PATCH 1/3] Fix Percent height values, which were using parent width. --- src/algo.rs | 14 +++++++------- src/geometry.rs | 12 ++++++++++++ 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/src/algo.rs b/src/algo.rs index e22c2124..26cf003f 100644 --- a/src/algo.rs +++ b/src/algo.rs @@ -156,9 +156,9 @@ impl Forest { let is_column = dir.is_column(); let is_wrap_reverse = self.nodes[node].style.flex_wrap == FlexWrap::WrapReverse; - let margin = self.nodes[node].style.margin.map(|n| n.resolve(parent_size.width).or_else(0.0)); - let padding = self.nodes[node].style.padding.map(|n| n.resolve(parent_size.width).or_else(0.0)); - let border = self.nodes[node].style.border.map(|n| n.resolve(parent_size.width).or_else(0.0)); + let margin = self.nodes[node].style.margin.zip_size(parent_size, |n, s| n.resolve(s).or_else(0.0)); + let padding = self.nodes[node].style.padding.zip_size(parent_size, |n, s| n.resolve(s).or_else(0.0)); + let border = self.nodes[node].style.border.zip_size(parent_size, |n, s| n.resolve(s).or_else(0.0)); let padding_border = Rect { start: padding.start + border.start, @@ -228,10 +228,10 @@ impl Forest { min_size: child_style.min_size.resolve(node_inner_size), max_size: child_style.max_size.resolve(node_inner_size), - position: child_style.position.map(|p| p.resolve(node_inner_size.width)), - margin: child_style.margin.map(|m| m.resolve(node_inner_size.width).or_else(0.0)), - padding: child_style.padding.map(|p| p.resolve(node_inner_size.width).or_else(0.0)), - border: child_style.border.map(|b| b.resolve(node_inner_size.width).or_else(0.0)), + position: child_style.position.zip_size(node_inner_size, |p, s| p.resolve(s)), + margin: child_style.margin.zip_size(node_inner_size, |m, s| m.resolve(s).or_else(0.0)), + padding: child_style.padding.zip_size(node_inner_size, |p, s| p.resolve(s).or_else(0.0)), + border: child_style.border.zip_size(node_inner_size, |b, s| b.resolve(s).or_else(0.0)), flex_basis: 0.0, inner_flex_basis: 0.0, diff --git a/src/geometry.rs b/src/geometry.rs index f5471e4b..3d84476e 100644 --- a/src/geometry.rs +++ b/src/geometry.rs @@ -22,6 +22,18 @@ impl Rect { { Rect { start: f(self.start), end: f(self.end), top: f(self.top), bottom: f(self.bottom) } } + pub(crate) fn zip_size(self, size: Size, f: F) -> Rect + where + F: Fn(T, U) -> R, + U: Copy + { + Rect { + start: f(self.start, size.width), + end: f(self.end, size.width), + top: f(self.top, size.height), + bottom: f(self.bottom, size.height) + } + } } impl Rect From 41fed109984456ad9b446be172e49b7c5d605168 Mon Sep 17 00:00:00 2001 From: Dusty DeWeese Date: Thu, 15 Jul 2021 18:16:54 -0700 Subject: [PATCH 2/3] cargo fmt --- src/geometry.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/geometry.rs b/src/geometry.rs index 3d84476e..21c1206d 100644 --- a/src/geometry.rs +++ b/src/geometry.rs @@ -25,13 +25,13 @@ impl Rect { pub(crate) fn zip_size(self, size: Size, f: F) -> Rect where F: Fn(T, U) -> R, - U: Copy + U: Copy, { Rect { start: f(self.start, size.width), end: f(self.end, size.width), top: f(self.top, size.height), - bottom: f(self.bottom, size.height) + bottom: f(self.bottom, size.height), } } } From 875cc5fd932894b076b05e56a79c4a963656bbe1 Mon Sep 17 00:00:00 2001 From: Dusty DeWeese Date: Sat, 17 Jul 2021 16:53:46 -0700 Subject: [PATCH 3/3] Revert changes to margin, padding, and border. --- src/algo.rs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/algo.rs b/src/algo.rs index 26cf003f..255d41b8 100644 --- a/src/algo.rs +++ b/src/algo.rs @@ -156,9 +156,9 @@ impl Forest { let is_column = dir.is_column(); let is_wrap_reverse = self.nodes[node].style.flex_wrap == FlexWrap::WrapReverse; - let margin = self.nodes[node].style.margin.zip_size(parent_size, |n, s| n.resolve(s).or_else(0.0)); - let padding = self.nodes[node].style.padding.zip_size(parent_size, |n, s| n.resolve(s).or_else(0.0)); - let border = self.nodes[node].style.border.zip_size(parent_size, |n, s| n.resolve(s).or_else(0.0)); + let margin = self.nodes[node].style.margin.map(|n| n.resolve(parent_size.width).or_else(0.0)); + let padding = self.nodes[node].style.padding.map(|n| n.resolve(parent_size.width).or_else(0.0)); + let border = self.nodes[node].style.border.map(|n| n.resolve(parent_size.width).or_else(0.0)); let padding_border = Rect { start: padding.start + border.start, @@ -229,9 +229,9 @@ impl Forest { max_size: child_style.max_size.resolve(node_inner_size), position: child_style.position.zip_size(node_inner_size, |p, s| p.resolve(s)), - margin: child_style.margin.zip_size(node_inner_size, |m, s| m.resolve(s).or_else(0.0)), - padding: child_style.padding.zip_size(node_inner_size, |p, s| p.resolve(s).or_else(0.0)), - border: child_style.border.zip_size(node_inner_size, |b, s| b.resolve(s).or_else(0.0)), + margin: child_style.margin.map(|m| m.resolve(node_inner_size.width).or_else(0.0)), + padding: child_style.padding.map(|p| p.resolve(node_inner_size.width).or_else(0.0)), + border: child_style.border.map(|b| b.resolve(node_inner_size.width).or_else(0.0)), flex_basis: 0.0, inner_flex_basis: 0.0,