diff options
author | Bjoern Michaelsen <bjoern.michaelsen@libreoffice.org> | 2020-02-25 21:51:19 +0100 |
---|---|---|
committer | Björn Michaelsen <bjoern.michaelsen@libreoffice.org> | 2020-02-26 20:56:23 +0100 |
commit | 15bb789b231fb723a679b4565e49b4decbe6d34e (patch) | |
tree | 32239ad973d85705b9e774c6f991e84a22bf8499 | |
parent | caaf7f9651325e15ab6da4342a653b0fe6e2af3d (diff) |
use GatherFields
Change-Id: Ie15add04d66458493476bcbdc9a4f4a1034575e9
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/89487
Tested-by: Jenkins
Reviewed-by: Björn Michaelsen <bjoern.michaelsen@libreoffice.org>
-rw-r--r-- | sw/source/core/unocore/unofield.cxx | 27 |
1 files changed, 6 insertions, 21 deletions
diff --git a/sw/source/core/unocore/unofield.cxx b/sw/source/core/unocore/unofield.cxx index c58b1cd936b1..064d86e78a8b 100644 --- a/sw/source/core/unocore/unofield.cxx +++ b/sw/source/core/unocore/unofield.cxx @@ -826,27 +826,12 @@ SwXFieldMaster::getPropertyValue(const OUString& rPropertyName) else if(rPropertyName == UNO_NAME_DEPENDENT_TEXT_FIELDS) { //fill all text fields into a sequence - std::vector<SwFormatField*> aFieldArr; - SwIterator<SwFormatField,SwFieldType> aIter( *pType ); - SwFormatField* pField = aIter.First(); - while(pField) - { - if(pField->IsFieldInDoc()) - aFieldArr.push_back(pField); - pField = aIter.Next(); - } - - uno::Sequence<uno::Reference <text::XDependentTextField> > aRetSeq(aFieldArr.size()); - uno::Reference<text::XDependentTextField>* pRetSeq = aRetSeq.getArray(); - for(size_t i = 0; i < aFieldArr.size(); ++i) - { - pField = aFieldArr[i]; - uno::Reference<text::XTextField> const xField = - SwXTextField::CreateXTextField(m_pImpl->m_pDoc, pField); - - pRetSeq[i].set(xField, uno::UNO_QUERY); - } - aRet <<= aRetSeq; + std::vector<SwFormatField*> vpFields; + pType->GatherFields(vpFields); + uno::Sequence<uno::Reference <text::XDependentTextField> > aSeq(vpFields.size()); + std::transform(vpFields.begin(), vpFields.end(), aSeq.begin(), + [this](SwFormatField* pF) { return uno::Reference<text::XDependentTextField>(SwXTextField::CreateXTextField(m_pImpl->m_pDoc, pF), uno::UNO_QUERY); }); + aRet <<= aSeq; } else { |