diff options
-rw-r--r-- | framework/source/services/desktop.cxx | 10 | ||||
-rw-r--r-- | framework/source/services/sessionlistener.cxx | 3 | ||||
-rw-r--r-- | include/framework/desktop.hxx | 7 |
3 files changed, 18 insertions, 2 deletions
diff --git a/framework/source/services/desktop.cxx b/framework/source/services/desktop.cxx index 048b677c9daa..d58eaa9334c7 100644 --- a/framework/source/services/desktop.cxx +++ b/framework/source/services/desktop.cxx @@ -50,6 +50,7 @@ #include <comphelper/numberedcollection.hxx> #include <comphelper/sequence.hxx> #include <comphelper/lok.hxx> +#include <comphelper/servicehelper.hxx> #include <cppuhelper/supportsservice.hxx> #include <utility> #include <vcl/svapp.hxx> @@ -335,6 +336,15 @@ void Desktop::shutdown() xSfxTerminator->notifyTermination(aEvent); } +sal_Int64 Desktop::getSomething(css::uno::Sequence<sal_Int8> const & aIdentifier) { + return comphelper::getSomethingImpl(aIdentifier, this); +} + +css::uno::Sequence<sal_Int8> const & Desktop::getUnoTunnelId() { + static comphelper::UnoIdInit const id; + return id.getSeq(); +} + namespace { class QuickstartSuppressor diff --git a/framework/source/services/sessionlistener.cxx b/framework/source/services/sessionlistener.cxx index 188b082fe94c..01c8218b087d 100644 --- a/framework/source/services/sessionlistener.cxx +++ b/framework/source/services/sessionlistener.cxx @@ -23,6 +23,7 @@ #include <framework/desktop.hxx> #include <comphelper/diagnose_ex.hxx> +#include <comphelper/servicehelper.hxx> #include <com/sun/star/beans/NamedValue.hpp> #include <com/sun/star/beans/PropertyValue.hpp> #include <com/sun/star/frame/theAutoRecovery.hpp> @@ -342,7 +343,7 @@ void SAL_CALL SessionListener::approveInteraction( sal_Bool bInteractionGranted css::uno::Reference< css::frame::XDesktop2 > xDesktop = css::frame::Desktop::create( m_xContext ); // honestly: how many implementations of XDesktop will we ever have? // so casting this directly to the implementation - Desktop* pDesktop(dynamic_cast<Desktop*>(xDesktop.get())); + Desktop* pDesktop(comphelper::getFromUnoTunnel<Desktop>(xDesktop)); if(pDesktop) { SAL_INFO("fwk.session", " XDesktop is a framework::Desktop -- good."); diff --git a/include/framework/desktop.hxx b/include/framework/desktop.hxx index 3d525eb54938..deeb9c20233b 100644 --- a/include/framework/desktop.hxx +++ b/include/framework/desktop.hxx @@ -36,6 +36,7 @@ #include <com/sun/star/frame/XFramesSupplier.hpp> #include <com/sun/star/frame/XFrames.hpp> #include <com/sun/star/lang/XServiceInfo.hpp> +#include <com/sun/star/lang/XUnoTunnel.hpp> #include <com/sun/star/frame/XDispatchProvider.hpp> #include <com/sun/star/frame/XTasksSupplier.hpp> #include <com/sun/star/container/XEnumerationAccess.hpp> @@ -94,7 +95,8 @@ typedef cppu::WeakComponentImplHelper< css::frame::XTasksSupplier , css::frame::XDispatchResultListener , // => XEventListener css::task::XInteractionHandler , - css::frame::XUntitledNumbers > Desktop_BASE; + css::frame::XUntitledNumbers, + css::lang::XUnoTunnel > Desktop_BASE; class FWK_DLLPUBLIC Desktop final : private cppu::BaseMutex, public Desktop_BASE, @@ -287,6 +289,9 @@ class FWK_DLLPUBLIC Desktop final : private cppu::BaseMutex, void shutdown(); + sal_Int64 SAL_CALL getSomething(css::uno::Sequence<sal_Int8> const & aIdentifier) override; + static css::uno::Sequence<sal_Int8> const & getUnoTunnelId(); + private: // OPropertySetHelper virtual sal_Bool SAL_CALL convertFastPropertyValue ( css::uno::Any& aConvertedValue , |