Browse Source

Fix nested :not selector.

pull/8262/head
Steven Kirk 4 years ago
parent
commit
d215a1edc7
  1. 2
      src/Avalonia.Base/Styling/NotSelector.cs
  2. 24
      tests/Avalonia.Base.UnitTests/Styling/SelectorTests_Nesting.cs

2
src/Avalonia.Base/Styling/NotSelector.cs

@ -67,6 +67,6 @@ namespace Avalonia.Styling
} }
protected override Selector? MovePrevious() => _previous; protected override Selector? MovePrevious() => _previous;
internal override bool HasValidNestingSelector() => _argument.HasValidNestingSelector(); internal override bool HasValidNestingSelector() => _previous?.HasValidNestingSelector() ?? false;
} }
} }

24
tests/Avalonia.Base.UnitTests/Styling/SelectorTests_Nesting.cs

@ -257,6 +257,30 @@ namespace Avalonia.Base.UnitTests.Styling
parent.Children.Add(child); parent.Children.Add(child);
} }
[Fact]
public void Nesting_Not_Class_Matches()
{
var control = new Control1 { Classes = { "foo" } };
Style nested;
var parent = new Style(x => x.OfType<Control1>())
{
Children =
{
(nested = new Style(x => x.Nesting().Not(y => y.Class("foo")))),
}
};
var match = nested.Selector.Match(control, parent);
Assert.Equal(SelectorMatchResult.Sometimes, match.Result);
var sink = new ActivatorSink(match.Activator);
Assert.False(sink.Active);
control.Classes.Clear();
Assert.True(sink.Active);
}
public class Control1 : Control public class Control1 : Control
{ {
} }

Loading…
Cancel
Save