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:
@@ -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);
|
||||
}
|
||||
|
Reference in New Issue
Block a user