Fixes and improves several access key (accelerator) related issues (#17292)

* fix accelerator behavior for menu items and labels

* add elements with matching accelerator to test cycling in sub menus

* Add AccessKeyHandler tests for accelerators with more than one match

* Implement accelerator behavior based on WPF handling

* Remove commented code

* Remove OnAccessKey override => handled by DefaultMenuInteractionHandler

* remove obsolete test

* handle OnAccessKeyPressed for selected tab item

* fix unit tests

* use AccessKeyEvent instead of AccessKeyPressedEvent in unit tests

* navigate menu with and without ALT key

* Revert formatting changes in Tests

* Fix AccessKeyHandler comments

* move private types to bottom

* Remove lock statements, optimize removal of AccessKeyRegistrations

* remove call to Dispatcher.UIThread.Post

* simplifiy AccessKeyHandler.SortByHierarchy

* remove unnecessary method AccessKeyHandler.GetTargetsForSender

* regenerate API suppression file

* revert unneeded changes in MenuPage.axaml

* correct formatting changes

* do not sort by hierarchy if too few targets

* make AccessKeyEventArgs internal

* make AccessKeyPressedEventArgs internal

---------

Co-authored-by: Hans Docsek <hans.docsek@gmail.com>
This commit is contained in:
StefanKoell
2024-11-10 11:27:07 +01:00
committed by GitHub
parent 57b4be4b73
commit b46126714b
18 changed files with 728 additions and 210 deletions
+6
View File
@@ -91,4 +91,10 @@
<Left>baseline/netstandard2.0/Avalonia.Controls.dll</Left>
<Right>target/netstandard2.0/Avalonia.Controls.dll</Right>
</Suppression>
<Suppression>
<DiagnosticId>CP0012</DiagnosticId>
<Target>M:Avalonia.Controls.Button.OnAccessKey(Avalonia.Interactivity.RoutedEventArgs)</Target>
<Left>baseline/netstandard2.0/Avalonia.Controls.dll</Left>
<Right>target/netstandard2.0/Avalonia.Controls.dll</Right>
</Suppression>
</Suppressions>