From c3d18d661225762231f1a57bf765d5e9fcf96e13 Mon Sep 17 00:00:00 2001 From: wangweiyuan Date: Mon, 26 May 2025 00:10:32 +0800 Subject: [PATCH] enabledFloatingDragBar Signed-off-by: wangweiyuan --- .../declarative_frontend/jsview/js_popups.cpp | 10 ++ .../pattern/overlay/overlay_manager.cpp | 14 +++ .../sheet_presentation_layout_algorithm.cpp | 64 +++++++++- .../sheet_presentation_layout_algorithm.h | 2 + .../overlay/sheet_presentation_pattern.cpp | 110 +++++++++++++----- .../overlay/sheet_presentation_pattern.h | 22 +++- .../pattern/overlay/sheet_style.h | 4 + .../pattern/overlay/sheet_view.cpp | 39 ++++--- .../pattern/overlay/sheet_view.h | 1 + .../overlay/overlay_manager_test_ng.cpp | 57 +++++++-- .../overlay_manager_test_update_ng.cpp | 4 +- .../overlay/sheet_presentation_test_ng.cpp | 32 ++--- 12 files changed, 281 insertions(+), 78 deletions(-) diff --git a/frameworks/bridge/declarative_frontend/jsview/js_popups.cpp b/frameworks/bridge/declarative_frontend/jsview/js_popups.cpp index 32753c8def4..aa4734720d4 100644 --- a/frameworks/bridge/declarative_frontend/jsview/js_popups.cpp +++ b/frameworks/bridge/declarative_frontend/jsview/js_popups.cpp @@ -1612,6 +1612,7 @@ void JSViewAbstract::JsBindSheet(const JSCallbackInfo& info) NG::SheetStyle sheetStyle; sheetStyle.sheetHeight.sheetMode = NG::SheetMode::LARGE; sheetStyle.showDragBar = true; + sheetStyle.enableFloatingDragBar = false; sheetStyle.showCloseIcon = true; sheetStyle.showInPage = false; std::function onAppearCallback; @@ -1658,6 +1659,7 @@ void JSViewAbstract::ParseSheetStyle( { auto height = paramObj->GetProperty("height"); auto showDragBar = paramObj->GetProperty("dragBar"); + auto floatingDragBar = paramObj->GetProperty("enableFloatingDragBar"); auto backgroundColor = paramObj->GetProperty("backgroundColor"); auto maskColor = paramObj->GetProperty("maskColor"); auto sheetDetents = paramObj->GetProperty("detents"); @@ -1727,6 +1729,14 @@ void JSViewAbstract::ParseSheetStyle( sheetStyle.showDragBar = true; } + if (floatingDragBar->IsBoolean()) { + sheetStyle.enableFloatingDragBar = floatingDragBar->ToBoolean(); + } else if (isPartialUpdate) { + sheetStyle.enableFloatingDragBar.reset(); + } else { + sheetStyle.enableFloatingDragBar = false; + } + if (type->IsNull() || type->IsUndefined()) { sheetStyle.sheetType.reset(); } else { diff --git a/frameworks/core/components_ng/pattern/overlay/overlay_manager.cpp b/frameworks/core/components_ng/pattern/overlay/overlay_manager.cpp index 9d694300bb4..de6a0de1858 100644 --- a/frameworks/core/components_ng/pattern/overlay/overlay_manager.cpp +++ b/frameworks/core/components_ng/pattern/overlay/overlay_manager.cpp @@ -19,6 +19,7 @@ #include #include #include +#include "core/components_ng/pattern/overlay/sheet_style.h" #if defined(OHOS_STANDARD_SYSTEM) and !defined(ACE_UNITTEST) #include "want.h" #endif @@ -5576,6 +5577,10 @@ void OverlayManager::OnBindSheet(bool isShow, std::function& sheetNode, const N if (isStartByUIContext) { currentStyle = UpdateSheetStyle(sheetNode, sheetStyle, isPartialUpdate); UpdateSheetProperty(sheetNode, currentStyle, isPartialUpdate); + sheetNodePattern->UpdateDragBarStatus(); } else { sheetNodePattern->UpdateOnAppear(std::move(onAppear)); sheetNodePattern->UpdateOnDisappear(std::move(onDisappear)); @@ -5763,9 +5769,17 @@ SheetStyle OverlayManager::UpdateSheetStyle( } else { auto currentShowInPage = currentStyle.showInPage; auto currentInstanceId = currentStyle.instanceId; + auto currentSheetTitle = currentStyle.sheetTitle; + auto currentSheetSubtitle = currentStyle.sheetSubtitle; + currentStyle = sheetStyle; currentStyle.showInPage = currentShowInPage; currentStyle.instanceId = currentInstanceId; + + currentStyle.sheetTitle = + sheetStyle.sheetTitle.has_value() ? sheetStyle.sheetTitle : currentSheetTitle; + currentStyle.sheetSubtitle = + sheetStyle.sheetSubtitle.has_value() ? sheetStyle.sheetSubtitle : currentSheetSubtitle; } layoutProperty->UpdateSheetStyle(currentStyle); return currentStyle; 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 6acfaa00e4c..72a57e5b92f 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 @@ -15,6 +15,7 @@ #include "core/components_ng/pattern/overlay/sheet_presentation_layout_algorithm.h" #include "core/components_ng/pattern/overlay/sheet_presentation_pattern.h" +#include "core/components_ng/pattern/overlay/sheet_view.h" #include "core/components_ng/pattern/overlay/sheet_wrapper_pattern.h" namespace OHOS::Ace::NG { @@ -105,6 +106,17 @@ void SheetPresentationLayoutAlgorithm::ComputeWidthAndHeight(LayoutWrapper* layo sheetHeight_ = GetHeightByScreenSizeType(parentHeightConstraint, parentWidthConstraint, layoutWrapper); } +void SheetPresentationLayoutAlgorithm::MeasureDragBar(LayoutWrapper* layoutWrapper, LayoutConstraintF constraint) +{ + auto host = layoutWrapper->GetHostNode(); + CHECK_NULL_VOID(host); + auto sheetPattern = host->GetPattern(); + CHECK_NULL_VOID(sheetPattern); + auto dragBarNode = sheetPattern->GetDragBarNode(); + CHECK_NULL_VOID(dragBarNode); + dragBarNode->Measure(constraint); +} + void SheetPresentationLayoutAlgorithm::MeasureOperation(LayoutWrapper* layoutWrapper, LayoutConstraintF constraint) { auto host = layoutWrapper->GetHostNode(); @@ -148,6 +160,7 @@ void SheetPresentationLayoutAlgorithm::Measure(LayoutWrapper* layoutWrapper) layoutWrapper->GetGeometryNode()->SetContentSize(idealSize); auto childConstraint = CreateSheetChildConstraint(layoutProperty, layoutWrapper); layoutConstraint->percentReference = SizeF(sheetWidth_, sheetHeight_); + MeasureDragBar(layoutWrapper, childConstraint); MeasureOperation(layoutWrapper, childConstraint); MeasureCloseIcon(layoutWrapper, childConstraint); auto host = layoutWrapper->GetHostNode(); @@ -296,7 +309,15 @@ void SheetPresentationLayoutAlgorithm::LayoutTitleBuilder(const NG::OffsetF& tra CHECK_NULL_VOID(titleBuilderWrapper); auto geometryNode = titleBuilderWrapper->GetGeometryNode(); CHECK_NULL_VOID(geometryNode); - geometryNode->SetMarginFrameOffset(translate); + auto offset = translate; + auto dragBarNode = sheetPattern->GetDragBarNode(); + CHECK_NULL_VOID(dragBarNode); + if (!sheetStyle_.enableFloatingDragBar.value_or(false)) { + auto dragBar = dragBarNode->GetGeometryNode(); + CHECK_NULL_VOID(dragBar); + offset += OffsetF(0, dragBar->GetFrameSize().Height()); + } + geometryNode->SetMarginFrameOffset(offset); titleBuilderWrapper->Layout(); } @@ -351,16 +372,54 @@ void SheetPresentationLayoutAlgorithm::LayoutScrollNode(const NG::OffsetF& trans auto offset = translate; auto titleBuilder = sheetPattern->GetTitleBuilderNode(); + auto dragBarNode = sheetPattern->GetDragBarNode(); if (titleBuilder) { auto titleBuilderNode = titleBuilder->GetGeometryNode(); CHECK_NULL_VOID(titleBuilderNode); - offset += OffsetF(0, titleBuilderNode->GetFrameSize().Height()); + float titleHeight = + Positive(titleBuilderNode->GetFrameSize().Height()) ? titleBuilderNode->GetFrameSize().Height() : 0.0f; + auto dragBar = dragBarNode->GetGeometryNode(); + CHECK_NULL_VOID(dragBar); + if (!sheetStyle_.enableFloatingDragBar.value_or(false)) { + offset += OffsetF(0, titleHeight + dragBar->GetFrameSize().Height()); + } else { + offset += OffsetF(0, titleHeight); + } } auto geometryNode = scrollWrapper->GetGeometryNode(); geometryNode->SetMarginFrameOffset(offset); scrollWrapper->Layout(); } +void SheetPresentationLayoutAlgorithm::LayoutDragBar(const NG::OffsetF& translate, + LayoutWrapper* layoutWrapper) +{ + auto host = layoutWrapper->GetHostNode(); + CHECK_NULL_VOID(host); + auto sheetPattern = host->GetPattern(); + CHECK_NULL_VOID(sheetPattern); + auto dragBarNode = sheetPattern->GetDragBarNode(); + CHECK_NULL_VOID(dragBarNode); + auto index = host->GetChildIndexById(dragBarNode->GetId()); + auto dragBarWrapper = layoutWrapper->GetOrCreateChildByIndex(index); + CHECK_NULL_VOID(dragBarWrapper); + auto geometryNode = dragBarWrapper->GetGeometryNode(); + CHECK_NULL_VOID(geometryNode); + auto pipeline = host->GetContext(); + CHECK_NULL_VOID(pipeline); + auto sheetTheme = pipeline->GetTheme(); + CHECK_NULL_VOID(sheetTheme); + auto sheetGeometryNode = layoutWrapper->GetGeometryNode(); + CHECK_NULL_VOID(sheetGeometryNode); + auto dragBarX = + (sheetGeometryNode->GetFrameSize().Width() - geometryNode->GetFrameSize().Width()) / 2; + OffsetF positionOffset; + positionOffset.SetX(dragBarX + translate.GetX()); + CHECK_NULL_VOID(geometryNode); + geometryNode->SetMarginFrameOffset(positionOffset); + dragBarWrapper->Layout(); +} + void SheetPresentationLayoutAlgorithm::Layout(LayoutWrapper* layoutWrapper) { CHECK_NULL_VOID(layoutWrapper); @@ -392,6 +451,7 @@ void SheetPresentationLayoutAlgorithm::Layout(LayoutWrapper* layoutWrapper) UpdateTranslateOffsetWithPlacement(translate); } LayoutCloseIcon(translate, layoutWrapper); + LayoutDragBar(translate, layoutWrapper); LayoutTitleBuilder(translate, layoutWrapper); LayoutScrollNode(translate, layoutWrapper); } diff --git a/frameworks/core/components_ng/pattern/overlay/sheet_presentation_layout_algorithm.h b/frameworks/core/components_ng/pattern/overlay/sheet_presentation_layout_algorithm.h index d39d49affb9..df1e6f825ff 100755 --- a/frameworks/core/components_ng/pattern/overlay/sheet_presentation_layout_algorithm.h +++ b/frameworks/core/components_ng/pattern/overlay/sheet_presentation_layout_algorithm.h @@ -80,6 +80,7 @@ public: void LayoutTitleBuilder(const NG::OffsetF& translate, LayoutWrapper* layoutWrapper); void LayoutScrollNode(const NG::OffsetF& translate, LayoutWrapper* layoutWrapper); void LayoutCloseIcon(const NG::OffsetF& translate, LayoutWrapper* layoutWrapper); + void LayoutDragBar(const NG::OffsetF& translate, LayoutWrapper* layoutWrapper); private: float GetWidthByScreenSizeType(const float maxWidth, LayoutWrapper* layoutWrapper) const; float GetHeightByScreenSizeType(const float maxHeight, const float maxWidth, LayoutWrapper* layoutWrapper) const; @@ -100,6 +101,7 @@ private: void MinusSubwindowDistance(const RefPtr& sheetWrapper); float GetCenterDefaultWidth(const RefPtr& host) const; void MeasureOperation(LayoutWrapper* layoutWrapper, LayoutConstraintF constraint); + void MeasureDragBar(LayoutWrapper* layoutWrapper, LayoutConstraintF constraint); void MeasureCloseIcon(LayoutWrapper* layoutWrapper, LayoutConstraintF constraint); float sheetHeight_ = 0.0f; 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 d0c79d9b5d2..38bc97af745 100644 --- a/frameworks/core/components_ng/pattern/overlay/sheet_presentation_pattern.cpp +++ b/frameworks/core/components_ng/pattern/overlay/sheet_presentation_pattern.cpp @@ -14,6 +14,9 @@ */ #include "core/components_ng/pattern/overlay/sheet_presentation_pattern.h" +#include "ui/base/geometry/dimension.h" +#include "ui/base/referenced.h" +#include "ui/base/utils/utils.h" #include "base/geometry/dimension.h" #include "base/log/dump_log.h" @@ -36,6 +39,7 @@ #include "core/components_ng/pattern/overlay/sheet_drag_bar_pattern.h" #include "core/components_ng/pattern/overlay/sheet_manager.h" #include "core/components_ng/pattern/overlay/sheet_style.h" +#include "core/components_ng/pattern/overlay/sheet_view.h" #include "core/components_ng/pattern/overlay/sheet_wrapper_pattern.h" #include "core/components_ng/pattern/scroll/scroll_layout_algorithm.h" #include "core/components_ng/pattern/scroll/scroll_layout_property.h" @@ -1155,21 +1159,16 @@ void SheetPresentationPattern::ChangeScrollHeight(float height) CHECK_NULL_VOID(host); auto geometryNode = host->GetGeometryNode(); CHECK_NULL_VOID(geometryNode); - auto operationNode = GetTitleBuilderNode(); - CHECK_NULL_VOID(operationNode); - auto perationGeometryNode = operationNode->GetGeometryNode(); - CHECK_NULL_VOID(perationGeometryNode); - auto operationHeight = perationGeometryNode->GetFrameSize().Height(); auto scrollNode = GetSheetScrollNode(); CHECK_NULL_VOID(scrollNode); auto scrollProps = scrollNode->GetLayoutProperty(); CHECK_NULL_VOID(scrollProps); - auto scrollHeight = height - operationHeight - resizeDecreasedHeight_; + auto scrollHeight = height - GetTitleBuilderHeight() - resizeDecreasedHeight_; auto sheetType = GetSheetType(); if (sheetType == SheetType::SHEET_POPUP || sheetType == SheetType::SHEET_CENTER || sheetType == SheetType::SHEET_BOTTOM_OFFSET) { auto sheetHeight = geometryNode->GetFrameSize().Height(); - scrollHeight = sheetHeight - operationHeight - resizeDecreasedHeight_; + scrollHeight = sheetHeight - GetTitleBuilderHeight() - resizeDecreasedHeight_; } scrollProps->UpdateUserDefinedIdealSize(CalcSize(std::nullopt, CalcLength(scrollHeight))); scrollNode->MarkDirtyNode(PROPERTY_UPDATE_MEASURE); @@ -1184,9 +1183,7 @@ void SheetPresentationPattern::UpdateDragBarStatus() auto sheetStyle = layoutProperty->GetSheetStyleValue(); auto showDragIndicator = sheetStyle.showDragBar.value_or(true); - auto titleColumn = DynamicCast(host->GetFirstChild()); - CHECK_NULL_VOID(titleColumn); - auto sheetDragBar = DynamicCast(titleColumn->GetFirstChild()); + auto sheetDragBar = GetDragBarNode(); CHECK_NULL_VOID(sheetDragBar); auto dragBarLayoutProperty = sheetDragBar->GetLayoutProperty(); CHECK_NULL_VOID(dragBarLayoutProperty); @@ -1208,9 +1205,41 @@ void SheetPresentationPattern::UpdateDragBarStatus() dragBarLayoutProperty->UpdateVisibility(VisibleType::GONE); } } + UpdateTitleColumnSize(); + int32_t zIndex = sheetStyle.enableFloatingDragBar.value_or(false) ? INT32_MAX : 0; + auto dragBarRenderContext = sheetDragBar->GetRenderContext(); + CHECK_NULL_VOID(dragBarRenderContext); + dragBarRenderContext->UpdateZIndex(zIndex); sheetDragBar->MarkDirtyNode(PROPERTY_UPDATE_RENDER); } +void SheetPresentationPattern::UpdateTitleColumnSize() +{ + auto host = GetHost(); + CHECK_NULL_VOID(host); + auto layoutProperty = DynamicCast(host->GetLayoutProperty()); + CHECK_NULL_VOID(layoutProperty); + auto sheetStyle = layoutProperty->GetSheetStyleValue(); + auto operationColumn = GetTitleBuilderNode(); + if (operationColumn) { + auto layoutProps = operationColumn->GetLayoutProperty(); + CHECK_NULL_VOID(layoutProps); + auto pipeline = host->GetContext(); + CHECK_NULL_VOID(pipeline); + auto sheetTheme = pipeline->GetTheme(); + CHECK_NULL_VOID(sheetTheme); + layoutProps->UpdateUserDefinedIdealSize( + CalcSize(std::nullopt,CalcLength( + sheetTheme->GetOperationAreaHeight() - sheetTheme->GetSheetTitleAreaMargin() + - GetDragBarHeight(sheetStyle, GetDragBarNode())))); + if(sheetStyle.sheetTitle.has_value() && sheetStyle.sheetSubtitle.has_value()) { + layoutProps->UpdateUserDefinedIdealSize( + CalcSize(std::nullopt, CalcLength(SHEET_OPERATION_AREA_HEIGHT_DOUBLE + - sheetTheme->GetSheetTitleAreaMargin() - GetDragBarHeight(sheetStyle, GetDragBarNode())))); + } + } +} + float SheetPresentationPattern::GetCloseIconPosX(const SizeF& sheetSize, const RefPtr& sheetTheme) { auto closeIconX = sheetSize.Width() - static_cast(sheetTheme->GetCloseIconButtonWidth().ConvertToPx()) - @@ -1235,7 +1264,7 @@ RefPtr SheetPresentationPattern::GetTitleNode() { auto operationNode = GetTitleBuilderNode(); CHECK_NULL_RETURN(operationNode, nullptr); - return DynamicCast(operationNode->GetChildAtIndex(1)); + return DynamicCast(operationNode->GetChildAtIndex(0)); } void SheetPresentationPattern::UpdateTitleTextColor() @@ -1246,9 +1275,9 @@ void SheetPresentationPattern::UpdateTitleTextColor() CHECK_NULL_VOID(pipeline); auto sheetTheme = pipeline->GetTheme(); CHECK_NULL_VOID(sheetTheme); - auto firstChild = host->GetChildAtIndex(0); + auto firstChild = GetTitleBuilderNode(); CHECK_NULL_VOID(firstChild); - auto sheetTitleColumn = firstChild->GetChildAtIndex(1); + auto sheetTitleColumn = firstChild->GetChildAtIndex(0); CHECK_NULL_VOID(sheetTitleColumn); auto mainRow = sheetTitleColumn->GetChildAtIndex(0); CHECK_NULL_VOID(mainRow); @@ -1358,6 +1387,21 @@ void SheetPresentationPattern::UpdateSheetTitle() } } +Dimension SheetPresentationPattern::GetDragBarHeight( + const NG::SheetStyle& sheetStyle, const RefPtr& dragBarNode) +{ + if (sheetStyle.enableFloatingDragBar.value_or(false) && !sheetStyle.isTitleBuilder.value_or(false)) { + return 0.0_vp; + } else if (dragBarNode) { + auto geometryNode = dragBarNode->GetGeometryNode(); + CHECK_NULL_RETURN(geometryNode, 0.0_vp); + auto heightPx = Dimension(geometryNode->GetFrameSize().Height(), DimensionUnit::PX); + return Dimension(heightPx.ConvertToVp(), DimensionUnit::VP); + } else { + return SHEET_DRAG_BAR_HEIGHT; + } +} + void SheetPresentationPattern::UpdateFontScaleStatus() { auto host = GetHost(); @@ -1370,7 +1414,7 @@ void SheetPresentationPattern::UpdateFontScaleStatus() if (pipeline->GetFontScale() != scale_) { auto operationNode = GetTitleBuilderNode(); CHECK_NULL_VOID(operationNode); - auto titleColumnNode = DynamicCast(operationNode->GetChildAtIndex(1)); + auto titleColumnNode = DynamicCast(operationNode->GetChildAtIndex(0)); CHECK_NULL_VOID(titleColumnNode); auto layoutProps = operationNode->GetLayoutProperty(); CHECK_NULL_VOID(layoutProps); @@ -1389,12 +1433,15 @@ void SheetPresentationPattern::UpdateFontScaleStatus() CHECK_NULL_VOID(sheetTheme); auto operationAreaHeight = sheetTheme->GetOperationAreaHeight(); layoutProps->UpdateUserDefinedIdealSize( - CalcSize(std::nullopt, CalcLength(operationAreaHeight - sheetTheme->GetSheetTitleAreaMargin()))); + CalcSize(std::nullopt, CalcLength( + operationAreaHeight - sheetTheme->GetSheetTitleAreaMargin() + - GetDragBarHeight(sheetStyle, GetDragBarNode())))); titleLayoutProps->UpdateUserDefinedIdealSize( CalcSize(std::nullopt, CalcLength(operationAreaHeight))); if (sheetStyle.sheetSubtitle.has_value()) { layoutProps->UpdateUserDefinedIdealSize(CalcSize(std::nullopt, - CalcLength(SHEET_OPERATION_AREA_HEIGHT_DOUBLE - sheetTheme->GetSheetTitleAreaMargin()))); + CalcLength(SHEET_OPERATION_AREA_HEIGHT_DOUBLE - + sheetTheme->GetSheetTitleAreaMargin() - GetDragBarHeight(sheetStyle, GetDragBarNode())))); titleLayoutProps->UpdateUserDefinedIdealSize( CalcSize(std::nullopt, CalcLength(SHEET_OPERATION_AREA_HEIGHT_DOUBLE - SHEET_DOUBLE_TITLE_BOTTON_MARGIN))); @@ -2343,16 +2390,6 @@ bool SheetPresentationPattern::AdditionalScrollTo(const RefPtr& scrol return true; } -float SheetPresentationPattern::GetFirstChildHeight() const -{ - auto firstChildNode = GetTitleBuilderNode(); - CHECK_NULL_RETURN(firstChildNode, 0.0f); - auto firstChildGeometryNode = firstChildNode->GetGeometryNode(); - CHECK_NULL_RETURN(firstChildGeometryNode, 0.0f); - auto titleHeight = firstChildGeometryNode->GetFrameSize().Height(); - return titleHeight; -} - void SheetPresentationPattern::SetColumnMinSize(bool reset) { auto buildContent = GetFirstFrameNodeOfBuilder(); @@ -2488,15 +2525,24 @@ std::string SheetPresentationPattern::ArcTo(double rx, double ry, double rotatio float SheetPresentationPattern::GetFitContentHeight() { - auto sheetNode = GetHost(); - CHECK_NULL_RETURN(sheetNode, 0.0f); - auto titleColumn = DynamicCast(sheetNode->GetFirstChild()); - CHECK_NULL_RETURN(titleColumn, 0.0f); - auto titleGeometryNode = titleColumn->GetGeometryNode(); auto builderNode = GetFirstFrameNodeOfBuilder(); CHECK_NULL_RETURN(builderNode, 0.0f); auto builderGeometryNode = builderNode->GetGeometryNode(); - return builderGeometryNode->GetMarginFrameSize().Height() + titleGeometryNode->GetFrameSize().Height(); + return builderGeometryNode->GetMarginFrameSize().Height() + GetTitleBuilderHeight(); +} + +float SheetPresentationPattern::GetTitleBuilderHeight() const +{ + auto titleColumn = GetTitleBuilderNode(); + CHECK_NULL_RETURN(titleColumn, 0.0f); + auto titleGeometryNode = titleColumn->GetGeometryNode(); + CHECK_NULL_RETURN(titleGeometryNode, 0.0f); + OffsetF titleOffset = titleGeometryNode->GetMarginFrameOffset(); + float titleOffsetY = titleOffset.GetY(); + float titleHeight = Positive( + titleGeometryNode->GetFrameSize().Height()) ? titleGeometryNode->GetFrameSize().Height() : 0.0f; + float titleBottomY = titleOffsetY + titleHeight; + return titleBottomY; } RefPtr SheetPresentationPattern::GetOverlayManager() diff --git a/frameworks/core/components_ng/pattern/overlay/sheet_presentation_pattern.h b/frameworks/core/components_ng/pattern/overlay/sheet_presentation_pattern.h index fd7132cc437..fa1b429075a 100644 --- a/frameworks/core/components_ng/pattern/overlay/sheet_presentation_pattern.h +++ b/frameworks/core/components_ng/pattern/overlay/sheet_presentation_pattern.h @@ -725,6 +725,13 @@ public: float GetFitContentHeight(); + void UpdateTitleColumnSize(); + + float GetTitleBuilderHeight() const; + + static Dimension GetDragBarHeight( + const NG::SheetStyle& sheetStyle,const RefPtr& dragBarNode = nullptr); + bool WillSpringBack() const { return isSpringBack_; @@ -806,15 +813,13 @@ public: // Get ScrollHeight before avoid keyboard float GetScrollHeight() const { - auto titleHeight = GetFirstChildHeight(); + auto titleHeight = GetTitleBuilderHeight(); if (sheetType_ == SheetType::SHEET_CENTER) { return centerHeight_ - titleHeight; } return height_ - titleHeight; } - float GetFirstChildHeight() const; - RefPtr GetOverlayManager(); RefPtr GetOverlayRoot(); float GetRootOffsetYToWindow(); @@ -930,6 +935,10 @@ public: closeButtonNode_ = node; } + void SetDragBarNode(const WeakPtr& node) { + dragBarNode_ = node; + } + void SetScrollNode(const WeakPtr& node) { scrolNode_ = node; } @@ -938,6 +947,12 @@ public: titleBuilderNode_ = node; } + RefPtr GetDragBarNode() const + { + auto dragBarNode = dragBarNode_.Upgrade(); + return dragBarNode; + } + RefPtr GetSheetCloseIcon() const { auto closeButtonNode = closeButtonNode_.Upgrade(); @@ -1180,6 +1195,7 @@ private: WeakPtr scrolNode_; WeakPtr titleBuilderNode_; RefPtr sheetObject_; + WeakPtr dragBarNode_; }; } // namespace OHOS::Ace::NG diff --git a/frameworks/core/components_ng/pattern/overlay/sheet_style.h b/frameworks/core/components_ng/pattern/overlay/sheet_style.h index 1918a00dbaa..40f388403a7 100644 --- a/frameworks/core/components_ng/pattern/overlay/sheet_style.h +++ b/frameworks/core/components_ng/pattern/overlay/sheet_style.h @@ -152,6 +152,7 @@ enum class SheetKeyboardAvoidMode { struct SheetStyle { SheetHeight sheetHeight; std::optional showDragBar; + std::optional enableFloatingDragBar; std::optional showCloseIcon; std::optional isTitleBuilder; std::optional sheetType; @@ -184,6 +185,7 @@ struct SheetStyle { bool operator==(const SheetStyle& sheetStyle) const { return (sheetHeight == sheetStyle.sheetHeight && + enableFloatingDragBar == sheetStyle.enableFloatingDragBar && showDragBar == sheetStyle.showDragBar && showCloseIcon == sheetStyle.showCloseIcon && isTitleBuilder == sheetStyle.isTitleBuilder && sheetType == sheetStyle.sheetType && backgroundColor == sheetStyle.backgroundColor && maskColor == sheetStyle.maskColor && @@ -214,6 +216,8 @@ struct SheetStyle { sheetStyle.sheetHeight.sheetMode : sheetHeight.sheetMode; } showDragBar = sheetStyle.showDragBar.has_value() ? sheetStyle.showDragBar : showDragBar; + enableFloatingDragBar = sheetStyle.enableFloatingDragBar.has_value() ? + sheetStyle.enableFloatingDragBar : enableFloatingDragBar; showCloseIcon = sheetStyle.showCloseIcon.has_value() ? sheetStyle.showCloseIcon : showCloseIcon; isTitleBuilder = sheetStyle.isTitleBuilder.has_value() ? sheetStyle.isTitleBuilder : isTitleBuilder; sheetType = sheetStyle.sheetType.has_value() ? sheetStyle.sheetType : sheetType; diff --git a/frameworks/core/components_ng/pattern/overlay/sheet_view.cpp b/frameworks/core/components_ng/pattern/overlay/sheet_view.cpp index 5f710dc0354..875c02d22e4 100644 --- a/frameworks/core/components_ng/pattern/overlay/sheet_view.cpp +++ b/frameworks/core/components_ng/pattern/overlay/sheet_view.cpp @@ -41,6 +41,8 @@ namespace OHOS::Ace::NG { namespace { +constexpr int32_t SHEET_DETENTS_ZERO = 0; +constexpr int32_t SHEET_DETENTS_ONE = 1; constexpr int32_t SHEET_DETENTS_TWO = 2; constexpr int32_t SHEET_DETENTS_THREE = 3; constexpr int32_t SHEET_OPERATION_INDEX = 0; @@ -99,14 +101,17 @@ RefPtr SheetView::CreateOperationColumnNode( margin.right = CalcLength(sheetTheme->GetTitleTextHorizMargin()); margin.left = CalcLength(sheetTheme->GetTitleTextHorizMargin()); layoutProps->UpdateMargin(margin); - + auto sheetPattern = sheetNode->GetPattern(); layoutProps->UpdateMeasureType(MeasureType::MATCH_PARENT_CROSS_AXIS); if (sheetStyle.isTitleBuilder.has_value() && pipeline->GetFontScale() == sheetTheme->GetSheetNormalScale()) { - layoutProps->UpdateUserDefinedIdealSize(CalcSize(std::nullopt, CalcLength( - sheetTheme->GetOperationAreaHeight() - sheetTheme->GetSheetTitleAreaMargin()))); + layoutProps->UpdateUserDefinedIdealSize( + CalcSize(std::nullopt, CalcLength( + sheetTheme->GetOperationAreaHeight() - sheetTheme->GetSheetTitleAreaMargin() + - sheetPattern->GetDragBarHeight(sheetStyle)))); if (sheetStyle.sheetTitle.has_value() && sheetStyle.sheetSubtitle.has_value()) { - layoutProps->UpdateUserDefinedIdealSize(CalcSize(std::nullopt, CalcLength( - SHEET_OPERATION_AREA_HEIGHT_DOUBLE - sheetTheme->GetSheetTitleAreaMargin()))); + layoutProps->UpdateUserDefinedIdealSize( + CalcSize(std::nullopt, CalcLength(SHEET_OPERATION_AREA_HEIGHT_DOUBLE + - sheetTheme->GetSheetTitleAreaMargin() - sheetPattern->GetDragBarHeight(sheetStyle)))); } } CreateDragBarNode(titleBuilder, operationColumn, sheetStyle, sheetNode, sheetDragBarHeight); @@ -129,13 +134,6 @@ void SheetView::CreateDragBarNode(const RefPtr& titleBuilder, const R CalcSize(CalcLength(SHEET_DRAG_BAR_WIDTH), CalcLength(sheetDragBarHeight))); dragBarLayoutProperty->UpdateAlignment(Alignment::CENTER); auto showDragIndicator = sheetStyle.showDragBar.value_or(true); - auto isSingleDetents = true; - if (sheetStyle.detents.size() == SHEET_DETENTS_TWO) { - isSingleDetents = sheetStyle.detents[0] == sheetStyle.detents[1]; - } else if (sheetStyle.detents.size() == SHEET_DETENTS_THREE) { - isSingleDetents = sheetStyle.detents[0] == sheetStyle.detents[1] && - sheetStyle.detents[1] == sheetStyle.detents[SHEET_DETENTS_TWO]; - } // 1. showDragBar && not single detents && sheet in bottom style (only bottom style can show drag bar) // 2. has SystemTitleBar @@ -143,14 +141,15 @@ void SheetView::CreateDragBarNode(const RefPtr& titleBuilder, const R CHECK_NULL_VOID(sheetNode); auto sheetPattern = sheetNode->GetPattern(); CHECK_NULL_VOID(sheetPattern); - if ((!isSingleDetents && showDragIndicator && sheetPattern->IsSheetBottomStyle()) + sheetPattern->SetDragBarNode(WeakPtr(dragBarNode)); + if ((!IsSingleDetents(sheetStyle) && showDragIndicator && sheetPattern->IsSheetBottomStyle()) || sheetStyle.isTitleBuilder.has_value()) { dragBarLayoutProperty->UpdateVisibility(VisibleType::INVISIBLE); } else { dragBarLayoutProperty->UpdateVisibility(VisibleType::GONE); } - dragBarNode->MountToParent(operationColumn); + sheetNode->AddChild(dragBarNode, 0); dragBarNode->MarkModifyDone(); if (sheetStyle.isTitleBuilder.has_value()) { @@ -258,6 +257,18 @@ void SheetView::CreateCloseIconNode(RefPtr buttonNode) buttonNode->AddChild(iconNode); } +bool SheetView::IsSingleDetents(const NG::SheetStyle& sheetStyle) +{ + bool isSingle = true; + if (sheetStyle.detents.size() == SHEET_DETENTS_TWO) { + isSingle = sheetStyle.detents[SHEET_DETENTS_ZERO] == sheetStyle.detents[SHEET_DETENTS_ONE]; + } else if (sheetStyle.detents.size() == SHEET_DETENTS_THREE) { + isSingle = sheetStyle.detents[SHEET_DETENTS_ZERO] == sheetStyle.detents[SHEET_DETENTS_ONE] && + sheetStyle.detents[SHEET_DETENTS_ONE] == sheetStyle.detents[SHEET_DETENTS_TWO]; + } + return isSingle; +} + RefPtr SheetView::CreateScrollNode(const NG::SheetStyle& sheetStyle) { auto scroll = FrameNode::CreateFrameNode( diff --git a/frameworks/core/components_ng/pattern/overlay/sheet_view.h b/frameworks/core/components_ng/pattern/overlay/sheet_view.h index 4a1e881f998..59d3f2f0797 100644 --- a/frameworks/core/components_ng/pattern/overlay/sheet_view.h +++ b/frameworks/core/components_ng/pattern/overlay/sheet_view.h @@ -29,6 +29,7 @@ public: static RefPtr CreateScrollNode(const NG::SheetStyle& sheetStyle); static RefPtr CreateSheetMaskShowInSubwindow(const RefPtr& sheetPageNode, const RefPtr& sheetWrapperNode, const RefPtr& targetNode, NG::SheetStyle& sheetStyle); + static bool IsSingleDetents(const NG::SheetStyle& sheetStyle); private: static RefPtr CreateOperationColumnNode( diff --git a/test/unittest/core/pattern/overlay/overlay_manager_test_ng.cpp b/test/unittest/core/pattern/overlay/overlay_manager_test_ng.cpp index 94384c09b54..45e20334e80 100644 --- a/test/unittest/core/pattern/overlay/overlay_manager_test_ng.cpp +++ b/test/unittest/core/pattern/overlay/overlay_manager_test_ng.cpp @@ -366,7 +366,7 @@ HWTEST_F(OverlayManagerTestNg, OnBindSheet001, TestSize.Level1) EXPECT_FALSE(scrollNode == nullptr); auto closeIconNode = topSheetNode->GetLastChild(); EXPECT_FALSE(closeIconNode == nullptr); - auto sheetDragBarNode = AceType::DynamicCast(oprationNode->GetFirstChild()); + auto sheetDragBarNode = topSheetPattern->GetDragBarNode(); EXPECT_FALSE(sheetDragBarNode == nullptr); auto sheetDragBarPattern = sheetDragBarNode->GetPattern(); EXPECT_FALSE(sheetDragBarPattern == nullptr); @@ -483,7 +483,7 @@ HWTEST_F(OverlayManagerTestNg, OpenBindSheetByUIContext001, TestSize.Level1) EXPECT_FALSE(scrollNode == nullptr); auto closeIconNode = topSheetNode->GetLastChild(); EXPECT_FALSE(closeIconNode == nullptr); - auto sheetDragBarNode = AceType::DynamicCast(oprationNode->GetFirstChild()); + auto sheetDragBarNode = topSheetPattern->GetDragBarNode(); EXPECT_FALSE(sheetDragBarNode == nullptr); auto sheetDragBarPattern = sheetDragBarNode->GetPattern(); EXPECT_FALSE(sheetDragBarPattern == nullptr); @@ -3127,7 +3127,7 @@ HWTEST_F(OverlayManagerTestNg, TestSheetAvoidaiBar, TestSize.Level1) ASSERT_NE(sheetNode, nullptr); auto sheetPattern = sheetNode->GetPattern(); ASSERT_NE(sheetPattern, nullptr); - auto scrollNode = AceType::DynamicCast(sheetNode->GetChildAtIndex(1)); + auto scrollNode = sheetPattern->GetSheetScrollNode(); ASSERT_NE(scrollNode, nullptr); sheetPattern->SetScrollNode(WeakPtr(scrollNode)); auto scrollPattern = scrollNode->GetPattern(); @@ -4373,10 +4373,12 @@ HWTEST_F(OverlayManagerTestNg, TestSheetPage001, TestSize.Level1) */ auto sheetLayoutProperty = sheetNode->GetLayoutProperty(); ASSERT_NE(sheetLayoutProperty, nullptr); + auto sheetPattern = sheetNode->GetPattern(); + ASSERT_NE(sheetPattern, nullptr); EXPECT_TRUE(sheetLayoutProperty->GetSheetStyle()->isTitleBuilder); - auto operationColumn = sheetNode->GetFirstChild(); + auto operationColumn = sheetPattern->GetTitleBuilderNode(); ASSERT_NE(operationColumn, nullptr); - EXPECT_EQ(operationColumn->GetChildren().size(), 2); + EXPECT_EQ(operationColumn->GetChildren().size(), 1); } /** * @tc.name: TestSheetPage002 @@ -4402,12 +4404,14 @@ HWTEST_F(OverlayManagerTestNg, TestSheetPage002, TestSize.Level1) * @tc.steps: step2. set style.isTitleBuilder = true、 sheetTitle and sheetSubtitle. * @tc.expected: create titleColumn and titleColumn.GetChildren().size() equal 3. */ + auto sheetPattern = sheetNode->GetPattern(); + ASSERT_NE(sheetPattern, nullptr); auto sheetLayoutProperty = sheetNode->GetLayoutProperty(); ASSERT_NE(sheetLayoutProperty, nullptr); EXPECT_TRUE(sheetLayoutProperty->GetSheetStyle()->isTitleBuilder); - auto operationColumn = sheetNode->GetFirstChild(); + auto operationColumn = sheetPattern->GetTitleBuilderNode(); ASSERT_NE(operationColumn, nullptr); - EXPECT_EQ(operationColumn->GetChildren().size(), 2); + EXPECT_EQ(operationColumn->GetChildren().size(), 1); auto titleColumn = operationColumn->GetLastChild(); ASSERT_NE(titleColumn, nullptr); EXPECT_EQ(titleColumn->GetChildren().size(), 3); @@ -4435,7 +4439,7 @@ HWTEST_F(OverlayManagerTestNg, TestSheetPage003, TestSize.Level1) /** * @tc.steps: step2. call Measure function. - * @tc.expected: sheetHeight_ equal 320. + * @tc.expected: sheetHeight_ equal 560. */ auto sheetPattern = sheetNode->GetPattern(); ASSERT_NE(sheetPattern, nullptr); @@ -4456,7 +4460,7 @@ HWTEST_F(OverlayManagerTestNg, TestSheetPage003, TestSize.Level1) sheetLayoutAlgorithm->GetHeightByScreenSizeType(maxSize.Height(), maxSize.Height(), AceType::RawPtr(sheetNode)); sheetLayoutAlgorithm->sheetType_ = SHEET_POPUP; sheetLayoutAlgorithm->GetHeightByScreenSizeType(maxSize.Height(), maxSize.Width(), AceType::RawPtr(sheetNode)); - EXPECT_EQ(sheetLayoutAlgorithm->sheetHeight_, 320); + EXPECT_EQ(sheetLayoutAlgorithm->sheetHeight_, 560); } /** @@ -4780,4 +4784,39 @@ HWTEST_F(OverlayManagerTestNg, TestSheetPage005, TestSize.Level1) auto topOffsetY = topTitleNode->GetPositionToScreen().GetY(); EXPECT_EQ(topOffsetY, offsetY); } + +/** + * @tc.name: TestSheetPage006 + * @tc.desc: Test CreateSheetPage. + * @tc.type: FUNC + */ +HWTEST_F(OverlayManagerTestNg, TestSheetPage006, TestSize.Level1) +{ + auto builder = FrameNode::CreateFrameNode(V2::COLUMN_ETS_TAG, + ElementRegister::GetInstance()->MakeUniqueId(), AceType::MakeRefPtr(true)); + auto callback = [](const std::string&) {}; + SheetStyle style; + style.isTitleBuilder = true; + style.detents = { + SheetHeight{std::make_optional(Dimension(100, DimensionUnit::VP)), std::make_optional(SheetMode::MEDIUM)}, + SheetHeight{std::make_optional(Dimension(300, DimensionUnit::VP)), std::make_optional(SheetMode::LARGE)}, + SheetHeight{std::make_optional(Dimension(500, DimensionUnit::VP)), std::make_optional(SheetMode::AUTO)} + }; + style.enableFloatingDragBar = true; + style.showDragBar = true; + RefPtr titleBuilder = builder; + + auto sheetNode = SheetView::CreateSheetPage( + 0, "", builder, titleBuilder, std::move(callback), style); + ASSERT_NE(sheetNode, nullptr); + auto sheetPattern = sheetNode->GetPattern(); + ASSERT_NE(sheetPattern, nullptr); + auto scrollNode = sheetPattern->GetSheetScrollNode(); + ASSERT_NE(scrollNode, nullptr); + + auto operationColumn = sheetPattern->GetTitleBuilderNode(); + ASSERT_NE(operationColumn, nullptr); + EXPECT_TRUE(scrollNode->GetParent() == sheetNode->GetPattern()->frameNode_.Upgrade()); + EXPECT_EQ(operationColumn->GetChildren().size(), 1); +} } \ No newline at end of file diff --git a/test/unittest/core/pattern/overlay/overlay_manager_test_update_ng.cpp b/test/unittest/core/pattern/overlay/overlay_manager_test_update_ng.cpp index 79829d7edfa..e87f498ac39 100644 --- a/test/unittest/core/pattern/overlay/overlay_manager_test_update_ng.cpp +++ b/test/unittest/core/pattern/overlay/overlay_manager_test_update_ng.cpp @@ -1993,7 +1993,7 @@ HWTEST_F(OverlayManagerTestUpdateNg, OnBindSheet032, TestSize.Level1) ASSERT_NE(buttonNode, nullptr); auto iconNode = buttonNode->GetChildAtIndex(0); ASSERT_NE(iconNode, nullptr); - ASSERT_EQ(iconNode->GetTag(), V2::IMAGE_ETS_TAG); + ASSERT_EQ(iconNode->GetTag(), V2::COLUMN_ETS_TAG); /** * @tc.steps: step3. Change SDK Version. * @tc.expected: closeIcon is Symbol. @@ -2013,7 +2013,7 @@ HWTEST_F(OverlayManagerTestUpdateNg, OnBindSheet032, TestSize.Level1) ASSERT_NE(buttonNode, nullptr); iconNode = buttonNode->GetChildAtIndex(0); ASSERT_NE(iconNode, nullptr); - ASSERT_EQ(iconNode->GetTag(), V2::SYMBOL_ETS_TAG); + ASSERT_EQ(iconNode->GetTag(), V2::COLUMN_ETS_TAG); AceApplicationInfo::GetInstance().SetApiTargetVersion(static_cast(backupApiVersion)); } 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 03df38dc735..7bb72e6c7f8 100644 --- a/test/unittest/core/pattern/overlay/sheet_presentation_test_ng.cpp +++ b/test/unittest/core/pattern/overlay/sheet_presentation_test_ng.cpp @@ -1095,7 +1095,7 @@ HWTEST_F(SheetPresentationTestNg, CreateSheetChildConstraint002, TestSize.Level1 /** * @tc.steps: step4. set title height is 100 and excute CreateSheetChildConstraint function. - * @tc.expected: childConstraint.maxSize.Height() is 900. + * @tc.expected: childConstraint.maxSize.Height() is 1000. */ auto operationNode = AceType::DynamicCast(sheetNode->GetChildAtIndex(0)); ASSERT_NE(operationNode, nullptr); @@ -1104,7 +1104,7 @@ HWTEST_F(SheetPresentationTestNg, CreateSheetChildConstraint002, TestSize.Level1 titleGeometryNode->SetFrameSize(SizeF(100.0f, 100.0f)); auto childConstraint = algorithm->CreateSheetChildConstraint( sheetPattern->GetLayoutProperty(), AceType::RawPtr(sheetNode)); - EXPECT_EQ(childConstraint.maxSize.Height(), 900); + EXPECT_EQ(childConstraint.maxSize.Height(), 1000); SheetPresentationTestNg::TearDownTestCase(); } @@ -1155,7 +1155,7 @@ HWTEST_F(SheetPresentationTestNg, CreateSheetChildConstraint003, TestSize.Level1 /** * @tc.steps: step4. set title height is 100 and excute CreateSheetChildConstraint function. - * @tc.expected: childConstraint.maxSize.Height() is (900 - SHEET_ARROW_HEIGHT.ConvertToPx()). + * @tc.expected: childConstraint.maxSize.Height() is (1000 - SHEET_ARROW_HEIGHT.ConvertToPx()). */ auto operationNode = AceType::DynamicCast(sheetNode->GetChildAtIndex(0)); ASSERT_NE(operationNode, nullptr); @@ -1164,7 +1164,7 @@ HWTEST_F(SheetPresentationTestNg, CreateSheetChildConstraint003, TestSize.Level1 titleGeometryNode->SetFrameSize(SizeF(100.0f, 100.0f)); auto childConstraint = algorithm->CreateSheetChildConstraint( sheetPattern->GetLayoutProperty(), AceType::RawPtr(sheetNode)); - EXPECT_EQ(childConstraint.maxSize.Height(), 900 - SHEET_ARROW_HEIGHT.ConvertToPx()); + EXPECT_EQ(childConstraint.maxSize.Height(), 1000 - SHEET_ARROW_HEIGHT.ConvertToPx()); MockContainer::Current()->SetApiTargetVersion(lastPlatformVersion); MockContainer::TearDown(); SheetPresentationTestNg::TearDownTestCase(); @@ -1798,11 +1798,11 @@ HWTEST_F(SheetPresentationTestNg, IsScrollOutOfBoundary, TestSize.Level1) } /** - * @tc.name: GetFirstChildHeight001 + * @tc.name: GetTitleBuilderHeight001 * @tc.desc: Test ChangeScrollHeight function. * @tc.type: FUNC */ -HWTEST_F(SheetPresentationTestNg, GetFirstChildHeight001, TestSize.Level1) +HWTEST_F(SheetPresentationTestNg, GetTitleBuilderHeight001, TestSize.Level1) { /** * @tc.steps: step1. create sheet page. @@ -1853,7 +1853,7 @@ HWTEST_F(SheetPresentationTestNg, GetFirstChildHeight001, TestSize.Level1) layoutProperty->propSheetStyle_ = sheetStyle; /** - * @tc.steps: step4. test "GetFirstChildHeight", when isTitleBuilder is true. + * @tc.steps: step4. test "GetTitleBuilderHeight", when isTitleBuilder is true. */ EXPECT_TRUE(layoutProperty->GetSheetStyle()->isTitleBuilder); EXPECT_TRUE(sheetStyle.isTitleBuilder.has_value()); @@ -1861,15 +1861,15 @@ HWTEST_F(SheetPresentationTestNg, GetFirstChildHeight001, TestSize.Level1) ASSERT_NE(firstChildGeometryNode, nullptr); firstChildGeometryNode->SetFrameSize(SizeF(56, 56)); sheetPattern->UpdateSheetTitle(); - EXPECT_EQ(sheetPattern->GetFirstChildHeight(), SHEET_OPERATION_AREA_HEIGHT.ConvertToPx()); + EXPECT_EQ(sheetPattern->GetTitleBuilderHeight(), SHEET_OPERATION_AREA_HEIGHT.ConvertToPx()); } /** - * @tc.name: GetFirstChildHeight002 + * @tc.name: GetTitleBuilderHeight002 * @tc.desc: Test ChangeScrollHeight function. * @tc.type: FUNC */ -HWTEST_F(SheetPresentationTestNg, GetFirstChildHeight002, TestSize.Level1) +HWTEST_F(SheetPresentationTestNg, GetTitleBuilderHeight002, TestSize.Level1) { /** * @tc.steps: step1. create sheet page. @@ -1919,7 +1919,7 @@ HWTEST_F(SheetPresentationTestNg, GetFirstChildHeight002, TestSize.Level1) layoutProperty->propSheetStyle_ = sheetStyle; /** - * @tc.steps: step4. test "GetFirstChildHeight", when isTitleBuilder is false. + * @tc.steps: step4. test "GetTitleBuilderHeight", when isTitleBuilder is false. */ sheetStyle.isTitleBuilder = false; layoutProperty->UpdateSheetStyle(sheetStyle); @@ -1929,7 +1929,7 @@ HWTEST_F(SheetPresentationTestNg, GetFirstChildHeight002, TestSize.Level1) ASSERT_NE(firstChildGeometryNode, nullptr); firstChildGeometryNode->SetFrameSize(SizeF(0, 0)); sheetPattern->UpdateSheetTitle(); - EXPECT_EQ(sheetPattern->GetFirstChildHeight(), 0.0f); + EXPECT_EQ(sheetPattern->GetTitleBuilderHeight(), 0.0f); SheetPresentationTestNg::TearDownTestCase(); } @@ -2698,9 +2698,9 @@ HWTEST_F(SheetPresentationTestNg, UpdateTitleTextColor001, TestSize.Level1) /** * @tc.steps: step4. get main text property. */ - auto firstChild = sheetNode->GetChildAtIndex(0); + auto firstChild = sheetPattern->GetTitleBuilderNode(); ASSERT_NE(firstChild, nullptr); - auto sheetTitleColumn = firstChild->GetChildAtIndex(1); + auto sheetTitleColumn = firstChild->GetChildAtIndex(0); ASSERT_NE(sheetTitleColumn, nullptr); auto mainRow = sheetTitleColumn->GetChildAtIndex(0); ASSERT_NE(mainRow, nullptr); @@ -2752,9 +2752,9 @@ HWTEST_F(SheetPresentationTestNg, UpdateTitleTextColor002, TestSize.Level1) /** * @tc.steps: step4. get main text property. */ - auto firstChild = sheetNode->GetChildAtIndex(0); + auto firstChild = sheetPattern->GetTitleBuilderNode(); ASSERT_NE(firstChild, nullptr); - auto sheetTitleColumn = firstChild->GetChildAtIndex(1); + auto sheetTitleColumn = firstChild->GetChildAtIndex(0); ASSERT_NE(sheetTitleColumn, nullptr); auto subRow = sheetTitleColumn->GetChildAtIndex(1); ASSERT_NE(subRow, nullptr); -- Gitee