diff --git a/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm b/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm index a10f8c063c9..d1e23ad3f35 100644 --- a/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm +++ b/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm @@ -185,8 +185,8 @@ using namespace facebook::react; } // `overflow` - if (oldViewProps.yogaStyle.overflow() != newViewProps.yogaStyle.overflow()) { - self.clipsToBounds = newViewProps.yogaStyle.overflow() != YGOverflowVisible; + if (oldViewProps.getClipsContentToBounds() != newViewProps.getClipsContentToBounds()) { + self.clipsToBounds = newViewProps.getClipsContentToBounds(); needsInvalidateLayer = YES; } diff --git a/ReactAndroid/src/main/java/com/facebook/react/fabric/jsi/jni/Binding.cpp b/ReactAndroid/src/main/java/com/facebook/react/fabric/jsi/jni/Binding.cpp index bff1dc8b3f1..4bc1df5c249 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/fabric/jsi/jni/Binding.cpp +++ b/ReactAndroid/src/main/java/com/facebook/react/fabric/jsi/jni/Binding.cpp @@ -161,7 +161,7 @@ local_ref getPlatformComponentName(const ShadowView& shadowView) { std::dynamic_pointer_cast(shadowView.props); if (newViewProps && - newViewProps->yogaStyle.flexDirection() == YGFlexDirectionRow) { + newViewProps->getProbablyMoreHorizontalThanVertical_DEPRECATED()) { componentName = make_jstring("AndroidHorizontalScrollView"); } else { componentName = make_jstring(shadowView.componentName); diff --git a/ReactCommon/fabric/components/view/ViewProps.cpp b/ReactCommon/fabric/components/view/ViewProps.cpp index ceef5f91a96..e42cc536fce 100644 --- a/ReactCommon/fabric/components/view/ViewProps.cpp +++ b/ReactCommon/fabric/components/view/ViewProps.cpp @@ -146,6 +146,16 @@ BorderMetrics ViewProps::resolveBorderMetrics( }; } +bool ViewProps::getClipsContentToBounds() const { + return yogaStyle.overflow() != YGOverflowVisible; +} + +#ifdef ANDROID +bool ViewProps::getProbablyMoreHorizontalThanVertical_DEPRECATED() const { + return yogaStyle.flexDirection() == YGFlexDirectionRow; +} +#endif + #pragma mark - DebugStringConvertible #if RN_DEBUG_STRING_CONVERTIBLE diff --git a/ReactCommon/fabric/components/view/ViewProps.h b/ReactCommon/fabric/components/view/ViewProps.h index c5f74d772f1..4cb3cc77e72 100644 --- a/ReactCommon/fabric/components/view/ViewProps.h +++ b/ReactCommon/fabric/components/view/ViewProps.h @@ -65,6 +65,11 @@ class ViewProps : public Props, #pragma mark - Convenience Methods BorderMetrics resolveBorderMetrics(LayoutMetrics const &layoutMetrics) const; + bool getClipsContentToBounds() const; + +#ifdef ANDROID + bool getProbablyMoreHorizontalThanVertical_DEPRECATED() const; +#endif #pragma mark - DebugStringConvertible diff --git a/ReactCommon/fabric/components/view/ViewShadowNode.cpp b/ReactCommon/fabric/components/view/ViewShadowNode.cpp index db0e8a2bf48..73902a8b256 100644 --- a/ReactCommon/fabric/components/view/ViewShadowNode.cpp +++ b/ReactCommon/fabric/components/view/ViewShadowNode.cpp @@ -21,10 +21,10 @@ bool ViewShadowNode::isLayoutOnly() const { // 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 && + !viewProps.getClipsContentToBounds() && // Layout Metrics getLayoutMetrics().borderWidth == EdgeInsets{}; } diff --git a/ReactCommon/fabric/components/view/yoga/YogaStylableProps.h b/ReactCommon/fabric/components/view/yoga/YogaStylableProps.h index 470a064cbe8..6fa82ebe146 100644 --- a/ReactCommon/fabric/components/view/yoga/YogaStylableProps.h +++ b/ReactCommon/fabric/components/view/yoga/YogaStylableProps.h @@ -29,12 +29,17 @@ class YogaStylableProps { #pragma mark - Props + protected: + friend class YogaLayoutableShadowNode; const YGStyle yogaStyle{}; +#if RN_DEBUG_STRING_CONVERTIBLE + #pragma mark - DebugStringConvertible (Partial) -#if RN_DEBUG_STRING_CONVERTIBLE + public: SharedDebugStringConvertibleList getDebugProps() const; + #endif };