summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiklos Vajna <vmiklos@collabora.co.uk>2015-12-02 09:05:14 +0100
committerMiklos Vajna <vmiklos@collabora.co.uk>2015-12-02 09:06:11 +0100
commit5cbe4bcc281c77f4929caf1c387f7732fc8f113b (patch)
treeef6ddb05efed16a03712c8e6f78d1154cb32ce2b
parent34cf91de3d0d6455004bacda399351101789d751 (diff)
tdf#94043 RTF filter: implement column separator handling
Change-Id: I9d74642156d7bb79577671bae24346c75178c5c7
-rw-r--r--sw/qa/extras/rtfexport/data/tdf94043.rtf17
-rw-r--r--sw/qa/extras/rtfexport/rtfexport.cxx9
-rw-r--r--sw/source/filter/ww8/rtfattributeoutput.cxx3
-rw-r--r--writerfilter/source/rtftok/rtfdocumentimpl.cxx3
4 files changed, 32 insertions, 0 deletions
diff --git a/sw/qa/extras/rtfexport/data/tdf94043.rtf b/sw/qa/extras/rtfexport/data/tdf94043.rtf
new file mode 100644
index 000000000000..36bd0973c2d8
--- /dev/null
+++ b/sw/qa/extras/rtfexport/data/tdf94043.rtf
@@ -0,0 +1,17 @@
+{\rtf1
+\pard\plain
+{AAA}
+\par \sect\sectd\cols2\linebetcol\colsx0\ltrsect\sbknone\pard\plain
+{\rtlch \ltrch\loch
+Section 1, first column, this has a separator.}
+\par \pard\plain
+{Section 1, second column.}
+\par \sect\sectd\sbknone\pard\plain
+{BBB}
+\par \sect\sectd\cols2\colsx0\ltrsect\sbknone\pard\plain
+{Section 2, first column, this has no separator.}
+\par \pard\plain
+{Section 2, second column.}
+\par \sect\sectd\sbknone\pard\plain
+{CCC}
+\par }
diff --git a/sw/qa/extras/rtfexport/rtfexport.cxx b/sw/qa/extras/rtfexport/rtfexport.cxx
index 4ae23e958300..136860806a49 100644
--- a/sw/qa/extras/rtfexport/rtfexport.cxx
+++ b/sw/qa/extras/rtfexport/rtfexport.cxx
@@ -28,6 +28,7 @@
#include <com/sun/star/text/WritingMode2.hpp>
#include <com/sun/star/view/XViewSettingsSupplier.hpp>
#include <com/sun/star/text/RubyAdjust.hpp>
+#include <com/sun/star/text/XTextColumns.hpp>
#include <vcl/svapp.hxx>
@@ -943,6 +944,14 @@ DECLARE_RTFEXPORT_TEST(testTdf92521, "tdf92521.odt")
CPPUNIT_ASSERT_EQUAL(2, getPages());
}
+DECLARE_RTFEXPORT_TEST(testTdf94043, "tdf94043.rtf")
+{
+ auto xTextSection = getProperty< uno::Reference<beans::XPropertySet> >(getParagraph(2), "TextSection");
+ auto xTextColumns = getProperty< uno::Reference<text::XTextColumns> >(xTextSection, "TextColumns");
+ // This was 0, the separator line was not visible due to 0 width.
+ CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(2), getProperty<sal_Int32>(xTextColumns, "SeparatorLineWidth"));
+}
+
CPPUNIT_PLUGIN_IMPLEMENT();
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sw/source/filter/ww8/rtfattributeoutput.cxx b/sw/source/filter/ww8/rtfattributeoutput.cxx
index 577d827d14b4..ab9ad06b857b 100644
--- a/sw/source/filter/ww8/rtfattributeoutput.cxx
+++ b/sw/source/filter/ww8/rtfattributeoutput.cxx
@@ -3330,6 +3330,9 @@ void RtfAttributeOutput::FormatColumns_Impl(sal_uInt16 nCols, const SwFormatCol&
m_rExport.Strm().WriteCharPtr(OOO_STRING_SVTOOLS_RTF_COLS);
m_rExport.OutLong(nCols);
+ if (rCol.GetLineAdj() != COLADJ_NONE)
+ m_rExport.Strm().WriteCharPtr(OOO_STRING_SVTOOLS_RTF_LINEBETCOL);
+
if (bEven)
{
m_rExport.Strm().WriteCharPtr(OOO_STRING_SVTOOLS_RTF_COLSX);
diff --git a/writerfilter/source/rtftok/rtfdocumentimpl.cxx b/writerfilter/source/rtftok/rtfdocumentimpl.cxx
index 358e2b793e85..2c32453cc093 100644
--- a/writerfilter/source/rtftok/rtfdocumentimpl.cxx
+++ b/writerfilter/source/rtftok/rtfdocumentimpl.cxx
@@ -3530,6 +3530,9 @@ RTFError RTFDocumentImpl::dispatchFlag(RTFKeyword nKeyword)
case RTF_WIDOWCTRL:
m_aSettingsTableSprms.set(NS_ooxml::LN_CT_Settings_widowControl, std::make_shared<RTFValue>(1));
break;
+ case RTF_LINEBETCOL:
+ lcl_putNestedAttribute(m_aStates.top().aSectionSprms, NS_ooxml::LN_EG_SectPrContents_cols, NS_ooxml::LN_CT_Columns_sep, std::make_shared<RTFValue>(1));
+ break;
default:
{
SAL_INFO("writerfilter", "TODO handle flag '" << lcl_RtfToString(nKeyword) << "'");