aboutsummaryrefslogtreecommitdiffstats
path: root/components/style/sequential.rs
diff options
context:
space:
mode:
Diffstat (limited to 'components/style/sequential.rs')
-rw-r--r--components/style/sequential.rs18
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());