diff options
author | Jim Raykowski <raykowj@gmail.com> | 2019-12-25 22:47:16 -0900 |
---|---|---|
committer | Jim Raykowski <raykowj@gmail.com> | 2020-01-06 09:05:06 +0100 |
commit | 706be217a77d5951f02b486b8a57f20b1d061fe2 (patch) | |
tree | b71b7cae25f552806ceb0b09b97ef886af773fcc /vcl/source | |
parent | 7a98ab1fa6b3f3de2c7077c1d2601f7bc12be2d7 (diff) |
Display menu item keyboard shortcuts in toolbar menu
Change-Id: I288d4850f9a8e9ac51dfefddff7a2a7d359178c3
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/85832
Tested-by: Jenkins
Reviewed-by: Ilmari Lauhakangas <ilmari.lauhakangas@libreoffice.org>
Reviewed-by: Jim Raykowski <raykowj@gmail.com>
Diffstat (limited to 'vcl/source')
-rw-r--r-- | vcl/source/helper/commandinfoprovider.cxx | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/vcl/source/helper/commandinfoprovider.cxx b/vcl/source/helper/commandinfoprovider.cxx index 234a73eb2949..075fd4e7ced1 100644 --- a/vcl/source/helper/commandinfoprovider.cxx +++ b/vcl/source/helper/commandinfoprovider.cxx @@ -158,6 +158,33 @@ static OUString RetrieveShortcutsFromConfiguration( return OUString(); } +static vcl::KeyCode RetrieveKeyCodeShortcutsFromConfiguration( + const Reference<ui::XAcceleratorConfiguration>& rxConfiguration, + const OUString& rsCommandName) +{ + if (rxConfiguration.is()) + { + try + { + Sequence<OUString> aCommands { rsCommandName }; + + Sequence<Any> aKeyCodes (rxConfiguration->getPreferredKeyEventsForCommandList(aCommands)); + if (aCommands.getLength() == 1) + { + awt::KeyEvent aKeyEvent; + if (aKeyCodes[0] >>= aKeyEvent) + { + return AWTKey2VCLKey(aKeyEvent); + } + } + } + catch (css::lang::IllegalArgumentException&) + { + } + } + return vcl::KeyCode(); +} + static bool ResourceHasKey(const OUString& rsResourceName, const OUString& rsCommandName, const OUString& rsModuleName) { Sequence< OUString > aSequence; @@ -278,6 +305,25 @@ OUString GetCommandShortcut (const OUString& rsCommandName, return OUString(); } +vcl::KeyCode GetCommandKeyCodeShortcut (const OUString& rsCommandName, const Reference<frame::XFrame>& rxFrame) +{ + vcl::KeyCode aKeyCodeShortcut; + + aKeyCodeShortcut = RetrieveKeyCodeShortcutsFromConfiguration(GetDocumentAcceleratorConfiguration(rxFrame), rsCommandName); + if (aKeyCodeShortcut.GetCode()) + return aKeyCodeShortcut; + + aKeyCodeShortcut = RetrieveKeyCodeShortcutsFromConfiguration(GetModuleAcceleratorConfiguration(rxFrame), rsCommandName); + if (aKeyCodeShortcut.GetCode()) + return aKeyCodeShortcut; + + aKeyCodeShortcut = RetrieveKeyCodeShortcutsFromConfiguration(GetGlobalAcceleratorConfiguration(), rsCommandName); + if (aKeyCodeShortcut.GetCode()) + return aKeyCodeShortcut; + + return vcl::KeyCode(); +} + OUString GetRealCommandForCommand(const css::uno::Sequence<css::beans::PropertyValue>& rProperties) { return GetCommandProperty("TargetURL", rProperties); |