[Libreoffice-commits] core.git: sw/qa writerfilter/source

Miklos Vajna vmiklos at suse.cz
Thu Feb 28 07:47:17 PST 2013


 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 <vmiklos at suse.cz>
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:


More information about the Libreoffice-commits mailing list