From 0cec88bd35a328808b578639d594c48856da9616 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E6=B5=B7=E9=BE=99?= Date: Tue, 5 Aug 2025 19:31:56 +0800 Subject: [PATCH 1/8] add judgment MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 曹海龙 --- .../sheet_presentation_layout_algorithm.cpp | 1 + .../overlay/sheet_presentation_pattern.cpp | 27 +++++++++++++++++-- .../sheet_wrapper_layout_algorithm.cpp | 1 + 3 files changed, 27 insertions(+), 2 deletions(-) diff --git a/frameworks/core/components_ng/pattern/overlay/sheet_presentation_layout_algorithm.cpp b/frameworks/core/components_ng/pattern/overlay/sheet_presentation_layout_algorithm.cpp index 5f71f66b7c6..8195b7a5875 100755 --- a/frameworks/core/components_ng/pattern/overlay/sheet_presentation_layout_algorithm.cpp +++ b/frameworks/core/components_ng/pattern/overlay/sheet_presentation_layout_algorithm.cpp @@ -191,6 +191,7 @@ void SheetPresentationLayoutAlgorithm::Measure(LayoutWrapper* layoutWrapper) auto layoutProperty = AceType::DynamicCast(layoutWrapper->GetLayoutProperty()); CHECK_NULL_VOID(layoutProperty); sheetStyle_ = layoutProperty->GetSheetStyleValue(); + CHECK_NULL_VOID(sheetStyle_); auto layoutConstraint = layoutProperty->GetLayoutConstraint(); if (!layoutConstraint) { TAG_LOGE(AceLogTag::ACE_SHEET, "fail to measure sheet due to layoutConstraint is nullptr"); 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 120064bada7..b37b0c97978 100644 --- a/frameworks/core/components_ng/pattern/overlay/sheet_presentation_pattern.cpp +++ b/frameworks/core/components_ng/pattern/overlay/sheet_presentation_pattern.cpp @@ -100,6 +100,7 @@ void SheetPresentationPattern::OnModifyDone() auto layoutProperty = GetLayoutProperty(); CHECK_NULL_VOID(layoutProperty); auto sheetStyle = layoutProperty->GetSheetStyleValue(); + CHECK_NULL_VOID(sheetStyle); BlurStyle blurStyle = static_cast(sheetTheme->GetSheetBackgroundBlurStyle()); if (Container::GreatOrEqualAPITargetVersion(PlatformVersion::VERSION_TWELVE) && blurStyle != BlurStyle::NO_MATERIAL) { @@ -169,6 +170,7 @@ float SheetPresentationPattern::GetSheetTopSafeArea() auto layoutProperty = DynamicCast(host->GetLayoutProperty()); CHECK_NULL_RETURN(layoutProperty, 0.0f); auto sheetStyle = layoutProperty->GetSheetStyleValue(); + CHECK_NULL_VOID(sheetStyle); if (sheetStyle.sheetType.has_value() && sheetStyle.sheetType.value() == SheetType::SHEET_BOTTOM && IsPhoneInLandScape()) { sheetTopSafeArea = 0.0f; @@ -203,6 +205,7 @@ void SheetPresentationPattern::InitPageHeight() auto layoutProperty = GetLayoutProperty(); CHECK_NULL_VOID(layoutProperty); auto sheetStyle = layoutProperty->GetSheetStyleValue(); + CHECK_NULL_VOID(sheetStyle); if (sheetStyle.sheetType.has_value() && sheetStyle.sheetType.value() == SheetType::SHEET_BOTTOM && IsPhoneInLandScape()) { sheetTopSafeArea_ = 0.0f; @@ -269,6 +272,7 @@ void SheetPresentationPattern::CheckBuilderChange() auto layoutProperty = sheetNode->GetLayoutProperty(); CHECK_NULL_VOID(layoutProperty); auto sheetStyle = layoutProperty->GetSheetStyleValue(); + CHECK_NULL_VOID(sheetStyle); if (sheetStyle.sheetHeight.sheetMode == SheetMode::AUTO) { auto sheetWrapper = sheetNode->GetParent(); CHECK_NULL_VOID(sheetWrapper); @@ -431,6 +435,7 @@ void SheetPresentationPattern::SetSheetBorderWidth(bool isPartialUpdate) auto layoutProperty = host->GetLayoutProperty(); CHECK_NULL_VOID(layoutProperty); auto sheetStyle = layoutProperty->GetSheetStyleValue(); + CHECK_NULL_VOID(sheetStyle); auto renderContext = host->GetRenderContext(); CHECK_NULL_VOID(renderContext); renderContext->SetClipToBounds(true); @@ -541,6 +546,7 @@ void SheetPresentationPattern::SetShadowStyle(bool isFocused) auto layoutProperty = host->GetLayoutProperty(); CHECK_NULL_VOID(layoutProperty); auto sheetStyle = layoutProperty->GetSheetStyleValue(); + CHECK_NULL_VOID(sheetStyle); if (sheetStyle.shadow.has_value()) { return; } @@ -1207,6 +1213,7 @@ void SheetPresentationPattern::UpdateDragBarStatus() auto layoutProperty = DynamicCast(host->GetLayoutProperty()); CHECK_NULL_VOID(layoutProperty); auto sheetStyle = layoutProperty->GetSheetStyleValue(SheetStyle()); + CHECK_NULL_VOID(sheetStyle); auto showDragIndicator = sheetStyle.showDragBar.value_or(true); auto sheetDragBar = GetDragBarNode(); @@ -1245,6 +1252,7 @@ void SheetPresentationPattern::UpdateTitleColumnSize() auto layoutProperty = DynamicCast(host->GetLayoutProperty()); CHECK_NULL_VOID(layoutProperty); auto sheetStyle = layoutProperty->GetSheetStyleValue(); + CHECK_NULL_VOID(sheetStyle); auto operationColumn = GetTitleBuilderNode(); auto pipeline = host->GetContext(); CHECK_NULL_VOID(pipeline); @@ -1283,7 +1291,9 @@ bool SheetPresentationPattern::IsShowCloseIcon() CHECK_NULL_RETURN(host, false); auto layoutProperty = DynamicCast(host->GetLayoutProperty()); CHECK_NULL_RETURN(layoutProperty, false); - return layoutProperty->GetSheetStyleValue().showCloseIcon.value_or(true); + auto sheetStyle = layoutProperty->GetSheetStyleValue(); + CHECK_NULL_VOID(sheetStyle, false); + return sheetStyle.showCloseIcon.value_or(true); } RefPtr SheetPresentationPattern::GetTitleNode() @@ -1316,6 +1326,7 @@ void SheetPresentationPattern::UpdateTitleTextColor() auto layoutProperty = DynamicCast(host->GetLayoutProperty()); CHECK_NULL_VOID(layoutProperty); auto sheetStyle = layoutProperty->GetSheetStyleValue(); + CHECK_NULL_VOID(sheetStyle); if (sheetStyle.sheetSubtitle.has_value()) { auto subRow = sheetTitleColumn->GetChildAtIndex(1); CHECK_NULL_VOID(subRow); @@ -1333,7 +1344,9 @@ void SheetPresentationPattern::UpdateTitlePadding() CHECK_NULL_VOID(host); auto layoutProperty = DynamicCast(host->GetLayoutProperty()); CHECK_NULL_VOID(layoutProperty); - if (!layoutProperty->GetSheetStyleValue().isTitleBuilder.has_value()) { + auto sheetStyle = layoutProperty->GetSheetStyleValue(); + CHECK_NULL_VOID(sheetStyle); + if (!sheetStyle.isTitleBuilder.has_value()) { return; } @@ -1390,6 +1403,7 @@ void SheetPresentationPattern::UpdateSheetTitle() auto layoutProperty = DynamicCast(host->GetLayoutProperty()); CHECK_NULL_VOID(layoutProperty); auto sheetStyle = layoutProperty->GetSheetStyleValue(); + CHECK_NULL_VOID(sheetStyle); if (sheetStyle.sheetTitle.has_value()) { auto titleId = GetTitleId(); auto titleNode = DynamicCast(ElementRegister::GetInstance()->GetNodeById(titleId)); @@ -1433,6 +1447,7 @@ void SheetPresentationPattern::UpdateFontScaleStatus() auto layoutProperty = DynamicCast(host->GetLayoutProperty()); CHECK_NULL_VOID(layoutProperty); auto sheetStyle = layoutProperty->GetSheetStyleValue(); + CHECK_NULL_VOID(sheetStyle); if (pipeline->GetFontScale() != scale_) { auto operationNode = GetTitleBuilderNode(); CHECK_NULL_VOID(operationNode); @@ -1570,6 +1585,7 @@ void SheetPresentationPattern::UpdateMaskBackgroundColor() auto layoutProperty = host->GetLayoutProperty(); CHECK_NULL_VOID(layoutProperty); auto sheetStyle = layoutProperty->GetSheetStyleValue(); + CHECK_NULL_VOID(sheetStyle); sheetMaskColor_ = sheetStyle.maskColor.value_or(sheetTheme->GetMaskColor()); if (!AceApplicationInfo::GetInstance().GreatOrEqualTargetAPIVersion(PlatformVersion::VERSION_ELEVEN)) { if (sheetStyle.maskColor.has_value()) { @@ -1640,6 +1656,7 @@ void SheetPresentationPattern::CheckSheetHeightChange() auto layoutProperty = host->GetLayoutProperty(); CHECK_NULL_VOID(layoutProperty); auto sheetStyle = layoutProperty->GetSheetStyleValue(); + CHECK_NULL_VOID(sheetStyle); overlayManager->ComputeSheetOffset(sheetStyle, host); overlayManager->PlaySheetTransition(host, true, false); auto maskNode = overlayManager->GetSheetMask(host); @@ -1686,6 +1703,7 @@ void SheetPresentationPattern::InitSheetDetents() auto layoutProperty = GetLayoutProperty(); CHECK_NULL_VOID(layoutProperty); auto sheetStyle = layoutProperty->GetSheetStyleValue(); + CHECK_NULL_VOID(sheetStyle); IsCustomDetentsChanged(sheetStyle); preDetents_.clear(); sheetDetentHeight_.clear(); @@ -1830,6 +1848,7 @@ SheetType SheetPresentationPattern::ComputeSheetTypeInSubWindow() const auto layoutProperty = GetLayoutProperty(); CHECK_NULL_RETURN(layoutProperty, SheetType::SHEET_CENTER); auto sheetStyle = layoutProperty->GetSheetStyleValue(); + CHECK_NULL_VOID(sheetStyle); auto sheetType = SheetType::SHEET_CENTER; if (manager && manager->IsPcOrPadFreeMultiWindowMode()) { // Two in one or pad free-window mode @@ -2023,6 +2042,7 @@ void SheetPresentationPattern::GetSheetTypeWithAuto(SheetType& sheetType) const auto layoutProperty = GetLayoutProperty(); CHECK_NULL_VOID(layoutProperty); auto sheetStyle = layoutProperty->GetSheetStyleValue(); + CHECK_NULL_VOID(sheetStyle); if (AceApplicationInfo::GetInstance().GreatOrEqualTargetAPIVersion(PlatformVersion::VERSION_FOURTEEN) && sheetStyle.sheetType.has_value() && sheetStyle.sheetType.value() == SheetType::SHEET_POPUP) { sheetType = SheetType::SHEET_POPUP; @@ -2048,6 +2068,7 @@ void SheetPresentationPattern::GetSheetTypeWithPopup(SheetType& sheetType) const auto layoutProperty = GetLayoutProperty(); CHECK_NULL_VOID(layoutProperty); auto sheetStyle = layoutProperty->GetSheetStyleValue(); + CHECK_NULL_VOID(sheetStyle); #ifdef PREVIEW rootWidth = pipelineContext->GetDisplayWindowRectInfo().Width(); #endif @@ -2077,6 +2098,7 @@ void SheetPresentationPattern::GetSheetTypeWithCenter(SheetType& sheetType) cons auto layoutProperty = GetLayoutProperty(); CHECK_NULL_VOID(layoutProperty); auto sheetStyle = layoutProperty->GetSheetStyleValue(); + CHECK_NULL_VOID(sheetStyle); if (sheetStyle.sheetType.has_value()) { sheetType = sheetStyle.sheetType.value(); return; @@ -2497,6 +2519,7 @@ void SheetPresentationPattern::CalculateSheetRadius(BorderRadiusProperty& sheetR auto layoutProperty = host->GetLayoutProperty(); CHECK_NULL_VOID(layoutProperty); auto sheetStyle = layoutProperty->GetSheetStyleValue(); + CHECK_NULL_VOID(sheetStyle); if (sheetSize.IsPositive()) { CalculateAloneSheetRadius(sheetRadius.radiusTopLeft, sheetStyle.radius->radiusTopLeft); CalculateAloneSheetRadius(sheetRadius.radiusTopRight, sheetStyle.radius->radiusTopRight); diff --git a/frameworks/core/components_ng/pattern/overlay/sheet_wrapper_layout_algorithm.cpp b/frameworks/core/components_ng/pattern/overlay/sheet_wrapper_layout_algorithm.cpp index 73336470289..2f49eeac07b 100644 --- a/frameworks/core/components_ng/pattern/overlay/sheet_wrapper_layout_algorithm.cpp +++ b/frameworks/core/components_ng/pattern/overlay/sheet_wrapper_layout_algorithm.cpp @@ -194,6 +194,7 @@ void SheetWrapperLayoutAlgorithm::InitParameter(LayoutWrapper* layoutWrapper) auto layoutProperty = sheetPage->GetLayoutProperty(); CHECK_NULL_VOID(layoutProperty); auto sheetStyle = layoutProperty->GetSheetStyleValue(); + CHECK_NULL_VOID(sheetStyle); placement_ = sheetStyle.placement.value_or(Placement::BOTTOM); sheetPopupInfo_.Reset(); // everytime sheetWrapper changed, we need to reset sheetPopupInfo to default value sheetPopupInfo_.finalPlacement = placement_; -- Gitee From 0a1d4ada2b5dec49403a0cd90c25940dfb04d209 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E6=B5=B7=E9=BE=99?= Date: Wed, 6 Aug 2025 10:05:27 +0800 Subject: [PATCH 2/8] add judgment MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 曹海龙 --- .../sheet_presentation_layout_algorithm.cpp | 3 +- .../overlay/sheet_presentation_pattern.cpp | 63 ++++++------------- .../sheet_wrapper_layout_algorithm.cpp | 3 +- 3 files changed, 22 insertions(+), 47 deletions(-) diff --git a/frameworks/core/components_ng/pattern/overlay/sheet_presentation_layout_algorithm.cpp b/frameworks/core/components_ng/pattern/overlay/sheet_presentation_layout_algorithm.cpp index 8195b7a5875..674356e9427 100755 --- a/frameworks/core/components_ng/pattern/overlay/sheet_presentation_layout_algorithm.cpp +++ b/frameworks/core/components_ng/pattern/overlay/sheet_presentation_layout_algorithm.cpp @@ -190,8 +190,7 @@ void SheetPresentationLayoutAlgorithm::Measure(LayoutWrapper* layoutWrapper) CHECK_NULL_VOID(layoutWrapper); auto layoutProperty = AceType::DynamicCast(layoutWrapper->GetLayoutProperty()); CHECK_NULL_VOID(layoutProperty); - sheetStyle_ = layoutProperty->GetSheetStyleValue(); - CHECK_NULL_VOID(sheetStyle_); + sheetStyle_ = layoutProperty->GetSheetStyleValue(SheetStyle()); auto layoutConstraint = layoutProperty->GetLayoutConstraint(); if (!layoutConstraint) { TAG_LOGE(AceLogTag::ACE_SHEET, "fail to measure sheet due to layoutConstraint is nullptr"); 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 b37b0c97978..a437aff82e5 100644 --- a/frameworks/core/components_ng/pattern/overlay/sheet_presentation_pattern.cpp +++ b/frameworks/core/components_ng/pattern/overlay/sheet_presentation_pattern.cpp @@ -99,8 +99,7 @@ void SheetPresentationPattern::OnModifyDone() CHECK_NULL_VOID(sheetTheme); auto layoutProperty = GetLayoutProperty(); CHECK_NULL_VOID(layoutProperty); - auto sheetStyle = layoutProperty->GetSheetStyleValue(); - CHECK_NULL_VOID(sheetStyle); + auto sheetStyle = layoutProperty->GetSheetStyleValue(SheetStyle()); BlurStyle blurStyle = static_cast(sheetTheme->GetSheetBackgroundBlurStyle()); if (Container::GreatOrEqualAPITargetVersion(PlatformVersion::VERSION_TWELVE) && blurStyle != BlurStyle::NO_MATERIAL) { @@ -169,8 +168,7 @@ float SheetPresentationPattern::GetSheetTopSafeArea() if (!Container::GreatOrEqualAPITargetVersion(PlatformVersion::VERSION_EIGHTEEN)) { auto layoutProperty = DynamicCast(host->GetLayoutProperty()); CHECK_NULL_RETURN(layoutProperty, 0.0f); - auto sheetStyle = layoutProperty->GetSheetStyleValue(); - CHECK_NULL_VOID(sheetStyle); + auto sheetStyle = layoutProperty->GetSheetStyleValue(SheetStyle()); if (sheetStyle.sheetType.has_value() && sheetStyle.sheetType.value() == SheetType::SHEET_BOTTOM && IsPhoneInLandScape()) { sheetTopSafeArea = 0.0f; @@ -204,8 +202,7 @@ void SheetPresentationPattern::InitPageHeight() } auto layoutProperty = GetLayoutProperty(); CHECK_NULL_VOID(layoutProperty); - auto sheetStyle = layoutProperty->GetSheetStyleValue(); - CHECK_NULL_VOID(sheetStyle); + auto sheetStyle = layoutProperty->GetSheetStyleValue(SheetStyle()); if (sheetStyle.sheetType.has_value() && sheetStyle.sheetType.value() == SheetType::SHEET_BOTTOM && IsPhoneInLandScape()) { sheetTopSafeArea_ = 0.0f; @@ -271,8 +268,7 @@ void SheetPresentationPattern::CheckBuilderChange() CHECK_NULL_VOID(sheetPattern); auto layoutProperty = sheetNode->GetLayoutProperty(); CHECK_NULL_VOID(layoutProperty); - auto sheetStyle = layoutProperty->GetSheetStyleValue(); - CHECK_NULL_VOID(sheetStyle); + auto sheetStyle = layoutProperty->GetSheetStyleValue(SheetStyle()); if (sheetStyle.sheetHeight.sheetMode == SheetMode::AUTO) { auto sheetWrapper = sheetNode->GetParent(); CHECK_NULL_VOID(sheetWrapper); @@ -434,8 +430,7 @@ void SheetPresentationPattern::SetSheetBorderWidth(bool isPartialUpdate) CHECK_NULL_VOID(sheetTheme); auto layoutProperty = host->GetLayoutProperty(); CHECK_NULL_VOID(layoutProperty); - auto sheetStyle = layoutProperty->GetSheetStyleValue(); - CHECK_NULL_VOID(sheetStyle); + auto sheetStyle = layoutProperty->GetSheetStyleValue(SheetStyle()); auto renderContext = host->GetRenderContext(); CHECK_NULL_VOID(renderContext); renderContext->SetClipToBounds(true); @@ -545,8 +540,7 @@ void SheetPresentationPattern::SetShadowStyle(bool isFocused) CHECK_NULL_VOID(host); auto layoutProperty = host->GetLayoutProperty(); CHECK_NULL_VOID(layoutProperty); - auto sheetStyle = layoutProperty->GetSheetStyleValue(); - CHECK_NULL_VOID(sheetStyle); + auto sheetStyle = layoutProperty->GetSheetStyleValue(SheetStyle()); if (sheetStyle.shadow.has_value()) { return; } @@ -1213,7 +1207,6 @@ void SheetPresentationPattern::UpdateDragBarStatus() auto layoutProperty = DynamicCast(host->GetLayoutProperty()); CHECK_NULL_VOID(layoutProperty); auto sheetStyle = layoutProperty->GetSheetStyleValue(SheetStyle()); - CHECK_NULL_VOID(sheetStyle); auto showDragIndicator = sheetStyle.showDragBar.value_or(true); auto sheetDragBar = GetDragBarNode(); @@ -1251,8 +1244,7 @@ void SheetPresentationPattern::UpdateTitleColumnSize() CHECK_NULL_VOID(host); auto layoutProperty = DynamicCast(host->GetLayoutProperty()); CHECK_NULL_VOID(layoutProperty); - auto sheetStyle = layoutProperty->GetSheetStyleValue(); - CHECK_NULL_VOID(sheetStyle); + auto sheetStyle = layoutProperty->GetSheetStyleValue(SheetStyle()); auto operationColumn = GetTitleBuilderNode(); auto pipeline = host->GetContext(); CHECK_NULL_VOID(pipeline); @@ -1291,9 +1283,7 @@ bool SheetPresentationPattern::IsShowCloseIcon() CHECK_NULL_RETURN(host, false); auto layoutProperty = DynamicCast(host->GetLayoutProperty()); CHECK_NULL_RETURN(layoutProperty, false); - auto sheetStyle = layoutProperty->GetSheetStyleValue(); - CHECK_NULL_VOID(sheetStyle, false); - return sheetStyle.showCloseIcon.value_or(true); + return layoutProperty->GetSheetStyleValue(SheetStyle()).showCloseIcon.value_or(true); } RefPtr SheetPresentationPattern::GetTitleNode() @@ -1325,8 +1315,7 @@ void SheetPresentationPattern::UpdateTitleTextColor() auto layoutProperty = DynamicCast(host->GetLayoutProperty()); CHECK_NULL_VOID(layoutProperty); - auto sheetStyle = layoutProperty->GetSheetStyleValue(); - CHECK_NULL_VOID(sheetStyle); + auto sheetStyle = layoutProperty->GetSheetStyleValue(SheetStyle()); if (sheetStyle.sheetSubtitle.has_value()) { auto subRow = sheetTitleColumn->GetChildAtIndex(1); CHECK_NULL_VOID(subRow); @@ -1344,9 +1333,7 @@ void SheetPresentationPattern::UpdateTitlePadding() CHECK_NULL_VOID(host); auto layoutProperty = DynamicCast(host->GetLayoutProperty()); CHECK_NULL_VOID(layoutProperty); - auto sheetStyle = layoutProperty->GetSheetStyleValue(); - CHECK_NULL_VOID(sheetStyle); - if (!sheetStyle.isTitleBuilder.has_value()) { + if (!layoutProperty->GetSheetStyleValue(SheetStyle()).isTitleBuilder.has_value()) { return; } @@ -1402,8 +1389,7 @@ void SheetPresentationPattern::UpdateSheetTitle() CHECK_NULL_VOID(pipeline); auto layoutProperty = DynamicCast(host->GetLayoutProperty()); CHECK_NULL_VOID(layoutProperty); - auto sheetStyle = layoutProperty->GetSheetStyleValue(); - CHECK_NULL_VOID(sheetStyle); + auto sheetStyle = layoutProperty->GetSheetStyleValue(SheetStyle()); if (sheetStyle.sheetTitle.has_value()) { auto titleId = GetTitleId(); auto titleNode = DynamicCast(ElementRegister::GetInstance()->GetNodeById(titleId)); @@ -1446,8 +1432,7 @@ void SheetPresentationPattern::UpdateFontScaleStatus() CHECK_NULL_VOID(pipeline); auto layoutProperty = DynamicCast(host->GetLayoutProperty()); CHECK_NULL_VOID(layoutProperty); - auto sheetStyle = layoutProperty->GetSheetStyleValue(); - CHECK_NULL_VOID(sheetStyle); + auto sheetStyle = layoutProperty->GetSheetStyleValue(SheetStyle()); if (pipeline->GetFontScale() != scale_) { auto operationNode = GetTitleBuilderNode(); CHECK_NULL_VOID(operationNode); @@ -1584,8 +1569,7 @@ void SheetPresentationPattern::UpdateMaskBackgroundColor() CHECK_NULL_VOID(sheetTheme); auto layoutProperty = host->GetLayoutProperty(); CHECK_NULL_VOID(layoutProperty); - auto sheetStyle = layoutProperty->GetSheetStyleValue(); - CHECK_NULL_VOID(sheetStyle); + auto sheetStyle = layoutProperty->GetSheetStyleValue(SheetStyle()); sheetMaskColor_ = sheetStyle.maskColor.value_or(sheetTheme->GetMaskColor()); if (!AceApplicationInfo::GetInstance().GreatOrEqualTargetAPIVersion(PlatformVersion::VERSION_ELEVEN)) { if (sheetStyle.maskColor.has_value()) { @@ -1655,8 +1639,7 @@ void SheetPresentationPattern::CheckSheetHeightChange() CHECK_NULL_VOID(overlayManager); auto layoutProperty = host->GetLayoutProperty(); CHECK_NULL_VOID(layoutProperty); - auto sheetStyle = layoutProperty->GetSheetStyleValue(); - CHECK_NULL_VOID(sheetStyle); + auto sheetStyle = layoutProperty->GetSheetStyleValue(SheetStyle()); overlayManager->ComputeSheetOffset(sheetStyle, host); overlayManager->PlaySheetTransition(host, true, false); auto maskNode = overlayManager->GetSheetMask(host); @@ -1702,8 +1685,7 @@ void SheetPresentationPattern::InitSheetDetents() // record input detents auto layoutProperty = GetLayoutProperty(); CHECK_NULL_VOID(layoutProperty); - auto sheetStyle = layoutProperty->GetSheetStyleValue(); - CHECK_NULL_VOID(sheetStyle); + auto sheetStyle = layoutProperty->GetSheetStyleValue(SheetStyle()); IsCustomDetentsChanged(sheetStyle); preDetents_.clear(); sheetDetentHeight_.clear(); @@ -1847,8 +1829,7 @@ SheetType SheetPresentationPattern::ComputeSheetTypeInSubWindow() const } auto layoutProperty = GetLayoutProperty(); CHECK_NULL_RETURN(layoutProperty, SheetType::SHEET_CENTER); - auto sheetStyle = layoutProperty->GetSheetStyleValue(); - CHECK_NULL_VOID(sheetStyle); + auto sheetStyle = layoutProperty->GetSheetStyleValue(SheetStyle()); auto sheetType = SheetType::SHEET_CENTER; if (manager && manager->IsPcOrPadFreeMultiWindowMode()) { // Two in one or pad free-window mode @@ -2041,8 +2022,7 @@ void SheetPresentationPattern::GetSheetTypeWithAuto(SheetType& sheetType) const sheetType = SheetType::SHEET_CENTER; auto layoutProperty = GetLayoutProperty(); CHECK_NULL_VOID(layoutProperty); - auto sheetStyle = layoutProperty->GetSheetStyleValue(); - CHECK_NULL_VOID(sheetStyle); + auto sheetStyle = layoutProperty->GetSheetStyleValue(SheetStyle()); if (AceApplicationInfo::GetInstance().GreatOrEqualTargetAPIVersion(PlatformVersion::VERSION_FOURTEEN) && sheetStyle.sheetType.has_value() && sheetStyle.sheetType.value() == SheetType::SHEET_POPUP) { sheetType = SheetType::SHEET_POPUP; @@ -2067,8 +2047,7 @@ void SheetPresentationPattern::GetSheetTypeWithPopup(SheetType& sheetType) const } auto layoutProperty = GetLayoutProperty(); CHECK_NULL_VOID(layoutProperty); - auto sheetStyle = layoutProperty->GetSheetStyleValue(); - CHECK_NULL_VOID(sheetStyle); + auto sheetStyle = layoutProperty->GetSheetStyleValue(SheetStyle()); #ifdef PREVIEW rootWidth = pipelineContext->GetDisplayWindowRectInfo().Width(); #endif @@ -2097,8 +2076,7 @@ void SheetPresentationPattern::GetSheetTypeWithCenter(SheetType& sheetType) cons { auto layoutProperty = GetLayoutProperty(); CHECK_NULL_VOID(layoutProperty); - auto sheetStyle = layoutProperty->GetSheetStyleValue(); - CHECK_NULL_VOID(sheetStyle); + auto sheetStyle = layoutProperty->GetSheetStyleValue(SheetStyle()); if (sheetStyle.sheetType.has_value()) { sheetType = sheetStyle.sheetType.value(); return; @@ -2518,8 +2496,7 @@ void SheetPresentationPattern::CalculateSheetRadius(BorderRadiusProperty& sheetR auto sheetSize = geometryNode->GetFrameSize(); auto layoutProperty = host->GetLayoutProperty(); CHECK_NULL_VOID(layoutProperty); - auto sheetStyle = layoutProperty->GetSheetStyleValue(); - CHECK_NULL_VOID(sheetStyle); + auto sheetStyle = layoutProperty->GetSheetStyleValue(SheetStyle()); if (sheetSize.IsPositive()) { CalculateAloneSheetRadius(sheetRadius.radiusTopLeft, sheetStyle.radius->radiusTopLeft); CalculateAloneSheetRadius(sheetRadius.radiusTopRight, sheetStyle.radius->radiusTopRight); diff --git a/frameworks/core/components_ng/pattern/overlay/sheet_wrapper_layout_algorithm.cpp b/frameworks/core/components_ng/pattern/overlay/sheet_wrapper_layout_algorithm.cpp index 2f49eeac07b..ec695e0374e 100644 --- a/frameworks/core/components_ng/pattern/overlay/sheet_wrapper_layout_algorithm.cpp +++ b/frameworks/core/components_ng/pattern/overlay/sheet_wrapper_layout_algorithm.cpp @@ -193,8 +193,7 @@ void SheetWrapperLayoutAlgorithm::InitParameter(LayoutWrapper* layoutWrapper) sheetPattern->CalculateSheetRadius(sheetRadius_); auto layoutProperty = sheetPage->GetLayoutProperty(); CHECK_NULL_VOID(layoutProperty); - auto sheetStyle = layoutProperty->GetSheetStyleValue(); - CHECK_NULL_VOID(sheetStyle); + auto sheetStyle = layoutProperty->GetSheetStyleValue(SheetStyle()); placement_ = sheetStyle.placement.value_or(Placement::BOTTOM); sheetPopupInfo_.Reset(); // everytime sheetWrapper changed, we need to reset sheetPopupInfo to default value sheetPopupInfo_.finalPlacement = placement_; -- Gitee From 48eb544d9767888ab7e946f5e4c338c5148836f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E6=B5=B7=E9=BE=99?= Date: Wed, 6 Aug 2025 15:53:47 +0800 Subject: [PATCH 3/8] add judgment MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 曹海龙 --- .../pattern/overlay/sheet_presentation_layout_algorithm.cpp | 3 +++ .../pattern/overlay/sheet_presentation_pattern.cpp | 2 +- .../core/components_ng/pattern/particle/particle_pattern.cpp | 3 +++ 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/frameworks/core/components_ng/pattern/overlay/sheet_presentation_layout_algorithm.cpp b/frameworks/core/components_ng/pattern/overlay/sheet_presentation_layout_algorithm.cpp index 674356e9427..4c26c5a6833 100755 --- a/frameworks/core/components_ng/pattern/overlay/sheet_presentation_layout_algorithm.cpp +++ b/frameworks/core/components_ng/pattern/overlay/sheet_presentation_layout_algorithm.cpp @@ -129,6 +129,9 @@ void SheetPresentationLayoutAlgorithm::ComputeWidthAndHeight(LayoutWrapper* layo auto layoutProperty = AceType::DynamicCast(layoutWrapper->GetLayoutProperty()); CHECK_NULL_VOID(layoutProperty); auto parentConstraint = layoutWrapper->GetGeometryNode()->GetParentLayoutConstraint(); + if (!parentConstraint.has_value()) { + return; + } LayoutConstraintF layoutConstraint = parentConstraint.value(); layoutProperty->UpdateLayoutConstraint(layoutConstraint); auto maxSize = layoutConstraint.maxSize; 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 a437aff82e5..706643ab996 100644 --- a/frameworks/core/components_ng/pattern/overlay/sheet_presentation_pattern.cpp +++ b/frameworks/core/components_ng/pattern/overlay/sheet_presentation_pattern.cpp @@ -1854,7 +1854,7 @@ SheetType SheetPresentationPattern::ComputeSheetTypeInSubWindow() const if (sheetStyle.sheetType.has_value()) { sheetType = sheetStyle.sheetType.value(); } - if (sheetStyle.sheetType.value() == SheetType::SHEET_POPUP && !sheetKey_.hasValidTargetNode) { + if (sheetStyle.sheetType.has_value() && sheetStyle.sheetType.value() == SheetType::SHEET_POPUP && !sheetKey_.hasValidTargetNode) { sheetType = SheetType::SHEET_CENTER; } return sheetType; diff --git a/frameworks/core/components_ng/pattern/particle/particle_pattern.cpp b/frameworks/core/components_ng/pattern/particle/particle_pattern.cpp index f079a48e4ed..e790ecf67bb 100644 --- a/frameworks/core/components_ng/pattern/particle/particle_pattern.cpp +++ b/frameworks/core/components_ng/pattern/particle/particle_pattern.cpp @@ -42,6 +42,9 @@ void ParticlePattern::OnVisibleChange(bool isVisible) if (isVisible) { auto host = GetHost(); auto context = host->GetRenderContext(); + if (!context->GetParticleOptionArray().has_value()) { + return; + } context->OnParticleOptionArrayUpdate(context->GetParticleOptionArray().value()); } } -- Gitee From 5fd347d1d5e7661fec40e897ed226b2f30186b4c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E6=B5=B7=E9=BE=99?= Date: Wed, 6 Aug 2025 15:55:58 +0800 Subject: [PATCH 4/8] add judgment MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 曹海龙 --- .../pattern/overlay/sheet_presentation_layout_algorithm.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frameworks/core/components_ng/pattern/overlay/sheet_presentation_layout_algorithm.cpp b/frameworks/core/components_ng/pattern/overlay/sheet_presentation_layout_algorithm.cpp index 4c26c5a6833..6d9c5bf8687 100755 --- a/frameworks/core/components_ng/pattern/overlay/sheet_presentation_layout_algorithm.cpp +++ b/frameworks/core/components_ng/pattern/overlay/sheet_presentation_layout_algorithm.cpp @@ -131,7 +131,7 @@ void SheetPresentationLayoutAlgorithm::ComputeWidthAndHeight(LayoutWrapper* layo auto parentConstraint = layoutWrapper->GetGeometryNode()->GetParentLayoutConstraint(); if (!parentConstraint.has_value()) { return; - } + } LayoutConstraintF layoutConstraint = parentConstraint.value(); layoutProperty->UpdateLayoutConstraint(layoutConstraint); auto maxSize = layoutConstraint.maxSize; -- Gitee From c80525e48ccfcfcabae56a2d147bc0f3d9bd7c2b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E6=B5=B7=E9=BE=99?= Date: Wed, 6 Aug 2025 16:06:31 +0800 Subject: [PATCH 5/8] add judgment MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 曹海龙 --- .../pattern/overlay/sheet_presentation_layout_algorithm.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frameworks/core/components_ng/pattern/overlay/sheet_presentation_layout_algorithm.cpp b/frameworks/core/components_ng/pattern/overlay/sheet_presentation_layout_algorithm.cpp index 6d9c5bf8687..ec9351a6297 100755 --- a/frameworks/core/components_ng/pattern/overlay/sheet_presentation_layout_algorithm.cpp +++ b/frameworks/core/components_ng/pattern/overlay/sheet_presentation_layout_algorithm.cpp @@ -130,7 +130,7 @@ void SheetPresentationLayoutAlgorithm::ComputeWidthAndHeight(LayoutWrapper* layo CHECK_NULL_VOID(layoutProperty); auto parentConstraint = layoutWrapper->GetGeometryNode()->GetParentLayoutConstraint(); if (!parentConstraint.has_value()) { - return; + return; } LayoutConstraintF layoutConstraint = parentConstraint.value(); layoutProperty->UpdateLayoutConstraint(layoutConstraint); -- Gitee From c87785ad262de43c7458b86cf270a98717a1d49e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E6=B5=B7=E9=BE=99?= Date: Wed, 6 Aug 2025 16:23:52 +0800 Subject: [PATCH 6/8] add judgment MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 曹海龙 --- .../pattern/overlay/sheet_presentation_pattern.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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 706643ab996..5b880954096 100644 --- a/frameworks/core/components_ng/pattern/overlay/sheet_presentation_pattern.cpp +++ b/frameworks/core/components_ng/pattern/overlay/sheet_presentation_pattern.cpp @@ -1854,7 +1854,8 @@ SheetType SheetPresentationPattern::ComputeSheetTypeInSubWindow() const if (sheetStyle.sheetType.has_value()) { sheetType = sheetStyle.sheetType.value(); } - if (sheetStyle.sheetType.has_value() && sheetStyle.sheetType.value() == SheetType::SHEET_POPUP && !sheetKey_.hasValidTargetNode) { + if (sheetStyle.sheetType.has_value() && + sheetStyle.sheetType.value() == SheetType::SHEET_POPUP && !sheetKey_.hasValidTargetNode) { sheetType = SheetType::SHEET_CENTER; } return sheetType; -- Gitee From 2fd93cd24789df92043159d0a7a163bb5212f16f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E6=B5=B7=E9=BE=99?= Date: Wed, 6 Aug 2025 16:23:52 +0800 Subject: [PATCH 7/8] add judgment MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 曹海龙 --- .../overlay/sheet_presentation_pattern.cpp | 3 +- .../indexer/indexer_pattern_test_three_ng.cpp | 33 +++++++++++++++++++ 2 files changed, 35 insertions(+), 1 deletion(-) 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 706643ab996..5b880954096 100644 --- a/frameworks/core/components_ng/pattern/overlay/sheet_presentation_pattern.cpp +++ b/frameworks/core/components_ng/pattern/overlay/sheet_presentation_pattern.cpp @@ -1854,7 +1854,8 @@ SheetType SheetPresentationPattern::ComputeSheetTypeInSubWindow() const if (sheetStyle.sheetType.has_value()) { sheetType = sheetStyle.sheetType.value(); } - if (sheetStyle.sheetType.has_value() && sheetStyle.sheetType.value() == SheetType::SHEET_POPUP && !sheetKey_.hasValidTargetNode) { + if (sheetStyle.sheetType.has_value() && + sheetStyle.sheetType.value() == SheetType::SHEET_POPUP && !sheetKey_.hasValidTargetNode) { sheetType = SheetType::SHEET_CENTER; } return sheetType; diff --git a/test/unittest/core/pattern/indexer/indexer_pattern_test_three_ng.cpp b/test/unittest/core/pattern/indexer/indexer_pattern_test_three_ng.cpp index a470850636a..5c7b678b794 100644 --- a/test/unittest/core/pattern/indexer/indexer_pattern_test_three_ng.cpp +++ b/test/unittest/core/pattern/indexer/indexer_pattern_test_three_ng.cpp @@ -537,4 +537,37 @@ HWTEST_F(IndexerPatternTestThreeNg, IndexerPatternTestThreeNg007, TestSize.Level EXPECT_EQ(pattern_->GetActualIndex(-1), 0); EXPECT_EQ(pattern_->GetActualIndex(pattern_->fullArrayValue_.size() + 1), pattern_->fullArrayValue_.size() - 1); } + +/** + * @tc.name: IndexerPatternTestThreeNg008 + * @tc.desc: Test indexer pattern OnHover function. + * @tc.type: FUNC + */ +HWTEST_F(IndexerPatternTestThreeNg, IndexerPatternTestThreeNg008, TestSize.Level1) +{ + /** + * @tc.steps: step1. Test with voidArray. + * @tc.expected: isHover_ false. + */ + IndexerModelNG model = CreateIndexer(std::vector(), 0); + CreateDone(); + pattern_->OnHover(true); + EXPECT_FALSE(pattern_->isHover_); + + /** + * @tc.steps: step2. Test with MidArray. + * @tc.expected: isHover_ true. + */ + model.SetArrayValue(AceType::RawPtr(frameNode_), GetMidArrayValue()); + frameNode_->MarkModifyDone(); + FlushUITasks(); + pattern_->OnHover(true); + EXPECT_TRUE(pattern_->isHover_); + EXPECT_FALSE(pattern_->isTouch_); + pattern_->OnHover(true); + EXPECT_TRUE(pattern_->isHover_); + pattern_->OnHover(false); + EXPECT_FALSE(pattern_->isHover_); + EXPECT_FALSE(pattern_->isTouch_); +} } // namespace OHOS::Ace::NG -- Gitee From 7cfbc0262ce8588c4b6027008b5124985b532a5c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E6=B5=B7=E9=BE=99?= Date: Thu, 7 Aug 2025 03:36:02 +0000 Subject: [PATCH 8/8] update test/unittest/core/pattern/indexer/indexer_pattern_test_three_ng.cpp. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 曹海龙 --- .../core/pattern/indexer/indexer_pattern_test_three_ng.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/unittest/core/pattern/indexer/indexer_pattern_test_three_ng.cpp b/test/unittest/core/pattern/indexer/indexer_pattern_test_three_ng.cpp index 5c7b678b794..75f67710b2b 100644 --- a/test/unittest/core/pattern/indexer/indexer_pattern_test_three_ng.cpp +++ b/test/unittest/core/pattern/indexer/indexer_pattern_test_three_ng.cpp @@ -538,7 +538,7 @@ HWTEST_F(IndexerPatternTestThreeNg, IndexerPatternTestThreeNg007, TestSize.Level EXPECT_EQ(pattern_->GetActualIndex(pattern_->fullArrayValue_.size() + 1), pattern_->fullArrayValue_.size() - 1); } -/** +/** * @tc.name: IndexerPatternTestThreeNg008 * @tc.desc: Test indexer pattern OnHover function. * @tc.type: FUNC -- Gitee