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..900d4f1e3f78b82762a0ef8bcec6bfa04dd53deb 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) @@ -43,6 +45,8 @@ void ScrollableModelStatic::SetScrollBarColor(FrameNode* frameNode, const std::o } 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) @@ -52,6 +56,8 @@ void ScrollableModelStatic::SetScrollBarWidth(FrameNode* frameNode, const std::o } 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 +161,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 e6ad99396da405df223dc9b079c714b4dc6b85af..333ef3d6e209b6d00626a6a0c5fffea2f3fcc5eb 100644 --- a/frameworks/core/interfaces/native/implementation/refresh_modifier.cpp +++ b/frameworks/core/interfaces/native/implementation/refresh_modifier.cpp @@ -100,6 +100,7 @@ void OnStateChangeImpl(Ark_NativePointer node, const Opt_Callback_RefreshStatus_ 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) { @@ -116,6 +117,7 @@ void OnRefreshingImpl(Ark_NativePointer node, const Opt_Callback_Void* value) 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 44ba36839e47943fa325fb1b145c81d9aafdc511..316a182d3a3936190e81b61e28e9183608d52429 100644 --- a/frameworks/core/interfaces/native/implementation/scrollable_common_method_modifier.cpp +++ b/frameworks/core/interfaces/native/implementation/scrollable_common_method_modifier.cpp @@ -184,7 +184,7 @@ void OnReachStartImpl(Ark_NativePointer node, CHECK_NULL_VOID(frameNode); auto optValue = Converter::GetOptPtr(value); if (!optValue) { - // TODO: Reset value + ScrollableModelStatic::SetOnReachStart(frameNode, nullptr); return; } auto modelCallback = [callbackHelper = CallbackHelper(*optValue)]() { @@ -199,7 +199,7 @@ void OnReachEndImpl(Ark_NativePointer node, CHECK_NULL_VOID(frameNode); auto optValue = Converter::GetOptPtr(value); if (!optValue) { - // TODO: Reset value + ScrollableModelStatic::SetOnReachEnd(frameNode, nullptr); return; } auto modelCallback = [callbackHelper = CallbackHelper(*optValue)]() { @@ -214,7 +214,7 @@ void OnScrollStartImpl(Ark_NativePointer node, CHECK_NULL_VOID(frameNode); auto optValue = Converter::GetOptPtr(value); if (!optValue) { - // TODO: Reset value + ScrollableModelStatic::SetOnScrollStart(frameNode, nullptr); return; } auto modelCallback = [callbackHelper = CallbackHelper(*optValue)]() { @@ -229,7 +229,7 @@ void OnScrollStopImpl(Ark_NativePointer node, CHECK_NULL_VOID(frameNode); auto optValue = Converter::GetOptPtr(value); if (!optValue) { - // TODO: Reset value + ScrollableModelStatic::SetOnScrollStop(frameNode, nullptr); return; } auto modelCallback = [callbackHelper = CallbackHelper(*optValue)]() { @@ -243,10 +243,6 @@ void FlingSpeedLimitImpl(Ark_NativePointer node, auto frameNode = reinterpret_cast(node); CHECK_NULL_VOID(frameNode); auto convValue = Converter::OptConvert(*value); - if (!convValue) { - // TODO: Reset value - return; - } ScrollableModelStatic::SetMaxFlingSpeed(frameNode, *convValue); } void ClipContentImpl(Ark_NativePointer node, @@ -288,7 +284,7 @@ void BackToTopImpl(Ark_NativePointer node, CHECK_NULL_VOID(frameNode); auto convValue = Converter::OptConvert(*value); if (!convValue) { - // TODO: Reset value + ScrollableModelStatic::ResetBackToTop(frameNode); return; } ScrollableModelStatic::SetBackToTop(frameNode, *convValue);