sw/source/filter/xml/xmlimp.cxx          |   30 +++++++++++++++++++++++++++++-
 sw/source/ui/uno/SwXDocumentSettings.cxx |    6 ++++++
 2 files changed, 35 insertions(+), 1 deletion(-)

New commits:
commit db0f839920c38973f8448df0f74de7c4c95c832c
Author: Luboš Luňák <l.lu...@suse.cz>
Date:   Tue Jan 24 16:05:37 2012 +0100

    order database properties so that opening it in writer works (bnc#740032)
    
    http://lists.freedesktop.org/archives/libreoffice/2012-January/024380.html

diff --git a/sw/source/filter/xml/xmlimp.cxx b/sw/source/filter/xml/xmlimp.cxx
index a59ebf7..f19a20a 100644
--- a/sw/source/filter/xml/xmlimp.cxx
+++ b/sw/source/filter/xml/xmlimp.cxx
@@ -1188,6 +1188,13 @@ void SwXMLImport::SetConfigurationSettings(const 
Sequence < PropertyValue > & aC
 
     OUString sRedlineProtectionKey( RTL_CONSTASCII_USTRINGPARAM( 
"RedlineProtectionKey" ) );
 
+    const PropertyValue* currentDatabaseDataSource = NULL;
+    const PropertyValue* currentDatabaseCommand = NULL;
+    const PropertyValue* currentDatabaseCommandType = NULL;
+    OUString currentDatabaseDataSourceKey( RTL_CONSTASCII_USTRINGPARAM( 
"CurrentDatabaseDataSource" ));
+    OUString currentDatabaseCommandKey( RTL_CONSTASCII_USTRINGPARAM( 
"CurrentDatabaseCommand" ));
+    OUString currentDatabaseCommandTypeKey( RTL_CONSTASCII_USTRINGPARAM( 
"CurrentDatabaseCommandType" ));
+
     while( nCount-- )
     {
         if( !bIsUserSetting )
@@ -1212,7 +1219,15 @@ void SwXMLImport::SetConfigurationSettings(const 
Sequence < PropertyValue > & aC
                     }
                     else
                     {
-                        xProps->setPropertyValue( pValues->Name,
+                        // HACK: Setting these out of order does not work.
+                        if( pValues->Name.equals( currentDatabaseDataSourceKey 
))
+                            currentDatabaseDataSource = pValues;
+                        else if( pValues->Name.equals( 
currentDatabaseCommandKey ))
+                            currentDatabaseCommand = pValues;
+                        else if( pValues->Name.equals( 
currentDatabaseCommandTypeKey ))
+                            currentDatabaseCommandType = pValues;
+                        else
+                            xProps->setPropertyValue( pValues->Name,
                                                   pValues->Value );
                     }
                 }
@@ -1267,6 +1282,19 @@ void SwXMLImport::SetConfigurationSettings(const 
Sequence < PropertyValue > & aC
         pValues++;
     }
 
+    try
+    {
+        if( currentDatabaseDataSource != NULL )
+            xProps->setPropertyValue( currentDatabaseDataSource->Name, 
currentDatabaseDataSource->Value );
+        if( currentDatabaseCommand != NULL )
+            xProps->setPropertyValue( currentDatabaseCommand->Name, 
currentDatabaseCommand->Value );
+        if( currentDatabaseCommandType != NULL )
+            xProps->setPropertyValue( currentDatabaseCommandType->Name, 
currentDatabaseCommandType->Value );
+    } catch( Exception& )
+    {
+        OSL_FAIL( "SwXMLImport::SetConfigurationSettings: Exception!" );
+    }
+
     // finally, treat the non-default cases
     // introduce boolean, that indicates a document, written by version prior 
SO8.
     const bool bDocumentPriorSO8 = !bConsiderWrapOnObjPos;
diff --git a/sw/source/ui/uno/SwXDocumentSettings.cxx 
b/sw/source/ui/uno/SwXDocumentSettings.cxx
index 7398dfd..c349631 100644
--- a/sw/source/ui/uno/SwXDocumentSettings.cxx
+++ b/sw/source/ui/uno/SwXDocumentSettings.cxx
@@ -474,6 +474,8 @@ void SwXDocumentSettings::_setSingleValue( const 
comphelper::PropertyInfo & rInf
         case HANDLE_CURRENT_DATABASE_COMMAND:
         {
             SwDBData aData = mpDoc->GetDBData();
+            SAL_WARN_IF( aData.sDataSource.isEmpty(), "sw.uno",
+                "\"CurrentDatabaseCommand\" property possibly set before 
\"CurrentDatabaseDataSource\"" );
             if ( rValue >>= aData.sCommand )
                 mpDoc->ChgDBData( aData );
         }
@@ -481,6 +483,10 @@ void SwXDocumentSettings::_setSingleValue( const 
comphelper::PropertyInfo & rInf
         case HANDLE_CURRENT_DATABASE_COMMAND_TYPE:
         {
             SwDBData aData = mpDoc->GetDBData();
+            SAL_WARN_IF( aData.sDataSource.isEmpty(), "sw.uno",
+                "\"CurrentDatabaseCommandType\" property possibly set before 
\"CurrentDatabaseDataSource\"" );
+            SAL_WARN_IF( aData.sCommand.isEmpty(), "sw.uno",
+                "\"CurrentDatabaseCommandType\" property possibly set before 
\"CurrentDatabaseCommand\"" );
             if ( rValue >>= aData.nCommandType )
                 mpDoc->ChgDBData( aData );
         }
_______________________________________________
Libreoffice-commits mailing list
Libreoffice-commits@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to