[Libreoffice-commits] core.git: Branch 'distro/collabora/cp-4.1' - 2 commits - sw/qa sw/source

Miklos Vajna vmiklos at collabora.co.uk
Fri Oct 18 00:38:16 PDT 2013


 sw/qa/extras/ww8import/data/fdo36868.doc     |binary
 sw/qa/extras/ww8import/data/list-nolevel.doc |binary
 sw/qa/extras/ww8import/ww8import.cxx         |   19 +++++++++++++++++++
 sw/source/filter/ww8/ww8par3.cxx             |   11 +++--------
 4 files changed, 22 insertions(+), 8 deletions(-)

New commits:
commit baaba90068ef29cc7259ab0f25d2947fa3a56d7d
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date:   Tue Oct 15 16:29:35 2013 +0200

    WW8 import: fix handling of sprmPIlfo when sprmPIlvl is missing
    
    Commit 542a0d7260e4767d8aff839eb593e748a82ced48 (#100044# Cleanup for
    optimization defines->enums, 2002-08-14) added the problematic "else"
    without mentioning the reason, so I assume it's safe to just revert that
    part.
    
    Change-Id: Id90fbdfb1116be458a76c9653fec0633edc34fac

diff --git a/sw/qa/extras/ww8import/data/list-nolevel.doc b/sw/qa/extras/ww8import/data/list-nolevel.doc
new file mode 100755
index 0000000..04e3499
Binary files /dev/null and b/sw/qa/extras/ww8import/data/list-nolevel.doc differ
diff --git a/sw/qa/extras/ww8import/ww8import.cxx b/sw/qa/extras/ww8import/ww8import.cxx
index 921cbb2..d8d5e3e 100644
--- a/sw/qa/extras/ww8import/ww8import.cxx
+++ b/sw/qa/extras/ww8import/ww8import.cxx
@@ -37,6 +37,7 @@ public:
     void testPageBorder();
     void testN823651();
     void testFdo36868();
+    void testListNolevel();
 
     CPPUNIT_TEST_SUITE(Test);
 #if !defined(MACOSX) && !defined(WNT)
@@ -65,6 +66,7 @@ void Test::run()
         {"page-border.doc", &Test::testPageBorder},
         {"n823651.doc", &Test::testN823651},
         {"fdo36868.doc", &Test::testFdo36868},
+        {"list-nolevel.doc", &Test::testListNolevel},
     };
     header();
     for (unsigned int i = 0; i < SAL_N_ELEMENTS(aMethods); ++i)
@@ -301,6 +303,14 @@ void Test::testFdo36868()
     CPPUNIT_ASSERT_EQUAL(OUString("2.1"), aText);
 }
 
+void Test::testListNolevel()
+{
+    // Similar to fdo#36868, numbering portions had wrong values.
+    OUString aText = parseDump("/root/page/body/txt[1]/Special[@nType='POR_NUMBER']", "rText");
+    // POR_NUMBER was completely missing.
+    CPPUNIT_ASSERT_EQUAL(OUString("1."), aText);
+}
+
 CPPUNIT_TEST_SUITE_REGISTRATION(Test);
 
 CPPUNIT_PLUGIN_IMPLEMENT();
