diff --git a/comphelper/source/container/embeddedobjectcontainer.cxx b/comphelper/source/container/embeddedobjectcontainer.cxx index b813b96be0dd..127798f45569 100644 --- a/comphelper/source/container/embeddedobjectcontainer.cxx +++ b/comphelper/source/container/embeddedobjectcontainer.cxx @@ -589,7 +589,7 @@ uno::Reference < embed::XEmbeddedObject > EmbeddedObjectContainer::InsertEmbedde return xRet; } -uno::Reference < embed::XEmbeddedObject > EmbeddedObjectContainer::InsertEmbeddedObject( const css::uno::Sequence < css::beans::PropertyValue >& aMedium, OUString& rNewName ) +uno::Reference < embed::XEmbeddedObject > EmbeddedObjectContainer::InsertEmbeddedObject( const css::uno::Sequence < css::beans::PropertyValue >& aMedium, OUString& rNewName, OUString const* pBaseURL ) { if ( rNewName.isEmpty() ) rNewName = CreateUniqueObjectName(); @@ -598,9 +598,14 @@ uno::Reference < embed::XEmbeddedObject > EmbeddedObjectContainer::InsertEmbedde try { uno::Reference < embed::XEmbeddedObjectCreator > xFactory = embed::EmbeddedObjectCreator::create( ::comphelper::getProcessComponentContext() ); - uno::Sequence< beans::PropertyValue > aObjDescr( 1 ); + uno::Sequence< beans::PropertyValue > aObjDescr(pBaseURL ? 2 : 1); aObjDescr[0].Name = "Parent"; aObjDescr[0].Value <<= pImpl->m_xModel.get(); + if (pBaseURL) + { + aObjDescr[1].Name = "DefaultParentBaseURL"; + aObjDescr[1].Value <<= *pBaseURL; + } xObj.set( xFactory->createInstanceInitFromMediaDescriptor( pImpl->mxStorage, rNewName, aMedium, aObjDescr ), uno::UNO_QUERY ); uno::Reference < embed::XEmbedPersist > xPersist( xObj, uno::UNO_QUERY ); diff --git a/filter/source/msfilter/msdffimp.cxx b/filter/source/msfilter/msdffimp.cxx index f29cf4f85b0b..309cee31b1eb 100644 --- a/filter/source/msfilter/msdffimp.cxx +++ b/filter/source/msfilter/msdffimp.cxx @@ -6947,7 +6947,7 @@ css::uno::Reference < css::embed::XEmbeddedObject > SvxMSDffManager::CheckForCo OUString aName( aDstStgName ); comphelper::EmbeddedObjectContainer aCnt( rDestStorage ); - xObj = aCnt.InsertEmbeddedObject( aMedium, aName ); + xObj = aCnt.InsertEmbeddedObject(aMedium, aName, &rBaseURL); if ( !xObj.is() ) { @@ -6955,7 +6955,7 @@ css::uno::Reference < css::embed::XEmbeddedObject > SvxMSDffManager::CheckForCo { // throw the filter parameter away as workaround aMedium.realloc( 2 ); - xObj = aCnt.InsertEmbeddedObject( aMedium, aName ); + xObj = aCnt.InsertEmbeddedObject(aMedium, aName, &rBaseURL); } if ( !xObj.is() ) diff --git a/include/comphelper/embeddedobjectcontainer.hxx b/include/comphelper/embeddedobjectcontainer.hxx index 24153c2b2fd3..b7cae389749b 100644 --- a/include/comphelper/embeddedobjectcontainer.hxx +++ b/include/comphelper/embeddedobjectcontainer.hxx @@ -110,7 +110,7 @@ public: // load an embedded object from a MediaDescriptor and insert it into the container // a new object will be created from the new content and returned css::uno::Reference < css::embed::XEmbeddedObject > - InsertEmbeddedObject( const css::uno::Sequence < css::beans::PropertyValue >&, OUString& ); + InsertEmbeddedObject( const css::uno::Sequence < css::beans::PropertyValue >&, OUString& rName, OUString const* pBaseURL = nullptr); // create an embedded link based on a MediaDescriptor and insert it into the container // a new object will be created from the new content and returned