Skip to content

Commit f8252f6

Browse files
committed
Fix display contents not updating nodes
1 parent 46ac063 commit f8252f6

4 files changed

Lines changed: 131 additions & 25 deletions

File tree

ios/Podfile.lock

Lines changed: 6 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -487,7 +487,6 @@ PODS:
487487
- React-jsinspector
488488
- React-jsitooling
489489
- React-perflogger
490-
- React-rendererconsistency
491490
- React-runtimescheduler
492491
- React-utils
493492
- SocketRocket (= 0.7.1)
@@ -506,7 +505,6 @@ PODS:
506505
- React-jsinspector
507506
- React-jsitooling
508507
- React-perflogger
509-
- React-rendererconsistency
510508
- React-runtimescheduler
511509
- React-utils
512510
- SocketRocket (= 0.7.1)
@@ -524,7 +522,6 @@ PODS:
524522
- React-jsinspector
525523
- React-jsitooling
526524
- React-perflogger
527-
- React-rendererconsistency
528525
- React-runtimescheduler
529526
- React-utils
530527
- SocketRocket (= 0.7.1)
@@ -544,7 +541,6 @@ PODS:
544541
- React-jsinspector
545542
- React-jsitooling
546543
- React-perflogger
547-
- React-rendererconsistency
548544
- React-runtimescheduler
549545
- React-utils
550546
- SocketRocket (= 0.7.1)
@@ -563,7 +559,6 @@ PODS:
563559
- React-jsinspector
564560
- React-jsitooling
565561
- React-perflogger
566-
- React-rendererconsistency
567562
- React-runtimescheduler
568563
- React-utils
569564
- SocketRocket (= 0.7.1)
@@ -582,7 +577,6 @@ PODS:
582577
- React-jsinspector
583578
- React-jsitooling
584579
- React-perflogger
585-
- React-rendererconsistency
586580
- React-runtimescheduler
587581
- React-utils
588582
- SocketRocket (= 0.7.1)
@@ -601,7 +595,6 @@ PODS:
601595
- React-jsinspector
602596
- React-jsitooling
603597
- React-perflogger
604-
- React-rendererconsistency
605598
- React-runtimescheduler
606599
- React-utils
607600
- SocketRocket (= 0.7.1)
@@ -620,7 +613,6 @@ PODS:
620613
- React-jsinspector
621614
- React-jsitooling
622615
- React-perflogger
623-
- React-rendererconsistency
624616
- React-runtimescheduler
625617
- React-utils
626618
- SocketRocket (= 0.7.1)
@@ -639,7 +631,6 @@ PODS:
639631
- React-jsinspector
640632
- React-jsitooling
641633
- React-perflogger
642-
- React-rendererconsistency
643634
- React-runtimescheduler
644635
- React-utils
645636
- SocketRocket (= 0.7.1)
@@ -658,7 +649,6 @@ PODS:
658649
- React-jsinspector
659650
- React-jsitooling
660651
- React-perflogger
661-
- React-rendererconsistency
662652
- React-runtimescheduler
663653
- React-utils
664654
- SocketRocket (= 0.7.1)
@@ -677,7 +667,6 @@ PODS:
677667
- React-jsinspector
678668
- React-jsitooling
679669
- React-perflogger
680-
- React-rendererconsistency
681670
- React-runtimescheduler
682671
- React-utils
683672
- SocketRocket (= 0.7.1)
@@ -696,7 +685,6 @@ PODS:
696685
- React-jsinspector
697686
- React-jsitooling
698687
- React-perflogger
699-
- React-rendererconsistency
700688
- React-runtimescheduler
701689
- React-utils
702690
- SocketRocket (= 0.7.1)
@@ -715,7 +703,6 @@ PODS:
715703
- React-jsinspector
716704
- React-jsitooling
717705
- React-perflogger
718-
- React-rendererconsistency
719706
- React-runtimescheduler
720707
- React-utils
721708
- SocketRocket (= 0.7.1)
@@ -734,7 +721,6 @@ PODS:
734721
- React-jsinspector
735722
- React-jsitooling
736723
- React-perflogger
737-
- React-rendererconsistency
738724
- React-runtimescheduler
739725
- React-utils
740726
- SocketRocket (= 0.7.1)
@@ -2847,7 +2833,7 @@ PODS:
28472833
- RNGoogleSignin (10.0.1):
28482834
- GoogleSignIn (~> 7.0)
28492835
- React-Core
2850-
- RNLiveMarkdown (0.1.288):
2836+
- RNLiveMarkdown (0.1.292):
28512837
- DoubleConversion
28522838
- glog
28532839
- hermes-engine
@@ -3716,7 +3702,7 @@ SPEC CHECKSUMS:
37163702
AirshipServiceExtension: 9c73369f426396d9fb9ff222d86d842fac76ba46
37173703
AppAuth: 501c04eda8a8d11f179dbe8637b7a91bb7e5d2fa
37183704
AppLogs: 3bc4e9b141dbf265b9464409caaa40416a9ee0e0
3719-
boost: 659a89341ea4ab3df8259733813b52f26d8be9a5
3705+
boost: 7e761d76ca2ce687f7cc98e698152abd03a18f90
37203706
DoubleConversion: cb417026b2400c8f53ae97020b2be961b59470cb
37213707
EXAV: 13d43af15268a3f448a6b994e91574c939f065e6
37223708
EXImageLoader: ab4fcf9240cf3636a83c00e3fc5229d692899428
@@ -3776,7 +3762,7 @@ SPEC CHECKSUMS:
37763762
RCTTypeSafety: 659ae318c09de0477fd27bbc9e140071c7ea5c93
37773763
React: c2d3aa44c49bb34e4dfd49d3ee92da5ebacc1c1c
37783764
React-callinvoker: 1bdfb7549b5af266d85757193b5069f60659ef9d
3779-
React-Core: 7e3642ef83e1032df3d25ebc840868c0c54381ca
3765+
React-Core: 7150cf9b6a5af063b37003062689f1691e79c020
37803766
React-CoreModules: 15a85e6665d61678942da6ae485b351f4c699049
37813767
React-cxxreact: 74f9de59259ac951923f5726aa14f0398f167af9
37823768
React-debug: e74e76912b91e08d580c481c34881899ccf63da9
@@ -3825,7 +3811,7 @@ SPEC CHECKSUMS:
38253811
react-native-webview: 0f56a0e7348f945abdc92546dc62ce93d083fa75
38263812
React-NativeModulesApple: 452b86b29fae99ed0a4015dca3ad9cd222f88abf
38273813
React-oscompat: ef5df1c734f19b8003e149317d041b8ce1f7d29c
3828-
React-perflogger: 005c6dfd4aa335fd527c94cc4591ed9b509f0486
3814+
React-perflogger: 6fd2f6811533e9c19a61e855c3033eecbf4ad2a0
38293815
React-performancetimeline: abf31259d794c9274b3ea19c5016186925eec6c4
38303816
React-RCTActionSheet: a499b0d6d9793886b67ba3e16046a3fef2cdbbc3
38313817
React-RCTAnimation: 2595dcb10a82216a511b54742f8c28d793852ac6
@@ -3840,7 +3826,7 @@ SPEC CHECKSUMS:
38403826
React-RCTSettings: a060c7e381a3896104761b8eed7e284d95e37df3
38413827
React-RCTText: 4f272b72dbb61f390d8c8274528f9fdbff983806
38423828
React-RCTVibration: 0e5326220719aca12473d703aa46693e3b4ce67a
3843-
React-rendererconsistency: 3a8c9e0828a14d477b44958581034915d86c1517
3829+
React-rendererconsistency: 351fdbc5c1fe4da24243d939094a80f0e149c7a1
38443830
React-renderercss: d333f2ada83969591100d91ec6b23ca2e17e1507
38453831
React-rendererdebug: 039e5949b72ba63c703de020701e3fd152434c61
38463832
React-rncore: 57ed480649bb678d8bdc386d20fee8bf2b0c307c
@@ -3867,7 +3853,7 @@ SPEC CHECKSUMS:
38673853
RNFS: 4ac0f0ea233904cb798630b3c077808c06931688
38683854
RNGestureHandler: 5d8431415d4b8518e86e289e9ad5bb9be78f6dba
38693855
RNGoogleSignin: ccaa4a81582cf713eea562c5dd9dc1961a715fd0
3870-
RNLiveMarkdown: 1c09c5813366c29885b757b4c0a5e163a89f8d55
3856+
RNLiveMarkdown: fe4ccb190153d536c607735211c3ef16e5068042
38713857
RNLocalize: d4b8af4e442d4bcca54e68fc687a2129b4d71a81
38723858
rnmapbox-maps: ef00aafe2cbef8808f2aa6168e3f86ce103058bc
38733859
RNNitroSQLite: 44e596c1fb8f852f9a158eb07c647f706df13514

