diff options
-rw-r--r-- | sw/qa/extras/ww8import/data/tdf106799.doc | bin | 0 -> 11264 bytes | |||
-rw-r--r-- | sw/qa/extras/ww8import/ww8import.cxx | 15 | ||||
-rw-r--r-- | sw/source/filter/ww8/ww8par.cxx | 4 |
3 files changed, 18 insertions, 1 deletions
diff --git a/sw/qa/extras/ww8import/data/tdf106799.doc b/sw/qa/extras/ww8import/data/tdf106799.doc Binary files differnew file mode 100644 index 000000000000..0637e8cce692 --- /dev/null +++ b/sw/qa/extras/ww8import/data/tdf106799.doc diff --git a/sw/qa/extras/ww8import/ww8import.cxx b/sw/qa/extras/ww8import/ww8import.cxx index 3220a523740a..a3c809cd2dac 100644 --- a/sw/qa/extras/ww8import/ww8import.cxx +++ b/sw/qa/extras/ww8import/ww8import.cxx @@ -562,6 +562,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()); + } +} + CPPUNIT_PLUGIN_IMPLEMENT(); /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/source/filter/ww8/ww8par.cxx b/sw/source/filter/ww8/ww8par.cxx index 71e1acabd799..4ffe803ea3bf 100644 --- a/sw/source/filter/ww8/ww8par.cxx +++ b/sw/source/filter/ww8/ww8par.cxx @@ -3679,7 +3679,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; |