diff options
author | Anthony Ramine <nox@nox.paris> | 2019-11-12 12:30:03 +0100 |
---|---|---|
committer | Anthony Ramine <nox@nox.paris> | 2019-11-25 10:54:46 +0100 |
commit | 144675677495b9c63c942f4458bc7965908deb94 (patch) | |
tree | c7422b1c7b87a1153024001f0c0352685112f92c /components/layout_thread_2020 | |
parent | ea3249550467bd9f5a1de8271ed4fcaa70a7cdda (diff) | |
download | servo-144675677495b9c63c942f4458bc7965908deb94.tar.gz servo-144675677495b9c63c942f4458bc7965908deb94.zip |
Pass a LayoutContext to TextRun::layout in 2020
Diffstat (limited to 'components/layout_thread_2020')
-rw-r--r-- | components/layout_thread_2020/lib.rs | 28 |
1 files changed, 19 insertions, 9 deletions
diff --git a/components/layout_thread_2020/lib.rs b/components/layout_thread_2020/lib.rs index bf18c584231..67ae81ca0a7 100644 --- a/components/layout_thread_2020/lib.rs +++ b/components/layout_thread_2020/lib.rs @@ -1087,16 +1087,28 @@ impl LayoutThread { RecalcStyle::pre_traverse(element, shared) }; - if token.should_traverse() { + let box_tree = if token.should_traverse() { driver::traverse_dom(&traversal, token, None); let shared = DomTraversal::<ServoLayoutElement>::shared_context(&traversal); - let box_tree = - BoxTreeRoot::construct(shared, document.root_element().unwrap().as_node()); - let fragment_tree = box_tree.layout(Size2D::new( - self.viewport_size.width.to_f32_px(), - self.viewport_size.height.to_f32_px(), - )); + Some(BoxTreeRoot::construct( + shared, + document.root_element().unwrap().as_node(), + )) + } else { + None + }; + + layout_context = traversal.destroy(); + + if let Some(box_tree) = box_tree { + let fragment_tree = box_tree.layout( + &layout_context, + Size2D::new( + self.viewport_size.width.to_f32_px(), + self.viewport_size.height.to_f32_px(), + ), + ); *self.box_tree_root.borrow_mut() = Some(box_tree); *self.fragment_tree_root.borrow_mut() = Some(fragment_tree); } @@ -1105,8 +1117,6 @@ impl LayoutThread { unsafe { element.unset_snapshot_flags() } } - layout_context = traversal.destroy(); - // GC the rule tree if some heuristics are met. unsafe { layout_context.style_context.stylist.rule_tree().maybe_gc(); |