tdf#115212 DOCX export: fix ToC with tracked deletion
Removing part of Table of Contents with tracked deletion
resulted broken DOCX export, ie. unrecoverable and
uneditable document in MSO.
Change-Id: If5972b2c9fb967819b7be889e0a3efb3714e670b
Reviewed-on: https://gerrit.libreoffice.org/73550
Tested-by: Jenkins
Reviewed-by: László Németh <nemeth@numbertext.org>
diff --git a/sw/qa/extras/ooxmlexport/data/tdf115212.docx b/sw/qa/extras/ooxmlexport/data/tdf115212.docx
new file mode 100644
index 0000000..1a44fbd
--- /dev/null
+++ b/sw/qa/extras/ooxmlexport/data/tdf115212.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport11.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport11.cxx
index 3864ece..df83dab 100644
--- a/sw/qa/extras/ooxmlexport/ooxmlexport11.cxx
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport11.cxx
@@ -862,6 +862,13 @@
assertXPath(pXmlDoc, "/w:document/w:body/w:p[1]/w:del/w:r/w:delInstrText");
}
DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(testTdf115212, "tdf115212.docx")
{
xmlDocPtr pXmlDoc = parseExport("word/document.xml");
// export field with tracked deletion
assertXPath(pXmlDoc, "//w:p[2]/w:del[1]/w:r[1]/w:fldChar");
}
DECLARE_OOXMLEXPORT_TEST(testTdf118691, "tdf118691.docx")
{
uno::Reference<text::XTextTablesSupplier> xTablesSupplier(mxComponent, uno::UNO_QUERY);
diff --git a/sw/source/filter/ww8/docxattributeoutput.cxx b/sw/source/filter/ww8/docxattributeoutput.cxx
index 9fdd2b9..dfd316e 100644
--- a/sw/source/filter/ww8/docxattributeoutput.cxx
+++ b/sw/source/filter/ww8/docxattributeoutput.cxx
@@ -1390,7 +1390,9 @@
// Add the fields starts for hyperlinks, TOCs and index marks
if ( pIt->bOpen && !pIt->pField )
{
StartRedline( m_pRedlineData );
StartField_Impl( pNode, nPos, *pIt, true );
EndRedline( m_pRedlineData );
if (m_startedHyperlink)
++m_nFieldsInHyperlink;