Compare commits

...

1 Commits

Author SHA1 Message Date
shiyizju
36607d3457 minus total outer flex basis for available width or height 2019-01-30 17:44:23 +08:00

View File

@@ -1937,6 +1937,20 @@ static void YGNodeComputeFlexBasisForChildren(
} }
for (auto child : children) { for (auto child : children) {
float availableWidthForChild = availableInnerWidth;
float availableHeightForChild = availableInnerHeight;
if (YGFlexDirectionIsRow(mainAxis)) {
if (!YGFloatIsUndefined(availableInnerWidth)) {
availableWidthForChild -= totalOuterFlexBasis;
}
} else {
if (!YGFloatIsUndefined(availableInnerHeight)) {
availableHeightForChild -= totalOuterFlexBasis;
}
}
child->resolveDimension(); child->resolveDimension();
if (child->getStyle().display == YGDisplayNone) { if (child->getStyle().display == YGDisplayNone) {
YGZeroOutLayoutRecursivly(child); YGZeroOutLayoutRecursivly(child);
@@ -1948,11 +1962,11 @@ static void YGNodeComputeFlexBasisForChildren(
// Set the initial position (relative to the owner). // Set the initial position (relative to the owner).
const YGDirection childDirection = child->resolveDirection(direction); const YGDirection childDirection = child->resolveDirection(direction);
const float mainDim = YGFlexDirectionIsRow(mainAxis) const float mainDim = YGFlexDirectionIsRow(mainAxis)
? availableInnerWidth ? availableWidthForChild
: availableInnerHeight; : availableHeightForChild;
const float crossDim = YGFlexDirectionIsRow(mainAxis) const float crossDim = YGFlexDirectionIsRow(mainAxis)
? availableInnerHeight ? availableHeightForChild
: availableInnerWidth; : availableWidthForChild;
child->setPosition( child->setPosition(
childDirection, mainDim, crossDim, availableInnerWidth); childDirection, mainDim, crossDim, availableInnerWidth);
} }
@@ -1967,9 +1981,9 @@ static void YGNodeComputeFlexBasisForChildren(
YGNodeComputeFlexBasisForChild( YGNodeComputeFlexBasisForChild(
node, node,
child, child,
availableInnerWidth, availableWidthForChild,
widthMeasureMode, widthMeasureMode,
availableInnerHeight, availableHeightForChild,
availableInnerWidth, availableInnerWidth,
availableInnerHeight, availableInnerHeight,
heightMeasureMode, heightMeasureMode,