Initial impl of content box
Differential Revision: D63416833
This commit is contained in:
committed by
Facebook GitHub Bot
parent
b7cfdf7162
commit
fc590b2e6f
@@ -1,4 +1,4 @@
|
|||||||
<div data-disabled="true" id="box_sizing_content_box"
|
<div id="box_sizing_content_box_simple"
|
||||||
style="width: 100px; height: 100px; padding: 5px; border-width: 10px; box-sizing: content-box">
|
style="width: 100px; height: 100px; padding: 5px; border-width: 10px; box-sizing: content-box">
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -6,7 +6,7 @@
|
|||||||
style="width: 100px; height: 100px; padding: 5px; border-width: 10px; box-sizing: border-box">
|
style="width: 100px; height: 100px; padding: 5px; border-width: 10px; box-sizing: border-box">
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div data-disabled="true" id="box_sizing_content_box_padding_only"
|
<div id="box_sizing_content_box_padding_only"
|
||||||
style="width: 100px; height: 100px; padding: 5px; box-sizing: content-box">
|
style="width: 100px; height: 100px; padding: 5px; box-sizing: content-box">
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -14,7 +14,7 @@
|
|||||||
style="width: 100px; height: 100px; padding: 5px; box-sizing: border-box">
|
style="width: 100px; height: 100px; padding: 5px; box-sizing: border-box">
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div data-disabled="true" id="box_sizing_content_box_border_only"
|
<div id="box_sizing_content_box_border_only"
|
||||||
style="width: 100px; height: 100px; border-width: 10px; box-sizing: content-box">
|
style="width: 100px; height: 100px; border-width: 10px; box-sizing: content-box">
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -22,7 +22,7 @@
|
|||||||
style="width: 100px; height: 100px; border-width: 10px; box-sizing: border-box">
|
style="width: 100px; height: 100px; border-width: 10px; box-sizing: border-box">
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div data-disabled="true" id="box_sizing_content_box_no_padding_no_border"
|
<div id="box_sizing_content_box_no_padding_no_border"
|
||||||
style="width: 100px; height: 100px; box-sizing: content-box">
|
style="width: 100px; height: 100px; box-sizing: content-box">
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -30,7 +30,7 @@
|
|||||||
style="width: 100px; height: 100px; box-sizing: border-box">
|
style="width: 100px; height: 100px; box-sizing: border-box">
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div data-disabled="true" id="box_sizing_content_box_children"
|
<div id="box_sizing_content_box_children"
|
||||||
style="width: 100px; height: 100px; padding: 5px; border-width: 10px; box-sizing: content-box">
|
style="width: 100px; height: 100px; padding: 5px; border-width: 10px; box-sizing: content-box">
|
||||||
<div style="width: 25px; height: 25px"></div>
|
<div style="width: 25px; height: 25px"></div>
|
||||||
<div style="width: 25px; height: 25px"></div>
|
<div style="width: 25px; height: 25px"></div>
|
||||||
@@ -46,7 +46,7 @@
|
|||||||
<div style="width: 25px; height: 25px"></div>
|
<div style="width: 25px; height: 25px"></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div data-disabled="true" id="box_sizing_content_box_siblings" style="width: 100px; height: 100px;">
|
<div id="box_sizing_content_box_siblings" style="width: 100px; height: 100px;">
|
||||||
<div style="width: 25px; height: 25px"></div>
|
<div style="width: 25px; height: 25px"></div>
|
||||||
<div style="width: 25px; height: 25px; box-sizing: content-box; padding: 10px; border-width: 10px"></div>
|
<div style="width: 25px; height: 25px; box-sizing: content-box; padding: 10px; border-width: 10px"></div>
|
||||||
<div style="width: 25px; height: 25px"></div>
|
<div style="width: 25px; height: 25px"></div>
|
||||||
@@ -60,7 +60,7 @@
|
|||||||
<div style="width: 25px; height: 25px"></div>
|
<div style="width: 25px; height: 25px"></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div data-disabled="true" id="box_sizing_content_box_max_width" style="width: 100px; height: 100px;">
|
<div id="box_sizing_content_box_max_width" style="width: 100px; height: 100px;">
|
||||||
<div style="max-width: 50px; height: 25px; box-sizing: content-box; padding: 5px; border-width: 15px"></div>
|
<div style="max-width: 50px; height: 25px; box-sizing: content-box; padding: 5px; border-width: 15px"></div>
|
||||||
<div style="width: 25px; height: 25px"></div>
|
<div style="width: 25px; height: 25px"></div>
|
||||||
</div>
|
</div>
|
||||||
@@ -70,7 +70,7 @@
|
|||||||
<div style="width: 25px; height: 25px"></div>
|
<div style="width: 25px; height: 25px"></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div data-disabled="true" id="box_sizing_content_box_max_height" style="width: 100px; height: 100px;">
|
<div id="box_sizing_content_box_max_height" style="width: 100px; height: 100px;">
|
||||||
<div style="width: 50px; max-height: 50px; box-sizing: content-box; padding: 5px; border-width: 15px"></div>
|
<div style="width: 50px; max-height: 50px; box-sizing: content-box; padding: 5px; border-width: 15px"></div>
|
||||||
<div style="width: 25px; height: 25px"></div>
|
<div style="width: 25px; height: 25px"></div>
|
||||||
</div>
|
</div>
|
||||||
@@ -80,7 +80,7 @@
|
|||||||
<div style="width: 25px; height: 25px"></div>
|
<div style="width: 25px; height: 25px"></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div data-disabled="true" id="box_sizing_content_box_min_width" style="width: 100px; height: 100px;">
|
<div id="box_sizing_content_box_min_width" style="width: 100px; height: 100px;">
|
||||||
<div style="min-width: 50px; height: 25px; box-sizing: content-box; padding: 5px; border-width: 15px"></div>
|
<div style="min-width: 50px; height: 25px; box-sizing: content-box; padding: 5px; border-width: 15px"></div>
|
||||||
<div style="width: 25px; height: 25px"></div>
|
<div style="width: 25px; height: 25px"></div>
|
||||||
</div>
|
</div>
|
||||||
@@ -90,7 +90,7 @@
|
|||||||
<div style="width: 25px; height: 25px"></div>
|
<div style="width: 25px; height: 25px"></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div data-disabled="true" id="box_sizing_content_box_min_height" style="width: 100px; height: 100px;">
|
<div id="box_sizing_content_box_min_height" style="width: 100px; height: 100px;">
|
||||||
<div style="width: 50px; min-height: 50px; box-sizing: content-box; padding: 5px; border-width: 15px"></div>
|
<div style="width: 50px; min-height: 50px; box-sizing: content-box; padding: 5px; border-width: 15px"></div>
|
||||||
<div style="width: 25px; height: 25px"></div>
|
<div style="width: 25px; height: 25px"></div>
|
||||||
</div>
|
</div>
|
||||||
@@ -100,7 +100,7 @@
|
|||||||
<div style="width: 25px; height: 25px"></div>
|
<div style="width: 25px; height: 25px"></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div data-disabled="true" id="box_sizing_content_box_no_height_no_width" style="width: 100px; height: 100px;">
|
<div id="box_sizing_content_box_no_height_no_width" style="width: 100px; height: 100px;">
|
||||||
<div style="box-sizing: content-box; padding: 2px; border-width: 7px">
|
<div style="box-sizing: content-box; padding: 2px; border-width: 7px">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -110,7 +110,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div data-disabled="true" id="box_sizing_content_box_nested"
|
<div id="box_sizing_content_box_nested"
|
||||||
style="width: 100px; height: 100px; box-sizing: content-box; padding: 15px; border-width: 3px;">
|
style="width: 100px; height: 100px; box-sizing: content-box; padding: 15px; border-width: 3px;">
|
||||||
<div style="width: 20px; height: 20px; box-sizing: content-box; padding: 2px; border-width: 7px">
|
<div style="width: 20px; height: 20px; box-sizing: content-box; padding: 2px; border-width: 7px">
|
||||||
<div style="width: 10px; height: 5px; box-sizing: content-box; padding: 1px; border-width: 2px"></div>
|
<div style="width: 10px; height: 5px; box-sizing: content-box; padding: 1px; border-width: 2px"></div>
|
||||||
@@ -124,7 +124,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div data-disabled="true" id="box_sizing_content_box_nested_alternating"
|
<div id="box_sizing_content_box_nested_alternating"
|
||||||
style="width: 100px; height: 100px; box-sizing: content-box; padding: 3px; border-width: 2px;">
|
style="width: 100px; height: 100px; box-sizing: content-box; padding: 3px; border-width: 2px;">
|
||||||
<div style="width: 40px; height: 40px; box-sizing: border-box; padding: 8px; border-width: 2px">
|
<div style="width: 40px; height: 40px; box-sizing: border-box; padding: 8px; border-width: 2px">
|
||||||
<div style="width: 20px; height: 25px; box-sizing: content-box; padding: 3px; border-width: 6px">
|
<div style="width: 20px; height: 25px; box-sizing: content-box; padding: 3px; border-width: 6px">
|
||||||
@@ -134,7 +134,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div data-disabled="true" id="box_sizing_border_box_nested_alternating"
|
<div id="box_sizing_border_box_nested_alternating"
|
||||||
style="width: 100px; height: 100px; box-sizing: border-box; padding: 3px; border-width: 2px;">
|
style="width: 100px; height: 100px; box-sizing: border-box; padding: 3px; border-width: 2px;">
|
||||||
<div style="width: 40px; height: 40px; box-sizing: content-box; padding: 8px; border-width: 2px">
|
<div style="width: 40px; height: 40px; box-sizing: content-box; padding: 8px; border-width: 2px">
|
||||||
<div style="width: 20px; height: 25px; box-sizing: border-box; padding: 3px; border-width: 6px">
|
<div style="width: 20px; height: 25px; box-sizing: border-box; padding: 3px; border-width: 6px">
|
||||||
|
@@ -4,7 +4,7 @@
|
|||||||
* This source code is licensed under the MIT license found in the
|
* This source code is licensed under the MIT license found in the
|
||||||
* LICENSE file in the root directory of this source tree.
|
* LICENSE file in the root directory of this source tree.
|
||||||
*
|
*
|
||||||
* @generated SignedSource<<84bb16d1a7ae39fb8f159ee58baef4c2>>
|
* @generated SignedSource<<c57cfea6c33a34e2a67a855138e9833b>>
|
||||||
* generated by gentest/gentest-driver.ts from gentest/fixtures/YGBoxSizingTest.html
|
* generated by gentest/gentest-driver.ts from gentest/fixtures/YGBoxSizingTest.html
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -28,8 +28,7 @@ public class YGBoxSizingTest {
|
|||||||
@Parameterized.Parameter public TestParametrization.NodeFactory mNodeFactory;
|
@Parameterized.Parameter public TestParametrization.NodeFactory mNodeFactory;
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@Ignore
|
public void test_box_sizing_content_box_simple() {
|
||||||
public void test_box_sizing_content_box() {
|
|
||||||
YogaConfig config = YogaConfigFactory.create();
|
YogaConfig config = YogaConfigFactory.create();
|
||||||
|
|
||||||
final YogaNode root = createNode(config);
|
final YogaNode root = createNode(config);
|
||||||
@@ -96,7 +95,6 @@ public class YGBoxSizingTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@Ignore
|
|
||||||
public void test_box_sizing_content_box_padding_only() {
|
public void test_box_sizing_content_box_padding_only() {
|
||||||
YogaConfig config = YogaConfigFactory.create();
|
YogaConfig config = YogaConfigFactory.create();
|
||||||
|
|
||||||
@@ -156,7 +154,6 @@ public class YGBoxSizingTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@Ignore
|
|
||||||
public void test_box_sizing_content_box_border_only() {
|
public void test_box_sizing_content_box_border_only() {
|
||||||
YogaConfig config = YogaConfigFactory.create();
|
YogaConfig config = YogaConfigFactory.create();
|
||||||
|
|
||||||
@@ -216,7 +213,6 @@ public class YGBoxSizingTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@Ignore
|
|
||||||
public void test_box_sizing_content_box_no_padding_no_border() {
|
public void test_box_sizing_content_box_no_padding_no_border() {
|
||||||
YogaConfig config = YogaConfigFactory.create();
|
YogaConfig config = YogaConfigFactory.create();
|
||||||
|
|
||||||
@@ -268,7 +264,6 @@ public class YGBoxSizingTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@Ignore
|
|
||||||
public void test_box_sizing_content_box_children() {
|
public void test_box_sizing_content_box_children() {
|
||||||
YogaConfig config = YogaConfigFactory.create();
|
YogaConfig config = YogaConfigFactory.create();
|
||||||
|
|
||||||
@@ -456,7 +451,6 @@ public class YGBoxSizingTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@Ignore
|
|
||||||
public void test_box_sizing_content_box_siblings() {
|
public void test_box_sizing_content_box_siblings() {
|
||||||
YogaConfig config = YogaConfigFactory.create();
|
YogaConfig config = YogaConfigFactory.create();
|
||||||
|
|
||||||
@@ -644,7 +638,6 @@ public class YGBoxSizingTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@Ignore
|
|
||||||
public void test_box_sizing_content_box_max_width() {
|
public void test_box_sizing_content_box_max_width() {
|
||||||
YogaConfig config = YogaConfigFactory.create();
|
YogaConfig config = YogaConfigFactory.create();
|
||||||
|
|
||||||
@@ -772,7 +765,6 @@ public class YGBoxSizingTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@Ignore
|
|
||||||
public void test_box_sizing_content_box_max_height() {
|
public void test_box_sizing_content_box_max_height() {
|
||||||
YogaConfig config = YogaConfigFactory.create();
|
YogaConfig config = YogaConfigFactory.create();
|
||||||
|
|
||||||
@@ -900,7 +892,6 @@ public class YGBoxSizingTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@Ignore
|
|
||||||
public void test_box_sizing_content_box_min_width() {
|
public void test_box_sizing_content_box_min_width() {
|
||||||
YogaConfig config = YogaConfigFactory.create();
|
YogaConfig config = YogaConfigFactory.create();
|
||||||
|
|
||||||
@@ -1028,7 +1019,6 @@ public class YGBoxSizingTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@Ignore
|
|
||||||
public void test_box_sizing_content_box_min_height() {
|
public void test_box_sizing_content_box_min_height() {
|
||||||
YogaConfig config = YogaConfigFactory.create();
|
YogaConfig config = YogaConfigFactory.create();
|
||||||
|
|
||||||
@@ -1156,7 +1146,6 @@ public class YGBoxSizingTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@Ignore
|
|
||||||
public void test_box_sizing_content_box_no_height_no_width() {
|
public void test_box_sizing_content_box_no_height_no_width() {
|
||||||
YogaConfig config = YogaConfigFactory.create();
|
YogaConfig config = YogaConfigFactory.create();
|
||||||
|
|
||||||
@@ -1250,7 +1239,6 @@ public class YGBoxSizingTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@Ignore
|
|
||||||
public void test_box_sizing_content_box_nested() {
|
public void test_box_sizing_content_box_nested() {
|
||||||
YogaConfig config = YogaConfigFactory.create();
|
YogaConfig config = YogaConfigFactory.create();
|
||||||
|
|
||||||
@@ -1412,7 +1400,6 @@ public class YGBoxSizingTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@Ignore
|
|
||||||
public void test_box_sizing_content_box_nested_alternating() {
|
public void test_box_sizing_content_box_nested_alternating() {
|
||||||
YogaConfig config = YogaConfigFactory.create();
|
YogaConfig config = YogaConfigFactory.create();
|
||||||
|
|
||||||
@@ -1517,7 +1504,6 @@ public class YGBoxSizingTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@Ignore
|
|
||||||
public void test_box_sizing_border_box_nested_alternating() {
|
public void test_box_sizing_border_box_nested_alternating() {
|
||||||
YogaConfig config = YogaConfigFactory.create();
|
YogaConfig config = YogaConfigFactory.create();
|
||||||
|
|
||||||
|
@@ -4,7 +4,7 @@
|
|||||||
* This source code is licensed under the MIT license found in the
|
* This source code is licensed under the MIT license found in the
|
||||||
* LICENSE file in the root directory of this source tree.
|
* LICENSE file in the root directory of this source tree.
|
||||||
*
|
*
|
||||||
* @generated SignedSource<<40a2a45449f152b9c1f91adfc46ac6df>>
|
* @generated SignedSource<<5ce4b1bc764d2bf325b844053b98134e>>
|
||||||
* generated by gentest/gentest-driver.ts from gentest/fixtures/YGBoxSizingTest.html
|
* generated by gentest/gentest-driver.ts from gentest/fixtures/YGBoxSizingTest.html
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -28,7 +28,7 @@ import {
|
|||||||
Wrap,
|
Wrap,
|
||||||
} from 'yoga-layout';
|
} from 'yoga-layout';
|
||||||
|
|
||||||
test.skip('box_sizing_content_box', () => {
|
test('box_sizing_content_box_simple', () => {
|
||||||
const config = Yoga.Config.create();
|
const config = Yoga.Config.create();
|
||||||
let root;
|
let root;
|
||||||
|
|
||||||
@@ -105,7 +105,7 @@ test('box_sizing_border_box', () => {
|
|||||||
config.free();
|
config.free();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
test.skip('box_sizing_content_box_padding_only', () => {
|
test('box_sizing_content_box_padding_only', () => {
|
||||||
const config = Yoga.Config.create();
|
const config = Yoga.Config.create();
|
||||||
let root;
|
let root;
|
||||||
|
|
||||||
@@ -174,7 +174,7 @@ test('box_sizing_border_box_padding_only', () => {
|
|||||||
config.free();
|
config.free();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
test.skip('box_sizing_content_box_border_only', () => {
|
test('box_sizing_content_box_border_only', () => {
|
||||||
const config = Yoga.Config.create();
|
const config = Yoga.Config.create();
|
||||||
let root;
|
let root;
|
||||||
|
|
||||||
@@ -243,7 +243,7 @@ test('box_sizing_border_box_border_only', () => {
|
|||||||
config.free();
|
config.free();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
test.skip('box_sizing_content_box_no_padding_no_border', () => {
|
test('box_sizing_content_box_no_padding_no_border', () => {
|
||||||
const config = Yoga.Config.create();
|
const config = Yoga.Config.create();
|
||||||
let root;
|
let root;
|
||||||
|
|
||||||
@@ -304,7 +304,7 @@ test('box_sizing_border_box_no_padding_no_border', () => {
|
|||||||
config.free();
|
config.free();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
test.skip('box_sizing_content_box_children', () => {
|
test('box_sizing_content_box_children', () => {
|
||||||
const config = Yoga.Config.create();
|
const config = Yoga.Config.create();
|
||||||
let root;
|
let root;
|
||||||
|
|
||||||
@@ -501,7 +501,7 @@ test('box_sizing_border_box_children', () => {
|
|||||||
config.free();
|
config.free();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
test.skip('box_sizing_content_box_siblings', () => {
|
test('box_sizing_content_box_siblings', () => {
|
||||||
const config = Yoga.Config.create();
|
const config = Yoga.Config.create();
|
||||||
let root;
|
let root;
|
||||||
|
|
||||||
@@ -698,7 +698,7 @@ test('box_sizing_border_box_siblings', () => {
|
|||||||
config.free();
|
config.free();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
test.skip('box_sizing_content_box_max_width', () => {
|
test('box_sizing_content_box_max_width', () => {
|
||||||
const config = Yoga.Config.create();
|
const config = Yoga.Config.create();
|
||||||
let root;
|
let root;
|
||||||
|
|
||||||
@@ -835,7 +835,7 @@ test('box_sizing_border_box_max_width', () => {
|
|||||||
config.free();
|
config.free();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
test.skip('box_sizing_content_box_max_height', () => {
|
test('box_sizing_content_box_max_height', () => {
|
||||||
const config = Yoga.Config.create();
|
const config = Yoga.Config.create();
|
||||||
let root;
|
let root;
|
||||||
|
|
||||||
@@ -972,7 +972,7 @@ test('box_sizing_border_box_max_height', () => {
|
|||||||
config.free();
|
config.free();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
test.skip('box_sizing_content_box_min_width', () => {
|
test('box_sizing_content_box_min_width', () => {
|
||||||
const config = Yoga.Config.create();
|
const config = Yoga.Config.create();
|
||||||
let root;
|
let root;
|
||||||
|
|
||||||
@@ -1109,7 +1109,7 @@ test('box_sizing_border_box_min_width', () => {
|
|||||||
config.free();
|
config.free();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
test.skip('box_sizing_content_box_min_height', () => {
|
test('box_sizing_content_box_min_height', () => {
|
||||||
const config = Yoga.Config.create();
|
const config = Yoga.Config.create();
|
||||||
let root;
|
let root;
|
||||||
|
|
||||||
@@ -1246,7 +1246,7 @@ test('box_sizing_border_box_min_height', () => {
|
|||||||
config.free();
|
config.free();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
test.skip('box_sizing_content_box_no_height_no_width', () => {
|
test('box_sizing_content_box_no_height_no_width', () => {
|
||||||
const config = Yoga.Config.create();
|
const config = Yoga.Config.create();
|
||||||
let root;
|
let root;
|
||||||
|
|
||||||
@@ -1349,7 +1349,7 @@ test('box_sizing_border_box_no_height_no_width', () => {
|
|||||||
config.free();
|
config.free();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
test.skip('box_sizing_content_box_nested', () => {
|
test('box_sizing_content_box_nested', () => {
|
||||||
const config = Yoga.Config.create();
|
const config = Yoga.Config.create();
|
||||||
let root;
|
let root;
|
||||||
|
|
||||||
@@ -1520,7 +1520,7 @@ test('box_sizing_border_box_nested', () => {
|
|||||||
config.free();
|
config.free();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
test.skip('box_sizing_content_box_nested_alternating', () => {
|
test('box_sizing_content_box_nested_alternating', () => {
|
||||||
const config = Yoga.Config.create();
|
const config = Yoga.Config.create();
|
||||||
let root;
|
let root;
|
||||||
|
|
||||||
@@ -1629,7 +1629,7 @@ test.skip('box_sizing_content_box_nested_alternating', () => {
|
|||||||
config.free();
|
config.free();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
test.skip('box_sizing_border_box_nested_alternating', () => {
|
test('box_sizing_border_box_nested_alternating', () => {
|
||||||
const config = Yoga.Config.create();
|
const config = Yoga.Config.create();
|
||||||
let root;
|
let root;
|
||||||
|
|
||||||
|
@@ -5,7 +5,7 @@
|
|||||||
* LICENSE file in the root directory of this source tree.
|
* LICENSE file in the root directory of this source tree.
|
||||||
*
|
*
|
||||||
* clang-format off
|
* clang-format off
|
||||||
* @generated SignedSource<<38c0ba6ef126d3453c7e0b56da131566>>
|
* @generated SignedSource<<56d0eec106ade0bbd034067594249c76>>
|
||||||
* generated by gentest/gentest-driver.ts from gentest/fixtures/YGBoxSizingTest.html
|
* generated by gentest/gentest-driver.ts from gentest/fixtures/YGBoxSizingTest.html
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -13,9 +13,7 @@
|
|||||||
#include <yoga/Yoga.h>
|
#include <yoga/Yoga.h>
|
||||||
#include "../util/TestUtil.h"
|
#include "../util/TestUtil.h"
|
||||||
|
|
||||||
TEST(YogaTest, box_sizing_content_box) {
|
TEST(YogaTest, box_sizing_content_box_simple) {
|
||||||
GTEST_SKIP();
|
|
||||||
|
|
||||||
YGConfigRef config = YGConfigNew();
|
YGConfigRef config = YGConfigNew();
|
||||||
|
|
||||||
YGNodeRef root = YGNodeNewWithConfig(config);
|
YGNodeRef root = YGNodeNewWithConfig(config);
|
||||||
@@ -85,8 +83,6 @@ TEST(YogaTest, box_sizing_border_box) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST(YogaTest, box_sizing_content_box_padding_only) {
|
TEST(YogaTest, box_sizing_content_box_padding_only) {
|
||||||
GTEST_SKIP();
|
|
||||||
|
|
||||||
YGConfigRef config = YGConfigNew();
|
YGConfigRef config = YGConfigNew();
|
||||||
|
|
||||||
YGNodeRef root = YGNodeNewWithConfig(config);
|
YGNodeRef root = YGNodeNewWithConfig(config);
|
||||||
@@ -148,8 +144,6 @@ TEST(YogaTest, box_sizing_border_box_padding_only) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST(YogaTest, box_sizing_content_box_border_only) {
|
TEST(YogaTest, box_sizing_content_box_border_only) {
|
||||||
GTEST_SKIP();
|
|
||||||
|
|
||||||
YGConfigRef config = YGConfigNew();
|
YGConfigRef config = YGConfigNew();
|
||||||
|
|
||||||
YGNodeRef root = YGNodeNewWithConfig(config);
|
YGNodeRef root = YGNodeNewWithConfig(config);
|
||||||
@@ -211,8 +205,6 @@ TEST(YogaTest, box_sizing_border_box_border_only) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST(YogaTest, box_sizing_content_box_no_padding_no_border) {
|
TEST(YogaTest, box_sizing_content_box_no_padding_no_border) {
|
||||||
GTEST_SKIP();
|
|
||||||
|
|
||||||
YGConfigRef config = YGConfigNew();
|
YGConfigRef config = YGConfigNew();
|
||||||
|
|
||||||
YGNodeRef root = YGNodeNewWithConfig(config);
|
YGNodeRef root = YGNodeNewWithConfig(config);
|
||||||
@@ -266,8 +258,6 @@ TEST(YogaTest, box_sizing_border_box_no_padding_no_border) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST(YogaTest, box_sizing_content_box_children) {
|
TEST(YogaTest, box_sizing_content_box_children) {
|
||||||
GTEST_SKIP();
|
|
||||||
|
|
||||||
YGConfigRef config = YGConfigNew();
|
YGConfigRef config = YGConfigNew();
|
||||||
|
|
||||||
YGNodeRef root = YGNodeNewWithConfig(config);
|
YGNodeRef root = YGNodeNewWithConfig(config);
|
||||||
@@ -457,8 +447,6 @@ TEST(YogaTest, box_sizing_border_box_children) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST(YogaTest, box_sizing_content_box_siblings) {
|
TEST(YogaTest, box_sizing_content_box_siblings) {
|
||||||
GTEST_SKIP();
|
|
||||||
|
|
||||||
YGConfigRef config = YGConfigNew();
|
YGConfigRef config = YGConfigNew();
|
||||||
|
|
||||||
YGNodeRef root = YGNodeNewWithConfig(config);
|
YGNodeRef root = YGNodeNewWithConfig(config);
|
||||||
@@ -648,8 +636,6 @@ TEST(YogaTest, box_sizing_border_box_siblings) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST(YogaTest, box_sizing_content_box_max_width) {
|
TEST(YogaTest, box_sizing_content_box_max_width) {
|
||||||
GTEST_SKIP();
|
|
||||||
|
|
||||||
YGConfigRef config = YGConfigNew();
|
YGConfigRef config = YGConfigNew();
|
||||||
|
|
||||||
YGNodeRef root = YGNodeNewWithConfig(config);
|
YGNodeRef root = YGNodeNewWithConfig(config);
|
||||||
@@ -779,8 +765,6 @@ TEST(YogaTest, box_sizing_border_box_max_width) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST(YogaTest, box_sizing_content_box_max_height) {
|
TEST(YogaTest, box_sizing_content_box_max_height) {
|
||||||
GTEST_SKIP();
|
|
||||||
|
|
||||||
YGConfigRef config = YGConfigNew();
|
YGConfigRef config = YGConfigNew();
|
||||||
|
|
||||||
YGNodeRef root = YGNodeNewWithConfig(config);
|
YGNodeRef root = YGNodeNewWithConfig(config);
|
||||||
@@ -910,8 +894,6 @@ TEST(YogaTest, box_sizing_border_box_max_height) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST(YogaTest, box_sizing_content_box_min_width) {
|
TEST(YogaTest, box_sizing_content_box_min_width) {
|
||||||
GTEST_SKIP();
|
|
||||||
|
|
||||||
YGConfigRef config = YGConfigNew();
|
YGConfigRef config = YGConfigNew();
|
||||||
|
|
||||||
YGNodeRef root = YGNodeNewWithConfig(config);
|
YGNodeRef root = YGNodeNewWithConfig(config);
|
||||||
@@ -1041,8 +1023,6 @@ TEST(YogaTest, box_sizing_border_box_min_width) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST(YogaTest, box_sizing_content_box_min_height) {
|
TEST(YogaTest, box_sizing_content_box_min_height) {
|
||||||
GTEST_SKIP();
|
|
||||||
|
|
||||||
YGConfigRef config = YGConfigNew();
|
YGConfigRef config = YGConfigNew();
|
||||||
|
|
||||||
YGNodeRef root = YGNodeNewWithConfig(config);
|
YGNodeRef root = YGNodeNewWithConfig(config);
|
||||||
@@ -1172,8 +1152,6 @@ TEST(YogaTest, box_sizing_border_box_min_height) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST(YogaTest, box_sizing_content_box_no_height_no_width) {
|
TEST(YogaTest, box_sizing_content_box_no_height_no_width) {
|
||||||
GTEST_SKIP();
|
|
||||||
|
|
||||||
YGConfigRef config = YGConfigNew();
|
YGConfigRef config = YGConfigNew();
|
||||||
|
|
||||||
YGNodeRef root = YGNodeNewWithConfig(config);
|
YGNodeRef root = YGNodeNewWithConfig(config);
|
||||||
@@ -1269,8 +1247,6 @@ TEST(YogaTest, box_sizing_border_box_no_height_no_width) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST(YogaTest, box_sizing_content_box_nested) {
|
TEST(YogaTest, box_sizing_content_box_nested) {
|
||||||
GTEST_SKIP();
|
|
||||||
|
|
||||||
YGConfigRef config = YGConfigNew();
|
YGConfigRef config = YGConfigNew();
|
||||||
|
|
||||||
YGNodeRef root = YGNodeNewWithConfig(config);
|
YGNodeRef root = YGNodeNewWithConfig(config);
|
||||||
@@ -1434,8 +1410,6 @@ TEST(YogaTest, box_sizing_border_box_nested) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST(YogaTest, box_sizing_content_box_nested_alternating) {
|
TEST(YogaTest, box_sizing_content_box_nested_alternating) {
|
||||||
GTEST_SKIP();
|
|
||||||
|
|
||||||
YGConfigRef config = YGConfigNew();
|
YGConfigRef config = YGConfigNew();
|
||||||
|
|
||||||
YGNodeRef root = YGNodeNewWithConfig(config);
|
YGNodeRef root = YGNodeNewWithConfig(config);
|
||||||
@@ -1541,8 +1515,6 @@ TEST(YogaTest, box_sizing_content_box_nested_alternating) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST(YogaTest, box_sizing_border_box_nested_alternating) {
|
TEST(YogaTest, box_sizing_border_box_nested_alternating) {
|
||||||
GTEST_SKIP();
|
|
||||||
|
|
||||||
YGConfigRef config = YGConfigNew();
|
YGConfigRef config = YGConfigNew();
|
||||||
|
|
||||||
YGNodeRef root = YGNodeNewWithConfig(config);
|
YGNodeRef root = YGNodeNewWithConfig(config);
|
||||||
|
@@ -324,8 +324,9 @@ void layoutAbsoluteChild(
|
|||||||
FlexDirection::Column, containingBlockWidth);
|
FlexDirection::Column, containingBlockWidth);
|
||||||
|
|
||||||
if (child->hasDefiniteLength(Dimension::Width, containingBlockWidth)) {
|
if (child->hasDefiniteLength(Dimension::Width, containingBlockWidth)) {
|
||||||
childWidth = child->getProcessedDimension(Dimension::Width)
|
childWidth = child
|
||||||
.resolve(containingBlockWidth)
|
->getResolvedDimension(
|
||||||
|
direction, Dimension::Width, containingBlockWidth)
|
||||||
.unwrap() +
|
.unwrap() +
|
||||||
marginRow;
|
marginRow;
|
||||||
} else {
|
} else {
|
||||||
@@ -359,8 +360,9 @@ void layoutAbsoluteChild(
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (child->hasDefiniteLength(Dimension::Height, containingBlockHeight)) {
|
if (child->hasDefiniteLength(Dimension::Height, containingBlockHeight)) {
|
||||||
childHeight = child->getProcessedDimension(Dimension::Height)
|
childHeight = child
|
||||||
.resolve(containingBlockHeight)
|
->getResolvedDimension(
|
||||||
|
direction, Dimension::Height, containingBlockHeight)
|
||||||
.unwrap() +
|
.unwrap() +
|
||||||
marginColumn;
|
marginColumn;
|
||||||
} else {
|
} else {
|
||||||
|
@@ -29,6 +29,7 @@ inline float paddingAndBorderForAxis(
|
|||||||
|
|
||||||
inline FloatOptional boundAxisWithinMinAndMax(
|
inline FloatOptional boundAxisWithinMinAndMax(
|
||||||
const yoga::Node* const node,
|
const yoga::Node* const node,
|
||||||
|
const Direction direction,
|
||||||
const FlexDirection axis,
|
const FlexDirection axis,
|
||||||
const FloatOptional value,
|
const FloatOptional value,
|
||||||
const float axisSize) {
|
const float axisSize) {
|
||||||
@@ -36,11 +37,15 @@ inline FloatOptional boundAxisWithinMinAndMax(
|
|||||||
FloatOptional max;
|
FloatOptional max;
|
||||||
|
|
||||||
if (isColumn(axis)) {
|
if (isColumn(axis)) {
|
||||||
min = node->style().minDimension(Dimension::Height).resolve(axisSize);
|
min = node->style().resolvedMinDimension(
|
||||||
max = node->style().maxDimension(Dimension::Height).resolve(axisSize);
|
direction, Dimension::Height, axisSize);
|
||||||
|
max = node->style().resolvedMaxDimension(
|
||||||
|
direction, Dimension::Height, axisSize);
|
||||||
} else if (isRow(axis)) {
|
} else if (isRow(axis)) {
|
||||||
min = node->style().minDimension(Dimension::Width).resolve(axisSize);
|
min = node->style().resolvedMinDimension(
|
||||||
max = node->style().maxDimension(Dimension::Width).resolve(axisSize);
|
direction, Dimension::Width, axisSize);
|
||||||
|
max = node->style().resolvedMaxDimension(
|
||||||
|
direction, Dimension::Width, axisSize);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (max >= FloatOptional{0} && value > max) {
|
if (max >= FloatOptional{0} && value > max) {
|
||||||
@@ -64,7 +69,8 @@ inline float boundAxis(
|
|||||||
const float axisSize,
|
const float axisSize,
|
||||||
const float widthSize) {
|
const float widthSize) {
|
||||||
return yoga::maxOrDefined(
|
return yoga::maxOrDefined(
|
||||||
boundAxisWithinMinAndMax(node, axis, FloatOptional{value}, axisSize)
|
boundAxisWithinMinAndMax(
|
||||||
|
node, direction, axis, FloatOptional{value}, axisSize)
|
||||||
.unwrap(),
|
.unwrap(),
|
||||||
paddingAndBorderForAxis(node, axis, direction, widthSize));
|
paddingAndBorderForAxis(node, axis, direction, widthSize));
|
||||||
}
|
}
|
||||||
|
@@ -38,13 +38,14 @@ std::atomic<uint32_t> gCurrentGenerationCount(0);
|
|||||||
|
|
||||||
static void constrainMaxSizeForMode(
|
static void constrainMaxSizeForMode(
|
||||||
const yoga::Node* node,
|
const yoga::Node* node,
|
||||||
|
Direction direction,
|
||||||
FlexDirection axis,
|
FlexDirection axis,
|
||||||
float ownerAxisSize,
|
float ownerAxisSize,
|
||||||
float ownerWidth,
|
float ownerWidth,
|
||||||
/*in_out*/ SizingMode* mode,
|
/*in_out*/ SizingMode* mode,
|
||||||
/*in_out*/ float* size) {
|
/*in_out*/ float* size) {
|
||||||
const FloatOptional maxSize =
|
const FloatOptional maxSize = node->style().resolvedMaxDimension(
|
||||||
node->style().maxDimension(dimension(axis)).resolve(ownerAxisSize) +
|
direction, dimension(axis), ownerAxisSize) +
|
||||||
FloatOptional(node->style().computeMarginForAxis(axis, ownerWidth));
|
FloatOptional(node->style().computeMarginForAxis(axis, ownerWidth));
|
||||||
switch (*mode) {
|
switch (*mode) {
|
||||||
case SizingMode::StretchFit:
|
case SizingMode::StretchFit:
|
||||||
@@ -110,7 +111,7 @@ static void computeFlexBasisForChild(
|
|||||||
child, FlexDirection::Row, direction, ownerWidth));
|
child, FlexDirection::Row, direction, ownerWidth));
|
||||||
|
|
||||||
child->setLayoutComputedFlexBasis(yoga::maxOrDefined(
|
child->setLayoutComputedFlexBasis(yoga::maxOrDefined(
|
||||||
child->getProcessedDimension(Dimension::Width).resolve(ownerWidth),
|
child->getResolvedDimension(direction, Dimension::Width, ownerWidth),
|
||||||
paddingAndBorder));
|
paddingAndBorder));
|
||||||
} else if (!isMainAxisRow && isColumnStyleDimDefined) {
|
} else if (!isMainAxisRow && isColumnStyleDimDefined) {
|
||||||
// The height is definite, so use that as the flex basis.
|
// The height is definite, so use that as the flex basis.
|
||||||
@@ -118,7 +119,7 @@ static void computeFlexBasisForChild(
|
|||||||
FloatOptional(paddingAndBorderForAxis(
|
FloatOptional(paddingAndBorderForAxis(
|
||||||
child, FlexDirection::Column, direction, ownerWidth));
|
child, FlexDirection::Column, direction, ownerWidth));
|
||||||
child->setLayoutComputedFlexBasis(yoga::maxOrDefined(
|
child->setLayoutComputedFlexBasis(yoga::maxOrDefined(
|
||||||
child->getProcessedDimension(Dimension::Height).resolve(ownerHeight),
|
child->getResolvedDimension(direction, Dimension::Height, ownerHeight),
|
||||||
paddingAndBorder));
|
paddingAndBorder));
|
||||||
} else {
|
} else {
|
||||||
// Compute the flex basis and hypothetical main size (i.e. the clamped flex
|
// Compute the flex basis and hypothetical main size (i.e. the clamped flex
|
||||||
@@ -132,15 +133,15 @@ static void computeFlexBasisForChild(
|
|||||||
child->style().computeMarginForAxis(FlexDirection::Column, ownerWidth);
|
child->style().computeMarginForAxis(FlexDirection::Column, ownerWidth);
|
||||||
|
|
||||||
if (isRowStyleDimDefined) {
|
if (isRowStyleDimDefined) {
|
||||||
childWidth = child->getProcessedDimension(Dimension::Width)
|
childWidth =
|
||||||
.resolve(ownerWidth)
|
child->getResolvedDimension(direction, Dimension::Width, ownerWidth)
|
||||||
.unwrap() +
|
.unwrap() +
|
||||||
marginRow;
|
marginRow;
|
||||||
childWidthSizingMode = SizingMode::StretchFit;
|
childWidthSizingMode = SizingMode::StretchFit;
|
||||||
}
|
}
|
||||||
if (isColumnStyleDimDefined) {
|
if (isColumnStyleDimDefined) {
|
||||||
childHeight = child->getProcessedDimension(Dimension::Height)
|
childHeight =
|
||||||
.resolve(ownerHeight)
|
child->getResolvedDimension(direction, Dimension::Height, ownerHeight)
|
||||||
.unwrap() +
|
.unwrap() +
|
||||||
marginColumn;
|
marginColumn;
|
||||||
childHeightSizingMode = SizingMode::StretchFit;
|
childHeightSizingMode = SizingMode::StretchFit;
|
||||||
@@ -216,6 +217,7 @@ static void computeFlexBasisForChild(
|
|||||||
|
|
||||||
constrainMaxSizeForMode(
|
constrainMaxSizeForMode(
|
||||||
child,
|
child,
|
||||||
|
direction,
|
||||||
FlexDirection::Row,
|
FlexDirection::Row,
|
||||||
ownerWidth,
|
ownerWidth,
|
||||||
ownerWidth,
|
ownerWidth,
|
||||||
@@ -223,6 +225,7 @@ static void computeFlexBasisForChild(
|
|||||||
&childWidth);
|
&childWidth);
|
||||||
constrainMaxSizeForMode(
|
constrainMaxSizeForMode(
|
||||||
child,
|
child,
|
||||||
|
direction,
|
||||||
FlexDirection::Column,
|
FlexDirection::Column,
|
||||||
ownerHeight,
|
ownerHeight,
|
||||||
ownerWidth,
|
ownerWidth,
|
||||||
@@ -469,6 +472,7 @@ static void zeroOutLayoutRecursively(yoga::Node* const node) {
|
|||||||
|
|
||||||
static float calculateAvailableInnerDimension(
|
static float calculateAvailableInnerDimension(
|
||||||
const yoga::Node* const node,
|
const yoga::Node* const node,
|
||||||
|
const Direction direction,
|
||||||
const Dimension dimension,
|
const Dimension dimension,
|
||||||
const float availableDim,
|
const float availableDim,
|
||||||
const float paddingAndBorder,
|
const float paddingAndBorder,
|
||||||
@@ -480,13 +484,13 @@ static float calculateAvailableInnerDimension(
|
|||||||
// We want to make sure our available height does not violate min and max
|
// We want to make sure our available height does not violate min and max
|
||||||
// constraints
|
// constraints
|
||||||
const FloatOptional minDimensionOptional =
|
const FloatOptional minDimensionOptional =
|
||||||
node->style().minDimension(dimension).resolve(ownerDim);
|
node->style().resolvedMinDimension(direction, dimension, ownerDim);
|
||||||
const float minInnerDim = minDimensionOptional.isUndefined()
|
const float minInnerDim = minDimensionOptional.isUndefined()
|
||||||
? 0.0f
|
? 0.0f
|
||||||
: minDimensionOptional.unwrap() - paddingAndBorder;
|
: minDimensionOptional.unwrap() - paddingAndBorder;
|
||||||
|
|
||||||
const FloatOptional maxDimensionOptional =
|
const FloatOptional maxDimensionOptional =
|
||||||
node->style().maxDimension(dimension).resolve(ownerDim);
|
node->style().resolvedMaxDimension(direction, dimension, ownerDim);
|
||||||
|
|
||||||
const float maxInnerDim = maxDimensionOptional.isUndefined()
|
const float maxInnerDim = maxDimensionOptional.isUndefined()
|
||||||
? FLT_MAX
|
? FLT_MAX
|
||||||
@@ -611,6 +615,7 @@ static float distributeFreeSpaceSecondPass(
|
|||||||
for (auto currentLineChild : flexLine.itemsInFlow) {
|
for (auto currentLineChild : flexLine.itemsInFlow) {
|
||||||
childFlexBasis = boundAxisWithinMinAndMax(
|
childFlexBasis = boundAxisWithinMinAndMax(
|
||||||
currentLineChild,
|
currentLineChild,
|
||||||
|
direction,
|
||||||
mainAxis,
|
mainAxis,
|
||||||
currentLineChild->getLayout().computedFlexBasis,
|
currentLineChild->getLayout().computedFlexBasis,
|
||||||
mainAxisownerSize)
|
mainAxisownerSize)
|
||||||
@@ -709,8 +714,9 @@ static float distributeFreeSpaceSecondPass(
|
|||||||
: SizingMode::FitContent;
|
: SizingMode::FitContent;
|
||||||
} else {
|
} else {
|
||||||
childCrossSize =
|
childCrossSize =
|
||||||
currentLineChild->getProcessedDimension(dimension(crossAxis))
|
currentLineChild
|
||||||
.resolve(availableInnerCrossDim)
|
->getResolvedDimension(
|
||||||
|
direction, dimension(crossAxis), availableInnerCrossDim)
|
||||||
.unwrap() +
|
.unwrap() +
|
||||||
marginCross;
|
marginCross;
|
||||||
const bool isLoosePercentageMeasurement =
|
const bool isLoosePercentageMeasurement =
|
||||||
@@ -725,6 +731,7 @@ static float distributeFreeSpaceSecondPass(
|
|||||||
|
|
||||||
constrainMaxSizeForMode(
|
constrainMaxSizeForMode(
|
||||||
currentLineChild,
|
currentLineChild,
|
||||||
|
direction,
|
||||||
mainAxis,
|
mainAxis,
|
||||||
availableInnerMainDim,
|
availableInnerMainDim,
|
||||||
availableInnerWidth,
|
availableInnerWidth,
|
||||||
@@ -732,6 +739,7 @@ static float distributeFreeSpaceSecondPass(
|
|||||||
&childMainSize);
|
&childMainSize);
|
||||||
constrainMaxSizeForMode(
|
constrainMaxSizeForMode(
|
||||||
currentLineChild,
|
currentLineChild,
|
||||||
|
direction,
|
||||||
crossAxis,
|
crossAxis,
|
||||||
availableInnerCrossDim,
|
availableInnerCrossDim,
|
||||||
availableInnerWidth,
|
availableInnerWidth,
|
||||||
@@ -812,6 +820,7 @@ static void distributeFreeSpaceFirstPass(
|
|||||||
for (auto currentLineChild : flexLine.itemsInFlow) {
|
for (auto currentLineChild : flexLine.itemsInFlow) {
|
||||||
float childFlexBasis = boundAxisWithinMinAndMax(
|
float childFlexBasis = boundAxisWithinMinAndMax(
|
||||||
currentLineChild,
|
currentLineChild,
|
||||||
|
direction,
|
||||||
mainAxis,
|
mainAxis,
|
||||||
currentLineChild->getLayout().computedFlexBasis,
|
currentLineChild->getLayout().computedFlexBasis,
|
||||||
mainAxisownerSize)
|
mainAxisownerSize)
|
||||||
@@ -982,8 +991,9 @@ static void justifyMainAxis(
|
|||||||
if (sizingModeMainDim == SizingMode::FitContent &&
|
if (sizingModeMainDim == SizingMode::FitContent &&
|
||||||
flexLine.layout.remainingFreeSpace > 0) {
|
flexLine.layout.remainingFreeSpace > 0) {
|
||||||
if (style.minDimension(dimension(mainAxis)).isDefined() &&
|
if (style.minDimension(dimension(mainAxis)).isDefined() &&
|
||||||
style.minDimension(dimension(mainAxis))
|
style
|
||||||
.resolve(mainAxisownerSize)
|
.resolvedMinDimension(
|
||||||
|
direction, dimension(mainAxis), mainAxisownerSize)
|
||||||
.isDefined()) {
|
.isDefined()) {
|
||||||
// This condition makes sure that if the size of main dimension(after
|
// This condition makes sure that if the size of main dimension(after
|
||||||
// considering child nodes main dim, leading and trailing padding etc)
|
// considering child nodes main dim, leading and trailing padding etc)
|
||||||
@@ -992,8 +1002,10 @@ static void justifyMainAxis(
|
|||||||
|
|
||||||
// `minAvailableMainDim` denotes minimum available space in which child
|
// `minAvailableMainDim` denotes minimum available space in which child
|
||||||
// can be laid out, it will exclude space consumed by padding and border.
|
// can be laid out, it will exclude space consumed by padding and border.
|
||||||
const float minAvailableMainDim = style.minDimension(dimension(mainAxis))
|
const float minAvailableMainDim =
|
||||||
.resolve(mainAxisownerSize)
|
style
|
||||||
|
.resolvedMinDimension(
|
||||||
|
direction, dimension(mainAxis), mainAxisownerSize)
|
||||||
.unwrap() -
|
.unwrap() -
|
||||||
leadingPaddingAndBorderMain - trailingPaddingAndBorderMain;
|
leadingPaddingAndBorderMain - trailingPaddingAndBorderMain;
|
||||||
const float occupiedSpaceByChildNodes =
|
const float occupiedSpaceByChildNodes =
|
||||||
@@ -1387,12 +1399,14 @@ static void calculateLayoutImpl(
|
|||||||
|
|
||||||
float availableInnerWidth = calculateAvailableInnerDimension(
|
float availableInnerWidth = calculateAvailableInnerDimension(
|
||||||
node,
|
node,
|
||||||
|
direction,
|
||||||
Dimension::Width,
|
Dimension::Width,
|
||||||
availableWidth - marginAxisRow,
|
availableWidth - marginAxisRow,
|
||||||
paddingAndBorderAxisRow,
|
paddingAndBorderAxisRow,
|
||||||
ownerWidth);
|
ownerWidth);
|
||||||
float availableInnerHeight = calculateAvailableInnerDimension(
|
float availableInnerHeight = calculateAvailableInnerDimension(
|
||||||
node,
|
node,
|
||||||
|
direction,
|
||||||
Dimension::Height,
|
Dimension::Height,
|
||||||
availableHeight - marginAxisColumn,
|
availableHeight - marginAxisColumn,
|
||||||
paddingAndBorderAxisColumn,
|
paddingAndBorderAxisColumn,
|
||||||
@@ -1480,16 +1494,20 @@ static void calculateLayoutImpl(
|
|||||||
if (sizingModeMainDim != SizingMode::StretchFit) {
|
if (sizingModeMainDim != SizingMode::StretchFit) {
|
||||||
const auto& style = node->style();
|
const auto& style = node->style();
|
||||||
const float minInnerWidth =
|
const float minInnerWidth =
|
||||||
style.minDimension(Dimension::Width).resolve(ownerWidth).unwrap() -
|
style.resolvedMinDimension(direction, Dimension::Width, ownerWidth)
|
||||||
|
.unwrap() -
|
||||||
paddingAndBorderAxisRow;
|
paddingAndBorderAxisRow;
|
||||||
const float maxInnerWidth =
|
const float maxInnerWidth =
|
||||||
style.maxDimension(Dimension::Width).resolve(ownerWidth).unwrap() -
|
style.resolvedMaxDimension(direction, Dimension::Width, ownerWidth)
|
||||||
|
.unwrap() -
|
||||||
paddingAndBorderAxisRow;
|
paddingAndBorderAxisRow;
|
||||||
const float minInnerHeight =
|
const float minInnerHeight =
|
||||||
style.minDimension(Dimension::Height).resolve(ownerHeight).unwrap() -
|
style.resolvedMinDimension(direction, Dimension::Height, ownerHeight)
|
||||||
|
.unwrap() -
|
||||||
paddingAndBorderAxisColumn;
|
paddingAndBorderAxisColumn;
|
||||||
const float maxInnerHeight =
|
const float maxInnerHeight =
|
||||||
style.maxDimension(Dimension::Height).resolve(ownerHeight).unwrap() -
|
style.resolvedMaxDimension(direction, Dimension::Height, ownerHeight)
|
||||||
|
.unwrap() -
|
||||||
paddingAndBorderAxisColumn;
|
paddingAndBorderAxisColumn;
|
||||||
|
|
||||||
const float minInnerMainDim =
|
const float minInnerMainDim =
|
||||||
@@ -1688,6 +1706,7 @@ static void calculateLayoutImpl(
|
|||||||
SizingMode childCrossSizingMode = SizingMode::StretchFit;
|
SizingMode childCrossSizingMode = SizingMode::StretchFit;
|
||||||
constrainMaxSizeForMode(
|
constrainMaxSizeForMode(
|
||||||
child,
|
child,
|
||||||
|
direction,
|
||||||
mainAxis,
|
mainAxis,
|
||||||
availableInnerMainDim,
|
availableInnerMainDim,
|
||||||
availableInnerWidth,
|
availableInnerWidth,
|
||||||
@@ -1695,6 +1714,7 @@ static void calculateLayoutImpl(
|
|||||||
&childMainSize);
|
&childMainSize);
|
||||||
constrainMaxSizeForMode(
|
constrainMaxSizeForMode(
|
||||||
child,
|
child,
|
||||||
|
direction,
|
||||||
crossAxis,
|
crossAxis,
|
||||||
availableInnerCrossDim,
|
availableInnerCrossDim,
|
||||||
availableInnerWidth,
|
availableInnerWidth,
|
||||||
@@ -1781,8 +1801,8 @@ static void calculateLayoutImpl(
|
|||||||
const float unclampedCrossDim = sizingModeCrossDim == SizingMode::StretchFit
|
const float unclampedCrossDim = sizingModeCrossDim == SizingMode::StretchFit
|
||||||
? availableInnerCrossDim + paddingAndBorderAxisCross
|
? availableInnerCrossDim + paddingAndBorderAxisCross
|
||||||
: node->hasDefiniteLength(dimension(crossAxis), crossAxisownerSize)
|
: node->hasDefiniteLength(dimension(crossAxis), crossAxisownerSize)
|
||||||
? node->getProcessedDimension(dimension(crossAxis))
|
? node->getResolvedDimension(
|
||||||
.resolve(crossAxisownerSize)
|
direction, dimension(crossAxis), crossAxisownerSize)
|
||||||
.unwrap()
|
.unwrap()
|
||||||
: totalLineCrossDim + paddingAndBorderAxisCross;
|
: totalLineCrossDim + paddingAndBorderAxisCross;
|
||||||
|
|
||||||
@@ -2035,6 +2055,7 @@ static void calculateLayoutImpl(
|
|||||||
availableInnerMainDim + paddingAndBorderAxisMain,
|
availableInnerMainDim + paddingAndBorderAxisMain,
|
||||||
boundAxisWithinMinAndMax(
|
boundAxisWithinMinAndMax(
|
||||||
node,
|
node,
|
||||||
|
direction,
|
||||||
mainAxis,
|
mainAxis,
|
||||||
FloatOptional{maxLineMainDim},
|
FloatOptional{maxLineMainDim},
|
||||||
mainAxisownerSize)
|
mainAxisownerSize)
|
||||||
@@ -2067,6 +2088,7 @@ static void calculateLayoutImpl(
|
|||||||
availableInnerCrossDim + paddingAndBorderAxisCross,
|
availableInnerCrossDim + paddingAndBorderAxisCross,
|
||||||
boundAxisWithinMinAndMax(
|
boundAxisWithinMinAndMax(
|
||||||
node,
|
node,
|
||||||
|
direction,
|
||||||
crossAxis,
|
crossAxis,
|
||||||
FloatOptional{
|
FloatOptional{
|
||||||
totalLineCrossDim + paddingAndBorderAxisCross},
|
totalLineCrossDim + paddingAndBorderAxisCross},
|
||||||
@@ -2355,20 +2377,21 @@ void calculateLayout(
|
|||||||
// the input parameters don't change.
|
// the input parameters don't change.
|
||||||
gCurrentGenerationCount.fetch_add(1, std::memory_order_relaxed);
|
gCurrentGenerationCount.fetch_add(1, std::memory_order_relaxed);
|
||||||
node->processDimensions();
|
node->processDimensions();
|
||||||
|
const Direction direction = node->resolveDirection(ownerDirection);
|
||||||
float width = YGUndefined;
|
float width = YGUndefined;
|
||||||
SizingMode widthSizingMode = SizingMode::MaxContent;
|
SizingMode widthSizingMode = SizingMode::MaxContent;
|
||||||
const auto& style = node->style();
|
const auto& style = node->style();
|
||||||
if (node->hasDefiniteLength(Dimension::Width, ownerWidth)) {
|
if (node->hasDefiniteLength(Dimension::Width, ownerWidth)) {
|
||||||
width =
|
width =
|
||||||
(node->getProcessedDimension(Dimension::Width)
|
(node->getResolvedDimension(
|
||||||
.resolve(ownerWidth)
|
direction, dimension(FlexDirection::Row), ownerWidth)
|
||||||
.unwrap() +
|
.unwrap() +
|
||||||
node->style().computeMarginForAxis(FlexDirection::Row, ownerWidth));
|
node->style().computeMarginForAxis(FlexDirection::Row, ownerWidth));
|
||||||
widthSizingMode = SizingMode::StretchFit;
|
widthSizingMode = SizingMode::StretchFit;
|
||||||
} else if (style.maxDimension(Dimension::Width)
|
} else if (style.resolvedMaxDimension(direction, Dimension::Width, ownerWidth)
|
||||||
.resolve(ownerWidth)
|
|
||||||
.isDefined()) {
|
.isDefined()) {
|
||||||
width = style.maxDimension(Dimension::Width).resolve(ownerWidth).unwrap();
|
width = style.resolvedMaxDimension(direction, Dimension::Width, ownerWidth)
|
||||||
|
.unwrap();
|
||||||
widthSizingMode = SizingMode::FitContent;
|
widthSizingMode = SizingMode::FitContent;
|
||||||
} else {
|
} else {
|
||||||
width = ownerWidth;
|
width = ownerWidth;
|
||||||
@@ -2380,16 +2403,18 @@ void calculateLayout(
|
|||||||
SizingMode heightSizingMode = SizingMode::MaxContent;
|
SizingMode heightSizingMode = SizingMode::MaxContent;
|
||||||
if (node->hasDefiniteLength(Dimension::Height, ownerHeight)) {
|
if (node->hasDefiniteLength(Dimension::Height, ownerHeight)) {
|
||||||
height =
|
height =
|
||||||
(node->getProcessedDimension(Dimension::Height)
|
(node->getResolvedDimension(
|
||||||
.resolve(ownerHeight)
|
direction, dimension(FlexDirection::Column), ownerHeight)
|
||||||
.unwrap() +
|
.unwrap() +
|
||||||
node->style().computeMarginForAxis(FlexDirection::Column, ownerWidth));
|
node->style().computeMarginForAxis(FlexDirection::Column, ownerWidth));
|
||||||
heightSizingMode = SizingMode::StretchFit;
|
heightSizingMode = SizingMode::StretchFit;
|
||||||
} else if (style.maxDimension(Dimension::Height)
|
} else if (style
|
||||||
.resolve(ownerHeight)
|
.resolvedMaxDimension(
|
||||||
|
direction, Dimension::Height, ownerHeight)
|
||||||
.isDefined()) {
|
.isDefined()) {
|
||||||
height =
|
height =
|
||||||
style.maxDimension(Dimension::Height).resolve(ownerHeight).unwrap();
|
style.resolvedMaxDimension(direction, Dimension::Height, ownerHeight)
|
||||||
|
.unwrap();
|
||||||
heightSizingMode = SizingMode::FitContent;
|
heightSizingMode = SizingMode::FitContent;
|
||||||
} else {
|
} else {
|
||||||
height = ownerHeight;
|
height = ownerHeight;
|
||||||
|
@@ -32,8 +32,9 @@ FlexLine calculateFlexLine(
|
|||||||
size_t firstElementInLineIndex = startOfLineIndex;
|
size_t firstElementInLineIndex = startOfLineIndex;
|
||||||
|
|
||||||
float sizeConsumedIncludingMinConstraint = 0;
|
float sizeConsumedIncludingMinConstraint = 0;
|
||||||
const FlexDirection mainAxis = resolveDirection(
|
const Direction direction = node->resolveDirection(ownerDirection);
|
||||||
node->style().flexDirection(), node->resolveDirection(ownerDirection));
|
const FlexDirection mainAxis =
|
||||||
|
resolveDirection(node->style().flexDirection(), direction);
|
||||||
const bool isNodeFlexWrap = node->style().flexWrap() != Wrap::NoWrap;
|
const bool isNodeFlexWrap = node->style().flexWrap() != Wrap::NoWrap;
|
||||||
const float gap =
|
const float gap =
|
||||||
node->style().computeGapForAxis(mainAxis, availableInnerMainDim);
|
node->style().computeGapForAxis(mainAxis, availableInnerMainDim);
|
||||||
@@ -67,6 +68,7 @@ FlexLine calculateFlexLine(
|
|||||||
const float flexBasisWithMinAndMaxConstraints =
|
const float flexBasisWithMinAndMaxConstraints =
|
||||||
boundAxisWithinMinAndMax(
|
boundAxisWithinMinAndMax(
|
||||||
child,
|
child,
|
||||||
|
direction,
|
||||||
mainAxis,
|
mainAxis,
|
||||||
child->getLayout().computedFlexBasis,
|
child->getLayout().computedFlexBasis,
|
||||||
mainAxisownerSize)
|
mainAxisownerSize)
|
||||||
|
@@ -156,6 +156,25 @@ class YG_EXPORT Node : public ::YGNode {
|
|||||||
return processedDimensions_[static_cast<size_t>(dimension)];
|
return processedDimensions_[static_cast<size_t>(dimension)];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
FloatOptional getResolvedDimension(
|
||||||
|
Direction direction,
|
||||||
|
Dimension dimension,
|
||||||
|
float referenceLength) const {
|
||||||
|
FloatOptional value =
|
||||||
|
getProcessedDimension(dimension).resolve(referenceLength);
|
||||||
|
if (style_.boxSizing() == BoxSizing::BorderBox) {
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
FloatOptional dimensionPaddingAndBorder =
|
||||||
|
FloatOptional{style_.computePaddingAndBorderForDimension(
|
||||||
|
direction, dimension, referenceLength)};
|
||||||
|
|
||||||
|
return value +
|
||||||
|
(dimensionPaddingAndBorder.isDefined() ? dimensionPaddingAndBorder
|
||||||
|
: FloatOptional{0.0});
|
||||||
|
}
|
||||||
|
|
||||||
// Setters
|
// Setters
|
||||||
|
|
||||||
void setContext(void* context) {
|
void setContext(void* context) {
|
||||||
|
@@ -189,6 +189,23 @@ class YG_EXPORT Style {
|
|||||||
pool_.store(minDimensions_[yoga::to_underlying(axis)], value);
|
pool_.store(minDimensions_[yoga::to_underlying(axis)], value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
FloatOptional resolvedMinDimension(
|
||||||
|
Direction direction,
|
||||||
|
Dimension axis,
|
||||||
|
float referenceLength) const {
|
||||||
|
FloatOptional value = minDimension(axis).resolve(referenceLength);
|
||||||
|
if (boxSizing() == BoxSizing::BorderBox) {
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
FloatOptional dimensionPaddingAndBorder = FloatOptional{
|
||||||
|
computePaddingAndBorderForDimension(direction, axis, referenceLength)};
|
||||||
|
|
||||||
|
return value +
|
||||||
|
(dimensionPaddingAndBorder.isDefined() ? dimensionPaddingAndBorder
|
||||||
|
: FloatOptional{0.0});
|
||||||
|
}
|
||||||
|
|
||||||
Style::Length maxDimension(Dimension axis) const {
|
Style::Length maxDimension(Dimension axis) const {
|
||||||
return pool_.getLength(maxDimensions_[yoga::to_underlying(axis)]);
|
return pool_.getLength(maxDimensions_[yoga::to_underlying(axis)]);
|
||||||
}
|
}
|
||||||
@@ -196,6 +213,23 @@ class YG_EXPORT Style {
|
|||||||
pool_.store(maxDimensions_[yoga::to_underlying(axis)], value);
|
pool_.store(maxDimensions_[yoga::to_underlying(axis)], value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
FloatOptional resolvedMaxDimension(
|
||||||
|
Direction direction,
|
||||||
|
Dimension axis,
|
||||||
|
float referenceLength) const {
|
||||||
|
FloatOptional value = maxDimension(axis).resolve(referenceLength);
|
||||||
|
if (boxSizing() == BoxSizing::BorderBox) {
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
FloatOptional dimensionPaddingAndBorder = FloatOptional{
|
||||||
|
computePaddingAndBorderForDimension(direction, axis, referenceLength)};
|
||||||
|
|
||||||
|
return value +
|
||||||
|
(dimensionPaddingAndBorder.isDefined() ? dimensionPaddingAndBorder
|
||||||
|
: FloatOptional{0.0});
|
||||||
|
}
|
||||||
|
|
||||||
FloatOptional aspectRatio() const {
|
FloatOptional aspectRatio() const {
|
||||||
return pool_.getNumber(aspectRatio_);
|
return pool_.getNumber(aspectRatio_);
|
||||||
}
|
}
|
||||||
@@ -446,6 +480,20 @@ class YG_EXPORT Style {
|
|||||||
computeFlexEndBorder(axis, direction);
|
computeFlexEndBorder(axis, direction);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
float computePaddingAndBorderForDimension(
|
||||||
|
Direction direction,
|
||||||
|
Dimension dimension,
|
||||||
|
float widthSize) const {
|
||||||
|
FlexDirection flexDirectionForDimension = dimension == Dimension::Width
|
||||||
|
? FlexDirection::Row
|
||||||
|
: FlexDirection::Column;
|
||||||
|
|
||||||
|
return computeFlexStartPaddingAndBorder(
|
||||||
|
flexDirectionForDimension, direction, widthSize) +
|
||||||
|
computeFlexEndPaddingAndBorder(
|
||||||
|
flexDirectionForDimension, direction, widthSize);
|
||||||
|
}
|
||||||
|
|
||||||
float computeBorderForAxis(FlexDirection axis) const {
|
float computeBorderForAxis(FlexDirection axis) const {
|
||||||
return computeInlineStartBorder(axis, Direction::LTR) +
|
return computeInlineStartBorder(axis, Direction::LTR) +
|
||||||
computeInlineEndBorder(axis, Direction::LTR);
|
computeInlineEndBorder(axis, Direction::LTR);
|
||||||
|
Reference in New Issue
Block a user