diff options
-rw-r--r-- | components/layout_2020/traversal.rs | 27 |
1 files changed, 15 insertions, 12 deletions
diff --git a/components/layout_2020/traversal.rs b/components/layout_2020/traversal.rs index 71f7a944247..1f73a7816f1 100644 --- a/components/layout_2020/traversal.rs +++ b/components/layout_2020/traversal.rs @@ -45,23 +45,26 @@ where ) where F: FnMut(E::ConcreteNode), { - unsafe { node.initialize_data() }; - - if !node.is_text_node() { - let el = node.as_element().unwrap(); - let mut data = el.mutate_data().unwrap(); - recalc_style_at(self, traversal_data, context, el, &mut data, note_child); - } - } - - fn process_postorder(&self, _style_context: &mut StyleContext<E>, node: E::ConcreteNode) { - if let Some(el) = node.as_element() { - unsafe { + unsafe { + node.initialize_data(); + if !node.is_text_node() { + let el = node.as_element().unwrap(); + let mut data = el.mutate_data().unwrap(); + recalc_style_at(self, traversal_data, context, el, &mut data, note_child); el.unset_dirty_descendants(); } } } + #[inline] + fn needs_postorder_traversal() -> bool { + false + } + + fn process_postorder(&self, _style_context: &mut StyleContext<E>, _node: E::ConcreteNode) { + panic!("this should never be called") + } + fn text_node_needs_traversal(node: E::ConcreteNode, parent_data: &ElementData) -> bool { node.get_style_and_layout_data().is_none() || !parent_data.damage.is_empty() } |