]> git.saurik.com Git - wxWidgets.git/blobdiff - src/gtk/app.cpp
Fix crash in wxDC::GetMultiLineTextExtent() after last commit.
[wxWidgets.git] / src / gtk / app.cpp
index 0cfebc92796c6334baa73eb7c862cb5f7a5e095e..823da625a20580bf39a6fe6aae266f9549d09e2a 100644 (file)
@@ -26,8 +26,8 @@
     #include <gpe/init.h>
 #endif
 
-#include "wx/gtk/private.h"
 #include "wx/apptrait.h"
+#include "wx/fontmap.h"
 
 #if wxUSE_LIBHILDON
     #include <hildon-widgets/hildon-program.h>
@@ -37,7 +37,8 @@
     #include <hildon/hildon.h>
 #endif // wxUSE_LIBHILDON2
 
-#include <gdk/gdkx.h>
+#include <gtk/gtk.h>
+#include "wx/gtk/private.h"
 
 //-----------------------------------------------------------------------------
 // link GnomeVFS
@@ -85,7 +86,7 @@ static void wx_add_idle_hooks()
         }
     }
     // "size_allocate" hook
-    // Needed to match the behavior of the old idle system,
+    // Needed to match the behaviour of the old idle system,
     // but probably not necessary.
     {
         static bool hook_installed;
@@ -124,7 +125,7 @@ bool wxApp::DoIdle()
 
 #if wxDEBUG_LEVEL
         // don't generate the idle events while the assert modal dialog is shown,
-        // this matches the behavior of wxMSW
+        // this matches the behaviour of wxMSW
         if (m_isInAssert)
             return false;
 #endif
@@ -228,6 +229,7 @@ bool wxApp::OnInitGui()
     if ( !wxAppBase::OnInitGui() )
         return false;
 
+#ifndef __WXGTK3__
     // if this is a wxGLApp (derived from wxApp), and we've already
     // chosen a specific visual, then derive the GdkVisual from that
     if ( GetXVisualInfo() )
@@ -265,6 +267,7 @@ bool wxApp::OnInitGui()
             }
         }
     }
+#endif
 
 #if wxUSE_LIBHILDON || wxUSE_LIBHILDON2
     if ( !GetHildonProgram() )
@@ -294,6 +297,7 @@ bool wxApp::Initialize(int& argc_, wxChar **argv_)
     // gtk+ 2.0 supports Unicode through UTF-8 strings
     wxConvCurrent = &wxConvUTF8;
 
+#ifdef __UNIX__
     // decide which conversion to use for the file names
 
     // (1) this variable exists for the sole purpose of specifying the encoding
@@ -309,8 +313,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);
     }
@@ -326,6 +346,7 @@ bool wxApp::Initialize(int& argc_, wxChar **argv_)
 #endif // wxUSE_INTL
     static wxConvBrokenFileNames fileconv(encName);
     wxConvFileName = &fileconv;
+#endif // __UNIX__
 
 
     bool init_result;
@@ -347,7 +368,7 @@ bool wxApp::Initialize(int& argc_, wxChar **argv_)
     init_result = true;  // is there a _check() version of this?
     gpe_application_init( &argcGTK, &argvGTK );
 #else
-    init_result = gtk_init_check( &argcGTK, &argvGTK );
+    init_result = gtk_init_check( &argcGTK, &argvGTK ) != 0;
 #endif
     wxUpdateLocaleIsUtf8();
 
@@ -422,7 +443,7 @@ bool wxApp::Initialize(int& argc_, wxChar **argv_)
         return false;
     }
 
-    // we can not enter threads before gtk_init is done
+    // we cannot enter threads before gtk_init is done
     gdk_threads_enter();
 
 #if wxUSE_INTL