[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