Browse Source

Further simplify StyleActivator.

The clever stuff was causing styles to fail and probably isn't needed
anyhow. Fixes #371.
pull/386/head
Steven Kirk 11 years ago
parent
commit
1eb0fbb385
  1. 14
      src/Perspex.Styling/Styling/StyleActivator.cs
  2. 20
      tests/Perspex.Styling.UnitTests/StyleActivatorTests.cs

14
src/Perspex.Styling/Styling/StyleActivator.cs

@ -19,17 +19,9 @@ namespace Perspex.Styling
{
public static IObservable<bool> And(IEnumerable<IObservable<bool>> inputs)
{
var sourceArray = inputs.Select(s => s.Publish().RefCount()).ToArray();
var terminate = sourceArray
.ToObservable()
.SelectMany(x => x.LastAsync()
.Where(y => y == false));
return sourceArray
.CombineLatest(values => values.All(x => x))
.DistinctUntilChanged()
.TakeUntil(terminate);
return inputs.CombineLatest()
.Select(values => values.All(x => x))
.DistinctUntilChanged();
}
public static IObservable<bool> Or(IEnumerable<IObservable<bool>> inputs)

20
tests/Perspex.Styling.UnitTests/StyleActivatorTests.cs

@ -84,26 +84,6 @@ namespace Perspex.Styling.UnitTests
Assert.Equal(1, inputs[2].SubscriberCount);
}
[Fact]
public void Activator_And_Should_Complete_When_Input_Completes_On_False()
{
var inputs = new[]
{
new TestSubject<bool>(false),
new TestSubject<bool>(false),
new TestSubject<bool>(true),
};
var target = StyleActivator.And(inputs);
var result = new TestObserver<bool>();
var completed = false;
target.Subscribe(_ => { }, () => completed = true);
inputs[0].OnNext(false);
inputs[0].OnCompleted();
Assert.True(completed);
}
[Fact]
public void Activator_Or_Should_Follow_Single_Input()
{

Loading…
Cancel
Save