include/svx/unopool.hxx | 6 +++- include/svx/unoprov.hxx | 13 ++------- svx/source/unodraw/unopool.cxx | 16 +++++++++-- svx/source/unodraw/unoprov.cxx | 47 +++++++++++++++-------------------- sw/source/uibase/uno/unodefaults.cxx | 2 - 5 files changed, 43 insertions(+), 41 deletions(-)
New commits: commit 13a9d32cd1d6f8f95efbea5f6a85d50159d3baaa Author: Noel Grandin <noel.gran...@collabora.co.uk> AuthorDate: Thu Mar 9 14:29:51 2023 +0200 Commit: Noel Grandin <noel.gran...@collabora.co.uk> CommitDate: Fri Mar 10 08:31:15 2023 +0000 simplify initialisation of some pool defaults Change-Id: I794e528a08a5a76cef1955f5c4f3e594f1e90f4a Reviewed-on: https://gerrit.libreoffice.org/c/core/+/148537 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk> diff --git a/include/svx/unopool.hxx b/include/svx/unopool.hxx index 1647375209b1..1f9431f8755d 100644 --- a/include/svx/unopool.hxx +++ b/include/svx/unopool.hxx @@ -30,6 +30,10 @@ class SdrModel; class SfxItemPool; +enum class SvxUnoDrawPoolDefaults { + Drawing, Writer +}; + /** This class implements the service com.sun.star.drawing.Defaults. It works on the SfxItemPool from the given model and the global draw object item pool. @@ -42,7 +46,7 @@ class SVX_DLLPUBLIC SvxUnoDrawPool : public ::cppu::OWeakAggObject, public comphelper::PropertySetHelper { public: - SvxUnoDrawPool(SdrModel* pModel, sal_Int32 nServiceId); + SvxUnoDrawPool(SdrModel* pModel, SvxUnoDrawPoolDefaults nServiceId); /** deprecated */ SvxUnoDrawPool(SdrModel* pModel); diff --git a/include/svx/unoprov.hxx b/include/svx/unoprov.hxx index 204b737edd97..fe03bb286dbc 100644 --- a/include/svx/unoprov.hxx +++ b/include/svx/unoprov.hxx @@ -95,19 +95,12 @@ public: * class SvxPropertySetInfoPool */ -const sal_Int32 SVXUNO_SERVICEID_COM_SUN_STAR_DRAWING_DEFAULTS = 0; -const sal_Int32 SVXUNO_SERVICEID_COM_SUN_STAR_DRAWING_DEFAULTS_WRITER = 1; -const sal_Int32 SVXUNO_SERVICEID_LASTID = 1; - namespace comphelper { class PropertySetInfo; } -class SvxPropertySetInfoPool +namespace SvxPropertySetInfoPool { -public: - UNLESS_MERGELIBS(SVXCORE_DLLPUBLIC) static rtl::Reference<comphelper::PropertySetInfo> const & getOrCreate( sal_Int32 nServiceId ) noexcept; - -private: - static rtl::Reference<comphelper::PropertySetInfo> mxInfos[SVXUNO_SERVICEID_LASTID+1]; + UNLESS_MERGELIBS(SVXCORE_DLLPUBLIC) rtl::Reference<comphelper::PropertySetInfo> const & getDrawingDefaults() noexcept; + UNLESS_MERGELIBS(SVXCORE_DLLPUBLIC) rtl::Reference<comphelper::PropertySetInfo> const & getWriterDrawingDefaults() noexcept; }; #endif diff --git a/svx/source/unodraw/unopool.cxx b/svx/source/unodraw/unopool.cxx index 59c19c70262d..b6172876152a 100644 --- a/svx/source/unodraw/unopool.cxx +++ b/svx/source/unodraw/unopool.cxx @@ -39,15 +39,25 @@ using namespace ::com::sun::star; using namespace ::cppu; -SvxUnoDrawPool::SvxUnoDrawPool(SdrModel* pModel, sal_Int32 nServiceId) -: PropertySetHelper( SvxPropertySetInfoPool::getOrCreate( nServiceId ) ), mpModel( pModel ) +static rtl::Reference<comphelper::PropertySetInfo> const & getDefaults(SvxUnoDrawPoolDefaults nServiceId) +{ + switch (nServiceId) + { + case SvxUnoDrawPoolDefaults::Drawing: return SvxPropertySetInfoPool::getDrawingDefaults(); + case SvxUnoDrawPoolDefaults::Writer: return SvxPropertySetInfoPool::getWriterDrawingDefaults(); + default: std::abort(); + } +} + +SvxUnoDrawPool::SvxUnoDrawPool(SdrModel* pModel, SvxUnoDrawPoolDefaults nServiceId) +: PropertySetHelper( getDefaults(nServiceId) ), mpModel( pModel ) { init(); } /* deprecated */ SvxUnoDrawPool::SvxUnoDrawPool(SdrModel* pModel) -: PropertySetHelper( SvxPropertySetInfoPool::getOrCreate( SVXUNO_SERVICEID_COM_SUN_STAR_DRAWING_DEFAULTS ) ), mpModel( pModel ) +: PropertySetHelper( SvxPropertySetInfoPool::getDrawingDefaults() ), mpModel( pModel ) { init(); } diff --git a/svx/source/unodraw/unoprov.cxx b/svx/source/unodraw/unoprov.cxx index 139e9d3ac48e..aeb16d9800d9 100644 --- a/svx/source/unodraw/unoprov.cxx +++ b/svx/source/unodraw/unoprov.cxx @@ -2045,36 +2045,31 @@ OUString SvxUnogetInternalNameForItem(const sal_uInt16 nWhich, const OUString& r } -rtl::Reference<comphelper::PropertySetInfo> const & SvxPropertySetInfoPool::getOrCreate( sal_Int32 nServiceId ) noexcept +rtl::Reference<comphelper::PropertySetInfo> const & SvxPropertySetInfoPool::getDrawingDefaults() noexcept { - SolarMutexGuard aGuard; - - assert( nServiceId <= SVXUNO_SERVICEID_LASTID ); - - if( !mxInfos[ nServiceId ].is() ) + static rtl::Reference<comphelper::PropertySetInfo> xDrawingDefaults = []() { - mxInfos[nServiceId] = new comphelper::PropertySetInfo(); - - switch( nServiceId ) - { - case SVXUNO_SERVICEID_COM_SUN_STAR_DRAWING_DEFAULTS: - mxInfos[SVXUNO_SERVICEID_COM_SUN_STAR_DRAWING_DEFAULTS]->add( ImplGetSvxDrawingDefaultsPropertyMap() ); - break; - case SVXUNO_SERVICEID_COM_SUN_STAR_DRAWING_DEFAULTS_WRITER: - mxInfos[SVXUNO_SERVICEID_COM_SUN_STAR_DRAWING_DEFAULTS_WRITER]->add( ImplGetSvxDrawingDefaultsPropertyMap() ); - mxInfos[SVXUNO_SERVICEID_COM_SUN_STAR_DRAWING_DEFAULTS_WRITER]->remove( UNO_NAME_EDIT_PARA_IS_HANGING_PUNCTUATION ); - // OD 13.10.2003 #i18732# - add property map for writer item 'IsFollowingTextFlow' - mxInfos[SVXUNO_SERVICEID_COM_SUN_STAR_DRAWING_DEFAULTS_WRITER]->add( ImplGetAdditionalWriterDrawingDefaultsPropertyMap() ); - break; + rtl::Reference<comphelper::PropertySetInfo> xTmp = new comphelper::PropertySetInfo(); + xTmp->add( ImplGetSvxDrawingDefaultsPropertyMap() ); + return xTmp; + }(); - default: - OSL_FAIL( "unknown service id!" ); - } - } - - return mxInfos[ nServiceId ]; + return xDrawingDefaults; } -rtl::Reference<comphelper::PropertySetInfo> SvxPropertySetInfoPool::mxInfos[SVXUNO_SERVICEID_LASTID+1] = { nullptr }; +rtl::Reference<comphelper::PropertySetInfo> const & SvxPropertySetInfoPool::getWriterDrawingDefaults() noexcept +{ + static rtl::Reference<comphelper::PropertySetInfo> xDrawingDefaults = []() + { + rtl::Reference<comphelper::PropertySetInfo> xTmp = new comphelper::PropertySetInfo(); + xTmp->add( ImplGetSvxDrawingDefaultsPropertyMap() ); + xTmp->remove( UNO_NAME_EDIT_PARA_IS_HANGING_PUNCTUATION ); + // OD 13.10.2003 #i18732# - add property map for writer item 'IsFollowingTextFlow' + xTmp->add( ImplGetAdditionalWriterDrawingDefaultsPropertyMap() ); + return xTmp; + }(); + + return xDrawingDefaults; +} /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/source/uibase/uno/unodefaults.cxx b/sw/source/uibase/uno/unodefaults.cxx index 378ddc0b987e..b8545c70954d 100644 --- a/sw/source/uibase/uno/unodefaults.cxx +++ b/sw/source/uibase/uno/unodefaults.cxx @@ -25,7 +25,7 @@ SwSvxUnoDrawPool::SwSvxUnoDrawPool(SwDoc& rDoc) : SvxUnoDrawPool(rDoc.getIDocumentDrawModelAccess().GetDrawModel(), - SVXUNO_SERVICEID_COM_SUN_STAR_DRAWING_DEFAULTS_WRITER) + SvxUnoDrawPoolDefaults::Writer) , m_rDoc(rDoc) { }