Browse Source

Allow for null DefiningGeometry in Shape.

Fixes #2335.
pull/2339/head
Steven Kirk 8 years ago
parent
commit
7a738e18dd
  1. 23
      src/Avalonia.Controls/Shapes/Shape.cs

23
src/Avalonia.Controls/Shapes/Shape.cs

@ -195,7 +195,7 @@ namespace Avalonia.Controls.Shapes
if (deferCalculateTransform) if (deferCalculateTransform)
{ {
_calculateTransformOnArrange = true; _calculateTransformOnArrange = true;
return DefiningGeometry.Bounds.Size; return DefiningGeometry?.Bounds.Size ?? Size.Empty;
} }
else else
{ {
@ -217,17 +217,22 @@ namespace Avalonia.Controls.Shapes
private Size CalculateShapeSizeAndSetTransform(Size availableSize) private Size CalculateShapeSizeAndSetTransform(Size availableSize)
{ {
// This should probably use GetRenderBounds(strokeThickness) but then the calculations if (DefiningGeometry != null)
// will multiply the stroke thickness as well, which isn't correct.
var (size, transform) = CalculateSizeAndTransform(availableSize, DefiningGeometry.Bounds, Stretch);
if (_transform != transform)
{ {
_transform = transform; // This should probably use GetRenderBounds(strokeThickness) but then the calculations
_renderedGeometry = null; // will multiply the stroke thickness as well, which isn't correct.
var (size, transform) = CalculateSizeAndTransform(availableSize, DefiningGeometry.Bounds, Stretch);
if (_transform != transform)
{
_transform = transform;
_renderedGeometry = null;
}
return size;
} }
return size; return Size.Empty;
} }
internal static (Size, Matrix) CalculateSizeAndTransform(Size availableSize, Rect shapeBounds, Stretch Stretch) internal static (Size, Matrix) CalculateSizeAndTransform(Size availableSize, Rect shapeBounds, Stretch Stretch)

Loading…
Cancel
Save