[Libreoffice-commits] core.git: sw/qa sw/source
Tushar Bende
tushar.bende at synerzip.com
Fri Jan 10 08:18:32 PST 2014
sw/qa/extras/ooxmlexport/data/toc_doc.docx |binary
sw/qa/extras/ooxmlexport/ooxmlexport.cxx | 18 ++++++++++++++++++
sw/source/filter/ww8/ww8atr.cxx | 2 +-
3 files changed, 19 insertions(+), 1 deletion(-)
New commits:
commit 9f9c2bb4d5907be5726f50cfd5dfa8ae1d251dcf
Author: Tushar Bende <tushar.bende at synerzip.com>
Date: Thu Dec 26 19:30:08 2013 +0530
fdo#69613: Fix for DOCX Export loses Table-of-Contents flags
(This is partial fix for this bug includes flag 'f' processing)
Issue description:
Export logic for all TOC field flags was enclosed inside
if( nsSwTOXElement::TOX_MARK & pTOX->GetCreateType() ) in ww8atr.cxx,
which gets true for 'f' flag, this was the reason if there is 'f' flag
present in original doc then only other flags like \o \h used to come after RoundTrip.
Added Unit test case to verify even if there is no 'f' flag in original doc,other flags
eg. \h is getting preserved after RT.
Conflicts:
sw/source/filter/ww8/ww8atr.cxx
Reviewed on:
https://gerrit.libreoffice.org/7203
Change-Id: I29d22b363cc91ae5fabffca959786134bf1ba1cc
diff --git a/sw/qa/extras/ooxmlexport/data/toc_doc.docx b/sw/qa/extras/ooxmlexport/data/toc_doc.docx
new file mode 100644
index 0000000..26fa3dc
Binary files /dev/null and b/sw/qa/extras/ooxmlexport/data/toc_doc.docx differ
diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx
index 4f189e1..a3850cb 100644
--- a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx
@@ -2318,6 +2318,24 @@ DECLARE_OOXMLEXPORT_TEST(testFieldFlagO,"TOC_field_f.docx")
CPPUNIT_ASSERT(contents.match(" TOC \\f \\o \"1-3\" \\h"));
}
+DECLARE_OOXMLEXPORT_TEST(testTOCFlag_f, "toc_doc.docx")
+{
+ // Export logic for all TOC field flags was enclosed inside
+ // if( nsSwTOXElement::TOX_MARK & pTOX->GetCreateType() ) in ww8atr.cxx which gets true for \f,
+ // this was the reason if there is \f flag present in original doc then only other flags like
+ // \o \h \n used to come after RoundTrip.
+ // This test case is to verify even if there is no \f flag in original doc, \h flag is getting
+ // preserved after RT.
+ xmlDocPtr pXmlDoc = parseExport();
+ if (!pXmlDoc)
+ return;
+ // FIXME "p[2]" will have to be "p[1]", once the TOC import code is fixed
+ // not to insert an empty paragraph before TOC.
+ xmlNodeSetPtr pXmlNodes = getXPathNode(pXmlDoc,"/w:document/w:body/w:p[2]/w:r[2]/w:instrText");
+ xmlNodePtr pXmlNode = pXmlNodes->nodeTab[0];
+ OUString contents = OUString::createFromAscii((const char*)((pXmlNode->children[0]).content));
+ CPPUNIT_ASSERT(contents.endsWith("\\h"));
+}
#endif
CPPUNIT_PLUGIN_IMPLEMENT();
diff --git a/sw/source/filter/ww8/ww8atr.cxx b/sw/source/filter/ww8/ww8atr.cxx
index e9d1069..b04d7d4 100644
--- a/sw/source/filter/ww8/ww8atr.cxx
+++ b/sw/source/filter/ww8/ww8atr.cxx
@@ -2120,6 +2120,7 @@ void AttributeOutputBase::StartTOX( const SwSection& rSect )
sStr += OUString((sal_Char)( 'A' + GetExport( ).GetId( *pTOX->GetTOXType() ) ));
sStr += sEntryEnd;
}
+ }
if( nsSwTOXElement::TOX_OUTLINELEVEL & pTOX->GetCreateType() )
{
// Take the TOC value of the max level to evaluate to as
@@ -2287,7 +2288,6 @@ void AttributeOutputBase::StartTOX( const SwSection& rSect )
if (lcl_IsHyperlinked(pTOX->GetTOXForm(), nTOXLvl))
sStr += "\\h";
- }
break;
}
}
More information about the Libreoffice-commits
mailing list