mirror of
https://github.com/react/react-native.git
synced 2026-09-28 13:23:09 +08:00
Layout breaks when the first element has a different minWidth than the rest
Summary: fixes https://github.com/react/yoga/issues/2006 `distributeFreeSpaceFirstPass` decrements `totalFlexGrowFactors` / `totalFlexShrinkScaledFactors` as it freezes items, but only reduces `remainingFreeSpace` after the loop. Items after the first frozen one get an inflated fair share and freeze spuriously. When the first item clamps, the whole line freezes and `remainingFreeSpace` drains to 0, so the second pass has nothing to distribute and everything falls back to its flex basis — a 540px row of three `flexGrow: 1` items with `maxWidth: 180` and minWidths 60/30/30 lays out as 60/30/30 instead of 180/180/180. Snapshot both totals before the loop and divide by the snapshot. The first pass is then iteration 1 of CSS Flexbox §9.7, and independent of child order. Layout only changes for configs that opt in: this sits behind `Errata::FlexFirstPassUsesRunningTotals`, which new configs set by default, so existing geometry is untouched until a config clears the bit. Same shape as `MinSizeUndefinedInsteadOfAuto`, which gates the CSS §4.5 auto-min floor. Changelog: [General][Fixed] - Fix a flex line collapsing to its minimum sizes when the first item clamps to its min or max main size, behind the new `FlexFirstPassUsesRunningTotals` errata (set by default) X-link: https://github.com/react/yoga/pull/2021 Reviewed By: javache Differential Revision: D119142409 Pulled By: pasqualeanatriello fbshipit-source-id: 9e5ad19e2ca818a5cccdcac68cfb8905a6f40894
This commit is contained in:
committed by
meta-codesync[bot]
parent
88748a7973
commit
ca7acf62c5
@@ -13603,6 +13603,7 @@ enum facebook::yoga::Errata : uint32_t {
|
||||
AbsolutePositionWithoutInsetsExcludesPadding,
|
||||
All,
|
||||
Classic,
|
||||
FlexFirstPassUsesRunningTotals,
|
||||
MinSizeUndefinedInsteadOfAuto,
|
||||
None,
|
||||
StretchFlexBasis,
|
||||
|
||||
@@ -13216,6 +13216,7 @@ enum facebook::yoga::Errata : uint32_t {
|
||||
AbsolutePositionWithoutInsetsExcludesPadding,
|
||||
All,
|
||||
Classic,
|
||||
FlexFirstPassUsesRunningTotals,
|
||||
MinSizeUndefinedInsteadOfAuto,
|
||||
None,
|
||||
StretchFlexBasis,
|
||||
|
||||
@@ -13447,6 +13447,7 @@ enum facebook::yoga::Errata : uint32_t {
|
||||
AbsolutePositionWithoutInsetsExcludesPadding,
|
||||
All,
|
||||
Classic,
|
||||
FlexFirstPassUsesRunningTotals,
|
||||
MinSizeUndefinedInsteadOfAuto,
|
||||
None,
|
||||
StretchFlexBasis,
|
||||
|
||||
@@ -15393,6 +15393,7 @@ enum facebook::yoga::Errata : uint32_t {
|
||||
AbsolutePositionWithoutInsetsExcludesPadding,
|
||||
All,
|
||||
Classic,
|
||||
FlexFirstPassUsesRunningTotals,
|
||||
MinSizeUndefinedInsteadOfAuto,
|
||||
None,
|
||||
StretchFlexBasis,
|
||||
|
||||
@@ -15072,6 +15072,7 @@ enum facebook::yoga::Errata : uint32_t {
|
||||
AbsolutePositionWithoutInsetsExcludesPadding,
|
||||
All,
|
||||
Classic,
|
||||
FlexFirstPassUsesRunningTotals,
|
||||
MinSizeUndefinedInsteadOfAuto,
|
||||
None,
|
||||
StretchFlexBasis,
|
||||
|
||||
@@ -15247,6 +15247,7 @@ enum facebook::yoga::Errata : uint32_t {
|
||||
AbsolutePositionWithoutInsetsExcludesPadding,
|
||||
All,
|
||||
Classic,
|
||||
FlexFirstPassUsesRunningTotals,
|
||||
MinSizeUndefinedInsteadOfAuto,
|
||||
None,
|
||||
StretchFlexBasis,
|
||||
|
||||
@@ -10494,6 +10494,7 @@ enum facebook::yoga::Errata : uint32_t {
|
||||
AbsolutePositionWithoutInsetsExcludesPadding,
|
||||
All,
|
||||
Classic,
|
||||
FlexFirstPassUsesRunningTotals,
|
||||
MinSizeUndefinedInsteadOfAuto,
|
||||
None,
|
||||
StretchFlexBasis,
|
||||
|
||||
@@ -10318,6 +10318,7 @@ enum facebook::yoga::Errata : uint32_t {
|
||||
AbsolutePositionWithoutInsetsExcludesPadding,
|
||||
All,
|
||||
Classic,
|
||||
FlexFirstPassUsesRunningTotals,
|
||||
MinSizeUndefinedInsteadOfAuto,
|
||||
None,
|
||||
StretchFlexBasis,
|
||||
|
||||
@@ -10485,6 +10485,7 @@ enum facebook::yoga::Errata : uint32_t {
|
||||
AbsolutePositionWithoutInsetsExcludesPadding,
|
||||
All,
|
||||
Classic,
|
||||
FlexFirstPassUsesRunningTotals,
|
||||
MinSizeUndefinedInsteadOfAuto,
|
||||
None,
|
||||
StretchFlexBasis,
|
||||
|
||||
Reference in New Issue
Block a user