package-lock.json

Lines changed: 4 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@
8686
"@expensify/nitro-utils": "file:./modules/ExpensifyNitroUtils",
8787
"@expensify/react-native-background-task": "file:./modules/background-task",
8888
"@expensify/react-native-hybrid-app": "file:./modules/hybrid-app",
89-
"@expensify/react-native-live-markdown": "0.1.289",
89+
"@expensify/react-native-live-markdown": "0.1.292",
9090
"@expensify/react-native-wallet": "^0.1.5",
9191
"@expo/metro-runtime": "^5.0.4",
9292
"@firebase/app": "^0.10.10",
Lines changed: 120 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,120 @@
1+
diff --git a/node_modules/react-native/ReactCommon/yoga/yoga/algorithm/CalculateLayout.cpp b/node_modules/react-native/ReactCommon/yoga/yoga/algorithm/CalculateLayout.cpp
2+
index 3618474..ab5b828 100644
3+
--- a/node_modules/react-native/ReactCommon/yoga/yoga/algorithm/CalculateLayout.cpp
4+
+++ b/node_modules/react-native/ReactCommon/yoga/yoga/algorithm/CalculateLayout.cpp
5+
@@ -476,16 +476,19 @@ static void zeroOutLayoutRecursively(yoga::Node* const node) {
6+
}
7+
8+
static void cleanupContentsNodesRecursively(yoga::Node* const node) {
9+
- for (auto child : node->getChildren()) {
10+
- if (child->style().display() == Display::Contents) {
11+
- child->getLayout() = {};
12+
- child->setLayoutDimension(0, Dimension::Width);
13+
- child->setLayoutDimension(0, Dimension::Height);
14+
- child->setHasNewLayout(true);
15+
- child->setDirty(false);
16+
- child->cloneChildrenIfNeeded();
17+
-
18+
- cleanupContentsNodesRecursively(child);
19+
+ if (node->hasContentsChildren()) [[unlikely]] {
20+
+ node->cloneContentsChildrenIfNeeded();
21+
+ for (auto child : node->getChildren()) {
22+
+ if (child->style().display() == Display::Contents) {
23+
+ child->getLayout() = {};
24+
+ child->setLayoutDimension(0, Dimension::Width);
25+
+ child->setLayoutDimension(0, Dimension::Height);
26+
+ child->setHasNewLayout(true);
27+
+ child->setDirty(false);
28+
+ child->cloneChildrenIfNeeded();
29+
+
30+
+ cleanupContentsNodesRecursively(child);
31+
+ }
32+
}
33+
}
34+
}
35+
diff --git a/node_modules/react-native/ReactCommon/yoga/yoga/node/Node.cpp b/node_modules/react-native/ReactCommon/yoga/yoga/node/Node.cpp
36+
index dce42fb..f1bc5e8 100644
37+
--- a/node_modules/react-native/ReactCommon/yoga/yoga/node/Node.cpp
38+
+++ b/node_modules/react-native/ReactCommon/yoga/yoga/node/Node.cpp
39+
@@ -181,6 +181,17 @@ void Node::setDirty(bool isDirty) {
40+
}
41+
}
42+
43+
+void Node::setChildren(const std::vector<Node*>& children) {
44+
+ children_ = children;
45+
+
46+
+ contentsChildrenCount_ = 0;
47+
+ for (const auto& child : children) {
48+
+ if (child->style().display() == Display::Contents) {
49+
+ contentsChildrenCount_++;
50+
+ }
51+
+ }
52+
+}
53+
+
54+
bool Node::removeChild(Node* child) {
55+
auto p = std::find(children_.begin(), children_.end(), child);
56+
if (p != children_.end()) {
57+
@@ -379,6 +390,23 @@ void Node::cloneChildrenIfNeeded() {
58+
if (child->getOwner() != this) {
59+
child = resolveRef(config_->cloneNode(child, this, i));
60+
child->setOwner(this);
61+
+
62+
+ if (child->hasContentsChildren()) [[unlikely]] {
63+
+ child->cloneContentsChildrenIfNeeded();
64+
+ }
65+
+ }
66+
+ i += 1;
67+
+ }
68+
+}
69+
+
70+
+void Node::cloneContentsChildrenIfNeeded() {
71+
+ size_t i = 0;
72+
+ for (Node*& child : children_) {
73+
+ if (child->style().display() == Display::Contents &&
74+
+ child->getOwner() != this) {
75+
+ child = resolveRef(config_->cloneNode(child, this, i));
76+
+ child->setOwner(this);
77+
+ child->cloneChildrenIfNeeded();
78+
}
79+
i += 1;
80+
}
81+
diff --git a/node_modules/react-native/ReactCommon/yoga/yoga/node/Node.h b/node_modules/react-native/ReactCommon/yoga/yoga/node/Node.h
82+
index 5ae7d43..3454d54 100644
83+
--- a/node_modules/react-native/ReactCommon/yoga/yoga/node/Node.h
84+
+++ b/node_modules/react-native/ReactCommon/yoga/yoga/node/Node.h
85+
@@ -96,6 +96,10 @@ class YG_EXPORT Node : public ::YGNode {
86+
return config_->hasErrata(errata);
87+
}
88+
89+
+ bool hasContentsChildren() const {
90+
+ return contentsChildrenCount_ != 0;
91+
+ }
92+
+
93+
YGDirtiedFunc getDirtiedFunc() const {
94+
return dirtiedFunc_;
95+
}
96+
@@ -244,15 +248,12 @@ class YG_EXPORT Node : public ::YGNode {
97+
owner_ = owner;
98+
}
99+
100+
- void setChildren(const std::vector<Node*>& children) {
101+
- children_ = children;
102+
- }
103+
-
104+
// TODO: rvalue override for setChildren
105+
106+
void setConfig(Config* config);
107+
108+
void setDirty(bool isDirty);
109+
+ void setChildren(const std::vector<Node*>& children);
110+
void setLayoutLastOwnerDirection(Direction direction);
111+
void setLayoutComputedFlexBasis(FloatOptional computedFlexBasis);
112+
void setLayoutComputedFlexBasisGeneration(
113+
@@ -286,6 +287,7 @@ class YG_EXPORT Node : public ::YGNode {
114+
void removeChild(size_t index);
115+
116+
void cloneChildrenIfNeeded();
117+
+ void cloneContentsChildrenIfNeeded();
118+
void markDirtyAndPropagate();
119+
float resolveFlexGrow() const;
120+
float resolveFlexShrink() const;

0 commit comments

Comments
 (0)