|
|
@ -12,22 +12,19 @@ namespace Avalonia |
|
|
{ |
|
|
{ |
|
|
private readonly AvaloniaObject _owner; |
|
|
private readonly AvaloniaObject _owner; |
|
|
private readonly IValueSink _sink; |
|
|
private readonly IValueSink _sink; |
|
|
private readonly AvaloniaPropertyValueStore<object> _values; |
|
|
private readonly AvaloniaPropertyValueStore<IValue> _values; |
|
|
|
|
|
|
|
|
public ValueStore(AvaloniaObject owner) |
|
|
public ValueStore(AvaloniaObject owner) |
|
|
{ |
|
|
{ |
|
|
_sink = _owner = owner; |
|
|
_sink = _owner = owner; |
|
|
_values = new AvaloniaPropertyValueStore<object>(); |
|
|
_values = new AvaloniaPropertyValueStore<IValue>(); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
public bool IsAnimating(AvaloniaProperty property) |
|
|
public bool IsAnimating(AvaloniaProperty property) |
|
|
{ |
|
|
{ |
|
|
if (_values.TryGetValue(property, out var slot)) |
|
|
if (_values.TryGetValue(property, out var slot)) |
|
|
{ |
|
|
{ |
|
|
if (slot is IValue v) |
|
|
return slot.ValuePriority < BindingPriority.LocalValue; |
|
|
{ |
|
|
|
|
|
return v.ValuePriority < BindingPriority.LocalValue; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
return false; |
|
|
return false; |
|
|
@ -37,10 +34,7 @@ namespace Avalonia |
|
|
{ |
|
|
{ |
|
|
if (_values.TryGetValue(property, out var slot)) |
|
|
if (_values.TryGetValue(property, out var slot)) |
|
|
{ |
|
|
{ |
|
|
if (slot is IValue v) |
|
|
return slot.Value.HasValue; |
|
|
{ |
|
|
|
|
|
return v.Value.HasValue; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
return false; |
|
|
return false; |
|
|
@ -50,13 +44,12 @@ namespace Avalonia |
|
|
{ |
|
|
{ |
|
|
if (_values.TryGetValue(property, out var slot)) |
|
|
if (_values.TryGetValue(property, out var slot)) |
|
|
{ |
|
|
{ |
|
|
if (slot is IValue<T> v) |
|
|
var v = (IValue<T>)slot; |
|
|
|
|
|
|
|
|
|
|
|
if (v.Value.HasValue) |
|
|
{ |
|
|
{ |
|
|
if (v.Value.HasValue) |
|
|
value = v.Value.Value; |
|
|
{ |
|
|
return true; |
|
|
value = v.Value.Value; |
|
|
|
|
|
return true; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@ -133,14 +126,11 @@ namespace Avalonia |
|
|
{ |
|
|
{ |
|
|
if (_values.TryGetValue(property, out var slot)) |
|
|
if (_values.TryGetValue(property, out var slot)) |
|
|
{ |
|
|
{ |
|
|
if (slot is IValue value) |
|
|
return new Diagnostics.AvaloniaPropertyValue( |
|
|
{ |
|
|
property, |
|
|
return new Diagnostics.AvaloniaPropertyValue( |
|
|
slot.Value.HasValue ? (object)slot.Value : AvaloniaProperty.UnsetValue, |
|
|
property, |
|
|
slot.ValuePriority, |
|
|
value.Value.HasValue ? (object)value.Value : AvaloniaProperty.UnsetValue, |
|
|
null); |
|
|
value.ValuePriority, |
|
|
|
|
|
null); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
return null; |
|
|
return null; |
|
|
|