summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThorsten Behrens <Thorsten.Behrens@CIB.de>2018-03-13 14:24:03 +0100
committerThorsten Behrens <Thorsten.Behrens@CIB.de>2018-03-13 14:24:03 +0100
commit8485fec269179cd0f19ddb46c13d823cab7d5c8b (patch)
tree427b38d467bb0f2968ea7c052ff30ba9bce0987d
parent08be86ed504a19510a811309156da858d882b5d4 (diff)
Revert "tdf#96949 Remove global m_bPreferrFirstInterceptor"
This reverts commit 5d4f1f6f630d4382679087a4fb0da364c9c9692b. Change-Id: Iad47f0658900e9f548f83314976ac67cb4b20828
-rw-r--r--framework/inc/dispatch/interceptionhelper.hxx4
-rw-r--r--framework/source/dispatch/interceptionhelper.cxx19
2 files changed, 22 insertions, 1 deletions
diff --git a/framework/inc/dispatch/interceptionhelper.hxx b/framework/inc/dispatch/interceptionhelper.hxx
index 7462303abb1f..ee6ae9db1b97 100644
--- a/framework/inc/dispatch/interceptionhelper.hxx
+++ b/framework/inc/dispatch/interceptionhelper.hxx
@@ -142,6 +142,10 @@ class InterceptionHelper : public ::cppu::WeakImplHelper<
/** @short contains all registered interceptor objects. */
InterceptorList m_lInterceptionRegs;
+ /** @short it regulates, which interceptor is used first.
+ The last or the first registered one. */
+ static bool m_bPreferrFirstInterceptor;
+
// native interface
public:
diff --git a/framework/source/dispatch/interceptionhelper.cxx b/framework/source/dispatch/interceptionhelper.cxx
index f3736dee80e5..9d4f6da03631 100644
--- a/framework/source/dispatch/interceptionhelper.cxx
+++ b/framework/source/dispatch/interceptionhelper.cxx
@@ -25,6 +25,8 @@
namespace framework{
+bool InterceptionHelper::m_bPreferrFirstInterceptor = true;
+
InterceptionHelper::InterceptionHelper(const css::uno::Reference< css::frame::XFrame >& xOwner,
const css::uno::Reference< css::frame::XDispatchProvider >& xSlave)
: m_xOwnerWeak (xOwner )
@@ -138,7 +140,22 @@ void SAL_CALL InterceptionHelper::registerDispatchProviderInterceptor(const css:
// It's slave and it's master must be valid references ...
// because we created it.
- // insert it before any other existing interceptor - means at the beginning of our list.
+ // b1) If "m_bPreferrFirstInterceptor" is set to true, we have to
+ // insert it behind any other existing interceptor - means at the end of our list.
+ else if (m_bPreferrFirstInterceptor)
+ {
+ css::uno::Reference< css::frame::XDispatchProvider > xSlaveD = m_lInterceptionRegs.begin()->xInterceptor;
+ css::uno::Reference< css::frame::XDispatchProviderInterceptor > xSlaveI (xSlaveD , css::uno::UNO_QUERY);
+
+ xInterceptor->setMasterDispatchProvider(xThis );
+ xInterceptor->setSlaveDispatchProvider (xSlaveD );
+ xSlaveI->setMasterDispatchProvider (aInfo.xInterceptor);
+
+ m_lInterceptionRegs.push_front(aInfo);
+ }
+
+ // b2) If "m_bPreferrFirstInterceptor" is set to false, we have to
+ // insert it before any other existing interceptor - means at the beginning of our list.
else
{
css::uno::Reference< css::frame::XDispatchProvider > xSlaveD = m_lInterceptionRegs.begin()->xInterceptor;