diff options
Diffstat (limited to 'components/script/dom/node.rs')
-rw-r--r-- | components/script/dom/node.rs | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/components/script/dom/node.rs b/components/script/dom/node.rs index 67bb5279f32..ae79327e7da 100644 --- a/components/script/dom/node.rs +++ b/components/script/dom/node.rs @@ -700,14 +700,16 @@ impl<'a> NodeHelpers<'a> for JSRef<'a, Node> { // // TODO(cgaebel): This is a very conservative way to account for sibling // selectors. Maybe we can do something smarter in the future. - let parent = - match self.parent_node() { - None => return, - Some(parent) => parent, - }; - - for sibling in parent.root().r().children() { - sibling.set_has_dirty_siblings(true); + if !self.get_has_dirty_siblings() { + let parent = + match self.parent_node() { + None => return, + Some(parent) => parent, + }; + + for sibling in parent.root().r().children() { + sibling.set_has_dirty_siblings(true); + } } // 4. Dirty ancestors. |