diff --git a/src/Avalonia.Controls/MenuItem.cs b/src/Avalonia.Controls/MenuItem.cs index 955af8888b..ed3526cc68 100644 --- a/src/Avalonia.Controls/MenuItem.cs +++ b/src/Avalonia.Controls/MenuItem.cs @@ -433,7 +433,14 @@ namespace Avalonia.Controls /// protected override void OnKeyDown(KeyEventArgs e) { - // Don't handle here: let event bubble up to menu. + // HACK: Fix for #7777 - Menu keyboard focus incorrect when handling menu mnemonics. + // If we implement something like UWP's access key scopes then this code should be removed. + if (IsSubMenuOpen && + _popup?.Host is IInputRoot popupRoot && + popupRoot.AccessKeyHandler is MenuItemAccessKeyHandler handler) + { + handler.OnTextInput(this, new TextInputEventArgs { Text = e.Key.ToString() }); + } } /// diff --git a/src/Avalonia.Controls/MenuItemAccessKeyHandler.cs b/src/Avalonia.Controls/MenuItemAccessKeyHandler.cs index 4cc6a20082..964daa23fe 100644 --- a/src/Avalonia.Controls/MenuItemAccessKeyHandler.cs +++ b/src/Avalonia.Controls/MenuItemAccessKeyHandler.cs @@ -84,7 +84,7 @@ namespace Avalonia.Controls /// /// The event sender. /// The event args. - protected virtual void OnTextInput(object? sender, TextInputEventArgs e) + protected internal virtual void OnTextInput(object? sender, TextInputEventArgs e) { if (!string.IsNullOrWhiteSpace(e.Text)) {