[gnome-builder/wip/gtk4-port: 771/1774] plugins/omni-gutter: redraw when cursor line changes
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder/wip/gtk4-port: 771/1774] plugins/omni-gutter: redraw when cursor line changes
- Date: Mon, 11 Jul 2022 22:31:23 +0000 (UTC)
commit 76fb9ce046b07acd3fe50791cce4fc84d9977c1d
Author: Christian Hergert <chergert redhat com>
Date: Wed Apr 27 13:30:53 2022 -0700
plugins/omni-gutter: redraw when cursor line changes
src/plugins/omni-gutter/gbp-omni-gutter-renderer.c | 23 ++++++++++++++++++++--
1 file changed, 21 insertions(+), 2 deletions(-)
---
diff --git a/src/plugins/omni-gutter/gbp-omni-gutter-renderer.c
b/src/plugins/omni-gutter/gbp-omni-gutter-renderer.c
index 6044b6c22..e8f277842 100644
--- a/src/plugins/omni-gutter/gbp-omni-gutter-renderer.c
+++ b/src/plugins/omni-gutter/gbp-omni-gutter-renderer.c
@@ -100,6 +100,9 @@ struct _GbpOmniGutterRenderer
/* Tracks changes to the buffer to give us line marks */
IdeBufferChangeMonitor *change_monitor;
+ /* The last line that was cursor to help avoid redraws */
+ guint last_cursor_line;
+
/*
* We need to reuse a single pango layout while drawing all the lines
* to keep the overhead low. We don't have pixel caching on the gutter
@@ -1365,10 +1368,26 @@ static void
gbp_omni_gutter_renderer_cursor_moved (GbpOmniGutterRenderer *self,
GtkTextBuffer *buffer)
{
+ GtkTextMark *mark;
+ GtkTextIter iter;
+ guint line;
+
g_assert (GBP_IS_OMNI_GUTTER_RENDERER (self));
+ g_assert (IDE_IS_BUFFER (buffer));
+
+ mark = gtk_text_buffer_get_insert (buffer);
+ gtk_text_buffer_get_iter_at_mark (buffer, &iter, mark);
+ line = gtk_text_iter_get_line (&iter);
- if (self->show_relative_line_numbers)
- gtk_widget_queue_draw (GTK_WIDGET (self));
+ if (line != self->last_cursor_line)
+ {
+ self->last_cursor_line = line;
+ gtk_widget_queue_draw (GTK_WIDGET (self));
+ }
+ else if (self->show_relative_line_numbers)
+ {
+ gtk_widget_queue_draw (GTK_WIDGET (self));
+ }
}
static void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]