Migrating from GnomeHRef to GtkLinkButton

Since version 2.10, GTK+ provides the GtkLinkButton widget as a replacement for the GnomeHRef widget in the libgnomeui library.

Porting an application from GnomeHRef to GtkLinkButton is very simple. GtkLinkButton does not have a default action for "clicked" signal. So instead of simply creating the widget

      GtkWidget *button;

      button = gnome_href_new (url, "");
    

you will have to handle the activation of the GtkLinkButton, using the ::clicked signal for instance

      static void
      link_button_clicked_cb (GtkWidget *widget,
                              gpointer   data)
      {
        const gchar *link;

	link = gtk_link_button_get_uri (GTK_LINK_BUTTON (widget));
	open_browser_at_url (link);
      }

      /* ... */
      
        GtkWidget *button;

	button = gtk_link_button_new (url);
	g_signal_connect (button, "clicked",
	                  G_CALLBACK (link_button_clicked_cb), NULL);
     

If you have more than one GtkLinkButton instead of connecting a signal to each one, you can use a "hook function" which will be called whenever a user activates a link button

      static void
      link_button_hook (GtkLinkButton *button,
                        const gchar   *link,
			gpointer       user_data)
      
      {
        open_browser_at_url (link);
      }
      
      /* ... */
      
        GtkWidget *button1 = gtk_link_button_new (uri1);
	GtkWidget *button2 = gtk_link_button_new (uri2);

        gtk_link_button_set_uri_hook (link_button_hook, NULL, NULL);