Tweak AccessKeyHandler

This commit is contained in:
Mbucari 2023-03-31 11:59:48 -06:00
parent 40c725b8c2
commit 7e1ec47b46

View File

@ -11,26 +11,21 @@ namespace LibationAvalonia
public AccessKeyHandlerEx(KeyModifiers menuKeyModifier) public AccessKeyHandlerEx(KeyModifiers menuKeyModifier)
{ {
KeyModifier = menuKeyModifier; KeyModifier = menuKeyModifier;
ActivatorKeys = menuKeyModifier switch ActivatorKeys = menuKeyModifier switch
{ {
KeyModifiers.Alt => new[] { Key.LeftAlt, Key.RightAlt }, KeyModifiers.Alt => new[] { Key.LeftAlt, Key.RightAlt },
KeyModifiers.Control => new[] { Key.LeftCtrl, Key.RightCtrl }, KeyModifiers.Control => new[] { Key.LeftCtrl, Key.RightCtrl },
KeyModifiers.Meta => new[] { Key.LWin, Key.RWin }, KeyModifiers.Meta => new[] { Key.LWin, Key.RWin },
_ => throw new System.NotSupportedException($"{nameof(KeyModifiers)}.{menuKeyModifier} is not implemented"), _ => throw new System.NotSupportedException($"{nameof(KeyModifiers)}.{menuKeyModifier} is not implemented"),
}; };
} }
protected override void OnPreviewKeyDown(object sender, KeyEventArgs e) protected override void OnPreviewKeyDown(object sender, KeyEventArgs e)
{ {
if (ActivatorKeys.Contains(e.Key)) if (ActivatorKeys.Contains(e.Key) && e.KeyModifiers.HasAllFlags(KeyModifier))
{ {
var newArgs = new KeyEventArgs var newArgs = new KeyEventArgs { Key = Key.LeftAlt, Handled = e.Handled };
{
Key = Key.LeftAlt,
Handled = e.Handled,
KeyModifiers = e.KeyModifiers,
};
base.OnPreviewKeyDown(sender, newArgs); base.OnPreviewKeyDown(sender, newArgs);
e.Handled = newArgs.Handled; e.Handled = newArgs.Handled;
} }
@ -38,14 +33,9 @@ namespace LibationAvalonia
protected override void OnPreviewKeyUp(object sender, KeyEventArgs e) protected override void OnPreviewKeyUp(object sender, KeyEventArgs e)
{ {
if (ActivatorKeys.Contains(e.Key)) if (ActivatorKeys.Contains(e.Key) && e.KeyModifiers.HasAllFlags(KeyModifier))
{ {
var newArgs = new KeyEventArgs() var newArgs = new KeyEventArgs { Key = Key.LeftAlt, Handled = e.Handled };
{
Key = Key.LeftAlt,
Handled = e.Handled,
KeyModifiers = e.KeyModifiers,
};
base.OnPreviewKeyUp(sender, newArgs); base.OnPreviewKeyUp(sender, newArgs);
e.Handled = newArgs.Handled; e.Handled = newArgs.Handled;
} }
@ -55,12 +45,7 @@ namespace LibationAvalonia
{ {
if (e.KeyModifiers.HasAllFlags(KeyModifier)) if (e.KeyModifiers.HasAllFlags(KeyModifier))
{ {
var newArgs = new KeyEventArgs var newArgs = new KeyEventArgs { Key = e.Key, Handled = e.Handled, KeyModifiers = KeyModifiers.Alt };
{
Key = e.Key,
Handled = e.Handled,
KeyModifiers = KeyModifiers.Alt,
};
base.OnKeyDown(sender, newArgs); base.OnKeyDown(sender, newArgs);
e.Handled = newArgs.Handled; e.Handled = newArgs.Handled;
} }