mirror of
https://github.com/servo/servo.git
synced 2025-08-06 06:00:15 +01:00
Fix various issues with replaced elements in flex layout (#33263)
In particular, this takes into account that flex items may be stretched, and if they have an aspect ratio, we ma6y need to convert the stretched size through the ratio. Signed-off-by: Oriol Brufau <obrufau@igalia.com> Co-authored-by: Martin Robinson <mrobinson@igalia.com>
This commit is contained in:
parent
4ae2610c24
commit
3acc9edd82
43 changed files with 334 additions and 481 deletions
|
@ -980,7 +980,6 @@ impl FloatBox {
|
|||
content_size = replaced.contents.used_size_as_if_inline_element(
|
||||
containing_block,
|
||||
&replaced.style,
|
||||
None,
|
||||
&pbm,
|
||||
);
|
||||
children = replaced.contents.make_fragments(
|
||||
|
|
|
@ -1917,12 +1917,7 @@ impl IndependentFormattingContext {
|
|||
IndependentFormattingContext::Replaced(replaced) => {
|
||||
let size = replaced
|
||||
.contents
|
||||
.used_size_as_if_inline_element(
|
||||
layout.containing_block,
|
||||
&replaced.style,
|
||||
None,
|
||||
&pbm,
|
||||
)
|
||||
.used_size_as_if_inline_element(layout.containing_block, &replaced.style, &pbm)
|
||||
.to_physical_size(container_writing_mode);
|
||||
let fragments = replaced.contents.make_fragments(&replaced.style, size);
|
||||
let content_rect = PhysicalRect::new(pbm_physical_origin, size);
|
||||
|
@ -2383,6 +2378,7 @@ impl<'layout_data> ContentSizesComputation<'layout_data> {
|
|||
self.layout_context,
|
||||
self.containing_block,
|
||||
&LogicalVec2::zero(),
|
||||
false, /* auto_block_size_stretches_to_containing_block */
|
||||
);
|
||||
|
||||
if !inline_formatting_context
|
||||
|
|
|
@ -372,6 +372,7 @@ fn calculate_inline_content_size_for_block_level_boxes(
|
|||
layout_context,
|
||||
containing_block,
|
||||
&LogicalVec2::zero(),
|
||||
false, /* auto_block_size_stretches_to_containing_block */
|
||||
)
|
||||
.max(ContentSizes::zero());
|
||||
let style_box = &float_box.contents.style().get_box();
|
||||
|
@ -384,6 +385,7 @@ fn calculate_inline_content_size_for_block_level_boxes(
|
|||
style,
|
||||
&containing_block,
|
||||
&LogicalVec2::zero(),
|
||||
false, /* auto_block_size_stretches_to_containing_block */
|
||||
|containing_block_for_children| {
|
||||
contents.inline_content_sizes(layout_context, containing_block_for_children)
|
||||
},
|
||||
|
@ -400,6 +402,7 @@ fn calculate_inline_content_size_for_block_level_boxes(
|
|||
layout_context,
|
||||
containing_block,
|
||||
&LogicalVec2::zero(),
|
||||
false, /* auto_block_size_stretches_to_containing_block */
|
||||
)
|
||||
.max(ContentSizes::zero());
|
||||
Some((size, Float::None, independent.style().get_box().clear))
|
||||
|
@ -1296,7 +1299,7 @@ fn layout_in_flow_replaced_block_level(
|
|||
mut sequential_layout_state: Option<&mut SequentialLayoutState>,
|
||||
) -> BoxFragment {
|
||||
let pbm = style.padding_border_margin(containing_block);
|
||||
let content_size = replaced.used_size_as_if_inline_element(containing_block, style, None, &pbm);
|
||||
let content_size = replaced.used_size_as_if_inline_element(containing_block, style, &pbm);
|
||||
|
||||
let margin_inline_start;
|
||||
let margin_inline_end;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue