From d5c9e569bf3fa2908483c437ba636123efa31a82 Mon Sep 17 00:00:00 2001 From: atbrakhi Date: Sat, 17 Feb 2024 02:10:14 +0100 Subject: [PATCH] make size of DefiniteContainingBlock use app units (#31369) --- components/layout_2020/flow/inline.rs | 2 +- components/layout_2020/flow/root.rs | 4 ++-- components/layout_2020/lib.rs | 7 +++--- components/layout_2020/positioned.rs | 32 +++++++++++++++++---------- 4 files changed, 27 insertions(+), 18 deletions(-) diff --git a/components/layout_2020/flow/inline.rs b/components/layout_2020/flow/inline.rs index 8fd62d164b6..0df7f1cb894 100644 --- a/components/layout_2020/flow/inline.rs +++ b/components/layout_2020/flow/inline.rs @@ -681,7 +681,7 @@ impl<'a, 'b> InlineFormattingContextState<'a, 'b> { let pbm_end = Length::from( inline_box_state.pbm.padding.inline_end + inline_box_state.pbm.border.inline_end, ) + inline_box_state.pbm.margin.inline_end.auto_is(Length::zero); - self.current_line_segment.inline_size += pbm_end.into(); + self.current_line_segment.inline_size += pbm_end; } } diff --git a/components/layout_2020/flow/root.rs b/components/layout_2020/flow/root.rs index 2dfd34fbfe7..cd2ab4dfe8a 100644 --- a/components/layout_2020/flow/root.rs +++ b/components/layout_2020/flow/root.rs @@ -274,8 +274,8 @@ impl BoxTree { ); let initial_containing_block = DefiniteContainingBlock { size: LogicalVec2 { - inline: physical_containing_block.size.width, - block: physical_containing_block.size.height, + inline: physical_containing_block.size.width.into(), + block: physical_containing_block.size.height.into(), }, style, }; diff --git a/components/layout_2020/lib.rs b/components/layout_2020/lib.rs index d8202ffccfe..8f25291fd75 100644 --- a/components/layout_2020/lib.rs +++ b/components/layout_2020/lib.rs @@ -25,6 +25,7 @@ mod style_ext; pub mod table; pub mod traversal; +use app_units::Au; pub use flow::BoxTree; pub use fragment_tree::FragmentTree; use style::properties::ComputedValues; @@ -39,15 +40,15 @@ pub struct ContainingBlock<'a> { } struct DefiniteContainingBlock<'a> { - size: LogicalVec2, + size: LogicalVec2, 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), + inline_size: definite.size.inline.into(), + block_size: LengthOrAuto::LengthPercentage(definite.size.block.into()), style: definite.style, } } diff --git a/components/layout_2020/positioned.rs b/components/layout_2020/positioned.rs index e742ab0d184..b3ffbc97352 100644 --- a/components/layout_2020/positioned.rs +++ b/components/layout_2020/positioned.rs @@ -253,7 +253,7 @@ impl PositioningContext { } .inflate(&new_fragment.padding); let containing_block = DefiniteContainingBlock { - size: padding_rect.size.clone(), + size: padding_rect.size.clone().into(), style: &new_fragment.style, }; @@ -499,7 +499,7 @@ impl HoistedAbsolutelyPositionedBox { let shared_fragment = self.fragment.borrow(); let inline_axis_solver = AbsoluteAxisSolver { - containing_size: cbis, + containing_size: cbis.into(), padding_border_sum: pbm.padding_border_sums.inline.into(), computed_margin_start: pbm.margin.inline_start, computed_margin_end: pbm.margin.inline_end, @@ -508,7 +508,7 @@ impl HoistedAbsolutelyPositionedBox { }; let block_axis_solver = AbsoluteAxisSolver { - containing_size: cbbs, + containing_size: cbbs.into(), padding_border_sum: pbm.padding_border_sums.block.into(), computed_margin_start: pbm.margin.block_start, computed_margin_end: pbm.margin.block_end, @@ -557,11 +557,13 @@ impl HoistedAbsolutelyPositionedBox { Anchor::End(end) => end, }; let margin_sum = inline_axis.margin_start + inline_axis.margin_end; - let available_size = - cbis - anchor - pbm.padding_border_sums.inline.into() - margin_sum; + let available_size = cbis - + anchor.into() - + pbm.padding_border_sums.inline - + margin_sum.into(); non_replaced .inline_content_sizes(layout_context) - .shrink_to_fit(available_size.into()) + .shrink_to_fit(available_size) .into() }); @@ -673,15 +675,21 @@ impl HoistedAbsolutelyPositionedBox { let pb = &pbm.padding + &pbm.border; let inline_start = match inline_axis.anchor { Anchor::Start(start) => start + pb.inline_start.into() + margin.inline_start, - Anchor::End(end) => { - cbis - end - pb.inline_end.into() - margin.inline_end - content_size.inline - }, + Anchor::End(end) => Length::from( + cbis - end.into() - + pb.inline_end - + margin.inline_end.into() - + content_size.inline.into(), + ), }; let block_start = match block_axis.anchor { Anchor::Start(start) => start + pb.block_start.into() + margin.block_start, - Anchor::End(end) => { - cbbs - end - pb.block_end.into() - margin.block_end - content_size.block - }, + Anchor::End(end) => Length::from( + cbbs - end.into() - + pb.block_end - + margin.block_end.into() - + content_size.block.into(), + ), }; let content_rect = LogicalRect {