From 038f0a6ef87e8fdba239c6b3250dc63f88585a0f Mon Sep 17 00:00:00 2001 From: "everLEEst(SangHyeon Lee)" Date: Tue, 4 Feb 2025 20:13:09 +0900 Subject: [PATCH] [NUI] Exclude layouting on invisible children --- .../src/public/Layouting/AbsoluteLayout.cs | 4 ++-- .../src/public/Layouting/LayoutGroup.cs | 2 +- .../src/public/Layouting/LinearLayout.cs | 18 +++++++++--------- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/Tizen.NUI/src/public/Layouting/AbsoluteLayout.cs b/src/Tizen.NUI/src/public/Layouting/AbsoluteLayout.cs index 2ab9b409683..8060edc50b0 100755 --- a/src/Tizen.NUI/src/public/Layouting/AbsoluteLayout.cs +++ b/src/Tizen.NUI/src/public/Layouting/AbsoluteLayout.cs @@ -47,7 +47,7 @@ protected override void OnMeasure(MeasureSpecification widthMeasureSpec, Measure foreach (var childLayout in LayoutChildren) { - if (!childLayout.SetPositionByLayout) + if (!childLayout.SetPositionByLayout || !(childLayout.Owner.Visibility)) { continue; } @@ -95,7 +95,7 @@ protected override void OnLayout(bool changed, LayoutLength left, LayoutLength t // Children could overlap or spill outside the parent, as is the nature of absolute positions. foreach (var childLayout in LayoutChildren) { - if (!childLayout.SetPositionByLayout) + if (!childLayout.SetPositionByLayout || !(childLayout.Owner.Visibility)) { continue; } diff --git a/src/Tizen.NUI/src/public/Layouting/LayoutGroup.cs b/src/Tizen.NUI/src/public/Layouting/LayoutGroup.cs index 754ed1e8f00..20e7fa77f9a 100755 --- a/src/Tizen.NUI/src/public/Layouting/LayoutGroup.cs +++ b/src/Tizen.NUI/src/public/Layouting/LayoutGroup.cs @@ -52,7 +52,7 @@ public LayoutGroup() [EditorBrowsable(EditorBrowsableState.Never)] protected IEnumerable IterateLayoutChildren() { - return LayoutChildren.Where(childLayout => childLayout.SetPositionByLayout); + return LayoutChildren.Where(childLayout => (childLayout.SetPositionByLayout && childLayout.Owner.Visibility)); } /// diff --git a/src/Tizen.NUI/src/public/Layouting/LinearLayout.cs b/src/Tizen.NUI/src/public/Layouting/LinearLayout.cs index 5a5db22d201..43063d674c3 100755 --- a/src/Tizen.NUI/src/public/Layouting/LinearLayout.cs +++ b/src/Tizen.NUI/src/public/Layouting/LinearLayout.cs @@ -333,7 +333,7 @@ private void MeasureHorizontal(MeasureSpecification widthMeasureSpec, MeasureSpe // whose width specification policy is MatchParent. foreach (var childLayout in LayoutChildren) { - if (!childLayout.SetPositionByLayout) + if (!childLayout.SetPositionByLayout || !(childLayout.Owner.Visibility)) { continue; } @@ -407,7 +407,7 @@ private void MeasureHorizontal(MeasureSpecification widthMeasureSpec, MeasureSpe // And the widths of all weighted children are accumulated to calculate weighted width. foreach (var childLayout in LayoutChildren) { - if (!childLayout.SetPositionByLayout) + if (!childLayout.SetPositionByLayout || !(childLayout.Owner.Visibility)) { continue; } @@ -501,7 +501,7 @@ private void MeasureHorizontal(MeasureSpecification widthMeasureSpec, MeasureSpe { foreach (LayoutItem childLayout in LayoutChildren) { - if (!childLayout.SetPositionByLayout) + if (!childLayout.SetPositionByLayout || !(childLayout.Owner.Visibility)) { continue; } @@ -540,7 +540,7 @@ private void MeasureHorizontal(MeasureSpecification widthMeasureSpec, MeasureSpe // Decide the max height among children. foreach (var childLayout in LayoutChildren) { - if (!childLayout.SetPositionByLayout) + if (!childLayout.SetPositionByLayout || !(childLayout.Owner.Visibility)) { continue; } @@ -598,7 +598,7 @@ private void MeasureVertical(MeasureSpecification widthMeasureSpec, MeasureSpeci // whose height specification policy is MatchParent. foreach (var childLayout in LayoutChildren) { - if (!childLayout.SetPositionByLayout) + if (!childLayout.SetPositionByLayout || !(childLayout.Owner.Visibility)) { continue; } @@ -672,7 +672,7 @@ private void MeasureVertical(MeasureSpecification widthMeasureSpec, MeasureSpeci // And the heights of all weighted children are accumulated to calculate weighted height. foreach (var childLayout in LayoutChildren) { - if (!childLayout.SetPositionByLayout) + if (!childLayout.SetPositionByLayout || !(childLayout.Owner.Visibility)) { continue; } @@ -766,7 +766,7 @@ private void MeasureVertical(MeasureSpecification widthMeasureSpec, MeasureSpeci { foreach (var childLayout in LayoutChildren) { - if (!childLayout.SetPositionByLayout) + if (!childLayout.SetPositionByLayout || !(childLayout.Owner.Visibility)) { continue; } @@ -804,7 +804,7 @@ private void MeasureVertical(MeasureSpecification widthMeasureSpec, MeasureSpeci // Decide the max width among children. foreach (var childLayout in LayoutChildren) { - if (!childLayout.SetPositionByLayout) + if (!childLayout.SetPositionByLayout || !(childLayout.Owner.Visibility)) { continue; } @@ -993,7 +993,7 @@ private void ForceUniformHeight(MeasureSpecification widthMeasureSpec) MeasureSpecification uniformMeasureSpec = new MeasureSpecification(MeasuredHeight.Size, MeasureSpecification.ModeType.Exactly); foreach (var childLayout in LayoutChildren) { - if (!childLayout.SetPositionByLayout) + if (!childLayout.SetPositionByLayout || !(childLayout.Owner.Visibility)) { continue; }