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 <[email protected]> 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 <[email protected]> Tested-by: Caolán McNamara <[email protected]> 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)); } }
_______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
