From d6681c087938d47109cbd3c90abe0bd0f204e2c9 Mon Sep 17 00:00:00 2001 From: fenglinbailu Date: Sat, 15 Mar 2025 19:39:03 +0800 Subject: [PATCH] Border Unoccupied Signed-off-by: fenglinbailu --- .../core/components_ng/layout/layout_property.cpp | 15 +++++++++++++++ frameworks/core/components_ng/pattern/pattern.h | 5 +++++ 2 files changed, 20 insertions(+) diff --git a/frameworks/core/components_ng/layout/layout_property.cpp b/frameworks/core/components_ng/layout/layout_property.cpp index 5ce53b46b93..cfe856c51fc 100644 --- a/frameworks/core/components_ng/layout/layout_property.cpp +++ b/frameworks/core/components_ng/layout/layout_property.cpp @@ -717,6 +717,14 @@ void LayoutProperty::ConstraintContentByPadding() void LayoutProperty::ConstraintContentByBorder() { CHECK_NULL_VOID(borderWidth_); + auto host = GetHost(); + if (host) { + auto pattern = host->GetPattern(); + if (pattern && pattern->BorderUnoccupied()) { + return; + } + } + auto borderWidthF = ConvertToBorderWidthPropertyF( *borderWidth_, contentConstraint_->scaleProperty, layoutConstraint_->percentReference.Width()); if (AceApplicationInfo::GetInstance().GreatOrEqualTargetAPIVersion(PlatformVersion::VERSION_TWELVE)) { @@ -785,6 +793,13 @@ PaddingPropertyF LayoutProperty::CreatePaddingAndBorder(bool includeSafeAreaPadd padding_, ScaleProperty::CreateScaleProperty(), layoutConstraint_->percentReference.Width()); auto borderWidth = ConvertToBorderWidthPropertyF( borderWidth_, ScaleProperty::CreateScaleProperty(), layoutConstraint_->percentReference.Width()); + auto host = GetHost(); + if (host) { + auto pattern = host->GetPattern(); + if (pattern && pattern->BorderUnoccupied()) { + borderWidth = BorderWidthPropertyF(); + } + } return CombinePaddingsAndBorder(safeAreaPadding, padding, borderWidth, {}); } auto padding = ConvertToPaddingPropertyF( diff --git a/frameworks/core/components_ng/pattern/pattern.h b/frameworks/core/components_ng/pattern/pattern.h index 6996fcef9fc..ae7da5be8c8 100644 --- a/frameworks/core/components_ng/pattern/pattern.h +++ b/frameworks/core/components_ng/pattern/pattern.h @@ -682,6 +682,11 @@ public: virtual void EndTranslate() {}; virtual void SendTranslateResult(std::string results) {}; + virtual bool BorderUnoccupied() const + { + return false; + } + protected: virtual void OnAttachToFrameNode() {} virtual void OnDetachFromFrameNode(FrameNode* frameNode) {} -- Gitee