From 8485fec269179cd0f19ddb46c13d823cab7d5c8b Mon Sep 17 00:00:00 2001 From: Thorsten Behrens Date: Tue, 13 Mar 2018 14:24:03 +0100 Subject: Revert "tdf#96949 Remove global m_bPreferrFirstInterceptor" This reverts commit 5d4f1f6f630d4382679087a4fb0da364c9c9692b. Change-Id: Iad47f0658900e9f548f83314976ac67cb4b20828 --- framework/inc/dispatch/interceptionhelper.hxx | 4 ++++ framework/source/dispatch/interceptionhelper.cxx | 19 ++++++++++++++++++- 2 files changed, 22 insertions(+), 1 deletion(-) 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; -- cgit v1.2.3