Browse Source

Merge branch 'master' into fixes/2680-path-geometry-invalidation

pull/3757/head
Dariusz Komosiński 6 years ago
committed by GitHub
parent
commit
ebcc25ed40
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 14
      src/Avalonia.Input/FocusManager.cs
  2. 6
      src/Avalonia.Input/IFocusManager.cs
  3. 2
      src/Avalonia.Input/IKeyboardDevice.cs
  4. 6
      src/Avalonia.Input/IKeyboardNavigationHandler.cs
  5. 4
      src/Avalonia.Input/KeyboardDevice.cs
  6. 8
      src/Avalonia.Input/KeyboardNavigationHandler.cs
  7. 2
      src/Windows/Avalonia.Win32.Interop/WinForms/WinFormsAvaloniaControlHost.cs
  8. 2
      src/Windows/Avalonia.Win32/Input/WindowsKeyboardDevice.cs
  9. 4
      tests/Avalonia.Input.UnitTests/KeyboardDeviceTests.cs

14
src/Avalonia.Input/FocusManager.cs

@ -53,11 +53,11 @@ namespace Avalonia.Input
/// </summary>
/// <param name="control">The control to focus.</param>
/// <param name="method">The method by which focus was changed.</param>
/// <param name="modifiers">Any input modifiers active at the time of focus.</param>
/// <param name="keyModifiers">Any key modifiers active at the time of focus.</param>
public void Focus(
IInputElement control,
NavigationMethod method = NavigationMethod.Unspecified,
InputModifiers modifiers = InputModifiers.None)
KeyModifiers keyModifiers = KeyModifiers.None)
{
if (control != null)
{
@ -67,7 +67,7 @@ namespace Avalonia.Input
if (scope != null)
{
Scope = scope;
SetFocusedElement(scope, control, method, modifiers);
SetFocusedElement(scope, control, method, keyModifiers);
}
}
else if (Current != null)
@ -95,7 +95,7 @@ namespace Avalonia.Input
/// <param name="scope">The focus scope.</param>
/// <param name="element">The element to focus. May be null.</param>
/// <param name="method">The method by which focus was changed.</param>
/// <param name="modifiers">Any input modifiers active at the time of focus.</param>
/// <param name="keyModifiers">Any key modifiers active at the time of focus.</param>
/// <remarks>
/// If the specified scope is the current <see cref="Scope"/> then the keyboard focus
/// will change.
@ -104,7 +104,7 @@ namespace Avalonia.Input
IFocusScope scope,
IInputElement element,
NavigationMethod method = NavigationMethod.Unspecified,
InputModifiers modifiers = InputModifiers.None)
KeyModifiers keyModifiers = KeyModifiers.None)
{
Contract.Requires<ArgumentNullException>(scope != null);
@ -123,7 +123,7 @@ namespace Avalonia.Input
if (Scope == scope)
{
KeyboardDevice.Instance?.SetFocusedElement(element, method, modifiers);
KeyboardDevice.Instance?.SetFocusedElement(element, method, keyModifiers);
}
}
@ -195,7 +195,7 @@ namespace Avalonia.Input
{
if (element is IInputElement inputElement && CanFocus(inputElement))
{
Instance?.Focus(inputElement, NavigationMethod.Pointer, ev.InputModifiers);
Instance?.Focus(inputElement, NavigationMethod.Pointer, ev.KeyModifiers);
break;
}

6
src/Avalonia.Input/IFocusManager.cs

@ -20,11 +20,11 @@ namespace Avalonia.Input
/// </summary>
/// <param name="control">The control to focus.</param>
/// <param name="method">The method by which focus was changed.</param>
/// <param name="modifiers">Any input modifiers active at the time of focus.</param>
/// <param name="keyModifiers">Any key modifiers active at the time of focus.</param>
void Focus(
IInputElement control,
IInputElement control,
NavigationMethod method = NavigationMethod.Unspecified,
InputModifiers modifiers = InputModifiers.None);
KeyModifiers keyModifiers = KeyModifiers.None);
/// <summary>
/// Notifies the focus manager of a change in focus scope.

2
src/Avalonia.Input/IKeyboardDevice.cs

@ -63,6 +63,6 @@ namespace Avalonia.Input
void SetFocusedElement(
IInputElement element,
NavigationMethod method,
InputModifiers modifiers);
KeyModifiers modifiers);
}
}

