Fix calling set_measure on a node that didn't previously have a measure func (#252)
* Fix calling set_measure on a node that didn't previously have a measure func
(fixes #250)
* cargo fmt
* Update to work with renamed Style struct
07a154db4c0fb4f714f397062dd2dc1dbf407470 · by Nico Burns · (3 years ago) · parent 49893a7d9 · browse the tree at this commit
diff --git a/src/node.rs b/src/node.rs
index 8ce6bcc8c..9294cf066 100644
--- a/src/node.rs
+++ b/src/node.rs
@@ -204,7 +204,7 @@ impl Taffy {
pub fn set_measure(&mut self, node: Node, measure: Option<MeasureFunc>) -> TaffyResult<()> {
if let Some(measure) = measure {
self.nodes[node].needs_measure = true;
- self.measure_funcs[node] = measure
+ self.measure_funcs.insert(node, measure);
} else {
self.nodes[node].needs_measure = false;
self.measure_funcs.remove(node);
@@ -482,6 +482,18 @@ mod tests {
assert_eq!(taffy.layout(node).unwrap().size.width, 100.0);
}
+ #[test]
+ fn set_measure_of_previously_unmeasured_node() {
+ let mut taffy = Taffy::new();
+ let node = taffy.new_leaf(Style::default()).unwrap();
+ taffy.compute_layout(node, Size::MAX_CONTENT).unwrap();
+ assert_eq!(taffy.layout(node).unwrap().size.width, 0.0);
+
+ taffy.set_measure(node, Some(MeasureFunc::Raw(|_, _| Size { width: 100.0, height: 100.0 }))).unwrap();
+ taffy.compute_layout(node, Size::MAX_CONTENT).unwrap();
+ assert_eq!(taffy.layout(node).unwrap().size.width, 100.0);
+ }
+
/// Test that adding `add_child()` works
#[test]
fn add_child() {