Skip to content

Commit e6d0b10

Browse files
committed
fix: empty inline nodes should not prevent margin collapse
1 parent 6a8172c commit e6d0b10

File tree

1 file changed

+8
-9
lines changed
  • float-pigment-layout/src/algo

1 file changed

+8
-9
lines changed

float-pigment-layout/src/algo/flow.rs

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -69,12 +69,10 @@ pub(crate) fn is_empty_block<L: LengthNum>(
6969
padding_border_main_axis: L,
7070
min_main_size: L,
7171
node_inner_main_size: L,
72-
main_size: OptionNum<L>,
7372
) -> bool {
7473
if !padding_border_main_axis.is_zero()
7574
|| !min_main_size.is_zero()
7675
|| !node_inner_main_size.is_zero()
77-
|| (main_size.is_some() && !main_size.val().unwrap().is_zero())
7876
{
7977
return false;
8078
}
@@ -674,17 +672,19 @@ impl<T: LayoutTreeNode> Flow<T> for LayoutUnit<T> {
674672
request.kind == ComputeRequestKind::Position,
675673
);
676674

677-
if let Some((prev_collapsed_margin, prev_collapsed_through)) =
678-
prev_sibling_collapsed_margin
679-
{
680-
if !prev_collapsed_through {
681-
total_main_size += prev_collapsed_margin.solve();
675+
if block_size.main_size(axis_info.dir) > T::Length::zero() {
676+
if let Some((prev_collapsed_margin, prev_collapsed_through)) =
677+
prev_sibling_collapsed_margin
678+
{
679+
if !prev_collapsed_through {
680+
total_main_size += prev_collapsed_margin.solve();
681+
}
682682
}
683+
prev_sibling_collapsed_margin.replace((CollapsedMargin::zero(), false));
683684
}
684685
let main_offset = padding_border
685686
.main_axis_start(axis_info.dir, axis_info.main_dir_rev)
686687
+ total_main_size;
687-
prev_sibling_collapsed_margin.replace((CollapsedMargin::zero(), false));
688688

689689
total_main_size += block_size.main_size(axis_info.dir);
690690
max_cross_size = max_cross_size.max(block_size.cross_size(axis_info.dir));
@@ -800,7 +800,6 @@ impl<T: LayoutTreeNode> Flow<T> for LayoutUnit<T> {
800800
padding_border.main_axis_sum(axis_info.dir),
801801
min_max_limit.min_main_size(axis_info.dir),
802802
total_main_size,
803-
request.size.main_size(axis_info.dir),
804803
) {
805804
collapsed_margin.collapsed_through = true;
806805
}

0 commit comments

Comments
 (0)