Unicode fixes.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@25722 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Stefan Neis
2004-02-10 22:16:55 +00:00
parent 3a818b15a1
commit 3fe7375573
2 changed files with 27 additions and 10 deletions

View File

@@ -2510,7 +2510,7 @@ bool wxLocale::AddCatalog(const wxChar *szDomain)
#ifdef __WXMSW__ #ifdef __WXMSW__
/* static */ /* static */
wxString wxLocale::GetInfo(wxLocaleInfo index, wxLocaleCategory cat) wxString wxLocale::GetInfo(wxLocaleInfo index, wxLocaleCategory WXUNUSED(cat))
{ {
wxString str; wxString str;
wxChar buffer[256]; wxChar buffer[256];
@@ -2559,9 +2559,11 @@ wxString wxLocale::GetInfo(wxLocaleInfo index, wxLocaleCategory cat)
switch (index) switch (index)
{ {
case wxLOCALE_THOUSANDS_SEP: case wxLOCALE_THOUSANDS_SEP:
return locale_info->thousands_sep; return wxString(locale_info->thousands_sep,
*wxConvCurrent);
case wxLOCALE_DECIMAL_POINT: case wxLOCALE_DECIMAL_POINT:
return locale_info->decimal_point; return wxString(locale_info->decimal_point,
*wxConvCurrent);
default: default:
return wxEmptyString; return wxEmptyString;
} }
@@ -2569,9 +2571,11 @@ wxString wxLocale::GetInfo(wxLocaleInfo index, wxLocaleCategory cat)
switch (index) switch (index)
{ {
case wxLOCALE_THOUSANDS_SEP: case wxLOCALE_THOUSANDS_SEP:
return locale_info->mon_thousands_sep; return wxString(locale_info->mon_thousands_sep,
*wxConvCurrent);
case wxLOCALE_DECIMAL_POINT: case wxLOCALE_DECIMAL_POINT:
return locale_info->mon_decimal_point; return wxString(locale_info->mon_decimal_point,
*wxConvCurrent);
default: default:
return wxEmptyString; return wxEmptyString;
} }

View File

@@ -1068,8 +1068,13 @@ void wxGridCellFloatEditor::Reset()
void wxGridCellFloatEditor::StartingKey(wxKeyEvent& event) void wxGridCellFloatEditor::StartingKey(wxKeyEvent& event)
{ {
int keycode = event.GetKeyCode(); int keycode = event.GetKeyCode();
char tmpbuf[2];
tmpbuf[0] = (char) keycode;
tmpbuf[1] = '\0';
bool is_decimal_point = ( wxString(tmpbuf, *wxConvCurrent) ==
wxLocale::GetInfo(wxLOCALE_DECIMAL_POINT, wxLOCALE_CAT_NUMBER) );
if ( wxIsdigit(keycode) || keycode == '+' || keycode == '-' if ( wxIsdigit(keycode) || keycode == '+' || keycode == '-'
|| keycode == wxLocale::GetInfo(wxLOCALE_DECIMAL_POINT, wxLOCALE_CAT_NUMBER)[0u] || is_decimal_point
|| keycode == WXK_NUMPAD0 || keycode == WXK_NUMPAD0
|| keycode == WXK_NUMPAD1 || keycode == WXK_NUMPAD1
|| keycode == WXK_NUMPAD2 || keycode == WXK_NUMPAD2
@@ -1168,13 +1173,21 @@ bool wxGridCellFloatEditor::IsAcceptedKey(wxKeyEvent& event)
case WXK_NUMPAD_DECIMAL: case WXK_NUMPAD_DECIMAL:
return TRUE; return TRUE;
default: default:
// additionally accept 'e' as in '1e+6', also '-', '+', and '.' {
// additionally accept 'e' as in '1e+6', also '-', '+', and '.'
char tmpbuf[2];
tmpbuf[0] = (char) keycode;
tmpbuf[1] = '\0';
bool is_decimal_point =
( wxString(tmpbuf, *wxConvCurrent) ==
wxLocale::GetInfo(wxLOCALE_DECIMAL_POINT,
wxLOCALE_CAT_NUMBER) );
if ( (keycode < 128) && if ( (keycode < 128) &&
(wxIsdigit(keycode) || tolower(keycode) == 'e' || (wxIsdigit(keycode) || tolower(keycode) == 'e' ||
keycode == wxLocale::GetInfo(wxLOCALE_DECIMAL_POINT, wxLOCALE_CAT_NUMBER)[0u] || is_decimal_point || keycode == '+' || keycode == '-') )
keycode == '+' || keycode == '-') )
return TRUE; return TRUE;
}
} }
} }