diff options
author | Emilio Cobos Álvarez <emilio@crisal.io> | 2017-11-10 13:04:58 +0100 |
---|---|---|
committer | Emilio Cobos Álvarez <emilio@crisal.io> | 2017-11-10 13:12:24 +0100 |
commit | c9d9304912d1b23a9ccd5baee6e6625022d643af (patch) | |
tree | ef3050092298130f8eeee4fb289a5a55c07c6380 /components/script/dom/node.rs | |
parent | a3f2fae561de26fefb0ac0d569ce2c7a2942eee5 (diff) | |
download | servo-c9d9304912d1b23a9ccd5baee6e6625022d643af.tar.gz servo-c9d9304912d1b23a9ccd5baee6e6625022d643af.zip |
script: Call content_and_heritage_changed from children_changed instead of add_child / remove_child.
add_child / remove_child aren't called when a node character data changed. This
is important for finer grained invalidation.
The only test that tests this is now wallpapered, but won't be after #19164.
Diffstat (limited to 'components/script/dom/node.rs')
-rw-r--r-- | components/script/dom/node.rs | 6 |
1 files changed, 1 insertions, 5 deletions
diff --git a/components/script/dom/node.rs b/components/script/dom/node.rs index 8f29298a496..ff69e2ae2b3 100644 --- a/components/script/dom/node.rs +++ b/components/script/dom/node.rs @@ -266,8 +266,6 @@ impl Node { debug_assert!(!node.get_flag(NodeFlags::HAS_DIRTY_DESCENDANTS)); vtable_for(&&*node).bind_to_tree(parent_in_doc); } - let document = new_child.owner_doc(); - document.content_and_heritage_changed(new_child, NodeDamage::OtherNodeDamage); } /// Removes the given child from this node's list of children. @@ -318,9 +316,6 @@ impl Node { ScriptThread::enqueue_callback_reaction(&*element, CallbackReaction::Disconnected, None); } } - - self.owner_doc().content_and_heritage_changed(self, NodeDamage::OtherNodeDamage); - child.owner_doc().content_and_heritage_changed(child, NodeDamage::OtherNodeDamage); } pub fn to_untrusted_node_address(&self) -> UntrustedNodeAddress { @@ -2504,6 +2499,7 @@ impl VirtualMethods for Node { if let Some(list) = self.child_list.get() { list.as_children_list().children_changed(mutation); } + self.owner_doc().content_and_heritage_changed(self, NodeDamage::OtherNodeDamage); } // This handles the ranges mentioned in steps 2-3 when removing a node. |