include/editeng/numitem.hxx        |    8 ++++++--
 sw/source/core/doc/number.cxx      |    4 ++--
 sw/source/core/unocore/unosett.cxx |    7 ++++---
 sw/source/filter/ww8/wrtw8num.cxx  |    2 +-
 4 files changed, 13 insertions(+), 8 deletions(-)

New commits:
commit d8329149394e4e5758a9e293b0162db050379a4e
Author:     Vasily Melenchuk <vasily.melenc...@cib.de>
AuthorDate: Fri May 15 18:17:34 2020 +0300
Commit:     Thorsten Behrens <thorsten.behr...@cib.de>
CommitDate: Sun May 17 03:06:52 2020 +0200

    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.behr...@cib.de>

diff --git a/include/editeng/numitem.hxx b/include/editeng/numitem.hxx
index fda3169cbfd9..629d4c56f071 100644
--- a/include/editeng/numitem.hxx
+++ b/include/editeng/numitem.hxx
@@ -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;
diff --git a/sw/source/core/doc/number.cxx b/sw/source/core/doc/number.cxx
index 0c7810f058f4..fa58d9ed789f 100644
--- a/sw/source/core/doc/number.cxx
+++ b/sw/source/core/doc/number.cxx
@@ -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)
diff --git a/sw/source/core/unocore/unosett.cxx 
b/sw/source/core/unocore/unosett.cxx
index ebffc9ae2852..817938749bf7 100644
--- a/sw/source/core/unocore/unosett.cxx
+++ b/sw/source/core/unocore/unosett.cxx
@@ -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));
diff --git a/sw/source/filter/ww8/wrtw8num.cxx 
b/sw/source/filter/ww8/wrtw8num.cxx
index ca3a026f2323..e2aad33206d3 100644
--- a/sw/source/filter/ww8/wrtw8num.cxx
+++ b/sw/source/filter/ww8/wrtw8num.cxx
@@ -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();
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to