summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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 6f25f001c1a9..249f47466a40 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 2db77f657062..4d2ddc841cb2 100644
--- a/embeddedobj/source/commonembedding/persistence.cxx
+++ b/embeddedobj/source/commonembedding/persistence.cxx
@@ -1165,6 +1165,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
{
@@ -1294,6 +1300,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
{
@@ -1579,6 +1591,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, true );