]> git.saurik.com Git - wxWidgets.git/commitdiff
Improve check for ASCII locale in wxGTK initialization code.
authorVadim Zeitlin <vadim@wxwidgets.org>
Thu, 11 Nov 2010 12:09:30 +0000 (12:09 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Thu, 11 Nov 2010 12:09:30 +0000 (12:09 +0000)
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

index 0cfebc92796c6334baa73eb7c862cb5f7a5e095e..f90decedb13fb5cbf897a22c0a6b8cc05322a180 100644 (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);
     }