diff --git a/src/Avalonia.Controls/Shapes/Shape.cs b/src/Avalonia.Controls/Shapes/Shape.cs index 67a7d48c61..28206a398a 100644 --- a/src/Avalonia.Controls/Shapes/Shape.cs +++ b/src/Avalonia.Controls/Shapes/Shape.cs @@ -62,7 +62,6 @@ namespace Avalonia.Controls.Shapes private Matrix _transform = Matrix.Identity; private Geometry? _definingGeometry; private Geometry? _renderedGeometry; - private bool _calculateTransformOnArrange; static Shape() { @@ -270,7 +269,7 @@ namespace Avalonia.Controls.Shapes _renderedGeometry = null; } - return size; + return finalSize; } return Size.Empty; diff --git a/tests/Avalonia.Controls.UnitTests/Shapes/PathTests.cs b/tests/Avalonia.Controls.UnitTests/Shapes/PathTests.cs index a10a03a5ae..8b8656a76b 100644 --- a/tests/Avalonia.Controls.UnitTests/Shapes/PathTests.cs +++ b/tests/Avalonia.Controls.UnitTests/Shapes/PathTests.cs @@ -119,6 +119,26 @@ namespace Avalonia.Controls.UnitTests.Shapes } } + [Fact] + public void Arrange_Reserves_All_Of_Arrange_Rect() + { + using var app = UnitTestApplication.Start(TestServices.MockPlatformRenderInterface); + + RectangleGeometry geometry; + var target = new Path + { + Data = geometry = new RectangleGeometry { Rect = new Rect(0, 0, 100, 200) }, + Stretch = Stretch.Uniform, + }; + + target.Measure(new Size(400, 400)); + target.Arrange(new Rect(0, 0, 400, 400)); + + Assert.Equal(new Rect(0, 0, 100, 200), geometry.Rect); + Assert.Equal(Matrix.CreateScale(2, 2), target.RenderedGeometry.Transform.Value); + Assert.Equal(new Rect(0, 0, 400, 400), target.Bounds); + } + [Fact] public void Measure_Without_Arrange_Does_Not_Clear_RenderedGeometry_Transform() {