diff options
author | Justin Luth <justin_luth@sil.org> | 2021-10-20 18:09:46 +0200 |
---|---|---|
committer | Eike Rathke <erack@redhat.com> | 2021-10-26 16:04:13 +0200 |
commit | 546e7d14b397cfd1210b891c8dc4a195c25f3876 (patch) | |
tree | 6df65672872a4ab03ca5e4f33a4c7a50801df37b /svl | |
parent | 7e53757f91a176d68cdad1dbde2ecaba1db5c764 (diff) |
tdf#131025 swtable: don't apply number format to non-number text
Applying a numbering style to text causes export to save that
out as a number (valued as zero). That is not good because
the ODF spec says that a number overrides a string.
So don't accept a numbering format on non-number text.
Why is this change good?
-the cell previously had no direct formatting (by definition).
-the cell's previous old format was text (tested).
-any numbering format applied obviously isn't correct (by definition).
-any previous formatting has already been overwritten with numformat.
-the default numbering is appropriate for text.
-empty cells still get the numbering format (tested).
-odd human-designed formats are accepted as intentional (tested).
What are the concerns?
-the scope of this change is HUGE, way beyond this bug.
-on both my dev box and patch box I saw occassional crashes.
-the bug was "fixed" by a different import commit that ensured
different languages were treated consistently.
So this patch is no longer critical, just nice to have
to avoid exporting out-of-spec content.
Change-Id: Id3dc5f803c3cf4875bc0cab52d1019a18679da77
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/123904
Tested-by: Jenkins
Reviewed-by: Justin Luth <justin_luth@sil.org>
Reviewed-by: Eike Rathke <erack@redhat.com>
Diffstat (limited to 'svl')
-rw-r--r-- | svl/source/numbers/zforlist.cxx | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/svl/source/numbers/zforlist.cxx b/svl/source/numbers/zforlist.cxx index d2340bf2d968..3969f1885199 100644 --- a/svl/source/numbers/zforlist.cxx +++ b/svl/source/numbers/zforlist.cxx @@ -3351,6 +3351,14 @@ OUString SvNumberFormatter::GenerateFormat(sal_uInt32 nIndex, return sString.makeStringAndClear(); } +bool SvNumberFormatter::IsUserDefined(sal_uInt32 F_Index) const +{ + ::osl::MutexGuard aGuard( GetInstanceMutex() ); + const SvNumberformat* pFormat = GetFormatEntry(F_Index); + + return pFormat && (pFormat->GetType() & SvNumFormatType::DEFINED); +} + bool SvNumberFormatter::IsUserDefined(std::u16string_view sStr, LanguageType eLnge) { |