[Libreoffice-commits] core.git: sw/source
Michael Stahl (via logerrit)
logerrit at kemper.freedesktop.org
Fri Jan 15 12:37:08 UTC 2021
sw/source/core/crsr/bookmrk.cxx | 6 +++---
sw/source/core/layout/frmtool.cxx | 5 +++++
2 files changed, 8 insertions(+), 3 deletions(-)
New commits:
commit 359deaee45fd4a2bfe7aae255e6da38a9e1931ff
Author: Michael Stahl <michael.stahl at allotropia.de>
AuthorDate: Wed Jan 13 14:35:24 2021 +0100
Commit: Michael Stahl <michael.stahl at allotropia.de>
CommitDate: Fri Jan 15 13:36:23 2021 +0100
tdf#135014 sw_fieldmarkhide: allow section overlap with fieldmark
In this bugdoc it happens that the field with instruction
"\aINDEX \\c \"2\"\\h \"A\" \\e \"\t\"\003\063 "
result end is on a node following the start of a section,
so sw::mark::FindFieldSep() asserts.
In this case it looks like the section was wrongly set by the import,
but experimenting with Word reveals that it will respect sectPr on a
paragraph inside a field, so i guess we need to cope with that.
Also adapt InsertCnt_() to skip the section end node.
Change-Id: I5517d463de43b04bf773528a28de12123e534069
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/109305
Tested-by: Jenkins
Reviewed-by: Michael Stahl <michael.stahl at allotropia.de>
diff --git a/sw/source/core/crsr/bookmrk.cxx b/sw/source/core/crsr/bookmrk.cxx
index 18cdae33edfd..167aaf37f625 100644
--- a/sw/source/core/crsr/bookmrk.cxx
+++ b/sw/source/core/crsr/bookmrk.cxx
@@ -102,15 +102,15 @@ namespace sw::mark
}
}
}
- else if (pNode->IsEndNode())
+ else if (pNode->IsEndNode() && !pNode->StartOfSectionNode()->IsSectionNode())
{
assert(nStartNode <= pNode->StartOfSectionIndex());
- // fieldmark cannot overlap node section
+ // fieldmark cannot overlap node section, unless it's a section
n = pNode->StartOfSectionIndex();
}
else
{
- assert(pNode->IsNoTextNode());
+ assert(pNode->IsNoTextNode() || pNode->IsSectionNode());
}
}
assert(ret); // must have found it
diff --git a/sw/source/core/layout/frmtool.cxx b/sw/source/core/layout/frmtool.cxx
index 8590af6aa2a4..9228b4a8b68e 100644
--- a/sw/source/core/layout/frmtool.cxx
+++ b/sw/source/core/layout/frmtool.cxx
@@ -1811,6 +1811,11 @@ void InsertCnt_( SwLayoutFrame *pLay, SwDoc *pDoc,
assert(pNd->GetRedlineMergeFlag() == SwNode::Merge::Hidden);
continue; // skip it
}
+ if (pLayout->HasMergedParas() && !pNd->StartOfSectionNode()->IsCreateFrameWhenHidingRedlines())
+ { // tdf#135014 section break in fieldmark (start inside, end outside)
+ assert(pNd->StartOfSectionNode()->GetRedlineMergeFlag() == SwNode::Merge::Hidden);
+ continue; // skip it
+ }
assert(pActualSection && "Section end without section start?");
assert(pActualSection->GetSectionNode() == pNd->StartOfSectionNode());
More information about the Libreoffice-commits
mailing list