summaryrefslogtreecommitdiff
path: root/sw/source/core/txtnode/modeltoviewhelper.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'sw/source/core/txtnode/modeltoviewhelper.cxx')
-rw-r--r--sw/source/core/txtnode/modeltoviewhelper.cxx14
1 files changed, 11 insertions, 3 deletions
diff --git a/sw/source/core/txtnode/modeltoviewhelper.cxx b/sw/source/core/txtnode/modeltoviewhelper.cxx
index 846e4d1a51b1..8f0d5ccd7676 100644
--- a/sw/source/core/txtnode/modeltoviewhelper.cxx
+++ b/sw/source/core/txtnode/modeltoviewhelper.cxx
@@ -140,8 +140,16 @@ ModelToViewHelper::ModelToViewHelper(const SwTextNode &rNode,
// skip it, must be handled in loop below
if (pFieldMark->GetMarkStart().nNode < rNode)
{
- SwPosition const sepPos(::sw::mark::FindFieldSep(*pFieldMark));
- startedFields.emplace_front(pFieldMark, sepPos.nNode < rNode);
+ // this can be a nested field's end - skip over those!
+ if (pFieldMark->GetMarkEnd().nNode < rNode)
+ {
+ assert(cursor.GetPoint()->nNode.GetNode().GetTextNode()->GetText()[cursor.GetPoint()->nContent.GetIndex()] == CH_TXT_ATR_FIELDEND);
+ }
+ else
+ {
+ SwPosition const sepPos(::sw::mark::FindFieldSep(*pFieldMark));
+ startedFields.emplace_front(pFieldMark, sepPos.nNode < rNode);
+ }
*cursor.GetPoint() = pFieldMark->GetMarkStart();
}
if (!cursor.Move(fnMoveBackward, GoInContent))
@@ -286,7 +294,7 @@ ModelToViewHelper::ModelToViewHelper(const SwTextNode &rNode,
for (sw::mark::IFieldmark *const pMark : aNoTextFieldmarks)
{
- const sal_Int32 nDummyCharPos = pMark->GetMarkPos().nContent.GetIndex()-1;
+ const sal_Int32 nDummyCharPos = pMark->GetMarkStart().nContent.GetIndex();
if (aHiddenMulti.IsSelected(nDummyCharPos))
continue;
std::vector<block>::iterator aFind = std::find_if(aBlocks.begin(), aBlocks.end(),