From c99a0b05189ca1b6d6c19795eb16f6037a0e0b82 Mon Sep 17 00:00:00 2001 From: Alice Mikhaylenko Date: Thu, 13 Jun 2024 16:17:28 +0400 Subject: [PATCH] label: Track link style changes If we're gonna have system accents, would be nice to update links reliably and not wait for other changes like changing color of the label itself. --- gtk/gtklabel.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/gtk/gtklabel.c b/gtk/gtklabel.c index 25956023a8..4b7089d004 100644 --- a/gtk/gtklabel.c +++ b/gtk/gtklabel.c @@ -3431,6 +3431,20 @@ finish_text (UriParserData *pdata) } } +static void +link_style_changed_cb (GtkCssNode *node, + GtkCssStyleChange *change, + GtkLabel *self) +{ + if (gtk_css_style_change_affects (change, + GTK_CSS_AFFECTS_CONTENT | + GTK_CSS_AFFECTS_TEXT_ATTRS)) + { + gtk_label_clear_layout (self); + gtk_widget_queue_draw (GTK_WIDGET (self)); + } +} + static void start_element_handler (GMarkupParseContext *context, const char *element_name, @@ -3519,6 +3533,7 @@ start_element_handler (GMarkupParseContext *context, gtk_css_node_set_parent (link.cssnode, widget_node); if (class) gtk_css_node_add_class (link.cssnode, g_quark_from_string (class)); + g_signal_connect (link.cssnode, "style-changed", G_CALLBACK (link_style_changed_cb), self); state = gtk_css_node_get_state (widget_node); if (visited)