Use gtk_show_uri_on_window() in GtkLabel

Avoid the deprecated gtk_show_uri(), and allow activating link in
sandboxed applications.

https://bugzilla.gnome.org/show_bug.cgi?id=778726
This commit is contained in:
Emmanuele Bassi 2017-02-16 00:24:57 +00:00 committed by Bastien Nocera
parent 0875aa56ba
commit 51010da740
2 changed files with 5 additions and 4 deletions

View File

@ -1,7 +1,7 @@
/* Links /* Links
* *
* GtkLabel can show hyperlinks. The default action is to call * GtkLabel can show hyperlinks. The default action is to call
* gtk_show_uri() on their URI, but it is possible to override * gtk_show_uri_on_window() on their URI, but it is possible to override
* this with a custom handler. * this with a custom handler.
*/ */

View File

@ -748,7 +748,7 @@ gtk_label_class_init (GtkLabelClass *class)
* *
* The signal which gets emitted to activate a URI. * The signal which gets emitted to activate a URI.
* Applications may connect to it to override the default behaviour, * Applications may connect to it to override the default behaviour,
* which is to call gtk_show_uri(). * which is to call gtk_show_uri_on_window().
* *
* Returns: %TRUE if the link has been activated * Returns: %TRUE if the link has been activated
* *
@ -6597,10 +6597,11 @@ gtk_label_activate_link (GtkLabel *label,
const gchar *uri) const gchar *uri)
{ {
GtkWidget *widget = GTK_WIDGET (label); GtkWidget *widget = GTK_WIDGET (label);
GtkWidget *top_level = gtk_widget_get_toplevel (widget);
guint32 timestamp = gtk_get_current_event_time ();
GError *error = NULL; GError *error = NULL;
if (!gtk_show_uri (gtk_widget_get_screen (widget), if (!gtk_show_uri_on_window (GTK_WINDOW (top_level), uri, timestamp, &error))
uri, gtk_get_current_event_time (), &error))
{ {
g_warning ("Unable to show '%s': %s", uri, error->message); g_warning ("Unable to show '%s': %s", uri, error->message);
g_error_free (error); g_error_free (error);