diff options
Diffstat (limited to 'components/script/dom/node.rs')
-rw-r--r-- | components/script/dom/node.rs | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/components/script/dom/node.rs b/components/script/dom/node.rs index ff69e2ae2b3..b0f85b1ccfa 100644 --- a/components/script/dom/node.rs +++ b/components/script/dom/node.rs @@ -483,6 +483,19 @@ impl Node { self.flags.set(flags); } + // FIXME(emilio): This and the function below should move to Element. + pub fn note_dirty_descendants(&self) { + debug_assert!(self.is_in_doc()); + + for ancestor in self.inclusive_ancestors() { + if ancestor.get_flag(NodeFlags::HAS_DIRTY_DESCENDANTS) { + return; + } + + ancestor.set_flag(NodeFlags::HAS_DIRTY_DESCENDANTS, true); + } + } + pub fn has_dirty_descendants(&self) -> bool { self.get_flag(NodeFlags::HAS_DIRTY_DESCENDANTS) } @@ -2499,7 +2512,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); + self.owner_doc().content_and_heritage_changed(self); } // This handles the ranges mentioned in steps 2-3 when removing a node. |