X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/f9cff6e17341ea95da89eaa27f78b32f11291e12..7d6a4d96961eac84d05db8bb24c64d39003f6e54:/src/gtk/aboutdlg.cpp diff --git a/src/gtk/aboutdlg.cpp b/src/gtk/aboutdlg.cpp index 1cc3136bf6..501d6d7c11 100644 --- a/src/gtk/aboutdlg.cpp +++ b/src/gtk/aboutdlg.cpp @@ -21,14 +21,19 @@ #if wxUSE_ABOUTDLG && defined(__WXGTK26__) +#include "wx/aboutdlg.h" + #ifndef WX_PRECOMP #include "wx/utils.h" // for wxLaunchDefaultBrowser() #endif //WX_PRECOMP -#include "wx/aboutdlg.h" +#ifndef __WXGTK3__ #include "wx/generic/aboutdlgg.h" +#endif +#include #include "wx/gtk/private.h" +#include "wx/gtk/private/gtk2-compat.h" // ---------------------------------------------------------------------------- // GtkArray: temporary array of GTK strings @@ -101,32 +106,48 @@ private: // GTK+ about dialog is modeless, keep track of it in this variable static GtkAboutDialog *gs_aboutDialog = NULL; -extern "C" void -wxGtkAboutDialogOnClose(GtkAboutDialog *about) +extern "C" { +static void wxGtkAboutDialogOnClose(GtkAboutDialog *about) { gtk_widget_destroy(GTK_WIDGET(about)); if ( about == gs_aboutDialog ) gs_aboutDialog = NULL; } +} -extern "C" void -wxGtkAboutDialogOnLink(GtkAboutDialog * WXUNUSED(about), - const gchar *link, - gpointer WXUNUSED(data)) +#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*) { wxLaunchDefaultBrowser(wxGTK_CONV_BACK_SYS(link)); } +} +#endif void wxAboutBox(const wxAboutDialogInfo& info, wxWindow* WXUNUSED(parent)) { +#ifndef __WXGTK3__ if ( !gtk_check_version(2,6,0) ) +#endif { // 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())); + gtk_about_dialog_set_program_name(dlg, wxGTK_CONV_SYS(info.GetName())); if ( info.HasVersion() ) gtk_about_dialog_set_version(dlg, wxGTK_CONV_SYS(info.GetVersion())); else @@ -145,15 +166,19 @@ void wxAboutBox(const wxAboutDialogInfo& info, wxWindow* WXUNUSED(parent)) gtk_about_dialog_set_license(dlg, NULL); wxIcon icon = info.GetIcon(); - if ( icon.Ok() ) + if ( icon.IsOk() ) gtk_about_dialog_set_logo(dlg, info.GetIcon().GetPixbuf()); if ( info.HasWebSite() ) { +#ifdef __WXGTK3__ + g_signal_connect(dlg, "activate-link", G_CALLBACK(activate_link), dlg); +#else // NB: must be called before gtk_about_dialog_set_website() as // otherwise it has no effect (although GTK+ docs don't mention // this...) gtk_about_dialog_set_url_hook(wxGtkAboutDialogOnLink, NULL, NULL); +#endif gtk_about_dialog_set_website(dlg, wxGTK_CONV_SYS(info.GetWebSiteURL())); gtk_about_dialog_set_website_label @@ -166,7 +191,11 @@ void wxAboutBox(const wxAboutDialogInfo& info, wxWindow* WXUNUSED(parent)) { gtk_about_dialog_set_website(dlg, NULL); gtk_about_dialog_set_website_label(dlg, NULL); +#ifdef __WXGTK3__ + g_signal_connect(dlg, "activate-link", G_CALLBACK(activate_link), NULL); +#else gtk_about_dialog_set_url_hook(NULL, NULL, NULL); +#endif } if ( info.HasDevelopers() ) @@ -189,10 +218,10 @@ void wxAboutBox(const wxAboutDialogInfo& info, wxWindow* WXUNUSED(parent)) const size_t count = translators.size(); for ( size_t n = 0; n < count; n++ ) { - transCredits << translators[n] << _T('\n'); + transCredits << translators[n] << wxT('\n'); } } - else // no translators explicitely specified + else // no translators explicitly specified { // maybe we have translator credits in the message catalog? wxString translator = _("translator-credits"); @@ -216,11 +245,12 @@ void wxAboutBox(const wxAboutDialogInfo& info, wxWindow* WXUNUSED(parent)) G_CALLBACK(wxGtkAboutDialogOnClose), NULL); gtk_window_present(GTK_WINDOW(dlg)); - return; } - - // native about dialog not available, fall back to the generic one - wxGenericAboutBox(info); +#ifndef __WXGTK3__ + else + // native about dialog not available, fall back to the generic one + wxGenericAboutBox(info); +#endif } #endif // wxUSE_ABOUTDLG && GTK+ 2.6+