include/svl/zformat.hxx | 3 ++- sc/source/ui/view/output2.cxx | 6 ++++-- svl/source/numbers/zformat.cxx | 17 +++++++++-------- 3 files changed, 15 insertions(+), 11 deletions(-)
New commits: commit 8f9bfea59df1060ef8a1a3ab6510c8e9c1e5c52d Author: Caolán McNamara <[email protected]> AuthorDate: Tue Feb 17 10:32:02 2026 +0000 Commit: Caolán McNamara <[email protected]> CommitDate: Sat Feb 21 20:02:59 2026 +0100 pass an explicit SvNFLanguageData to this GetOutputString Change-Id: I6502cff8dd07fac081012c5c486bcb7ab5cc5805 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/199838 Tested-by: Jenkins Reviewed-by: Caolán McNamara <[email protected]> diff --git a/include/svl/zformat.hxx b/include/svl/zformat.hxx index 5aaa99d37033..05f2c53dee8b 100644 --- a/include/svl/zformat.hxx +++ b/include/svl/zformat.hxx @@ -247,7 +247,8 @@ public: * Get output string from a numeric value that fits the number of * characters specified. */ - bool GetOutputString( double fNumber, sal_uInt16 nCharCount, OUString& rOutString, const NativeNumberWrapper& rNatNum ) const; + bool GetOutputString( double fNumber, sal_uInt16 nCharCount, OUString& rOutString, + const NativeNumberWrapper& rNatNum, const SvNFLanguageData& rCurrentLang ) const; // bStarFlag: Take *n format as ESC n bool GetOutputString( double fNumber, OUString& OutString, const Color** ppColor, const NativeNumberWrapper& rNatNum, const SvNFLanguageData& rCurrentLang, bool bStarFlag = false) const; diff --git a/sc/source/ui/view/output2.cxx b/sc/source/ui/view/output2.cxx index 942672d2a27e..0d083c21217e 100644 --- a/sc/source/ui/view/output2.cxx +++ b/sc/source/ui/view/output2.cxx @@ -653,7 +653,8 @@ bool ScDrawStringsVars::SetTextToWidthOrHash( ScRefCellValue& rCell, tools::Long sal_uInt16 nNumDigits = static_cast<sal_uInt16>(nWidth / nMaxDigit); { OUString sTempOut(aString); - if (!pNumFormat->GetOutputString(fVal, nNumDigits, sTempOut, pOutput->mpDoc->GetFormatTable()->GetNatNum())) + if (!pNumFormat->GetOutputString(fVal, nNumDigits, sTempOut, pOutput->mpDoc->GetFormatTable()->GetNatNum(), + pOutput->mpDoc->GetFormatTable()->GetROLanguageData())) { aString = sTempOut; // Failed to get output string. Bail out. @@ -692,7 +693,8 @@ bool ScDrawStringsVars::SetTextToWidthOrHash( ScRefCellValue& rCell, tools::Long // Re-calculate. nNumDigits = static_cast<sal_uInt16>(nWidth / nMaxDigit); OUString sTempOut(aString); - if (!pNumFormat->GetOutputString(fVal, nNumDigits, sTempOut, pOutput->mpDoc->GetFormatTable()->GetNatNum())) + if (!pNumFormat->GetOutputString(fVal, nNumDigits, sTempOut, pOutput->mpDoc->GetFormatTable()->GetNatNum(), + pOutput->mpDoc->GetFormatTable()->GetROLanguageData())) { aString = sTempOut; // Failed to get output string. Bail out. diff --git a/svl/source/numbers/zformat.cxx b/svl/source/numbers/zformat.cxx index 1a0858c450d6..4a983fc0c7b4 100644 --- a/svl/source/numbers/zformat.cxx +++ b/svl/source/numbers/zformat.cxx @@ -2426,13 +2426,13 @@ OUString SvNumberformat::GetIntegerFractionDelimiterString( sal_uInt16 nNumFor ) return lcl_GetIntegerFractionDelimiterString( rInfo, nCnt ); } -bool SvNumberformat::GetOutputString(double fNumber, sal_uInt16 nCharCount, OUString& rOutString, const NativeNumberWrapper& rNatNum) const +bool SvNumberformat::GetOutputString(double fNumber, sal_uInt16 nCharCount, OUString& rOutString, + const NativeNumberWrapper& rNatNum, const SvNFLanguageData& rCurrentLang) const { if (eType != SvNumFormatType::NUMBER) { return false; } - const auto& rLangData = GetCurrentLanguageData(); double fTestNum = fNumber; bool bSign = std::signbit(fTestNum); if (bSign) @@ -2441,7 +2441,7 @@ bool SvNumberformat::GetOutputString(double fNumber, sal_uInt16 nCharCount, OUSt } if (fTestNum < EXP_LOWER_BOUND) { - lcl_GetOutputStringScientific(fNumber, nCharCount, rLangData, rOutString); + lcl_GetOutputStringScientific(fNumber, nCharCount, rCurrentLang, rOutString); return true; } @@ -2451,7 +2451,7 @@ bool SvNumberformat::GetOutputString(double fNumber, sal_uInt16 nCharCount, OUSt if (nDigitPre > 15) { - lcl_GetOutputStringScientific(fNumber, nCharCount, rLangData, rOutString); + lcl_GetOutputStringScientific(fNumber, nCharCount, rCurrentLang, rOutString); return true; } @@ -2466,11 +2466,11 @@ bool SvNumberformat::GetOutputString(double fNumber, sal_uInt16 nCharCount, OUSt // Subtract the decimal point. --nPrec; } - ImpGetOutputStdToPrecision(fNumber, rOutString, nPrec, rNatNum, rLangData); + ImpGetOutputStdToPrecision(fNumber, rOutString, nPrec, rNatNum, rCurrentLang); if (rOutString.getLength() > nCharCount) { // String still wider than desired. Switch to scientific notation. - lcl_GetOutputStringScientific(fNumber, nCharCount, rLangData, rOutString); + lcl_GetOutputStringScientific(fNumber, nCharCount, rCurrentLang, rOutString); } return true; } commit 3e96c2865b91eeb324aea91e8f4ee0acd94dba2b Author: Caolán McNamara <[email protected]> AuthorDate: Tue Feb 17 10:22:08 2026 +0000 Commit: Caolán McNamara <[email protected]> CommitDate: Sat Feb 21 20:02:51 2026 +0100 interim change, call GetCurrentLanguageData just once here Change-Id: Idc21e3346bae4947efa76d212a6a419d8b571104 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/199837 Reviewed-by: Caolán McNamara <[email protected]> Tested-by: Jenkins diff --git a/svl/source/numbers/zformat.cxx b/svl/source/numbers/zformat.cxx index 84da3b98c50e..1a0858c450d6 100644 --- a/svl/source/numbers/zformat.cxx +++ b/svl/source/numbers/zformat.cxx @@ -2432,6 +2432,7 @@ bool SvNumberformat::GetOutputString(double fNumber, sal_uInt16 nCharCount, OUSt { return false; } + const auto& rLangData = GetCurrentLanguageData(); double fTestNum = fNumber; bool bSign = std::signbit(fTestNum); if (bSign) @@ -2440,7 +2441,7 @@ bool SvNumberformat::GetOutputString(double fNumber, sal_uInt16 nCharCount, OUSt } if (fTestNum < EXP_LOWER_BOUND) { - lcl_GetOutputStringScientific(fNumber, nCharCount, GetCurrentLanguageData(), rOutString); + lcl_GetOutputStringScientific(fNumber, nCharCount, rLangData, rOutString); return true; } @@ -2450,7 +2451,7 @@ bool SvNumberformat::GetOutputString(double fNumber, sal_uInt16 nCharCount, OUSt if (nDigitPre > 15) { - lcl_GetOutputStringScientific(fNumber, nCharCount, GetCurrentLanguageData(), rOutString); + lcl_GetOutputStringScientific(fNumber, nCharCount, rLangData, rOutString); return true; } @@ -2465,11 +2466,11 @@ bool SvNumberformat::GetOutputString(double fNumber, sal_uInt16 nCharCount, OUSt // Subtract the decimal point. --nPrec; } - ImpGetOutputStdToPrecision(fNumber, rOutString, nPrec, rNatNum, GetCurrentLanguageData()); + ImpGetOutputStdToPrecision(fNumber, rOutString, nPrec, rNatNum, rLangData); if (rOutString.getLength() > nCharCount) { // String still wider than desired. Switch to scientific notation. - lcl_GetOutputStringScientific(fNumber, nCharCount, GetCurrentLanguageData(), rOutString); + lcl_GetOutputStringScientific(fNumber, nCharCount, rLangData, rOutString); } return true; } @@ -2509,15 +2510,15 @@ bool SvNumberformat::GetOutputString(double fNumber, bool bRes = false; OutString.clear(); *ppColor = nullptr; // No color change - if (eType & SvNumFormatType::LOGICAL && sFormatstring == rScan.GetKeywords()[NF_KEY_BOOLEAN]) + if (eType & SvNumFormatType::LOGICAL && sFormatstring == rCurrentLang.GetKeywords()[NF_KEY_BOOLEAN]) { if (fNumber) { - OutString = rScan.GetTrueString(); + OutString = rCurrentLang.GetTrueString(); } else { - OutString = rScan.GetFalseString(); + OutString = rCurrentLang.GetFalseString(); } return false; }
