Revert "Ensure that flex children adopt their parent's cross-axis min dimension."
This reverts commit b8316413b3
.
This was causing issues for existing components built with React
Native.. we need to investigate more in the future.
This commit is contained in:
@@ -505,9 +505,9 @@ static void layoutNodeImpl(css_node_t *node, float parentMaxWidth) {
|
|||||||
child = node->get_child(node->context, i);
|
child = node->get_child(node->context, i);
|
||||||
float nextContentDim = 0;
|
float nextContentDim = 0;
|
||||||
|
|
||||||
// If it's a flexible child, accumulate the size that the child potentially
|
// It only makes sense to consider a child flexible if we have a computed
|
||||||
// contributes to the row
|
// dimension for the node->
|
||||||
if (isFlex(child)) {
|
if (!isUndefined(node->layout.dimensions[dim[mainAxis]]) && isFlex(child)) {
|
||||||
flexibleChildrenCount++;
|
flexibleChildrenCount++;
|
||||||
totalFlexible += getFlex(child);
|
totalFlexible += getFlex(child);
|
||||||
|
|
||||||
@@ -573,7 +573,7 @@ static void layoutNodeImpl(css_node_t *node, float parentMaxWidth) {
|
|||||||
if (!isUndefined(node->layout.dimensions[dim[mainAxis]])) {
|
if (!isUndefined(node->layout.dimensions[dim[mainAxis]])) {
|
||||||
remainingMainDim = definedMainDim - mainContentDim;
|
remainingMainDim = definedMainDim - mainContentDim;
|
||||||
} else {
|
} else {
|
||||||
remainingMainDim = boundAxis(node, mainAxis, fmaxf(mainContentDim, 0)) - mainContentDim;
|
remainingMainDim = fmaxf(mainContentDim, 0) - mainContentDim;
|
||||||
}
|
}
|
||||||
|
|
||||||
// If there are flexible children in the mix, they are going to fill the
|
// If there are flexible children in the mix, they are going to fill the
|
||||||
|
@@ -396,9 +396,9 @@ var computeLayout = (function() {
|
|||||||
child = node.children[i];
|
child = node.children[i];
|
||||||
var/*float*/ nextContentDim = 0;
|
var/*float*/ nextContentDim = 0;
|
||||||
|
|
||||||
// If it's a flexible child, accumulate the size that the child potentially
|
// It only makes sense to consider a child flexible if we have a computed
|
||||||
// contributes to the row
|
// dimension for the node.
|
||||||
if (isFlex(child)) {
|
if (!isUndefined(node.layout[dim[mainAxis]]) && isFlex(child)) {
|
||||||
flexibleChildrenCount++;
|
flexibleChildrenCount++;
|
||||||
totalFlexible += getFlex(child);
|
totalFlexible += getFlex(child);
|
||||||
|
|
||||||
@@ -464,7 +464,7 @@ var computeLayout = (function() {
|
|||||||
if (!isUndefined(node.layout[dim[mainAxis]])) {
|
if (!isUndefined(node.layout[dim[mainAxis]])) {
|
||||||
remainingMainDim = definedMainDim - mainContentDim;
|
remainingMainDim = definedMainDim - mainContentDim;
|
||||||
} else {
|
} else {
|
||||||
remainingMainDim = boundAxis(node, mainAxis, fmaxf(mainContentDim, 0)) - mainContentDim;
|
remainingMainDim = fmaxf(mainContentDim, 0) - mainContentDim;
|
||||||
}
|
}
|
||||||
|
|
||||||
// If there are flexible children in the mix, they are going to fill the
|
// If there are flexible children in the mix, they are going to fill the
|
||||||
|
@@ -4688,73 +4688,6 @@ int main()
|
|||||||
test("should layout node with position absolute, top and left and min bounds", root_node, root_layout);
|
test("should layout node with position absolute, top and left and min bounds", root_node, root_layout);
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
|
||||||
css_node_t *root_node = new_test_css_node();
|
|
||||||
{
|
|
||||||
css_node_t *node_0 = root_node;
|
|
||||||
node_0->style.minDimensions[CSS_HEIGHT] = 800;
|
|
||||||
init_css_node_children(node_0, 1);
|
|
||||||
{
|
|
||||||
css_node_t *node_1;
|
|
||||||
node_1 = node_0->get_child(node_0->context, 0);
|
|
||||||
node_1->style.flex = 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
css_node_t *root_layout = new_test_css_node();
|
|
||||||
{
|
|
||||||
css_node_t *node_0 = root_layout;
|
|
||||||
node_0->layout.position[CSS_TOP] = 0;
|
|
||||||
node_0->layout.position[CSS_LEFT] = 0;
|
|
||||||
node_0->layout.dimensions[CSS_WIDTH] = 0;
|
|
||||||
node_0->layout.dimensions[CSS_HEIGHT] = 800;
|
|
||||||
init_css_node_children(node_0, 1);
|
|
||||||
{
|
|
||||||
css_node_t *node_1;
|
|
||||||
node_1 = node_0->get_child(node_0->context, 0);
|
|
||||||
node_1->layout.position[CSS_TOP] = 0;
|
|
||||||
node_1->layout.position[CSS_LEFT] = 0;
|
|
||||||
node_1->layout.dimensions[CSS_WIDTH] = 0;
|
|
||||||
node_1->layout.dimensions[CSS_HEIGHT] = 800;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
test("should layout minHeight with a flex child", root_node, root_layout);
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
css_node_t *root_node = new_test_css_node();
|
|
||||||
{
|
|
||||||
css_node_t *node_0 = root_node;
|
|
||||||
node_0->style.minDimensions[CSS_HEIGHT] = 800;
|
|
||||||
init_css_node_children(node_0, 1);
|
|
||||||
{
|
|
||||||
css_node_t *node_1;
|
|
||||||
node_1 = node_0->get_child(node_0->context, 0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
css_node_t *root_layout = new_test_css_node();
|
|
||||||
{
|
|
||||||
css_node_t *node_0 = root_layout;
|
|
||||||
node_0->layout.position[CSS_TOP] = 0;
|
|
||||||
node_0->layout.position[CSS_LEFT] = 0;
|
|
||||||
node_0->layout.dimensions[CSS_WIDTH] = 0;
|
|
||||||
node_0->layout.dimensions[CSS_HEIGHT] = 800;
|
|
||||||
init_css_node_children(node_0, 1);
|
|
||||||
{
|
|
||||||
css_node_t *node_1;
|
|
||||||
node_1 = node_0->get_child(node_0->context, 0);
|
|
||||||
node_1->layout.position[CSS_TOP] = 0;
|
|
||||||
node_1->layout.position[CSS_LEFT] = 0;
|
|
||||||
node_1->layout.dimensions[CSS_WIDTH] = 0;
|
|
||||||
node_1->layout.dimensions[CSS_HEIGHT] = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
test("should layout minHeight without a flex child", root_node, root_layout);
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
{
|
||||||
css_node_t *root_node = new_test_css_node();
|
css_node_t *root_node = new_test_css_node();
|
||||||
{
|
{
|
||||||
@@ -4882,6 +4815,64 @@ int main()
|
|||||||
|
|
||||||
test("should layout absolutely positioned node with absolutely positioned padded and bordered parent", root_node, root_layout);
|
test("should layout absolutely positioned node with absolutely positioned padded and bordered parent", root_node, root_layout);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
css_node_t *root_node = new_test_css_node();
|
||||||
|
{
|
||||||
|
css_node_t *node_0 = root_node;
|
||||||
|
node_0->style.dimensions[CSS_WIDTH] = 400;
|
||||||
|
node_0->style.dimensions[CSS_HEIGHT] = 400;
|
||||||
|
init_css_node_children(node_0, 1);
|
||||||
|
{
|
||||||
|
css_node_t *node_1;
|
||||||
|
node_1 = node_0->get_child(node_0->context, 0);
|
||||||
|
node_1->style.flex = 1;
|
||||||
|
node_1->style.padding[CSS_LEFT] = 10;
|
||||||
|
node_1->style.padding[CSS_TOP] = 10;
|
||||||
|
node_1->style.padding[CSS_RIGHT] = 10;
|
||||||
|
node_1->style.padding[CSS_BOTTOM] = 10;
|
||||||
|
init_css_node_children(node_1, 1);
|
||||||
|
{
|
||||||
|
css_node_t *node_2;
|
||||||
|
node_2 = node_1->get_child(node_1->context, 0);
|
||||||
|
node_2->style.position_type = CSS_POSITION_ABSOLUTE;
|
||||||
|
node_2->style.position[CSS_LEFT] = 10;
|
||||||
|
node_2->style.position[CSS_TOP] = 10;
|
||||||
|
node_2->style.position[CSS_RIGHT] = 10;
|
||||||
|
node_2->style.position[CSS_BOTTOM] = 10;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
css_node_t *root_layout = new_test_css_node();
|
||||||
|
{
|
||||||
|
css_node_t *node_0 = root_layout;
|
||||||
|
node_0->layout.position[CSS_TOP] = 0;
|
||||||
|
node_0->layout.position[CSS_LEFT] = 0;
|
||||||
|
node_0->layout.dimensions[CSS_WIDTH] = 400;
|
||||||
|
node_0->layout.dimensions[CSS_HEIGHT] = 400;
|
||||||
|
init_css_node_children(node_0, 1);
|
||||||
|
{
|
||||||
|
css_node_t *node_1;
|
||||||
|
node_1 = node_0->get_child(node_0->context, 0);
|
||||||
|
node_1->layout.position[CSS_TOP] = 0;
|
||||||
|
node_1->layout.position[CSS_LEFT] = 0;
|
||||||
|
node_1->layout.dimensions[CSS_WIDTH] = 400;
|
||||||
|
node_1->layout.dimensions[CSS_HEIGHT] = 400;
|
||||||
|
init_css_node_children(node_1, 1);
|
||||||
|
{
|
||||||
|
css_node_t *node_2;
|
||||||
|
node_2 = node_1->get_child(node_1->context, 0);
|
||||||
|
node_2->layout.position[CSS_TOP] = 10;
|
||||||
|
node_2->layout.position[CSS_LEFT] = 10;
|
||||||
|
node_2->layout.dimensions[CSS_WIDTH] = 380;
|
||||||
|
node_2->layout.dimensions[CSS_HEIGHT] = 380;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
test("should layout absolutely positioned node with padded flex 1 parent", root_node, root_layout);
|
||||||
|
}
|
||||||
/** END_GENERATED **/
|
/** END_GENERATED **/
|
||||||
return tests_finished();
|
return tests_finished();
|
||||||
}
|
}
|
||||||
|
@@ -1513,7 +1513,7 @@ describe('Layout', function() {
|
|||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should layout minHeight with a flex child', function() {
|
xit('should layout minHeight with a flex child', function() {
|
||||||
testLayout(
|
testLayout(
|
||||||
{style: {minHeight: 800}, children: [
|
{style: {minHeight: 800}, children: [
|
||||||
{style: {flex: 1}}
|
{style: {flex: 1}}
|
||||||
@@ -1524,17 +1524,6 @@ describe('Layout', function() {
|
|||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should layout minHeight without a flex child', function() {
|
|
||||||
testLayout(
|
|
||||||
{style: {minHeight: 800}, children: [
|
|
||||||
{style: {}}
|
|
||||||
]},
|
|
||||||
{width: 0, height: 800, top: 0, left: 0, children: [
|
|
||||||
{width: 0, height: 0, top: 0, left: 0}
|
|
||||||
]}
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
xit('should layout node with a nested sibling child with width', function() {
|
xit('should layout node with a nested sibling child with width', function() {
|
||||||
testLayout(
|
testLayout(
|
||||||
{style: {}, children: [
|
{style: {}, children: [
|
||||||
|
@@ -450,9 +450,9 @@ public class LayoutEngine {
|
|||||||
child = node.getChildAt(i);
|
child = node.getChildAt(i);
|
||||||
float nextContentDim = 0;
|
float nextContentDim = 0;
|
||||||
|
|
||||||
// If it's a flexible child, accumulate the size that the child potentially
|
// It only makes sense to consider a child flexible if we have a computed
|
||||||
// contributes to the row
|
// dimension for the node.
|
||||||
if (isFlex(child)) {
|
if (!CSSConstants.isUndefined(getLayoutDimension(node, getDim(mainAxis))) && isFlex(child)) {
|
||||||
flexibleChildrenCount++;
|
flexibleChildrenCount++;
|
||||||
totalFlexible = totalFlexible + getFlex(child);
|
totalFlexible = totalFlexible + getFlex(child);
|
||||||
|
|
||||||
@@ -518,7 +518,7 @@ public class LayoutEngine {
|
|||||||
if (!CSSConstants.isUndefined(getLayoutDimension(node, getDim(mainAxis)))) {
|
if (!CSSConstants.isUndefined(getLayoutDimension(node, getDim(mainAxis)))) {
|
||||||
remainingMainDim = definedMainDim - mainContentDim;
|
remainingMainDim = definedMainDim - mainContentDim;
|
||||||
} else {
|
} else {
|
||||||
remainingMainDim = boundAxis(node, mainAxis, Math.max(mainContentDim, 0)) - mainContentDim;
|
remainingMainDim = Math.max(mainContentDim, 0) - mainContentDim;
|
||||||
}
|
}
|
||||||
|
|
||||||
// If there are flexible children in the mix, they are going to fill the
|
// If there are flexible children in the mix, they are going to fill the
|
||||||
|
@@ -5005,77 +5005,6 @@ public class LayoutEngineTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testCase120()
|
public void testCase120()
|
||||||
{
|
|
||||||
TestCSSNode root_node = new TestCSSNode();
|
|
||||||
{
|
|
||||||
TestCSSNode node_0 = root_node;
|
|
||||||
node_0.style.minHeight = 800;
|
|
||||||
addChildren(node_0, 1);
|
|
||||||
{
|
|
||||||
TestCSSNode node_1;
|
|
||||||
node_1 = node_0.getChildAt(0);
|
|
||||||
node_1.style.flex = 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
TestCSSNode root_layout = new TestCSSNode();
|
|
||||||
{
|
|
||||||
TestCSSNode node_0 = root_layout;
|
|
||||||
node_0.layout.y = 0;
|
|
||||||
node_0.layout.x = 0;
|
|
||||||
node_0.layout.width = 0;
|
|
||||||
node_0.layout.height = 800;
|
|
||||||
addChildren(node_0, 1);
|
|
||||||
{
|
|
||||||
TestCSSNode node_1;
|
|
||||||
node_1 = node_0.getChildAt(0);
|
|
||||||
node_1.layout.y = 0;
|
|
||||||
node_1.layout.x = 0;
|
|
||||||
node_1.layout.width = 0;
|
|
||||||
node_1.layout.height = 800;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
test("should layout minHeight with a flex child", root_node, root_layout);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testCase121()
|
|
||||||
{
|
|
||||||
TestCSSNode root_node = new TestCSSNode();
|
|
||||||
{
|
|
||||||
TestCSSNode node_0 = root_node;
|
|
||||||
node_0.style.minHeight = 800;
|
|
||||||
addChildren(node_0, 1);
|
|
||||||
{
|
|
||||||
TestCSSNode node_1;
|
|
||||||
node_1 = node_0.getChildAt(0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
TestCSSNode root_layout = new TestCSSNode();
|
|
||||||
{
|
|
||||||
TestCSSNode node_0 = root_layout;
|
|
||||||
node_0.layout.y = 0;
|
|
||||||
node_0.layout.x = 0;
|
|
||||||
node_0.layout.width = 0;
|
|
||||||
node_0.layout.height = 800;
|
|
||||||
addChildren(node_0, 1);
|
|
||||||
{
|
|
||||||
TestCSSNode node_1;
|
|
||||||
node_1 = node_0.getChildAt(0);
|
|
||||||
node_1.layout.y = 0;
|
|
||||||
node_1.layout.x = 0;
|
|
||||||
node_1.layout.width = 0;
|
|
||||||
node_1.layout.height = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
test("should layout minHeight without a flex child", root_node, root_layout);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testCase122()
|
|
||||||
{
|
{
|
||||||
TestCSSNode root_node = new TestCSSNode();
|
TestCSSNode root_node = new TestCSSNode();
|
||||||
{
|
{
|
||||||
@@ -5139,7 +5068,7 @@ public class LayoutEngineTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testCase123()
|
public void testCase121()
|
||||||
{
|
{
|
||||||
TestCSSNode root_node = new TestCSSNode();
|
TestCSSNode root_node = new TestCSSNode();
|
||||||
{
|
{
|
||||||
@@ -5205,5 +5134,65 @@ public class LayoutEngineTest {
|
|||||||
|
|
||||||
test("should layout absolutely positioned node with absolutely positioned padded and bordered parent", root_node, root_layout);
|
test("should layout absolutely positioned node with absolutely positioned padded and bordered parent", root_node, root_layout);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testCase122()
|
||||||
|
{
|
||||||
|
TestCSSNode root_node = new TestCSSNode();
|
||||||
|
{
|
||||||
|
TestCSSNode node_0 = root_node;
|
||||||
|
node_0.style.width = 400;
|
||||||
|
node_0.style.height = 400;
|
||||||
|
addChildren(node_0, 1);
|
||||||
|
{
|
||||||
|
TestCSSNode node_1;
|
||||||
|
node_1 = node_0.getChildAt(0);
|
||||||
|
node_1.style.flex = 1;
|
||||||
|
node_1.style.padding[Spacing.LEFT] = 10;
|
||||||
|
node_1.style.padding[Spacing.TOP] = 10;
|
||||||
|
node_1.style.padding[Spacing.RIGHT] = 10;
|
||||||
|
node_1.style.padding[Spacing.BOTTOM] = 10;
|
||||||
|
addChildren(node_1, 1);
|
||||||
|
{
|
||||||
|
TestCSSNode node_2;
|
||||||
|
node_2 = node_1.getChildAt(0);
|
||||||
|
node_2.style.positionType = CSSPositionType.ABSOLUTE;
|
||||||
|
node_2.style.positionLeft = 10;
|
||||||
|
node_2.style.positionTop = 10;
|
||||||
|
node_2.style.positionRight = 10;
|
||||||
|
node_2.style.positionBottom = 10;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
TestCSSNode root_layout = new TestCSSNode();
|
||||||
|
{
|
||||||
|
TestCSSNode node_0 = root_layout;
|
||||||
|
node_0.layout.y = 0;
|
||||||
|
node_0.layout.x = 0;
|
||||||
|
node_0.layout.width = 400;
|
||||||
|
node_0.layout.height = 400;
|
||||||
|
addChildren(node_0, 1);
|
||||||
|
{
|
||||||
|
TestCSSNode node_1;
|
||||||
|
node_1 = node_0.getChildAt(0);
|
||||||
|
node_1.layout.y = 0;
|
||||||
|
node_1.layout.x = 0;
|
||||||
|
node_1.layout.width = 400;
|
||||||
|
node_1.layout.height = 400;
|
||||||
|
addChildren(node_1, 1);
|
||||||
|
{
|
||||||
|
TestCSSNode node_2;
|
||||||
|
node_2 = node_1.getChildAt(0);
|
||||||
|
node_2.layout.y = 10;
|
||||||
|
node_2.layout.x = 10;
|
||||||
|
node_2.layout.width = 380;
|
||||||
|
node_2.layout.height = 380;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
test("should layout absolutely positioned node with padded flex 1 parent", root_node, root_layout);
|
||||||
|
}
|
||||||
/** END_GENERATED **/
|
/** END_GENERATED **/
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user