Skip to content

Commit 518ce54

Browse files
woehrl01buildadm
authored andcommitted
Fix percentage in flexing parent
Summary: If we don't measure exactly, percentage values aren't exactly either. Fix for facebook#414. Closes facebook/yoga#416 Closes facebook/yoga#414 Reviewed By: astreet Differential Revision: D4604729 Pulled By: emilsjolander fbshipit-source-id: 66880230073209cbe89668b838c2a82e7f9b34df
1 parent f69dd7a commit 518ce54

File tree

1 file changed

+7
-3
lines changed

1 file changed

+7
-3
lines changed

ReactCommon/yoga/yoga/Yoga.c

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2045,7 +2045,7 @@ static void YGNodelayoutImpl(const YGNodeRef node,
20452045
}
20462046

20472047
const bool flexBasisOverflows =
2048-
measureModeMainDim == YGMeasureModeUndefined ? false : totalFlexBasis > availableInnerMainDim;
2048+
measureModeMainDim == YGMeasureModeUndefined ? false : totalFlexBasis > availableInnerMainDim;
20492049
if (isNodeFlexWrap && flexBasisOverflows && measureModeMainDim == YGMeasureModeAtMost) {
20502050
measureModeMainDim = YGMeasureModeExactly;
20512051
}
@@ -2338,8 +2338,12 @@ static void YGNodelayoutImpl(const YGNodeRef node,
23382338
childCrossSize = YGValueResolve(currentRelativeChild->resolvedDimensions[dim[crossAxis]],
23392339
availableInnerCrossDim) +
23402340
marginCross;
2341-
childCrossMeasureMode =
2342-
YGFloatIsUndefined(childCrossSize) ? YGMeasureModeUndefined : YGMeasureModeExactly;
2341+
const bool isLoosePercentageMeasurement =
2342+
currentRelativeChild->resolvedDimensions[dim[crossAxis]]->unit == YGUnitPercent &&
2343+
measureModeCrossDim != YGMeasureModeExactly;
2344+
childCrossMeasureMode = YGFloatIsUndefined(childCrossSize) || isLoosePercentageMeasurement
2345+
? YGMeasureModeUndefined
2346+
: YGMeasureModeExactly;
23432347
}
23442348

23452349
if (!YGFloatIsUndefined(currentRelativeChild->style.aspectRatio)) {

0 commit comments

Comments
 (0)