summaryrefslogtreecommitdiff
path: root/writerfilter
diff options
context:
space:
mode:
Diffstat (limited to 'writerfilter')
-rw-r--r--writerfilter/CppunitTest_writerfilter_dmapper.mk1
-rw-r--r--writerfilter/qa/cppunittests/dmapper/SettingsTable.cxx46
-rw-r--r--writerfilter/qa/cppunittests/dmapper/data/do-not-break-wrapped-tables.docxbin0 -> 13150 bytes
-rw-r--r--writerfilter/source/dmapper/SettingsTable.cxx10
4 files changed, 57 insertions, 0 deletions
diff --git a/writerfilter/CppunitTest_writerfilter_dmapper.mk b/writerfilter/CppunitTest_writerfilter_dmapper.mk
index 6dcfa52d6184..209a8e0d6bb8 100644
--- a/writerfilter/CppunitTest_writerfilter_dmapper.mk
+++ b/writerfilter/CppunitTest_writerfilter_dmapper.mk
@@ -24,6 +24,7 @@ $(eval $(call gb_CppunitTest_add_exception_objects,writerfilter_dmapper, \
writerfilter/qa/cppunittests/dmapper/TextEffectsHandler \
writerfilter/qa/cppunittests/dmapper/PropertyMap \
writerfilter/qa/cppunittests/dmapper/SdtHelper \
+ writerfilter/qa/cppunittests/dmapper/SettingsTable \
))
$(eval $(call gb_CppunitTest_use_libraries,writerfilter_dmapper, \
diff --git a/writerfilter/qa/cppunittests/dmapper/SettingsTable.cxx b/writerfilter/qa/cppunittests/dmapper/SettingsTable.cxx
new file mode 100644
index 000000000000..8b36a6170bb0
--- /dev/null
+++ b/writerfilter/qa/cppunittests/dmapper/SettingsTable.cxx
@@ -0,0 +1,46 @@
+/* -*- 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 <test/unoapi_test.hxx>
+
+#include <com/sun/star/beans/XPropertySet.hpp>
+
+using namespace com::sun::star;
+
+namespace
+{
+/// Tests for writerfilter/source/dmapper/SettingsTable.cxx.
+class Test : public UnoApiTest
+{
+public:
+ Test()
+ : UnoApiTest("/writerfilter/qa/cppunittests/dmapper/data/")
+ {
+ }
+};
+
+CPPUNIT_TEST_FIXTURE(Test, testDoNotBreakWrappedTables)
+{
+ // Given a document with <w:doNotBreakWrappedTables>:
+ // When importing that document:
+ loadFromURL(u"do-not-break-wrapped-tables.docx");
+
+ // Then make sure that the matching compat flag is set:
+ uno::Reference<lang::XMultiServiceFactory> xDocument(mxComponent, uno::UNO_QUERY);
+ uno::Reference<beans::XPropertySet> xSettings(
+ xDocument->createInstance("com.sun.star.document.Settings"), uno::UNO_QUERY);
+ bool bDoNotBreakWrappedTables{};
+ xSettings->getPropertyValue("DoNotBreakWrappedTables") >>= bDoNotBreakWrappedTables;
+ // Without the accompanying fix in place, this test would have failed, the compat flag was not
+ // set.
+ CPPUNIT_ASSERT(bDoNotBreakWrappedTables);
+}
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/writerfilter/qa/cppunittests/dmapper/data/do-not-break-wrapped-tables.docx b/writerfilter/qa/cppunittests/dmapper/data/do-not-break-wrapped-tables.docx
new file mode 100644
index 000000000000..088c056f3511
--- /dev/null
+++ b/writerfilter/qa/cppunittests/dmapper/data/do-not-break-wrapped-tables.docx
Binary files differ
diff --git a/writerfilter/source/dmapper/SettingsTable.cxx b/writerfilter/source/dmapper/SettingsTable.cxx
index d24dae617c01..6ebdccddbfe7 100644
--- a/writerfilter/source/dmapper/SettingsTable.cxx
+++ b/writerfilter/source/dmapper/SettingsTable.cxx
@@ -108,6 +108,7 @@ struct SettingsTable_Impl
std::shared_ptr<DocumentProtection> m_pDocumentProtection;
std::shared_ptr<WriteProtection> m_pWriteProtection;
bool m_bGutterAtTop = false;
+ bool m_bDoNotBreakWrappedTables = false;
SettingsTable_Impl() :
m_nDefaultTabStop( 720 ) //default is 1/2 in
@@ -396,6 +397,9 @@ void SettingsTable::lcl_sprm(Sprm& rSprm)
case NS_ooxml::LN_CT_Settings_gutterAtTop:
m_pImpl->m_bGutterAtTop = nIntValue != 0;
break;
+ case NS_ooxml::LN_CT_Compat_doNotBreakWrappedTables:
+ m_pImpl->m_bDoNotBreakWrappedTables = true;
+ break;
default:
{
#ifdef DBG_UTIL
@@ -628,6 +632,12 @@ void SettingsTable::ApplyProperties(uno::Reference<text::XTextDocument> const& x
}
}
+ if (m_pImpl->m_bDoNotBreakWrappedTables)
+ {
+ // Map <w:doNotBreakWrappedTables> to the DoNotBreakWrappedTables compat flag.
+ xDocumentSettings->setPropertyValue("DoNotBreakWrappedTables", uno::Any(true));
+ }
+
// Auto hyphenation: turns on hyphenation by default, <w:suppressAutoHyphens/> may still disable it at a paragraph level.
// Situation is similar for RTF_WIDOWCTRL, which turns on widow / orphan control by default.
if (!(m_pImpl->m_bAutoHyphenation || m_pImpl->m_bNoHyphenateCaps || m_pImpl->m_bWidowControl))