sw/source/core/edit/edfldexp.cxx | 40 +++++++++++++++------------------------ sw/source/core/fields/dbfld.cxx | 23 ++++++++++------------ 2 files changed, 27 insertions(+), 36 deletions(-)
New commits: commit 28411a70596841a974343be5696320aaaad8dae8 Author: Bjoern Michaelsen <bjoern.michael...@libreoffice.org> AuthorDate: Sun Mar 15 02:49:07 2020 +0100 Commit: Björn Michaelsen <bjoern.michael...@libreoffice.org> CommitDate: Sun Mar 15 11:40:23 2020 +0100 SwDbField::PutValue: SwIterator no more ... Change-Id: I5919cf91f342bbd29bad994e4094a3e5490aab21 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/90509 Tested-by: Jenkins Reviewed-by: Björn Michaelsen <bjoern.michael...@libreoffice.org> diff --git a/sw/source/core/fields/dbfld.cxx b/sw/source/core/fields/dbfld.cxx index fbc13f796109..abc9fbd375a8 100644 --- a/sw/source/core/fields/dbfld.cxx +++ b/sw/source/core/fields/dbfld.cxx @@ -402,20 +402,19 @@ bool SwDBField::PutValue( const uno::Any& rAny, sal_uInt16 nWhichId ) nSubTyp |= nsSwExtendedSubType::SUB_INVISIBLE; SetSubType(nSubTyp); //invalidate text node - if(GetTyp()) + auto pType = GetTyp(); + if(!pType) + break; + std::vector<SwFormatField*> vFields; + pType->GatherFields(vFields, false); + for(auto pFormatField: vFields) { - SwIterator<SwFormatField,SwFieldType> aIter( *GetTyp() ); - SwFormatField* pFormatField = aIter.First(); - while(pFormatField) + SwTextField* pTextField = pFormatField->GetTextField(); + if(pTextField && static_cast<SwDBField*>(pFormatField->GetField()) == this) { - SwTextField *pTextField = pFormatField->GetTextField(); - if(pTextField && static_cast<SwDBField*>(pFormatField->GetField()) == this ) - { - //notify the change - pTextField->NotifyContentChange(*pFormatField); - break; - } - pFormatField = aIter.Next(); + //notify the change + pTextField->NotifyContentChange(*pFormatField); + break; } } } commit 7dcda8121bf70bcb95edf82d97e94f44c13255d9 Author: Bjoern Michaelsen <bjoern.michael...@libreoffice.org> AuthorDate: Sun Mar 15 01:34:00 2020 +0100 Commit: Björn Michaelsen <bjoern.michael...@libreoffice.org> CommitDate: Sun Mar 15 11:40:15 2020 +0100 edfldexp.cxx: SwIterator no more ... Change-Id: I3b7aba9c9020e253116940dbe5cd75a047b2e2e0 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/90508 Tested-by: Jenkins Reviewed-by: Björn Michaelsen <bjoern.michael...@libreoffice.org> diff --git a/sw/source/core/edit/edfldexp.cxx b/sw/source/core/edit/edfldexp.cxx index ff2d0d1cdcc4..c0a8fef2af87 100644 --- a/sw/source/core/edit/edfldexp.cxx +++ b/sw/source/core/edit/edfldexp.cxx @@ -34,33 +34,25 @@ bool SwEditShell::IsFieldDataSourceAvailable(OUString& rUsedDataSource) const const SwFieldTypes * pFieldTypes = GetDoc()->getIDocumentFieldsAccess().GetFieldTypes(); uno::Reference<uno::XComponentContext> xContext( ::comphelper::getProcessComponentContext() ); uno::Reference<sdb::XDatabaseContext> xDBContext = sdb::DatabaseContext::create(xContext); - for(const auto & pFieldType : *pFieldTypes) + std::vector<SwFormatField*> vFields; + for(const auto& pFieldType : *pFieldTypes) { if(IsUsed(*pFieldType) && pFieldType->Which() == SwFieldIds::Database) - { - SwIterator<SwFormatField,SwFieldType> aIter( *pFieldType ); - SwFormatField* pFormatField = aIter.First(); - while(pFormatField) - { - if(pFormatField->IsFieldInDoc()) - { - const SwDBData& rData = - static_cast<SwDBFieldType*>(pFormatField->GetField()->GetTyp())->GetDBData(); - try - { - return xDBContext->getByName(rData.sDataSource).hasValue(); - } - catch(uno::Exception const &) - { - rUsedDataSource = rData.sDataSource; - return false; - } - } - pFormatField = aIter.Next(); - } - } + pFieldType->GatherFields(vFields); + } + if(!vFields.size()) + return true; + + const SwDBData& rData = static_cast<SwDBFieldType*>(vFields.front()->GetField()->GetTyp())->GetDBData(); + try + { + return xDBContext->getByName(rData.sDataSource).hasValue(); + } + catch(uno::Exception const &) + { + rUsedDataSource = rData.sDataSource; + return false; } - return true; } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits