diff options
author | Xisco Fauli <xiscofauli@libreoffice.org> | 2020-09-22 18:34:46 +0200 |
---|---|---|
committer | Xisco Fauli <xiscofauli@libreoffice.org> | 2020-09-23 13:16:56 +0200 |
commit | 7ccd8928acbb5a27d9b9f44b09b7575757981e8a (patch) | |
tree | 02a3dd807dd60e256e9c284c0c7ec47055de5bbe | |
parent | 046af4edd35f4a802bc0b1e185125339544a683b (diff) |
tdf#136949: Revert "tdf#115753 fix table border missing when there are merged cells"
This reverts commit 2b19cd84f10552c438dace0a4c52a70ccd440369.
Change-Id: I5f3f51e0e816416c364155ab67bc37bb8c6fe545
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/103187
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
-rw-r--r-- | include/test/xmltesttools.hxx | 2 | ||||
-rw-r--r-- | sd/qa/unit/data/pptx/tdf115753.pptx | bin | 34324 -> 0 bytes | |||
-rw-r--r-- | sd/qa/unit/export-tests.cxx | 45 | ||||
-rw-r--r-- | svx/source/table/viewcontactoftableobj.cxx | 14 | ||||
-rw-r--r-- | test/source/xmltesttools.cxx | 10 |
5 files changed, 16 insertions, 55 deletions
diff --git a/include/test/xmltesttools.hxx b/include/test/xmltesttools.hxx index a23b55986b42..f69255b9b85f 100644 --- a/include/test/xmltesttools.hxx +++ b/include/test/xmltesttools.hxx @@ -35,7 +35,7 @@ public: /// Return xmlDocPtr representation of the XML stream read from pStream. static xmlDocUniquePtr parseXmlStream(SvStream* pStream); - static xmlDocUniquePtr dumpAndParse(MetafileXmlDump& rDumper, const GDIMetaFile& rGDIMetaFile, const OUString& rStreamName = OUString()); + static xmlDocUniquePtr dumpAndParse(MetafileXmlDump& rDumper, const GDIMetaFile& rGDIMetaFile); protected: XmlTestTools(); diff --git a/sd/qa/unit/data/pptx/tdf115753.pptx b/sd/qa/unit/data/pptx/tdf115753.pptx Binary files differdeleted file mode 100644 index 0350ddaad44c..000000000000 --- a/sd/qa/unit/data/pptx/tdf115753.pptx +++ /dev/null diff --git a/sd/qa/unit/export-tests.cxx b/sd/qa/unit/export-tests.cxx index 1acda7b2712f..2a0603456bee 100644 --- a/sd/qa/unit/export-tests.cxx +++ b/sd/qa/unit/export-tests.cxx @@ -18,16 +18,13 @@ #include <svx/svdograf.hxx> #include <svx/svdomedia.hxx> #include <unotools/mediadescriptor.hxx> -#include <unotools/streamwrap.hxx> #include <rtl/ustring.hxx> -#include <comphelper/propertysequence.hxx> #include <vcl/opengl/OpenGLWrapper.hxx> #include <vcl/skia/SkiaHelper.hxx> #include <com/sun/star/drawing/XDrawPage.hpp> #include <com/sun/star/drawing/XDrawPagesSupplier.hpp> -#include <com/sun/star/drawing/GraphicExportFilter.hpp> #include <com/sun/star/beans/XPropertySet.hpp> #include <com/sun/star/awt/XBitmap.hpp> #include <com/sun/star/graphic/XGraphic.hpp> @@ -80,7 +77,6 @@ public: void testGlow(); void testSoftEdges(); void testShadowBlur(); - void testTdf115753(); void testRhbz1870501(); CPPUNIT_TEST_SUITE(SdExportTest); @@ -119,7 +115,6 @@ public: CPPUNIT_TEST(testGlow); CPPUNIT_TEST(testSoftEdges); CPPUNIT_TEST(testShadowBlur); - CPPUNIT_TEST(testTdf115753); CPPUNIT_TEST(testRhbz1870501); CPPUNIT_TEST_SUITE_END(); @@ -556,46 +551,6 @@ void SdExportTest::testBnc480256() xDocShRef->DoClose(); } -void SdExportTest::testTdf115753() -{ - sd::DrawDocShellRef xDocShRef = loadURL(m_directories.getURLFromSrc("/sd/qa/unit/data/pptx/tdf115753.pptx"), PPTX); - xDocShRef = saveAndReload(xDocShRef.get(), PPTX); - uno::Reference< drawing::XDrawPagesSupplier > xDoc(xDocShRef->GetDoc()->getUnoModel(), uno::UNO_QUERY_THROW); - uno::Reference< drawing::XDrawPage > xPage(xDoc->getDrawPages()->getByIndex(0), uno::UNO_QUERY_THROW); - uno::Reference< drawing::XShape > xShape(xPage->getByIndex(0), uno::UNO_QUERY_THROW); - - // Save the first shape to a metafile. - uno::Reference<drawing::XGraphicExportFilter> xGraphicExporter = drawing::GraphicExportFilter::create(comphelper::getProcessComponentContext()); - uno::Reference<lang::XComponent> xSourceDoc(xShape, uno::UNO_QUERY); - xGraphicExporter->setSourceDocument(xSourceDoc); - - SvMemoryStream aStream; - uno::Reference<io::XOutputStream> xOutputStream(new utl::OStreamWrapper(aStream)); - uno::Sequence<beans::PropertyValue> aDescriptor(comphelper::InitPropertySequence({ - { "OutputStream", uno::Any(xOutputStream) }, - { "FilterName", uno::Any(OUString("SVM")) } - })); - xGraphicExporter->filter(aDescriptor); - aStream.Seek(STREAM_SEEK_TO_BEGIN); - - // Read it back and dump it as an XML file. - Graphic aGraphic; - ReadGraphic(aStream, aGraphic); - const GDIMetaFile& rMetaFile = aGraphic.GetGDIMetaFile(); - MetafileXmlDump dumper; - - xmlDocUniquePtr pXmlDoc = XmlTestTools::dumpAndParse(dumper, rMetaFile); - CPPUNIT_ASSERT(pXmlDoc); - // Without the fix in place, it will print: - // - Expected: 21180 - // - Actual : 12714 - // because without the fix, one of the border lines is missing, - // and the value, which is where the line ends, will be shorter - // than it should be. - assertXPath(pXmlDoc, "/metafile/push[6]/polyline/point[2]", "x", "21180"); - xDocShRef->DoClose(); -} - void SdExportTest::testUnknownAttributes() { ::sd::DrawDocShellRef xDocShRef = loadURL(m_directories.getURLFromSrc("/sd/qa/unit/data/unknown-attribute.fodp"), FODP); diff --git a/svx/source/table/viewcontactoftableobj.cxx b/svx/source/table/viewcontactoftableobj.cxx index d2778e333383..fe6d03f1d900 100644 --- a/svx/source/table/viewcontactoftableobj.cxx +++ b/svx/source/table/viewcontactoftableobj.cxx @@ -254,6 +254,20 @@ namespace sdr::contact aArray.SetCellStyleRight(aCellPos.mnCol, aCellPos.mnRow, impGetLineStyle(rTableLayouter, aCellPos.mnCol + 1, aCellPos.mnRow, false, nColCount, nRowCount, bIsRTL)); aArray.SetCellStyleTop(aCellPos.mnCol, aCellPos.mnRow, impGetLineStyle(rTableLayouter, aCellPos.mnCol, aCellPos.mnRow, true, nColCount, nRowCount, bIsRTL)); aArray.SetCellStyleBottom(aCellPos.mnCol, aCellPos.mnRow, impGetLineStyle(rTableLayouter, aCellPos.mnCol, aCellPos.mnRow + 1, true, nColCount, nRowCount, bIsRTL)); + + // ignore merged cells (all except the top-left of a merged cell) + if(!xCurrentCell->isMerged()) + { + // check if we are the top-left of a merged cell + const sal_Int32 nXSpan(xCurrentCell->getColumnSpan()); + const sal_Int32 nYSpan(xCurrentCell->getRowSpan()); + + if(nXSpan > 1 || nYSpan > 1) + { + // if merged, set so at CellBorderArray for primitive creation + aArray.SetMergedRange(aCellPos.mnCol, aCellPos.mnRow, aCellPos.mnCol + nXSpan - 1, aCellPos.mnRow + nYSpan - 1); + } + } } if(xCurrentCell.is() && !xCurrentCell->isMerged()) diff --git a/test/source/xmltesttools.cxx b/test/source/xmltesttools.cxx index defb2ec2d096..27833af1e90d 100644 --- a/test/source/xmltesttools.cxx +++ b/test/source/xmltesttools.cxx @@ -59,16 +59,8 @@ xmlDocUniquePtr XmlTestTools::parseXmlStream(SvStream* pStream) return xmlDocUniquePtr(xmlParseDoc(pCharBuffer)); } -xmlDocUniquePtr XmlTestTools::dumpAndParse(MetafileXmlDump& rDumper, const GDIMetaFile& rGDIMetaFile, const OUString& rStreamName) +xmlDocUniquePtr XmlTestTools::dumpAndParse(MetafileXmlDump& rDumper, const GDIMetaFile& rGDIMetaFile) { - if (!rStreamName.isEmpty()) - { - SvStream *pStream = new SvFileStream(rStreamName, StreamMode::STD_READWRITE | StreamMode::TRUNC); - rDumper.dump(rGDIMetaFile, *pStream); - pStream->Seek(STREAM_SEEK_TO_BEGIN); - return XmlTestTools::parseXmlStream(pStream); - } - SvMemoryStream aStream; rDumper.dump(rGDIMetaFile, aStream); aStream.Seek(STREAM_SEEK_TO_BEGIN); |