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
This commit is contained in:
Vadim Zeitlin
2010-11-11 12:09:30 +00:00
parent 6c4d607e60
commit f32848c53f

View File

@@ -28,6 +28,7 @@
#include "wx/gtk/private.h"
#include "wx/apptrait.h"
#include "wx/fontmap.h"
#if wxUSE_LIBHILDON
#include <hildon-widgets/hildon-program.h>
@@ -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);
}