diff options
Diffstat (limited to 'writerfilter')
-rw-r--r-- | writerfilter/CppunitTest_writerfilter_dmapper.mk | 1 | ||||
-rw-r--r-- | writerfilter/qa/cppunittests/dmapper/SettingsTable.cxx | 46 | ||||
-rw-r--r-- | writerfilter/qa/cppunittests/dmapper/data/do-not-break-wrapped-tables.docx | bin | 0 -> 13150 bytes | |||
-rw-r--r-- | writerfilter/source/dmapper/SettingsTable.cxx | 10 |
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 Binary files differnew file mode 100644 index 000000000000..088c056f3511 --- /dev/null +++ b/writerfilter/qa/cppunittests/dmapper/data/do-not-break-wrapped-tables.docx 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)) |