]> git.saurik.com Git - wxWidgets.git/blobdiff - src/gtk/app.cpp
fix PangoFontMetrics leak in GetCharHeight() (bug 1691180)
[wxWidgets.git] / src / gtk / app.cpp
index 1aee54439b1919e3b9e1f4272927e70d0b3aaada..fa47355e8fae1c4257dfa1bdbc17c9a1b60a1dee 100644 (file)
@@ -209,7 +209,7 @@ static gint wxapp_idle_callback( gpointer WXUNUSED(data) )
 
         // Release lock again
         gdk_threads_leave();
-        
+
         {
             // If another idle source was added, remove it
 #if wxUSE_THREADS
@@ -403,7 +403,8 @@ GdkVisual *wxApp::GetGdkVisual()
 
 bool wxApp::Initialize(int& argc, wxChar **argv)
 {
-    bool init_result;
+    if ( !wxAppBase::Initialize(argc, argv) )
+        return false;
 
 #if wxUSE_THREADS
     if (!g_thread_supported())
@@ -413,8 +414,6 @@ bool wxApp::Initialize(int& argc, wxChar **argv)
     g_main_context_set_poll_func(NULL, wxapp_poll_func);
 #endif // wxUSE_THREADS
 
-    gtk_set_locale();
-
     // We should have the wxUSE_WCHAR_T test on the _outside_
 #if wxUSE_WCHAR_T
     // gtk+ 2.0 supports Unicode through UTF-8 strings
@@ -447,10 +446,19 @@ bool wxApp::Initialize(int& argc, wxChar **argv)
 #else
     if (encName.empty())
         encName = _T("UTF-8");
+
+    // if wxUSE_INTL==0 it probably indicates that only "C" locale is supported
+    // by the program anyhow so prevent GTK+ from calling setlocale(LC_ALL, "")
+    // from gtk_init_check() as it does by default
+    gtk_disable_setlocale();
+
 #endif // wxUSE_INTL
     static wxConvBrokenFileNames fileconv(encName);
     wxConvFileName = &fileconv;
 
+
+    bool init_result;
+
 #if wxUSE_UNICODE
     // gtk_init() wants UTF-8, not wchar_t, so convert
     int i;
@@ -478,7 +486,7 @@ bool wxApp::Initialize(int& argc, wxChar **argv)
         {
             while ( strcmp(wxConvUTF8.cWX2MB(argv[i]), argvGTK[i]) != 0 )
             {
-                memmove(argv + i, argv + i + 1, argc - i);
+                memmove(argv + i, argv + i + 1, (argc - i)*sizeof(*argv));
             }
         }
 
@@ -507,13 +515,6 @@ bool wxApp::Initialize(int& argc, wxChar **argv)
     // we can not enter threads before gtk_init is done
     gdk_threads_enter();
 
-    if ( !wxAppBase::Initialize(argc, argv) )
-    {
-        gdk_threads_leave();
-
-        return false;
-    }
-
     wxSetDetectableAutoRepeat( true );
 
 #if wxUSE_INTL