summaryrefslogtreecommitdiff
path: root/filter
diff options
context:
space:
mode:
authorMichael Stahl <mstahl@redhat.com>2015-12-15 14:18:06 +0100
committerMichael Stahl <mstahl@redhat.com>2015-12-15 17:44:36 +0100
commit36a0abed4ab27abd77b502070d4e17e70e6afe7b (patch)
treee3cb56bef81036cd8645676dd3c2cd1185518fb8 /filter
parent45300b43fe44bb01494fecbaa290d846d476cdb0 (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.cxx18
-rw-r--r--filter/source/msfilter/svdfppt.cxx2
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 );