[gtksourceview/wip/chergert/snippets: 95/119] view: add gtk_source_view_queue_draw() helper
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtksourceview/wip/chergert/snippets: 95/119] view: add gtk_source_view_queue_draw() helper
- Date: Wed, 29 Jan 2020 17:34:48 +0000 (UTC)
commit b86d1cd5725821bdf697dc60fbe749a8bb853d70
Author: Christian Hergert <chergert redhat com>
Date: Wed Jan 15 15:20:54 2020 -0800
view: add gtk_source_view_queue_draw() helper
This function queues a draw request on the GtkTextView but additionally
the gutter renderers (via the GtkSourceGutter) as necessary to invalidate
the potentially cached render nodes for lines.
gtksourceview/gtksourceview.c | 35 +++++++++++++++++++++++++++--------
1 file changed, 27 insertions(+), 8 deletions(-)
---
diff --git a/gtksourceview/gtksourceview.c b/gtksourceview/gtksourceview.c
index f8de77b2..344da175 100644
--- a/gtksourceview/gtksourceview.c
+++ b/gtksourceview/gtksourceview.c
@@ -304,6 +304,7 @@ static void gtk_source_view_draw_layer (GtkTextView
static MarkCategory *mark_category_new (GtkSourceMarkAttributes *attributes,
gint priority);
static void mark_category_free (MarkCategory *category);
+static void gtk_source_view_queue_draw (GtkSourceView *view);
static gboolean gtk_source_view_drag_drop (GtkDropTarget *dest,
GdkDrop *drop,
int x,
@@ -1247,7 +1248,7 @@ space_drawer_notify_cb (GtkSourceSpaceDrawer *space_drawer,
GParamSpec *pspec,
GtkSourceView *view)
{
- gtk_widget_queue_draw (GTK_WIDGET (view));
+ gtk_source_view_queue_draw (view);
}
static void
@@ -1486,7 +1487,7 @@ source_mark_updated_cb (GtkSourceBuffer *buffer,
{
/* TODO do something more intelligent here, namely
* invalidate only the area under the mark if possible */
- gtk_widget_queue_draw (GTK_WIDGET (text_view));
+ gtk_source_view_queue_draw (GTK_SOURCE_VIEW (text_view));
}
static void
@@ -1503,7 +1504,7 @@ implicit_trailing_newline_changed_cb (GtkSourceBuffer *buffer,
GtkSourceView *view)
{
/* For drawing or not a trailing newline. */
- gtk_widget_queue_draw (GTK_WIDGET (view));
+ gtk_source_view_queue_draw (view);
}
static void
@@ -4417,7 +4418,7 @@ gtk_source_view_set_highlight_current_line (GtkSourceView *view,
{
priv->highlight_current_line = highlight;
- gtk_widget_queue_draw (GTK_WIDGET (view));
+ gtk_source_view_queue_draw (view);
g_object_notify (G_OBJECT (view), "highlight_current_line");
}
@@ -4462,7 +4463,7 @@ gtk_source_view_set_show_right_margin (GtkSourceView *view,
{
priv->show_right_margin = show;
- gtk_widget_queue_draw (GTK_WIDGET (view));
+ gtk_source_view_queue_draw (view);
g_object_notify (G_OBJECT (view), "show-right-margin");
}
@@ -4507,7 +4508,7 @@ gtk_source_view_set_right_margin_position (GtkSourceView *view,
priv->right_margin_pos = pos;
priv->cached_right_margin_pos = -1;
- gtk_widget_queue_draw (GTK_WIDGET (view));
+ gtk_source_view_queue_draw (view);
g_object_notify (G_OBJECT (view), "right-margin-position");
}
@@ -4783,7 +4784,7 @@ update_style (GtkSourceView *view)
_gtk_source_space_drawer_update_color (priv->space_drawer, view);
}
- gtk_widget_queue_draw (GTK_WIDGET (view));
+ gtk_source_view_queue_draw (view);
}
static void
@@ -5025,7 +5026,7 @@ gtk_source_view_set_background_pattern (GtkSourceView *view,
{
priv->background_pattern = background_pattern;
- gtk_widget_queue_draw (GTK_WIDGET (view));
+ gtk_source_view_queue_draw (view);
g_object_notify (G_OBJECT (view), "background-pattern");
}
@@ -5071,3 +5072,21 @@ gtk_source_view_get_space_drawer (GtkSourceView *view)
return priv->space_drawer;
}
+
+static void
+gtk_source_view_queue_draw (GtkSourceView *view)
+{
+ GtkSourceViewPrivate *priv = gtk_source_view_get_instance_private (view);
+
+ gtk_widget_queue_draw (GTK_WIDGET (view));
+
+ if (priv->left_gutter != NULL)
+ {
+ _gtk_source_gutter_queue_draw (priv->left_gutter);
+ }
+
+ if (priv->right_gutter != NULL)
+ {
+ _gtk_source_gutter_queue_draw (priv->right_gutter);
+ }
+}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]