sw/qa/extras/ww8import/data/tdf106799.doc |binary sw/qa/extras/ww8import/ww8import.cxx | 15 +++++++++++++++ sw/source/filter/ww8/ww8par.cxx | 4 +++- 3 files changed, 18 insertions(+), 1 deletion(-)
New commits: commit 584d8437881e44f7f57bccd8d6bed891d2054468 Author: Mike Kaganski <[email protected]> Date: Mon Mar 27 17:35:45 2017 +0300 tdf#106799 WW8: Accept TTP Mark without Cell Mark Paragraph mark of inner table (0x0D) sometimes has sprmPFInnerTtp, but no sprmPFInnerTableCell. This still counts as cell end (at least, MS Word treats it that way). Unit test included. Reviewed-on: https://gerrit.libreoffice.org/35763 Tested-by: Jenkins <[email protected]> Reviewed-by: Mike Kaganski <[email protected]> (cherry picked from commit 59af9cbbccee600408c89e872d548d153523ab1f) Change-Id: I5589cdd486c03ca4567d61882826cc7c245a40c9 Reviewed-on: https://gerrit.libreoffice.org/35773 Reviewed-by: Mike Kaganski <[email protected]> Tested-by: Mike Kaganski <[email protected]> diff --git a/sw/qa/extras/ww8import/data/tdf106799.doc b/sw/qa/extras/ww8import/data/tdf106799.doc new file mode 100644 index 000000000000..0637e8cce692 Binary files /dev/null and b/sw/qa/extras/ww8import/data/tdf106799.doc differ diff --git a/sw/qa/extras/ww8import/ww8import.cxx b/sw/qa/extras/ww8import/ww8import.cxx index 3727c58d090b..fe62252d3c11 100644 --- a/sw/qa/extras/ww8import/ww8import.cxx +++ b/sw/qa/extras/ww8import/ww8import.cxx @@ -65,6 +65,21 @@ DECLARE_WW8IMPORT_TEST(testTdf106291, "tdf106291.doc") CPPUNIT_ASSERT(cellHeight.toInt32() > 200); // height might depend on font size } +DECLARE_WW8IMPORT_TEST(testTdf106799, "tdf106799.doc") +{ + sal_Int32 nCellWidths[3][4] = { { 9530, 0, 0, 0 },{ 2382, 2382, 2382, 2384 },{ 2382, 2382, 2382, 2384 } }; + sal_Int32 nCellTxtLns[3][4] = { { 1, 0, 0, 0 },{ 1, 0, 0, 0},{ 1, 1, 1, 1 } }; + // Table was distorted because of missing sprmPFInnerTableCell at paragraph marks (0x0D) with sprmPFInnerTtp + for (sal_Int32 nRow : { 0, 1, 2 }) + for (sal_Int32 nCell : { 0, 1, 2, 3 }) + { + OString cellXPath("/root/page/body/tab/row/cell/tab/row[" + OString::number(nRow+1) + "]/cell[" + OString::number(nCell+1) + "]/"); + CPPUNIT_ASSERT_EQUAL_MESSAGE(cellXPath.getStr(), nCellWidths[nRow][nCell], parseDump(cellXPath + "infos/bounds", "width").toInt32()); + if (nCellTxtLns[nRow][nCell] != 0) + CPPUNIT_ASSERT_EQUAL_MESSAGE(cellXPath.getStr(), nCellTxtLns[nRow][nCell], parseDump(cellXPath + "txt/Text", "nLength").toInt32()); + } +} + // tests should only be added to ww8IMPORT *if* they fail round-tripping in ww8EXPORT CPPUNIT_PLUGIN_IMPLEMENT(); diff --git a/sw/source/filter/ww8/ww8par.cxx b/sw/source/filter/ww8/ww8par.cxx index 80749085cb86..68520286567a 100644 --- a/sw/source/filter/ww8/ww8par.cxx +++ b/sw/source/filter/ww8/ww8par.cxx @@ -3680,7 +3680,9 @@ bool SwWW8ImplReader::ReadChar(long nPosCp, long nCpOfs) bParaMark = false; } } - else if (m_bWasTabCellEnd) + // tdf#106799: We expect TTP marks to be also cell marks, + // but sometimes sprmPFInnerTtp comes without sprmPFInnerTableCell + else if (m_bWasTabCellEnd || m_bWasTabRowEnd) { TabCellEnd(); bParaMark = false; _______________________________________________ Libreoffice-commits mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
