default root node to size of parent contraints
Summary: This is a follow up on a recent change which made the constraints passed into conculateLayout describe the parent constraints and not the root node constraints. This broke some assumptions and was not very inuitive if no size was set on the root. Therefor this diff ensure that if the root node does not have any size set then it will adopt the size of the parent constraints. Reviewed By: dshahidehpour Differential Revision: D4634616 fbshipit-source-id: 089eb4313c5bb810a6ff56f158cd19cec71808ec
This commit is contained in:
committed by
Facebook Github Bot
parent
b523402eda
commit
785713c9c0
12
yoga/Yoga.c
12
yoga/Yoga.c
@@ -3251,7 +3251,7 @@ static void YGRoundToPixelGrid(const YGNodeRef node) {
|
||||
float fractialTop = fmodf(nodeTop, gPointScaleFactor);
|
||||
float roundedLeft = nodeLeft - fractialLeft;
|
||||
float roundedTop = nodeTop - fractialTop;
|
||||
|
||||
|
||||
// To do the actual rounding we check if leftover fraction is bigger or equal than half of the grid step
|
||||
if (fractialLeft >= gPointScaleFactor / 2.0) {
|
||||
roundedLeft += gPointScaleFactor;
|
||||
@@ -3263,13 +3263,13 @@ static void YGRoundToPixelGrid(const YGNodeRef node) {
|
||||
}
|
||||
node->layout.position[YGEdgeLeft] = roundedLeft;
|
||||
node->layout.position[YGEdgeTop] = roundedTop;
|
||||
|
||||
|
||||
// Now we round width and height in the same way accounting for fractial leftovers from rounding position
|
||||
const float adjustedWidth = fractialLeft + node->layout.dimensions[YGDimensionWidth];
|
||||
const float adjustedHeight = fractialTop + node->layout.dimensions[YGDimensionHeight];
|
||||
float roundedWidth = adjustedWidth - fmodf(adjustedWidth, gPointScaleFactor);
|
||||
float roundedHeight = adjustedHeight - fmodf(adjustedHeight, gPointScaleFactor);
|
||||
|
||||
|
||||
if (adjustedWidth - roundedWidth >= gPointScaleFactor / 2.0) {
|
||||
roundedWidth += gPointScaleFactor;
|
||||
}
|
||||
@@ -3307,6 +3307,9 @@ void YGNodeCalculateLayout(const YGNodeRef node,
|
||||
} else if (YGValueResolve(&node->style.maxDimensions[YGDimensionWidth], parentWidth) >= 0.0f) {
|
||||
width = YGValueResolve(&node->style.maxDimensions[YGDimensionWidth], parentWidth);
|
||||
widthMeasureMode = YGMeasureModeAtMost;
|
||||
} else {
|
||||
width = parentWidth;
|
||||
widthMeasureMode = YGFloatIsUndefined(width) ? YGMeasureModeUndefined : YGMeasureModeExactly;
|
||||
}
|
||||
|
||||
float height = YGUndefined;
|
||||
@@ -3319,6 +3322,9 @@ void YGNodeCalculateLayout(const YGNodeRef node,
|
||||
0.0f) {
|
||||
height = YGValueResolve(&node->style.maxDimensions[YGDimensionHeight], parentHeight);
|
||||
heightMeasureMode = YGMeasureModeAtMost;
|
||||
} else {
|
||||
height = parentHeight;
|
||||
heightMeasureMode = YGFloatIsUndefined(height) ? YGMeasureModeUndefined : YGMeasureModeExactly;
|
||||
}
|
||||
|
||||
if (YGLayoutNodeInternal(node,
|
||||
|
Reference in New Issue
Block a user