diff options
author | Miklos Vajna <vmiklos@collabora.co.uk> | 2016-01-08 11:23:48 +0100 |
---|---|---|
committer | Miklos Vajna <vmiklos@collabora.co.uk> | 2016-01-08 11:23:48 +0100 |
commit | 1ec88cdb82a28851c4b97d7f043d8bcec3c675e8 (patch) | |
tree | 0342d3c82b79020307a8440e0fef4a08c1922fb5 /sw/qa | |
parent | 6e2b8411a9352cef56e310a1a01b6000e7d15ca7 (diff) |
tdf#96308 RTF import: fix tab stop inheritance inside table cells
The tab stop list is a paragraph property, and RTF requires to repeat it
after \s as direct formatting, otherwise the parser should be assumed
that the tab stop list is cleared as a direct formatting.
Non-buffered text handles that in getDefaultSPRM(), handle it directly
in the RTF_PARD code for buffered text.
Change-Id: I16b09bc4c177df5a74d16653b829b198aa1a800f
Diffstat (limited to 'sw/qa')
-rw-r--r-- | sw/qa/extras/rtfimport/data/tdf96308-tabpos.rtf | 12 | ||||
-rw-r--r-- | sw/qa/extras/rtfimport/rtfimport.cxx | 16 |
2 files changed, 28 insertions, 0 deletions
diff --git a/sw/qa/extras/rtfimport/data/tdf96308-tabpos.rtf b/sw/qa/extras/rtfimport/data/tdf96308-tabpos.rtf new file mode 100644 index 000000000000..59fdb8fbffc4 --- /dev/null +++ b/sw/qa/extras/rtfimport/data/tdf96308-tabpos.rtf @@ -0,0 +1,12 @@ +{\rtf1 +{\stylesheet +{\s30\tx2552 Body Text 3;} +} +\deftab284 +\pard\plain\par +\trowd\cellx2694\cellx4678 \pard\intbl\tx284 A1\cell +\pard\intbl\tx2694 before\par +\pard\plain\s30\intbl 7.\tab Champion\par +\pard\plain\intbl after\cell\row +\pard\par +} diff --git a/sw/qa/extras/rtfimport/rtfimport.cxx b/sw/qa/extras/rtfimport/rtfimport.cxx index b1f77063a1f3..ba78b9a3428d 100644 --- a/sw/qa/extras/rtfimport/rtfimport.cxx +++ b/sw/qa/extras/rtfimport/rtfimport.cxx @@ -2391,6 +2391,22 @@ DECLARE_RTFIMPORT_TEST(testTdf96308Deftab, "tdf96308-deftab.rtf") CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(convertTwipToMm100(284)), getProperty<sal_Int32>(xDefaults, "TabStopDistance")); } +DECLARE_RTFIMPORT_TEST(testTdf96308Tabpos, "tdf96308-tabpos.rtf") +{ + // Get the tab stops of the second para in the B1 cell of the first table in the document. + uno::Reference<text::XTextTablesSupplier> xTextTablesSupplier(mxComponent, uno::UNO_QUERY); + uno::Reference<container::XIndexAccess> xTables(xTextTablesSupplier->getTextTables(), uno::UNO_QUERY); + uno::Reference<text::XTextTable> xTable(xTables->getByIndex(0), uno::UNO_QUERY); + uno::Reference<text::XTextRange> xCell(xTable->getCellByName("B1"), uno::UNO_QUERY); + uno::Reference<container::XEnumerationAccess> xParaEnumAccess(xCell->getText(), uno::UNO_QUERY); + uno::Reference<container::XEnumeration> xParaEnum = xParaEnumAccess->createEnumeration(); + xParaEnum->nextElement(); + uno::Reference<text::XTextRange> xPara(xParaEnum->nextElement(), uno::UNO_QUERY); + auto aTabStops = getProperty< uno::Sequence<style::TabStop> >(xPara, "ParaTabStops"); + // This failed: tab stops were not deleted as direct formatting on the paragraph. + CPPUNIT_ASSERT(!aTabStops.hasElements()); +} + CPPUNIT_PLUGIN_IMPLEMENT(); /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |