|
|
@ -77,13 +77,16 @@ namespace Avalonia.Input |
|
|
/// <param name="direction">The direction to move.</param>
|
|
|
/// <param name="direction">The direction to move.</param>
|
|
|
/// <param name="keyModifiers">Any key modifiers active at the time of focus.</param>
|
|
|
/// <param name="keyModifiers">Any key modifiers active at the time of focus.</param>
|
|
|
public void Move( |
|
|
public void Move( |
|
|
IInputElement element, |
|
|
IInputElement? element, |
|
|
NavigationDirection direction, |
|
|
NavigationDirection direction, |
|
|
KeyModifiers keyModifiers = KeyModifiers.None) |
|
|
KeyModifiers keyModifiers = KeyModifiers.None) |
|
|
{ |
|
|
{ |
|
|
element = element ?? throw new ArgumentNullException(nameof(element)); |
|
|
if (element is null && _owner is null) |
|
|
|
|
|
{ |
|
|
|
|
|
return; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
var next = GetNext(element, direction); |
|
|
var next = GetNext(element ?? _owner!, direction); |
|
|
|
|
|
|
|
|
if (next != null) |
|
|
if (next != null) |
|
|
{ |
|
|
{ |
|
|
@ -101,10 +104,9 @@ namespace Avalonia.Input |
|
|
/// <param name="e">The event args.</param>
|
|
|
/// <param name="e">The event args.</param>
|
|
|
protected virtual void OnKeyDown(object? sender, KeyEventArgs e) |
|
|
protected virtual void OnKeyDown(object? sender, KeyEventArgs e) |
|
|
{ |
|
|
{ |
|
|
var current = FocusManager.GetFocusManager(e.Source as IInputElement)?.GetFocusedElement(); |
|
|
if (e.Key == Key.Tab) |
|
|
|
|
|
|
|
|
if (current != null && e.Key == Key.Tab) |
|
|
|
|
|
{ |
|
|
{ |
|
|
|
|
|
var current = FocusManager.GetFocusManager(e.Source as IInputElement)?.GetFocusedElement(); |
|
|
var direction = (e.KeyModifiers & KeyModifiers.Shift) == 0 ? |
|
|
var direction = (e.KeyModifiers & KeyModifiers.Shift) == 0 ? |
|
|
NavigationDirection.Next : NavigationDirection.Previous; |
|
|
NavigationDirection.Next : NavigationDirection.Previous; |
|
|
Move(current, direction, e.KeyModifiers); |
|
|
Move(current, direction, e.KeyModifiers); |
|
|
|