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;
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);
}
[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
{
}

Loading…
Cancel
Save