[Libreoffice-commits] core.git: 2 commits - RepositoryModule_host.mk solenv/bin sw/source

Tor Lillqvist tml at collabora.com
Mon Apr 28 08:41:28 PDT 2014


 RepositoryModule_host.mk              |    2 
 solenv/bin/native-code.py             |    1 
 sw/source/core/doc/doc.cxx            |    6 ++
 sw/source/core/doc/docfld.cxx         |   76 ++++++++++++++++++++++++++--------
 sw/source/core/uibase/uno/unofreg.cxx |    4 +
 sw/source/core/unocore/unofield.cxx   |    5 ++
 6 files changed, 75 insertions(+), 19 deletions(-)

New commits:
commit d2f9e1a165314ad9e8588b1d44b3ff0a455ef7f6
Author: Tor Lillqvist <tml at collabora.com>
Date:   Mon Apr 28 18:01:11 2014 +0300

    More --disable-database-connectivity work
    
    Bypass various database field and mail-merge functionality in the case
    of !HAVE_FEATURE_DBCONNECTIVITY.
    
    Now TiledLibreOffice builds and runs.
    
    Change-Id: I9aa167413f426fe28d44dd063dc661f468ddc847

diff --git a/sw/source/core/doc/doc.cxx b/sw/source/core/doc/doc.cxx
index 623a546..6b338c1 100644
--- a/sw/source/core/doc/doc.cxx
+++ b/sw/source/core/doc/doc.cxx
@@ -17,6 +17,8 @@
  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
  */
 
+#include <config_features.h>
+
 #include <doc.hxx>
 #include <DocumentSettingManager.hxx>
 #include <UndoManager.hxx>
@@ -318,7 +320,9 @@ void SwDoc::ChgDBData(const SwDBData& rNewData)
         maDBData = rNewData;
         SetModified();
     }
+#if HAVE_FEATURE_DBCONNECTIVITY
     GetSysFldType(RES_DBNAMEFLD)->UpdateFlds();
+#endif
 }
 
 bool SwDoc::SplitNode( const SwPosition &rPos, bool bChkTableStart )
@@ -686,7 +690,7 @@ SwFlyFrmFmt* SwDoc::InsertOLE(const SwPaM &rRg, const OUString& rObjName,
 SwFieldType *SwDoc::GetSysFldType( const sal_uInt16 eWhich ) const
 {
     for( sal_uInt16 i = 0; i < INIT_FLDTYPES; ++i )
-        if( eWhich == (*mpFldTypes)[i]->Which() )
+        if( (*mpFldTypes)[i] && eWhich == (*mpFldTypes)[i]->Which() )
             return (*mpFldTypes)[i];
     return 0;
 }
diff --git a/sw/source/core/doc/docfld.cxx b/sw/source/core/doc/docfld.cxx
index fafb713..6468d26 100644
--- a/sw/source/core/doc/docfld.cxx
+++ b/sw/source/core/doc/docfld.cxx
@@ -95,7 +95,8 @@ SwFieldType* SwDoc::InsertFldType(const SwFieldType &rFldTyp)
             const ::utl::TransliterationWrapper& rSCmp = GetAppCmpStrIgnore();
             OUString sFldNm( rFldTyp.GetName() );
             for( ; i < nSize; ++i )
-                if( nFldWhich == (*mpFldTypes)[i]->Which() &&
+                if( (*mpFldTypes)[i] &&
+                    nFldWhich == (*mpFldTypes)[i]->Which() &&
                     rSCmp.isEqual( sFldNm, (*mpFldTypes)[i]->GetName() ))
                         return (*mpFldTypes)[i];
         }
@@ -103,13 +104,15 @@ SwFieldType* SwDoc::InsertFldType(const SwFieldType &rFldTyp)
 
     case RES_AUTHORITY:
         for( ; i < nSize; ++i )
-            if( nFldWhich == (*mpFldTypes)[i]->Which() )
+            if( (*mpFldTypes)[i] &&
+                nFldWhich == (*mpFldTypes)[i]->Which() )
                 return (*mpFldTypes)[i];
         break;
 
     default:
         for( i = 0; i < nSize; ++i )
-            if( nFldWhich == (*mpFldTypes)[i]->Which() )
+            if( (*mpFldTypes)[i] &&
+                nFldWhich == (*mpFldTypes)[i]->Which() )
                 return (*mpFldTypes)[i];
     }
 