6
src/Avalonia.Input/IKeyboardNavigationHandler.cs

@ -19,10 +19,10 @@ namespace Avalonia.Input
/// </summary>
/// <param name="element">The current element.</param>
/// <param name="direction">The direction to move.</param>
/// <param name="modifiers">Any input modifiers active at the time of focus.</param>
/// <param name="keyModifiers">Any key modifiers active at the time of focus.</param>
void Move(
IInputElement element,
NavigationDirection direction,
InputModifiers modifiers = InputModifiers.None);
KeyModifiers keyModifiers = KeyModifiers.None);
}
}
}

4
src/Avalonia.Input/KeyboardDevice.cs

@ -35,7 +35,7 @@ namespace Avalonia.Input
public void SetFocusedElement(
IInputElement element,
NavigationMethod method,
InputModifiers modifiers)
KeyModifiers keyModifiers)
{
if (element != FocusedElement)
{
@ -53,7 +53,7 @@ namespace Avalonia.Input
{
RoutedEvent = InputElement.GotFocusEvent,
NavigationMethod = method,
InputModifiers = modifiers,
KeyModifiers = keyModifiers,
});
}
}

8
src/Avalonia.Input/KeyboardNavigationHandler.cs

@ -91,11 +91,11 @@ namespace Avalonia.Input
/// </summary>
/// <param name="element">The current element.</param>
/// <param name="direction">The direction to move.</param>
/// <param name="modifiers">Any input modifiers active at the time of focus.</param>
/// <param name="keyModifiers">Any key modifiers active at the time of focus.</param>
public void Move(
IInputElement element,
NavigationDirection direction,
InputModifiers modifiers = InputModifiers.None)
KeyModifiers keyModifiers = KeyModifiers.None)
{
Contract.Requires<ArgumentNullException>(element != null);
@ -106,7 +106,7 @@ namespace Avalonia.Input
var method = direction == NavigationDirection.Next ||
direction == NavigationDirection.Previous ?
NavigationMethod.Tab : NavigationMethod.Directional;
FocusManager.Instance.Focus(next, method, modifiers);
FocusManager.Instance.Focus(next, method, keyModifiers);
}
}
@ -123,7 +123,7 @@ namespace Avalonia.Input
{
var direction = (e.KeyModifiers & KeyModifiers.Shift) == 0 ?
NavigationDirection.Next : NavigationDirection.Previous;
Move(current, direction, e.Modifiers);
Move(current, direction, e.KeyModifiers);
e.Handled = true;
}
}

2
src/Windows/Avalonia.Win32.Interop/WinForms/WinFormsAvaloniaControlHost.cs

@ -45,7 +45,7 @@ namespace Avalonia.Win32.Embedding
focused = focused.VisualParent;
if (focused == _root)
KeyboardDevice.Instance.SetFocusedElement(null, NavigationMethod.Unspecified, InputModifiers.None);
KeyboardDevice.Instance.SetFocusedElement(null, NavigationMethod.Unspecified, KeyModifiers.None);
}
private void PlatformImpl_LostFocus()

2
src/Windows/Avalonia.Win32/Input/WindowsKeyboardDevice.cs

@ -44,7 +44,7 @@ namespace Avalonia.Win32.Input
public void WindowActivated(Window window)
{
SetFocusedElement(window, NavigationMethod.Unspecified, InputModifiers.None);
SetFocusedElement(window, NavigationMethod.Unspecified, KeyModifiers.None);
}
public string StringFromVirtualKey(uint virtualKey)

4
tests/Avalonia.Input.UnitTests/KeyboardDeviceTests.cs

@ -35,7 +35,7 @@ namespace Avalonia.Input.UnitTests
target.SetFocusedElement(
focused.Object,
NavigationMethod.Unspecified,
InputModifiers.None);
KeyModifiers.None);
target.ProcessRawEvent(
new RawKeyEventArgs(
@ -75,7 +75,7 @@ namespace Avalonia.Input.UnitTests
target.SetFocusedElement(
focused.Object,
NavigationMethod.Unspecified,
InputModifiers.None);
KeyModifiers.None);
target.ProcessRawEvent(
new RawTextInputEventArgs(

Loading…
Cancel
Save