From 260898ecf65a5deb9848f3eec957c8b776705fd3 Mon Sep 17 00:00:00 2001 From: Alice Mikhaylenko Date: Fri, 14 Jun 2024 00:07:22 +0400 Subject: [PATCH] text: Redraw when selection style changes --- gtk/gtktext.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/gtk/gtktext.c b/gtk/gtktext.c index 599ccbb99f..24874a0c62 100644 --- a/gtk/gtktext.c +++ b/gtk/gtktext.c @@ -3858,6 +3858,15 @@ get_better_cursor_x (GtkText *self, return (direction == priv->resolved_dir) ? strong_pos.x / PANGO_SCALE : weak_pos.x / PANGO_SCALE; } +static void +selection_style_changed_cb (GtkCssNode *node, + GtkCssStyleChange *change, + GtkText *self) +{ + if (gtk_css_style_change_affects (change, GTK_CSS_AFFECTS_REDRAW)) + gtk_widget_queue_draw (GTK_WIDGET (self)); +} + static void gtk_text_move_cursor (GtkText *self, GtkMovementStep step, @@ -4510,6 +4519,8 @@ gtk_text_set_positions (GtkText *self, gtk_css_node_set_name (priv->selection_node, g_quark_from_static_string ("selection")); gtk_css_node_set_parent (priv->selection_node, widget_node); gtk_css_node_set_state (priv->selection_node, gtk_css_node_get_state (widget_node)); + g_signal_connect (priv->selection_node, "style-changed", + G_CALLBACK (selection_style_changed_cb), self); g_object_unref (priv->selection_node); } }