comphelper/source/container/embeddedobjectcontainer.cxx | 17 +++++---------- include/comphelper/embeddedobjectcontainer.hxx | 9 +------ sc/source/filter/excel/xiescher.cxx | 2 - svx/source/unodraw/unoshap4.cxx | 5 ---- sw/source/core/unocore/unoframe.cxx | 2 - sw/source/writerfilter/ooxml/OOXMLFastContextHandler.cxx | 4 --- 6 files changed, 12 insertions(+), 27 deletions(-)
New commits: commit d62a29c705af34d54dffe919897b3ecf91168a71 Author: Noel Grandin <noel.gran...@collabora.co.uk> AuthorDate: Tue Sep 16 11:48:06 2025 +0200 Commit: Noel Grandin <noel.gran...@collabora.co.uk> CommitDate: Tue Sep 16 15:01:59 2025 +0200 simplify EmbeddedObjectContainer::CreateEmbeddedObject dont need the variant that passes extra params, we already take that param but convert that extra parameter from a pointer to a std::optional, because some of the call sites pass a temporary OUString, and taking the address of a temporary is a no-no. Change-Id: I4d55f01a14230f5c64a052a143666a08bfcbf704 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/191021 Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk> Tested-by: Jenkins diff --git a/comphelper/source/container/embeddedobjectcontainer.cxx b/comphelper/source/container/embeddedobjectcontainer.cxx index 16fa2bd97cdb..01470a0fdb2a 100644 --- a/comphelper/source/container/embeddedobjectcontainer.cxx +++ b/comphelper/source/container/embeddedobjectcontainer.cxx @@ -361,7 +361,8 @@ uno::Reference<embed::XEmbeddedObject> EmbeddedObjectContainer::Get_Impl( uno::Reference < embed::XEmbeddedObject > EmbeddedObjectContainer::CreateEmbeddedObject( const uno::Sequence < sal_Int8 >& rClassId, - const uno::Sequence < beans::PropertyValue >& rArgs, OUString& rNewName, OUString const* pBaseURL ) + OUString& rNewName, + std::optional<OUString> oDefaultParentBaseURL ) { if ( rNewName.isEmpty() ) rNewName = CreateUniqueObjectName(); @@ -374,17 +375,16 @@ uno::Reference < embed::XEmbeddedObject > EmbeddedObjectContainer::CreateEmbedde { uno::Reference < embed::XEmbeddedObjectCreator > xFactory = embed::EmbeddedObjectCreator::create( ::comphelper::getProcessComponentContext() ); - const size_t nExtraArgs = pBaseURL ? 2 : 1; - uno::Sequence< beans::PropertyValue > aObjDescr( rArgs.getLength() + nExtraArgs ); + const size_t nArgs = oDefaultParentBaseURL.has_value() ? 2 : 1; + uno::Sequence< beans::PropertyValue > aObjDescr( nArgs ); auto pObjDescr = aObjDescr.getArray(); pObjDescr[0].Name = "Parent"; pObjDescr[0].Value <<= pImpl->m_xModel.get(); - if (pBaseURL) + if (oDefaultParentBaseURL.has_value()) { pObjDescr[1].Name = "DefaultParentBaseURL"; - pObjDescr[1].Value <<= *pBaseURL; + pObjDescr[1].Value <<= *oDefaultParentBaseURL; } - std::copy( rArgs.begin(), rArgs.end(), pObjDescr + nExtraArgs ); xObj.set( xFactory->createInstanceInitNew( rClassId, OUString(), pImpl->mxStorage, rNewName, aObjDescr ), uno::UNO_QUERY ); @@ -402,11 +402,6 @@ uno::Reference < embed::XEmbeddedObject > EmbeddedObjectContainer::CreateEmbedde return xObj; } -uno::Reference < embed::XEmbeddedObject > EmbeddedObjectContainer::CreateEmbeddedObject( const uno::Sequence < sal_Int8 >& rClassId, OUString& rNewName, OUString const* pBaseURL ) -{ - return CreateEmbeddedObject( rClassId, uno::Sequence < beans::PropertyValue >(), rNewName, pBaseURL ); -} - void EmbeddedObjectContainer::AddEmbeddedObject( const css::uno::Reference < css::embed::XEmbeddedObject >& xObj, const OUString& rName ) { diff --git a/include/comphelper/embeddedobjectcontainer.hxx b/include/comphelper/embeddedobjectcontainer.hxx index ed3d0e1f9109..21714da3b3e9 100644 --- a/include/comphelper/embeddedobjectcontainer.hxx +++ b/include/comphelper/embeddedobjectcontainer.hxx @@ -25,6 +25,7 @@ #include <rtl/ustring.hxx> #include <memory> +#include <optional> namespace com::sun::star::beans { struct PropertyValue; } namespace com::sun::star::embed { class XEmbeddedObject; } @@ -106,13 +107,7 @@ public: css::uno::Reference < css::embed::XEmbeddedObject > CreateEmbeddedObject( const css::uno::Sequence < sal_Int8 >& rClassId, OUString& rNewName, - OUString const* pBaseURL = nullptr ); - - css::uno::Reference < css::embed::XEmbeddedObject > CreateEmbeddedObject( - const css::uno::Sequence < sal_Int8 >& rClassId, - const css::uno::Sequence < css::beans::PropertyValue >& rArgs, - OUString& rNewName, - OUString const* pBaseURL = nullptr ); + std::optional<OUString> oDefaultParentBaseURL = std::nullopt ); // insert an embedded object into the container - objects persistent representation will be added to the storage bool InsertEmbeddedObject( diff --git a/sc/source/filter/excel/xiescher.cxx b/sc/source/filter/excel/xiescher.cxx index 2796c6f9a006..2b55fbce4ca3 100644 --- a/sc/source/filter/excel/xiescher.cxx +++ b/sc/source/filter/excel/xiescher.cxx @@ -1766,7 +1766,7 @@ rtl::Reference<SdrObject> XclImpChartObj::DoCreateSdrObj( XclImpDffConverter& rD OUString aEmbObjName; OUString sBaseURL(GetRoot().GetMedium().GetBaseURL()); Reference< XEmbeddedObject > xEmbObj = pDocShell->GetEmbeddedObjectContainer(). - CreateEmbeddedObject( SvGlobalName( SO3_SCH_CLASSID ).GetByteSequence(), aEmbObjName, &sBaseURL ); + CreateEmbeddedObject( SvGlobalName( SO3_SCH_CLASSID ).GetByteSequence(), aEmbObjName, sBaseURL ); if (!xEmbObj) return xSdrObj; diff --git a/svx/source/unodraw/unoshap4.cxx b/svx/source/unodraw/unoshap4.cxx index 7ef5d9b0007a..6681db290017 100644 --- a/svx/source/unodraw/unoshap4.cxx +++ b/svx/source/unodraw/unoshap4.cxx @@ -390,13 +390,10 @@ bool SvxOle2Shape::createObject( const SvGlobalName &aClassName ) if( SvxShape::getPropertyValue( UNO_NAME_OLE2_PERSISTNAME ) >>= aTmpStr ) aPersistName = aTmpStr; - uno::Sequence<beans::PropertyValue> objArgs( comphelper::InitPropertySequence({ - { "DefaultParentBaseURL", Any(pPersist->getDocumentBaseURL()) } - })); //TODO/LATER: how to cope with creation failure?! uno::Reference<embed::XEmbeddedObject> xObj( pPersist->getEmbeddedObjectContainer().CreateEmbeddedObject( - aClassName.GetByteSequence(), objArgs, aPersistName)); + aClassName.GetByteSequence(), aPersistName, pPersist->getDocumentBaseURL())); if( xObj.is() ) { tools::Rectangle aRect = pOle2Obj->GetLogicRect(); diff --git a/sw/source/core/unocore/unoframe.cxx b/sw/source/core/unocore/unoframe.cxx index 32651e47bf08..4b2577aa2d82 100644 --- a/sw/source/core/unocore/unoframe.cxx +++ b/sw/source/core/unocore/unoframe.cxx @@ -2882,7 +2882,7 @@ void SwXFrame::attachToRange(uno::Reference<text::XTextRange> const& xTextRange, OUString sDocumentBaseURL = pDoc->GetPersist()->getDocumentBaseURL(); xIPObj = pCnt->CreateEmbeddedObject(aClassName.GetByteSequence(), aName, - &sDocumentBaseURL); + sDocumentBaseURL); } if ( xIPObj.is() ) { diff --git a/sw/source/writerfilter/ooxml/OOXMLFastContextHandler.cxx b/sw/source/writerfilter/ooxml/OOXMLFastContextHandler.cxx index 74ae5ad44414..c183897e68b7 100644 --- a/sw/source/writerfilter/ooxml/OOXMLFastContextHandler.cxx +++ b/sw/source/writerfilter/ooxml/OOXMLFastContextHandler.cxx @@ -2482,10 +2482,8 @@ void OOXMLFastContextHandlerMath::process() SvGlobalName name( SO3_SM_CLASSID ); comphelper::EmbeddedObjectContainer container; OUString aName; - uno::Sequence<beans::PropertyValue> objArgs{ comphelper::makePropertyValue( - u"DefaultParentBaseURL"_ustr, getDocument()->GetDocumentBaseURL()) }; uno::Reference<embed::XEmbeddedObject> ref = - container.CreateEmbeddedObject(name.GetByteSequence(), objArgs, aName); + container.CreateEmbeddedObject(name.GetByteSequence(), aName, getDocument()->GetDocumentBaseURL()); assert(ref.is()); if (!ref.is()) return;