diff options
Diffstat (limited to 'components/style/sequential.rs')
-rw-r--r-- | components/style/sequential.rs | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/components/style/sequential.rs b/components/style/sequential.rs index 2ae7a18048b..334eecc5959 100644 --- a/components/style/sequential.rs +++ b/components/style/sequential.rs @@ -5,7 +5,7 @@ //! Implements sequential traversal over the DOM tree. use dom::TNode; -use traversal::DomTraversalContext; +use traversal::{RestyleResult, DomTraversalContext}; pub fn traverse_dom<N, C>(root: N, shared: &C::SharedContext) @@ -17,16 +17,18 @@ pub fn traverse_dom<N, C>(root: N, C: DomTraversalContext<N> { debug_assert!(context.should_process(node)); - context.process_preorder(node); - - for kid in node.children() { - context.pre_process_child_hook(node, kid); - if context.should_process(kid) { - doit::<N, C>(context, kid); + if let RestyleResult::Continue = context.process_preorder(node) { + for kid in node.children() { + context.pre_process_child_hook(node, kid); + if context.should_process(kid) { + doit::<N, C>(context, kid); + } } } - context.process_postorder(node); + if context.needs_postorder_traversal() { + context.process_postorder(node); + } } let context = C::new(shared, root.opaque()); |