-static void
-gtk_label_rescan_links (GtkLabel *label)
-{
- GtkLabelPrivate *priv = label->priv;
- PangoLayout *layout = priv->layout;
- PangoAttrList *attlist;
- PangoAttrIterator *iter;
- GList *links;
-
- if (!priv->select_info || !priv->select_info->links)
- return;
-
- attlist = pango_layout_get_attributes (layout);
-
- if (attlist == NULL)
- return;
-
- iter = pango_attr_list_get_iterator (attlist);
-
- links = priv->select_info->links;
-
- do
- {
- PangoAttribute *underline;
- PangoAttribute *color;
-
- underline = pango_attr_iterator_get (iter, PANGO_ATTR_UNDERLINE);
- color = pango_attr_iterator_get (iter, PANGO_ATTR_FOREGROUND);
-
- if (underline != NULL && color != NULL)
- {
- gint start, end;
- PangoRectangle start_pos;
- PangoRectangle end_pos;
- GtkLabelLink *link;
-
- pango_attr_iterator_range (iter, &start, &end);
- pango_layout_index_to_pos (layout, start, &start_pos);
- pango_layout_index_to_pos (layout, end, &end_pos);
-
- if (links == NULL)
- {
- g_warning ("Ran out of links");
- break;
- }
- link = links->data;
- links = links->next;
- link->start = start;
- link->end = end;
- }
- } while (pango_attr_iterator_next (iter));
-
- pango_attr_iterator_destroy (iter);
-}
-