Fix flex-wrap with max constraint
Summary: Fixes `flex-wrap` with a max constraint and `justify-content`. Fixes facebook/yoga#514. Closes https://github.com/facebook/yoga/pull/519 Differential Revision: D4953727 Pulled By: emilsjolander fbshipit-source-id: 32dec48220be1392ea8dac5f34871d407eb8d49b
This commit is contained in:
parent
c7e0f56d75
commit
c660d0c836
|
@ -2141,23 +2141,29 @@ static void YGNodelayoutImpl(const YGNodeRef node,
|
||||||
|
|
||||||
if (child->style.positionType != YGPositionTypeAbsolute) {
|
if (child->style.positionType != YGPositionTypeAbsolute) {
|
||||||
const float childMarginMainAxis = YGNodeMarginForAxis(child, mainAxis, availableInnerWidth);
|
const float childMarginMainAxis = YGNodeMarginForAxis(child, mainAxis, availableInnerWidth);
|
||||||
const float outerFlexBasis =
|
const float flexBasisWithMaxConstraints =
|
||||||
|
fminf(YGResolveValue(&child->style.maxDimensions[dim[mainAxis]], mainAxisParentSize),
|
||||||
|
fmaxf(YGResolveValue(&child->style.minDimensions[dim[mainAxis]],
|
||||||
|
mainAxisParentSize),
|
||||||
|
child->layout.computedFlexBasis));
|
||||||
|
const float flexBasisWithMinAndMaxConstraints =
|
||||||
fmaxf(YGResolveValue(&child->style.minDimensions[dim[mainAxis]], mainAxisParentSize),
|
fmaxf(YGResolveValue(&child->style.minDimensions[dim[mainAxis]], mainAxisParentSize),
|
||||||
child->layout.computedFlexBasis) +
|
flexBasisWithMaxConstraints);
|
||||||
childMarginMainAxis;
|
|
||||||
|
|
||||||
// If this is a multi-line flow and this item pushes us over the
|
// If this is a multi-line flow and this item pushes us over the
|
||||||
// available size, we've
|
// available size, we've
|
||||||
// hit the end of the current line. Break out of the loop and lay out
|
// hit the end of the current line. Break out of the loop and lay out
|
||||||
// the current line.
|
// the current line.
|
||||||
if (sizeConsumedOnCurrentLineIncludingMinConstraint + outerFlexBasis >
|
if (sizeConsumedOnCurrentLineIncludingMinConstraint + flexBasisWithMinAndMaxConstraints +
|
||||||
|
childMarginMainAxis >
|
||||||
availableInnerMainDim &&
|
availableInnerMainDim &&
|
||||||
isNodeFlexWrap && itemsOnLine > 0) {
|
isNodeFlexWrap && itemsOnLine > 0) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
sizeConsumedOnCurrentLineIncludingMinConstraint += outerFlexBasis;
|
sizeConsumedOnCurrentLineIncludingMinConstraint +=
|
||||||
sizeConsumedOnCurrentLine += child->layout.computedFlexBasis + childMarginMainAxis;
|
flexBasisWithMinAndMaxConstraints + childMarginMainAxis;
|
||||||
|
sizeConsumedOnCurrentLine += flexBasisWithMaxConstraints + childMarginMainAxis;
|
||||||
itemsOnLine++;
|
itemsOnLine++;
|
||||||
|
|
||||||
if (YGNodeIsFlex(child)) {
|
if (YGNodeIsFlex(child)) {
|
||||||
|
|
Loading…
Reference in New Issue