+ if (priv->select_info && priv->select_info->links)
+ {
+ GdkColor link_color, visited_color;
+ PangoAttribute *attribute;
+ GList *list;
+
+ gtk_label_get_link_colors (widget, &link_color, &visited_color);
+ attrs = pango_attr_list_new ();
+
+ for (list = priv->select_info->links; list; list = list->next)
+ {
+ GtkLabelLink *link = list->data;
+
+ attribute = pango_attr_underline_new (TRUE);
+ attribute->start_index = link->start;
+ attribute->end_index = link->end;
+ pango_attr_list_insert (attrs, attribute);
+
+ if (link->visited)
+ attribute = pango_attr_foreground_new (visited_color.red,
+ visited_color.green,
+ visited_color.blue);
+ else
+ attribute = pango_attr_foreground_new (link_color.red,
+ link_color.green,
+ link_color.blue);
+ attribute->start_index = link->start;
+ attribute->end_index = link->end;
+ pango_attr_list_insert (attrs, attribute);
+ }
+ }
+ else if (priv->markup_attrs || priv->attrs)
+ attrs = pango_attr_list_new ();
+ else
+ attrs = NULL;
+
+ if (priv->markup_attrs)
+ {
+ if (attrs)
+ my_pango_attr_list_merge (attrs, priv->markup_attrs);
+ else
+ attrs = pango_attr_list_ref (priv->markup_attrs);
+ }
+
+ if (priv->attrs)
+ {
+ if (attrs)
+ my_pango_attr_list_merge (attrs, priv->attrs);
+ else
+ attrs = pango_attr_list_ref (priv->attrs);
+ }
+
+ if (attrs)
+ {
+ pango_layout_set_attributes (priv->layout, attrs);
+ pango_attr_list_unref (attrs);
+ }