From 5251e7988a3bb1cfccff54eccf7fdd7621c4627c Mon Sep 17 00:00:00 2001 From: Justin Luth Date: Thu, 30 Mar 2017 12:48:18 +0300 Subject: [PATCH] tdf#106701 tabOverMargin: only affect specified tabstops, not autotab Change-Id: I15bf3a8555a152cab90380524b4a968f9f95fc37 Reviewed-on: https://gerrit.libreoffice.org/35924 Tested-by: Jenkins Reviewed-by: Justin Luth --- .../data/tdf106701_tabOverMarginAutotab.doc | Bin 0 -> 21504 bytes sw/qa/extras/uiwriter/uiwriter.cxx | 15 +++++++++++++++ sw/source/core/text/txttab.cxx | 2 +- 3 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 sw/qa/extras/uiwriter/data/tdf106701_tabOverMarginAutotab.doc diff --git a/sw/qa/extras/uiwriter/data/tdf106701_tabOverMarginAutotab.doc b/sw/qa/extras/uiwriter/data/tdf106701_tabOverMarginAutotab.doc new file mode 100644 index 0000000000000000000000000000000000000000..438a8cb791f2cc243ef2d9d3addc5624addfd9f3 GIT binary patch literal 21504 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 HDGmG=_jLj# literal 0 HcmV?d00001 diff --git a/sw/qa/extras/uiwriter/uiwriter.cxx b/sw/qa/extras/uiwriter/uiwriter.cxx index 1bd2b02f1d6e..e5ea84a5d8f0 100644 --- a/sw/qa/extras/uiwriter/uiwriter.cxx +++ b/sw/qa/extras/uiwriter/uiwriter.cxx @@ -227,6 +227,7 @@ public: void testTdf104814(); void testTdf66405(); void testTdf35021_tabOverMarginDemo(); + void testTdf106701_tabOverMarginAutotab(); void testTdf104492(); void testTdf105417(); void testTdf105625(); @@ -349,6 +350,7 @@ public: CPPUNIT_TEST(testTdf104814); CPPUNIT_TEST(testTdf66405); CPPUNIT_TEST(testTdf35021_tabOverMarginDemo); + CPPUNIT_TEST(testTdf106701_tabOverMarginAutotab); CPPUNIT_TEST(testTdf104492); CPPUNIT_TEST(testTdf105417); CPPUNIT_TEST(testTdf105625); @@ -4415,6 +4417,19 @@ void SwUiWriterTest::testTdf35021_tabOverMarginDemo() CPPUNIT_ASSERT_MESSAGE("Decimal Tab width is ~4096", nMargin < nWidth); } +void SwUiWriterTest::testTdf106701_tabOverMarginAutotab() +{ + createDoc("tdf106701_tabOverMarginAutotab.doc"); + calcLayout(); + xmlDocPtr pXmlDoc = parseLayoutDump(); + // The right margin is ~3378 + sal_Int32 nRightMargin = getXPath(pXmlDoc, "//body/txt[1]/infos/prtBounds", "width").toInt32(); + // Automatic tabstops should never be affected by tabOverMargin compatibility + // The 1st line's width previously was ~9506 + sal_Int32 nWidth = getXPath(pXmlDoc, "//LineBreak[1]", "nWidth").toInt32(); + CPPUNIT_ASSERT_MESSAGE("1st line's width is less than the right margin", nWidth < nRightMargin); +} + void SwUiWriterTest::testTdf104492() { createDoc("tdf104492.docx"); diff --git a/sw/source/core/text/txttab.cxx b/sw/source/core/text/txttab.cxx index b2dfd6ff146b..451dcb4d4b4e 100644 --- a/sw/source/core/text/txttab.cxx +++ b/sw/source/core/text/txttab.cxx @@ -378,7 +378,7 @@ bool SwTabPortion::PreFormat( SwTextFormatInfo &rInf ) case POR_TABLEFT: { // handle this case in PostFormat - if( bTabOverMargin && GetTabPos() > rInf.Width() ) + if( bTabOverMargin && !bAutoTabStop && GetTabPos() > rInf.Width() ) { rInf.SetLastTab( this ); break;