aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/node.rs
diff options
context:
space:
mode:
authorBobby Holley <bobbyholley@gmail.com>2016-11-14 14:46:59 -0800
committerBobby Holley <bobbyholley@gmail.com>2016-11-16 12:09:47 -0800
commitf1043f630563a7c4a4f3fcff11f6f63b3e9afaa2 (patch)
treec1795b05784a4122f00492edbb22b4dba15afe24 /components/script/dom/node.rs
parent0547a6b313072cde5870a61b97be10ee62ce65ad (diff)
downloadservo-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.rs34
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