sw/qa/extras/ooxmlexport/data/FDO74105.docx |binary sw/qa/extras/ooxmlexport/ooxmlexport.cxx | 15 +++++++++++++++ sw/source/filter/ww8/docxattributeoutput.cxx | 13 +++++++++---- writerfilter/source/dmapper/NumberingManager.cxx | 12 ++++++++++++ 4 files changed, 36 insertions(+), 4 deletions(-)
New commits: commit 01826dc12550e7a4204034f7876c593726525b54 Author: Pallavi Jadhav <pallavi.jad...@synerzip.com> Date: Tue Jan 28 11:42:53 2014 +0530 fdo#74105 : Prservation of Numbered lists-Starting with Value '0' Issue : - DOCX containing Numbered lists- Strating with value '0' is not preserved after RT. - LO exports document with Numbered lists starting from '1' instead of '0'. - LO "Import" and "Export" need fixes. - If LO will imports correctly, export will get correct value. Implentation : - Added code at Import and Export side. - Added Export Unit test case to check that <w:start> is not present in numbering.xml for 0th level. NOTE : <w:start> is optional. If not mentioned Numbered lists starts from '0'. Conflicts: sw/qa/extras/ooxmlexport/ooxmlexport.cxx Reviewed on: https://gerrit.libreoffice.org/7710 Change-Id: I30910c41fd188f30a1723cf8e07be5ea1cde1be0 diff --git a/sw/qa/extras/ooxmlexport/data/FDO74105.docx b/sw/qa/extras/ooxmlexport/data/FDO74105.docx new file mode 100644 index 0000000..4299cf9 Binary files /dev/null and b/sw/qa/extras/ooxmlexport/data/FDO74105.docx differ diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx index d7692ac..7b7c904 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx @@ -3498,6 +3498,21 @@ DECLARE_OOXMLEXPORT_TEST(testEmbeddedXlsx, "embedded-xlsx.docx") CPPUNIT_ASSERT_EQUAL(2, nImageFiles); } +DECLARE_OOXMLEXPORT_TEST(testNumberedLists_StartingWithZero, "FDO74105.docx") +{ + /* Issue : Numbered lists Starting with value '0' is not preserved after RT. + * In numbering.xml, an XML tag <w:start> is optional. If not mentioned, + * the Numbered list should start from 0. + * Problem was LO was writing <w:start> for all levels 0-8 with default value "1". + */ + xmlDocPtr pXmlDoc = parseExport("word/numbering.xml"); + if (!pXmlDoc) + return; + + // Check that we do _not_ export w:start for <w:lvl w:ilvl="0">. + assertXPath(pXmlDoc, "w:numbering/w:abstractNum[1]/w:lvl[1]/w:start", 0); +} + #endif CPPUNIT_PLUGIN_IMPLEMENT(); diff --git a/sw/source/filter/ww8/docxattributeoutput.cxx b/sw/source/filter/ww8/docxattributeoutput.cxx index 6414d04..77a0aed 100644 --- a/sw/source/filter/ww8/docxattributeoutput.cxx +++ b/sw/source/filter/ww8/docxattributeoutput.cxx @@ -4434,10 +4434,15 @@ void DocxAttributeOutput::NumberingLevel( sal_uInt8 nLevel, FSNS( XML_w, XML_ilvl ), OString::number( nLevel ).getStr(), FSEND ); - // start with the nStart value - m_pSerializer->singleElementNS( XML_w, XML_start, - FSNS( XML_w, XML_val ), OString::number( nStart ).getStr(), - FSEND ); + // start with the nStart value. Do not write w:start if Numbered Lists + // starts from zero.As it's an optional parameter. + // refer ECMA 376 Second edition Part-1 + if(!(0 == nLevel && 0 == nStart)) + { + m_pSerializer->singleElementNS( XML_w, XML_start, + FSNS( XML_w, XML_val ), OString::number( nStart ).getStr(), + FSEND ); + } // format OString aFmt( impl_NumberingType( nNumberingType ) ); diff --git a/writerfilter/source/dmapper/NumberingManager.cxx b/writerfilter/source/dmapper/NumberingManager.cxx index 60582c8..98d9c44 100644 --- a/writerfilter/source/dmapper/NumberingManager.cxx +++ b/writerfilter/source/dmapper/NumberingManager.cxx @@ -829,6 +829,7 @@ void ListsManager::lcl_attribute( Id nName, Value& rVal ) void ListsManager::lcl_sprm( Sprm& rSprm ) { + static bool bIsStartVisited = false; //fill the attributes of the style sheet sal_uInt32 nSprmId = rSprm.getId(); if( m_pCurrentDefinition.get() || @@ -952,11 +953,22 @@ void ListsManager::lcl_sprm( Sprm& rSprm ) } break; case NS_ooxml::LN_CT_Lvl_start: + if (m_pCurrentDefinition->GetCurrentLevel().get()) + m_pCurrentDefinition->GetCurrentLevel( )->SetValue( nSprmId, nIntValue ); + bIsStartVisited = true; + break; case NS_ooxml::LN_CT_Lvl_numFmt: case NS_ooxml::LN_CT_Lvl_isLgl: case NS_ooxml::LN_CT_Lvl_legacy: if (m_pCurrentDefinition->GetCurrentLevel().get()) + { m_pCurrentDefinition->GetCurrentLevel( )->SetValue( nSprmId, nIntValue ); + if( false == bIsStartVisited ) + { + m_pCurrentDefinition->GetCurrentLevel( )->SetValue( NS_ooxml::LN_CT_Lvl_start, 0 ); + bIsStartVisited = true; + } + } break; case NS_ooxml::LN_CT_Lvl_suff: { _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits