From a02515fe19fd4161904b620effc75d1c6094499c Mon Sep 17 00:00:00 2001 From: Jeremy Koritzinsky Date: Wed, 6 Dec 2017 22:19:50 -0600 Subject: [PATCH] Make pending set condition always !object.Equals since the other condition in PriorityValue didn't match expected behavior as per new unit tests. --- src/Avalonia.Base/AvaloniaObject.cs | 3 +-- src/Avalonia.Base/PriorityValue.cs | 4 +--- src/Avalonia.Base/Utilities/DeferredSetter.cs | 9 +++------ 3 files changed, 5 insertions(+), 11 deletions(-) diff --git a/src/Avalonia.Base/AvaloniaObject.cs b/src/Avalonia.Base/AvaloniaObject.cs index 624274cc96..34278c397f 100644 --- a/src/Avalonia.Base/AvaloniaObject.cs +++ b/src/Avalonia.Base/AvaloniaObject.cs @@ -603,8 +603,7 @@ namespace Avalonia setterCallback((T)val, ref backing, notify); return true; }, - value, - (object o, ref T backing) => !object.Equals(o, backing)); + value); } /// diff --git a/src/Avalonia.Base/PriorityValue.cs b/src/Avalonia.Base/PriorityValue.cs index 6b82b202be..9b5318083a 100644 --- a/src/Avalonia.Base/PriorityValue.cs +++ b/src/Avalonia.Base/PriorityValue.cs @@ -246,9 +246,7 @@ namespace Avalonia delayedSetter.SetAndNotify(this, ref _value, UpdateCore, - (value, priority), - ((object value, int) val, ref (object value, int) backing) - => !object.Equals(val.value, backing.value)); + (value, priority)); } private bool UpdateCore( diff --git a/src/Avalonia.Base/Utilities/DeferredSetter.cs b/src/Avalonia.Base/Utilities/DeferredSetter.cs index 2c8c7f8887..957bcdc942 100644 --- a/src/Avalonia.Base/Utilities/DeferredSetter.cs +++ b/src/Avalonia.Base/Utilities/DeferredSetter.cs @@ -103,7 +103,6 @@ namespace Avalonia.Utilities } public delegate bool SetterDelegate(TSetRecord record, ref TValue backing, Action notifyCallback); - public delegate bool PendingSetPredicate(TSetRecord record, ref TValue backing); /// /// Set the property and notify listeners while ensuring we don't get into a stack overflow as happens with #855 and #824 @@ -120,15 +119,13 @@ namespace Avalonia.Utilities TProperty property, ref TValue backing, SetterDelegate setterCallback, - TSetRecord value, - PendingSetPredicate pendingSetCondition) + TSetRecord value) { Contract.Requires(setterCallback != null); - Contract.Requires(pendingSetCondition != null); if (!IsNotifying(property)) { bool updated = false; - if (pendingSetCondition(value, ref backing)) + if (!object.Equals(value, backing)) { updated = setterCallback(value, ref backing, notification => { @@ -150,7 +147,7 @@ namespace Avalonia.Utilities } return updated; } - else if(pendingSetCondition(value, ref backing)) + else if(!object.Equals(value, backing)) { AddPendingSet(property, value); }