summaryrefslogtreecommitdiff
path: root/svx
diff options
context:
space:
mode:
authorEike Rathke <erack@redhat.com>2021-10-25 15:39:46 +0200
committerEike Rathke <erack@redhat.com>2021-10-25 18:15:40 +0200
commit97e63ff5375d9d80d6fe5d4bd68883e35bd56d91 (patch)
treeac70a5d79526e56a505375bb6f85921c6487108c /svx
parent02bd6074b00c3e4420f67ad67566c217d9341c03 (diff)
Fix toolbar button's currency list's number format for default locale
Always resulted in the currency's LCID being omitted in the number format for the default locale, which doesn't immediately harm but loses the context (what currency a $ sign is actually), and also lead to the "real" default currency format never matching the one being generated for the list so no entry was selected if that format was applied. Change-Id: I7963e4d3701092d6e227705fc0e8282448f075b1 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/124152 Reviewed-by: Eike Rathke <erack@redhat.com> Tested-by: Jenkins
Diffstat (limited to 'svx')
-rw-r--r--svx/source/tbxctrls/tbcontrl.cxx18
1 files changed, 15 insertions, 3 deletions
diff --git a/svx/source/tbxctrls/tbcontrl.cxx b/svx/source/tbxctrls/tbcontrl.cxx
index 6dd380b31883..1c816097b3ff 100644
--- a/svx/source/tbxctrls/tbcontrl.cxx
+++ b/svx/source/tbxctrls/tbcontrl.cxx
@@ -3642,11 +3642,23 @@ namespace
if (rItem.getLength() > sLongestString.getLength())
sLongestString = rItem;
- const NfCurrencyEntry& aCurrencyEntry = rCurrencyTable[ rCurrencyIndex ];
-
bIsSymbol = nPos >= nLen;
- sal_uInt16 nDefaultFormat = aFormatter.GetCurrencyFormatStrings( aStringsDtor, aCurrencyEntry, bIsSymbol );
+ sal_uInt16 nDefaultFormat;
+ const NfCurrencyEntry& rCurrencyEntry = rCurrencyTable[ rCurrencyIndex ];
+ if (rCurrencyIndex == 0)
+ {
+ // Stored with system locale, but we want the resolved
+ // full LCID format string. For example
+ // "[$$-409]#,##0.00" instead of "[$$]#,##0.00".
+ NfCurrencyEntry aCurrencyEntry( rCurrencyEntry);
+ aCurrencyEntry.SetLanguage( LanguageTag( aCurrencyEntry.GetLanguage()).getLanguageType());
+ nDefaultFormat = aFormatter.GetCurrencyFormatStrings( aStringsDtor, aCurrencyEntry, bIsSymbol);
+ }
+ else
+ {
+ nDefaultFormat = aFormatter.GetCurrencyFormatStrings( aStringsDtor, rCurrencyEntry, bIsSymbol);
+ }
const OUString& rFormatStr = aStringsDtor[ nDefaultFormat ];
m_aFormatEntries.push_back( rFormatStr );
if( rFormatStr == m_rSelectedFormat )