Browse Source
Merge pull request #3233 from AvaloniaUI/shape-fix
Simplify Shape AffectsGeometry
pull/3250/head
Benedikt Stebner
7 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with
3 additions and
12 deletions
-
src/Avalonia.Controls/Shapes/Shape.cs
|
|
|
@ -2,7 +2,6 @@ |
|
|
|
// Licensed under the MIT license. See licence.md file in the project root for full license information.
|
|
|
|
|
|
|
|
using System; |
|
|
|
using System.Reflection; |
|
|
|
using Avalonia.Collections; |
|
|
|
using Avalonia.Media; |
|
|
|
|
|
|
|
@ -166,12 +165,9 @@ namespace Avalonia.Controls.Shapes |
|
|
|
{ |
|
|
|
property.Changed.Subscribe(e => |
|
|
|
{ |
|
|
|
var senderType = e.Sender.GetType().GetTypeInfo(); |
|
|
|
var affectedType = typeof(TShape).GetTypeInfo(); |
|
|
|
|
|
|
|
if (affectedType.IsAssignableFrom(senderType)) |
|
|
|
if (e.Sender is TShape shape) |
|
|
|
{ |
|
|
|
AffectsGeometryInvalidate(e); |
|
|
|
AffectsGeometryInvalidate(shape, e); |
|
|
|
} |
|
|
|
}); |
|
|
|
} |
|
|
|
@ -322,13 +318,8 @@ namespace Avalonia.Controls.Shapes |
|
|
|
return (size, transform); |
|
|
|
} |
|
|
|
|
|
|
|
private static void AffectsGeometryInvalidate(AvaloniaPropertyChangedEventArgs e) |
|
|
|
private static void AffectsGeometryInvalidate(Shape control, AvaloniaPropertyChangedEventArgs e) |
|
|
|
{ |
|
|
|
if (!(e.Sender is Shape control)) |
|
|
|
{ |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
// If the geometry is invalidated when Bounds changes, only invalidate when the Size
|
|
|
|
// portion changes.
|
|
|
|
if (e.Property == BoundsProperty) |
|
|
|
|