summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiklos Vajna <vmiklos@collabora.co.uk>2017-05-29 11:25:58 +0200
committerMiklos Vajna <vmiklos@collabora.co.uk>2017-05-31 13:44:04 +0200
commit287a33e5dadba7b284bbc1f25336c8bf0a6324de (patch)
tree9904c92a3a65d0d1f6a2aaa0ec0567306f05da8c
parenta8889286995de5e51cd01e83101832f78e978fd9 (diff)
tdf#107684 DOCX export: fix duplicated <w:outlineLvl> element for styles
Next to the existing OutlineNumbering() (which is only used for styles), commit fd2d14d5543c82eb875e720c98b51518699a8fbc (Implement DOCX export of paragraph outline level, 2013-10-04) added ParaOutlineLevel() to the attribute output class that also wrote the outline level of a paragraph (style), but worked for the cases when the style was imported by writerfilter as well. As a side-effect styles imported by xmloff now have their outline level property handled twice, leading to duplicated elements. Fix the problem by only writing <w:outlineLvl> in ParaOutlineLevel(): it covers both use-cases, so no need to do anything in OutlineNumbering(). Change-Id: Ic982dd70a00609cdfc3744a8ab69aaa828410fd0 Reviewed-on: https://gerrit.libreoffice.org/38132 Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk> Tested-by: Jenkins <ci@libreoffice.org> (cherry picked from commit fe13c249c8964355e39869a357c393f3208b6def) Reviewed-on: https://gerrit.libreoffice.org/38267
-rw-r--r--sw/qa/extras/ooxmlexport/data/tdf107684.odtbin0 -> 12357 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/ooxmlexport9.cxx7
-rw-r--r--sw/source/filter/ww8/docxattributeoutput.cxx4
3 files changed, 9 insertions, 2 deletions
diff --git a/sw/qa/extras/ooxmlexport/data/tdf107684.odt b/sw/qa/extras/ooxmlexport/data/tdf107684.odt
new file mode 100644
index 000000000000..0ca7c53d23f3
--- /dev/null
+++ b/sw/qa/extras/ooxmlexport/data/tdf107684.odt
Binary files differ
diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport9.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport9.cxx
index 999adbcedf3c..271db2ebde9e 100644
--- a/sw/qa/extras/ooxmlexport/ooxmlexport9.cxx
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport9.cxx
@@ -506,6 +506,13 @@ DECLARE_OOXMLEXPORT_TEST(testTdf107837, "tdf107837.odt")
CPPUNIT_ASSERT_EQUAL(false, getProperty<bool>(xTextSections->getByIndex(0), "DontBalanceTextColumns"));
}
+DECLARE_OOXMLEXPORT_TEST(testTdf107684, "tdf107684.odt")
+{
+ if (xmlDocPtr pXmlDoc = parseExport("word/styles.xml"))
+ // This was 1, <w:outlineLvl> was duplicated for Heading1.
+ assertXPath(pXmlDoc, "//w:style[@w:styleId='Heading1']/w:pPr/w:outlineLvl", 1);
+}
+
CPPUNIT_PLUGIN_IMPLEMENT();
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sw/source/filter/ww8/docxattributeoutput.cxx b/sw/source/filter/ww8/docxattributeoutput.cxx
index 8153ebd2f28b..89597ef3baf6 100644
--- a/sw/source/filter/ww8/docxattributeoutput.cxx
+++ b/sw/source/filter/ww8/docxattributeoutput.cxx
@@ -5458,9 +5458,9 @@ void lcl_OutlineLevel(sax_fastparser::FSHelperPtr const & pSerializer, sal_uInt1
}
-void DocxAttributeOutput::OutlineNumbering(sal_uInt8 const nLvl)
+void DocxAttributeOutput::OutlineNumbering(sal_uInt8 const /*nLvl*/)
{
- lcl_OutlineLevel(m_pSerializer, nLvl);
+ // Handled by ParaOutlineLevel() instead.
}
void DocxAttributeOutput::ParaOutlineLevel(const SfxUInt16Item& rItem)