Fix main size calculation from the aspect ratio

Summary:
When the following conditions are met, the main size become smaller by the margins in the main axis.
* The aspect ratio is defined
* The main size is not defined
* The cross size is defined
* The main margin is defined

This is because the main margin size is not included when calculating the main size from the aspect ratio.
Closes https://github.com/facebook/yoga/pull/715

Reviewed By: emilsjolander

Differential Revision: D6998988

Pulled By: priteshrnandgaonkar

fbshipit-source-id: f6f69c47ece17bd7c5e41517b96032bf0c149356
This commit is contained in:
Yuichi ONO 2018-02-15 07:16:59 -08:00 committed by Facebook Github Bot
parent f7f5dc6649
commit f751c3460e
1 changed files with 3 additions and 2 deletions

View File

@ -1102,10 +1102,11 @@ static void YGNodeComputeFlexBasisForChild(const YGNodeRef node,
if (!YGFloatIsUndefined(child->getStyle().aspectRatio)) { if (!YGFloatIsUndefined(child->getStyle().aspectRatio)) {
if (!isMainAxisRow && childWidthMeasureMode == YGMeasureModeExactly) { if (!isMainAxisRow && childWidthMeasureMode == YGMeasureModeExactly) {
childHeight = (childWidth - marginRow) / child->getStyle().aspectRatio; childHeight = marginColumn +
(childWidth - marginRow) / child->getStyle().aspectRatio;
childHeightMeasureMode = YGMeasureModeExactly; childHeightMeasureMode = YGMeasureModeExactly;
} else if (isMainAxisRow && childHeightMeasureMode == YGMeasureModeExactly) { } else if (isMainAxisRow && childHeightMeasureMode == YGMeasureModeExactly) {
childWidth = childWidth = marginRow +
(childHeight - marginColumn) * child->getStyle().aspectRatio; (childHeight - marginColumn) * child->getStyle().aspectRatio;
childWidthMeasureMode = YGMeasureModeExactly; childWidthMeasureMode = YGMeasureModeExactly;
} }