From 5bd7b7e526990e30ca04e74b884d30dad953d9cc Mon Sep 17 00:00:00 2001 From: chenwenchang Date: Sat, 21 Jun 2025 20:06:18 +0800 Subject: [PATCH] fix sheet windowChage callback Signed-off-by: chenwenchang Change-Id: Ib77298349a883ff600813094eb6be57efcc23c60 --- .../pattern/overlay/sheet_presentation_pattern.cpp | 11 +++++++++-- .../pattern/overlay/sheet_presentation_test_ng.cpp | 1 + 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/frameworks/core/components_ng/pattern/overlay/sheet_presentation_pattern.cpp b/frameworks/core/components_ng/pattern/overlay/sheet_presentation_pattern.cpp index 1570f2fb784..eeaea772f7d 100644 --- a/frameworks/core/components_ng/pattern/overlay/sheet_presentation_pattern.cpp +++ b/frameworks/core/components_ng/pattern/overlay/sheet_presentation_pattern.cpp @@ -347,8 +347,15 @@ void SheetPresentationPattern::OnAttachToFrameNode() CHECK_NULL_VOID(sheetTheme); sheetThemeType_ = sheetTheme->GetSheetType(); scale_ = targetNodeContext->GetFontScale(); - targetNodeContext->AddWindowSizeChangeCallback(host->GetId()); - targetNodeContext->AddOnAreaChangeNode(targetNode->GetId()); + if (IsShowInSubWindow()) { + targetNodeContext->AddWindowSizeChangeCallback(host->GetId()); + targetNodeContext->AddOnAreaChangeNode(targetNode->GetId()); + } else { + auto currentPipeline = host->GetContext(); + CHECK_NULL_VOID(currentPipeline); + currentPipeline->AddWindowSizeChangeCallback(host->GetId()); + currentPipeline->AddOnAreaChangeNode(targetNode->GetId()); + } OnAreaChangedFunc onAreaChangedFunc = [sheetNodeWk = WeakPtr(host)](const RectF& /* oldRect */, const OffsetF& /* oldOrigin */, const RectF& /* rect */, const OffsetF& /* origin */) { diff --git a/test/unittest/core/pattern/overlay/sheet_presentation_test_ng.cpp b/test/unittest/core/pattern/overlay/sheet_presentation_test_ng.cpp index da838305012..b15d442f4a0 100644 --- a/test/unittest/core/pattern/overlay/sheet_presentation_test_ng.cpp +++ b/test/unittest/core/pattern/overlay/sheet_presentation_test_ng.cpp @@ -355,6 +355,7 @@ HWTEST_F(SheetPresentationTestNg, OnAttachToFrameNode001, TestSize.Level1) SheetPresentationTestNg::SetSheetType(sheetPattern, SheetType::SHEET_POPUP); sheetPattern->OnAttachToFrameNode(); EXPECT_EQ(sheetPattern->GetSheetType(), SheetType::SHEET_POPUP); + EXPECT_EQ(sheetPattern->sheetThemeType_, "popup"); innerOnAreaChangeCallback(oldRect, oldOrigin, rect, origin); SheetPresentationTestNg::TearDownTestCase(); } -- Gitee