diff --git a/src/gtk/window.cpp b/src/gtk/window.cpp index 617e2c79a6..1d5d645edb 100644 --- a/src/gtk/window.cpp +++ b/src/gtk/window.cpp @@ -345,6 +345,13 @@ static bool wxGetTopLevel(GtkWidget** widget, GdkWindow** window) return false; } +GtkWidget* wxGetTopLevelGTK() +{ + GtkWidget* widget = NULL; + wxGetTopLevel(&widget, NULL); + return widget; +} + GdkWindow* wxGetTopLevelGDK() { GdkWindow* window; diff --git a/src/unix/utilsx11.cpp b/src/unix/utilsx11.cpp index 970d58ac49..421ae4b55d 100644 --- a/src/unix/utilsx11.cpp +++ b/src/unix/utilsx11.cpp @@ -45,6 +45,7 @@ #endif #endif GdkWindow* wxGetTopLevelGDK(); +GtkWidget* wxGetTopLevelGTK(); #endif // Only X11 backend is supported for wxGTK here @@ -2679,12 +2680,20 @@ bool wxDoLaunchDefaultBrowser(const wxLaunchBrowserParams& params) { #ifdef __WXGTK__ -#if GTK_CHECK_VERSION(2,14,0) +#if GTK_CHECK_VERSION(3,90,0) + if (gtk_show_uri_on_window((GtkWindow*)wxGetTopLevelGTK(), + params.url.utf8_str(), GDK_CURRENT_TIME, NULL)) + { + return true; + } +#elif GTK_CHECK_VERSION(2,14,0) if (wx_is_at_least_gtk2(14)) { GdkScreen* screen = gdk_window_get_screen(wxGetTopLevelGDK()); + wxGCC_WARNING_SUPPRESS(deprecated-declarations) if (gtk_show_uri(screen, params.url.utf8_str(), GDK_CURRENT_TIME, NULL)) return true; + wxGCC_WARNING_RESTORE() } #endif // GTK_CHECK_VERSION(2,14,0) #endif // __WXGTK__