diff --git a/frameworks/core/components_ng/pattern/scrollable/scrollable_model_static.cpp b/frameworks/core/components_ng/pattern/scrollable/scrollable_model_static.cpp index 8d310eccf11050683701753bf867dc2786dd5e64..9de5a025cfb0a5379c465a41e10f1e50ea510af4 100644 --- a/frameworks/core/components_ng/pattern/scrollable/scrollable_model_static.cpp +++ b/frameworks/core/components_ng/pattern/scrollable/scrollable_model_static.cpp @@ -21,6 +21,8 @@ namespace OHOS::Ace::NG { namespace { constexpr Dimension DEFAULT_FADING_EDGE_LENGTH_SCROLLABLE = Dimension(32.0f, DimensionUnit::VP); // default value +constexpr Dimension DEFAULT_SCROLL_BAR_WIDTH_SCROLLABLE = Dimension(4.0f, DimensionUnit::VP); // default value +inline const Color DEFAULT_SCROLL_BAR_COLOR_SCROLLABLE = Color(0x66182431); // default value } void ScrollableModelStatic::SetScrollBarMode(FrameNode* frameNode, const std::optional& value) @@ -38,20 +40,14 @@ void ScrollableModelStatic::SetScrollBarMode(FrameNode* frameNode, const std::op void ScrollableModelStatic::SetScrollBarColor(FrameNode* frameNode, const std::optional& value) { - if (value) { - ACE_UPDATE_NODE_PAINT_PROPERTY(ScrollablePaintProperty, ScrollBarColor, value.value(), frameNode); - } else { - ACE_RESET_NODE_PAINT_PROPERTY(ScrollablePaintProperty, ScrollBarColor, frameNode); - } + ACE_UPDATE_NODE_PAINT_PROPERTY( + ScrollablePaintProperty, ScrollBarColor, value.value_or(DEFAULT_SCROLL_BAR_COLOR_SCROLLABLE), frameNode); } void ScrollableModelStatic::SetScrollBarWidth(FrameNode* frameNode, const std::optional& value) { - if (value) { - ACE_UPDATE_NODE_PAINT_PROPERTY(ScrollablePaintProperty, ScrollBarWidth, value.value(), frameNode); - } else { - ACE_RESET_NODE_PAINT_PROPERTY(ScrollablePaintProperty, ScrollBarWidth, frameNode); - } + ACE_UPDATE_NODE_PAINT_PROPERTY( + ScrollablePaintProperty, ScrollBarWidth, value.value_or(DEFAULT_SCROLL_BAR_WIDTH_SCROLLABLE), frameNode); } void ScrollableModelStatic::SetNestedScroll(FrameNode* frameNode, @@ -155,6 +151,15 @@ void ScrollableModelStatic::SetBackToTop(FrameNode* frameNode, bool backToTop) pattern->UseDefaultBackToTop(false); } +void ScrollableModelStatic::ResetBackToTop(FrameNode* frameNode) +{ + CHECK_NULL_VOID(frameNode); + auto pattern = frameNode->GetPattern(); + CHECK_NULL_VOID(pattern); + pattern->ResetBackToTop(); + pattern->UseDefaultBackToTop(true); +} + void ScrollableModelStatic::SetEdgeEffect( FrameNode* frameNode, const std::optional& edgeEffect, const std::optional& alwaysEnabled, EffectEdge effectEdge) diff --git a/frameworks/core/components_ng/pattern/scrollable/scrollable_model_static.h b/frameworks/core/components_ng/pattern/scrollable/scrollable_model_static.h index d93346c9336603f040725b26d7d5a8823aae4416..36d3c149d5d7a477340046b8b89508ed376f418b 100644 --- a/frameworks/core/components_ng/pattern/scrollable/scrollable_model_static.h +++ b/frameworks/core/components_ng/pattern/scrollable/scrollable_model_static.h @@ -37,6 +37,7 @@ public: static void SetMaxFlingSpeed(FrameNode* frameNode, const std::optional& max); static void SetContentClip(FrameNode* frameNode, ContentClipMode mode, const RefPtr& rect); static void SetBackToTop(FrameNode* frameNode, bool backToTop); + static void ResetBackToTop(FrameNode* frameNode); static void SetEdgeEffect( FrameNode* frameNode, const std::optional& edgeEffect, const std::optional& alwaysEnabled, EffectEdge effectEdge = EffectEdge::ALL); diff --git a/frameworks/core/interfaces/native/implementation/refresh_modifier.cpp b/frameworks/core/interfaces/native/implementation/refresh_modifier.cpp index b1b61385bbad62c05ffd5244a0ec62d9e94993ab..e102f941ac6dc1d4a9e98b7c3d9f9f95f656c106 100644 --- a/frameworks/core/interfaces/native/implementation/refresh_modifier.cpp +++ b/frameworks/core/interfaces/native/implementation/refresh_modifier.cpp @@ -124,6 +124,7 @@ void SetOnStateChangeImpl(Ark_NativePointer node, CHECK_NULL_VOID(frameNode); auto optValue = Converter::GetOptPtr(value); if (!optValue) { + RefreshModelStatic::SetOnStateChange(frameNode, nullptr); return; } auto onStateChange = [arkCallback = CallbackHelper(*optValue)](const int32_t statusValue) { @@ -140,6 +141,7 @@ void SetOnRefreshingImpl(Ark_NativePointer node, CHECK_NULL_VOID(frameNode); auto optValue = Converter::GetOptPtr(value); if (!optValue) { + RefreshModelStatic::SetOnRefreshing(frameNode, nullptr); return; } auto onRefreshing = [arkCallback = CallbackHelper(*optValue)]() { arkCallback.Invoke(); }; diff --git a/frameworks/core/interfaces/native/implementation/scrollable_common_method_modifier.cpp b/frameworks/core/interfaces/native/implementation/scrollable_common_method_modifier.cpp index 4332844653d18530e5db07f855580b85b17c8fd7..109c1e98f4a915b0e50c3f78fd14137073e5b4d2 100644 --- a/frameworks/core/interfaces/native/implementation/scrollable_common_method_modifier.cpp +++ b/frameworks/core/interfaces/native/implementation/scrollable_common_method_modifier.cpp @@ -140,7 +140,7 @@ void SetOnReachStartImpl(Ark_NativePointer node, CHECK_NULL_VOID(frameNode); auto optValue = Converter::GetOptPtr(value); if (!optValue) { - // Implement Reset value + ScrollableModelStatic::SetOnReachStart(frameNode, nullptr); return; } auto modelCallback = [callbackHelper = CallbackHelper(*optValue)]() { @@ -155,7 +155,7 @@ void SetOnReachEndImpl(Ark_NativePointer node, CHECK_NULL_VOID(frameNode); auto optValue = Converter::GetOptPtr(value); if (!optValue) { - // Implement Reset value + ScrollableModelStatic::SetOnReachEnd(frameNode, nullptr); return; } auto modelCallback = [callbackHelper = CallbackHelper(*optValue)]() { @@ -170,7 +170,7 @@ void SetOnScrollStartImpl(Ark_NativePointer node, CHECK_NULL_VOID(frameNode); auto optValue = Converter::GetOptPtr(value); if (!optValue) { - // Implement Reset value + ScrollableModelStatic::SetOnScrollStart(frameNode, nullptr); return; } auto modelCallback = [callbackHelper = CallbackHelper(*optValue)]() { @@ -185,7 +185,7 @@ void SetOnScrollStopImpl(Ark_NativePointer node, CHECK_NULL_VOID(frameNode); auto optValue = Converter::GetOptPtr(value); if (!optValue) { - // Implement Reset value + ScrollableModelStatic::SetOnScrollStop(frameNode, nullptr); return; } auto modelCallback = [callbackHelper = CallbackHelper(*optValue)]() { @@ -199,10 +199,6 @@ void SetFlingSpeedLimitImpl(Ark_NativePointer node, auto frameNode = reinterpret_cast(node); CHECK_NULL_VOID(frameNode); auto convValue = Converter::OptConvertPtr(value); - if (!convValue) { - // Implement Reset value - return; - } ScrollableModelStatic::SetMaxFlingSpeed(frameNode, *convValue); } void SetClipContentImpl(Ark_NativePointer node, @@ -244,7 +240,7 @@ void SetBackToTopImpl(Ark_NativePointer node, CHECK_NULL_VOID(frameNode); auto convValue = Converter::OptConvertPtr(value); if (!convValue) { - // Implement Reset value + ScrollableModelStatic::ResetBackToTop(frameNode); return; } ScrollableModelStatic::SetBackToTop(frameNode, *convValue);