@@ -69,12 +69,10 @@ pub(crate) fn is_empty_block<L: LengthNum>(
69
69
padding_border_main_axis : L ,
70
70
min_main_size : L ,
71
71
node_inner_main_size : L ,
72
- main_size : OptionNum < L > ,
73
72
) -> bool {
74
73
if !padding_border_main_axis. is_zero ( )
75
74
|| !min_main_size. is_zero ( )
76
75
|| !node_inner_main_size. is_zero ( )
77
- || ( main_size. is_some ( ) && !main_size. val ( ) . unwrap ( ) . is_zero ( ) )
78
76
{
79
77
return false ;
80
78
}
@@ -674,17 +672,19 @@ impl<T: LayoutTreeNode> Flow<T> for LayoutUnit<T> {
674
672
request. kind == ComputeRequestKind :: Position ,
675
673
) ;
676
674
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
+ }
682
682
}
683
+ prev_sibling_collapsed_margin. replace ( ( CollapsedMargin :: zero ( ) , false ) ) ;
683
684
}
684
685
let main_offset = padding_border
685
686
. main_axis_start ( axis_info. dir , axis_info. main_dir_rev )
686
687
+ total_main_size;
687
- prev_sibling_collapsed_margin. replace ( ( CollapsedMargin :: zero ( ) , false ) ) ;
688
688
689
689
total_main_size += block_size. main_size ( axis_info. dir ) ;
690
690
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> {
800
800
padding_border. main_axis_sum ( axis_info. dir ) ,
801
801
min_max_limit. min_main_size ( axis_info. dir ) ,
802
802
total_main_size,
803
- request. size . main_size ( axis_info. dir ) ,
804
803
) {
805
804
collapsed_margin. collapsed_through = true ;
806
805
}
0 commit comments