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 | |
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
-rw-r--r-- | include/svl/zforlist.hxx | 4 | ||||
-rw-r--r-- | svx/source/tbxctrls/tbcontrl.cxx | 18 |
2 files changed, 19 insertions, 3 deletions
diff --git a/include/svl/zforlist.hxx b/include/svl/zforlist.hxx index 9836f5047542..251b8212a3cd 100644 --- a/include/svl/zforlist.hxx +++ b/include/svl/zforlist.hxx @@ -323,6 +323,7 @@ public: NfCurrencyEntry( const css::i18n::Currency & rCurr, const LocaleDataWrapper& rLocaleData, LanguageType eLang ); + NfCurrencyEntry( const NfCurrencyEntry& ) = default; /// Symbols and language identical bool operator==( const NfCurrencyEntry& r ) const; @@ -334,6 +335,9 @@ public: sal_uInt16 GetNegativeFormat() const { return nNegativeFormat; } sal_uInt16 GetDigits() const { return nDigits; } + /** Only to resolve system locale for currency list. */ + void SetLanguage( LanguageType nLang ) { eLanguage = nLang; } + /** [$DM-407] (bBank==false) or [$DEM] (bBank==true) is returned. If bBank==false and bWithoutExtension==true only [$DM] */ 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 ) |