Tweak AccessKeyHandler
This commit is contained in:
parent
40c725b8c2
commit
7e1ec47b46
@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user