sw/qa/extras/uiwriter/uiwriter2.cxx | 68 ++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+)
New commits: commit 400a44261c3891c1fb99b5339ada69cbc4777dd0 Author: László Németh <nem...@numbertext.org> AuthorDate: Mon Aug 23 14:02:35 2021 +0200 Commit: László Németh <nem...@numbertext.org> CommitDate: Wed Aug 25 08:43:16 2021 +0200 tdf#143938 sw test: track format changes of the paragraph Character formatting changes of the wholly selected paragraph weren't tracked before the following fix: commit 5e891c2ee82f2d7566ddb4e15b9c03cecb9fc1f8 "tdf#143939 sw: track format changes of the actual word". This is only an unit test to cover both fixed problems. Change-Id: Ia8ee15895fc309f4c57c54ac8e6b4265969b5256 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/120957 Tested-by: Jenkins Reviewed-by: László Németh <nem...@numbertext.org> diff --git a/sw/qa/extras/uiwriter/uiwriter2.cxx b/sw/qa/extras/uiwriter/uiwriter2.cxx index 8461ef96197a..70d63e36871a 100644 --- a/sw/qa/extras/uiwriter/uiwriter2.cxx +++ b/sw/qa/extras/uiwriter/uiwriter2.cxx @@ -13,6 +13,8 @@ #include <boost/property_tree/json_parser.hpp> +#include <com/sun/star/awt/FontSlant.hpp> +#include <com/sun/star/awt/FontUnderline.hpp> #include <com/sun/star/awt/FontWeight.hpp> #include <com/sun/star/chart/XChartDocument.hpp> #include <com/sun/star/chart2/XChartDocument.hpp> @@ -2892,6 +2894,72 @@ CPPUNIT_TEST_FIXTURE(SwUiWriterTest2, testTdf143918) } } +CPPUNIT_TEST_FIXTURE(SwUiWriterTest2, testTdf143938) +{ + SwDoc* pDoc = createSwDoc(DATA_DIRECTORY, "tdf54819.fodt"); + + SwWrtShell* const pWrtShell = pDoc->GetDocShell()->GetWrtShell(); + + // select first paragraph, add underline without change tracking + pWrtShell->EndPara(/*bSelect=*/true); + dispatchCommand(mxComponent, ".uno:Underline", {}); + + auto xText = getParagraph(1)->getText(); + CPPUNIT_ASSERT(xText.is()); + { + auto xCursor(xText->createTextCursorByRange(getRun(getParagraph(1), 1))); + CPPUNIT_ASSERT(xCursor.is()); + CPPUNIT_ASSERT_EQUAL(OUString("Lorem ipsum"), xCursor->getString()); + CPPUNIT_ASSERT_EQUAL(sal_Int16(awt::FontUnderline::SINGLE), + getProperty<sal_Int16>(xCursor, "CharUnderline")); + CPPUNIT_ASSERT_EQUAL(awt::FontSlant_NONE, + getProperty<awt::FontSlant>(xCursor, "CharPosture")); + } + + // turn on red-lining and show changes + pDoc->getIDocumentRedlineAccess().SetRedlineFlags(RedlineFlags::On | RedlineFlags::ShowDelete + | RedlineFlags::ShowInsert); + CPPUNIT_ASSERT_MESSAGE("redlining should be on", + pDoc->getIDocumentRedlineAccess().IsRedlineOn()); + CPPUNIT_ASSERT_MESSAGE( + "redlines should be visible", + IDocumentRedlineAccess::IsShowChanges(pDoc->getIDocumentRedlineAccess().GetRedlineFlags())); + + // apply italic with change tracking + pWrtShell->Right(CRSR_SKIP_CHARS, /*bSelect=*/true, 6, /*bBasicCall=*/false); + dispatchCommand(mxComponent, ".uno:Italic", {}); + + xText = getParagraph(1)->getText(); + CPPUNIT_ASSERT(xText.is()); + { + // (first empty run is associated to the redline) + auto xCursor(xText->createTextCursorByRange(getRun(getParagraph(1), 2))); + CPPUNIT_ASSERT(xCursor.is()); + CPPUNIT_ASSERT_EQUAL(OUString("Lorem ipsum"), xCursor->getString()); + CPPUNIT_ASSERT_EQUAL(sal_Int16(awt::FontUnderline::SINGLE), + getProperty<sal_Int16>(xCursor, "CharUnderline")); + CPPUNIT_ASSERT_EQUAL(awt::FontSlant_ITALIC, + getProperty<awt::FontSlant>(xCursor, "CharPosture")); + } + + // reject tracked changes + dispatchCommand(mxComponent, ".uno:RejectAllTrackedChanges", {}); + + // no italic, but still underline direct formatting + xText = getParagraph(1)->getText(); + CPPUNIT_ASSERT(xText.is()); + { + auto xCursor(xText->createTextCursorByRange(getRun(getParagraph(1), 1))); + CPPUNIT_ASSERT(xCursor.is()); + CPPUNIT_ASSERT_EQUAL(OUString("Lorem ipsum"), xCursor->getString()); + // This wasn't underlined (lost direct formatting) + CPPUNIT_ASSERT_EQUAL(sal_Int16(awt::FontUnderline::SINGLE), + getProperty<sal_Int16>(xCursor, "CharUnderline")); + CPPUNIT_ASSERT_EQUAL(awt::FontSlant_NONE, + getProperty<awt::FontSlant>(xCursor, "CharPosture")); + } +} + CPPUNIT_TEST_FIXTURE(SwUiWriterTest2, testTdf143939) { SwDoc* pDoc = createSwDoc(DATA_DIRECTORY, "tdf126206.docx");