[Libreoffice-commits] core.git: sw/inc sw/source
Bjoern Michaelsen (via logerrit)
logerrit at kemper.freedesktop.org
Sun Mar 15 01:21:02 UTC 2020
sw/inc/fldbas.hxx | 2 +-
sw/inc/fmtfld.hxx | 3 ++-
sw/source/core/doc/doc.cxx | 9 ++++-----
sw/source/core/fields/fldbas.cxx | 4 ++--
sw/source/core/txtnode/atrfld.cxx | 14 +++++++++-----
5 files changed, 18 insertions(+), 14 deletions(-)
New commits:
commit 4e3eb6073850e1c8393ec7e61f2fbef082ba233d
Author: Bjoern Michaelsen <bjoern.michaelsen at libreoffice.org>
AuthorDate: Sat Mar 14 23:36:57 2020 +0100
Commit: Björn Michaelsen <bjoern.michaelsen at libreoffice.org>
CommitDate: Sun Mar 15 02:20:16 2020 +0100
SwDoc::RemoveInvisibleContent(): SwIterator no more ...
Change-Id: I62400059950bbd0cd110a4d1144d8e9a7163b744
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/90499
Tested-by: Jenkins
Reviewed-by: Björn Michaelsen <bjoern.michaelsen at libreoffice.org>
diff --git a/sw/inc/fldbas.hxx b/sw/inc/fldbas.hxx
index 10c4faa78adf..ca47780e1287 100644
--- a/sw/inc/fldbas.hxx
+++ b/sw/inc/fldbas.hxx
@@ -279,7 +279,7 @@ public:
bool HasHiddenInformationNotes();
void GatherNodeIndex(std::vector<sal_uLong>& rvNodeIndex);
void GatherRefFields(std::vector<SwGetRefField*>& rvRFields, const sal_uInt16 nTyp);
- void GatherFields(std::vector<SwFormatField*>& rvFormatFields) const;
+ void GatherFields(std::vector<SwFormatField*>& rvFormatFields, bool bCollectOnlyInDocNodes=true) const;
};
inline void SwFieldType::UpdateFields() const
diff --git a/sw/inc/fmtfld.hxx b/sw/inc/fmtfld.hxx
index 1f26be54263e..0745f4ff5fc1 100644
--- a/sw/inc/fmtfld.hxx
+++ b/sw/inc/fmtfld.hxx
@@ -68,8 +68,9 @@ namespace sw {
GatherRefFieldsHint(std::vector<SwGetRefField*>& rvRFields, const sal_uInt16 nType) : m_rvRFields(rvRFields), m_nType(nType) {};
};
struct GatherFieldsHint final : SfxHint {
+ const bool m_bCollectOnlyInDocNodes;
std::vector<SwFormatField*>& m_rvFields;
- GatherFieldsHint(std::vector<SwFormatField*>& rvFields) : m_rvFields(rvFields) {};
+ GatherFieldsHint(std::vector<SwFormatField*>& rvFields, bool bCollectOnlyInDocNodes = true) : m_bCollectOnlyInDocNodes(bCollectOnlyInDocNodes), m_rvFields(rvFields) {};
};
}
diff --git a/sw/source/core/doc/doc.cxx b/sw/source/core/doc/doc.cxx
index 26e47a48725f..f29135722565 100644
--- a/sw/source/core/doc/doc.cxx
+++ b/sw/source/core/doc/doc.cxx
@@ -1400,11 +1400,10 @@ bool SwDoc::RemoveInvisibleContent()
{
if (const SwFieldType* pType = pTypeGuard->get())
{
- SwIterator<SwFormatField, SwFieldType> aIter(*pType);
- for (SwFormatField* pFormatField = aIter.First(); pFormatField;
- pFormatField = aIter.Next())
- bRet |= HandleHidingField(*pFormatField, GetNodes(),
- getIDocumentContentOperations());
+ std::vector<SwFormatField*> vFields;
+ pType->GatherFields(vFields);
+ for(auto pFormatField: vFields)
+ bRet |= HandleHidingField(*pFormatField, GetNodes(), getIDocumentContentOperations());
}
}
}
diff --git a/sw/source/core/fields/fldbas.cxx b/sw/source/core/fields/fldbas.cxx
index cabb78ec6c89..382880ecd8f4 100644
--- a/sw/source/core/fields/fldbas.cxx
+++ b/sw/source/core/fields/fldbas.cxx
@@ -190,9 +190,9 @@ void SwFieldType::GatherRefFields(std::vector<SwGetRefField*>& rvRFields, const
CallSwClientNotify(sw::GatherRefFieldsHint(rvRFields, nTyp));
}
-void SwFieldType::GatherFields(std::vector<SwFormatField*>& rvFields) const
+void SwFieldType::GatherFields(std::vector<SwFormatField*>& rvFields, bool bCollectOnlyInDocNodes) const
{
- CallSwClientNotify(sw::GatherFieldsHint(rvFields));
+ CallSwClientNotify(sw::GatherFieldsHint(rvFields, bCollectOnlyInDocNodes));
}
void SwFieldTypes::dumpAsXml(xmlTextWriterPtr pWriter) const
diff --git a/sw/source/core/txtnode/atrfld.cxx b/sw/source/core/txtnode/atrfld.cxx
index 30b8f6aec960..b41eb943c429 100644
--- a/sw/source/core/txtnode/atrfld.cxx
+++ b/sw/source/core/txtnode/atrfld.cxx
@@ -275,11 +275,15 @@ void SwFormatField::SwClientNotify( const SwModify& rModify, const SfxHint& rHin
pGatherRefFieldsHint->m_rvRFields.push_back(static_cast<SwGetRefField*>(GetField()));
} else if (const auto pGatherFieldsHint = dynamic_cast<const sw::GatherFieldsHint*>( &rHint ))
{
- if(!GetTextField())
- return;
- SwTextNode* pNd = GetTextField()->GetpTextNode();
- if(pNd && pNd->GetNodes().IsDocNodes())
- pGatherFieldsHint->m_rvFields.push_back(this);
+ if(pGatherFieldsHint->m_bCollectOnlyInDocNodes)
+ {
+ if(!GetTextField())
+ return;
+ SwTextNode* pNd = GetTextField()->GetpTextNode();
+ if(!pNd || !pNd->GetNodes().IsDocNodes())
+ return;
+ }
+ pGatherFieldsHint->m_rvFields.push_back(this);
}
}
More information about the Libreoffice-commits
mailing list