summaryrefslogtreecommitdiff
path: root/sfx2/source/control/statcach.cxx
diff options
context:
space:
mode:
authorJuergen Funk <juergen.funk_ml@cib.de>2016-05-13 10:42:17 +0200
committerThorsten Behrens <Thorsten.Behrens@CIB.de>2016-06-08 02:16:54 +0000
commitf9bb13419549d621ffd55d9d81e0732a89560e2e (patch)
treef3f8a64fd254c5e466b466c12d0e627472ce7868 /sfx2/source/control/statcach.cxx
parent439b47e84bb12ec1c5cc2332b4c6a9ea59f462ad (diff)
tdf#99815 use XNotifyingDispatch in sfx2
- move DispatchHelper somewhere public - use it from generic dispatcher call sites in sfx2 - return result of dispatcher calls (conveyed via XDispatchResultListener) to calling code, instead of faking it Change-Id: Ie8041133e99dd99e45819f98798829b96532b9e6 Reviewed-on: https://gerrit.libreoffice.org/24953 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Thorsten Behrens <Thorsten.Behrens@CIB.de>
Diffstat (limited to 'sfx2/source/control/statcach.cxx')
-rw-r--r--sfx2/source/control/statcach.cxx30
1 files changed, 21 insertions, 9 deletions
diff --git a/sfx2/source/control/statcach.cxx b/sfx2/source/control/statcach.cxx
index d5165c43db6e..4721b05c1b4d 100644
--- a/sfx2/source/control/statcach.cxx
+++ b/sfx2/source/control/statcach.cxx
@@ -30,6 +30,8 @@
#include <com/sun/star/frame/XFrame.hpp>
#include <com/sun/star/frame/FrameActionEvent.hpp>
#include <com/sun/star/frame/FrameAction.hpp>
+#include <framework/dispatchhelper.hxx>
+#include <com/sun/star/frame/DispatchResultState.hpp>
#include <com/sun/star/beans/PropertyValue.hpp>
#include <cppuhelper/weak.hxx>
#include <svl/eitem.hxx>
@@ -162,17 +164,22 @@ void BindDispatch_Impl::Release()
}
-void BindDispatch_Impl::Dispatch( const uno::Sequence < beans::PropertyValue >& aProps, bool bForceSynchron )
+sal_Int16 BindDispatch_Impl::Dispatch( const css::uno::Sequence < css::beans::PropertyValue >& aProps, bool bForceSynchron )
{
+ sal_Int16 eRet = css::frame::DispatchResultState::DONTKNOW;
+
if ( xDisp.is() && aStatus.IsEnabled )
{
- sal_Int32 nLength = aProps.getLength();
- uno::Sequence < beans::PropertyValue > aProps2 = aProps;
- aProps2.realloc(nLength+1);
- aProps2[nLength].Name = "SynchronMode";
- aProps2[nLength].Value <<= bForceSynchron ;
- xDisp->dispatch( aURL, aProps2 );
+ ::rtl::Reference< ::framework::DispatchHelper > xHelper( new ::framework::DispatchHelper(nullptr));
+ css::uno::Any aResult = xHelper->executeDispatch(xDisp, aURL, bForceSynchron, aProps);
+
+ css::frame::DispatchResultEvent aEvent;
+ aResult >>= aEvent;
+
+ eRet = aEvent.State;
}
+
+ return eRet;
}
@@ -479,17 +486,22 @@ css::uno::Reference< css::frame::XDispatch > SfxStateCache::GetDispatch() const
return css::uno::Reference< css::frame::XDispatch > ();
}
-void SfxStateCache::Dispatch( const SfxItemSet* pSet, bool bForceSynchron )
+sal_Int16 SfxStateCache::Dispatch( const SfxItemSet* pSet, bool bForceSynchron )
{
// protect pDispatch against destruction in the call
css::uno::Reference < css::frame::XStatusListener > xKeepAlive( pDispatch );
+ sal_Int16 eRet = css::frame::DispatchResultState::DONTKNOW;
+
if ( pDispatch )
{
uno::Sequence < beans::PropertyValue > aArgs;
if (pSet)
TransformItems( nId, *pSet, aArgs );
- pDispatch->Dispatch( aArgs, bForceSynchron );
+
+ eRet = pDispatch->Dispatch( aArgs, bForceSynchron );
}
+
+ return eRet;
}