summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSzymon Kłos <szymon.klos@collabora.com>2021-11-10 11:33:03 +0100
committerAndras Timar <andras.timar@collabora.com>2021-11-11 10:45:44 +0100
commit5b868d0d2d8fe9b327f30083d83a8fba573c510e (patch)
treeaf5248a36b56d23c69f265fa21635fd0b935c835
parentc72e500ccaf0ce2261c5233b80fba9342778f810 (diff)
Handle UNO command aliases in ToolBoxes
This allows to use ".uno:InsertSlide" which is an alias for ".uno:InsertPage" in the notebookbar. Change-Id: Ia52488b65e308a62b686e77b38cba3675deece73 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/124952 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com> Reviewed-by: Andras Timar <andras.timar@collabora.com>
-rw-r--r--framework/source/uielement/generictoolbarcontroller.cxx8
-rw-r--r--svtools/source/uno/toolboxcontroller.cxx25
2 files changed, 32 insertions, 1 deletions
diff --git a/framework/source/uielement/generictoolbarcontroller.cxx b/framework/source/uielement/generictoolbarcontroller.cxx
index 31c22d03bbb1..9b9c23a73ffd 100644
--- a/framework/source/uielement/generictoolbarcontroller.cxx
+++ b/framework/source/uielement/generictoolbarcontroller.cxx
@@ -26,6 +26,7 @@
#include <com/sun/star/frame/status/Visibility.hpp>
#include <com/sun/star/frame/ControlCommand.hpp>
+#include <vcl/commandinfoprovider.hxx>
#include <vcl/svapp.hxx>
#include <vcl/toolbox.hxx>
#include <vcl/weld.hxx>
@@ -156,7 +157,12 @@ void SAL_CALL GenericToolbarController::execute( sal_Int16 KeyModifier )
aArgs[0].Name = "KeyModifier";
aArgs[0].Value <<= KeyModifier;
- aTargetURL.Complete = aCommandURL;
+ // handle also command aliases
+ auto aProperties = vcl::CommandInfoProvider::GetCommandProperties(m_aCommandURL,
+ vcl::CommandInfoProvider::GetModuleIdentifier(m_xFrame));
+ OUString sRealCommand = vcl::CommandInfoProvider::GetRealCommandForCommand(aProperties);
+
+ aTargetURL.Complete = sRealCommand.isEmpty() ? aCommandURL : sRealCommand;
if ( m_xUrlTransformer.is() )
m_xUrlTransformer->parseStrict( aTargetURL );
diff --git a/svtools/source/uno/toolboxcontroller.cxx b/svtools/source/uno/toolboxcontroller.cxx
index b8c9ba9b4a0d..d38ba52feabd 100644
--- a/svtools/source/uno/toolboxcontroller.cxx
+++ b/svtools/source/uno/toolboxcontroller.cxx
@@ -26,6 +26,7 @@
#include <com/sun/star/lang/XMultiServiceFactory.hpp>
#include <com/sun/star/frame/XLayoutManager.hpp>
#include <com/sun/star/util/URLTransformer.hpp>
+#include <vcl/commandinfoprovider.hxx>
#include <vcl/svapp.hxx>
#include <toolkit/helper/vclunohelper.hxx>
#include <vcl/toolbox.hxx>
@@ -517,6 +518,30 @@ void ToolboxController::bindListener()
catch ( Exception& )
{
}
+
+ // it may be a command alias
+ if (!xDispatch.is())
+ {
+ try
+ {
+ auto aProperties = vcl::CommandInfoProvider::GetCommandProperties(listener.first,
+ vcl::CommandInfoProvider::GetModuleIdentifier(m_xFrame));
+ OUString sRealCommand = vcl::CommandInfoProvider::GetRealCommandForCommand(aProperties);
+
+ if (!sRealCommand.isEmpty())
+ {
+ aTargetURL.Complete = sRealCommand;
+ if ( m_xUrlTransformer.is() )
+ m_xUrlTransformer->parseStrict( aTargetURL );
+
+ xDispatch = xDispatchProvider->queryDispatch( aTargetURL, OUString(), 0 );
+ }
+ }
+ catch ( Exception& )
+ {
+ }
+ }
+
listener.second = xDispatch;
Listener aListener( aTargetURL, xDispatch );