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 6bbaa2a898e262f407c1133f8fec6d43491f3f68..946b074402854f4bcda415c811e2e65dd5c94d4b 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 ed820ab3b24e10e06ed3f1694d5c25549df80494..676b60839c33380178f62e3f7d4f361a343fdf63 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 5ba47f3296bd384ec1ddca0638016d0f7a36e5d6..80250e38b8e1f6d8c68d52d280ec9d36c367d6f5 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); } /**