Browse Source
Merge pull request #11849 from AvaloniaUI/fixes/11484-coercevalue-called-multiple-times-2
Don't set uncoerced value to coerced default value.
pull/11863/head
Max Katz
3 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with
15 additions and
2 deletions
-
src/Avalonia.Base/PropertyStore/EffectiveValue`1.cs
-
tests/Avalonia.Base.UnitTests/AvaloniaObjectTests_Coercion.cs
|
|
|
@ -216,7 +216,7 @@ namespace Avalonia.PropertyStore |
|
|
|
valueChanged = !EqualityComparer<T>.Default.Equals(Value, v); |
|
|
|
Value = v; |
|
|
|
Priority = priority; |
|
|
|
if (_uncommon is not null) |
|
|
|
if (!isCoercedDefaultValue && _uncommon is not null) |
|
|
|
_uncommon._uncoercedValue = value; |
|
|
|
} |
|
|
|
|
|
|
|
@ -225,7 +225,7 @@ namespace Avalonia.PropertyStore |
|
|
|
baseValueChanged = !EqualityComparer<T>.Default.Equals(_baseValue, v); |
|
|
|
_baseValue = v; |
|
|
|
BasePriority = priority; |
|
|
|
if (_uncommon is not null) |
|
|
|
if (!isCoercedDefaultValue && _uncommon is not null) |
|
|
|
_uncommon._uncoercedBaseValue = value; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@ -243,6 +243,19 @@ namespace Avalonia.Base.UnitTests |
|
|
|
Assert.Equal(new[] { 11 }, target.CoerceFooInvocations); |
|
|
|
} |
|
|
|
|
|
|
|
[Fact] |
|
|
|
public void Second_Coerce_Of_Default_Value_Is_Passed_Uncoerced_Value() |
|
|
|
{ |
|
|
|
var target = new Class1(); |
|
|
|
|
|
|
|
target.MinFoo = 20; |
|
|
|
target.CoerceFooInvocations.Clear(); |
|
|
|
target.CoerceValue(Class1.FooProperty); |
|
|
|
target.CoerceValue(Class1.FooProperty); |
|
|
|
|
|
|
|
Assert.Equal(new[] { 11, 11 }, target.CoerceFooInvocations); |
|
|
|
} |
|
|
|
|
|
|
|
[Fact] |
|
|
|
public void ClearValue_Respects_Coerced_Default_Value() |
|
|
|
{ |
|
|
|
|