Browse Source

DataGrid - handle OSX key modifiers (ctrl vs cmd)

pull/7321/head
Lubomir Tetak 5 years ago
parent
commit
0cd4b90bc7
  1. 2
      src/Avalonia.Controls.DataGrid/DataGridColumn.cs
  2. 21
      src/Avalonia.Controls.DataGrid/Utils/KeyboardHelper.cs

2
src/Avalonia.Controls.DataGrid/DataGridColumn.cs

@ -680,7 +680,7 @@ namespace Avalonia.Controls
public void ClearSort() public void ClearSort()
{ {
//InvokeProcessSort is already validating if sorting is possible //InvokeProcessSort is already validating if sorting is possible
_headerCell?.InvokeProcessSort(Input.KeyModifiers.Control); _headerCell?.InvokeProcessSort(KeyboardHelper.GetPlatformCtrlOrCmdKeyModifier());
} }
/// <summary> /// <summary>

21
src/Avalonia.Controls.DataGrid/Utils/KeyboardHelper.cs

@ -4,22 +4,29 @@
// All other rights reserved. // All other rights reserved.
using Avalonia.Input; using Avalonia.Input;
using Avalonia.Input.Platform;
namespace Avalonia.Controls.Utils namespace Avalonia.Controls.Utils
{ {
internal static class KeyboardHelper internal static class KeyboardHelper
{ {
public static void GetMetaKeyState(KeyModifiers modifiers, out bool ctrl, out bool shift) public static void GetMetaKeyState(KeyModifiers modifiers, out bool ctrlOrCmd, out bool shift)
{ {
ctrl = (modifiers & KeyModifiers.Control) == KeyModifiers.Control; ctrlOrCmd = modifiers.HasFlag(GetPlatformCtrlOrCmdKeyModifier());
shift = (modifiers & KeyModifiers.Shift) == KeyModifiers.Shift; shift = modifiers.HasFlag(KeyModifiers.Shift);
} }
public static void GetMetaKeyState(KeyModifiers modifiers, out bool ctrl, out bool shift, out bool alt) public static void GetMetaKeyState(KeyModifiers modifiers, out bool ctrlOrCmd, out bool shift, out bool alt)
{ {
ctrl = (modifiers & KeyModifiers.Control) == KeyModifiers.Control; ctrlOrCmd = modifiers.HasFlag(GetPlatformCtrlOrCmdKeyModifier());
shift = (modifiers & KeyModifiers.Shift) == KeyModifiers.Shift; shift = modifiers.HasFlag(KeyModifiers.Shift);
alt = (modifiers & KeyModifiers.Alt) == KeyModifiers.Alt; alt = modifiers.HasFlag(KeyModifiers.Alt);
}
public static KeyModifiers GetPlatformCtrlOrCmdKeyModifier()
{
var keymap = AvaloniaLocator.Current.GetService<PlatformHotkeyConfiguration>();
return keymap?.CommandModifiers ?? KeyModifiers.Control;
} }
} }
} }

Loading…
Cancel
Save