@@ -1142,6 +1142,21 @@ void ViewComponentView::updateProps(
11421142 // update BaseComponentView props
11431143 updateAccessibilityProps (oldViewProps, newViewProps);
11441144 updateTransformProps (oldViewProps, newViewProps, Visual ());
1145+
1146+ // Handle overflow property changes
1147+ if (oldViewProps.yogaStyle .overflow () != newViewProps.yogaStyle .overflow ()) {
1148+ auto compVisual =
1149+ winrt::Microsoft::ReactNative::Composition::Experimental::MicrosoftCompositionContextHelper::InnerVisual (
1150+ Visual ());
1151+ if (compVisual) {
1152+ if (newViewProps.yogaStyle .overflow () == facebook::yoga::Overflow::Hidden) {
1153+ compVisual.Clip (Compositor ().CreateInsetClip (0 .0f , 0 .0f , 0 .0f , 0 .0f ));
1154+ } else {
1155+ compVisual.Clip (nullptr );
1156+ }
1157+ }
1158+ }
1159+
11451160 base_type::updateProps (props, oldProps);
11461161
11471162 m_props = std::static_pointer_cast<facebook::react::ViewProps const >(props);
@@ -1319,6 +1334,23 @@ void ViewComponentView::updateLayoutMetrics(
13191334 Visual ().Size (
13201335 {layoutMetrics.frame .size .width * layoutMetrics.pointScaleFactor ,
13211336 layoutMetrics.frame .size .height * layoutMetrics.pointScaleFactor });
1337+
1338+ // Apply overflow clipping
1339+ if (m_props && m_props->yogaStyle .overflow () == facebook::yoga::Overflow::Hidden) {
1340+ auto compVisual =
1341+ winrt::Microsoft::ReactNative::Composition::Experimental::MicrosoftCompositionContextHelper::InnerVisual (
1342+ Visual ());
1343+ if (compVisual) {
1344+ compVisual.Clip (Compositor ().CreateInsetClip (0 .0f , 0 .0f , 0 .0f , 0 .0f ));
1345+ }
1346+ } else if (m_props) {
1347+ auto compVisual =
1348+ winrt::Microsoft::ReactNative::Composition::Experimental::MicrosoftCompositionContextHelper::InnerVisual (
1349+ Visual ());
1350+ if (compVisual) {
1351+ compVisual.Clip (nullptr );
1352+ }
1353+ }
13221354}
13231355
13241356void ViewComponentView::prepareForRecycle () noexcept {}
0 commit comments