Browse Source

Fix empty FlexPanel size (#22130)

pull/22135/head
kerams 4 weeks ago
committed by GitHub
parent
commit
9d5c2fa81d
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 2
      src/Avalonia.Controls/FlexPanel/FlexPanel.cs
  2. 16
      tests/Avalonia.Controls.UnitTests/FlexPanelTests.cs

2
src/Avalonia.Controls/FlexPanel/FlexPanel.cs

@ -198,7 +198,7 @@ namespace Avalonia.Controls
if (_visibleChildren is not { Length: > 0 } children) if (_visibleChildren is not { Length: > 0 } children)
{ {
_state.Lines.Clear(); _state.Lines.Clear();
return availableSize; return default;
} }
var isColumn = Direction is FlexDirection.Column or FlexDirection.ColumnReverse; var isColumn = Direction is FlexDirection.Column or FlexDirection.ColumnReverse;

16
tests/Avalonia.Controls.UnitTests/FlexPanelTests.cs

@ -1,4 +1,5 @@
using System; using System;
using Avalonia.Controls.Presenters;
using Avalonia.Layout; using Avalonia.Layout;
using Avalonia.UnitTests; using Avalonia.UnitTests;
using Xunit; 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(0, 0, 25, 15), target.Children[0].Bounds);
Assert.Equal(new Rect(25, 0, 25, 15), target.Children[1].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);
}
} }
} }

Loading…
Cancel
Save