[Libreoffice-commits] core.git: sw/qa sw/source
Michael Stahl (via logerrit)
logerrit at kemper.freedesktop.org
Mon Jul 27 09:16:20 UTC 2020
sw/qa/extras/uiwriter/uiwriter.cxx | 22 ++++++++++++++++++++++
sw/source/core/undo/undel.cxx | 25 ++++++++++++++-----------
2 files changed, 36 insertions(+), 11 deletions(-)
New commits:
commit e0b910d3296bd6338f1c3fd67ed97af70b60264a
Author: Michael Stahl <Michael.Stahl at cib.de>
AuthorDate: Thu Jul 23 12:05:44 2020 +0200
Commit: Michael Stahl <michael.stahl at cib.de>
CommitDate: Mon Jul 27 11:15:35 2020 +0200
sw_redlinehide: fix "delete of insert redline"
Don't delete frames on start node in SwUndoDelete::UndoImpl; happens
on SwUiWriterTest::testTdf83260().
(regression from ad0351b84926075297fb74abbe9b31a0455782af)
Change-Id: I271d8bcbe4ab266e9e922e144450f05a24d183cb
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/99410
Tested-by: Jenkins
Reviewed-by: Michael Stahl <michael.stahl at cib.de>
diff --git a/sw/qa/extras/uiwriter/uiwriter.cxx b/sw/qa/extras/uiwriter/uiwriter.cxx
index 02cf3597baf1..45361b4762d9 100644
--- a/sw/qa/extras/uiwriter/uiwriter.cxx
+++ b/sw/qa/extras/uiwriter/uiwriter.cxx
@@ -1640,14 +1640,36 @@ void SwUiWriterTest::testTdf83260()
{
rUndoManager.Undo();
}
+ // check that every text node has a layout frame
+ for (sal_uLong i = 0; i < pDoc->GetNodes().Count(); ++i)
+ {
+ if (SwTextNode const*const pNode = pDoc->GetNodes()[i]->GetTextNode())
+ {
+ CPPUNIT_ASSERT(pNode->getLayoutFrame(nullptr, nullptr, nullptr));
+ }
+ }
for (auto i = nActions; 0 < i; --i)
{
rUndoManager.Redo();
}
+ for (sal_uLong i = 0; i < pDoc->GetNodes().Count(); ++i)
+ {
+ if (SwTextNode const*const pNode = pDoc->GetNodes()[i]->GetTextNode())
+ {
+ CPPUNIT_ASSERT(pNode->getLayoutFrame(nullptr, nullptr, nullptr));
+ }
+ }
for (auto i = nActions; 0 < i; --i)
{
rUndoManager.Undo();
}
+ for (sal_uLong i = 0; i < pDoc->GetNodes().Count(); ++i)
+ {
+ if (SwTextNode const*const pNode = pDoc->GetNodes()[i]->GetTextNode())
+ {
+ CPPUNIT_ASSERT(pNode->getLayoutFrame(nullptr, nullptr, nullptr));
+ }
+ }
}
void SwUiWriterTest::testTdf130274()
diff --git a/sw/source/core/undo/undel.cxx b/sw/source/core/undo/undel.cxx
index cc001373cc37..9a525eb19cbd 100644
--- a/sw/source/core/undo/undel.cxx
+++ b/sw/source/core/undo/undel.cxx
@@ -1058,19 +1058,22 @@ void SwUndoDelete::UndoImpl(::sw::UndoRedoContext & rContext)
if (m_bDisableMakeFrames) // tdf#132944
{
assert(!m_bDelFullPara);
- SwTextNode *const pEndNode(aIdx.GetNodes()[m_nEndNode]->GetTextNode());
- SwIterator<SwTextFrame, SwTextNode, sw::IteratorMode::UnwrapMulti> aIter(*pEndNode);
- for (SwTextFrame* pFrame = aIter.First(); pFrame; pFrame = aIter.Next())
+ if (m_nSttNode != m_nEndNode) // never delete start node's frame!
{
- o3tl::sorted_vector<SwRootFrame *> layouts;
- if (pFrame->getRootFrame()->IsHideRedlines())
- {
- assert(pFrame->GetTextNodeFirst() == pEndNode); // can't be merged with previous
- layouts.insert(pFrame->getRootFrame());
- }
- for (SwRootFrame const*const pLayout : layouts)
+ SwTextNode *const pEndNode(aIdx.GetNodes()[m_nEndNode]->GetTextNode());
+ SwIterator<SwTextFrame, SwTextNode, sw::IteratorMode::UnwrapMulti> aIter(*pEndNode);
+ for (SwTextFrame* pFrame = aIter.First(); pFrame; pFrame = aIter.Next())
{
- pEndNode->DelFrames(pLayout); // SwUndoRedlineDelete will create it
+ o3tl::sorted_vector<SwRootFrame *> layouts;
+ if (pFrame->getRootFrame()->IsHideRedlines())
+ {
+ assert(pFrame->GetTextNodeFirst() == pEndNode); // can't be merged with previous
+ layouts.insert(pFrame->getRootFrame());
+ }
+ for (SwRootFrame const*const pLayout : layouts)
+ {
+ pEndNode->DelFrames(pLayout); // SwUndoRedlineDelete will create it
+ }
}
}
}
More information about the Libreoffice-commits
mailing list