summaryrefslogtreecommitdiff
path: root/sw
diff options
context:
space:
mode:
authorMiklos Vajna <vmiklos@collabora.co.uk>2016-01-08 09:08:57 +0100
committerMichael Stahl <mstahl@redhat.com>2016-01-27 13:46:04 +0000
commit5f6df9fd46e28ba579bac90e7f5431b95f0a490f (patch)
tree2aaa08ef37bc1c9810ec98fc2eb47160bd1e86e4 /sw
parentac799946e58f91ab08d127e56af5119c091732c2 (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. (cherry picked from commits 1f1ddaad5dd401b70ae69fb18f7873d652242154 and 1ec88cdb82a28851c4b97d7f043d8bcec3c675e8) Change-Id: I16b09bc4c177df5a74d16653b829b198aa1a800f Reviewed-on: https://gerrit.libreoffice.org/21688 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Michael Stahl <mstahl@redhat.com>
Diffstat (limited to 'sw')
-rw-r--r--sw/qa/extras/rtfimport/data/tdf96308-deftab.rtf8
-rw-r--r--sw/qa/extras/rtfimport/data/tdf96308-tabpos.rtf12
-rw-r--r--sw/qa/extras/rtfimport/rtfimport.cxx24
3 files changed, 44 insertions, 0 deletions
diff --git a/sw/qa/extras/rtfimport/data/tdf96308-deftab.rtf b/sw/qa/extras/rtfimport/data/tdf96308-deftab.rtf
new file mode 100644
index 000000000000..49ad344fcb0b
--- /dev/null
+++ b/sw/qa/extras/rtfimport/data/tdf96308-deftab.rtf
@@ -0,0 +1,8 @@
+{\rtf1
+{\stylesheet
+{
+\s23\pvpg Slogan;}
+}
+\deftab284
+hello\par
+}
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 f7e16fc2db28..24325c3b8a42 100644
--- a/sw/qa/extras/rtfimport/rtfimport.cxx
+++ b/sw/qa/extras/rtfimport/rtfimport.cxx
@@ -2446,6 +2446,30 @@ DECLARE_RTFIMPORT_TEST(testLandscape, "landscape.rtf")
CPPUNIT_ASSERT_EQUAL(sal_True, getProperty<sal_Bool>(xStylePage, "IsLandscape"));
}
+DECLARE_RTFIMPORT_TEST(testTdf96308Deftab, "tdf96308-deftab.rtf")
+{
+ uno::Reference<lang::XMultiServiceFactory> xTextFactory(mxComponent, uno::UNO_QUERY);
+ uno::Reference<beans::XPropertySet> xDefaults(xTextFactory->createInstance("com.sun.star.text.Defaults"), uno::UNO_QUERY);
+ // This was 1270 as \deftab was ignored on import.
+ 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: */