diff options
author | Eike Rathke <erack@redhat.com> | 2021-10-25 15:39:46 +0200 |
---|---|---|
committer | Eike Rathke <erack@redhat.com> | 2021-10-25 18:15:40 +0200 |
commit | 97e63ff5375d9d80d6fe5d4bd68883e35bd56d91 (patch) | |
tree | ac70a5d79526e56a505375bb6f85921c6487108c /svx | |
parent | 02bd6074b00c3e4420f67ad67566c217d9341c03 (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.cxx | 18 |
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 ) |