Skip to content

Commit e82479e

Browse files
joevilchesNickGerleman
authored andcommitted
Fix bug where absolute nodes were not insetted correctly in certain cases (#1593)
Summary: Pull Request resolved: #1593 X-link: react/react-native#43417 There was a bug where we did not position absolute nodes correctly if the static node had a different main/cross axis from the containing node. This fixes that. The change is somewhat complicated unfortunately but I tried to add sufficient comments to explain what is happening Reviewed By: NickGerleman Differential Revision: D54703955 fbshipit-source-id: 096c643f61d4f9bb3ee6278d675ebd69b57350d7
1 parent 508b9a5 commit e82479e

6 files changed

Lines changed: 1500 additions & 65 deletions

File tree

gentest/fixtures/YGStaticPositionTest.html

Lines changed: 55 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,60 @@
1919
</div>
2020
</div>
2121

22+
<div id="static_position_absolute_child_insets_relative_to_positioned_ancestor_row_reverse">
23+
<div style="width: 200px; height: 200px; position: relative; flex-direction: row-reverse">
24+
<div style="height: 100px; width: 100px; position: static">
25+
<div style="height: 50px; width: 50px; position: absolute; top: 50px; left: 50px;">
26+
</div>
27+
</div>
28+
</div>
29+
</div>
30+
31+
<div id="column_reverse_static_position_absolute_child_insets_relative_to_positioned_ancestor_row_reverse">
32+
<div style="width: 200px; height: 200px; position: relative; flex-direction: row-reverse">
33+
<div style="height: 100px; width: 100px; position: static; flex-direction: column-reverse">
34+
<div style="height: 50px; width: 50px; position: absolute; top: 50px; left: 50px;">
35+
</div>
36+
</div>
37+
</div>
38+
</div>
39+
40+
<div id="static_position_absolute_child_insets_relative_to_positioned_ancestor_row">
41+
<div style="width: 200px; height: 200px; position: relative; flex-direction: row">
42+
<div style="height: 100px; width: 100px; position: static">
43+
<div style="height: 50px; width: 50px; position: absolute; top: 50px; right: 50px;">
44+
</div>
45+
</div>
46+
</div>
47+
</div>
48+
49+
<div id="column_reverse_static_position_absolute_child_insets_relative_to_positioned_ancestor_row">
50+
<div style="width: 200px; height: 200px; position: relative; flex-direction: row">
51+
<div style="height: 100px; width: 100px; position: static; flex-direction: column-reverse">
52+
<div style="height: 50px; width: 50px; position: absolute; top: 50px; right: 50px;">
53+
</div>
54+
</div>
55+
</div>
56+
</div>
57+
58+
<div id="static_position_absolute_child_insets_relative_to_positioned_ancestor_column_reverse">
59+
<div style="width: 200px; height: 200px; position: relative; flex-direction: column-reverse">
60+
<div style="height: 100px; width: 100px; position: static">
61+
<div style="height: 50px; width: 50px; position: absolute; top: 50px; right: 50px;">
62+
</div>
63+
</div>
64+
</div>
65+
</div>
66+
67+
<div id="column_reverse_static_position_absolute_child_insets_relative_to_positioned_ancestor_column_reverse">
68+
<div style="width: 200px; height: 200px; position: relative; flex-direction: column-reverse">
69+
<div style="height: 100px; width: 100px; position: static; flex-direction: column-reverse">
70+
<div style="height: 50px; width: 50px; position: absolute; top: 50px; right: 50px;">
71+
</div>
72+
</div>
73+
</div>
74+
</div>
75+
2276
<div id="static_position_absolute_child_insets_relative_to_positioned_ancestor_deep">
2377
<div style="width: 200px; height: 200px; position: relative">
2478
<div style="height: 100px; width: 100px; margin-left: 100px; position: static">
@@ -634,8 +688,7 @@
634688
</div>
635689
</div>
636690

637-
<div id="static_position_static_root"
638-
style="height:200px; width: 100px; position: static; padding: 1px 11px 4px 6px;">
691+
<div id="static_position_static_root" style="height:200px; width: 100px; position: static; padding: 1px 11px 4px 6px;">
639692
<div
640693
style="height: 50%; width: 50%; position: absolute; border-width: 3px 2px 1px 4px; padding: 7px 5px 4px 3px; margin: 11px 15px 1px 12px">
641694
</div>

0 commit comments

Comments
 (0)