diff options
Diffstat (limited to 'components/layout_2020/positioned.rs')
-rw-r--r-- | components/layout_2020/positioned.rs | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/components/layout_2020/positioned.rs b/components/layout_2020/positioned.rs index df9ab1e7712..0aea0f76460 100644 --- a/components/layout_2020/positioned.rs +++ b/components/layout_2020/positioned.rs @@ -536,12 +536,25 @@ impl HoistedAbsolutelyPositionedBox { inline: inline_axis_solver.inset_sum(), block: block_axis_solver.inset_sum(), }; + let automatic_size = |alignment: AlignFlags, offsets: &AbsoluteBoxOffsets| { + if alignment.value() == AlignFlags::STRETCH && !offsets.either_auto() { + Size::Stretch + } else { + Size::FitContent + } + }; let used_size = replaced.used_size_as_if_inline_element_from_content_box_sizes( containing_block, &style, context.preferred_aspect_ratio(&pbm.padding_border_sums), - &block_axis_solver.computed_sizes, - &inline_axis_solver.computed_sizes, + LogicalVec2 { + inline: &inline_axis_solver.computed_sizes, + block: &block_axis_solver.computed_sizes, + }, + LogicalVec2 { + inline: automatic_size(inline_alignment, &inline_axis_solver.box_offsets), + block: automatic_size(block_alignment, &block_axis_solver.box_offsets), + }, pbm.padding_border_sums + pbm.margin.auto_is(Au::zero).sum() + inset_sums, ); inline_axis_solver.override_size(used_size.inline); |