make size of DefiniteContainingBlock use app units (#31369)

This commit is contained in:
atbrakhi 2024-02-17 02:10:14 +01:00 committed by GitHub
parent 7f00661d1c
commit d5c9e569bf
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 27 additions and 18 deletions

View file

@ -681,7 +681,7 @@ impl<'a, 'b> InlineFormattingContextState<'a, 'b> {
let pbm_end = Length::from( let pbm_end = Length::from(
inline_box_state.pbm.padding.inline_end + inline_box_state.pbm.border.inline_end, 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); ) + 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;
} }
} }

View file

@ -274,8 +274,8 @@ impl BoxTree {
); );
let initial_containing_block = DefiniteContainingBlock { let initial_containing_block = DefiniteContainingBlock {
size: LogicalVec2 { size: LogicalVec2 {
inline: physical_containing_block.size.width, inline: physical_containing_block.size.width.into(),
block: physical_containing_block.size.height, block: physical_containing_block.size.height.into(),
}, },
style, style,
}; };

View file

@ -25,6 +25,7 @@ mod style_ext;
pub mod table; pub mod table;
pub mod traversal; pub mod traversal;
use app_units::Au;
pub use flow::BoxTree; pub use flow::BoxTree;
pub use fragment_tree::FragmentTree; pub use fragment_tree::FragmentTree;
use style::properties::ComputedValues; use style::properties::ComputedValues;
@ -39,15 +40,15 @@ pub struct ContainingBlock<'a> {
} }
struct DefiniteContainingBlock<'a> { struct DefiniteContainingBlock<'a> {
size: LogicalVec2<Length>, size: LogicalVec2<Au>,
style: &'a ComputedValues, style: &'a ComputedValues,
} }
impl<'a> From<&'_ DefiniteContainingBlock<'a>> for ContainingBlock<'a> { impl<'a> From<&'_ DefiniteContainingBlock<'a>> for ContainingBlock<'a> {
fn from(definite: &DefiniteContainingBlock<'a>) -> Self { fn from(definite: &DefiniteContainingBlock<'a>) -> Self {
ContainingBlock { ContainingBlock {
inline_size: definite.size.inline, inline_size: definite.size.inline.into(),
block_size: LengthOrAuto::LengthPercentage(definite.size.block), block_size: LengthOrAuto::LengthPercentage(definite.size.block.into()),
style: definite.style, style: definite.style,
} }
} }

View file

@ -253,7 +253,7 @@ impl PositioningContext {
} }
.inflate(&new_fragment.padding); .inflate(&new_fragment.padding);
let containing_block = DefiniteContainingBlock { let containing_block = DefiniteContainingBlock {
size: padding_rect.size.clone(), size: padding_rect.size.clone().into(),
style: &new_fragment.style, style: &new_fragment.style,
}; };
@ -499,7 +499,7 @@ impl HoistedAbsolutelyPositionedBox {
let shared_fragment = self.fragment.borrow(); let shared_fragment = self.fragment.borrow();
let inline_axis_solver = AbsoluteAxisSolver { let inline_axis_solver = AbsoluteAxisSolver {
containing_size: cbis, containing_size: cbis.into(),
padding_border_sum: pbm.padding_border_sums.inline.into(), padding_border_sum: pbm.padding_border_sums.inline.into(),
computed_margin_start: pbm.margin.inline_start, computed_margin_start: pbm.margin.inline_start,
computed_margin_end: pbm.margin.inline_end, computed_margin_end: pbm.margin.inline_end,
@ -508,7 +508,7 @@ impl HoistedAbsolutelyPositionedBox {
}; };
let block_axis_solver = AbsoluteAxisSolver { let block_axis_solver = AbsoluteAxisSolver {
containing_size: cbbs, containing_size: cbbs.into(),
padding_border_sum: pbm.padding_border_sums.block.into(), padding_border_sum: pbm.padding_border_sums.block.into(),
computed_margin_start: pbm.margin.block_start, computed_margin_start: pbm.margin.block_start,
computed_margin_end: pbm.margin.block_end, computed_margin_end: pbm.margin.block_end,
@ -557,11 +557,13 @@ impl HoistedAbsolutelyPositionedBox {
Anchor::End(end) => end, Anchor::End(end) => end,
}; };
let margin_sum = inline_axis.margin_start + inline_axis.margin_end; let margin_sum = inline_axis.margin_start + inline_axis.margin_end;
let available_size = let available_size = cbis -
cbis - anchor - pbm.padding_border_sums.inline.into() - margin_sum; anchor.into() -
pbm.padding_border_sums.inline -
margin_sum.into();
non_replaced non_replaced
.inline_content_sizes(layout_context) .inline_content_sizes(layout_context)
.shrink_to_fit(available_size.into()) .shrink_to_fit(available_size)
.into() .into()
}); });
@ -673,15 +675,21 @@ impl HoistedAbsolutelyPositionedBox {
let pb = &pbm.padding + &pbm.border; let pb = &pbm.padding + &pbm.border;
let inline_start = match inline_axis.anchor { let inline_start = match inline_axis.anchor {
Anchor::Start(start) => start + pb.inline_start.into() + margin.inline_start, Anchor::Start(start) => start + pb.inline_start.into() + margin.inline_start,
Anchor::End(end) => { Anchor::End(end) => Length::from(
cbis - end - pb.inline_end.into() - margin.inline_end - content_size.inline cbis - end.into() -
}, pb.inline_end -
margin.inline_end.into() -
content_size.inline.into(),
),
}; };
let block_start = match block_axis.anchor { let block_start = match block_axis.anchor {
Anchor::Start(start) => start + pb.block_start.into() + margin.block_start, Anchor::Start(start) => start + pb.block_start.into() + margin.block_start,
Anchor::End(end) => { Anchor::End(end) => Length::from(
cbbs - end - pb.block_end.into() - margin.block_end - content_size.block cbbs - end.into() -
}, pb.block_end -
margin.block_end.into() -
content_size.block.into(),
),
}; };
let content_rect = LogicalRect { let content_rect = LogicalRect {