mirror of
https://github.com/zhigang1992/react-native.git
synced 2026-04-03 22:48:25 +08:00
Don't wrap unknown virtual nodes with AndroidView
Summary: Currently, we wrap all unknown shadow nodes with AndroidView. This works great, except when the shadow node is virtual, i.e. it *doesn't* mount to a View. In this case, we just need to keep it in the hierarchy as is. Fixes ARTSurfaceView not working correctly in groups. Reviewed By: ahmedre Differential Revision: D2933325
This commit is contained in:
committed by
Ahmed El-Helw
parent
4bff818706
commit
8702a75b96
@@ -110,7 +110,7 @@ public class FlatUIImplementation extends UIImplementation {
|
||||
@Override
|
||||
protected ReactShadowNode createShadowNode(String className) {
|
||||
ReactShadowNode cssNode = super.createShadowNode(className);
|
||||
if (cssNode instanceof FlatShadowNode) {
|
||||
if (cssNode instanceof FlatShadowNode || cssNode.isVirtual()) {
|
||||
return cssNode;
|
||||
}
|
||||
|
||||
@@ -122,15 +122,19 @@ public class FlatUIImplementation extends UIImplementation {
|
||||
ReactShadowNode cssNode,
|
||||
int rootViewTag,
|
||||
@Nullable ReactStylesDiffMap styles) {
|
||||
FlatShadowNode node = (FlatShadowNode) cssNode;
|
||||
if (cssNode instanceof FlatShadowNode) {
|
||||
FlatShadowNode node = (FlatShadowNode) cssNode;
|
||||
|
||||
if (styles != null) {
|
||||
node.handleUpdateProperties(styles);
|
||||
}
|
||||
if (styles != null) {
|
||||
node.handleUpdateProperties(styles);
|
||||
}
|
||||
|
||||
if (node.mountsToView()) {
|
||||
int tag = cssNode.getReactTag();
|
||||
mStateBuilder.ensureBackingViewIsCreated(node, tag, styles);
|
||||
if (node.mountsToView()) {
|
||||
int tag = cssNode.getReactTag();
|
||||
mStateBuilder.ensureBackingViewIsCreated(node, tag, styles);
|
||||
}
|
||||
} else {
|
||||
super.handleCreateView(cssNode, rootViewTag, styles);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -139,13 +143,17 @@ public class FlatUIImplementation extends UIImplementation {
|
||||
ReactShadowNode cssNode,
|
||||
String className,
|
||||
ReactStylesDiffMap styles) {
|
||||
FlatShadowNode node = (FlatShadowNode) cssNode;
|
||||
if (cssNode instanceof FlatShadowNode) {
|
||||
FlatShadowNode node = (FlatShadowNode) cssNode;
|
||||
|
||||
node.handleUpdateProperties(styles);
|
||||
node.handleUpdateProperties(styles);
|
||||
|
||||
if (node.mountsToView()) {
|
||||
int tag = cssNode.getReactTag();
|
||||
mStateBuilder.ensureBackingViewIsCreated(node, tag, styles);
|
||||
if (node.mountsToView()) {
|
||||
int tag = cssNode.getReactTag();
|
||||
mStateBuilder.ensureBackingViewIsCreated(node, tag, styles);
|
||||
}
|
||||
} else {
|
||||
super.handleUpdateView(cssNode, className, styles);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user