summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--solenv/clang-format/blacklist1
-rw-r--r--sw/CppunitTest_sw_ooxmlexport14.mk14
-rw-r--r--sw/Module_sw.mk1
-rw-r--r--sw/qa/extras/ooxmlexport/data/tdf108350_noFontdefaults.docxbin0 -> 7502 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/ooxmlexport14.cxx45
-rw-r--r--writerfilter/source/dmapper/StyleSheetTable.cxx8
6 files changed, 69 insertions, 0 deletions
diff --git a/solenv/clang-format/blacklist b/solenv/clang-format/blacklist
index dece08b26f0c..81d8a233b674 100644
--- a/solenv/clang-format/blacklist
+++ b/solenv/clang-format/blacklist
@@ -14852,6 +14852,7 @@ sw/qa/extras/ooxmlexport/ooxmlexport.cxx
sw/qa/extras/ooxmlexport/ooxmlexport10.cxx
sw/qa/extras/ooxmlexport/ooxmlexport11.cxx
sw/qa/extras/ooxmlexport/ooxmlexport13.cxx
+sw/qa/extras/ooxmlexport/ooxmlexport14.cxx
sw/qa/extras/ooxmlexport/ooxmlexport2.cxx
sw/qa/extras/ooxmlexport/ooxmlexport3.cxx
sw/qa/extras/ooxmlexport/ooxmlexport4.cxx
diff --git a/sw/CppunitTest_sw_ooxmlexport14.mk b/sw/CppunitTest_sw_ooxmlexport14.mk
new file mode 100644
index 000000000000..b582b317c064
--- /dev/null
+++ b/sw/CppunitTest_sw_ooxmlexport14.mk
@@ -0,0 +1,14 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+#*************************************************************************
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+#*************************************************************************
+
+$(eval $(call sw_ooxmlexport_test,14))
+
+# vim: set noet sw=4 ts=4:
diff --git a/sw/Module_sw.mk b/sw/Module_sw.mk
index f72ce87f6653..b16a4aea6e16 100644
--- a/sw/Module_sw.mk
+++ b/sw/Module_sw.mk
@@ -79,6 +79,7 @@ $(eval $(call gb_Module_add_slowcheck_targets,sw,\
CppunitTest_sw_ooxmlexport11 \
CppunitTest_sw_ooxmlexport12 \
CppunitTest_sw_ooxmlexport13 \
+ CppunitTest_sw_ooxmlexport14 \
CppunitTest_sw_ooxmlexport_template \
CppunitTest_sw_ooxmlfieldexport \
CppunitTest_sw_ooxmllinks \
diff --git a/sw/qa/extras/ooxmlexport/data/tdf108350_noFontdefaults.docx b/sw/qa/extras/ooxmlexport/data/tdf108350_noFontdefaults.docx
new file mode 100644
index 000000000000..ea81722799eb
--- /dev/null
+++ b/sw/qa/extras/ooxmlexport/data/tdf108350_noFontdefaults.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport14.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport14.cxx
new file mode 100644
index 000000000000..b06b342c7071
--- /dev/null
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport14.cxx
@@ -0,0 +1,45 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#include <swmodeltestbase.hxx>
+
+#include <com/sun/star/beans/XPropertySet.hpp>
+#include <IDocumentSettingAccess.hxx>
+
+#include <editsh.hxx>
+#include <frmatr.hxx>
+
+class Test : public SwModelTestBase
+{
+public:
+ Test() : SwModelTestBase("/sw/qa/extras/ooxmlexport/data/", "Office Open XML Text") {}
+
+protected:
+ /**
+ * Blacklist handling
+ */
+ bool mustTestImportOf(const char* filename) const override {
+ // If the testcase is stored in some other format, it's pointless to test.
+ return OString(filename).endsWith(".docx");
+ }
+};
+
+
+DECLARE_OOXMLEXPORT_TEST(testTdf108350_noFontdefaults, "tdf108350_noFontdefaults.docx")
+{
+ uno::Reference< container::XNameAccess > paragraphStyles = getStyles("ParagraphStyles");
+ uno::Reference< beans::XPropertySet > xStyleProps(paragraphStyles->getByName("NoParent"), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("Times New Roman"), getProperty<OUString>(xStyleProps, "CharFontName"));
+ //CPPUNIT_ASSERT_EQUAL_MESSAGE("Font size", 10.f, getProperty<float>(xStyleProps, "CharHeight"));
+}
+
+
+CPPUNIT_PLUGIN_IMPLEMENT();
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/writerfilter/source/dmapper/StyleSheetTable.cxx b/writerfilter/source/dmapper/StyleSheetTable.cxx
index bf1ed75c9f9f..05fb9e9b57d9 100644
--- a/writerfilter/source/dmapper/StyleSheetTable.cxx
+++ b/writerfilter/source/dmapper/StyleSheetTable.cxx
@@ -1460,6 +1460,8 @@ void StyleSheetTable::applyDefaults(bool bParaProperties)
m_pImpl->m_rDMapper.GetTextFactory()->createInstance("com.sun.star.text.Defaults"),
uno::UNO_QUERY_THROW );
}
+
+ // WARNING: these defaults only take effect IF there is a DocDefaults style section. Normally there is, but not always.
if( bParaProperties && m_pImpl->m_pDefaultParaProps.get())
{
// tdf#87533 LO will have different defaults here, depending on the locale. Import with documented defaults
@@ -1494,6 +1496,12 @@ void StyleSheetTable::applyDefaults(bool bParaProperties)
}
if( !bParaProperties && m_pImpl->m_pDefaultCharProps.get())
{
+ // tdf#108350: Earlier in DomainMapper for DOCX, Calibri/11pt was set to match MSWord 2007+,
+ // but that is valid only if DocDefaults_rPrDefault is omitted.
+ // Now that DocDefaults_rPrDefault is known, the defaults should be reset to Times New Roman/10pt.
+ if ( m_pImpl->m_rDMapper.IsOOXMLImport() )
+ m_pImpl->m_xTextDefaults->setPropertyValue( getPropertyName(PROP_CHAR_FONT_NAME), css::uno::Any(OUString("Times New Roman")) );
+
const uno::Sequence< beans::PropertyValue > aPropValues = m_pImpl->m_pDefaultCharProps->GetPropertyValues();
for( const auto& rPropValue : aPropValues )
{