X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/6e9b091980fe67d20eb9dd862460b463738aae6f..7921a093fac2c72b3e981caf1007d98ca767629d:/src/gtk/aboutdlg.cpp diff --git a/src/gtk/aboutdlg.cpp b/src/gtk/aboutdlg.cpp index e7d7e497f7..2460ea5b6a 100644 --- a/src/gtk/aboutdlg.cpp +++ b/src/gtk/aboutdlg.cpp @@ -85,10 +85,15 @@ private: // implementation // ============================================================================ +// GTK+ about dialog is modeless, keep track of it in this variable +static GtkAboutDialog *gs_aboutDialog = NULL; + extern "C" void wxGtkAboutDialogOnClose(GtkAboutDialog *about) { gtk_widget_destroy(GTK_WIDGET(about)); + if ( about == gs_aboutDialog ) + gs_aboutDialog = NULL; } extern "C" void @@ -103,7 +108,11 @@ void wxAboutBox(const wxAboutDialogInfo& info) { if ( !gtk_check_version(2,6,0) ) { - GtkAboutDialog * const dlg = GTK_ABOUT_DIALOG(gtk_about_dialog_new()); + // don't create another dialog if one is already present + if ( !gs_aboutDialog ) + gs_aboutDialog = GTK_ABOUT_DIALOG(gtk_about_dialog_new()); + + GtkAboutDialog * const dlg = gs_aboutDialog; gtk_about_dialog_set_name(dlg, wxGTK_CONV_SYS(info.GetName())); if ( info.HasVersion() ) gtk_about_dialog_set_version(dlg, wxGTK_CONV_SYS(info.GetVersion())); @@ -171,7 +180,7 @@ void wxAboutBox(const wxAboutDialogInfo& info) g_signal_connect(dlg, "response", G_CALLBACK(wxGtkAboutDialogOnClose), NULL); - gtk_widget_show(GTK_WIDGET(dlg)); + gtk_window_present(GTK_WINDOW(dlg)); return; }