@@ -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