diff options
author | Bobby Holley <bobbyholley@gmail.com> | 2016-11-14 14:46:59 -0800 |
---|---|---|
committer | Bobby Holley <bobbyholley@gmail.com> | 2016-11-16 12:09:47 -0800 |
commit | f1043f630563a7c4a4f3fcff11f6f63b3e9afaa2 (patch) | |
tree | c1795b05784a4122f00492edbb22b4dba15afe24 /components/script/dom/node.rs | |
parent | 0547a6b313072cde5870a61b97be10ee62ce65ad (diff) | |
download | servo-f1043f630563a7c4a4f3fcff11f6f63b3e9afaa2.tar.gz servo-f1043f630563a7c4a4f3fcff11f6f63b3e9afaa2.zip |
Track all node damage with PendingRestyles.
Diffstat (limited to 'components/script/dom/node.rs')
-rw-r--r-- | components/script/dom/node.rs | 34 |
1 files changed, 9 insertions, 25 deletions
diff --git a/components/script/dom/node.rs b/components/script/dom/node.rs index 0f510719640..5ef7a79ea48 100644 --- a/components/script/dom/node.rs +++ b/components/script/dom/node.rs @@ -446,10 +446,6 @@ impl Node { self.set_flag(HAS_DIRTY_DESCENDANTS, state) } - pub fn force_dirty_ancestors(&self, damage: NodeDamage) { - self.dirty_impl(damage, true) - } - pub fn rev_version(&self) { // The new version counter is 1 plus the max of the node's current version counter, // its descendants version, and the document's version. Normally, this will just be @@ -464,30 +460,18 @@ impl Node { } pub fn dirty(&self, damage: NodeDamage) { - self.dirty_impl(damage, false) - } - - pub fn dirty_impl(&self, damage: NodeDamage, force_ancestors: bool) { - // 0. Set version counter self.rev_version(); - - // 1. Dirty self. - match damage { - NodeDamage::NodeStyleDamaged => {} - NodeDamage::OtherNodeDamage => self.set_has_changed(true), - } - - if self.is_dirty() && !force_ancestors { - return + if !self.is_in_doc() { + return; } - self.set_flag(IS_DIRTY, true); - - // 4. Dirty ancestors. - for ancestor in self.ancestors() { - if !force_ancestors && ancestor.has_dirty_descendants() { break } - ancestor.set_has_dirty_descendants(true); - } + match self.type_id() { + NodeTypeId::CharacterData(CharacterDataTypeId::Text) => + self.parent_node.get().unwrap().downcast::<Element>().unwrap().restyle(damage), + NodeTypeId::Element(_) => + self.downcast::<Element>().unwrap().restyle(damage), + _ => {}, + }; } /// The maximum version number of this node's descendants, including itself |