Skip to content

Commit 42cd123

Browse files
author
Nitin Chaudhary
committed
Implement overflow property support for Fabric architecture
1 parent 5837f91 commit 42cd123

File tree

1 file changed

+32
-0
lines changed

1 file changed

+32
-0
lines changed

vnext/Microsoft.ReactNative/Fabric/Composition/CompositionViewComponentView.cpp

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

13241356
void ViewComponentView::prepareForRecycle() noexcept {}

0 commit comments

Comments
 (0)