Fix aspect ratio when stretching with main axis margin #834
@@ -896,3 +896,24 @@ TEST(YogaTest, aspect_ratio_should_prefer_flexed_dimension) {
|
|||||||
|
|
||||||
YGNodeFreeRecursive(root);
|
YGNodeFreeRecursive(root);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST(YogaTest, aspect_ratio_defined_by_cross_stretch_should_not_be_effected_by_margin_on_main_axis) {
|
||||||
|
const YGConfigRef config = YGConfigNew();
|
||||||
|
YGConfigSetUseWebDefaults(config, true);
|
||||||
|
|
||||||
|
const YGNodeRef root = YGNodeNewWithConfig(config);
|
||||||
|
YGNodeStyleSetWidth(root, 200);
|
||||||
|
YGNodeStyleSetHeight(root, 100);
|
||||||
|
|
||||||
|
const YGNodeRef root_child0 = YGNodeNewWithConfig(config);
|
||||||
|
YGNodeStyleSetMargin(root_child0, YGEdgeStart, 50);
|
||||||
|
YGNodeStyleSetAspectRatio(root_child0, 1);
|
||||||
|
YGNodeInsertChild(root, root_child0, 0);
|
||||||
|
|
||||||
|
YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR);
|
||||||
|
|
||||||
|
ASSERT_EQ(100, YGNodeLayoutGetWidth(root_child0));
|
||||||
|
ASSERT_EQ(100, YGNodeLayoutGetHeight(root_child0));
|
||||||
|
|
||||||
|
YGNodeFreeRecursive(root);
|
||||||
|
}
|
||||||
|
@@ -1371,6 +1371,16 @@ static void YGNodeComputeFlexBasisForChild(
|
|||||||
auto marginColumn = YGUnwrapFloatOptional(
|
auto marginColumn = YGUnwrapFloatOptional(
|
||||||
child->getMarginForAxis(YGFlexDirectionColumn, ownerWidth));
|
child->getMarginForAxis(YGFlexDirectionColumn, ownerWidth));
|
||||||
|
|
||||||
|
if (YGNodeAlignItem(node, child) == YGAlignStretch) {
|
||||||
|
if (isMainAxisRow && !YGFloatIsUndefined(height)) {
|
||||||
|
childHeight = height;
|
||||||
|
childHeightMeasureMode = YGMeasureModeExactly;
|
||||||
|
} else if (!isMainAxisRow && !YGFloatIsUndefined(width)) {
|
||||||
|
childWidth = width;
|
||||||
|
childWidthMeasureMode = YGMeasureModeExactly;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (isRowStyleDimDefined) {
|
if (isRowStyleDimDefined) {
|
||||||
childWidth =
|
childWidth =
|
||||||
YGUnwrapFloatOptional(YGResolveValue(
|
YGUnwrapFloatOptional(YGResolveValue(
|
||||||
|
Reference in New Issue
Block a user