aboutsummaryrefslogtreecommitdiffstats
path: root/components/style/gecko/traversal.rs
diff options
context:
space:
mode:
authorBobby Holley <bobbyholley@gmail.com>2017-07-12 17:46:21 -0700
committerBobby Holley <bobbyholley@gmail.com>2017-07-15 14:45:51 -0700
commitb7de96e7025c7336ff34ec779d3dfceb268d647d (patch)
tree3e55ab7b0f5cffaf6c1cb3828e4e354602e4415c /components/style/gecko/traversal.rs
parente534ec9e47a5c4b1b53085925266529b5989da8d (diff)
downloadservo-b7de96e7025c7336ff34ec779d3dfceb268d647d.tar.gz
servo-b7de96e7025c7336ff34ec779d3dfceb268d647d.zip
Pass a callback to recalc_style_at to avoid traversing children twice.
MozReview-Commit-ID: DIHXaVNzbFM
Diffstat (limited to 'components/style/gecko/traversal.rs')
-rw-r--r--components/style/gecko/traversal.rs17
1 files changed, 9 insertions, 8 deletions
diff --git a/components/style/gecko/traversal.rs b/components/style/gecko/traversal.rs
index 9b0770318ce..98a587f1919 100644
--- a/components/style/gecko/traversal.rs
+++ b/components/style/gecko/traversal.rs
@@ -5,7 +5,7 @@
//! Gecko-specific bits for the styling DOM traversal.
use context::{SharedStyleContext, StyleContext};
-use dom::{NodeInfo, TNode, TElement};
+use dom::{TNode, TElement};
use gecko::wrapper::{GeckoElement, GeckoNode};
use traversal::{DomTraversal, PerLevelTraversalData, TraversalDriver, recalc_style_at};
@@ -27,15 +27,16 @@ impl<'a> RecalcStyleOnly<'a> {
}
impl<'recalc, 'le> DomTraversal<GeckoElement<'le>> for RecalcStyleOnly<'recalc> {
- fn process_preorder(&self,
- traversal_data: &PerLevelTraversalData,
- context: &mut StyleContext<GeckoElement<'le>>,
- node: GeckoNode<'le>)
+ fn process_preorder<F>(&self,
+ traversal_data: &PerLevelTraversalData,
+ context: &mut StyleContext<GeckoElement<'le>>,
+ node: GeckoNode<'le>,
+ note_child: F)
+ where F: FnMut(GeckoNode<'le>),
{
- if node.is_element() {
- let el = node.as_element().unwrap();
+ if let Some(el) = node.as_element() {
let mut data = unsafe { el.ensure_data() };
- recalc_style_at(self, traversal_data, context, el, &mut data);
+ recalc_style_at(self, traversal_data, context, el, &mut data, note_child);
}
}