From 7b40cc9fd7ea4dcc3816be0cb1ad6543bb5c88e0 Mon Sep 17 00:00:00 2001 From: Anthony Ramine Date: Sat, 18 Jul 2015 14:45:52 +0200 Subject: Introduce VirtualMethods::children_changed() This virtual method mimics the behaviour of mutation observers and make it more viable than the older child_inserted(), which didn't cover removed nodes and was called as many times as there were inserted nodes. A few other shortcomings where remove_child() was called directly instead of Node::remove() were also fixed while at it. --- components/script/dom/virtualmethods.rs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'components/script/dom/virtualmethods.rs') diff --git a/components/script/dom/virtualmethods.rs b/components/script/dom/virtualmethods.rs index 8bb62637ac6..88cc024acd5 100644 --- a/components/script/dom/virtualmethods.rs +++ b/components/script/dom/virtualmethods.rs @@ -35,7 +35,8 @@ use dom::document::Document; use dom::element::ElementTypeId; use dom::event::Event; use dom::htmlelement::HTMLElementTypeId; -use dom::node::{Node, NodeHelpers, NodeTypeId, CloneChildrenFlag}; +use dom::node::{ChildrenMutation, CloneChildrenFlag, Node, NodeHelpers}; +use dom::node::NodeTypeId; use util::str::DOMString; @@ -97,10 +98,10 @@ pub trait VirtualMethods { } } - /// Called on the parent when a node is added to its child list. - fn child_inserted(&self, child: &Node) { + /// Called on the parent when its children are changed. + fn children_changed(&self, mutation: &ChildrenMutation) { if let Some(ref s) = self.super_type() { - s.child_inserted(child); + s.children_changed(mutation); } } -- cgit v1.2.3