Browse Source

Merge pull request #5492 from AvaloniaUI/fixes/4906-clear-focus

Fix clearing focus.
pull/5507/head
Dan Walmsley 6 years ago
committed by GitHub
parent
commit
21256bb4df
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 4
      src/Avalonia.Input/FocusManager.cs
  2. 19
      tests/Avalonia.Input.UnitTests/InputElement_Focus.cs

4
src/Avalonia.Input/FocusManager.cs

@ -75,7 +75,9 @@ namespace Avalonia.Input
// If control is null, set focus to the topmost focus scope.
foreach (var scope in GetFocusScopeAncestors(Current).Reverse().ToList())
{
if (_focusScopes.TryGetValue(scope, out var element) && element != null)
if (scope != Scope &&
_focusScopes.TryGetValue(scope, out var element) &&
element != null)
{
Focus(element, method);
return;

19
tests/Avalonia.Input.UnitTests/InputElement_Focus.cs

@ -318,5 +318,24 @@ namespace Avalonia.Input.UnitTests
Assert.True(root2.IsKeyboardFocusWithin);
}
}
[Fact]
public void Can_Clear_Focus()
{
Button target;
using (UnitTestApplication.Start(TestServices.RealFocus))
{
var root = new TestRoot
{
Child = target = new Button()
};
target.Focus();
FocusManager.Instance.Focus(null);
Assert.Null(FocusManager.Instance.Current);
}
}
}
}

Loading…
Cancel
Save