[Libreoffice-commits] core.git: sw/qa sw/source
Vasily Melenchuk (via logerrit)
logerrit at kemper.freedesktop.org
Sun Aug 8 21:20:07 UTC 2021
sw/qa/extras/odfexport/data/tdf143605.odt |binary
sw/qa/extras/odfexport/odfexport2.cxx | 6 +
sw/source/core/doc/number.cxx | 168 +++++++++++++++---------------
3 files changed, 90 insertions(+), 84 deletions(-)
New commits:
commit d1f1f546b212ecd651146addeb328806bb270d5f
Author: Vasily Melenchuk <vasily.melenchuk at cib.de>
AuthorDate: Thu Aug 5 20:40:13 2021 +0300
Commit: Thorsten Behrens <thorsten.behrens at allotropia.de>
CommitDate: Sun Aug 8 23:19:30 2021 +0200
sw: numbering rule is not constructed for numbering type "None"
Previously during refactoring this condition was lost. And it
is possible practically that we have all format for numbering
(prefix, suffix, format string, etc) but numbering is disabled.
Change-Id: I0c8ab446753308ad80b8d133824a936dacf6cc82
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/120082
Tested-by: Thorsten Behrens <thorsten.behrens at allotropia.de>
Reviewed-by: Thorsten Behrens <thorsten.behrens at allotropia.de>
diff --git a/sw/qa/extras/odfexport/data/tdf143605.odt b/sw/qa/extras/odfexport/data/tdf143605.odt
new file mode 100644
index 000000000000..7fb597e6d71c
Binary files /dev/null and b/sw/qa/extras/odfexport/data/tdf143605.odt differ
diff --git a/sw/qa/extras/odfexport/odfexport2.cxx b/sw/qa/extras/odfexport/odfexport2.cxx
index db2110c612a0..8e888f1aaa59 100644
--- a/sw/qa/extras/odfexport/odfexport2.cxx
+++ b/sw/qa/extras/odfexport/odfexport2.cxx
@@ -60,6 +60,12 @@ DECLARE_ODFEXPORT_TEST(testTdf137199, "tdf137199.docx")
CPPUNIT_ASSERT_EQUAL(OUString("HELLO2WORLD!"), getProperty<OUString>(getParagraph(4), "ListLabelString"));
}
+DECLARE_ODFEXPORT_TEST(testTdf143605, "tdf143605.odt")
+{
+ // With numering type "none" there should be nothing
+ CPPUNIT_ASSERT_EQUAL(OUString(""), getProperty<OUString>(getParagraph(1), "ListLabelString"));
+}
+
DECLARE_ODFEXPORT_TEST(testListFormatDocx, "listformat.docx")
{
// Ensure in resulting ODT we also have not just prefix/suffix, but custom delimiters
diff --git a/sw/source/core/doc/number.cxx b/sw/source/core/doc/number.cxx
index 674a242e48c0..3d7544e8cd09 100644
--- a/sw/source/core/doc/number.cxx
+++ b/sw/source/core/doc/number.cxx
@@ -657,102 +657,102 @@ OUString SwNumRule::MakeNumString( const SwNumberTree::tNumberVector & rNumVecto
nLevel = _nRestrictToThisLevel;
}
- if (nLevel < MAXLEVEL)
- {
- const SwNumFormat& rMyNFormat = Get( o3tl::narrowing<sal_uInt16>(nLevel) );
+ assert(nLevel < MAXLEVEL);
- {
- css::lang::Locale aLocale( LanguageTag::convertToLocale(nLang));
+ const SwNumFormat& rMyNFormat = Get( o3tl::narrowing<sal_uInt16>(nLevel) );
- if (rMyNFormat.HasListFormat())
- {
- OUString sLevelFormat = rMyNFormat.GetListFormat(bInclStrings);
+ if (rMyNFormat.GetNumberingType() == SVX_NUM_NUMBER_NONE)
+ return OUString();
- // 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)
- {
- OUString sReplacement;
- if (rNumVector[i])
- {
- if (bOnlyArabic)
- sReplacement = OUString::number(rNumVector[i]);
- else
- sReplacement = Get(i).GetNumStr(rNumVector[i], aLocale);
- }
- else
- sReplacement = "0"; // all 0 level are a 0
+ css::lang::Locale aLocale( LanguageTag::convertToLocale(nLang));
- OUString sFind("%" + OUString::number(i + 1) + "%");
- sal_Int32 nPosition = sLevelFormat.indexOf(sFind);
- if (nPosition >= 0)
- sLevelFormat = sLevelFormat.replaceAt(nPosition, sFind.getLength(), sReplacement);
- }
+ if (rMyNFormat.HasListFormat())
+ {
+ OUString sLevelFormat = rMyNFormat.GetListFormat(bInclStrings);
- aStr = sLevelFormat;
+ // 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)
+ {
+ OUString sReplacement;
+ if (rNumVector[i])
+ {
+ if (bOnlyArabic)
+ sReplacement = OUString::number(rNumVector[i]);
+ else
+ sReplacement = Get(i).GetNumStr(rNumVector[i], aLocale);
}
else
+ sReplacement = "0"; // all 0 level are a 0
+
+ OUString sFind("%" + OUString::number(i + 1) + "%");
+ sal_Int32 nPosition = sLevelFormat.indexOf(sFind);
+ if (nPosition >= 0)
+ sLevelFormat = sLevelFormat.replaceAt(nPosition, sFind.getLength(), sReplacement);
+ }
+
+ aStr = sLevelFormat;
+ }
+ else
+ {
+ // Fallback case: level format is not defined
+ // So use old way with levels joining by dot "."
+ SwNumberTree::tNumberVector::size_type i = nLevel;
+
+ if (!IsContinusNum() &&
+ // - do not include upper levels, if level isn't numbered.
+ rMyNFormat.GetNumberingType() != SVX_NUM_NUMBER_NONE &&
+ rMyNFormat.GetIncludeUpperLevels()) // Just the own level?
+ {
+ sal_uInt8 n = rMyNFormat.GetIncludeUpperLevels();
+ if (1 < n)
{
- // Fallback case: level format is not defined
- // So use old way with levels joining by dot "."
- SwNumberTree::tNumberVector::size_type i = nLevel;
-
- if (!IsContinusNum() &&
- // - do not include upper levels, if level isn't numbered.
- rMyNFormat.GetNumberingType() != SVX_NUM_NUMBER_NONE &&
- rMyNFormat.GetIncludeUpperLevels()) // Just the own level?
- {
- sal_uInt8 n = rMyNFormat.GetIncludeUpperLevels();
- if (1 < n)
- {
- if (i + 1 >= n)
- i -= n - 1;
- else
- i = 0;
- }
- }
+ if (i + 1 >= n)
+ i -= n - 1;
+ else
+ i = 0;
+ }
+ }
- for (; i <= nLevel; ++i)
- {
- const SwNumFormat& rNFormat = Get(i);
- if (SVX_NUM_NUMBER_NONE == rNFormat.GetNumberingType())
- {
- // Should 1.1.1 --> 2. NoNum --> 1..1 or 1.1 ??
- // if( i != rNum.nMyLevel )
- // aStr += ".";
- continue;
- }
+ for (; i <= nLevel; ++i)
+ {
+ const SwNumFormat& rNFormat = Get(i);
+ if (SVX_NUM_NUMBER_NONE == rNFormat.GetNumberingType())
+ {
+ // Should 1.1.1 --> 2. NoNum --> 1..1 or 1.1 ??
+ // if( i != rNum.nMyLevel )
+ // aStr += ".";
+ continue;
+ }
- if (rNumVector[i])
- {
- if (bOnlyArabic)
- aStr.append(rNumVector[i]);
- else
- aStr.append(rNFormat.GetNumStr(rNumVector[i], aLocale));
- }
- else
- aStr.append("0"); // all 0 level are a 0
- if (i != nLevel && !aStr.isEmpty())
- aStr.append(".");
- }
+ if (rNumVector[i])
+ {
+ if (bOnlyArabic)
+ aStr.append(rNumVector[i]);
+ else
+ aStr.append(rNFormat.GetNumStr(rNumVector[i], aLocale));
+ }
+ else
+ aStr.append("0"); // all 0 level are a 0
+ if (i != nLevel && !aStr.isEmpty())
+ aStr.append(".");
+ }
- // The type doesn't have any number, so don't append
- // the post-/prefix string
- if (bInclStrings && !bOnlyArabic &&
- SVX_NUM_CHAR_SPECIAL != rMyNFormat.GetNumberingType() &&
- SVX_NUM_BITMAP != rMyNFormat.GetNumberingType())
- {
- const OUString& sPrefix = rMyNFormat.GetPrefix();
- const OUString& sSuffix = rMyNFormat.GetSuffix();
+ // The type doesn't have any number, so don't append
+ // the post-/prefix string
+ if (bInclStrings && !bOnlyArabic &&
+ SVX_NUM_CHAR_SPECIAL != rMyNFormat.GetNumberingType() &&
+ SVX_NUM_BITMAP != rMyNFormat.GetNumberingType())
+ {
+ const OUString& sPrefix = rMyNFormat.GetPrefix();
+ const OUString& sSuffix = rMyNFormat.GetSuffix();
- aStr.insert(0, sPrefix);
- aStr.append(sSuffix);
- if (pExtremities)
- {
- pExtremities->nPrefixChars = sPrefix.getLength();
- pExtremities->nSuffixChars = sSuffix.getLength();
- }
- }
+ aStr.insert(0, sPrefix);
+ aStr.append(sSuffix);
+ if (pExtremities)
+ {
+ pExtremities->nPrefixChars = sPrefix.getLength();
+ pExtremities->nSuffixChars = sSuffix.getLength();
}
}
}
More information about the Libreoffice-commits
mailing list