From 747be7705dcd74235d5b27c287edfe0f67426bc0 Mon Sep 17 00:00:00 2001 From: wangweiyuan Date: Fri, 18 Jul 2025 23:17:44 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=A8=E6=A8=A1=E6=80=81=E8=A1=A5=E5=85=85?= =?UTF-8?q?=E9=81=BF=E8=AE=A9=E6=8C=96=E5=AD=94=E8=83=BD=E5=8A=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: wangweiyuan --- .../pattern/overlay/modal_presentation_pattern.cpp | 6 ++++++ .../sheet_content_cover_layout_algorithm.cpp | 4 ++++ test/unittest/core/pattern/overlay/overlay_test_ng.cpp | 9 +++++++++ 3 files changed, 19 insertions(+) diff --git a/frameworks/core/components_ng/pattern/overlay/modal_presentation_pattern.cpp b/frameworks/core/components_ng/pattern/overlay/modal_presentation_pattern.cpp index 6bbaa2a898e..946b0744028 100644 --- a/frameworks/core/components_ng/pattern/overlay/modal_presentation_pattern.cpp +++ b/frameworks/core/components_ng/pattern/overlay/modal_presentation_pattern.cpp @@ -70,12 +70,18 @@ void ModalPresentationPattern::BeforeCreateLayoutWrapper() auto inset = context->GetSafeAreaWithoutProcess(); NG::CalcLength safeAreaPaddingTop(inset.top_.Length()); NG::CalcLength safeAreaPaddingBottom(inset.bottom_.Length()); + NG::CalcLength safeAreaPaddingLeft(inset.left_.Length()); + NG::CalcLength safeAreaPaddingRight(inset.right_.Length()); PaddingProperty safeAreaPadding; safeAreaPadding.top = safeAreaPaddingTop; safeAreaPadding.bottom = safeAreaPaddingBottom; + safeAreaPadding.left = safeAreaPaddingLeft; + safeAreaPadding.right = safeAreaPaddingRight; modalNodeLayoutProperty->UpdateSafeAreaPadding(safeAreaPadding); inset.top_ = { 0, 0 }; inset.bottom_ = { 0, 0 }; + inset.left_ = { 0, 0 }; + inset.right_ = { 0, 0 }; modalNodeLayoutProperty->UpdateSafeAreaInsets(inset); return; } diff --git a/frameworks/core/components_ng/pattern/sheet/content_cover/sheet_content_cover_layout_algorithm.cpp b/frameworks/core/components_ng/pattern/sheet/content_cover/sheet_content_cover_layout_algorithm.cpp index ed820ab3b24..676b60839c3 100644 --- a/frameworks/core/components_ng/pattern/sheet/content_cover/sheet_content_cover_layout_algorithm.cpp +++ b/frameworks/core/components_ng/pattern/sheet/content_cover/sheet_content_cover_layout_algorithm.cpp @@ -71,9 +71,13 @@ void SheetContentCoverLayoutAlgorithm::MeasureScrollNode(LayoutWrapper* layoutWr auto inset = context->GetSafeAreaWithoutProcess(); NG::CalcLength safeAreaPaddingTop(inset.top_.Length()); NG::CalcLength safeAreaPaddingBottom(inset.bottom_.Length()); + NG::CalcLength safeAreaPaddingLeft(inset.left_.Length()); + NG::CalcLength safeAreaPaddingRight(inset.right_.Length()); PaddingProperty safeAreaPadding; safeAreaPadding.top = safeAreaPaddingTop; safeAreaPadding.bottom = safeAreaPaddingBottom; + safeAreaPadding.left = safeAreaPaddingLeft; + safeAreaPadding.right = safeAreaPaddingRight; scrollLayoutProperty->UpdateSafeAreaPadding(safeAreaPadding); scrollWrapper->Measure(constraint); diff --git a/test/unittest/core/pattern/overlay/overlay_test_ng.cpp b/test/unittest/core/pattern/overlay/overlay_test_ng.cpp index 5ba47f3296b..80250e38b8e 100644 --- a/test/unittest/core/pattern/overlay/overlay_test_ng.cpp +++ b/test/unittest/core/pattern/overlay/overlay_test_ng.cpp @@ -2811,12 +2811,21 @@ HWTEST_F(OverlayTestNg, BeforeCreateLayoutWrapperTest002, TestSize.Level1) auto topModalPattern = topModalNode->GetPattern(); topModalPattern->SetEnableSafeArea(true); EXPECT_TRUE(topModalPattern->enableSafeArea_); + auto host = topModalPattern->GetHost(); + EXPECT_NE(host, nullptr); + auto context = host->GetContext(); + EXPECT_NE(context, nullptr); + auto inset = context->GetSafeAreaWithoutProcess(); + NG::CalcLength safeAreaPaddingLeft(inset.left_.Length()); + NG::CalcLength safeAreaPaddingRight(inset.right_.Length()); topModalPattern->BeforeCreateLayoutWrapper(); auto modalNodeLayoutProperty = topModalNode->layoutProperty_; ASSERT_NE(modalNodeLayoutProperty, nullptr); const std::unique_ptr& modalSafeAreaPaddingProp = modalNodeLayoutProperty->GetSafeAreaPaddingProperty(); ASSERT_NE(modalSafeAreaPaddingProp, nullptr); + EXPECT_EQ(modalSafeAreaPaddingProp->left, safeAreaPaddingLeft); + EXPECT_EQ(modalSafeAreaPaddingProp->right, safeAreaPaddingRight); } /** -- Gitee