From f09c14aa6b4d95a2010953bfb763900da4bf12d4 Mon Sep 17 00:00:00 2001 From: Simon Sapin Date: Sat, 7 Dec 2019 23:40:36 +0100 Subject: [PATCH] impl From<&'_ DefiniteContainingBlock> for ContainingBlock --- components/layout_2020/flow/root.rs | 24 +++++++++--------------- components/layout_2020/lib.rs | 10 ++++++++++ 2 files changed, 19 insertions(+), 15 deletions(-) diff --git a/components/layout_2020/flow/root.rs b/components/layout_2020/flow/root.rs index f1c301771f9..2415d18e0ca 100644 --- a/components/layout_2020/flow/root.rs +++ b/components/layout_2020/flow/root.rs @@ -16,12 +16,12 @@ use crate::positioned::AbsolutelyPositionedBox; use crate::replaced::ReplacedContent; use crate::sizing::ContentSizesRequest; use crate::style_ext::{Display, DisplayGeneratingBox, DisplayInside}; -use crate::{ContainingBlock, DefiniteContainingBlock}; +use crate::DefiniteContainingBlock; use rayon::iter::{IntoParallelRefIterator, ParallelExtend, ParallelIterator}; use script_layout_interface::wrapper_traits::LayoutNode; use servo_arc::Arc; use style::properties::ComputedValues; -use style::values::computed::{Length, LengthOrAuto}; +use style::values::computed::Length; use style::Zero; use style_traits::CSSPixel; @@ -99,31 +99,25 @@ impl BoxTreeRoot { viewport: geom::Size, ) -> FragmentTreeRoot { let style = ComputedValues::initial_values(); - let initial_containing_block_size = Vec2 { - inline: Length::new(viewport.width), - block: Length::new(viewport.height), - }; - - let initial_containing_block = ContainingBlock { - inline_size: initial_containing_block_size.inline, - block_size: LengthOrAuto::LengthPercentage(initial_containing_block_size.block), + let initial_containing_block = DefiniteContainingBlock { + size: Vec2 { + inline: Length::new(viewport.width), + block: Length::new(viewport.height), + }, // FIXME: use the document’s mode: // https://drafts.csswg.org/css-writing-modes/#principal-flow style, }; + let dummy_tree_rank = 0; let mut absolutely_positioned_fragments = vec![]; let mut independent_layout = self.0.layout( layout_context, - &initial_containing_block, + &(&initial_containing_block).into(), dummy_tree_rank, &mut absolutely_positioned_fragments, ); - let initial_containing_block = DefiniteContainingBlock { - size: initial_containing_block_size, - style, - }; independent_layout.fragments.par_extend( absolutely_positioned_fragments .par_iter() diff --git a/components/layout_2020/lib.rs b/components/layout_2020/lib.rs index f0c56afa6f1..8e923f870d7 100644 --- a/components/layout_2020/lib.rs +++ b/components/layout_2020/lib.rs @@ -44,6 +44,16 @@ struct DefiniteContainingBlock<'a> { style: &'a ComputedValues, } +impl<'a> From<&'_ DefiniteContainingBlock<'a>> for ContainingBlock<'a> { + fn from(definite: &DefiniteContainingBlock<'a>) -> Self { + ContainingBlock { + inline_size: definite.size.inline, + block_size: LengthOrAuto::LengthPercentage(definite.size.block), + style: definite.style, + } + } +} + /// https://drafts.csswg.org/css2/visuren.html#relative-positioning fn relative_adjustement( style: &ComputedValues,