tUse gtk_link_button for URLs - vaccinewars - be a doctor and try to vaccinate the world
(HTM) git clone git://src.adamsgaard.dk/vaccinewars
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) README
(DIR) LICENSE
---
(DIR) commit d18cc44837c67fb06873b5946f79595fa36b292a
(DIR) parent 8f502b41fe2c3d174516953b54689254eeb3d71d
(HTM) Author: Ben Webb <ben@salilab.org>
Date: Thu, 3 Dec 2020 00:07:12 -0800
Use gtk_link_button for URLs
GTK+2 has a widget to display hyperlinks, so use
tthat rather than rolling our own.
Diffstat:
M src/gtkport/gtkport.c | 66 ++-----------------------------
1 file changed, 4 insertions(+), 62 deletions(-)
---
(DIR) diff --git a/src/gtkport/gtkport.c b/src/gtkport/gtkport.c
t@@ -5437,15 +5437,6 @@ gint GtkMessageBox(GtkWidget *parent, const gchar *Text,
return retval;
}
-static void gtk_url_set_cursor(GtkWidget *widget, GtkWidget *label)
-{
- GdkCursor *cursor;
-
- cursor = gdk_cursor_new(GDK_HAND2);
- gdk_window_set_cursor(gtk_widget_get_window(label), cursor);
- gdk_cursor_unref(cursor);
-}
-
void DisplayHTML(GtkWidget *parent, const gchar *bin, const gchar *target)
{
#ifdef APPLE
t@@ -5477,62 +5468,13 @@ void DisplayHTML(GtkWidget *parent, const gchar *bin, const gchar *target)
#endif
}
-static gboolean gtk_url_triggered(GtkWidget *widget, GdkEventButton *event,
- gpointer data)
-{
- gchar *bin, *target;
-
- bin = (gchar *)g_object_get_data(G_OBJECT(widget), "bin");
- target = (gchar *)g_object_get_data(G_OBJECT(widget), "target");
- DisplayHTML(widget, bin, target);
- return TRUE;
-}
-
GtkWidget *gtk_url_new(const gchar *text, const gchar *target,
const gchar *bin)
{
- GtkWidget *label, *eventbox;
- gchar *pattern;
- GtkStyle *style;
- GdkColor color;
-
- color.red = 0;
- color.green = 0;
- color.blue = 0xDDDD;
-
- label = gtk_label_new(text);
-
- /* Set the text colour */
- style = gtk_rc_get_style(label);
- if (!style) {
- style = gtk_widget_get_style(label);
- }
- style = gtk_style_copy(style);
- style->fg[GTK_STATE_NORMAL] = color;
- gtk_widget_set_style(label, style);
- g_object_unref(G_OBJECT(style));
-
- /* Make the text underlined */
- pattern = g_strnfill(strlen(text), '_');
- gtk_label_set_pattern(GTK_LABEL(label), pattern);
- g_free(pattern);
-
- /* We cannot set the cursor until the widget is realized, so set up a
- * handler to do this later */
- g_signal_connect(G_OBJECT(label), "realize",
- G_CALLBACK(gtk_url_set_cursor), label);
-
- eventbox = gtk_event_box_new();
- g_object_set_data_full(G_OBJECT(eventbox), "target",
- g_strdup(target), g_free);
- g_object_set_data_full(G_OBJECT(eventbox), "bin",
- g_strdup(bin), g_free);
- g_signal_connect(G_OBJECT(eventbox), "button-release-event",
- G_CALLBACK(gtk_url_triggered), NULL);
-
- gtk_container_add(GTK_CONTAINER(eventbox), label);
-
- return eventbox;
+ GtkWidget *button;
+ button = gtk_link_button_new(text);
+ gtk_link_button_set_uri(GTK_LINK_BUTTON(button), target);
+ return button;
}
gchar *GtkGetFile(const GtkWidget *parent, const gchar *oldname,