diff options
author | Michael Stahl <mstahl@redhat.com> | 2017-08-18 17:25:17 +0200 |
---|---|---|
committer | Andras Timar <andras.timar@collabora.com> | 2017-08-25 19:39:04 +0200 |
commit | 01e6598294461b36259397ddba8715e4d1ff0b7e (patch) | |
tree | 0451f00ccc110b4bfe2721a4a40e29b76bdfcb6a | |
parent | 5caa0aa95cd855d1047c73a3f8eda59de22e86b7 (diff) |
tdf#99692 sw: fix the fix: don't set bNullContent if node was split
When showing the redlines in rhbz908615-13.odt, the following assertion
happens:
Assertion `IDocumentMarkAccess::IsLegalPaMForCrossRefHeadingBookmark(rPaM) && "<CrossRefBookmark::CrossRefBookmark(..)>" "- creation of cross-reference bookmark with an illegal PaM that does not expand over exactly one whole paragraph."' failed.
This is because in DocumentContentOperationsManager::MoveRange() the
flag bNullContent is set after the node has been split; in this case the
nContent is of course always 0.
Later the function then restores aSavePam to the index 0 of the next
node, when it actually shouldn't do anything because the JoinNext()
already positioned it correctly at the merge-index of the re-joined node.
(regression from 850795942b3e168cab8ce88b4f2b421945ff29ca)
Change-Id: I64d50e70b19e2fd81537a9771fa8706898b17642
(cherry picked from commit 6a018363791945b6fd7f04f2aa311e4f4753f6aa)
Reviewed-on: https://gerrit.libreoffice.org/41305
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Christian Lohmaier <lohmaier+LibreOffice@googlemail.com>
(cherry picked from commit 3ddc16fc26a06a95b7e373ee930881f91b22ad1f)
-rw-r--r-- | sw/source/core/doc/DocumentContentOperationsManager.cxx | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/sw/source/core/doc/DocumentContentOperationsManager.cxx b/sw/source/core/doc/DocumentContentOperationsManager.cxx index d8b4dd197690..1f281830bb35 100644 --- a/sw/source/core/doc/DocumentContentOperationsManager.cxx +++ b/sw/source/core/doc/DocumentContentOperationsManager.cxx @@ -2040,7 +2040,8 @@ bool DocumentContentOperationsManager::MoveRange( SwPaM& rPaM, SwPosition& rPos, // the manipulated range. // tdf#99692 don't Move() back if that would end up in another node // because moving backward is not necessarily the inverse of forward then. - const bool bNullContent = aSavePam.GetPoint()->nContent == 0; + // (but do Move() back if we have split the node) + const bool bNullContent = !bSplit && aSavePam.GetPoint()->nContent == 0; if( bNullContent ) { aSavePam.GetPoint()->nNode--; |