diff options
author | Michael Stahl <mstahl@redhat.com> | 2015-12-15 14:18:06 +0100 |
---|---|---|
committer | Michael Stahl <mstahl@redhat.com> | 2015-12-15 17:44:36 +0100 |
commit | 36a0abed4ab27abd77b502070d4e17e70e6afe7b (patch) | |
tree | e3cb56bef81036cd8645676dd3c2cd1185518fb8 /filter | |
parent | 45300b43fe44bb01494fecbaa290d846d476cdb0 (diff) |
filter: add BaseURL parameter to SvxMSDffManager::ImportOLE()
... mainly for the (unlikely) case of ODF embedded objects in MSO binary
files, which can be created by toggling the
Tools->Options->Load/Save->Microsoft Office export settings.
Change-Id: I270f1516b70b20ec0b60cfbd17c2c327c3d9efd0
Diffstat (limited to 'filter')
-rw-r--r-- | filter/source/msfilter/msdffimp.cxx | 18 | ||||
-rw-r--r-- | filter/source/msfilter/svdfppt.cxx | 2 |
2 files changed, 12 insertions, 8 deletions
diff --git a/filter/source/msfilter/msdffimp.cxx b/filter/source/msfilter/msdffimp.cxx index 4afc1cb2d919..f29cf4f85b0b 100644 --- a/filter/source/msfilter/msdffimp.cxx +++ b/filter/source/msfilter/msdffimp.cxx @@ -6517,7 +6517,7 @@ SdrObject* SvxMSDffManager::ImportOLE( long nOLEId, if( GetOLEStorageName( nOLEId, sStorageName, xSrcStg, xDstStg )) pRet = CreateSdrOLEFromStorage( sStorageName, xSrcStg, xDstStg, rGrf, rBoundRect, rVisArea, pStData, nError, - nSvxMSDffOLEConvFlags, nAspect ); + nSvxMSDffOLEConvFlags, nAspect, maBaseURL); return pRet; } @@ -6831,7 +6831,7 @@ OUString GetFilterNameFromClassID_Impl( const SvGlobalName& aGlobName ) css::uno::Reference < css::embed::XEmbeddedObject > SvxMSDffManager::CheckForConvertToSOObj( sal_uInt32 nConvertFlags, SotStorage& rSrcStg, const uno::Reference < embed::XStorage >& rDestStorage, const Graphic& rGrf, - const Rectangle& rVisArea ) + const Rectangle& rVisArea, OUString const& rBaseURL) { uno::Reference < embed::XEmbeddedObject > xObj; SvGlobalName aStgNm = rSrcStg.GetClassName(); @@ -6930,17 +6930,19 @@ css::uno::Reference < css::embed::XEmbeddedObject > SvxMSDffManager::CheckForCo else aFilterName = GetFilterNameFromClassID_Impl( aStgNm ); - uno::Sequence < beans::PropertyValue > aMedium( aFilterName.isEmpty() ? 2 : 3); + uno::Sequence<beans::PropertyValue> aMedium(aFilterName.isEmpty() ? 3 : 4); aMedium[0].Name = "InputStream"; uno::Reference < io::XInputStream > xStream = new ::utl::OSeekableInputStreamWrapper( *xMemStream ); aMedium[0].Value <<= xStream; aMedium[1].Name = "URL"; aMedium[1].Value <<= OUString( "private:stream" ); + aMedium[2].Name = "DocumentBaseURL"; + aMedium[2].Value <<= OUString(rBaseURL); if ( !aFilterName.isEmpty() ) { - aMedium[2].Name = "FilterName"; - aMedium[2].Value <<= aFilterName; + aMedium[3].Name = "FilterName"; + aMedium[3].Value <<= aFilterName; } OUString aName( aDstStgName ); @@ -7015,7 +7017,8 @@ SdrOle2Obj* SvxMSDffManager::CreateSdrOLEFromStorage( SvStream* pDataStrm, ErrCode& rError, sal_uInt32 nConvertFlags, - sal_Int64 nRecommendedAspect ) + sal_Int64 nRecommendedAspect, + OUString const& rBaseURL) { sal_Int64 nAspect = nRecommendedAspect; SdrOle2Obj* pRet = nullptr; @@ -7069,7 +7072,8 @@ SdrOle2Obj* SvxMSDffManager::CreateSdrOLEFromStorage( } uno::Reference < embed::XEmbeddedObject > xObj( CheckForConvertToSOObj( - nConvertFlags, *xObjStg, xDestStorage, rGrf, rVisArea )); + nConvertFlags, *xObjStg, xDestStorage, rGrf, + rVisArea, rBaseURL)); if ( xObj.is() ) { svt::EmbeddedObjectRef aObj( xObj, nAspect ); diff --git a/filter/source/msfilter/svdfppt.cxx b/filter/source/msfilter/svdfppt.cxx index 8f066e842959..f9d14e830fd7 100644 --- a/filter/source/msfilter/svdfppt.cxx +++ b/filter/source/msfilter/svdfppt.cxx @@ -1868,7 +1868,7 @@ SdrObject* SdrPowerPointImport::ImportOLE( long nOLEId, { uno::Reference < embed::XStorage > xDestStorage( pOe->pShell->GetStorage() ); uno::Reference < embed::XEmbeddedObject > xObj = - CheckForConvertToSOObj( nSvxMSDffOLEConvFlags, *xObjStor, xDestStorage, rGraf, rVisArea ); + CheckForConvertToSOObj(nSvxMSDffOLEConvFlags, *xObjStor, xDestStorage, rGraf, rVisArea, maBaseURL); if( xObj.is() ) { pOe->pShell->getEmbeddedObjectContainer().InsertEmbeddedObject( xObj, aNm ); |