sw/inc/IDocumentSettingAccess.hxx |3 ++-
sw/qa/extras/ooxmlexport/data/128197_compat14.docx |binary
sw/qa/extras/ooxmlexport/data/128197_compat15.docx |binary
sw/qa/extras/ooxmlexport/ooxmlexport14.cxx | 15 +++
sw/source/core/doc/DocumentSettingManager.cxx |7 +++
sw/source/core/inc/DocumentSettingManager.hxx |1 +
sw/source/core/text/itrform2.cxx | 10 ++
sw/source/uibase/uno/SwXDocumentSettings.cxx | 13 +
writerfilter/source/dmapper/SettingsTable.cxx |8
9 files changed, 56 insertions(+), 1 deletion(-)
New commits:
commit ed79b0f274c913ce8206a68a2ca9296b84ac0751
Author: Vasily Melenchuk
AuthorDate: Thu Jun 11 09:45:03 2020 +0300
Commit: Thorsten Behrens
CommitDate: Thu Aug 13 11:13:49 2020 +0200
tdf#128197: sw: different line height for DOCX with compat=14
Lines containing just a shape inline without any other text are
treated in DOCX with compatibility option 15 and 14 in a different
way: while compat=15 is layouting line exatly as LO does, in
compat=14 mode minimal line height takes into account just shape
height and not current font.
Change-Id: Id2bdab941a0bbaa9080567d736435d9e0babd490
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/96080
Tested-by: Jenkins
Reviewed-by: Thorsten Behrens
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/100542
diff --git a/sw/inc/IDocumentSettingAccess.hxx
b/sw/inc/IDocumentSettingAccess.hxx
index f182027ded95..814f139b64fc 100644
--- a/sw/inc/IDocumentSettingAccess.hxx
+++ b/sw/inc/IDocumentSettingAccess.hxx
@@ -63,7 +63,8 @@ enum class DocumentSettingId
// tdf#104349 tdf#104668
MS_WORD_COMP_TRAILING_BLANKS,
-
+// tdf#128197 MS Word in some modes can have line height based on shape
height, not on font
+MS_WORD_COMP_MIN_LINE_HEIGHT_BY_FLY,
UNIX_FORCE_ZERO_EXT_LEADING,
TABS_RELATIVE_TO_INDENT,
PROTECT_FORM,
diff --git a/sw/qa/extras/ooxmlexport/data/128197_compat14.docx
b/sw/qa/extras/ooxmlexport/data/128197_compat14.docx
new file mode 100644
index ..507e28396019
Binary files /dev/null and b/sw/qa/extras/ooxmlexport/data/128197_compat14.docx
differ
diff --git a/sw/qa/extras/ooxmlexport/data/128197_compat15.docx
b/sw/qa/extras/ooxmlexport/data/128197_compat15.docx
new file mode 100644
index ..d618b117cfec
Binary files /dev/null and b/sw/qa/extras/ooxmlexport/data/128197_compat15.docx
differ
diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport14.cxx
b/sw/qa/extras/ooxmlexport/ooxmlexport14.cxx
index 237e19092d1a..18a22bbdd30c 100644
--- a/sw/qa/extras/ooxmlexport/ooxmlexport14.cxx
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport14.cxx
@@ -35,6 +35,21 @@ protected:
}
};
+CPPUNIT_TEST_FIXTURE(Test, testTdf128197)
+{
+load(mpTestDocumentPath, "128197_compat14.docx");
+xmlDocPtr pLayout14 = parseLayoutDump();
+sal_Int32 nHeight14 = getXPath(pLayout14,
"//page[1]/body/txt[1]/infos/bounds", "height").toInt32();
+
+load(mpTestDocumentPath, "128197_compat15.docx");
+xmlDocPtr pLayout15 = parseLayoutDump();
+sal_Int32 nHeight15 = getXPath(pLayout15,
"//page[1]/body/txt[1]/infos/bounds", "height").toInt32();
+
+// In compat mode=14 second line has size of the shape thus entire
paragraph height is smaller
+// So nHeight14 < nHeight15
+CPPUNIT_ASSERT_LESS(nHeight15, nHeight14);
+}
+
DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(testTdf78749, "tdf78749.docx")
{
//Shape lost the background image before, now check if it still has...
diff --git a/sw/source/core/doc/DocumentSettingManager.cxx
b/sw/source/core/doc/DocumentSettingManager.cxx
index 11210614c56f..b7f3af73d2af 100644
--- a/sw/source/core/doc/DocumentSettingManager.cxx
+++ b/sw/source/core/doc/DocumentSettingManager.cxx
@@ -76,6 +76,7 @@ sw::DocumentSettingManager::DocumentSettingManager(SwDoc
)
mbTabRelativeToIndent(true),
mbProtectForm(false), // i#78591#
mbMsWordCompTrailingBlanks(false), // tdf#104349 tdf#104668
+mbMsWordCompMinLineHeightByFly(false),
mbInvertBorderSpacing (false),
mbCollapseEmptyCellPara(true),
mbTabAtLeftIndentForParagraphsInList(false), //#i89181#
@@ -181,6 +182,7 @@ bool sw::DocumentSettingManager::get(/*[in]*/
DocumentSettingId id) const
case DocumentSettingId::PROTECT_FORM: return mbProtectForm;
// tdf#104349 tdf#104668
case DocumentSettingId::MS_WORD_COMP_TRAILING_BLANKS: return
mbMsWordCompTrailingBlanks;
+case DocumentSettingId::MS_WORD_COMP_MIN_LINE_HEIGHT_BY_FLY: return
mbMsWordCompMinLineHeightByFly;
// #i89181#
case DocumentSettingId::TAB_AT_LEFT_INDENT_FOR_PARA_IN_LIST: return
mbTabAtLeftIndentForParagraphsInList;
case DocumentSettingId::INVERT_BORDER_SPACING: return
mbInvertBorderSpacing;
@@ -327,6 +329,10 @@ void sw::DocumentSettingManager::set(/*[in]*/
DocumentSettingId id,