]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/intl.cpp
Corrected Normalize invocation by casting
[wxWidgets.git] / src / common / intl.cpp
index 7d1b0d14cfa7874a06ad8cd868d4f94f1934c510..de62ef5bb6ef3903dcd816130e4034a1508a1057 100644 (file)
     #include "wx/fontmap.h"         // for CharsetToEncoding()
 #endif
 
+#if defined(__WXMAC__)
+  #include  "wx/mac/private.h"  // includes mac headers
+#endif
+
 // ----------------------------------------------------------------------------
 // simple types
 // ----------------------------------------------------------------------------
@@ -1256,7 +1260,19 @@ wxString wxLocale::GetSystemEncodingName()
     free(oldLocale);
     if (alang)
     {
-        encname = wxConvLibc.cMB2WX(alang);
+#ifdef __SOLARIS__
+        // nl_langinfo() under Solaris returns 646 by default which stands for
+        // ISO-646, i.e. 7 bit ASCII and we should recognize it to avoid
+        // warnings about unrecognized encoding on each program startup
+        if ( strcmp(alang, "646") == 0 )
+        {
+            encname = _T("US-ASCII");
+        }
+        else
+#endif // __SOLARIS__
+        {
+            encname = wxConvLibc.cMB2WX(alang);
+        }
     }
     else
 #endif // HAVE_LANGINFO_H
@@ -1324,8 +1340,20 @@ wxFontEncoding wxLocale::GetSystemEncoding()
     wxString encname = GetSystemEncodingName();
     if ( !encname.empty() )
     {
-        return wxTheFontMapper->
+        wxFontEncoding enc = wxTheFontMapper->
             CharsetToEncoding(encname, FALSE /* not interactive */);
+
+        // this should probably be considered as a bug in CharsetToEncoding():
+        // it shouldn't return wxFONTENCODING_DEFAULT at all - but it does it
+        // for US-ASCII charset
+        //
+        // we, OTOH, definitely shouldn't return it as it doesn't make sense at
+        // all (which encoding is it?)
+        if ( enc != wxFONTENCODING_DEFAULT )
+        {
+            return enc;
+        }
+        //else: return wxFONTENCODING_SYSTEM below
     }
 #endif // Win32/Unix