diff options
author | Mike Kaganski <mike.kaganski@collabora.com> | 2022-08-06 16:50:47 +0300 |
---|---|---|
committer | Mike Kaganski <mike.kaganski@collabora.com> | 2022-08-06 18:32:03 +0200 |
commit | f1f6c82e613ace836aa78a822688721fb7fb5e80 (patch) | |
tree | c34a2bd225c3d953661f375e019254700e773b62 | |
parent | abb3c857bd7f00826e891859f08071f7e112841c (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.fodt | 24 | ||||
-rw-r--r-- | sw/qa/extras/odfexport/odfexport2.cxx | 35 | ||||
-rw-r--r-- | xmloff/source/text/XMLTextColumnsExport.cxx | 13 |
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; } |