diff options
author | Michael Stahl <michael.stahl@allotropia.de> | 2021-01-14 20:10:24 +0100 |
---|---|---|
committer | Andras Timar <andras.timar@collabora.com> | 2021-03-22 22:34:04 +0100 |
commit | 9a53a3bcb9a282090ae2a52442e31e5b1225a1ce (patch) | |
tree | 2f796dd6ef0b8379f7ad74c01656a228da508aeb | |
parent | 1fcec627070450aec3611d6a4a008f8153612a64 (diff) |
tdf#135014 sw_redlinehide: fix missing frames when removing fieldmark
A fieldmark was deleted. UpdateFramesForRemoveDeleteRedline() deleted
the MergedPara but its start node was before the start node of the
fieldmark, and then MakeFrames() didn't find a frame on the preceding
node and did nothing.
Similar problem likely possible with redline.
Change-Id: I532f9a67c0268f3287736a61da4cc9fefec7b8e4
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/109307
Tested-by: Jenkins
Reviewed-by: Michael Stahl <michael.stahl@allotropia.de>
(cherry picked from commit 32e104c1d6be0ffe6ed6c4e08af868c87b3c258c)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/109347
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
-rw-r--r-- | sw/source/core/doc/DocumentRedlineManager.cxx | 2 | ||||
-rw-r--r-- | sw/source/core/text/txtfrm.cxx | 2 |
2 files changed, 4 insertions, 0 deletions
diff --git a/sw/source/core/doc/DocumentRedlineManager.cxx b/sw/source/core/doc/DocumentRedlineManager.cxx index ff9b05743d10..8ae32f266bdb 100644 --- a/sw/source/core/doc/DocumentRedlineManager.cxx +++ b/sw/source/core/doc/DocumentRedlineManager.cxx @@ -301,6 +301,8 @@ void UpdateFramesForRemoveDeleteRedline(SwDoc & rDoc, SwPaM const& rPam) pFrame->SetMergedPara(sw::CheckParaRedlineMerge( *pFrame, rFirstNode, eMode)); eMode = sw::FrameMode::New; // Existing is not idempotent! + // update pNode so MakeFrames starts on 2nd node + pNode = &rFirstNode; } } if (pLast != pNode) diff --git a/sw/source/core/text/txtfrm.cxx b/sw/source/core/text/txtfrm.cxx index f6927730edc6..46957b4448f8 100644 --- a/sw/source/core/text/txtfrm.cxx +++ b/sw/source/core/text/txtfrm.cxx @@ -1292,6 +1292,8 @@ void SwTextFrame::SetMergedPara(std::unique_ptr<sw::MergedPara> p) pFirst->Add(this); // must register at node again } } + // postcondition: frame must be listening somewhere + assert(m_pMergedPara || GetDep()); } const OUString& SwTextFrame::GetText() const |