# HG changeset patch # User Olaf Wintermann # Date 1760253457 -7200 # Node ID f74250eda598df6c9577cc2ee83a0f8570a0d044 # Parent f1b5e7dd27b994740912e0174bb71f15d5543620 implement UI_LINK_BUTTON type (GTK) diff -r f1b5e7dd27b9 -r f74250eda598 ui/gtk/button.c --- a/ui/gtk/button.c Sun Oct 12 08:30:29 2025 +0200 +++ b/ui/gtk/button.c Sun Oct 12 09:17:37 2025 +0200 @@ -805,7 +805,7 @@ return create_linkbutton_jsonvalue(label, uri, TRUE, visited, TRUE); } -static void linkbutton_clicked(GtkWidget *widget, UiLinkButton *data) { +static void linkbutton_callback(GtkWidget *widget, UiLinkButton *data) { if(data->onclick) { UiEvent e; e.obj = data->obj; @@ -819,8 +819,24 @@ } } +static void linkbutton_clicked(GtkWidget *widget, UiLinkButton *data) { + linkbutton_callback(widget, data); + if(data->link) { +#if GTK_CHECK_VERSION(4, 0, 0) + GtkUriLauncher *launcher = gtk_uri_launcher_new (data->link); + gtk_uri_launcher_launch (launcher, NULL, NULL, NULL, NULL); + g_object_unref (launcher); +#elif GTK_CHECK_VERSION(3, 22, 0) + GError *error = NULL; + gtk_show_uri_on_window(NULL, data->link, GDK_CURRENT_TIME, &error); +#elif + // TODO: call xdg-open +#endif + } +} + static gboolean linkbutton_activate_link(GtkLinkButton *self, UiLinkButton *data) { - linkbutton_clicked(data->widget, data); + linkbutton_callback(data->widget, data); return data->nofollow; }