From c89112dabf6d8dfbdb4270665bbd59cefcb7fda7 Mon Sep 17 00:00:00 2001 From: Bruno de Oliveira Abinader Date: Fri, 6 Jun 2014 13:08:44 -0700 Subject: [PATCH] Fixed traversal issues --- src/components/script/dom/node.rs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/components/script/dom/node.rs b/src/components/script/dom/node.rs index 5fa704810b2..0e9d046e957 100644 --- a/src/components/script/dom/node.rs +++ b/src/components/script/dom/node.rs @@ -566,11 +566,12 @@ impl<'a> NodeHelpers for JSRef<'a, Node> { Some(ref selectors) => { for selector in selectors.iter() { assert!(selector.pseudo_element.is_none()); - for elem in self.child_elements() { - let node: &JSRef = NodeCast::from_ref(&elem); + let root = self.ancestors().last().unwrap_or(self.clone()); + for node in root.traverse_preorder().filter(|node| node.is_element()) { let mut _shareable: bool = false; - if matches_compound_selector(selector.compound_selectors.deref(), node, &mut _shareable) { - return Ok(Some(Temporary::from_rooted(&elem))); + if matches_compound_selector(selector.compound_selectors.deref(), &node, &mut _shareable) { + let elem: &JSRef = ElementCast::to_ref(&node).unwrap(); + return Ok(Some(Temporary::from_rooted(elem))); } } }