From 9d5c2fa81d9c374379ae3ee286c778047a6a5a7e Mon Sep 17 00:00:00 2001 From: kerams Date: Wed, 2 Sep 2026 15:01:50 +0000 Subject: [PATCH] Fix empty FlexPanel size (#22130) --- src/Avalonia.Controls/FlexPanel/FlexPanel.cs | 2 +- .../FlexPanelTests.cs | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/Avalonia.Controls/FlexPanel/FlexPanel.cs b/src/Avalonia.Controls/FlexPanel/FlexPanel.cs index 9efdc04901..343bcc53ae 100644 --- a/src/Avalonia.Controls/FlexPanel/FlexPanel.cs +++ b/src/Avalonia.Controls/FlexPanel/FlexPanel.cs @@ -198,7 +198,7 @@ namespace Avalonia.Controls if (_visibleChildren is not { Length: > 0 } children) { _state.Lines.Clear(); - return availableSize; + return default; } var isColumn = Direction is FlexDirection.Column or FlexDirection.ColumnReverse; diff --git a/tests/Avalonia.Controls.UnitTests/FlexPanelTests.cs b/tests/Avalonia.Controls.UnitTests/FlexPanelTests.cs index f3418c75db..46ce6f0f5f 100644 --- a/tests/Avalonia.Controls.UnitTests/FlexPanelTests.cs +++ b/tests/Avalonia.Controls.UnitTests/FlexPanelTests.cs @@ -1,4 +1,5 @@ using System; +using Avalonia.Controls.Presenters; using Avalonia.Layout; using Avalonia.UnitTests; using Xunit; @@ -411,5 +412,20 @@ namespace Avalonia.Controls.UnitTests Assert.Equal(new Rect(0, 0, 25, 15), target.Children[0].Bounds); Assert.Equal(new Rect(25, 0, 25, 15), target.Children[1].Bounds); } + + [Fact] + public void Empty_Panel_Does_Not_Take_Up_Available_Space() + { + var target = new FlexPanel(); + var stack = new StackPanel { Children = { new Border { Width = 100, Height = 50 }, target } }; + + var presenter = new ScrollContentPresenter { CanVerticallyScroll = true, Content = stack }; + + presenter.UpdateChild(); + presenter.Measure(new Size(100, 100)); + + Assert.Equal(default, target.DesiredSize); + Assert.Equal(new Size(100, 50), stack.DesiredSize); + } } }