mirror of
https://github.com/servo/servo.git
synced 2025-07-24 07:40:27 +01:00
Move call to for_maybe_position_relative
out of layout_in_flow_non_replaced_block_level
This commit is contained in:
parent
672d971d58
commit
04b701b9e0
1 changed files with 107 additions and 97 deletions
|
@ -269,7 +269,11 @@ impl BlockLevelBox {
|
|||
) -> Fragment {
|
||||
match self {
|
||||
BlockLevelBox::SameFormattingContextBlock { style, contents } => {
|
||||
Fragment::Box(layout_in_flow_non_replaced_block_level(
|
||||
Fragment::Box(positioning_context.for_maybe_position_relative(
|
||||
layout_context,
|
||||
style,
|
||||
|positioning_context| {
|
||||
layout_in_flow_non_replaced_block_level(
|
||||
layout_context,
|
||||
positioning_context,
|
||||
containing_block,
|
||||
|
@ -277,15 +281,21 @@ impl BlockLevelBox {
|
|||
BlockLevelKind::SameFormattingContextBlock(contents),
|
||||
tree_rank,
|
||||
float_context,
|
||||
)
|
||||
},
|
||||
))
|
||||
},
|
||||
BlockLevelBox::Independent(contents) => match contents.as_replaced() {
|
||||
Ok(replaced) => Fragment::Box(layout_in_flow_replaced_block_level(
|
||||
BlockLevelBox::Independent(contents) => {
|
||||
Fragment::Box(positioning_context.for_maybe_position_relative(
|
||||
layout_context,
|
||||
&contents.style,
|
||||
|positioning_context| match contents.as_replaced() {
|
||||
Ok(replaced) => layout_in_flow_replaced_block_level(
|
||||
containing_block,
|
||||
&contents.style,
|
||||
replaced,
|
||||
)),
|
||||
Err(non_replaced) => Fragment::Box(layout_in_flow_non_replaced_block_level(
|
||||
),
|
||||
Err(non_replaced) => layout_in_flow_non_replaced_block_level(
|
||||
layout_context,
|
||||
positioning_context,
|
||||
containing_block,
|
||||
|
@ -293,7 +303,9 @@ impl BlockLevelBox {
|
|||
BlockLevelKind::EstablishesAnIndependentFormattingContext(non_replaced),
|
||||
tree_rank,
|
||||
float_context,
|
||||
)),
|
||||
),
|
||||
},
|
||||
))
|
||||
},
|
||||
BlockLevelBox::OutOfFlowAbsolutelyPositionedBox(box_) => {
|
||||
positioning_context.push(box_.layout(Vec2::zero(), tree_rank));
|
||||
|
@ -302,6 +314,7 @@ impl BlockLevelBox {
|
|||
))
|
||||
},
|
||||
BlockLevelBox::OutOfFlowFloatBox(_box_) => {
|
||||
// FIXME: call for_maybe_position_relative here
|
||||
// TODO
|
||||
Fragment::Anonymous(AnonymousFragment::no_op(
|
||||
containing_block.style.writing_mode,
|
||||
|
@ -400,7 +413,6 @@ fn layout_in_flow_non_replaced_block_level<'a>(
|
|||
|
||||
let mut block_margins_collapsed_with_children = CollapsedBlockMargins::from_margin(&margin);
|
||||
|
||||
positioning_context.for_maybe_position_relative(layout_context, style, |positioning_context| {
|
||||
let fragments;
|
||||
let mut content_block_size;
|
||||
match block_level_kind {
|
||||
|
@ -420,20 +432,19 @@ fn layout_in_flow_non_replaced_block_level<'a>(
|
|||
);
|
||||
fragments = flow_layout.fragments;
|
||||
content_block_size = flow_layout.content_block_size;
|
||||
let mut collapsible_margins_in_children =
|
||||
flow_layout.collapsible_margins_in_children;
|
||||
let mut collapsible_margins_in_children = flow_layout.collapsible_margins_in_children;
|
||||
|
||||
if this_start_margin_can_collapse_with_children {
|
||||
block_margins_collapsed_with_children
|
||||
.start
|
||||
.adjoin_assign(&collapsible_margins_in_children.start);
|
||||
if collapsible_margins_in_children.collapsed_through {
|
||||
block_margins_collapsed_with_children.start.adjoin_assign(
|
||||
&std::mem::replace(
|
||||
block_margins_collapsed_with_children
|
||||
.start
|
||||
.adjoin_assign(&std::mem::replace(
|
||||
&mut collapsible_margins_in_children.end,
|
||||
CollapsedMargin::zero(),
|
||||
),
|
||||
);
|
||||
));
|
||||
}
|
||||
}
|
||||
if this_end_margin_can_collapse_with_children {
|
||||
|
@ -482,7 +493,6 @@ fn layout_in_flow_non_replaced_block_level<'a>(
|
|||
margin,
|
||||
block_margins_collapsed_with_children,
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
/// https://drafts.csswg.org/css2/visudet.html#block-replaced-width
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue