summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Stahl <mstahl@redhat.com>2014-05-15 23:28:55 +0200
committerDavid Tardon <dtardon@redhat.com>2014-05-16 08:10:14 +0000
commitda62ab5783e548c5785b3950c03d078b1f3e849d (patch)
tree90290527c626e609919670410f5ca94f28d8b874
parent5caa2548f837c54aac44fde0fdbb145145b60091 (diff)
fdo#78159: fix import of OOoXML embedded objects
MimeConfigurationHelper::GetDefaultFilterFromServiceName() checks that there is both an import and an export filter, and for OOoXML the export has been removed; tweak the check to require only import for OOoXML. Currently it still works invoke the OOoXML filter, but it is clearly better to store the embedded documents only in ODF, so tweak OCommonEmbeddedObject::store* methods to do that. (regression from aeeaccf59abbc485d7786486f1accc1cb4d4dbf7) Change-Id: Ib71f23fd110cbd4b570517f2dde2c53e3aa6301d (cherry picked from commit 0b3d0fb2d9256dc6bae6af69ed494487004def75) Reviewed-on: https://gerrit.libreoffice.org/9365 Tested-by: David Tardon <dtardon@redhat.com> Reviewed-by: David Tardon <dtardon@redhat.com>
-rw-r--r--comphelper/source/misc/mimeconfighelper.cxx7
-rw-r--r--embeddedobj/source/commonembedding/persistence.cxx18
2 files changed, 24 insertions, 1 deletions
diff --git a/comphelper/source/misc/mimeconfighelper.cxx b/comphelper/source/misc/mimeconfighelper.cxx
index 0c6ffb7d2870..6e096030222d 100644
--- a/comphelper/source/misc/mimeconfighelper.cxx
+++ b/comphelper/source/misc/mimeconfighelper.cxx
@@ -743,7 +743,12 @@ OUString MimeConfigurationHelper::GetDefaultFilterFromServiceName( const OUStrin
sal_Int32 nFlags = aPropsHM.getUnpackedValueOrDefault( "Flags", (sal_Int32)0 );
// that should be import, export, own filter and not a template filter ( TemplatePath flag )
- sal_Int32 nRequired = ( SFX_FILTER_OWN | SFX_FILTER_EXPORT | SFX_FILTER_IMPORT );
+ sal_Int32 const nRequired = (SFX_FILTER_OWN
+ // fdo#78159 for OOoXML, there is code to convert
+ // to ODF in OCommonEmbeddedObject::store*
+ // so accept it even though there's no export
+ | (SOFFICE_FILEFORMAT_60 == nVersion ? 0 : SFX_FILTER_EXPORT)
+ | SFX_FILTER_IMPORT );
if ( ( ( nFlags & nRequired ) == nRequired ) && !( nFlags & SFX_FILTER_TEMPLATEPATH ) )
{
// if there are more than one filter the preffered one should be used
diff --git a/embeddedobj/source/commonembedding/persistence.cxx b/embeddedobj/source/commonembedding/persistence.cxx
index b3e920884fba..36741eba63dd 100644
--- a/embeddedobj/source/commonembedding/persistence.cxx
+++ b/embeddedobj/source/commonembedding/persistence.cxx
@@ -1169,6 +1169,12 @@ void SAL_CALL OCommonEmbeddedObject::storeToEntry( const uno::Reference< embed::
{
SAL_WARN( "embeddedobj.common", "Can not retrieve target storage media type!" );
}
+ if (nTargetStorageFormat == SOFFICE_FILEFORMAT_60)
+ {
+ SAL_INFO("embeddedobj.common", "fdo#78159: Storing OOoXML as ODF");
+ nTargetStorageFormat = SOFFICE_FILEFORMAT_CURRENT;
+ // setting MediaType is done later anyway, no need to do it here
+ }
try
{
@@ -1300,6 +1306,12 @@ void SAL_CALL OCommonEmbeddedObject::storeAsEntry( const uno::Reference< embed::
{
SAL_WARN( "embeddedobj.common", "Can not retrieve target storage media type!" );
}
+ if (nTargetStorageFormat == SOFFICE_FILEFORMAT_60)
+ {
+ SAL_INFO("embeddedobj.common", "fdo#78159: Storing OOoXML as ODF");
+ nTargetStorageFormat = SOFFICE_FILEFORMAT_CURRENT;
+ // setting MediaType is done later anyway, no need to do it here
+ }
try
{
@@ -1589,6 +1601,12 @@ void SAL_CALL OCommonEmbeddedObject::storeOwn()
{
SAL_WARN( "embeddedobj.common", "Can not retrieve storage media type!" );
}
+ if (nStorageFormat == SOFFICE_FILEFORMAT_60)
+ {
+ SAL_INFO("embeddedobj.common", "fdo#78159: Storing OOoXML as ODF");
+ nStorageFormat = SOFFICE_FILEFORMAT_CURRENT;
+ // setting MediaType is done later anyway, no need to do it here
+ }
aGuard.clear();
StoreDocToStorage_Impl( m_xObjectStorage, nStorageFormat, GetBaseURL_Impl(), m_aEntryName, sal_True );