oox/source/drawingml/table/tablecell.cxx |   10 +---------
 oox/source/export/shapes.cxx             |    6 ++++++
 sd/qa/unit/export-tests.cxx              |    3 ++-
 sd/qa/unit/import-tests.cxx              |    2 +-
 4 files changed, 10 insertions(+), 11 deletions(-)

New commits:
commit 6bf805ffb62a13f2f44a26f47f732f05c954ef49
Author:     Gülşah Köse <gulsah.k...@collabora.com>
AuthorDate: Mon Mar 14 14:52:59 2022 +0300
Commit:     Gülşah Köse <gulsah.k...@collabora.com>
CommitDate: Wed Apr 13 08:26:30 2022 +0200

    tdf#147766 Export empty lines as line with noFill
    
    We have a case that 0 width line but has auto color. If that case
    exported there is no line over there, LO handles normally but MSO draws
    back borders as default. To prevent this we have to export them as line
    with noFill.
    
    testTableBorderLineStyle change reverts a workaround for
    3faf005a367cbd28077403bf93810bbaf4805851
    
    testBnc480256 Cell(1,0) still invisible. We are just checking
    this with another way.
    
    Change-Id: If5f6d2dbdba5c295d58307fcfe3b37629ede8a8e
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/131532
    Tested-by: Jenkins
    Reviewed-by: Justin Luth <jl...@mail.com>
    Reviewed-by: Gülşah Köse <gulsah.k...@collabora.com>
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/132886

diff --git a/oox/source/drawingml/table/tablecell.cxx 
b/oox/source/drawingml/table/tablecell.cxx
index 15ab06303e3b..fdf7950dcf2c 100644
--- a/oox/source/drawingml/table/tablecell.cxx
+++ b/oox/source/drawingml/table/tablecell.cxx
@@ -73,20 +73,12 @@ static void applyLineAttributes( const 
::oox::core::XmlFilterBase& rFilterBase,
         aBorderLine.LineWidth = static_cast< sal_Int16 >( GetCoordinate( 
rLineProperties.moLineWidth.get( 0 ) ) / 2 );
         aBorderLine.LineDistance = 0;
     }
-    else if ( rLineProperties.moLineWidth.get(0)!=0 )
-    {
-        aBorderLine.Color = sal_Int32( COL_AUTO );
-        aBorderLine.OuterLineWidth = static_cast< sal_Int16 >( GetCoordinate( 
rLineProperties.moLineWidth.get( 0 ) ) / 4 );
-        aBorderLine.InnerLineWidth = static_cast< sal_Int16 >( GetCoordinate( 
rLineProperties.moLineWidth.get( 0 ) ) / 4 );
-        aBorderLine.LineWidth = static_cast< sal_Int16 >( GetCoordinate( 
rLineProperties.moLineWidth.get( 0 ) ) / 2 );
-        aBorderLine.LineDistance = 0;
-    }
     else
     {
         aBorderLine.Color = sal_Int32( COL_AUTO );
         aBorderLine.OuterLineWidth = static_cast< sal_Int16 >( GetCoordinate( 
rLineProperties.moLineWidth.get( 0 ) ) / 4 );
         aBorderLine.InnerLineWidth = static_cast< sal_Int16 >( GetCoordinate( 
rLineProperties.moLineWidth.get( 0 ) ) / 4 );
-        aBorderLine.LineWidth = 12700;
+        aBorderLine.LineWidth = static_cast< sal_Int16 >( GetCoordinate( 
rLineProperties.moLineWidth.get( 0 ) ) / 2 );
         aBorderLine.LineDistance = 0;
     }
 
diff --git a/oox/source/export/shapes.cxx b/oox/source/export/shapes.cxx
index 138106938ee2..97d09ca1be2e 100644
--- a/oox/source/export/shapes.cxx
+++ b/oox/source/export/shapes.cxx
@@ -1975,6 +1975,12 @@ void ShapeExport::WriteBorderLine(const sal_Int32 
XML_line, const BorderLine2& r
             DrawingML::WriteSolidFill( ::Color(ColorTransparency, 
rBorderLine.Color) );
         mpFS->endElementNS( XML_a, XML_line );
     }
+    else if( nBorderWidth == 0)
+    {
+        mpFS->startElementNS(XML_a, XML_line);
+        mpFS->singleElementNS(XML_a, XML_noFill);
+        mpFS->endElementNS( XML_a, XML_line );
+    }
 }
 
 void ShapeExport::WriteTableCellBorders(const Reference< XPropertySet>& 
xCellPropSet)
diff --git a/sd/qa/unit/export-tests.cxx b/sd/qa/unit/export-tests.cxx
index f1d0281aab0d..729d9f154b12 100644
--- a/sd/qa/unit/export-tests.cxx
+++ b/sd/qa/unit/export-tests.cxx
@@ -602,9 +602,10 @@ void SdExportTest::testBnc480256()
     xCell->getPropertyValue("FillColor") >>= nColor;
     CPPUNIT_ASSERT_EQUAL(Color(0x4697e0), nColor);
 
+    // This border should be invisible.
     xCell.set(xTable->getCellByPosition(1, 0), uno::UNO_QUERY_THROW);
     xCell->getPropertyValue("BottomBorder") >>= aBorderLine;
-    CPPUNIT_ASSERT_EQUAL(COL_AUTO, Color(ColorTransparency, 
aBorderLine.Color));
+    CPPUNIT_ASSERT_EQUAL(sal_Int32(0), sal_Int32(aBorderLine.LineWidth));
 
     xDocShRef->DoClose();
 }
diff --git a/sd/qa/unit/import-tests.cxx b/sd/qa/unit/import-tests.cxx
index c7b508de5dc3..e49892d3a738 100644
--- a/sd/qa/unit/import-tests.cxx
+++ b/sd/qa/unit/import-tests.cxx
@@ -1474,7 +1474,7 @@ void SdImportTest::testTableBorderLineStyle()
         xTable.set(pTableObj->getTable(), uno::UNO_QUERY_THROW);
         xCell.set(xTable->getCellByPosition(0, 0), uno::UNO_QUERY_THROW);
         xCell->getPropertyValue("TopBorder") >>= aBorderLine;
-        if (aBorderLine.Color != -1) {
+        if (aBorderLine.LineWidth > 0) {
             CPPUNIT_ASSERT_EQUAL(nObjBorderLineStyles[i], 
aBorderLine.LineStyle);
         }
     }

Reply via email to