sw/qa/extras/ooxmlexport/data/table.odt |binary sw/qa/extras/ooxmlexport/ooxmlexport.cxx | 14 ++++++++++++++ sw/source/filter/ww8/docxattributeoutput.cxx | 10 ++++++++-- 3 files changed, 22 insertions(+), 2 deletions(-)
New commits: commit 743d90ca384ae71b57eaf2b99fb7da68fc381215 Author: Miklos Vajna <vmik...@collabora.co.uk> Date: Thu Feb 27 14:43:21 2014 +0100 DOCX export: fix order of table border elements Change-Id: I17d8634017c5b0374d30501186b338ddedbcd7ea diff --git a/sw/qa/extras/ooxmlexport/data/table.odt b/sw/qa/extras/ooxmlexport/data/table.odt new file mode 100644 index 0000000..25b2a5f Binary files /dev/null and b/sw/qa/extras/ooxmlexport/data/table.odt differ diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx index 658ef03..400745e 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx @@ -323,6 +323,20 @@ DECLARE_OOXMLEXPORT_TEST(testMathVerticalStacks, "math-vertical_stacks.docx") // CHECK_FORMULA( "binom {a} {binom {b} {c}}", getFormula( getRun( getParagraph( 4 ), 1 ))); } +DECLARE_OOXMLEXPORT_TEST(testTable, "table.odt") +{ + // Validation test: order of elements were wrong. + xmlDocPtr pXmlDoc = parseExport("word/document.xml"); + if (!pXmlDoc) + return; + // Order was: insideH, end, insideV. + int nEnd = getXPathPosition(pXmlDoc, "/w:document/w:body/w:tbl/w:tblPr/w:tblBorders", "end"); + int nInsideH = getXPathPosition(pXmlDoc, "/w:document/w:body/w:tbl/w:tblPr/w:tblBorders", "insideH"); + int nInsideV = getXPathPosition(pXmlDoc, "/w:document/w:body/w:tbl/w:tblPr/w:tblBorders", "insideV"); + CPPUNIT_ASSERT(nEnd < nInsideH); + CPPUNIT_ASSERT(nInsideH < nInsideV); +} + DECLARE_OOXMLEXPORT_TEST(testTablePosition, "table-position.docx") { sal_Int32 xCoordsFromOffice[] = { 2500, -1000, 0, 0 }; diff --git a/sw/source/filter/ww8/docxattributeoutput.cxx b/sw/source/filter/ww8/docxattributeoutput.cxx index dea9e5b..09bfa06 100644 --- a/sw/source/filter/ww8/docxattributeoutput.cxx +++ b/sw/source/filter/ww8/docxattributeoutput.cxx @@ -2119,6 +2119,8 @@ static void impl_borders( FSHelperPtr pSerializer, const SvxBoxItem& rBox, const bExportDistanceFromPageEdge = true; } + bool bWriteInsideH = false; + bool bWriteInsideV = false; for( int i = 0; i < 4; ++i, ++pBrd ) { const SvxBorderLine* pLn = rBox.GetLine( *pBrd ); @@ -2186,11 +2188,15 @@ static void impl_borders( FSHelperPtr pSerializer, const SvxBoxItem& rBox, const // When exporting default borders, we need to export these 2 attr if ( rOptions.bWriteInsideHV) { if ( i == 2 ) - impl_borderLine( pSerializer, XML_insideH, pLn, 0 ); + bWriteInsideH = true; else if ( i == 3 ) - impl_borderLine( pSerializer, XML_insideV, pLn, 0 ); + bWriteInsideV = true; } } + if (bWriteInsideH) + impl_borderLine( pSerializer, XML_insideH, rBox.GetLine(BOX_LINE_BOTTOM), 0 ); + if (bWriteInsideV) + impl_borderLine( pSerializer, XML_insideV, rBox.GetLine(BOX_LINE_RIGHT), 0 ); if (tagWritten && rOptions.bWriteTag) { pSerializer->endElementNS( XML_w, rOptions.tag ); } _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits