Use wxUILocale in wxSpinCtrlDouble

This ensures that we use the decimal separator corresponding to the UI
locale of the application, rather than C locale, so that e.g. comma is
used under macOS even if setlocale() is not used.
This commit is contained in:
Vadim Zeitlin
2021-08-14 13:27:57 +01:00
parent b3cab73680
commit 85d379913d
2 changed files with 3 additions and 6 deletions

View File

@@ -427,8 +427,6 @@ private:
void DoSetDigitsAndUpdate(unsigned digits); void DoSetDigitsAndUpdate(unsigned digits);
wxString m_format;
wxDECLARE_DYNAMIC_CLASS(wxSpinCtrlDouble); wxDECLARE_DYNAMIC_CLASS(wxSpinCtrlDouble);
}; };

View File

@@ -41,6 +41,7 @@ wxIMPLEMENT_DYNAMIC_CLASS(wxSpinDoubleEvent, wxNotifyEvent);
#if wxUSE_SPINBTN #if wxUSE_SPINBTN
#include "wx/numformatter.h"
#include "wx/valnum.h" #include "wx/valnum.h"
#include "wx/valtext.h" #include "wx/valtext.h"
@@ -754,12 +755,12 @@ void wxSpinCtrlDouble::DoSendEvent()
bool wxSpinCtrlDouble::DoTextToValue(const wxString& text, double *val) bool wxSpinCtrlDouble::DoTextToValue(const wxString& text, double *val)
{ {
return text.ToDouble(val); return wxNumberFormatter::FromString(text, val);
} }
wxString wxSpinCtrlDouble::DoValueToText(double val) wxString wxSpinCtrlDouble::DoValueToText(double val)
{ {
return wxString::Format(m_format, val); return wxNumberFormatter::ToString(val, m_digits);
} }
void wxSpinCtrlDouble::SetIncrement(double inc) void wxSpinCtrlDouble::SetIncrement(double inc)
@@ -802,8 +803,6 @@ void wxSpinCtrlDouble::DoSetDigitsAndUpdate(unsigned digits)
void wxSpinCtrlDouble::DoSetDigits(unsigned digits) void wxSpinCtrlDouble::DoSetDigits(unsigned digits)
{ {
m_digits = digits; m_digits = digits;
m_format.Printf(wxT("%%0.%ulf"), digits);
} }
void wxSpinCtrlDouble::ResetTextValidator() void wxSpinCtrlDouble::ResetTextValidator()