summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Kaganski <mike.kaganski@collabora.com>2022-08-06 16:50:47 +0300
committerMike Kaganski <mike.kaganski@collabora.com>2022-08-06 18:32:03 +0200
commitf1f6c82e613ace836aa78a822688721fb7fb5e80 (patch)
treec34a2bd225c3d953661f375e019254700e773b62
parentabb3c857bd7f00826e891859f08071f7e112841c (diff)
tdf#150235: use correct types in XMLTextColumnsExport
The types for the properties are defined in css::text::TextColumns servise. But before commit 95ebd24a629b4c8cd62cc20c0701683512cc8fa0 Author Mike Kaganski <mike.kaganski@collabora.com> Date Thu May 27 13:00:10 2021 +0300 editengine-columns: ODF support [API CHANGE] the implementation of the service (SwXTextColumns) used smaller types for some properties. The export code (XMLTextColumnsExport::exportXML) mathced those implementation types. The mentioned commit changed the implementation to use proper types; but the export code wasn't corrected. This fixes the export code. Change-Id: I95838dec382edc61bb2e5b39177bf57a7d79e0bf Reviewed-on: https://gerrit.libreoffice.org/c/core/+/137900 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
-rw-r--r--sw/qa/extras/odfexport/data/section-columns-separator.fodt24
-rw-r--r--sw/qa/extras/odfexport/odfexport2.cxx35
-rw-r--r--xmloff/source/text/XMLTextColumnsExport.cxx13
3 files changed, 66 insertions, 6 deletions
diff --git a/sw/qa/extras/odfexport/data/section-columns-separator.fodt b/sw/qa/extras/odfexport/data/section-columns-separator.fodt
new file mode 100644
index 000000000000..b9c97eb9e38e
--- /dev/null
+++ b/sw/qa/extras/odfexport/data/section-columns-separator.fodt
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<office:document xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" office:version="1.3" office:mimetype="application/vnd.oasis.opendocument.text">
+ <office:automatic-styles>
+ <style:style style:name="Sect1" style:family="section">
+ <style:section-properties text:dont-balance-text-columns="false" style:editable="false">
+ <style:columns fo:column-count="2" fo:column-gap="0.6cm">
+ <style:column-sep style:width="0.009cm" style:color="#99AABB" style:height="50%" style:style="dotted" style:vertical-align="bottom"/>
+ <style:column style:rel-width="32767*" fo:start-indent="0cm" fo:end-indent="0.248cm"/>
+ <style:column style:rel-width="32768*" fo:start-indent="0.248cm" fo:end-indent="0cm"/>
+ </style:columns>
+ </style:section-properties>
+ </style:style>
+ </office:automatic-styles>
+ <office:body>
+ <office:text>
+ <text:section text:style-name="Sect1" text:name="Section1">
+ <text:p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum consequat mi quis pretium semper. Proin luctus orci ac neque venenatis, quis commodo dolor posuere. Curabitur dignissim sapien quis cursus egestas. Donec blandit auctor arcu, nec pellentesque eros molestie eget. In consectetur aliquam hendrerit. Sed cursus mauris vitae ligula pellentesque, non pellentesque urna aliquet. Fusce placerat mauris enim, nec rutrum purus semper vel. Praesent tincidunt neque eu pellentesque pharetra. Fusce pellentesque est orci.</text:p>
+ <text:p>Integer sodales tincidunt tristique. Sed a metus posuere, adipiscing nunc et, viverra odio. Donec auctor molestie sem, sit amet tristique lectus hendrerit sed. Cras sodales nisl sed orci mattis iaculis. Nunc eget dolor accumsan, pharetra risus a, vestibulum mauris. Nunc vulputate lobortis mollis. Vivamus nec tellus faucibus, tempor magna nec, facilisis felis. Donec commodo enim a vehicula pellentesque. Nullam vehicula vestibulum est vel ultricies.</text:p>
+ <text:p>Aliquam velit massa, laoreet vel leo nec, volutpat facilisis eros. Donec consequat arcu ut diam tempor luctus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Praesent vitae lacus vel leo sodales pharetra a a nibh. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nam luctus tempus nibh, fringilla dictum augue consectetur eget. Curabitur at ante sit amet tortor pharetra molestie eu nec ante. Mauris tincidunt, nibh eu sollicitudin molestie, dolor sapien congue tortor, a pulvinar sapien turpis sed ante. Donec nec est elementum, euismod nulla in, mollis nunc.</text:p>
+ </text:section>
+ </office:text>
+ </office:body>
+</office:document> \ No newline at end of file
diff --git a/sw/qa/extras/odfexport/odfexport2.cxx b/sw/qa/extras/odfexport/odfexport2.cxx
index 30b3791d0dbc..2a2f015f6b84 100644
--- a/sw/qa/extras/odfexport/odfexport2.cxx
+++ b/sw/qa/extras/odfexport/odfexport2.cxx
@@ -9,6 +9,9 @@
#include <swmodeltestbase.hxx>
+#include <com/sun/star/style/VerticalAlignment.hpp>
+#include <com/sun/star/text/ColumnSeparatorStyle.hpp>
+#include <com/sun/star/text/XTextColumns.hpp>
#include <com/sun/star/text/XTextTable.hpp>
#include <com/sun/star/text/XTextTablesSupplier.hpp>
#include <unotools/localedatawrapper.hxx>
@@ -228,6 +231,38 @@ CPPUNIT_TEST_FIXTURE(Test, tdf120972)
"char", cDecimal);
}
+DECLARE_ODFEXPORT_TEST(testSectionColumnSeparator, "section-columns-separator.fodt")
+{
+ // tdf#150235: due to wrong types used in column export, 'style:height' and 'style:style'
+ // attributes were exported incorrectly for 'style:column-sep' element
+ auto xSection = getProperty<uno::Reference<uno::XInterface>>(getParagraph(1), "TextSection");
+ auto xColumns = getProperty<uno::Reference<text::XTextColumns>>(xSection, "TextColumns");
+ CPPUNIT_ASSERT(xColumns);
+ CPPUNIT_ASSERT_EQUAL(sal_Int16(2), xColumns->getColumnCount());
+
+ // Without the accompanying fix in place, this test would have failed with:
+ // - Expected: 50
+ // - Actual : 100
+ CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(50),
+ getProperty<sal_Int32>(xColumns, "SeparatorLineRelativeHeight"));
+ // Without the accompanying fix in place, this test would have failed with:
+ // - Expected: 2
+ // - Actual : 0
+ CPPUNIT_ASSERT_EQUAL(css::text::ColumnSeparatorStyle::DOTTED,
+ getProperty<sal_Int16>(xColumns, "SeparatorLineStyle"));
+
+ // Check the rest of the properties, too
+ CPPUNIT_ASSERT_EQUAL(true, getProperty<bool>(xColumns, "IsAutomatic"));
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(600), getProperty<sal_Int32>(xColumns, "AutomaticDistance"));
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(9), getProperty<sal_Int32>(xColumns, "SeparatorLineWidth"));
+ CPPUNIT_ASSERT_EQUAL(Color(0x99, 0xAA, 0xBB),
+ getProperty<Color>(xColumns, "SeparatorLineColor"));
+ CPPUNIT_ASSERT_EQUAL(
+ css::style::VerticalAlignment_BOTTOM,
+ getProperty<css::style::VerticalAlignment>(xColumns, "SeparatorLineVerticalAlignment"));
+ CPPUNIT_ASSERT_EQUAL(true, getProperty<bool>(xColumns, "SeparatorLineIsOn"));
+}
+
CPPUNIT_PLUGIN_IMPLEMENT();
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/xmloff/source/text/XMLTextColumnsExport.cxx b/xmloff/source/text/XMLTextColumnsExport.cxx
index 017045d5f635..ec80f2ed90cc 100644
--- a/xmloff/source/text/XMLTextColumnsExport.cxx
+++ b/xmloff/source/text/XMLTextColumnsExport.cxx
@@ -24,6 +24,7 @@
#include <com/sun/star/text/XTextColumns.hpp>
+#include <com/sun/star/text/ColumnSeparatorStyle.hpp>
#include <com/sun/star/text/TextColumn.hpp>
#include <com/sun/star/style/VerticalAlignment.hpp>
#include <com/sun/star/beans/XPropertySet.hpp>
@@ -117,7 +118,7 @@ void XMLTextColumnsExport::exportXML( const Any& rAny )
// style:height
aAny = xPropSet->getPropertyValue( gsSeparatorLineRelativeHeight );
- sal_Int8 nHeight = 0;
+ sal_Int32 nHeight = 0;
aAny >>= nHeight;
::sax::Converter::convertPercent( sValue, nHeight );
GetExport().AddAttribute( XML_NAMESPACE_STYLE, XML_HEIGHT,
@@ -125,16 +126,16 @@ void XMLTextColumnsExport::exportXML( const Any& rAny )
// style::style
aAny = xPropSet->getPropertyValue( gsSeparatorLineStyle );
- sal_Int8 nStyle = 0;
+ sal_Int16 nStyle = css::text::ColumnSeparatorStyle::NONE;
aAny >>= nStyle;
enum XMLTokenEnum eStr = XML_TOKEN_INVALID;
switch ( nStyle )
{
- case 0: eStr = XML_NONE; break;
- case 1: eStr = XML_SOLID; break;
- case 2: eStr = XML_DOTTED; break;
- case 3: eStr = XML_DASHED; break;
+ case css::text::ColumnSeparatorStyle::NONE: eStr = XML_NONE; break;
+ case css::text::ColumnSeparatorStyle::SOLID: eStr = XML_SOLID; break;
+ case css::text::ColumnSeparatorStyle::DOTTED: eStr = XML_DOTTED; break;
+ case css::text::ColumnSeparatorStyle::DASHED: eStr = XML_DASHED; break;
default:
break;
}