[Libreoffice-commits] core.git: sw/source
Bjoern Michaelsen (via logerrit)
logerrit at kemper.freedesktop.org
Sun Mar 15 01:20:47 UTC 2020
sw/source/core/fields/docufld.cxx | 77 +++++++++++++++++---------------------
1 file changed, 35 insertions(+), 42 deletions(-)
New commits:
commit aeab7de4cd2975b90d07d8b32d51efd953bbff3c
Author: Bjoern Michaelsen <bjoern.michaelsen at libreoffice.org>
AuthorDate: Sat Mar 14 22:16:41 2020 +0100
Commit: Björn Michaelsen <bjoern.michaelsen at libreoffice.org>
CommitDate: Sun Mar 15 02:20:02 2020 +0100
docufld.cxx: SwIterator no more ...
Change-Id: Ieb0c9f8aea3fa70260cb74e6b7850fd84108aacb
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/90498
Tested-by: Jenkins
Reviewed-by: Björn Michaelsen <bjoern.michaelsen at libreoffice.org>
diff --git a/sw/source/core/fields/docufld.cxx b/sw/source/core/fields/docufld.cxx
index 4faf7c3bd74a..6b4c4eb39b7c 100644
--- a/sw/source/core/fields/docufld.cxx
+++ b/sw/source/core/fields/docufld.cxx
@@ -2173,13 +2173,10 @@ void SwRefPageGetFieldType::Modify( const SfxPoolItem* pOld, const SfxPoolItem*
SetGetExpFields aTmpLst;
if (MakeSetList(aTmpLst, pLayout))
{
- SwIterator<SwFormatField,SwFieldType> aIter( *this );
- for ( SwFormatField* pFormatField = aIter.First(); pFormatField; pFormatField = aIter.Next() )
- {
- // update only the GetRef fields
- if( pFormatField->GetTextField() )
- UpdateField(pFormatField->GetTextField(), aTmpLst, pLayout);
- }
+ std::vector<SwFormatField*> vFields;
+ GatherFields(vFields);
+ for(auto pFormatField: vFields)
+ UpdateField(pFormatField->GetTextField(), aTmpLst, pLayout);
}
};
@@ -2214,51 +2211,47 @@ bool SwRefPageGetFieldType::MakeSetList(SetGetExpFields& rTmpLst,
SwRootFrame const*const pLayout)
{
IDocumentRedlineAccess const& rIDRA(m_pDoc->getIDocumentRedlineAccess());
- SwIterator<SwFormatField,SwFieldType> aIter(*m_pDoc->getIDocumentFieldsAccess().GetSysFieldType( SwFieldIds::RefPageSet));
- for ( SwFormatField* pFormatField = aIter.First(); pFormatField; pFormatField = aIter.Next() )
+ std::vector<SwFormatField*> vFields;
+ GatherFields(vFields);
+ for(auto pFormatField: vFields)
{
// update only the GetRef fields
const SwTextField* pTField = pFormatField->GetTextField();
- if( pTField )
+ if (!pLayout || !pLayout->IsHideRedlines() || !sw::IsFieldDeletedInModel(rIDRA, *pTField))
{
- if (!pLayout || !pLayout->IsHideRedlines()
- || !sw::IsFieldDeletedInModel(rIDRA, *pTField))
- {
- const SwTextNode& rTextNd = pTField->GetTextNode();
+ const SwTextNode& rTextNd = pTField->GetTextNode();
- // Always the first! (in Tab-Headline, header/footer )
- Point aPt;
- std::pair<Point, bool> const tmp(aPt, false);
- const SwContentFrame *const pFrame = rTextNd.getLayoutFrame(
- pLayout, nullptr, &tmp);
-
- std::unique_ptr<SetGetExpField> pNew;
+ // Always the first! (in Tab-Headline, header/footer )
+ Point aPt;
+ std::pair<Point, bool> const tmp(aPt, false);
+ const SwContentFrame *const pFrame = rTextNd.getLayoutFrame(
+ pLayout, nullptr, &tmp);
- if( !pFrame ||
- pFrame->IsInDocBody() ||
- // #i31868#
- // Check if pFrame is not yet connected to the layout.
- !pFrame->FindPageFrame() )
- {
- // create index for determination of the TextNode
- SwNodeIndex aIdx( rTextNd );
- pNew.reset( new SetGetExpField( aIdx, pTField ) );
- }
- else
- {
- // create index for determination of the TextNode
- SwPosition aPos( m_pDoc->GetNodes().GetEndOfPostIts() );
- bool const bResult = GetBodyTextNode( *m_pDoc, aPos, *pFrame );
- OSL_ENSURE(bResult, "where is the Field?");
- pNew.reset( new SetGetExpField( aPos.nNode, pTField,
- &aPos.nContent ) );
- }
+ std::unique_ptr<SetGetExpField> pNew;
- rTmpLst.insert( std::move(pNew) );
+ if( !pFrame ||
+ pFrame->IsInDocBody() ||
+ // #i31868#
+ // Check if pFrame is not yet connected to the layout.
+ !pFrame->FindPageFrame() )
+ {
+ // create index for determination of the TextNode
+ SwNodeIndex aIdx( rTextNd );
+ pNew.reset( new SetGetExpField( aIdx, pTField ) );
}
+ else
+ {
+ // create index for determination of the TextNode
+ SwPosition aPos( m_pDoc->GetNodes().GetEndOfPostIts() );
+ bool const bResult = GetBodyTextNode( *m_pDoc, aPos, *pFrame );
+ OSL_ENSURE(bResult, "where is the Field?");
+ pNew.reset( new SetGetExpField( aPos.nNode, pTField,
+ &aPos.nContent ) );
+ }
+
+ rTmpLst.insert( std::move(pNew) );
}
}
-
return !rTmpLst.empty();
}
More information about the Libreoffice-commits
mailing list