sw/qa/extras/odfexport/odfexport2.cxx | 4 ++-- sw/source/core/doc/number.cxx | 9 +++++---- writerfilter/source/dmapper/NumberingManager.cxx | 8 ++++---- writerfilter/source/dmapper/NumberingManager.hxx | 5 +++-- 4 files changed, 14 insertions(+), 12 deletions(-)
New commits: commit a1692118d41a37282511c688b0062109c1b1e440 Author: Vasily Melenchuk <vasily.melenc...@cib.de> AuthorDate: Sat Sep 25 19:06:11 2021 +0300 Commit: Xisco Fauli <xiscofa...@libreoffice.org> CommitDate: Tue Oct 5 10:18:09 2021 +0200 tdf#144609: numbering "None" should still show prefix/suffix Unlike it was implemented in tdf#143605, prefix and suffix should be displayed anyway, we do not display only numbers. Moreover tdf#143605 did accidentally fix tdf#135164 in a invalid way. So this patch is also providing a better fix for it: untittest is already created and failing without it. Problem in tdf#135164 is inability to distingush missing level text (bullet char in given case) and empty ("") one. In first case we should use abstract level definition. In second - not. Change-Id: Ica3a714d22de4d2f14ebbcb12f0e1311dbc9b801 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/122609 Tested-by: Jenkins Reviewed-by: Vasily Melenchuk <vasily.melenc...@cib.de> Signed-off-by: Xisco Fauli <xiscofa...@libreoffice.org> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/123075 diff --git a/sw/qa/extras/odfexport/odfexport2.cxx b/sw/qa/extras/odfexport/odfexport2.cxx index 8ed38f7eb85a..3b1a7b8c527d 100644 --- a/sw/qa/extras/odfexport/odfexport2.cxx +++ b/sw/qa/extras/odfexport/odfexport2.cxx @@ -62,8 +62,8 @@ DECLARE_ODFEXPORT_TEST(testTdf137199, "tdf137199.docx") DECLARE_ODFEXPORT_TEST(testTdf143605, "tdf143605.odt") { - // With numering type "none" there should be nothing - CPPUNIT_ASSERT_EQUAL(OUString(""), getProperty<OUString>(getParagraph(1), "ListLabelString")); + // With numbering type "none" there should be just prefix & suffix + CPPUNIT_ASSERT_EQUAL(OUString("."), getProperty<OUString>(getParagraph(1), "ListLabelString")); } DECLARE_ODFEXPORT_TEST(testListFormatDocx, "listformat.docx") diff --git a/sw/source/core/doc/number.cxx b/sw/source/core/doc/number.cxx index a86668fa1936..5bc80fc99f3b 100644 --- a/sw/source/core/doc/number.cxx +++ b/sw/source/core/doc/number.cxx @@ -661,9 +661,6 @@ OUString SwNumRule::MakeNumString( const SwNumberTree::tNumberVector & rNumVecto const SwNumFormat& rMyNFormat = Get( o3tl::narrowing<sal_uInt16>(nLevel) ); - if (rMyNFormat.GetNumberingType() == SVX_NUM_NUMBER_NONE) - return OUString(); - css::lang::Locale aLocale( LanguageTag::convertToLocale(nLang)); if (rMyNFormat.HasListFormat()) @@ -675,7 +672,11 @@ OUString SwNumRule::MakeNumString( const SwNumberTree::tNumberVector & rNumVecto for (SwNumberTree::tNumberVector::size_type i=0; i <= nLevel; ++i) { OUString sReplacement; - if (rNumVector[i]) + if (rMyNFormat.GetNumberingType() == SVX_NUM_NUMBER_NONE) + { + // Numbering disabled - replacement is empty + } + else if (rNumVector[i]) { if (bOnlyArabic) sReplacement = OUString::number(rNumVector[i]); diff --git a/writerfilter/source/dmapper/NumberingManager.cxx b/writerfilter/source/dmapper/NumberingManager.cxx index 764aace41808..9a3f372d7161 100644 --- a/writerfilter/source/dmapper/NumberingManager.cxx +++ b/writerfilter/source/dmapper/NumberingManager.cxx @@ -178,7 +178,7 @@ uno::Sequence< beans::PropertyValue > ListLevel::GetCharStyleProperties( ) uno::Sequence< beans::PropertyValue > vPropVals = PropertyMap::GetPropertyValues(); beans::PropertyValue* aValIter = vPropVals.begin(); beans::PropertyValue* aEndIter = vPropVals.end(); - const bool bIsSymbol(m_sBulletChar.getLength() <= 1); + const bool bIsSymbol(GetBulletChar().getLength() <= 1); for( ; aValIter != aEndIter; ++aValIter ) if (! IgnoreForCharStyle(aValIter->Name, bIsSymbol)) rProperties.emplace_back(aValIter->Name, 0, aValIter->Value, beans::PropertyState_DIRECT_VALUE); @@ -214,9 +214,9 @@ uno::Sequence<beans::PropertyValue> ListLevel::GetLevelProperties(bool bDefaults // todo: this is not the bullet char if( nNumberFormat == style::NumberingType::CHAR_SPECIAL ) { - if (!m_sBulletChar.isEmpty()) + if (!GetBulletChar().isEmpty()) { - aNumberingProperties.push_back(lcl_makePropVal(PROP_BULLET_CHAR, m_sBulletChar.copy(0, 1))); + aNumberingProperties.push_back(lcl_makePropVal(PROP_BULLET_CHAR, m_sBulletChar->copy(0, 1))); } else { @@ -554,7 +554,7 @@ void ListDef::CreateNumberingRules( DomainMapper& rDMapper, ? pAbsLevel->GetBulletChar() : OUString(); // Inherit <w:lvlText> from the abstract level in case the override would be empty. - if (pLevel && !pLevel->GetBulletChar().isEmpty()) + if (pLevel && pLevel->HasBulletChar()) sText = pLevel->GetBulletChar( ); aLvlProps.push_back(comphelper::makePropertyValue(getPropertyName(PROP_PREFIX), OUString(""))); diff --git a/writerfilter/source/dmapper/NumberingManager.hxx b/writerfilter/source/dmapper/NumberingManager.hxx index 2a1e0204e02d..202e9fac57c4 100644 --- a/writerfilter/source/dmapper/NumberingManager.hxx +++ b/writerfilter/source/dmapper/NumberingManager.hxx @@ -46,7 +46,7 @@ class ListLevel : public PropertyMap /// LN_CT_NumFmt_format, in case m_nNFC is custom. OUString m_aCustomNumberFormat; sal_Int16 m_nXChFollow; //LN_IXCHFOLLOW - OUString m_sBulletChar; + std::optional<OUString> m_sBulletChar; css::awt::Size m_aGraphicSize; css::uno::Reference<css::awt::XBitmap> m_xGraphicBitmap; std::optional<sal_Int32> m_nTabstop; @@ -76,8 +76,9 @@ public: { m_xGraphicBitmap = xGraphicBitmap; } void SetParaStyle( const tools::SvRef< StyleSheetEntry >& pStyle ); + bool HasBulletChar() const { return m_sBulletChar.has_value(); }; // Getters - const OUString& GetBulletChar( ) const { return m_sBulletChar; }; + OUString GetBulletChar( ) const { return m_sBulletChar.has_value()? *m_sBulletChar : OUString(); }; const tools::SvRef< StyleSheetEntry >& GetParaStyle( ) const { return m_pParaStyle; }; bool isOutlineNumbering() const { return m_outline; } sal_Int32 GetStartOverride() const { return m_nStartOverride; };