Browse Source

Reserve all of arrange rect.

Steven Kirk 5 years ago
parent
commit
10b6cfc011

+ 1 - 2
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;

+ 20 - 0
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()
         {