[Libreoffice-commits] core.git: Branch 'libreoffice-5-0' - sw/qa writerfilter/source

Miklos Vajna vmiklos at collabora.co.uk
Thu Oct 1 02:24:06 PDT 2015


 sw/qa/extras/ooxmlimport/data/tdf92124.docx      |binary
 sw/qa/extras/ooxmlimport/ooxmlimport.cxx         |   12 ++++++++++++
 writerfilter/source/dmapper/NumberingManager.cxx |   13 ++++++++++++-
 3 files changed, 24 insertions(+), 1 deletion(-)

New commits:
commit c33af041298fc4897ee1215efda488654955ebf7
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date:   Wed Sep 23 07:49:49 2015 +0200

    tdf#92124 DOCX import: don't add a dummy Suffix for an empty LabelFollowedBy
    
    (cherry picked from commit 3e27df1035677c7cca5200858d5d8e8283bf7aa9)
    
    Conflicts:
    	sw/qa/extras/ooxmlimport/ooxmlimport.cxx
    	writerfilter/source/dmapper/NumberingManager.cxx
    
    Change-Id: I0c4366ad0a2f81a198860869f670767343a392be
    Reviewed-on: https://gerrit.libreoffice.org/19032
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    Tested-by: Caolán McNamara <caolanm at redhat.com>

diff --git a/sw/qa/extras/ooxmlimport/data/tdf92124.docx b/sw/qa/extras/ooxmlimport/data/tdf92124.docx
new file mode 100644
index 0000000..2999311
Binary files /dev/null and b/sw/qa/extras/ooxmlimport/data/tdf92124.docx differ
diff --git a/sw/qa/extras/ooxmlimport/ooxmlimport.cxx b/sw/qa/extras/ooxmlimport/ooxmlimport.cxx
index c36cc17..b00b532 100644
--- a/sw/qa/extras/ooxmlimport/ooxmlimport.cxx
+++ b/sw/qa/extras/ooxmlimport/ooxmlimport.cxx
@@ -2783,6 +2783,18 @@ DECLARE_OOXMLIMPORT_TEST(testTdf92454, "tdf92454.docx")
     CPPUNIT_ASSERT_EQUAL(beans::PropertyState_DIRECT_VALUE, xParagraph->getPropertyState("ParaFirstLineIndent"));
 }
 
+DECLARE_OOXMLIMPORT_TEST(testTdf92124, "tdf92124.docx")
+{
+    // Get the second paragraph's numbering style's 1st level's suffix.
+    uno::Reference<text::XTextRange> xParagraph = getParagraph(2);
+    auto xLevels = getProperty< uno::Reference<container::XIndexAccess> >(xParagraph, "NumberingRules");
+    uno::Sequence<beans::PropertyValue> aLevel;
+    xLevels->getByIndex(0) >>= aLevel; // 1st level
+    OUString aSuffix = std::find_if(aLevel.begin(), aLevel.end(), [](const beans::PropertyValue& rValue) { return rValue.Name == "Suffix"; })->Value.get<OUString>();
+    // Make sure it's empty as the source document contains <w:suff w:val="nothing"/>.
+    CPPUNIT_ASSERT(aSuffix.isEmpty());
+}
+
 #endif
 
 CPPUNIT_PLUGIN_IMPLEMENT();
diff --git a/writerfilter/source/dmapper/NumberingManager.cxx b/writerfilter/source/dmapper/NumberingManager.cxx
index b19b861..e9b8a46 100644
--- a/writerfilter/source/dmapper/NumberingManager.cxx
+++ b/writerfilter/source/dmapper/NumberingManager.cxx
@@ -632,7 +632,18 @@ void ListDef::CreateNumberingRules( DomainMapper& rDMapper,
                     if (aMap.find("NumberingType") != aMap.end())
                     {
                         sal_Int16 nNumberFormat = aMap["NumberingType"].get<sal_Int16>();
-                        if (nNumberFormat == style::NumberingType::NUMBER_NONE)
+
+                        // No need for a zero width space without a real LabelFollowedBy.
+                        bool bLabelFollowedBy = true;
+                        auto it = std::find_if(aLvlProps.begin(), aLvlProps.end(), [](const beans::PropertyValue& rValue) { return rValue.Name == "LabelFollowedBy"; });
+                        if (it != aLvlProps.end())
+                        {
+                            sal_Int16 nValue;
+                            if (it->Value >>= nValue)
+                                bLabelFollowedBy = nValue != SvxNumberFormat::NOTHING;
+                        }
+
+                        if (bLabelFollowedBy && nNumberFormat == style::NumberingType::NUMBER_NONE)
                             rSuffix = OUString(static_cast<sal_Unicode>(0x200B));
                     }
                 }


More information about the Libreoffice-commits mailing list