diff --git a/src/Avalonia.Base/Styling/Activators/AndActivator.cs b/src/Avalonia.Base/Styling/Activators/AndActivator.cs
index dafc6700e6..6ca9c10858 100644
--- a/src/Avalonia.Base/Styling/Activators/AndActivator.cs
+++ b/src/Avalonia.Base/Styling/Activators/AndActivator.cs
@@ -20,7 +20,7 @@ namespace Avalonia.Styling.Activators
_sources.Add(activator);
}
- void IStyleActivatorSink.OnNext(bool value, int tag) => ReevaluateIsActive();
+ void IStyleActivatorSink.OnNext(bool value) => ReevaluateIsActive();
protected override bool EvaluateIsActive()
{
@@ -44,11 +44,9 @@ namespace Avalonia.Styling.Activators
{
if (_sources is object)
{
- var i = 0;
-
foreach (var source in _sources)
{
- source.Subscribe(this, i++);
+ source.Subscribe(this);
}
}
}
diff --git a/src/Avalonia.Base/Styling/Activators/IStyleActivator.cs b/src/Avalonia.Base/Styling/Activators/IStyleActivator.cs
index e8c33adf4d..e07534237a 100644
--- a/src/Avalonia.Base/Styling/Activators/IStyleActivator.cs
+++ b/src/Avalonia.Base/Styling/Activators/IStyleActivator.cs
@@ -9,11 +9,11 @@ namespace Avalonia.Styling.Activators
///
/// A style activator is very similar to an `IObservable{bool}` but is optimized for the
/// particular use-case of activating a style according to a selector. It differs from
- /// an observable in two major ways:
+ /// an observable in three major ways:
///
/// - Can only have a single subscription
- /// - The subscription can have a tag associated with it, allowing a subscriber to index
- /// into a list of subscriptions without having to allocate additional objects.
+ /// - The activation state can be re-evaluated at any time by calling
+ /// - No error or completion messages
///
[Unstable]
public interface IStyleActivator : IDisposable
@@ -38,11 +38,10 @@ namespace Avalonia.Styling.Activators
/// Subscribes to the activator.
///
/// The listener.
- /// An optional tag.
///
/// This method should not call .
///
- void Subscribe(IStyleActivatorSink sink, int tag = 0);
+ void Subscribe(IStyleActivatorSink sink);
///
/// Unsubscribes from the activator.
diff --git a/src/Avalonia.Base/Styling/Activators/IStyleActivatorSink.cs b/src/Avalonia.Base/Styling/Activators/IStyleActivatorSink.cs
index fbb18dc304..142a3c3517 100644
--- a/src/Avalonia.Base/Styling/Activators/IStyleActivatorSink.cs
+++ b/src/Avalonia.Base/Styling/Activators/IStyleActivatorSink.cs
@@ -12,7 +12,6 @@ namespace Avalonia.Styling.Activators
/// Called when the subscribed activator value changes.
///
/// The new value.
- /// The subscription tag.
- void OnNext(bool value, int tag);
+ void OnNext(bool value);
}
}
diff --git a/src/Avalonia.Base/Styling/Activators/NotActivator.cs b/src/Avalonia.Base/Styling/Activators/NotActivator.cs
index 7067c2b727..83f026e479 100644
--- a/src/Avalonia.Base/Styling/Activators/NotActivator.cs
+++ b/src/Avalonia.Base/Styling/Activators/NotActivator.cs
@@ -7,9 +7,9 @@
{
private readonly IStyleActivator _source;
public NotActivator(IStyleActivator source) => _source = source;
- void IStyleActivatorSink.OnNext(bool value, int tag) => ReevaluateIsActive();
+ void IStyleActivatorSink.OnNext(bool value) => ReevaluateIsActive();
protected override bool EvaluateIsActive() => !_source.GetIsActive();
- protected override void Initialize() => _source.Subscribe(this, 0);
+ protected override void Initialize() => _source.Subscribe(this);
protected override void Deinitialize() => _source.Unsubscribe(this);
}
}
diff --git a/src/Avalonia.Base/Styling/Activators/OrActivator.cs b/src/Avalonia.Base/Styling/Activators/OrActivator.cs
index 26c8df7f9c..056731695a 100644
--- a/src/Avalonia.Base/Styling/Activators/OrActivator.cs
+++ b/src/Avalonia.Base/Styling/Activators/OrActivator.cs
@@ -18,7 +18,7 @@ namespace Avalonia.Styling.Activators
_sources.Add(activator);
}
- void IStyleActivatorSink.OnNext(bool value, int tag) => ReevaluateIsActive();
+ void IStyleActivatorSink.OnNext(bool value) => ReevaluateIsActive();
protected override bool EvaluateIsActive()
{
@@ -38,11 +38,9 @@ namespace Avalonia.Styling.Activators
{
if (_sources is object)
{
- var i = 0;
-
foreach (var source in _sources)
{
- source.Subscribe(this, i++);
+ source.Subscribe(this);
}
}
}
diff --git a/src/Avalonia.Base/Styling/Activators/StyleActivatorBase.cs b/src/Avalonia.Base/Styling/Activators/StyleActivatorBase.cs
index 94c91a9572..06848a7524 100644
--- a/src/Avalonia.Base/Styling/Activators/StyleActivatorBase.cs
+++ b/src/Avalonia.Base/Styling/Activators/StyleActivatorBase.cs
@@ -6,20 +6,18 @@ namespace Avalonia.Styling.Activators
internal abstract class StyleActivatorBase : IStyleActivator
{
private IStyleActivatorSink? _sink;
- private int _tag;
private bool _value;
public bool GetIsActive() => _value = EvaluateIsActive();
public bool IsSubscribed => _sink is not null;
- public void Subscribe(IStyleActivatorSink sink, int tag = 0)
+ public void Subscribe(IStyleActivatorSink sink)
{
if (_sink is null)
{
Initialize();
_sink = sink;
- _tag = tag;
}
else
{
@@ -70,14 +68,14 @@ namespace Avalonia.Styling.Activators
if (value != _value)
{
_value = value;
- _sink?.OnNext(value, _tag);
+ _sink?.OnNext(value);
}
return value;
}
///
- /// Called in response to a to allow the
+ /// Called in response to a to allow the
/// derived class to set up any necessary subscriptions.
///
protected abstract void Initialize();
diff --git a/src/Avalonia.Base/Styling/StyleInstance.cs b/src/Avalonia.Base/Styling/StyleInstance.cs
index cc66a4bf22..2d7c695b32 100644
--- a/src/Avalonia.Base/Styling/StyleInstance.cs
+++ b/src/Avalonia.Base/Styling/StyleInstance.cs
@@ -79,7 +79,7 @@ namespace Avalonia.Styling
public new void MakeShared() => base.MakeShared();
- void IStyleActivatorSink.OnNext(bool value, int tag)
+ void IStyleActivatorSink.OnNext(bool value)
{
Owner?.OnFrameActivationChanged(this);
_animationTrigger?.OnNext(value);
diff --git a/tests/Avalonia.Base.UnitTests/Styling/SelectorTests_Nesting.cs b/tests/Avalonia.Base.UnitTests/Styling/SelectorTests_Nesting.cs
index 931ffec90a..72df072ea6 100644
--- a/tests/Avalonia.Base.UnitTests/Styling/SelectorTests_Nesting.cs
+++ b/tests/Avalonia.Base.UnitTests/Styling/SelectorTests_Nesting.cs
@@ -300,7 +300,7 @@ namespace Avalonia.Base.UnitTests.Styling
public bool Active { get; private set; }
- public void OnNext(bool value, int tag) => Active = value;
+ public void OnNext(bool value) => Active = value;
}
}
}
diff --git a/tests/Avalonia.Base.UnitTests/Styling/StyleActivatorExtensions.cs b/tests/Avalonia.Base.UnitTests/Styling/StyleActivatorExtensions.cs
index 6b319615b9..e69eae43f0 100644
--- a/tests/Avalonia.Base.UnitTests/Styling/StyleActivatorExtensions.cs
+++ b/tests/Avalonia.Base.UnitTests/Styling/StyleActivatorExtensions.cs
@@ -42,7 +42,7 @@ namespace Avalonia.Base.UnitTests.Styling
observer.OnNext(_source.GetIsActive());
}
- void IStyleActivatorSink.OnNext(bool value, int tag)
+ void IStyleActivatorSink.OnNext(bool value)
{
PublishNext(value);
}