Fixed ReversibleStackPanel not invalidating arrange on ReverseOrder change (#20172)
* Added unit tests for ReversibleStackPanel (#20171) * Invalidates_Arrange_On_Reverse_Order_Change fails. * Fixed ReversibleStackPanel not invalidating arrange on ReverseOrder change (#20171)
This commit is contained in:
committed by
GitHub
parent
0b5a82884e
commit
51987447d3
@@ -24,6 +24,11 @@ namespace Avalonia.Controls
|
||||
set => SetValue(ReverseOrderProperty, value);
|
||||
}
|
||||
|
||||
static ReversibleStackPanel()
|
||||
{
|
||||
AffectsArrange<ReversibleStackPanel>(ReverseOrderProperty);
|
||||
}
|
||||
|
||||
/// <inheritdoc/>
|
||||
protected override Size ArrangeOverride(Size finalSize)
|
||||
{
|
||||
|
||||
@@ -0,0 +1,48 @@
|
||||
using Avalonia.UnitTests;
|
||||
using Xunit;
|
||||
|
||||
namespace Avalonia.Controls.UnitTests
|
||||
{
|
||||
public class ReversibleStackPanelTests : ScopedTestBase
|
||||
{
|
||||
[Fact]
|
||||
public void Arranges_In_Reverse_Order()
|
||||
{
|
||||
var target = new ReversibleStackPanel
|
||||
{
|
||||
ReverseOrder = true,
|
||||
Children =
|
||||
{
|
||||
new Border { Height = 30, Width = 10 },
|
||||
new Border { Height = 50 },
|
||||
}
|
||||
};
|
||||
|
||||
target.Measure(Size.Infinity);
|
||||
target.Arrange(new Rect(target.DesiredSize));
|
||||
|
||||
Assert.Equal(new Rect(0, 50, 10, 30), target.Children[0].Bounds);
|
||||
Assert.Equal(new Rect(0, 0, 10, 50), target.Children[1].Bounds);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Invalidates_Arrange_On_Reverse_Order_Change()
|
||||
{
|
||||
var target = new ReversibleStackPanel
|
||||
{
|
||||
Children =
|
||||
{
|
||||
new Border(),
|
||||
new Border(),
|
||||
}
|
||||
};
|
||||
|
||||
target.Measure(Size.Infinity);
|
||||
target.Arrange(new Rect(target.DesiredSize));
|
||||
target.ReverseOrder = true;
|
||||
|
||||
Assert.True(target.IsMeasureValid);
|
||||
Assert.False(target.IsArrangeValid);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user