git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@48620
c3d73ce0-8a6f-49c7-b76d-
6d57e0e08775
float wxXmlResourceHandler::GetFloat(const wxString& param, float defaultv)
{
float wxXmlResourceHandler::GetFloat(const wxString& param, float defaultv)
{
- double value;
- wxString str1 = GetParamValue(param);
+ wxString str = GetParamValue(param);
-#ifndef __WXWINCE__
- const char *prevlocale = setlocale(LC_NUMERIC, "C");
-#endif
+ // strings in XRC always use C locale but wxString::ToDouble() uses the
+ // current one, so transform the string to it supposing that the only
+ // difference between them is the decimal separator
+ //
+ // TODO: use wxString::ToCDouble() when we have it
+ str.Replace(wxT("."), wxLocale::GetInfo(wxLOCALE_DECIMAL_POINT,
+ wxLOCALE_CAT_NUMBER));
- if (!str1.ToDouble(&value))
+ double value;
+ if (!str.ToDouble(&value))
-#ifndef __WXWINCE__
- setlocale(LC_NUMERIC, prevlocale);
-#endif
-
return wx_truncate_cast(float, value);
}
return wx_truncate_cast(float, value);
}