From f32848c53f72a444cce8212feff60a2eecc52750 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Thu, 11 Nov 2010 12:09:30 +0000 Subject: [PATCH] Improve check for ASCII locale in wxGTK initialization code. Use wxFontMapper::GetEncodingFromName() to check if the current locale encoding is ASCII instead of just comparing the name with "US-ASCII" which is not the name used by most platforms (e.g. current Linux systems call this encoding "ANSI_X3.4-1968"). This avoid creating a wxCSConv object for ASCII encoding unnecessarily on startup. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66120 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/gtk/app.cpp | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/gtk/app.cpp b/src/gtk/app.cpp index 0cfebc9279..f90decedb1 100644 --- a/src/gtk/app.cpp +++ b/src/gtk/app.cpp @@ -28,6 +28,7 @@ #include "wx/gtk/private.h" #include "wx/apptrait.h" +#include "wx/fontmap.h" #if wxUSE_LIBHILDON #include @@ -309,8 +310,24 @@ bool wxApp::Initialize(int& argc_, wxChar **argv_) // (2) if a non default locale is set, assume that the user wants his // filenames in this locale too encName = wxLocale::GetSystemEncodingName().Upper(); + + // But don't consider ASCII in this case. + if ( !encName.empty() ) + { +#if wxUSE_FONTMAP + wxFontEncoding enc = wxFontMapperBase::GetEncodingFromName(encName); + if ( enc == wxFONTENCODING_DEFAULT ) +#else // !wxUSE_FONTMAP + if ( encName == wxT("US-ASCII") ) +#endif // wxUSE_FONTMAP/!wxUSE_FONTMAP + { + // This means US-ASCII when returned from GetEncodingFromName(). + encName.clear(); + } + } + // (3) finally use UTF-8 by default - if (encName.empty() || encName == wxT("US-ASCII")) + if ( encName.empty() ) encName = wxT("UTF-8"); wxSetEnv(wxT("G_FILENAME_ENCODING"), encName); } -- 2.45.2