From 29bd00f7628e7a54e69cabcc7e2a1792c24aa55c Mon Sep 17 00:00:00 2001 From: Justin Luth Date: Fri, 28 May 2021 11:38:12 +0200 Subject: [PATCH] tdf#142404 DOCX c15: TabOverMargin no longer true in 2013+ When compatibilityMode is 15, TabOverMargin no longer seems to apply. This is a dramatic visual change in docx that I didn't find any documentation about, but the visual change is obvious enough proof. LibreOffice started saving DOCX as c15 mode in 7.0. [P.S. related TabOverflow also seems to be false with c15, but it acts differently than what LO's tabOverflow code does. That was discussed in a different patch and seems to be a dead end, so I'm ignoring that aspect. Way too many complications and effects on LO native mode.] Change-Id: I5a0a6d695d6825444cf6a362a81803f306e6c6e3 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/116337 Tested-by: Jenkins Reviewed-by: Justin Luth Reviewed-by: Miklos Vajna --- .../data/tdf142404_tabOverMarginC15.docx | Bin 0 -> 9218 bytes sw/qa/extras/ooxmlexport/ooxmlexport16.cxx | 8 ++++++++ writerfilter/source/dmapper/SettingsTable.cxx | 1 + writerfilter/source/filter/WriterFilter.cxx | 1 - 4 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 sw/qa/extras/ooxmlexport/data/tdf142404_tabOverMarginC15.docx diff --git a/sw/qa/extras/ooxmlexport/data/tdf142404_tabOverMarginC15.docx b/sw/qa/extras/ooxmlexport/data/tdf142404_tabOverMarginC15.docx new file mode 100644 index 0000000000000000000000000000000000000000..60af474b5c7de4cc9e9081b883010c2fdd02fffd GIT binary patch literal 9218 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 F{{ul6Q4RnA literal 0 HcmV?d00001 diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport16.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport16.cxx index c0bca8ebfb7b..045102438c90 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlexport16.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlexport16.cxx @@ -218,6 +218,14 @@ DECLARE_OOXMLEXPORT_TEST(testTdf142404_tabSpacing, "tdf142404_tabSpacing.docx") CPPUNIT_ASSERT_EQUAL_MESSAGE("too big for one page", 2, getPages()); } +DECLARE_OOXMLEXPORT_TEST(testTdf142404_tabOverMarginC15, "tdf142404_tabOverMarginC15.docx") +{ + // TabOverMargin no longer applies to compatibilityMode 15 DOCX files. In Word 2016 this is 3pg. + // One page long if tabOverMargin is true. Two pages long if tabOverflow is true. + // Really should be 3 pages long, when tabOverflow is also false, but inadequate implementation. + CPPUNIT_ASSERT_EQUAL_MESSAGE("too big for one page", 2, getPages()); +} + DECLARE_OOXMLEXPORT_TEST(testTdf139580, "tdf139580.odt") { // Without the fix in place, this test would have crashed at export time diff --git a/writerfilter/source/dmapper/SettingsTable.cxx b/writerfilter/source/dmapper/SettingsTable.cxx index 02e0a6f8c4a1..12ec66a54152 100644 --- a/writerfilter/source/dmapper/SettingsTable.cxx +++ b/writerfilter/source/dmapper/SettingsTable.cxx @@ -758,6 +758,7 @@ void SettingsTable::ApplyProperties(uno::Reference const& x uno::Reference xTextFactory(xDoc, uno::UNO_QUERY_THROW); uno::Reference xDocumentSettings(xTextFactory->createInstance("com.sun.star.document.Settings"), uno::UNO_QUERY_THROW); xDocumentSettings->setPropertyValue("MsWordCompMinLineHeightByFly", uno::makeAny(true)); + xDocumentSettings->setPropertyValue("TabOverMargin", uno::makeAny(true)); } // Show changes value diff --git a/writerfilter/source/filter/WriterFilter.cxx b/writerfilter/source/filter/WriterFilter.cxx index 772ca5032b76..55bb89f1e21b 100644 --- a/writerfilter/source/filter/WriterFilter.cxx +++ b/writerfilter/source/filter/WriterFilter.cxx @@ -324,7 +324,6 @@ void WriterFilter::setTargetDocument(const uno::Reference& xDo xSettings->setPropertyValue("FloattableNomargins", uno::makeAny(true)); xSettings->setPropertyValue("ClippedPictures", uno::makeAny(true)); xSettings->setPropertyValue("BackgroundParaOverDrawings", uno::makeAny(true)); - xSettings->setPropertyValue("TabOverMargin", uno::makeAny(true)); xSettings->setPropertyValue("TreatSingleColumnBreakAsPageBreak", uno::makeAny(true)); xSettings->setPropertyValue("PropLineSpacingShrinksFirstLine", uno::makeAny(true)); xSettings->setPropertyValue("DoNotCaptureDrawObjsOnPage", uno::makeAny(true));