From 875bb514b9d50bae02c2999f3be071e654c0d10d Mon Sep 17 00:00:00 2001 From: Oliver Specht Date: Tue, 21 Jan 2025 09:25:21 +0100 Subject: [PATCH] tdf#163340 fixes regression Pasting a single paragraph with a list into an empty paragraph with a different list should keep that target list and not apply the source list. Change-Id: Ife81aa9553bb2396082d23cc86336ad773b83a16 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/180536 Reviewed-by: Gabor Kelemen Tested-by: Gabor Kelemen Tested-by: Jenkins --- sw/qa/extras/uiwriter/data/tdf163340_2.odt | Bin 0 -> 12279 bytes sw/qa/extras/uiwriter/uiwriter9.cxx | 27 ++++++++++++++++++ .../doc/DocumentContentOperationsManager.cxx | 6 ++-- 3 files changed, 30 insertions(+), 3 deletions(-) create mode 100644 sw/qa/extras/uiwriter/data/tdf163340_2.odt diff --git a/sw/qa/extras/uiwriter/data/tdf163340_2.odt b/sw/qa/extras/uiwriter/data/tdf163340_2.odt new file mode 100644 index 0000000000000000000000000000000000000000..c58a181a0846d1e27f62783b6aa6bd1f2983e91b GIT binary patch literal 12279 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 ZOSH7u%csZ^0D%1TF?d>Z+$f*#{tMRZkRJd5 literal 0 HcmV?d00001 diff --git a/sw/qa/extras/uiwriter/uiwriter9.cxx b/sw/qa/extras/uiwriter/uiwriter9.cxx index 66ef51e47102..666f3aefe5dc 100644 --- a/sw/qa/extras/uiwriter/uiwriter9.cxx +++ b/sw/qa/extras/uiwriter/uiwriter9.cxx @@ -855,6 +855,33 @@ CPPUNIT_TEST_FIXTURE(SwUiWriterTest9, testTdf163340) CPPUNIT_ASSERT_EQUAL(u"A."_ustr, getProperty(xParaCursor, u"ListLabelString"_ustr)); } +CPPUNIT_TEST_FIXTURE(SwUiWriterTest9, testTdf163340_2) +{ + //selects and copies a single paragraph with a list (bullets) + //and pastes it into an empty paragraph with a different list (numbers) + //checks that the resulting paragraph keeps that different list + createSwDoc("tdf163340_2.odt"); + uno::Reference xModel(mxComponent, uno::UNO_QUERY); + uno::Reference xTextDocument(mxComponent, uno::UNO_QUERY); + uno::Reference xText = xTextDocument->getText(); + uno::Reference xSelSupplier(xModel->getCurrentController(), + uno::UNO_QUERY_THROW); + uno::Reference xParaCursor(xTextDocument->getText()->createTextCursor(), + uno::UNO_QUERY); + + for (int i = 0; i < 2; i++) + xParaCursor->gotoNextParagraph(false); + xParaCursor->gotoEndOfParagraph(true); + xSelSupplier->select(uno::Any(xParaCursor)); + + xParaCursor = uno::Reference(xText->createTextCursor(), uno::UNO_QUERY); + for (int i = 0; i < 10; i++) + xParaCursor->gotoNextParagraph(false); + xParaCursor->gotoEndOfParagraph(true); + dispatchCommand(mxComponent, u".uno:Paste"_ustr, {}); + CPPUNIT_ASSERT_EQUAL(u"5."_ustr, getProperty(xParaCursor, u"ListLabelString"_ustr)); +} + CPPUNIT_TEST_FIXTURE(SwUiWriterTest9, testTdf159023) { createSwDoc(); diff --git a/sw/source/core/doc/DocumentContentOperationsManager.cxx b/sw/source/core/doc/DocumentContentOperationsManager.cxx index 2efcf0f94493..c2eca8469588 100644 --- a/sw/source/core/doc/DocumentContentOperationsManager.cxx +++ b/sw/source/core/doc/DocumentContentOperationsManager.cxx @@ -491,9 +491,9 @@ namespace if (pTextNd == nullptr || pEndTextNd == nullptr) return false; bool bRet = pTextNd->IsInListFromStyle(); - //prefer list if it's a single paragraph with list from style - if (pTextNd == pEndTextNd && bRet) - return true; + //single paragraphs are preferred only if it's a has a list from style + if (pTextNd == pEndTextNd) + return bRet; if (pTextNd && pTextNd->IsInList() && !pTextNd->IsInListFromStyle() && pEndTextNd && pEndTextNd->IsInList() && !pEndTextNd->IsInListFromStyle())