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 1570f2fb7842304fcb5328fc24d65d779b1931a6..eeaea772f7da24c6eb199beb07316a9dca0e4b19 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 da838305012f082f72348579b2e240ee05473662..b15d442f4a023a76192bf4e7fe6f2af176cea366 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(); }