aboutsummaryrefslogtreecommitdiffstats
path: root/components
diff options
context:
space:
mode:
authorOriol Brufau <obrufau@igalia.com>2024-12-17 19:37:11 +0100
committerGitHub <noreply@github.com>2024-12-17 18:37:11 +0000
commit026d3717177def1b77e8790f3f045feea66df872 (patch)
tree9efcf2bd1f98879589fff7bbb98ccb58ec44ebfc /components
parent324e929390eba1537eb9fe9227ae54a884787508 (diff)
downloadservo-026d3717177def1b77e8790f3f045feea66df872.tar.gz
servo-026d3717177def1b77e8790f3f045feea66df872.zip
Shrink ContainingBlockPaddingAndBorder (#34666)
It only needs to store the block sizes, not the inline ones which have already been resolved. Signed-off-by: Oriol Brufau <obrufau@igalia.com>
Diffstat (limited to 'components')
-rw-r--r--components/layout_2020/flow/mod.rs52
1 files changed, 23 insertions, 29 deletions
diff --git a/components/layout_2020/flow/mod.rs b/components/layout_2020/flow/mod.rs
index 1505eecdb4a..d66ab0332a5 100644
--- a/components/layout_2020/flow/mod.rs
+++ b/components/layout_2020/flow/mod.rs
@@ -796,9 +796,9 @@ fn layout_in_flow_non_replaced_block_level_same_formatting_context(
let ContainingBlockPaddingAndBorder {
containing_block: containing_block_for_children,
pbm,
- box_size,
- min_box_size,
- max_box_size,
+ preferred_block_size,
+ min_block_size,
+ max_block_size,
depends_on_block_constraints,
available_block_size,
} = solve_containing_block_padding_and_border_for_in_flow_box(
@@ -942,16 +942,12 @@ fn layout_in_flow_non_replaced_block_level_same_formatting_context(
let available_block_size = available_block_size.unwrap_or(content_block_size);
let block_content_sizes = LazyCell::new(|| content_block_size.into());
let preferred_block_size =
- box_size
- .block
- .resolve(Size::FitContent, available_block_size, &block_content_sizes);
- let min_block_size = min_box_size
- .block
+ preferred_block_size.resolve(Size::FitContent, available_block_size, &block_content_sizes);
+ let min_block_size = min_block_size
.resolve_non_initial(available_block_size, &block_content_sizes)
.unwrap_or_default();
- let max_block_size = max_box_size
- .block
- .resolve_non_initial(available_block_size, &block_content_sizes);
+ let max_block_size =
+ max_block_size.resolve_non_initial(available_block_size, &block_content_sizes);
let block_size = preferred_block_size.clamp_between_extremums(min_block_size, max_block_size);
if let Some(ref mut sequential_layout_state) = sequential_layout_state {
@@ -1046,9 +1042,9 @@ impl IndependentNonReplacedContents {
let ContainingBlockPaddingAndBorder {
containing_block: containing_block_for_children,
pbm,
- box_size,
- min_box_size,
- max_box_size,
+ preferred_block_size,
+ min_block_size,
+ max_block_size,
depends_on_block_constraints,
available_block_size,
} = solve_containing_block_padding_and_border_for_in_flow_box(
@@ -1070,18 +1066,16 @@ impl IndependentNonReplacedContents {
let available_block_size =
available_block_size.unwrap_or(layout.content_block_size);
let block_content_sizes = LazyCell::new(|| layout.content_block_size.into());
- let preferred_block_size = box_size.block.resolve(
+ let preferred_block_size = preferred_block_size.resolve(
Size::FitContent,
available_block_size,
&block_content_sizes,
);
- let min_block_size = min_box_size
- .block
+ let min_block_size = min_block_size
.resolve_non_initial(available_block_size, &block_content_sizes)
.unwrap_or_default();
- let max_block_size = max_box_size
- .block
- .resolve_non_initial(available_block_size, &block_content_sizes);
+ let max_block_size =
+ max_block_size.resolve_non_initial(available_block_size, &block_content_sizes);
let block_size =
preferred_block_size.clamp_between_extremums(min_block_size, max_block_size);
(block_size, containing_block_for_children.size.inline)
@@ -1597,9 +1591,9 @@ impl ReplacedContents {
struct ContainingBlockPaddingAndBorder<'a> {
containing_block: ContainingBlock<'a>,
pbm: PaddingBorderMargin,
- box_size: LogicalVec2<Size<Au>>,
- min_box_size: LogicalVec2<Size<Au>>,
- max_box_size: LogicalVec2<Size<Au>>,
+ preferred_block_size: Size<Au>,
+ min_block_size: Size<Au>,
+ max_block_size: Size<Au>,
depends_on_block_constraints: bool,
available_block_size: Option<Au>,
}
@@ -1643,9 +1637,9 @@ fn solve_containing_block_padding_and_border_for_in_flow_box<'a>(
return ContainingBlockPaddingAndBorder {
containing_block: containing_block_for_children,
pbm: PaddingBorderMargin::zero(),
- box_size: LogicalVec2::default(),
- min_box_size: LogicalVec2::default(),
- max_box_size: LogicalVec2::default(),
+ preferred_block_size: Size::default(),
+ min_block_size: Size::default(),
+ max_block_size: Size::default(),
depends_on_block_constraints: false,
// The available block size may actually be definite, but it should be irrelevant
// since the sizing properties are set to their initial value.
@@ -1730,9 +1724,9 @@ fn solve_containing_block_padding_and_border_for_in_flow_box<'a>(
ContainingBlockPaddingAndBorder {
containing_block: containing_block_for_children,
pbm,
- box_size: content_box_size,
- min_box_size: content_min_box_size,
- max_box_size: content_max_box_size,
+ preferred_block_size: content_box_size.block,
+ min_block_size: content_min_box_size.block,
+ max_block_size: content_max_box_size.block,
depends_on_block_constraints,
available_block_size,
}