Skip to content

Commit 576ee66

Browse files
authored
[Fabric] Update ActivityIndicator to newer visuals (#12865)
* [Fabric] Update ActivityIndicator to newer visuals * Change files
1 parent bd45b7c commit 576ee66

File tree

4 files changed

+389
-91
lines changed

4 files changed

+389
-91
lines changed
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
{
2+
"type": "prerelease",
3+
"comment": "[Fabric] Update ActivityIndicator to newer visuals",
4+
"packageName": "react-native-windows",
5+
"email": "[email protected]",
6+
"dependentChangeType": "patch"
7+
}

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

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -62,15 +62,6 @@ void ActivityIndicatorComponentView::updateProps(
6262
m_visual.Comment(winrt::to_hstring(newViewProps->testId));
6363
}
6464

65-
// update size if needed
66-
if (newViewProps->size != oldViewProps->size) {
67-
if (newViewProps->size == facebook::react::ActivityIndicatorViewSize::Small) {
68-
m_ActivityIndicatorVisual.Size(m_radiusSmall);
69-
} else {
70-
m_ActivityIndicatorVisual.Size(m_radiusLarge);
71-
}
72-
}
73-
7465
// update color if needed
7566
if (!oldProps || newViewProps->color != oldViewProps->color) {
7667
updateProgressColor(newViewProps->color);
@@ -85,6 +76,19 @@ void ActivityIndicatorComponentView::updateProps(
8576
m_props = std::static_pointer_cast<facebook::react::ViewProps const>(props);
8677
}
8778

79+
void ActivityIndicatorComponentView::FinalizeUpdates(
80+
winrt::Microsoft::ReactNative::ComponentViewUpdateMask updateMask) noexcept {
81+
static constexpr float radiusSmall = 10.0f;
82+
static constexpr float radiusLarge = 18.0f;
83+
84+
if (std::static_pointer_cast<const facebook::react::ActivityIndicatorViewProps>(m_props)->size ==
85+
facebook::react::ActivityIndicatorViewSize::Small) {
86+
m_ActivityIndicatorVisual.Size(radiusSmall * m_layoutMetrics.pointScaleFactor);
87+
} else {
88+
m_ActivityIndicatorVisual.Size(radiusLarge * m_layoutMetrics.pointScaleFactor);
89+
}
90+
}
91+
8892
void ActivityIndicatorComponentView::updateState(
8993
facebook::react::State::Shared const &state,
9094
facebook::react::State::Shared const &oldState) noexcept {}
@@ -114,7 +118,7 @@ facebook::react::SharedViewProps ActivityIndicatorComponentView::viewProps() noe
114118
void ActivityIndicatorComponentView::ensureVisual() noexcept {
115119
if (!m_visual) {
116120
m_visual = m_compContext.CreateSpriteVisual();
117-
m_ActivityIndicatorVisual = m_compContext.CreateActivityVisual(); // creates COM control
121+
m_ActivityIndicatorVisual = m_compContext.CreateActivityVisual();
118122

119123
OuterVisual().InsertAt(m_ActivityIndicatorVisual, 0);
120124
OuterVisual().InsertAt(m_visual, 0);

vnext/Microsoft.ReactNative/Fabric/Composition/ActivityIndicatorComponentView.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ struct ActivityIndicatorComponentView : ActivityIndicatorComponentViewT<Activity
3434
void updateLayoutMetrics(
3535
facebook::react::LayoutMetrics const &layoutMetrics,
3636
facebook::react::LayoutMetrics const &oldLayoutMetrics) noexcept override;
37+
void FinalizeUpdates(winrt::Microsoft::ReactNative::ComponentViewUpdateMask updateMask) noexcept override;
3738
void prepareForRecycle() noexcept override;
3839
facebook::react::SharedViewProps viewProps() noexcept override;
3940
bool focusable() const noexcept override;
@@ -51,13 +52,12 @@ struct ActivityIndicatorComponentView : ActivityIndicatorComponentViewT<Activity
5152

5253
private:
5354
void ensureVisual() noexcept;
55+
void updateVisualSize() noexcept;
5456
void updateProgressColor(const facebook::react::SharedColor &color) noexcept;
5557

5658
winrt::Microsoft::ReactNative::Composition::ISpriteVisual m_visual{nullptr};
5759
winrt::Microsoft::ReactNative::Composition::IActivityVisual m_ActivityIndicatorVisual{nullptr};
5860
facebook::react::SharedViewProps m_props;
59-
float m_radiusSmall = 8.0f;
60-
float m_radiusLarge = 16.0f;
6161
};
6262

6363
} // namespace winrt::Microsoft::ReactNative::Composition::implementation

0 commit comments

Comments
 (0)