diff --git a/sw/source/filter/ww8/ww8par3.cxx b/sw/source/filter/ww8/ww8par3.cxx
index 0d5832f..f31e6d7 100644
--- a/sw/source/filter/ww8/ww8par3.cxx
+++ b/sw/source/filter/ww8/ww8par3.cxx
@@ -2062,7 +2062,7 @@ void SwWW8ImplReader::Read_LFOPosition(sal_uInt16, const sal_uInt8* pData,
                 {
                     if (WW8ListManager::nMaxLevel == nListLevel)
                         nListLevel = 0;
-                    else if (WW8ListManager::nMaxLevel > nListLevel)
+                    if (WW8ListManager::nMaxLevel > nListLevel)
                     {
                         RegisterNumFmt(nLFOPosition, nListLevel);
                         nLFOPosition = USHRT_MAX;
commit 6abcb3c3d6b51e87a5976edc91d5195f7db60104
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date:   Tue Oct 15 15:17:09 2013 +0200

    fdo#36868 WW8 import: allow outline numbering and list style in the same ...
    
    .. paragraph style
    
    The original problem (from a user's point of view) was that the second
    level of the numbering started from 1.1 instead of 2.1 in the bugdoc.
    This was fixed by using outline numbering for level 2 as well, but this
    is problematic in many cases: we want to have outline numbering exactly
    when outline numbering is enabled for the given paragraph style.
    
    So revert the change in SwWW8ImplReader::SetStylesList() and fix it
    differently: SwWW8ImplReader::RegisterNumFmtOnStyle() explicitly ignores
    list style if outline numbering is available with no good reason. Both
    the WW8 format and Writer core allows to have outline numbering and a
    list style at the same time, so set list style even when outline
    numbering is available. This fixes the original issue, too -- without
    introducing nasty fake outline numbering usage.
    
    Also add a testcase for the original issue.
    
    (regression from e3d5c3e0746916c4056389dd8c2daa6c451c8f6e)
    
    Change-Id: Id7d2d67a96a858aee3230110cb518fea51d19d38

diff --git a/sw/qa/extras/ww8import/data/fdo36868.doc b/sw/qa/extras/ww8import/data/fdo36868.doc
new file mode 100644
index 0000000..382c6b2
Binary files /dev/null and b/sw/qa/extras/ww8import/data/fdo36868.doc differ
diff --git a/sw/qa/extras/ww8import/ww8import.cxx b/sw/qa/extras/ww8import/ww8import.cxx
index ef68da6..921cbb2 100644
--- a/sw/qa/extras/ww8import/ww8import.cxx
+++ b/sw/qa/extras/ww8import/ww8import.cxx
@@ -36,6 +36,7 @@ public:
     void testN816593();
     void testPageBorder();
     void testN823651();
+    void testFdo36868();
 
     CPPUNIT_TEST_SUITE(Test);
 #if !defined(MACOSX) && !defined(WNT)
@@ -63,6 +64,7 @@ void Test::run()
         {"n816593.doc", &Test::testN816593},
         {"page-border.doc", &Test::testPageBorder},
         {"n823651.doc", &Test::testN823651},
+        {"fdo36868.doc", &Test::testFdo36868},
     };
     header();
     for (unsigned int i = 0; i < SAL_N_ELEMENTS(aMethods); ++i)
@@ -292,6 +294,13 @@ void Test::testN823651()
     CPPUNIT_ASSERT_EQUAL(7.5f, getProperty<float>(getParagraphOfText(1, xText), "CharHeight"));
 }
 
+void Test::testFdo36868()
+{
+    OUString aText = parseDump("/root/page/body/txt[3]/Special[@nType='POR_NUMBER']", "rText");
+    // This was 1.1.
+    CPPUNIT_ASSERT_EQUAL(OUString("2.1"), aText);
+}
+
 CPPUNIT_TEST_SUITE_REGISTRATION(Test);
 
 CPPUNIT_PLUGIN_IMPLEMENT();
diff --git a/sw/source/filter/ww8/ww8par3.cxx b/sw/source/filter/ww8/ww8par3.cxx
index 13d0646..0d5832f 100644
--- a/sw/source/filter/ww8/ww8par3.cxx
+++ b/sw/source/filter/ww8/ww8par3.cxx
@@ -1738,8 +1738,6 @@ void SwWW8ImplReader::SetStylesList(sal_uInt16 nStyle, sal_uInt16 nActLFO,
             {
                 rStyleInf.nLFOIndex  = nActLFO;
                 rStyleInf.nListLevel = nActLevel;
-                if (nActLevel > 0) // it must be an outline list
-                    rStyleInf.nOutlineLevel = nActLevel;
 
                 if (
                     (USHRT_MAX > nActLFO) &&
@@ -1788,12 +1786,9 @@ void SwWW8ImplReader::RegisterNumFmtOnStyle(sal_uInt16 nStyle)
             {
                 if( MAXLEVEL > rStyleInf.nOutlineLevel )
                     rStyleInf.pOutlineNumrule = pNmRule;
-                else
-                {
-                    rStyleInf.pFmt->SetFmtAttr(
+                rStyleInf.pFmt->SetFmtAttr(
                         SwNumRuleItem( pNmRule->GetName() ) );
-                    rStyleInf.bHasStyNumRule = true;
-                }
+                rStyleInf.bHasStyNumRule = true;
             }
         }
 


More information about the Libreoffice-commits mailing list