-extern "C" void
-wxGtkAboutDialogOnLink(GtkAboutDialog * WXUNUSED(about),
- const gchar *link,
- gpointer WXUNUSED(data))
+// GTK+ about dialog is modeless, keep track of it in this variable
+static GtkAboutDialog *gs_aboutDialog = NULL;
+
+extern "C" {
+static void wxGtkAboutDialogOnClose(GtkAboutDialog *about)
+{
+ gtk_widget_destroy(GTK_WIDGET(about));
+ if ( about == gs_aboutDialog )
+ gs_aboutDialog = NULL;
+}
+}
+
+#ifdef __WXGTK3__
+extern "C" {
+static gboolean activate_link(GtkAboutDialog*, const char* link, void* dontIgnore)
+{
+ if (dontIgnore)
+ {
+ wxLaunchDefaultBrowser(wxGTK_CONV_BACK_SYS(link));
+ return true;
+ }
+ return false;
+}
+}
+#else
+extern "C" {
+static void wxGtkAboutDialogOnLink(GtkAboutDialog*, const char* link, void*)