@@ -164,7 +167,8 @@ void SwDoc::InsDeletedFldType( SwFieldType& rFldTyp )
     SwFieldType* pFnd;
 
     for( ; i < nSize; ++i )
-        if( nFldWhich == (pFnd = (*mpFldTypes)[i])->Which() &&
+        if( (*mpFldTypes)[i] &&
+            nFldWhich == (pFnd = (*mpFldTypes)[i])->Which() &&
             rSCmp.isEqual( rFldNm, pFnd->GetName() ) )
         {
             // find new name
@@ -172,7 +176,8 @@ void SwDoc::InsDeletedFldType( SwFieldType& rFldTyp )
             do {
                 OUString sSrch = rFldNm + OUString::number( nNum );
                 for( i = INIT_FLDTYPES; i < nSize; ++i )
-                    if( nFldWhich == (pFnd = (*mpFldTypes)[i])->Which() &&
+                    if( (*mpFldTypes)[i] &&
+                        nFldWhich == (pFnd = (*mpFldTypes)[i])->Which() &&
                         rSCmp.isEqual( sSrch, pFnd->GetName() ) )
                         break;
 
@@ -210,7 +215,7 @@ void SwDoc::RemoveFldType(sal_uInt16 nFld)
      * Dependent fields present -> ErrRaise
      */
     sal_uInt16 nSize = mpFldTypes->size();
-    if(nFld < nSize)
+    if(nFld < nSize && (*mpFldTypes)[nFld])
     {
         SwFieldType* pTmp = (*mpFldTypes)[nFld];
 
@@ -283,6 +288,9 @@ SwFieldType* SwDoc::GetFldType(
     SwFieldType* pRet = 0;
     for( ; i < nSize; ++i )
     {
+        if( !(*mpFldTypes)[i] )
+            continue;
+
         SwFieldType* pFldType = (*mpFldTypes)[i];
 
         OUString aFldName( pFldType->GetName() );
@@ -307,6 +315,9 @@ void SwDoc::UpdateFlds( SfxPoolItem *pNewHt, bool bCloseDB )
 
     for( sal_uInt16 i=0; i < mpFldTypes->size(); ++i)
     {
+        if( !(*mpFldTypes)[i] )
+            continue;
+
         switch( (*mpFldTypes)[i]->Which() )
         {
             // Update table fields second to last
@@ -364,13 +375,15 @@ void SwDoc::UpdateUsrFlds()
     SwCalc* pCalc = 0;
     const SwFieldType* pFldType;
     for( sal_uInt16 i = INIT_FLDTYPES; i < mpFldTypes->size(); ++i )
-        if( RES_USERFLD == ( pFldType = (*mpFldTypes)[i] )->Which() )
+    {
+        if( (*mpFldTypes)[i] &&
+            RES_USERFLD == ( pFldType = (*mpFldTypes)[i] )->Which() )
         {
             if( !pCalc )
                 pCalc = new SwCalc( *this );
             ((SwUserFieldType*)pFldType)->GetValue( *pCalc );
         }
-
+    }
     if( pCalc )
     {
         delete pCalc;
@@ -383,8 +396,11 @@ void SwDoc::UpdateRefFlds( SfxPoolItem* pHt )
 {
     SwFieldType* pFldType;
     for( sal_uInt16 i = 0; i < mpFldTypes->size(); ++i )
-        if( RES_GETREFFLD == ( pFldType = (*mpFldTypes)[i] )->Which() )
+    {
+        if( (*mpFldTypes)[i] &&
+            RES_GETREFFLD == ( pFldType = (*mpFldTypes)[i] )->Which() )
             pFldType->ModifyNotification( 0, pHt );
+    }
 }
 
 /// @note For simplicity assume that all field types have updatable contents so
@@ -393,6 +409,9 @@ bool SwDoc::containsUpdatableFields()
 {
     for (sal_uInt16 i = 0; i < mpFldTypes->size(); ++i)
     {
+        if( !(*mpFldTypes)[i] )
+            continue;
+
         SwFieldType* pFldType = (*mpFldTypes)[i];
         SwIterator<SwFmtFld,SwFieldType> aIter(*pFldType);
         if (aIter.First())
@@ -410,7 +429,8 @@ void SwDoc::UpdateTblFlds( SfxPoolItem* pHt )
 
     for (sal_uInt16 i = 0; i < mpFldTypes->size(); ++i)
     {
-        if( RES_TABLEFLD == ( pFldType = (*mpFldTypes)[i] )->Which() )
+        if( (*mpFldTypes)[i] &&
+            RES_TABLEFLD == ( pFldType = (*mpFldTypes)[i] )->Which() )
         {
             SwTableFmlUpdate* pUpdtFld = 0;
             if( pHt && RES_TABLEFML_UPDATE == pHt->Which() )
@@ -659,6 +679,9 @@ void SwDoc::UpdatePageFlds( SfxPoolItem* pMsgHnt )
 {
     SwFieldType* pFldType;
     for( sal_uInt16 i = 0; i < INIT_FLDTYPES; ++i )
+    {
+        if( !(*mpFldTypes)[i] )
+            continue;
         switch( ( pFldType = (*mpFldTypes)[ i ] )->Which() )
         {
         case RES_PAGENUMBERFLD:
@@ -671,6 +694,7 @@ void SwDoc::UpdatePageFlds( SfxPoolItem* pMsgHnt )
             pFldType->ModifyNotification( 0, 0 );
             break;
         }
+    }
     SetNewFldLst(true);
 }
 
@@ -678,8 +702,12 @@ void SwDoc::UpdatePageFlds( SfxPoolItem* pMsgHnt )
 void SwDoc::GCFieldTypes()
 {
     for( sal_uInt16 n = mpFldTypes->size(); n > INIT_FLDTYPES; )
-        if( !(*mpFldTypes)[ --n ]->GetDepends() )
+    {
+        if( !(*mpFldTypes)[--n] )
+            continue;
+        if( !(*mpFldTypes)[n]->GetDepends() )
             RemoveFldType( n );
+    }
 }
 
 void SwDoc::LockExpFlds()
@@ -1252,7 +1280,11 @@ void SwDoc::UpdateExpFlds( SwTxtFld* pUpdtFld, bool bUpdRefFlds )
         const SwFieldType* pFldType;
         // process separately:
         for( n = mpFldTypes->size(); n; )
-            switch( ( pFldType = (*mpFldTypes)[ --n ] )->Which() )
+        {
+            if( !(*mpFldTypes)[--n] )
+                continue;
+
+            switch( ( pFldType = (*mpFldTypes)[n] )->Which() )
             {
             case RES_USERFLD:
                 {
@@ -1274,6 +1306,7 @@ void SwDoc::UpdateExpFlds( SwTxtFld* pUpdtFld, bool bUpdRefFlds )
                 ((SwSetExpFieldType*)pFldType)->SetOutlineChgNd( 0 );
                 break;
             }
+        }
     }
 
     // The array is filled with all fields; start calculation.
@@ -1596,7 +1629,11 @@ void SwDoc::_InitFieldTypes()       // is being called by the CTOR
     mpFldTypes->push_back( new SwPageNumberFieldType );
     mpFldTypes->push_back( new SwAuthorFieldType );
     mpFldTypes->push_back( new SwFileNameFieldType(this) );
+#if HAVE_FEATURE_DBCONNECTIVITY
     mpFldTypes->push_back( new SwDBNameFieldType(this) );
+#else
+    mpFldTypes->push_back( NULL );
+#endif
     mpFldTypes->push_back( new SwGetExpFieldType(this) );
     mpFldTypes->push_back( new SwGetRefFieldType( this ) );
     mpFldTypes->push_back( new SwHiddenTxtFieldType );
@@ -1611,6 +1648,10 @@ void SwDoc::_InitFieldTypes()       // is being called by the CTOR
     mpFldTypes->push_back( new SwDBNextSetFieldType );
     mpFldTypes->push_back( new SwDBNumSetFieldType );
     mpFldTypes->push_back( new SwDBSetNumberFieldType );
+#else
+    mpFldTypes->push_back( NULL );
+    mpFldTypes->push_back( NULL );
+    mpFldTypes->push_back( NULL );
 #endif
     mpFldTypes->push_back( new SwTemplNameFieldType(this) );
     mpFldTypes->push_back( new SwTemplNameFieldType(this) );
@@ -1657,6 +1698,9 @@ const SwDBData& SwDoc::GetDBDesc()
         const sal_uInt16 nSize = mpFldTypes->size();
         for(sal_uInt16 i = 0; i < nSize && maDBData.sDataSource.isEmpty(); ++i)
         {
+            if( !(*mpFldTypes)[i] )
+                continue;
+
             SwFieldType& rFldType = *((*mpFldTypes)[i]);
             sal_uInt16 nWhich = rFldType.Which();
             if(IsUsed(rFldType))
@@ -1923,8 +1967,8 @@ void SwDoc::ChangeDBFields( const std::vector<OUString>& rOldNames,
 
         switch( pFld->GetTyp()->Which() )
         {
-            case RES_DBFLD:
 #if HAVE_FEATURE_DBCONNECTIVITY
+            case RES_DBFLD:
                 if( IsNameInArray( rOldNames, lcl_DBDataToString(((SwDBField*)pFld)->GetDBData())))
                 {
                     SwDBFieldType* pOldTyp = (SwDBFieldType*)pFld->GetTyp();
@@ -1940,7 +1984,6 @@ void SwDoc::ChangeDBFields( const std::vector<OUString>& rOldNames,
 
                     bExpand = true;
                 }
-#endif
                 break;
 
             case RES_DBSETNUMBERFLD:
@@ -1961,6 +2004,7 @@ void SwDoc::ChangeDBFields( const std::vector<OUString>& rOldNames,
                     ((SwDBNameInfField*)pFld)->SetDBData(aNewDBData);
                     bExpand = true;
                 }
+#endif
                 // no break;
             case RES_HIDDENTXTFLD:
             case RES_HIDDENPARAFLD:
@@ -2203,7 +2247,7 @@ void SwDoc::ChangeAuthorityData( const SwAuthEntry* pNewData )
     for( sal_uInt16 i = INIT_FLDTYPES; i < nSize; ++i )
     {
         SwFieldType* pFldType = (*mpFldTypes)[i];
-        if( RES_AUTHORITY  == pFldType->Which() )
+        if( pFldType && RES_AUTHORITY  == pFldType->Which() )
         {
             SwAuthorityFieldType* pAuthType = (SwAuthorityFieldType*)pFldType;
             pAuthType->ChangeEntryContent(pNewData);
@@ -2691,6 +2735,7 @@ bool SwDoc::UpdateFld(SwTxtFld * pDstTxtFld, SwField & rSrcFld,
                     ModifyNotification( 0, pDstFmtFld );
             break;
 
+#if HAVE_FEATURE_DBCONNECTIVITY
         case RES_DBNAMEFLD:
         case RES_DBNEXTSETFLD:
         case RES_DBNUMSETFLD:
@@ -2701,7 +2746,6 @@ bool SwDoc::UpdateFld(SwTxtFld * pDstTxtFld, SwField & rSrcFld,
             break;
 
         case RES_DBFLD:
-#if HAVE_FEATURE_DBCONNECTIVITY
             {
                 // JP 10.02.96: call ChgValue, so that the style change sets the
                 // ContentString correctly
diff --git a/sw/source/core/uibase/uno/unofreg.cxx b/sw/source/core/uibase/uno/unofreg.cxx
index 77b6f90..985e3ee 100644
--- a/sw/source/core/uibase/uno/unofreg.cxx
+++ b/sw/source/core/uibase/uno/unofreg.cxx
@@ -17,6 +17,8 @@
  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
  */
 
+#include <config_features.h>
+
 #include "SwXFilterOptions.hxx"
 #include "unofreg.hxx"
 #include <sal/types.h>
@@ -204,6 +206,7 @@ SAL_DLLPUBLIC_EXPORT void * SAL_CALL sw_component_getFactory(
                 SwXModule_createInstance,
                 SwXModule_getSupportedServiceNames() );
         }
+#if HAVE_FEATURE_DBCONNECTIVITY
         else if( SwXMailMerge_getImplementationName().equalsAsciiL(
                                                     pImplName, nImplNameLen ) )
         {
@@ -212,6 +215,7 @@ SAL_DLLPUBLIC_EXPORT void * SAL_CALL sw_component_getFactory(
                 SwXMailMerge_createInstance,
                 SwXMailMerge_getSupportedServiceNames() );
         }
+#endif
         else if( SwXFilterOptions::getImplementationName_Static().equalsAsciiL(
                                                     pImplName, nImplNameLen ) )
         {
diff --git a/sw/source/core/unocore/unofield.cxx b/sw/source/core/unocore/unofield.cxx
index 8b4a0dc..a469f63 100644
--- a/sw/source/core/unocore/unofield.cxx
+++ b/sw/source/core/unocore/unofield.cxx
@@ -2774,6 +2774,9 @@ uno::Sequence< OUString > SwXTextFieldMasters::getElementNames(void)
     std::vector<OUString> aFldNames;
     for( size_t i = 0; i < nCount; ++i )
     {
+        if (!(*pFldTypes)[i])
+            continue;
+
         SwFieldType& rFldType = *((*pFldTypes)[i]);
 
         OUString sFldName;
@@ -2979,6 +2982,8 @@ SwXFieldEnumeration::SwXFieldEnumeration(SwDoc & rDoc)
     sal_uInt16 nCount = pFldTypes->size();
     for(sal_uInt16 nType = 0;  nType < nCount;  ++nType)
     {
+        if( !(*pFldTypes)[nType] )
+            continue;
         const SwFieldType *pCurType = (*pFldTypes)[nType];
         SwIterator<SwFmtFld,SwFieldType> aIter( *pCurType );
         const SwFmtFld* pCurFldFmt = aIter.First();
commit 739a5bcd2b9e0eada33fb69c5e582b65dfa9ae79
Author: Tor Lillqvist <tml at collabora.com>
Date:   Mon Apr 28 17:29:27 2014 +0300

    We don't want forms in the no-DBCONNECTIVITY case after all, I think
    
    Change-Id: I84e5334c8db4d5c41eccb5ab2203c07aafd20adb

diff --git a/RepositoryModule_host.mk b/RepositoryModule_host.mk
index 0d5185e..a7e176e 100644
--- a/RepositoryModule_host.mk
+++ b/RepositoryModule_host.mk
@@ -50,7 +50,7 @@ $(eval $(call gb_Module_add_moduledirs,libreoffice,\
 	external \
 	extras \
 	filter \
-	forms \
+	$(call gb_Helper_optional,DBCONNECTIVITY,forms) \
 	formula \
 	fpicker \
 	framework \
diff --git a/solenv/bin/native-code.py b/solenv/bin/native-code.py
index c2917c40..59cde03 100755
--- a/solenv/bin/native-code.py
+++ b/solenv/bin/native-code.py
@@ -25,7 +25,6 @@ core_factory_list = [
     ("libconfigmgrlo.a", "configmgr_component_getFactory"),
     ("libdrawinglayerlo.a", "drawinglayer_component_getFactory"),
     ("libfilterconfiglo.a", "filterconfig1_component_getFactory"),
-    ("libfrmlo.a", "frm_component_getFactory"),
     ("libfsstoragelo.a", "fsstorage_component_getFactory"),
     ("libhyphenlo.a", "hyphen_component_getFactory"),
     ("libi18npoollo.a", "i18npool_component_getFactory"),


More information about the Libreoffice-commits mailing list