@@ -361,45 +361,46 @@ impl<T: LayoutTreeNode> Flow<T> for LayoutUnit<T> {
361
361
child_border,
362
362
child_padding_border,
363
363
) ;
364
+ let stretched_cross_size = node_inner_size. cross_size ( axis_info. dir )
365
+ - child_margin. cross_axis_sum ( axis_info. dir ) ;
364
366
let aspect_ratio = child_node. style ( ) . aspect_ratio ( ) ;
365
367
let has_aspect_ratio = aspect_ratio. is_some ( ) && aspect_ratio. unwrap ( ) > 0. ;
366
- if css_size. width . is_none ( ) ^ css_size. height . is_none ( ) && has_aspect_ratio {
367
- if css_size. height . is_none ( ) {
368
- css_size. height = OptionNum :: some ( resolve_height_from_aspect_ratio (
369
- child_border,
370
- child_padding_border,
371
- & child_node. style ( ) . box_sizing ( ) ,
368
+ if has_aspect_ratio {
369
+ if css_size. width . is_none ( ) ^ css_size. height . is_none ( ) {
370
+ if css_size. height . is_none ( ) {
371
+ css_size. height = OptionNum :: some ( resolve_height_from_aspect_ratio (
372
+ child_border,
373
+ child_padding_border,
374
+ & child_node. style ( ) . box_sizing ( ) ,
375
+ aspect_ratio. unwrap ( ) ,
376
+ css_size. width . val ( ) . unwrap ( ) ,
377
+ ) )
378
+ } else {
379
+ css_size. width = OptionNum :: some ( resolve_width_from_aspect_ratio (
380
+ child_border,
381
+ child_padding_border,
382
+ & child_node. style ( ) . box_sizing ( ) ,
383
+ aspect_ratio. unwrap ( ) ,
384
+ css_size. height . val ( ) . unwrap ( ) ,
385
+ ) )
386
+ }
387
+ } else if css_size. width . is_none ( )
388
+ && css_size. height . is_none ( )
389
+ && stretched_cross_size. is_some ( )
390
+ {
391
+ let transfer_limit = transfer_min_max_size (
372
392
aspect_ratio. unwrap ( ) ,
373
- css_size. width . val ( ) . unwrap ( ) ,
374
- ) )
375
- } else {
376
- css_size . width = OptionNum :: some ( resolve_width_from_aspect_ratio (
393
+ css_size,
394
+ axis_info . dir ,
395
+ min_max_limit ,
396
+ child_node . style ( ) . box_sizing ( ) ,
377
397
child_border,
378
398
child_padding_border,
379
- & child_node. style ( ) . box_sizing ( ) ,
380
- aspect_ratio. unwrap ( ) ,
381
- css_size. height . val ( ) . unwrap ( ) ,
382
- ) )
383
- }
384
- }
385
- let size_indefinite = css_size. width . is_none ( ) && css_size. height . is_none ( ) ;
386
- let stretched_cross_size = node_inner_size. cross_size ( axis_info. dir )
387
- - child_margin. cross_axis_sum ( axis_info. dir ) ;
388
- if has_aspect_ratio && size_indefinite {
389
- let transfer_limit = transfer_min_max_size (
390
- aspect_ratio. unwrap ( ) ,
391
- css_size,
392
- axis_info. dir ,
393
- min_max_limit,
394
- child_node. style ( ) . box_sizing ( ) ,
395
- child_border,
396
- child_padding_border,
397
- ) ;
398
- let min_cross_size = transfer_limit. min_cross_size ( axis_info. dir ) ;
399
- let min_main_size = transfer_limit. min_main_size ( axis_info. dir ) ;
400
- let max_cross_size = transfer_limit. max_cross_size ( axis_info. dir ) ;
401
- let max_main_size = transfer_limit. max_main_size ( axis_info. dir ) ;
402
- if stretched_cross_size. is_some ( ) {
399
+ ) ;
400
+ let min_cross_size = transfer_limit. min_cross_size ( axis_info. dir ) ;
401
+ let min_main_size = transfer_limit. min_main_size ( axis_info. dir ) ;
402
+ let max_cross_size = transfer_limit. max_cross_size ( axis_info. dir ) ;
403
+ let max_main_size = transfer_limit. max_main_size ( axis_info. dir ) ;
403
404
if min_cross_size. is_positive ( )
404
405
&& stretched_cross_size. or_zero ( ) < min_cross_size
405
406
{
0 commit comments