sw/qa/extras/odfexport/data/section-columns-separator.fodt |   24 ++++++++
 sw/qa/extras/odfexport/odfexport2.cxx                      |   35 +++++++++++++
 xmloff/source/text/XMLTextColumnsExport.cxx                |   13 ++--
 3 files changed, 66 insertions(+), 6 deletions(-)

New commits:
commit a92df2a6771af8cb510e30d9d011325807f79edd
Author:     Mike Kaganski <[email protected]>
AuthorDate: Sat Aug 6 16:50:47 2022 +0300
Commit:     Xisco Fauli <[email protected]>
CommitDate: Mon Aug 8 11:06:24 2022 +0200

    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 <[email protected]>
      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 <[email protected]>
    (cherry picked from commit f1f6c82e613ace836aa78a822688721fb7fb5e80)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/137820
    Reviewed-by: Xisco Fauli <[email protected]>

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 dc4762314c32..2ced17e903de 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;
             }

Reply via email to