mirror of
https://github.com/servo/servo.git
synced 2025-08-04 13:10:20 +01:00
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>
This commit is contained in:
parent
324e929390
commit
026d371717
1 changed files with 23 additions and 29 deletions
|
@ -796,9 +796,9 @@ fn layout_in_flow_non_replaced_block_level_same_formatting_context(
|
||||||
let ContainingBlockPaddingAndBorder {
|
let ContainingBlockPaddingAndBorder {
|
||||||
containing_block: containing_block_for_children,
|
containing_block: containing_block_for_children,
|
||||||
pbm,
|
pbm,
|
||||||
box_size,
|
preferred_block_size,
|
||||||
min_box_size,
|
min_block_size,
|
||||||
max_box_size,
|
max_block_size,
|
||||||
depends_on_block_constraints,
|
depends_on_block_constraints,
|
||||||
available_block_size,
|
available_block_size,
|
||||||
} = solve_containing_block_padding_and_border_for_in_flow_box(
|
} = 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 available_block_size = available_block_size.unwrap_or(content_block_size);
|
||||||
let block_content_sizes = LazyCell::new(|| content_block_size.into());
|
let block_content_sizes = LazyCell::new(|| content_block_size.into());
|
||||||
let preferred_block_size =
|
let preferred_block_size =
|
||||||
box_size
|
preferred_block_size.resolve(Size::FitContent, available_block_size, &block_content_sizes);
|
||||||
.block
|
let min_block_size = min_block_size
|
||||||
.resolve(Size::FitContent, available_block_size, &block_content_sizes);
|
|
||||||
let min_block_size = min_box_size
|
|
||||||
.block
|
|
||||||
.resolve_non_initial(available_block_size, &block_content_sizes)
|
.resolve_non_initial(available_block_size, &block_content_sizes)
|
||||||
.unwrap_or_default();
|
.unwrap_or_default();
|
||||||
let max_block_size = max_box_size
|
let max_block_size =
|
||||||
.block
|
max_block_size.resolve_non_initial(available_block_size, &block_content_sizes);
|
||||||
.resolve_non_initial(available_block_size, &block_content_sizes);
|
|
||||||
let block_size = preferred_block_size.clamp_between_extremums(min_block_size, max_block_size);
|
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 {
|
if let Some(ref mut sequential_layout_state) = sequential_layout_state {
|
||||||
|
@ -1046,9 +1042,9 @@ impl IndependentNonReplacedContents {
|
||||||
let ContainingBlockPaddingAndBorder {
|
let ContainingBlockPaddingAndBorder {
|
||||||
containing_block: containing_block_for_children,
|
containing_block: containing_block_for_children,
|
||||||
pbm,
|
pbm,
|
||||||
box_size,
|
preferred_block_size,
|
||||||
min_box_size,
|
min_block_size,
|
||||||
max_box_size,
|
max_block_size,
|
||||||
depends_on_block_constraints,
|
depends_on_block_constraints,
|
||||||
available_block_size,
|
available_block_size,
|
||||||
} = solve_containing_block_padding_and_border_for_in_flow_box(
|
} = solve_containing_block_padding_and_border_for_in_flow_box(
|
||||||
|
@ -1070,18 +1066,16 @@ impl IndependentNonReplacedContents {
|
||||||
let available_block_size =
|
let available_block_size =
|
||||||
available_block_size.unwrap_or(layout.content_block_size);
|
available_block_size.unwrap_or(layout.content_block_size);
|
||||||
let block_content_sizes = LazyCell::new(|| layout.content_block_size.into());
|
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,
|
Size::FitContent,
|
||||||
available_block_size,
|
available_block_size,
|
||||||
&block_content_sizes,
|
&block_content_sizes,
|
||||||
);
|
);
|
||||||
let min_block_size = min_box_size
|
let min_block_size = min_block_size
|
||||||
.block
|
|
||||||
.resolve_non_initial(available_block_size, &block_content_sizes)
|
.resolve_non_initial(available_block_size, &block_content_sizes)
|
||||||
.unwrap_or_default();
|
.unwrap_or_default();
|
||||||
let max_block_size = max_box_size
|
let max_block_size =
|
||||||
.block
|
max_block_size.resolve_non_initial(available_block_size, &block_content_sizes);
|
||||||
.resolve_non_initial(available_block_size, &block_content_sizes);
|
|
||||||
let block_size =
|
let block_size =
|
||||||
preferred_block_size.clamp_between_extremums(min_block_size, max_block_size);
|
preferred_block_size.clamp_between_extremums(min_block_size, max_block_size);
|
||||||
(block_size, containing_block_for_children.size.inline)
|
(block_size, containing_block_for_children.size.inline)
|
||||||
|
@ -1597,9 +1591,9 @@ impl ReplacedContents {
|
||||||
struct ContainingBlockPaddingAndBorder<'a> {
|
struct ContainingBlockPaddingAndBorder<'a> {
|
||||||
containing_block: ContainingBlock<'a>,
|
containing_block: ContainingBlock<'a>,
|
||||||
pbm: PaddingBorderMargin,
|
pbm: PaddingBorderMargin,
|
||||||
box_size: LogicalVec2<Size<Au>>,
|
preferred_block_size: Size<Au>,
|
||||||
min_box_size: LogicalVec2<Size<Au>>,
|
min_block_size: Size<Au>,
|
||||||
max_box_size: LogicalVec2<Size<Au>>,
|
max_block_size: Size<Au>,
|
||||||
depends_on_block_constraints: bool,
|
depends_on_block_constraints: bool,
|
||||||
available_block_size: Option<Au>,
|
available_block_size: Option<Au>,
|
||||||
}
|
}
|
||||||
|
@ -1643,9 +1637,9 @@ fn solve_containing_block_padding_and_border_for_in_flow_box<'a>(
|
||||||
return ContainingBlockPaddingAndBorder {
|
return ContainingBlockPaddingAndBorder {
|
||||||
containing_block: containing_block_for_children,
|
containing_block: containing_block_for_children,
|
||||||
pbm: PaddingBorderMargin::zero(),
|
pbm: PaddingBorderMargin::zero(),
|
||||||
box_size: LogicalVec2::default(),
|
preferred_block_size: Size::default(),
|
||||||
min_box_size: LogicalVec2::default(),
|
min_block_size: Size::default(),
|
||||||
max_box_size: LogicalVec2::default(),
|
max_block_size: Size::default(),
|
||||||
depends_on_block_constraints: false,
|
depends_on_block_constraints: false,
|
||||||
// The available block size may actually be definite, but it should be irrelevant
|
// The available block size may actually be definite, but it should be irrelevant
|
||||||
// since the sizing properties are set to their initial value.
|
// 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 {
|
ContainingBlockPaddingAndBorder {
|
||||||
containing_block: containing_block_for_children,
|
containing_block: containing_block_for_children,
|
||||||
pbm,
|
pbm,
|
||||||
box_size: content_box_size,
|
preferred_block_size: content_box_size.block,
|
||||||
min_box_size: content_min_box_size,
|
min_block_size: content_min_box_size.block,
|
||||||
max_box_size: content_max_box_size,
|
max_block_size: content_max_box_size.block,
|
||||||
depends_on_block_constraints,
|
depends_on_block_constraints,
|
||||||
available_block_size,
|
available_block_size,
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue