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
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with
22 additions and
1 deletions
-
src/Avalonia.Input/FocusManager.cs
-
tests/Avalonia.Input.UnitTests/InputElement_Focus.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; |
|
|
|
|
|
|
|
@ -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); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|