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
parent
commit
807649eff5
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 4
      src/Avalonia.Base/PropertyStore/EffectiveValue`1.cs
  2. 13
      tests/Avalonia.Base.UnitTests/AvaloniaObjectTests_Coercion.cs

4
src/Avalonia.Base/PropertyStore/EffectiveValue`1.cs

@ -216,7 +216,7 @@ namespace Avalonia.PropertyStore
valueChanged = !EqualityComparer<T>.Default.Equals(Value, v); valueChanged = !EqualityComparer<T>.Default.Equals(Value, v);
Value = v; Value = v;
Priority = priority; Priority = priority;
if (_uncommon is not null) if (!isCoercedDefaultValue && _uncommon is not null)
_uncommon._uncoercedValue = value; _uncommon._uncoercedValue = value;
} }
@ -225,7 +225,7 @@ namespace Avalonia.PropertyStore
baseValueChanged = !EqualityComparer<T>.Default.Equals(_baseValue, v); baseValueChanged = !EqualityComparer<T>.Default.Equals(_baseValue, v);
_baseValue = v; _baseValue = v;
BasePriority = priority; BasePriority = priority;
if (_uncommon is not null) if (!isCoercedDefaultValue && _uncommon is not null)
_uncommon._uncoercedBaseValue = value; _uncommon._uncoercedBaseValue = value;
} }

13
tests/Avalonia.Base.UnitTests/AvaloniaObjectTests_Coercion.cs

@ -243,6 +243,19 @@ namespace Avalonia.Base.UnitTests
Assert.Equal(new[] { 11 }, target.CoerceFooInvocations); 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] [Fact]
public void ClearValue_Respects_Coerced_Default_Value() public void ClearValue_Respects_Coerced_Default_Value()
{ {

Loading…
Cancel
Save