diff --git a/ReactCommon/fabric/components/view/ViewShadowNode.cpp b/ReactCommon/fabric/components/view/ViewShadowNode.cpp index 2beb57c8d71..07636a5276f 100644 --- a/ReactCommon/fabric/components/view/ViewShadowNode.cpp +++ b/ReactCommon/fabric/components/view/ViewShadowNode.cpp @@ -12,5 +12,32 @@ namespace react { const char ViewComponentName[] = "View"; +bool ViewShadowNode::isLayoutOnly() const { +#ifdef ANDROID + // This feature is not properly tested on Android yet. + return false; +#else + const auto &viewProps = *std::static_pointer_cast(props_); + + return + // Event listeners + !viewProps.onLayout && + // Generic Props + viewProps.nativeId.empty() && + // Accessibility Props + !viewProps.accessible && + // Style Props + viewProps.yogaStyle.overflow == YGOverflowVisible && + viewProps.opacity == 1.0 && + !viewProps.backgroundColor && + !viewProps.foregroundColor && + !viewProps.shadowColor && + viewProps.transform == Transform {} && + viewProps.zIndex == 0 && + // Layout Metrics + getLayoutMetrics().borderWidth == EdgeInsets {}; +#endif +} + } // namespace react } // namespace facebook diff --git a/ReactCommon/fabric/components/view/ViewShadowNode.h b/ReactCommon/fabric/components/view/ViewShadowNode.h index effac24c4fb..9dedb15aa99 100644 --- a/ReactCommon/fabric/components/view/ViewShadowNode.h +++ b/ReactCommon/fabric/components/view/ViewShadowNode.h @@ -15,12 +15,21 @@ namespace react { extern const char ViewComponentName[]; -using ViewShadowNode = - ConcreteViewShadowNode< +/* + * `ShadowNode` for component. + */ +class ViewShadowNode final: + public ConcreteViewShadowNode< ViewComponentName, ViewProps, ViewEventEmitter - >; + > { + +public: + using ConcreteViewShadowNode::ConcreteViewShadowNode; + + bool isLayoutOnly() const; +}; } // namespace react } // namespace facebook diff --git a/ReactCommon/fabric/components/view/accessibility/AccessibilityProps.h b/ReactCommon/fabric/components/view/accessibility/AccessibilityProps.h index f50d4553cbe..5533667a637 100644 --- a/ReactCommon/fabric/components/view/accessibility/AccessibilityProps.h +++ b/ReactCommon/fabric/components/view/accessibility/AccessibilityProps.h @@ -29,7 +29,7 @@ public: #pragma mark - Props - const bool accessible {true}; + const bool accessible {false}; const std::vector accessibilityActions {}; const std::string accessibilityLabel {""}; const AccessibilityTraits accessibilityTraits {AccessibilityTraits::None};