Solve the bug related to baseline height
Summary: This diff fixes the height calculation logic for the nodes with baseline. Before height calculation for baseline was done at wrong place. The task was created due to the regression caused by D9219678. Reviewed By: IanChilds Differential Revision: D9421551 fbshipit-source-id: 3fbb738314130b346c4186ec45d00c9ea63bc9f4
This commit is contained in:
committed by
Facebook Github Bot
parent
1080cf22e3
commit
7a45fb39bf
@@ -14,6 +14,76 @@ _baselineFunc(YGNodeRef node, const float width, const float height) {
|
||||
return height / 2;
|
||||
}
|
||||
|
||||
static YGSize _measure1(
|
||||
YGNodeRef node,
|
||||
float width,
|
||||
YGMeasureMode widthMode,
|
||||
float height,
|
||||
YGMeasureMode heightMode) {
|
||||
return YGSize{
|
||||
.width = 42,
|
||||
.height = 50,
|
||||
};
|
||||
}
|
||||
|
||||
static YGSize _measure2(
|
||||
YGNodeRef node,
|
||||
float width,
|
||||
YGMeasureMode widthMode,
|
||||
float height,
|
||||
YGMeasureMode heightMode) {
|
||||
return YGSize{
|
||||
.width = 279,
|
||||
.height = 126,
|
||||
};
|
||||
}
|
||||
|
||||
// Test case for bug in T32999822
|
||||
TEST(YogaTest, align_baseline_parent_ht_not_specified) {
|
||||
YGConfigRef config = YGConfigNew();
|
||||
|
||||
const YGNodeRef root = YGNodeNewWithConfig(config);
|
||||
YGNodeStyleSetFlexDirection(root, YGFlexDirectionRow);
|
||||
YGNodeStyleSetAlignContent(root, YGAlignStretch);
|
||||
YGNodeStyleSetAlignItems(root, YGAlignBaseline);
|
||||
YGNodeStyleSetWidth(root, 340);
|
||||
YGNodeStyleSetMaxHeight(root, 170);
|
||||
YGNodeStyleSetMinHeight(root, 0);
|
||||
|
||||
const YGNodeRef root_child0 = YGNodeNewWithConfig(config);
|
||||
YGNodeStyleSetFlexGrow(root_child0, 0);
|
||||
YGNodeStyleSetFlexShrink(root_child0, 1);
|
||||
YGNodeSetMeasureFunc(root_child0, _measure1);
|
||||
YGNodeInsertChild(root, root_child0, 0);
|
||||
|
||||
const YGNodeRef root_child1 = YGNodeNewWithConfig(config);
|
||||
YGNodeStyleSetFlexGrow(root_child1, 0);
|
||||
YGNodeStyleSetFlexShrink(root_child1, 1);
|
||||
YGNodeSetMeasureFunc(root_child1, _measure2);
|
||||
YGNodeInsertChild(root, root_child1, 1);
|
||||
|
||||
YGNodeCalculateLayout(root, YGUndefined, YGUndefined, YGDirectionLTR);
|
||||
|
||||
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root));
|
||||
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root));
|
||||
ASSERT_FLOAT_EQ(340, YGNodeLayoutGetWidth(root));
|
||||
ASSERT_FLOAT_EQ(126, YGNodeLayoutGetHeight(root));
|
||||
|
||||
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetLeft(root_child0));
|
||||
ASSERT_FLOAT_EQ(42, YGNodeLayoutGetWidth(root_child0));
|
||||
ASSERT_FLOAT_EQ(50, YGNodeLayoutGetHeight(root_child0));
|
||||
ASSERT_FLOAT_EQ(76, YGNodeLayoutGetTop(root_child0));
|
||||
|
||||
ASSERT_FLOAT_EQ(42, YGNodeLayoutGetLeft(root_child1));
|
||||
ASSERT_FLOAT_EQ(0, YGNodeLayoutGetTop(root_child1));
|
||||
ASSERT_FLOAT_EQ(279, YGNodeLayoutGetWidth(root_child1));
|
||||
ASSERT_FLOAT_EQ(126, YGNodeLayoutGetHeight(root_child1));
|
||||
|
||||
YGNodeFreeRecursive(root);
|
||||
|
||||
YGConfigFree(config);
|
||||
}
|
||||
|
||||
TEST(YogaTest, align_baseline_with_no_parent_ht) {
|
||||
YGConfigRef config = YGConfigNew();
|
||||
|
||||
|
Reference in New Issue
Block a user