@@ -81,6 +81,9 @@ struct ScrollBarComponent {
81
81
}
82
82
83
83
void ContentSize (winrt::Windows::Foundation::Size contentSize) noexcept {
84
+ if (m_contentSize == contentSize) {
85
+ return ;
86
+ }
84
87
m_contentSize = contentSize;
85
88
updateThumb ();
86
89
updateVisibility (m_visible);
@@ -112,6 +115,12 @@ struct ScrollBarComponent {
112
115
}
113
116
114
117
void updateVisibility (bool visible) noexcept {
118
+ if ((m_size.Width <= 0 .0f && m_size.Height <= 0 .0f ) ||
119
+ (m_contentSize.Width <= 0 .0f && m_contentSize.Height <= 0 .0f )) {
120
+ m_rootVisual.IsVisible (false );
121
+ return ;
122
+ }
123
+
115
124
if (!visible) {
116
125
m_visible = false ;
117
126
m_rootVisual.IsVisible (visible);
@@ -769,6 +778,18 @@ void ScrollViewComponentView::updateProps(
769
778
if (!oldProps || oldViewProps.decelerationRate != newViewProps.decelerationRate ) {
770
779
updateDecelerationRate (newViewProps.decelerationRate );
771
780
}
781
+
782
+ if (oldViewProps.maximumZoomScale != newViewProps.maximumZoomScale ) {
783
+ m_scrollVisual.SetMaximumZoomScale (newViewProps.maximumZoomScale );
784
+ }
785
+
786
+ if (oldViewProps.minimumZoomScale != newViewProps.minimumZoomScale ) {
787
+ m_scrollVisual.SetMinimumZoomScale (newViewProps.minimumZoomScale );
788
+ }
789
+
790
+ if (oldViewProps.zoomScale != newViewProps.zoomScale ) {
791
+ m_scrollVisual.Scale ({newViewProps.zoomScale , newViewProps.zoomScale , newViewProps.zoomScale });
792
+ }
772
793
}
773
794
774
795
void ScrollViewComponentView::updateState (
@@ -800,14 +821,15 @@ void ScrollViewComponentView::updateLayoutMetrics(
800
821
facebook::react::LayoutMetrics const &oldLayoutMetrics) noexcept {
801
822
// Set Position & Size Properties
802
823
ensureVisual ();
803
-
804
- m_verticalScrollbarComponent->updateLayoutMetrics (layoutMetrics);
805
- m_horizontalScrollbarComponent->updateLayoutMetrics (layoutMetrics);
806
- base_type::updateLayoutMetrics (layoutMetrics, oldLayoutMetrics);
807
- m_scrollVisual.Size (
808
- {layoutMetrics.frame .size .width * layoutMetrics.pointScaleFactor ,
809
- layoutMetrics.frame .size .height * layoutMetrics.pointScaleFactor });
810
- updateContentVisualSize ();
824
+ if (oldLayoutMetrics != layoutMetrics) {
825
+ m_verticalScrollbarComponent->updateLayoutMetrics (layoutMetrics);
826
+ m_horizontalScrollbarComponent->updateLayoutMetrics (layoutMetrics);
827
+ base_type::updateLayoutMetrics (layoutMetrics, oldLayoutMetrics);
828
+ m_scrollVisual.Size (
829
+ {layoutMetrics.frame .size .width * layoutMetrics.pointScaleFactor ,
830
+ layoutMetrics.frame .size .height * layoutMetrics.pointScaleFactor });
831
+ updateContentVisualSize ();
832
+ }
811
833
}
812
834
813
835
void ScrollViewComponentView::updateContentVisualSize () noexcept {
0 commit comments