diff options
author | Miklos Vajna <vmiklos@collabora.co.uk> | 2017-02-21 09:06:20 +0100 |
---|---|---|
committer | Miklos Vajna <vmiklos@collabora.co.uk> | 2017-02-21 11:40:52 +0000 |
commit | 291c9122b23ce7aa619e828b895b08dcd21bf025 (patch) | |
tree | d8c4ec16b03e3a9254d96e838b43d66ddbde6a48 | |
parent | fe459304497f822b1b9ab1f49602c0a81813c987 (diff) |
tdf#104081 RTF import: handle \htmautsp
It's the opposite of OOXML's <w:doNotUseHTMLParagraphAutoSpacing/>, so
the default is different.
Also adapt the fdo82006 bugdoc where the original bugdoc contained this
flag, but the testcase did not.
Change-Id: I2fd757a8f95be9b1bee63570c9f587c17d3b22bc
Reviewed-on: https://gerrit.libreoffice.org/34507
Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk>
Tested-by: Jenkins <ci@libreoffice.org>
-rw-r--r-- | sw/qa/extras/rtfexport/data/fdo82006.rtf | 2 | ||||
-rw-r--r-- | sw/qa/extras/rtfexport/data/tdf104081.rtf | 4 | ||||
-rw-r--r-- | sw/qa/extras/rtfexport/rtfexport.cxx | 7 | ||||
-rw-r--r-- | writerfilter/source/dmapper/DomainMapper_Impl.hxx | 2 | ||||
-rw-r--r-- | writerfilter/source/dmapper/SettingsTable.cxx | 7 | ||||
-rw-r--r-- | writerfilter/source/dmapper/SettingsTable.hxx | 2 | ||||
-rw-r--r-- | writerfilter/source/rtftok/rtfdispatchflag.cxx | 3 |
7 files changed, 22 insertions, 5 deletions
diff --git a/sw/qa/extras/rtfexport/data/fdo82006.rtf b/sw/qa/extras/rtfexport/data/fdo82006.rtf index 0f5ee43ad2d5..e108d4ceb189 100644 --- a/sw/qa/extras/rtfexport/data/fdo82006.rtf +++ b/sw/qa/extras/rtfexport/data/fdo82006.rtf @@ -1,4 +1,4 @@ -{\rtf1 +{\rtf1\htmautsp \pard\plain \ql \sb100\sa100\sbauto1\saauto1 hello\par } diff --git a/sw/qa/extras/rtfexport/data/tdf104081.rtf b/sw/qa/extras/rtfexport/data/tdf104081.rtf new file mode 100644 index 000000000000..0f5ee43ad2d5 --- /dev/null +++ b/sw/qa/extras/rtfexport/data/tdf104081.rtf @@ -0,0 +1,4 @@ +{\rtf1 +\pard\plain +\ql \sb100\sa100\sbauto1\saauto1 hello\par +} diff --git a/sw/qa/extras/rtfexport/rtfexport.cxx b/sw/qa/extras/rtfexport/rtfexport.cxx index bffb2b11df04..ff413cf0d1f5 100644 --- a/sw/qa/extras/rtfexport/rtfexport.cxx +++ b/sw/qa/extras/rtfexport/rtfexport.cxx @@ -892,6 +892,13 @@ DECLARE_RTFEXPORT_TEST(testFdo82006, "fdo82006.rtf") CPPUNIT_ASSERT_EQUAL(sal_Int32(convertTwipToMm100(280)), getProperty<sal_Int32>(getParagraph(1), "ParaBottomMargin")); } +DECLARE_RTFEXPORT_TEST(testTdf104081, "tdf104081.rtf") +{ + // These were 494 (280 twips), as \htmautsp was ignored. + CPPUNIT_ASSERT_EQUAL(sal_Int32(convertTwipToMm100(100)), getProperty<sal_Int32>(getParagraph(1), "ParaTopMargin")); + CPPUNIT_ASSERT_EQUAL(sal_Int32(convertTwipToMm100(100)), getProperty<sal_Int32>(getParagraph(1), "ParaBottomMargin")); +} + DECLARE_RTFEXPORT_TEST(testTdf88583, "tdf88583.odt") { // This was FillStyle_NONE, as background color was missing from the color table during export. diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.hxx b/writerfilter/source/dmapper/DomainMapper_Impl.hxx index bfa2a5bd7e60..820c3f8c2b17 100644 --- a/writerfilter/source/dmapper/DomainMapper_Impl.hxx +++ b/writerfilter/source/dmapper/DomainMapper_Impl.hxx @@ -601,7 +601,7 @@ public: SettingsTablePtr const & GetSettingsTable() { if( !m_pSettingsTable ) - m_pSettingsTable.reset( new SettingsTable ); + m_pSettingsTable.reset(new SettingsTable(m_rDMapper)); return m_pSettingsTable; } diff --git a/writerfilter/source/dmapper/SettingsTable.cxx b/writerfilter/source/dmapper/SettingsTable.cxx index 8d7bace52257..9a52c416f029 100644 --- a/writerfilter/source/dmapper/SettingsTable.cxx +++ b/writerfilter/source/dmapper/SettingsTable.cxx @@ -30,6 +30,7 @@ #include <comphelper/sequence.hxx> #include <ooxml/resourceids.hxx> #include <ConversionHelper.hxx> +#include <DomainMapper.hxx> #include "util.hxx" using namespace com::sun::star; @@ -99,12 +100,14 @@ struct SettingsTable_Impl }; -SettingsTable::SettingsTable() +SettingsTable::SettingsTable(const DomainMapper& rDomainMapper) : LoggedProperties("SettingsTable") , LoggedTable("SettingsTable") , m_pImpl( new SettingsTable_Impl ) { - + // HTML paragraph auto-spacing is opt-in for RTF, opt-out for OOXML. + if (rDomainMapper.IsRTFImport()) + m_pImpl->m_bDoNotUseHTMLParagraphAutoSpacing = true; } SettingsTable::~SettingsTable() diff --git a/writerfilter/source/dmapper/SettingsTable.hxx b/writerfilter/source/dmapper/SettingsTable.hxx index 6ef0a30a788c..75c0d76e490e 100644 --- a/writerfilter/source/dmapper/SettingsTable.hxx +++ b/writerfilter/source/dmapper/SettingsTable.hxx @@ -45,7 +45,7 @@ class SettingsTable : public LoggedProperties, public LoggedTable std::unique_ptr<SettingsTable_Impl> m_pImpl; public: - SettingsTable(); + SettingsTable(const DomainMapper& rDomainMapper); virtual ~SettingsTable() override; //returns default TabStop in 1/100th mm diff --git a/writerfilter/source/rtftok/rtfdispatchflag.cxx b/writerfilter/source/rtftok/rtfdispatchflag.cxx index 98b212b48386..349149918945 100644 --- a/writerfilter/source/rtftok/rtfdispatchflag.cxx +++ b/writerfilter/source/rtftok/rtfdispatchflag.cxx @@ -1069,6 +1069,9 @@ RTFError RTFDocumentImpl::dispatchFlag(RTFKeyword nKeyword) putNestedAttribute(m_aStates.top().aSectionSprms, NS_ooxml::LN_EG_SectPrContents_pgNumType, NS_ooxml::LN_CT_PageNumber_fmt, pIntValue); } break; + case RTF_HTMAUTSP: + m_aSettingsTableSprms.set(NS_ooxml::LN_CT_Compat_doNotUseHTMLParagraphAutoSpacing, std::make_shared<RTFValue>(0)); + break; default: { SAL_INFO("writerfilter", "TODO handle flag '" << keywordToString(nKeyword) << "'"); |