From 593a5535d33f78659245d7f59c03ba24808002ae Mon Sep 17 00:00:00 2001 From: pensLong Date: Thu, 4 Sep 2025 11:28:30 +0800 Subject: [PATCH] feat: Refresh and ScrollableCommon undefined Signed-off-by: pensLong --- .../scrollable/scrollable_model_static.cpp | 25 +++++++++++-------- .../scrollable/scrollable_model_static.h | 1 + .../implementation/refresh_modifier.cpp | 2 ++ .../scrollable_common_method_modifier.cpp | 14 ++++------- 4 files changed, 23 insertions(+), 19 deletions(-) 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 8d310eccf11..9de5a025cfb 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 d93346c9336..36d3c149d5d 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 b1b61385bba..e102f941ac6 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 4332844653d..109c1e98f4a 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); -- Gitee