sw/source/core/doc/DocumentFieldsManager.cxx | 109 +++++++++++---------------- 1 file changed, 48 insertions(+), 61 deletions(-)
New commits: commit a0eb29631f7c071ab3b51e7a51238ecdb1a84bd5 Author: Bjoern Michaelsen <bjoern.michael...@libreoffice.org> AuthorDate: Tue Mar 10 22:39:56 2020 +0100 Commit: Björn Michaelsen <bjoern.michael...@libreoffice.org> CommitDate: Tue Mar 10 23:58:55 2020 +0100 DocumentFieldsManager::UpdateTableFields(): SwIterator no more ... Change-Id: I9c04e15ae05b8b6e98d79cddd87dff55ebbf1f1a Reviewed-on: https://gerrit.libreoffice.org/c/core/+/90308 Tested-by: Jenkins Reviewed-by: Björn Michaelsen <bjoern.michael...@libreoffice.org> diff --git a/sw/source/core/doc/DocumentFieldsManager.cxx b/sw/source/core/doc/DocumentFieldsManager.cxx index 24bfce63ee5b..f68fdf02e27b 100644 --- a/sw/source/core/doc/DocumentFieldsManager.cxx +++ b/sw/source/core/doc/DocumentFieldsManager.cxx @@ -626,77 +626,64 @@ void DocumentFieldsManager::UpdateTableFields( SfxPoolItem* pHt ) OSL_ENSURE( !pHt || RES_TABLEFML_UPDATE == pHt->Which(), "What MessageItem is this?" ); - SwFieldType* pFieldType(nullptr); - - for (auto const & pFieldTypeTmp : *mpFieldTypes) + auto pFieldType = GetFieldType( SwFieldIds::Table, OUString(), false ); + if(pFieldType) { - if( SwFieldIds::Table == pFieldTypeTmp->Which() ) + std::vector<SwFormatField*> vFields; + pFieldType->GatherFields(vFields); + SwTableFormulaUpdate* pUpdateField = nullptr; + if( pHt && RES_TABLEFML_UPDATE == pHt->Which() ) + pUpdateField = static_cast<SwTableFormulaUpdate*>(pHt); + for(auto pFormatField : vFields) { - SwTableFormulaUpdate* pUpdateField = nullptr; - if( pHt && RES_TABLEFML_UPDATE == pHt->Which() ) - pUpdateField = static_cast<SwTableFormulaUpdate*>(pHt); - - SwIterator<SwFormatField,SwFieldType> aIter( *pFieldTypeTmp ); - for( SwFormatField* pFormatField = aIter.First(); pFormatField; pFormatField = aIter.Next() ) + SwTableField* pField = static_cast<SwTableField*>(pFormatField->GetField()); + if( pUpdateField ) { - if( pFormatField->GetTextField() ) - { - SwTableField* pField = static_cast<SwTableField*>(pFormatField->GetField()); + // table where this field is located + const SwTableNode* pTableNd; + const SwTextNode& rTextNd = pFormatField->GetTextField()->GetTextNode(); + pTableNd = rTextNd.FindTableNode(); + if (pTableNd == nullptr) + continue; - if( pUpdateField ) - { - // table where this field is located - const SwTableNode* pTableNd; - const SwTextNode& rTextNd = pFormatField->GetTextField()->GetTextNode(); - if(!rTextNd.GetNodes().IsDocNodes()) - continue; - pTableNd = rTextNd.FindTableNode(); - if (pTableNd == nullptr) - continue; - - switch( pUpdateField->m_eFlags ) - { - case TBL_CALC: - // re-set the value flag - // JP 17.06.96: internal representation of all formulas - // (reference to other table!!!) - if( nsSwExtendedSubType::SUB_CMD & pField->GetSubType() ) - pField->PtrToBoxNm( pUpdateField->m_pTable ); - else - pField->ChgValid( false ); - break; - case TBL_BOXNAME: - // is this the wanted table? - if( &pTableNd->GetTable() == pUpdateField->m_pTable ) - // to the external representation - pField->PtrToBoxNm( pUpdateField->m_pTable ); - break; - case TBL_BOXPTR: - // to the internal representation - // JP 17.06.96: internal representation on all formulas - // (reference to other table!!!) - pField->BoxNmToPtr( pUpdateField->m_pTable ); - break; - case TBL_RELBOXNAME: - // is this the wanted table? - if( &pTableNd->GetTable() == pUpdateField->m_pTable ) - // to the relative representation - pField->ToRelBoxNm( pUpdateField->m_pTable ); - break; - default: - break; - } - } + switch( pUpdateField->m_eFlags ) + { + case TBL_CALC: + // re-set the value flag + // JP 17.06.96: internal representation of all formulas + // (reference to other table!!!) + if( nsSwExtendedSubType::SUB_CMD & pField->GetSubType() ) + pField->PtrToBoxNm( pUpdateField->m_pTable ); else - // reset the value flag for all pField->ChgValid( false ); + break; + case TBL_BOXNAME: + // is this the wanted table? + if( &pTableNd->GetTable() == pUpdateField->m_pTable ) + // to the external representation + pField->PtrToBoxNm( pUpdateField->m_pTable ); + break; + case TBL_BOXPTR: + // to the internal representation + // JP 17.06.96: internal representation on all formulas + // (reference to other table!!!) + pField->BoxNmToPtr( pUpdateField->m_pTable ); + break; + case TBL_RELBOXNAME: + // is this the wanted table? + if( &pTableNd->GetTable() == pUpdateField->m_pTable ) + // to the relative representation + pField->ToRelBoxNm( pUpdateField->m_pTable ); + break; + default: + break; } } - pFieldType = pFieldTypeTmp.get(); - break; + else + // reset the value flag for all + pField->ChgValid( false ); } } - // process all table box formulas for (const SfxPoolItem* pItem : m_rDoc.GetAttrPool().GetItemSurrogates(RES_BOXATR_FORMULA)) { _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits