From 34264667ed844dd9212e987852e06d2bbba54e66 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Thu, 5 Jan 2017 18:10:52 -0500 Subject: [PATCH] Use CSS for styling links in labels This was implemented only halfway, and was hardcoding the underline. We don't need to do that anymore. --- gtk/gtklabel.c | 33 ++++++++++++++++++--------------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/gtk/gtklabel.c b/gtk/gtklabel.c index 9e2b00296c..97ee4791bd 100644 --- a/gtk/gtklabel.c +++ b/gtk/gtklabel.c @@ -3481,6 +3481,18 @@ G_GNUC_END_IGNORE_DEPRECATIONS } } +static gboolean +filter_func (PangoAttribute *attribute, + gpointer data) +{ + GtkLabelLink *link = data; + + attribute->start_index = link->start; + attribute->end_index = link->end; + + return FALSE; +} + static void gtk_label_update_layout_attributes (GtkLabel *label) { @@ -3497,8 +3509,6 @@ gtk_label_update_layout_attributes (GtkLabel *label) if (priv->select_info && priv->select_info->links) { - GdkRGBA link_color; - PangoAttribute *attribute; GList *list; attrs = pango_attr_list_new (); @@ -3507,21 +3517,14 @@ gtk_label_update_layout_attributes (GtkLabel *label) { 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); - gtk_style_context_save_to_node (context, link->cssnode); - gtk_style_context_get_color (context, gtk_style_context_get_state (context), &link_color); + style_attrs = _gtk_style_context_get_pango_attributes (context); + if (style_attrs) + { + pango_attr_list_filter (style_attrs, filter_func, link); + attrs = _gtk_pango_attr_list_merge (attrs, style_attrs); + } gtk_style_context_restore (context); - - attribute = pango_attr_foreground_new (link_color.red * 65535, - link_color.green * 65535, - link_color.blue * 65535); - attribute->start_index = link->start; - attribute->end_index = link->end; - pango_attr_list_insert (attrs, attribute); } } else if (priv->markup_attrs && priv->attrs)