[gnome-builder/wip/libide] libide: redraw gutters when line flags change



commit 1fe21bcc403c6c2a655766e96f58bc76aa42ad83
Author: Christian Hergert <christian hergert me>
Date:   Thu Feb 26 17:14:25 2015 -0800

    libide: redraw gutters when line flags change
    
    Both the line added/changed gutter and the diagnostics gutter need to be
    updated when the line flags change.

 libide/ide-source-view.c |   22 ++++++++++++++++++++++
 1 files changed, 22 insertions(+), 0 deletions(-)
---
diff --git a/libide/ide-source-view.c b/libide/ide-source-view.c
index f9026e6..1e2f550 100644
--- a/libide/ide-source-view.c
+++ b/libide/ide-source-view.c
@@ -61,6 +61,7 @@ typedef struct
   gulong                       buffer_delete_range_handler;
   gulong                       buffer_insert_text_after_handler;
   gulong                       buffer_insert_text_handler;
+  gulong                       buffer_line_flags_changed_handler;
   gulong                       buffer_mark_set_handler;
   gulong                       buffer_notify_file_handler;
   gulong                       buffer_notify_highlight_diagnostics_handler;
@@ -637,6 +638,19 @@ ide_source_view__buffer_notify_highlight_diagnostics_cb (IdeSourceView *self,
 }
 
 static void
+ide_source_view__buffer_line_flags_changed_cb (IdeSourceView *self,
+                                               IdeBuffer     *buffer)
+{
+  IdeSourceViewPrivate *priv = ide_source_view_get_instance_private (self);
+
+  g_assert (IDE_IS_SOURCE_VIEW (self));
+  g_assert (IDE_IS_BUFFER (buffer));
+
+  gtk_source_gutter_renderer_queue_draw (priv->line_change_renderer);
+  gtk_source_gutter_renderer_queue_draw (priv->line_diagnostics_renderer);
+}
+
+static void
 ide_source_view_connect_buffer (IdeSourceView *self,
                                 IdeBuffer     *buffer)
 {
@@ -652,6 +666,13 @@ ide_source_view_connect_buffer (IdeSourceView *self,
                                self,
                                G_CONNECT_SWAPPED);
 
+  priv->buffer_line_flags_changed_handler =
+      g_signal_connect_object (buffer,
+                               "line-flags-changed",
+                               G_CALLBACK (ide_source_view__buffer_line_flags_changed_cb),
+                               self,
+                               G_CONNECT_SWAPPED);
+
   priv->buffer_notify_highlight_diagnostics_handler =
       g_signal_connect_object (buffer,
                                "notify::highlight-diagnostics",
@@ -726,6 +747,7 @@ ide_source_view_disconnect_buffer (IdeSourceView *self,
   ide_clear_signal_handler (buffer, &priv->buffer_delete_range_handler);
   ide_clear_signal_handler (buffer, &priv->buffer_insert_text_after_handler);
   ide_clear_signal_handler (buffer, &priv->buffer_insert_text_handler);
+  ide_clear_signal_handler (buffer, &priv->buffer_line_flags_changed_handler);
   ide_clear_signal_handler (buffer, &priv->buffer_mark_set_handler);
   ide_clear_signal_handler (buffer, &priv->buffer_notify_highlight_diagnostics_handler);
   ide_clear_signal_handler (buffer, &priv->buffer_notify_language_handler);


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