]> git.saurik.com Git - wxWidgets.git/blobdiff - src/gtk/aboutdlg.cpp
free old resources in DoLoad(), apparently fixes memory leaks with gstreamer 0.10...
[wxWidgets.git] / src / gtk / aboutdlg.cpp
index 5f83dc37fd9d28ac69eb4ba1326756c0d90a93ac..b6d960990b6298c59d163986967ed7215a239de8 100644 (file)
@@ -82,6 +82,12 @@ private:
 // implementation
 // ============================================================================
 
+extern "C" void
+wxGtkAboutDialogOnClose(GtkAboutDialog *about)
+{
+    gtk_widget_destroy(GTK_WIDGET(about));
+}
+
 extern "C" void
 wxGtkAboutDialogOnLink(GtkAboutDialog * WXUNUSED(about),
                        const gchar *link,
@@ -144,10 +150,23 @@ void wxAboutBox(const wxAboutDialogInfo& info)
         else // no translators explicitely specified
         {
             // maybe we have translator credits in the message catalog?
-            transCredits = _("translator-credits");
+            wxString translator = _("translator-credits");
+
+            // gtk_about_dialog_set_translator_credits() is smart enough to
+            // detect if "translator-credits" is untranslated and hide the
+            // translators tab in that case, however it will still show the
+            // "credits" button, (at least GTK 2.10.6) even if there are no
+            // credits informations at all, so we still need to do the check
+            // ourselves
+            if ( translator != wxT("translator-credits") ) // untranslated!
+                transCredits = translator;
         }
 
-        gtk_about_dialog_set_translator_credits(dlg, GtkStr(transCredits));
+        if ( !transCredits.empty() )
+            gtk_about_dialog_set_translator_credits(dlg, GtkStr(transCredits));
+
+        g_signal_connect(dlg, "response",
+                            G_CALLBACK(wxGtkAboutDialogOnClose), NULL);
 
         gtk_widget_show(GTK_WIDGET(dlg));
         return;