summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Kaganski <mike.kaganski@collabora.com>2018-07-02 20:31:32 +1000
committerMike Kaganski <mike.kaganski@collabora.com>2018-07-02 17:14:22 +0200
commit942f1056b51e53358d42ff8da8a1bbdce9ba5303 (patch)
tree4d626cd0cc6fe45a61c3bad1a4c7db5feb81a998
parentc807e7ea7a0725a4d8375eda07d6f70870e0d50a (diff)
tdf#117923: handle direct formatting for numbering in .doc
Since commit df07d6cb9f62c0a2c4b29bd850d4efb4fcd4790b, we do for DOCX. DOC also has this problem, so set the relevant compatibility flag on import for this format, too. Change-Id: I3aef593341edffa878a06566da815cb72aa38004 Reviewed-on: https://gerrit.libreoffice.org/56812 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
-rw-r--r--sw/qa/extras/layout/data/tdf117923.docbin0 -> 29696 bytes
-rw-r--r--sw/qa/extras/layout/layout.cxx15
-rw-r--r--sw/source/filter/ww8/ww8par.cxx3
-rw-r--r--test/source/xmltesttools.cxx7
4 files changed, 24 insertions, 1 deletions
diff --git a/sw/qa/extras/layout/data/tdf117923.doc b/sw/qa/extras/layout/data/tdf117923.doc
new file mode 100644
index 000000000000..c43cf40c9f52
--- /dev/null
+++ b/sw/qa/extras/layout/data/tdf117923.doc
Binary files differ
diff --git a/sw/qa/extras/layout/layout.cxx b/sw/qa/extras/layout/layout.cxx
index 2356832cc4ba..1ff1c23c6df4 100644
--- a/sw/qa/extras/layout/layout.cxx
+++ b/sw/qa/extras/layout/layout.cxx
@@ -24,6 +24,7 @@ public:
void testTableExtrusion2();
void testTdf116848();
void testTdf117245();
+ void testTdf117923();
CPPUNIT_TEST_SUITE(SwLayoutWriter);
CPPUNIT_TEST(testTdf116830);
@@ -34,6 +35,7 @@ public:
CPPUNIT_TEST(testTableExtrusion2);
CPPUNIT_TEST(testTdf116848);
CPPUNIT_TEST(testTdf117245);
+ CPPUNIT_TEST(testTdf117923);
CPPUNIT_TEST_SUITE_END();
private:
@@ -194,6 +196,19 @@ void SwLayoutWriter::testTdf117245()
assertXPath(pXmlDoc, "/root/page/body/txt[2]/LineBreak", 1);
}
+void SwLayoutWriter::testTdf117923()
+{
+ createDoc("tdf117923.doc");
+ xmlDocPtr pXmlDoc = parseLayoutDump();
+
+ // Check that we actually test the line we need
+ assertXPathContent(pXmlDoc, "/root/page/body/tab/row/cell/txt[3]", "GHI GHI GHI GHI");
+ assertXPath(pXmlDoc, "/root/page/body/tab/row/cell/txt[3]/Special", "nType", "POR_NUMBER");
+ assertXPath(pXmlDoc, "/root/page/body/tab/row/cell/txt[3]/Special", "rText", "2.");
+ // The numbering height was 960.
+ assertXPath(pXmlDoc, "/root/page/body/tab/row/cell/txt[3]/Special", "nHeight", "220");
+}
+
CPPUNIT_TEST_SUITE_REGISTRATION(SwLayoutWriter);
CPPUNIT_PLUGIN_IMPLEMENT();
diff --git a/sw/source/filter/ww8/ww8par.cxx b/sw/source/filter/ww8/ww8par.cxx
index c2a7c02f7f5b..301c37a12409 100644
--- a/sw/source/filter/ww8/ww8par.cxx
+++ b/sw/source/filter/ww8/ww8par.cxx
@@ -1795,6 +1795,9 @@ void SwWW8ImplReader::ImportDop()
m_rDoc.getIDocumentSettingAccess().set(DocumentSettingId::TAB_COMPAT, true);
// #i24363# tab stops relative to indent
m_rDoc.getIDocumentSettingAccess().set(DocumentSettingId::TABS_RELATIVE_TO_INDENT, false);
+ // tdf#117923
+ m_rDoc.getIDocumentSettingAccess().set(
+ DocumentSettingId::APPLY_PARAGRAPH_MARK_FORMAT_TO_NUMBERING, true);
// Import Default Tabs
long nDefTabSiz = m_xWDop->dxaTab;
diff --git a/test/source/xmltesttools.cxx b/test/source/xmltesttools.cxx
index 45347b0c111b..c3e314e49ed4 100644
--- a/test/source/xmltesttools.cxx
+++ b/test/source/xmltesttools.cxx
@@ -88,7 +88,12 @@ OUString XmlTestTools::getXPathContent(xmlDocPtr pXmlDoc, const OString& rXPath)
xmlXPathNodeSetGetLength(pXmlNodes) > 0);
xmlNodePtr pXmlNode = pXmlNodes->nodeTab[0];
- OUString s(convert((pXmlNode->children[0]).content));
+ xmlNodePtr pXmlChild = pXmlNode->children;
+ OUString s;
+ while (pXmlChild && pXmlChild->type != XML_TEXT_NODE)
+ pXmlChild = pXmlChild->next;
+ if (pXmlChild && pXmlChild->type == XML_TEXT_NODE)
+ s = convert(pXmlChild->content);
xmlXPathFreeObject(pXmlObj);
return s;
}