tdf#120394: list format string can be empty

We need to distunguish when we have list format string, but it
is empty (no level text will be diplayed) or it does not exist
at all, so we need to fallback to old prefix-suffix syntax.

Change-Id: Ifd4ccd5a676db86c39d2ef48e91d191d92b9b2a0
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/94322
Tested-by: Jenkins
Reviewed-by: Thorsten Behrens <Thorsten.Behrens@CIB.de>
This commit is contained in:
Vasily Melenchuk
2020-05-17 03:06:52 +02:00
committed by Thorsten Behrens
parent 047de8a887
commit d832914939
4 changed files with 13 additions and 8 deletions
+6 -2
View File
@@ -31,6 +31,7 @@
#include <editeng/editengdllapi.h>
#include <o3tl/typed_flags_set.hxx>
#include <memory>
#include <optional>
#include <algorithm>
class SvxBrushItem;
@@ -103,7 +104,9 @@ public:
private:
OUString sPrefix;
OUString sSuffix;
OUString sListFormat; // Format string ">%1.%2<" can be used instead of prefix/suffix
std::optional<OUString> sListFormat; // Format string ">%1.%2<" can be used instead of prefix/suffix
// Right now it is optional value to dostinguish empty list format
// and not set list format when we need to fallback to prefix/suffix.
SvxAdjust eNumAdjust;
@@ -169,7 +172,8 @@ public:
void SetSuffix(const OUString& rSet) { sSuffix = rSet;}
const OUString& GetSuffix() const { return sSuffix;}
void SetListFormat(const OUString& rSet) { sListFormat = rSet; }
const OUString& GetListFormat() const { return sListFormat; }
bool HasListFormat() const { return sListFormat.has_value(); }
const OUString& GetListFormat() const { return *sListFormat; }
void SetCharFormatName(const OUString& rSet){ sCharStyleName = rSet; }
virtual OUString GetCharFormatName()const;
+2 -2
View File
@@ -644,9 +644,9 @@ OUString SwNumRule::MakeNumString( const SwNumberTree::tNumberVector & rNumVecto
{
css::lang::Locale aLocale( LanguageTag::convertToLocale(nLang));
OUString sLevelFormat = rMyNFormat.GetListFormat();
if (!sLevelFormat.isEmpty())
if (rMyNFormat.HasListFormat())
{
OUString sLevelFormat = rMyNFormat.GetListFormat();
// In this case we are ignoring GetIncludeUpperLevels: we put all
// level numbers requested by level format
for (SwNumberTree::tNumberVector::size_type i=0; i <= nLevel; ++i)
+4 -3
View File
@@ -1335,11 +1335,12 @@ uno::Sequence<beans::PropertyValue> SwXNumberingRules::GetPropertiesForNumFormat
aPropertyValues.push_back(comphelper::makePropertyValue("Suffix", aUString));
//listformat
aUString = rFormat.GetListFormat();
aPropertyValues.push_back(comphelper::makePropertyValue("ListFormat", aUString));
if (rFormat.HasListFormat())
{
aPropertyValues.push_back(comphelper::makePropertyValue("ListFormat", rFormat.GetListFormat()));
}
//char style name
aUString.clear();
SwStyleNameMapper::FillProgName( rCharFormatName, aUString, SwGetPoolIdFromName::ChrFmt);
aPropertyValues.push_back(comphelper::makePropertyValue("CharStyleName", aUString));
+1 -1
View File
@@ -494,7 +494,7 @@ void MSWordExportBase::NumberingLevel(
const vcl::Font* pBulletFont=nullptr;
rtl_TextEncoding eChrSet=0;
FontFamily eFamily=FAMILY_DECORATIVE;
if (!rRule.Get(nLvl).GetListFormat().isEmpty())
if (rRule.Get(nLvl).HasListFormat())
{
// Nothing to construct: we have it already
sNumStr = rRule.Get(nLvl).GetListFormat();