Browse Source

Further simplify StyleActivator.

The clever stuff was causing styles to fail and probably isn't needed
anyhow. Fixes #371.
Steven Kirk 10 years ago
parent
commit
1eb0fbb385

+ 3 - 11
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)

+ 0 - 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()
         {