# HG changeset patch # User Olaf Wintermann # Date 1778005678 -7200 # Node ID fd0f943ff5f39ee0833a2a239518c60f2d89833d # Parent f612b342f262f6dbc453427f635c0b15f9162311 add ui_open_link diff -r f612b342f262 -r fd0f943ff5f3 ui/gtk/button.c --- a/ui/gtk/button.c Sat May 02 18:13:39 2026 +0200 +++ b/ui/gtk/button.c Tue May 05 20:27:58 2026 +0200 @@ -921,16 +921,7 @@ 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 + ui_open_uri(data->link); } } diff -r f612b342f262 -r fd0f943ff5f3 ui/gtk/toolkit.c --- a/ui/gtk/toolkit.c Sat May 02 18:13:39 2026 +0200 +++ b/ui/gtk/toolkit.c Tue May 05 20:27:58 2026 +0200 @@ -572,3 +572,16 @@ ui_set_visible(widget, FALSE); } } + +void ui_open_uri(const char *uri) { +#if GTK_CHECK_VERSION(4, 0, 0) + GtkUriLauncher *launcher = gtk_uri_launcher_new(uri); + 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, uri, GDK_CURRENT_TIME, &error); +#elif + // TODO: call xdg-open +#endif +} diff -r f612b342f262 -r fd0f943ff5f3 ui/ui/toolkit.h --- a/ui/ui/toolkit.h Sat May 02 18:13:39 2026 +0200 +++ b/ui/ui/toolkit.h Tue May 05 20:27:58 2026 +0200 @@ -747,6 +747,8 @@ UIEXPORT void ui_app_ref(void); UIEXPORT void ui_app_unref(void); +UIEXPORT void ui_open_uri(const char *uri); + #ifdef __cplusplus } #endif