sw/qa/extras/ooxmlimport/data/fdo59638.docx |binary sw/qa/extras/ooxmlimport/ooxmlimport.cxx | 25 +++++++++++++++++++++++ writerfilter/source/dmapper/NumberingManager.cxx | 9 +++++++- 3 files changed, 33 insertions(+), 1 deletion(-)
New commits: commit 521586b328305c4466603438a9931993b92873c6 Author: Miklos Vajna <[email protected]> Date: Thu Feb 28 14:20:00 2013 +0100 Related: fdo#59638 DOCX import of w:lvlOverride Change-Id: I23fca674e2436b09eeea3337b4d3eeb7a33ccf09 diff --git a/sw/qa/extras/ooxmlimport/data/fdo59638.docx b/sw/qa/extras/ooxmlimport/data/fdo59638.docx new file mode 100755 index 0000000..d33e7cc Binary files /dev/null and b/sw/qa/extras/ooxmlimport/data/fdo59638.docx differ diff --git a/sw/qa/extras/ooxmlimport/ooxmlimport.cxx b/sw/qa/extras/ooxmlimport/ooxmlimport.cxx index 62a2c98..8365013 100644 --- a/sw/qa/extras/ooxmlimport/ooxmlimport.cxx +++ b/sw/qa/extras/ooxmlimport/ooxmlimport.cxx @@ -118,6 +118,7 @@ public: void testN779642(); void testTbLrHeight(); void testFdo53985(); + void testFdo59638(); CPPUNIT_TEST_SUITE(Test); #if !defined(MACOSX) && !defined(WNT) @@ -187,6 +188,7 @@ void Test::run() {"n779642.docx", &Test::testN779642}, {"tblr-height.docx", &Test::testTbLrHeight}, {"fdo53985.docx", &Test::testFdo53985}, + {"fdo59638.docx", &Test::testFdo59638}, }; header(); for (unsigned int i = 0; i < SAL_N_ELEMENTS(aMethods); ++i) @@ -1207,6 +1209,29 @@ void Test::testFdo53985() CPPUNIT_ASSERT_EQUAL(sal_Int32(5), xTables->getCount()); // Only 4 tables were imported. } +void Test::testFdo59638() +{ + // The problem was that w:lvlOverride inside w:num was ignores by dmapper. + + uno::Reference<beans::XPropertySet> xPropertySet(getStyles("NumberingStyles")->getByName("WWNum1"), uno::UNO_QUERY); + uno::Reference<container::XIndexAccess> xLevels(xPropertySet->getPropertyValue("NumberingRules"), uno::UNO_QUERY); + uno::Sequence<beans::PropertyValue> aProps; + xLevels->getByIndex(0) >>= aProps; // 1st level + + for (int i = 0; i < aProps.getLength(); ++i) + { + const beans::PropertyValue& rProp = aProps[i]; + + if (rProp.Name == "BulletChar") + { + // Was '*', should be 'o'. + CPPUNIT_ASSERT_EQUAL(OUString("\xEF\x82\xB7", 3, RTL_TEXTENCODING_UTF8), rProp.Value.get<OUString>()); + return; + } + } + CPPUNIT_FAIL("no BulletChar property"); +} + CPPUNIT_TEST_SUITE_REGISTRATION(Test); CPPUNIT_PLUGIN_IMPLEMENT(); diff --git a/writerfilter/source/dmapper/NumberingManager.cxx b/writerfilter/source/dmapper/NumberingManager.cxx index 38b1f07..456cfaa 100644 --- a/writerfilter/source/dmapper/NumberingManager.cxx +++ b/writerfilter/source/dmapper/NumberingManager.cxx @@ -495,7 +495,7 @@ uno::Sequence< uno::Sequence< beans::PropertyValue > > ListDef::GetPropertyValue for ( sal_Int32 i = 0; i < nThisCount; i++ ) { uno::Sequence< beans::PropertyValue > level = aThis[i]; - if ( level.getLength( ) == 0 ) + if ( level.hasElements() ) { // If the element contains something, merge it lcl_mergeProperties( level, aAbstract[i] ); @@ -955,6 +955,13 @@ void ListsManager::lcl_sprm( Sprm& rSprm ) pLevel->SetParaStyle( pStyle ); } break; + case NS_ooxml::LN_CT_Num_lvlOverride: + { + writerfilter::Reference<Properties>::Pointer_t pProperties = rSprm.getProps(); + if (pProperties.get()) + pProperties->resolve(*this); + } + break; case NS_ooxml::LN_EG_RPrBase_rFonts: //contains font properties case NS_ooxml::LN_EG_RPrBase_color: case NS_ooxml::LN_EG_RPrBase_u: _______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
