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(
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;
}
}

View file

@ -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,
};

View file

@ -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<Length>,
size: LogicalVec2<Au>,
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,
}
}

View file

@ -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 {