[Libreoffice-commits] core.git: 2 commits - sw/source

Bjoern Michaelsen (via logerrit) logerrit at kemper.freedesktop.org
Wed Feb 26 19:56:48 UTC 2020


 sw/source/core/unocore/unofield.cxx |   42 ++++++++----------------------------
 1 file changed, 10 insertions(+), 32 deletions(-)

New commits:
commit 15bb789b231fb723a679b4565e49b4decbe6d34e
Author:     Bjoern Michaelsen <bjoern.michaelsen at libreoffice.org>
AuthorDate: Tue Feb 25 21:51:19 2020 +0100
Commit:     Björn Michaelsen <bjoern.michaelsen at libreoffice.org>
CommitDate: Wed Feb 26 20:56:23 2020 +0100

    use GatherFields
    
    Change-Id: Ie15add04d66458493476bcbdc9a4f4a1034575e9
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/89487
    Tested-by: Jenkins
    Reviewed-by: Björn Michaelsen <bjoern.michaelsen at libreoffice.org>

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
         {
commit caaf7f9651325e15ab6da4342a653b0fe6e2af3d
Author:     Bjoern Michaelsen <bjoern.michaelsen at libreoffice.org>
AuthorDate: Tue Feb 25 21:10:15 2020 +0100
Commit:     Björn Michaelsen <bjoern.michaelsen at libreoffice.org>
CommitDate: Wed Feb 26 20:56:10 2020 +0100

    use GatherFields
    
    Change-Id: I5a43d233b55edb13b479c1d1d246a4a6682b79a4
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/89484
    Tested-by: Jenkins
    Reviewed-by: Björn Michaelsen <bjoern.michaelsen at libreoffice.org>

diff --git a/sw/source/core/unocore/unofield.cxx b/sw/source/core/unocore/unofield.cxx
index 6b14d9e8e295..c58b1cd936b1 100644
--- a/sw/source/core/unocore/unofield.cxx
+++ b/sw/source/core/unocore/unofield.cxx
@@ -979,17 +979,10 @@ void SAL_CALL SwXFieldMaster::dispose()
     }
 
     // first delete all fields
-    SwIterator<SwFormatField,SwFieldType> aIter( *pFieldType );
-    SwFormatField* pField = aIter.First();
-    while(pField)
-    {
-        SwTextField *pTextField = pField->GetTextField();
-        if(pTextField && pTextField->GetTextNode().GetNodes().IsDocNodes() )
-        {
-            SwTextField::DeleteTextField(*pTextField);
-        }
-        pField = aIter.Next();
-    }
+    std::vector<SwFormatField*> vpFields;
+    pFieldType->GatherFields(vpFields);
+    for(auto pField : vpFields)
+        SwTextField::DeleteTextField(*pField->GetTextField());
     // then delete FieldType
     m_pImpl->m_pDoc->getIDocumentFieldsAccess().RemoveFieldType(nTypeIdx);
 }


More information about the Libreoffice-commits mailing list