From: Stefan Neis Date: Sun, 8 Feb 2004 16:27:22 +0000 (+0000) Subject: Applied and extended patch 886524 (wxGridCellFloatEditor doesn't X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/60d876f374ccfec05f76290234125785298672d4 Applied and extended patch 886524 (wxGridCellFloatEditor doesn't accept '.' and '-'). git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@25650 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/src/common/intl.cpp b/src/common/intl.cpp index 43e74bf081..97f5046281 100644 --- a/src/common/intl.cpp +++ b/src/common/intl.cpp @@ -2507,12 +2507,10 @@ bool wxLocale::AddCatalog(const wxChar *szDomain) // accessors for locale-dependent data // ---------------------------------------------------------------------------- -#if 0 - #ifdef __WXMSW__ /* static */ -wxString wxLocale::GetInfo(wxLocaleInfo index) +wxString wxLocale::GetInfo(wxLocaleInfo index, wxLocaleCategory cat) { wxString str; wxChar buffer[256]; @@ -2520,13 +2518,14 @@ wxString wxLocale::GetInfo(wxLocaleInfo index) buffer[0] = wxT('\0'); switch (index) { - case wxSYS_DECIMAL_SEPARATOR: + case wxLOCALE_DECIMAL_POINT: count = ::GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SDECIMAL, buffer, 256); if (!count) str << "."; else str << buffer; break; +#if 0 case wxSYS_LIST_SEPARATOR: count = ::GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SLIST, buffer, 256); if (!count) @@ -2541,6 +2540,7 @@ wxString wxLocale::GetInfo(wxLocaleInfo index) else str << buffer; break; +#endif default: wxFAIL_MSG("Unknown System String !"); } @@ -2550,15 +2550,38 @@ wxString wxLocale::GetInfo(wxLocaleInfo index) #else // !__WXMSW__ /* static */ -wxString wxLocale::GetInfo(wxLocaleInfo index, wxLocaleCategory) +wxString wxLocale::GetInfo(wxLocaleInfo index, wxLocaleCategory cat) { - return wxEmptyString; -} + struct lconv *locale_info = localeconv(); + switch (cat) + { + case wxLOCALE_CAT_NUMBER: + switch (index) + { + case wxLOCALE_THOUSANDS_SEP: + return locale_info->thousands_sep; + case wxLOCALE_DECIMAL_POINT: + return locale_info->decimal_point; + default: + return wxEmptyString; + } + case wxLOCALE_CAT_MONEY: + switch (index) + { + case wxLOCALE_THOUSANDS_SEP: + return locale_info->mon_thousands_sep; + case wxLOCALE_DECIMAL_POINT: + return locale_info->mon_decimal_point; + default: + return wxEmptyString; + } + default: + return wxEmptyString; + } +} #endif // __WXMSW__/!__WXMSW__ -#endif // 0 - // ---------------------------------------------------------------------------- // global functions and variables // ---------------------------------------------------------------------------- diff --git a/src/generic/grid.cpp b/src/generic/grid.cpp index 60146166eb..1ca6596040 100644 --- a/src/generic/grid.cpp +++ b/src/generic/grid.cpp @@ -41,6 +41,7 @@ #include "wx/checkbox.h" #include "wx/combobox.h" #include "wx/valtext.h" + #include "wx/intl.h" #endif #include "wx/textfile.h" @@ -1067,7 +1068,8 @@ void wxGridCellFloatEditor::Reset() void wxGridCellFloatEditor::StartingKey(wxKeyEvent& event) { int keycode = event.GetKeyCode(); - if ( wxIsdigit(keycode) || keycode == '+' || keycode == '-' || keycode == '.' + if ( wxIsdigit(keycode) || keycode == '+' || keycode == '-' + || keycode == wxLocale::GetInfo(wxLOCALE_DECIMAL_POINT, wxLOCALE_CAT_NUMBER)[0] || keycode == WXK_NUMPAD0 || keycode == WXK_NUMPAD1 || keycode == WXK_NUMPAD2 @@ -1167,9 +1169,11 @@ bool wxGridCellFloatEditor::IsAcceptedKey(wxKeyEvent& event) return TRUE; default: - // additionally accept 'e' as in '1e+6' + // additionally accept 'e' as in '1e+6', also '-', '+', and '.' if ( (keycode < 128) && - (wxIsdigit(keycode) || tolower(keycode) == 'e') ) + (wxIsdigit(keycode) || tolower(keycode) == 'e' || + keycode == wxLocale::GetInfo(wxLOCALE_DECIMAL_POINT, wxLOCALE_CAT_NUMBER)[0] || + keycode == '+' || keycode == '-') ) return TRUE; } }