summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStephan Bergmann <sbergman@redhat.com>2022-12-13 10:51:31 +0100
committerStephan Bergmann <sbergman@redhat.com>2022-12-23 22:57:07 +0000
commit4cfcc9ac37b90ce64c8402a41eb4638adb185b5c (patch)
tree88a473f2315c574f0a52657e2dd325e243b8f4b8
parent03efbf72f4ddf7a84aa8aabef348331bd4b75e8a (diff)
loplugin:unocast (framework::Desktop)
(See the upcoming commit introducing that loplugin:unocast on why such dynamic_casts from UNO types are dangerous.) Change-Id: Ifcf713b0543e78a124f613bcbda496069a280dab Reviewed-on: https://gerrit.libreoffice.org/c/core/+/144762 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
-rw-r--r--framework/source/services/desktop.cxx10
-rw-r--r--framework/source/services/sessionlistener.cxx3
-rw-r--r--include/framework/desktop.hxx7
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 ,