From 531f059c76f9d3a937fa3afcf6d21eea430c3399 Mon Sep 17 00:00:00 2001 From: Steven Kirk Date: Tue, 23 May 2023 16:10:03 +0200 Subject: [PATCH] Only call coerce callback a single time. --- src/Avalonia.Base/PropertyStore/EffectiveValue`1.cs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/Avalonia.Base/PropertyStore/EffectiveValue`1.cs b/src/Avalonia.Base/PropertyStore/EffectiveValue`1.cs index b725326855..4518289335 100644 --- a/src/Avalonia.Base/PropertyStore/EffectiveValue`1.cs +++ b/src/Avalonia.Base/PropertyStore/EffectiveValue`1.cs @@ -208,7 +208,7 @@ namespace Avalonia.PropertyStore IsOverridenCurrentValue = isOverriddenCurrentValue; IsCoercedDefaultValue = isCoercedDefaultValue; - if (_uncommon?._coerce is { } coerce) + if (!isCoercedDefaultValue && _uncommon?._coerce is { } coerce) v = coerce(owner.Owner, value); if (priority <= Priority) @@ -262,7 +262,8 @@ namespace Avalonia.PropertyStore if (_uncommon?._coerce is { } coerce) { v = coerce(owner.Owner, value); - bv = coerce(owner.Owner, baseValue); + if (priority != basePriority) + bv = coerce(owner.Owner, baseValue); } if (!EqualityComparer.Default.Equals(Value, v))