Merge branch 'msw-fix-decimal-point' of https://github.com/vslavik/wxWidgets
Fix decimal point assertions with unknown Win32 locales. See https://github.com/wxWidgets/wxWidgets/pull/2330
This commit is contained in:
commit
c6d6ec9295
@ -363,6 +363,9 @@ private:
|
||||
|
||||
const char *m_pszOldLocale; // previous locale from setlocale()
|
||||
wxLocale *m_pOldLocale; // previous wxLocale
|
||||
#ifdef __WIN32__
|
||||
wxUint32 m_oldLCID;
|
||||
#endif
|
||||
|
||||
bool m_initialized;
|
||||
|
||||
|
@ -253,6 +253,9 @@ void wxLocale::DoCommonInit()
|
||||
if ( m_pszOldLocale )
|
||||
m_pszOldLocale = wxStrdup(m_pszOldLocale);
|
||||
|
||||
#ifdef __WIN32__
|
||||
m_oldLCID = ::GetThreadLocale();
|
||||
#endif
|
||||
|
||||
m_pOldLocale = wxSetLocale(this);
|
||||
|
||||
@ -1098,6 +1101,11 @@ wxLocale::~wxLocale()
|
||||
wxSetlocale(LC_ALL, m_pszOldLocale);
|
||||
free(const_cast<char *>(m_pszOldLocale));
|
||||
}
|
||||
|
||||
#ifdef __WIN32__
|
||||
::SetThreadLocale(m_oldLCID);
|
||||
wxMSWSetThreadUILanguage(LANGIDFROMLCID(m_oldLCID));
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
@ -1688,10 +1696,7 @@ GetInfoFromLCID(LCID lcid,
|
||||
/* static */
|
||||
wxString wxLocale::GetInfo(wxLocaleInfo index, wxLocaleCategory cat)
|
||||
{
|
||||
const wxLanguageInfo * const
|
||||
info = wxGetLocale() ? GetLanguageInfo(wxGetLocale()->GetLanguage())
|
||||
: NULL;
|
||||
if ( !info )
|
||||
if ( !wxGetLocale() )
|
||||
{
|
||||
// wxSetLocale() hadn't been called yet of failed, hence CRT must be
|
||||
// using "C" locale -- but check it to detect bugs that would happen if
|
||||
@ -1734,7 +1739,8 @@ wxString wxLocale::GetInfo(wxLocaleInfo index, wxLocaleCategory cat)
|
||||
}
|
||||
}
|
||||
|
||||
return GetInfoFromLCID(info->GetLCID(), index, cat);
|
||||
// wxSetLocale() succeeded and so thread locale was set together with CRT one.
|
||||
return GetInfoFromLCID(::GetThreadLocale(), index, cat);
|
||||
}
|
||||
|
||||
/* static */
|
||||
|
Loading…
Reference in New Issue
Block a user