An element establishing a formatting context *is* the containing block for its contents

This commit is contained in:
Simon Sapin 2020-06-19 19:54:27 +02:00
parent 3889f69a71
commit 080f5bb763
2 changed files with 6 additions and 8 deletions

View file

@ -138,18 +138,18 @@ impl BlockContainer {
pub(super) fn inline_content_sizes( pub(super) fn inline_content_sizes(
&self, &self,
layout_context: &LayoutContext, layout_context: &LayoutContext,
containing_block_writing_mode: WritingMode, writing_mode: WritingMode,
) -> ContentSizes { ) -> ContentSizes {
match &self { match &self {
Self::BlockLevelBoxes(boxes) => boxes Self::BlockLevelBoxes(boxes) => boxes
.par_iter() .par_iter()
.map(|box_| { .map(|box_| {
box_.borrow_mut() box_.borrow_mut()
.inline_content_sizes(layout_context, containing_block_writing_mode) .inline_content_sizes(layout_context, writing_mode)
}) })
.reduce(ContentSizes::zero, ContentSizes::max), .reduce(ContentSizes::zero, ContentSizes::max),
Self::InlineFormattingContext(context) => { Self::InlineFormattingContext(context) => {
context.inline_content_sizes(layout_context, containing_block_writing_mode) context.inline_content_sizes(layout_context, writing_mode)
}, },
} }
} }

View file

@ -159,9 +159,7 @@ impl IndependentFormattingContext {
let contents = &non_replaced.contents; let contents = &non_replaced.contents;
sizing::outer_inline_and_percentages(&style, containing_block_writing_mode, || { sizing::outer_inline_and_percentages(&style, containing_block_writing_mode, || {
content_sizes content_sizes
.get_or_insert_with(|| { .get_or_insert_with(|| contents.inline_content_sizes(layout_context, style.writing_mode))
contents.inline_content_sizes(layout_context, style.writing_mode)
})
.clone() .clone()
}) })
}, },
@ -211,12 +209,12 @@ impl NonReplacedFormattingContextContents {
pub fn inline_content_sizes( pub fn inline_content_sizes(
&self, &self,
layout_context: &LayoutContext, layout_context: &LayoutContext,
containing_block_writing_mode: WritingMode, writing_mode: WritingMode,
) -> ContentSizes { ) -> ContentSizes {
match self { match self {
Self::Flow(inner) => inner Self::Flow(inner) => inner
.contents .contents
.inline_content_sizes(layout_context, containing_block_writing_mode), .inline_content_sizes(layout_context, writing_mode),
Self::Flex(inner) => inner.inline_content_sizes(), Self::Flex(inner) => inner.inline_content_sizes(),
} }
} }