diff options
author | Noel Grandin <noel.grandin@collabora.co.uk> | 2020-07-06 14:22:28 +0200 |
---|---|---|
committer | Noel Grandin <noel.grandin@collabora.co.uk> | 2020-07-11 14:54:24 +0200 |
commit | 45c8885705afd585b1d59bf793ceaa39abef3eae (patch) | |
tree | 4bf3c6ccc1d39a636bd14dc83dd09d31bc7c4d9e /vbahelper/source/msforms/vbacontrol.cxx | |
parent | a97224fe77c857831634df198792e368be1d61a2 (diff) |
vbahelper: create instances with uno constructors
See tdf#74608 for motivation
Change-Id: I190d58fe45aa0b724b7239f5417bd0293d6dca80
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/98234
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'vbahelper/source/msforms/vbacontrol.cxx')
-rw-r--r-- | vbahelper/source/msforms/vbacontrol.cxx | 43 |
1 files changed, 27 insertions, 16 deletions
diff --git a/vbahelper/source/msforms/vbacontrol.cxx b/vbahelper/source/msforms/vbacontrol.cxx index 8efb94de7780..af21ad4bfa01 100644 --- a/vbahelper/source/msforms/vbacontrol.cxx +++ b/vbahelper/source/msforms/vbacontrol.cxx @@ -23,6 +23,7 @@ #include <com/sun/star/awt/XActionListener.hpp> #include <com/sun/star/lang/XEventListener.hpp> #include <com/sun/star/lang/XMultiServiceFactory.hpp> +#include <com/sun/star/lang/XServiceInfo.hpp> #include <com/sun/star/drawing/XShape.hpp> #include <com/sun/star/drawing/XControlShape.hpp> #include <com/sun/star/frame/XModel.hpp> @@ -37,7 +38,6 @@ #include <ooo/vba/XControlProvider.hpp> #include <ooo/vba/msforms/fmMousePointer.hpp> #include <svtools/bindablecontrolhelper.hxx> -#include "service.hxx" #include "vbacontrol.hxx" #include "vbacombobox.hxx" #include "vbabutton.hxx" @@ -56,11 +56,11 @@ #include "vbaimage.hxx" #include <toolkit/helper/vclunohelper.hxx> #include <vcl/window.hxx> -#include <comphelper/servicedecl.hxx> #include <com/sun/star/drawing/XDrawPagesSupplier.hpp> #include <com/sun/star/form/XFormsSupplier.hpp> #include <svx/svdobj.hxx> #include <cppuhelper/implbase.hxx> +#include <cppuhelper/supportsservice.hxx> using namespace com::sun::star; using namespace ooo::vba; @@ -707,11 +707,7 @@ ScVbaControl::getServiceImplName() uno::Sequence< OUString > ScVbaControl::getServiceNames() { - static uno::Sequence< OUString > const aServiceNames - { - "ooo.vba.excel.Control" - }; - return aServiceNames; + return { "ooo.vba.excel.Control" }; } sal_Int32 const nSysCols[] = { 0xC8D0D4, 0x0, 0x6A240A, 0x808080, 0xE4E4E4, 0xFFFFFF, 0x0, 0x0, 0x0, 0xFFFFFF, 0xE4E4E4, 0xE4E4E4, 0x808080, 0x6A240A, 0xFFFFFF, 0xE4E4E4, 0x808080, 0x808080, 0x0, 0xC8D0D4, 0xFFFFFF, 0x404040, 0xE4E4E4, 0x0, 0xE1FFFF }; @@ -767,16 +763,35 @@ void ScVbaControl::setLocked( bool bLocked ) namespace { -class ControlProviderImpl : public cppu::WeakImplHelper< XControlProvider > +class ControlProviderImpl : public cppu::WeakImplHelper< XControlProvider, css::lang::XServiceInfo > { uno::Reference< uno::XComponentContext > m_xCtx; public: explicit ControlProviderImpl( const uno::Reference< uno::XComponentContext >& xCtx ) : m_xCtx( xCtx ) {} virtual uno::Reference< msforms::XControl > SAL_CALL createControl( const uno::Reference< drawing::XControlShape >& xControl, const uno::Reference< frame::XModel >& xDocOwner ) override; + + // XServiceInfo + virtual sal_Bool SAL_CALL supportsService(const OUString& sServiceName) override; + virtual OUString SAL_CALL getImplementationName() override; + virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override; }; } +// XServiceInfo +sal_Bool ControlProviderImpl::supportsService(const OUString& sServiceName) +{ + return cppu::supportsService(this, sServiceName); +} +OUString ControlProviderImpl::getImplementationName() +{ + return "ControlProviderImpl"; +} +css::uno::Sequence< OUString > ControlProviderImpl::getSupportedServiceNames() +{ + return { "ooo.vba.ControlProvider" }; +} + uno::Reference< msforms::XControl > SAL_CALL ControlProviderImpl::createControl( const uno::Reference< drawing::XControlShape >& xControlShape, const uno::Reference< frame::XModel >& xDocOwner ) { @@ -787,15 +802,11 @@ ControlProviderImpl::createControl( const uno::Reference< drawing::XControlShape } -namespace controlprovider +extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface* +ControlProviderImpl_get_implementation( + css::uno::XComponentContext* context , css::uno::Sequence<css::uno::Any> const&) { -namespace sdecl = comphelper::service_decl; -sdecl::class_<ControlProviderImpl, sdecl::with_args<false> > const serviceImpl; -sdecl::ServiceDecl const serviceDecl( - serviceImpl, - "ControlProviderImpl", - "ooo.vba.ControlProvider" ); + return cppu::acquire(new ControlProviderImpl(context)); } - /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |