From c08d6a22b8ced627e1c42880e66300d2460cc297 Mon Sep 17 00:00:00 2001 From: inobelar Date: Mon, 17 Jul 2023 18:00:42 +0300 Subject: [PATCH] Minor: added docs & test-case for updated 'Taffy::remove()' behaviour --- src/tree/taffy_tree/tree.rs | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/tree/taffy_tree/tree.rs b/src/tree/taffy_tree/tree.rs index 2949bd2a7..ef34d3e88 100644 --- a/src/tree/taffy_tree/tree.rs +++ b/src/tree/taffy_tree/tree.rs @@ -229,6 +229,7 @@ impl Taffy { } } + // Remove "parent" references to a node when removing that node if let Some(children) = self.children.get(key) { for child in children.iter().copied() { self.parents[child.into()] = None; @@ -666,6 +667,22 @@ mod tests { assert_eq!(taffy.child_count(node).unwrap(), 0); } + // Related to: https://github.com/DioxusLabs/taffy/issues/510 + #[test] + fn remove_child_updates_parents() { + let mut taffy = Taffy::new(); + + let parent = taffy.new_leaf(Style::default()).unwrap(); + let child = taffy.new_leaf(Style::default()).unwrap(); + + taffy.add_child(parent, child).unwrap(); + + taffy.remove(parent).unwrap(); + + // Once the parent is removed this shouldn't panic. + assert!(taffy.set_children(child, &[]).is_ok()); + } + #[test] fn replace_child_at_index() { let mut taffy = Taffy::new();