diff --git a/frameworks/core/components_ng/pattern/container_modal/container_modal_pattern.cpp b/frameworks/core/components_ng/pattern/container_modal/container_modal_pattern.cpp index 7e3f9f0f8b1338ee0af5231bcd568e40a4893d9e..462070327bb8182aa79a14009f74e4c8a17ac5a8 100644 --- a/frameworks/core/components_ng/pattern/container_modal/container_modal_pattern.cpp +++ b/frameworks/core/components_ng/pattern/container_modal/container_modal_pattern.cpp @@ -184,13 +184,13 @@ void ContainerModalPattern::InitContainerEvent() controlButtonsLayoutProperty->UpdateVisibility(VisibleType::VISIBLE); AnimationUtils::Animate(option, [controlButtonsContext]() { controlButtonsContext->OnTransformTranslateUpdate({ 0.0f, 0.0f, 0.0f }); - }); + }, nullptr, nullptr, container->GetContextRefPtr()); floatingContext->OnTransformTranslateUpdate({ 0.0f, static_cast(-titlePopupDistance), 0.0f }); floatingLayoutProperty->UpdateVisibility( container->floatingTitleSettedShow_ ? VisibleType::VISIBLE : VisibleType::GONE); AnimationUtils::Animate(option, [floatingContext]() { floatingContext->OnTransformTranslateUpdate({ 0.0f, 0.0f, 0.0f }); - }); + }, nullptr, nullptr, container->GetContextRefPtr()); } return; } @@ -211,7 +211,7 @@ void ContainerModalPattern::InitContainerEvent() [floatingLayoutProperty, id = Container::CurrentId()]() { ContainerScope scope(id); floatingLayoutProperty->UpdateVisibility(VisibleType::GONE); - }); + }, nullptr, container->GetContextRefPtr()); }); // init mouse event @@ -231,13 +231,13 @@ void ContainerModalPattern::InitContainerEvent() controlButtonsLayoutProperty->UpdateVisibility(VisibleType::VISIBLE); AnimationUtils::Animate(option, [controlButtonsContext]() { controlButtonsContext->OnTransformTranslateUpdate({ 0.0f, 0.0f, 0.0f }); - }); + }, nullptr, nullptr, container->GetContextRefPtr()); floatingContext->OnTransformTranslateUpdate({ 0.0f, static_cast(-titlePopupDistance), 0.0f }); floatingLayoutProperty->UpdateVisibility( container->floatingTitleSettedShow_ ? VisibleType::VISIBLE : VisibleType::GONE); AnimationUtils::Animate(option, [floatingContext]() { floatingContext->OnTransformTranslateUpdate({ 0.0f, 0.0f, 0.0f }); - }); + }, nullptr, nullptr, container->GetContextRefPtr()); } if (!container->CanHideFloatingTitle()) { @@ -256,7 +256,7 @@ void ContainerModalPattern::InitContainerEvent() [floatingLayoutProperty, id = Container::CurrentId()]() { ContainerScope scope(id); floatingLayoutProperty->UpdateVisibility(VisibleType::GONE); - }); + }, nullptr, container->GetContextRefPtr()); } }); } @@ -1133,4 +1133,10 @@ void ContainerModalPattern::UpdateContainerBgColor() containerContext->UpdateBackgroundColor(GetContainerColor(isFocus_)); } } +RefPtr ContainerModalPattern::GetContextRefPtr() +{ + auto containerNode = GetHost(); + CHECK_NULL_RETURN(containerNode, nullptr); + return containerNode->GetContextRefPtr(); +} } // namespace OHOS::Ace::NG \ No newline at end of file diff --git a/frameworks/core/components_ng/pattern/container_modal/container_modal_pattern.h b/frameworks/core/components_ng/pattern/container_modal/container_modal_pattern.h index c6ce1b288f1206073e47f4226f3688be523ef100..fb7ca203c0a65550c7370757c79d95ada47dfa43 100644 --- a/frameworks/core/components_ng/pattern/container_modal/container_modal_pattern.h +++ b/frameworks/core/components_ng/pattern/container_modal/container_modal_pattern.h @@ -310,6 +310,7 @@ protected: void InitContainerEvent(); void InitLayoutProperty(); void InitContainerColor(); + RefPtr GetContextRefPtr(); virtual void InitButtonsLayoutProperty(); virtual void NotifyButtonsRectChange(const RectF& containerModal, const RectF& buttonsRect) {} diff --git a/frameworks/core/components_ng/pattern/container_modal/enhance/container_modal_pattern_enhance.cpp b/frameworks/core/components_ng/pattern/container_modal/enhance/container_modal_pattern_enhance.cpp index 03560c2f38dc437c6c5b4fe897c470185ba4f23f..b0e7c32df54e8210746f6b5efe8fe3405ceffead 100755 --- a/frameworks/core/components_ng/pattern/container_modal/enhance/container_modal_pattern_enhance.cpp +++ b/frameworks/core/components_ng/pattern/container_modal/enhance/container_modal_pattern_enhance.cpp @@ -356,7 +356,7 @@ void ContainerModalPatternEnhance::UpdateTitleInTargetPos(bool isShow, int32_t h AnimationUtils::Animate(option, [floatingContext, height]() { auto rect = floatingContext->GetPaintRectWithoutTransform(); floatingContext->OnTransformTranslateUpdate({ 0.0f, static_cast(height - rect.GetY()), 0.0f }); - }); + }, nullptr, nullptr, GetContextRefPtr()); buttonsContext->OnTransformTranslateUpdate({ 0.0f, height - static_cast(titlePopupDistance), 0.0f }); controlButtonVisibleBeforeAnim_ = controlButtonsLayoutProperty->GetVisibilityValue(); controlButtonsLayoutProperty->UpdateVisibility(VisibleType::VISIBLE); @@ -366,7 +366,7 @@ void ContainerModalPatternEnhance::UpdateTitleInTargetPos(bool isShow, int32_t h auto rect = buttonsContext->GetPaintRectWithoutTransform(); buttonsContext->OnTransformTranslateUpdate( { 0.0f, static_cast(height - buttonPopupDistance - rect.GetY()), 0.0f }); - }); + }, nullptr, nullptr, GetContextRefPtr()); } if (!isShow && CanHideFloatingTitle()) { @@ -383,7 +383,7 @@ void ContainerModalPatternEnhance::UpdateTitleInTargetPos(bool isShow, int32_t h CHECK_NULL_VOID(pattern); floatingLayoutProperty->UpdateVisibility(VisibleType::GONE); controlButtonsLayoutProperty->UpdateVisibility(pattern->controlButtonVisibleBeforeAnim_); - }); + }, nullptr, GetContextRefPtr()); } } diff --git a/test/unittest/core/pattern/container_modal/container_modal_pattern_enhance_test_ng.cpp b/test/unittest/core/pattern/container_modal/container_modal_pattern_enhance_test_ng.cpp index fff663b314bc20ffdffe8d20ae891a34259e7fc7..8cbef6a65d89209de793ac03507a8e7711a6fbec 100644 --- a/test/unittest/core/pattern/container_modal/container_modal_pattern_enhance_test_ng.cpp +++ b/test/unittest/core/pattern/container_modal/container_modal_pattern_enhance_test_ng.cpp @@ -905,4 +905,20 @@ HWTEST_F(ContainerModalPatternEnhanceTestNg, GetContainerModalButtonsRect001, Te EXPECT_FALSE(ret); } +/** + * @tc.name: ContainerModalPatternEnhanceGetContextRefPtr + * @tc.desc: Test ContainerModalPatternEnhanceGetContextRefPtr + * @tc.type: FUNC + * @tc.author: + */ +HWTEST_F(ContainerModalPatternEnhanceTestNg, ContainerModalPatternEnhanceGetContextRefPtr, TestSize.Level1) +{ + auto containerModalNode = + FrameNode::CreateFrameNode("ContainerModal", 1, AceType::MakeRefPtr()); + containerModalNode->AddChild( + FrameNode::CreateFrameNode(V2::BUTTON_ETS_TAG, 2, AceType::MakeRefPtr())); + auto containerPattern = containerModalNode->GetPattern(); + auto context = containerPattern->GetContextRefPtr(); + EXPECT_NE(context, nullptr); +} } // namespace OHOS::Ace::NG \ No newline at end of file