diff options
-rw-r--r-- | sw/qa/extras/uiwriter/uiwriter2.cxx | 38 | ||||
-rw-r--r-- | sw/source/core/txtnode/ndtxt.cxx | 4 |
2 files changed, 40 insertions, 2 deletions
diff --git a/sw/qa/extras/uiwriter/uiwriter2.cxx b/sw/qa/extras/uiwriter/uiwriter2.cxx index 988225938a89..4e9080bdc951 100644 --- a/sw/qa/extras/uiwriter/uiwriter2.cxx +++ b/sw/qa/extras/uiwriter/uiwriter2.cxx @@ -1409,6 +1409,44 @@ CPPUNIT_TEST_FIXTURE(SwUiWriterTest2, testTdf119571_keep_numbering_with_Reject) CPPUNIT_ASSERT_MESSAGE("Bad numbering", sNumName.isEmpty()); } +CPPUNIT_TEST_FIXTURE(SwUiWriterTest2, testTdf140077) +{ + SwDoc* const pDoc = createSwDoc(); + + SwWrtShell* const pWrtShell = pDoc->GetDocShell()->GetWrtShell(); + + // hide + dispatchCommand(mxComponent, ".uno:ShowTrackedChanges", {}); + + pWrtShell->Insert("a"); + pWrtShell->SplitNode(); + pWrtShell->Insert("b"); + pWrtShell->Left(CRSR_SKIP_CHARS, /*bSelect=*/false, 1, /*bBasicCall=*/false); + pWrtShell->Left(CRSR_SKIP_CHARS, /*bSelect=*/true, 1, /*bBasicCall=*/false); + // enable + dispatchCommand(mxComponent, ".uno:TrackChanges", {}); + + CPPUNIT_ASSERT_MESSAGE("redlining should be on", + pDoc->getIDocumentRedlineAccess().IsRedlineOn()); + CPPUNIT_ASSERT_MESSAGE( + "redlines should be visible", + IDocumentRedlineAccess::IsShowChanges(pDoc->getIDocumentRedlineAccess().GetRedlineFlags())); + CPPUNIT_ASSERT(pWrtShell->GetLayout()->IsHideRedlines()); + + pWrtShell->Delete(); + pWrtShell->SttEndDoc(/*bStart=*/false); + pWrtShell->Left(CRSR_SKIP_CHARS, /*bSelect=*/false, 1, /*bBasicCall=*/false); + dispatchCommand(mxComponent, ".uno:TrackChanges", {}); + + // crashed in layout + pWrtShell->SplitNode(); + + pWrtShell->Undo(); + pWrtShell->Redo(); + pWrtShell->Undo(); + pWrtShell->Redo(); +} + CPPUNIT_TEST_FIXTURE(SwUiWriterTest2, testTdf109376_redline) { SwDoc* pDoc = createSwDoc(); diff --git a/sw/source/core/txtnode/ndtxt.cxx b/sw/source/core/txtnode/ndtxt.cxx index 872e4cee96db..4d576f479e5c 100644 --- a/sw/source/core/txtnode/ndtxt.cxx +++ b/sw/source/core/txtnode/ndtxt.cxx @@ -653,9 +653,9 @@ SwTextNode *SwTextNode::SplitContentNode(const SwPosition & rPos, // Update the extents with new node; also inits merge flag, // so the MakeFramesForAdjacentContentNode below respects it pFrame->RegisterToNode(*pNode); - if (pFrame->GetText().isEmpty()) + if (nSplitPos == 0) { - // turns out it's empty - in this case, it was not + // in this case, it was not // invalidated because Cut didn't sent it any hints, // so we have to invalidate it here! pFrame->Prepare(PrepareHint::Clear, nullptr, false); |