fix nodes with margin

This commit is contained in:
Lukas Woehrl
2017-01-05 11:03:36 +01:00
parent d4ccb44c07
commit 5803ba4e5b
5 changed files with 245 additions and 6 deletions

View File

@@ -1000,14 +1000,14 @@ static float YGBaselineOfFirstLine(const YGNodeRef node, const YGFlexDirection m
return baseline + baselineChild->layout.position[YGEdgeTop];
}
static float YGBaselineWithMargin(const YGNodeRef node, const YGFlexDirection mainAxis, const float parentWidth)
static inline float YGBaselineForNode(const YGNodeRef node, const YGFlexDirection crossAxis, const float parentWidth)
{
float baseline = YGBaselineOfFirstLine(node, mainAxis, parentWidth);
float baseline = YGBaselineOfFirstLine(node, crossAxis, parentWidth);
if(YGFloatIsUndefined(baseline))
{
baseline = node->layout.measuredDimensions[dim[mainAxis]];
return node->layout.measuredDimensions[dim[crossAxis]];
}
return baseline + YGNodeLeadingMargin(node, mainAxis, parentWidth);
return baseline;
}
@@ -2535,7 +2535,8 @@ static void YGNodelayoutImpl(const YGNodeRef node,
if (performLayout && YGNodeAlignItem(node, child) == YGAlignBaseline)
{
maxAscentForCurrentLine = fmaxf(maxAscentForCurrentLine,
YGBaselineWithMargin(child, crossAxis, availableInnerWidth));
YGBaselineForNode(child, crossAxis, availableInnerWidth))
+ YGNodeLeadingMargin(child, crossAxis, availableInnerWidth);
}
if (YGNodeIsLayoutDimDefined(child, crossAxis)) {
@@ -2582,7 +2583,7 @@ static void YGNodelayoutImpl(const YGNodeRef node,
case YGAlignBaseline: {
child->layout.position[pos[crossAxis]] =
currentLead + maxAscentForCurrentLine -
YGBaselineWithMargin(child, crossAxis, availableInnerWidth);;
YGBaselineForNode(child, crossAxis, availableInnerWidth);
break;
}
case YGAlignAuto: