[gtk+/gtk-3-22] Make it possible to set style classes for label links



commit 9a2527b36122321c5aeaed8526747d54d0f4c0c8
Author: Matthias Clasen <mclasen redhat com>
Date:   Thu Jan 5 16:36:14 2017 -0500

    Make it possible to set style classes for label links
    
    This makes it possible to style links in labels differently
    in certain situations.

 gtk/gtklabel.c |   12 ++++++++++--
 1 files changed, 10 insertions(+), 2 deletions(-)
---
diff --git a/gtk/gtklabel.c b/gtk/gtklabel.c
index 612ad3f..9e2b002 100644
--- a/gtk/gtklabel.c
+++ b/gtk/gtklabel.c
@@ -229,9 +229,11 @@
  *
  * Since 2.18, GTK+ supports markup for clickable hyperlinks in addition
  * to regular Pango markup. The markup for links is borrowed from HTML,
- * using the `<a>` with “href“ and “title“ attributes. GTK+ renders links
+ * using the `<a>` with “href“, “title“ and “class“ attributes. GTK+ renders links
  * similar to the way they appear in web browsers, with colored, underlined
- * text. The “title“ attribute is displayed as a tooltip on the link.
+ * text. The “title“ attribute is displayed as a tooltip on the link. The “class“
+ * attribute is used as style class on the CSS node for the link, it is supported
+ * since 3.22.7.
  *
  * An example looks like this:
  *
@@ -2399,6 +2401,7 @@ start_element_handler (GMarkupParseContext  *context,
       GtkLabelLink *link;
       const gchar *uri = NULL;
       const gchar *title = NULL;
+      const gchar *class = NULL;
       gboolean visited = FALSE;
       gint line_number;
       gint char_number;
@@ -2416,6 +2419,8 @@ start_element_handler (GMarkupParseContext  *context,
             uri = attribute_values[i];
           else if (strcmp (attr, "title") == 0)
             title = attribute_values[i];
+          else if (strcmp (attr, "class") == 0)
+            class = attribute_values[i];
           else
             {
               g_set_error (error,
@@ -2463,6 +2468,9 @@ start_element_handler (GMarkupParseContext  *context,
       link->cssnode = gtk_css_node_new ();
       gtk_css_node_set_name (link->cssnode, I_("link"));
       gtk_css_node_set_parent (link->cssnode, widget_node);
+      if (class)
+        gtk_css_node_add_class (link->cssnode, g_quark_from_string (class));
+
       state = gtk_css_node_get_state (widget_node);
       if (visited)
         state |= GTK_STATE_FLAG_VISITED;


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]