From e98f46bbccc0b908a911909636960e4ae3774cdc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Esp=C3=ADn?= Date: Sun, 2 Oct 2022 23:12:33 +0200 Subject: [PATCH] Remove a Node listeners when it is removed (#576) --- packages/native-core/src/real_dom.rs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/packages/native-core/src/real_dom.rs b/packages/native-core/src/real_dom.rs index c7cc4219a..99620558d 100644 --- a/packages/native-core/src/real_dom.rs +++ b/packages/native-core/src/real_dom.rs @@ -641,6 +641,9 @@ impl RealDom { fn remove(&mut self, id: GlobalNodeId) -> Option> { // We do not need to remove the node from the parent's children list for children. fn inner(dom: &mut RealDom, id: GlobalNodeId) -> Option> { + for nodes_listeners in dom.nodes_listening.values_mut() { + nodes_listeners.remove(&id); + } let mut either = match id { GlobalNodeId::VNodeId(id) => *dom.nodes[id.0].take()?, GlobalNodeId::TemplateId { @@ -683,6 +686,9 @@ impl RealDom { } } }; + for nodes_listeners in self.nodes_listening.values_mut() { + nodes_listeners.remove(&id); + } if let Some(parent) = node.parent() { let parent = &mut self[parent]; parent.remove_child(id);