[gnome-builder] source-view: allow hiding diagnostics gutter renderer



commit 35952c96f5e2ea8226111c26763f478d90986b32
Author: Christian Hergert <christian hergert me>
Date:   Tue Apr 21 23:33:26 2015 -0700

    source-view: allow hiding diagnostics gutter renderer
    
    This allows us to hide the gutter renderer for diagnostics independently
    of the buffer's highlight-diagnostics value.
    
    In particular, this is useful so we can use IdeSourceView with the
    minimap.

 libide/ide-source-view.c |   75 ++++++++++++++++++++++++++++++++++++++++++++--
 libide/ide-source-view.h |    3 ++
 2 files changed, 75 insertions(+), 3 deletions(-)
---
diff --git a/libide/ide-source-view.c b/libide/ide-source-view.c
index 95b34d7..1424250 100644
--- a/libide/ide-source-view.c
+++ b/libide/ide-source-view.c
@@ -148,6 +148,7 @@ typedef struct
   guint                        rubberband_search : 1;
   guint                        show_grid_lines : 1;
   guint                        show_line_changes : 1;
+  guint                        show_line_diagnostics : 1;
   guint                        show_search_bubbles : 1;
   guint                        show_search_shadow : 1;
   guint                        smart_backspace : 1;
@@ -187,6 +188,7 @@ enum {
   PROP_SEARCH_CONTEXT,
   PROP_SHOW_GRID_LINES,
   PROP_SHOW_LINE_CHANGES,
+  PROP_SHOW_LINE_DIAGNOSTICS,
   PROP_SHOW_SEARCH_BUBBLES,
   PROP_SHOW_SEARCH_SHADOW,
   PROP_SMART_BACKSPACE,
@@ -1292,11 +1294,11 @@ ide_source_view__buffer_notify_highlight_diagnostics_cb (IdeSourceView *self,
   g_assert (IDE_IS_SOURCE_VIEW (self));
   g_assert (IDE_IS_BUFFER (buffer));
 
-  if (priv->line_diagnostics_renderer)
+  if (priv->line_diagnostics_renderer != NULL)
     {
       gboolean visible;
 
-      visible = ide_buffer_get_highlight_diagnostics (buffer);
+      visible = (priv->show_line_diagnostics && ide_buffer_get_highlight_diagnostics (buffer));
       g_object_set (priv->line_diagnostics_renderer,
                     "visible", visible,
                     NULL);
@@ -3718,13 +3720,16 @@ ide_source_view_constructed (GObject *object)
   g_object_ref (priv->line_change_renderer);
   gtk_source_gutter_insert (gutter, priv->line_change_renderer, 0);
 
-  visible = priv->buffer && ide_buffer_get_highlight_diagnostics (priv->buffer);
+  visible = ((priv->buffer != NULL) &&
+             priv->show_line_diagnostics &&
+             ide_buffer_get_highlight_diagnostics (priv->buffer));
   priv->line_diagnostics_renderer = g_object_new (IDE_TYPE_LINE_DIAGNOSTICS_GUTTER_RENDERER,
                                                   "size", 16,
                                                   "visible", visible,
                                                   NULL);
   g_object_ref (priv->line_diagnostics_renderer);
   gtk_source_gutter_insert (gutter, priv->line_diagnostics_renderer, -100);
+  g_object_notify_by_pspec (G_OBJECT (self), gParamSpecs [PROP_SHOW_LINE_DIAGNOSTICS]);
 }
 
 static void
@@ -4950,6 +4955,10 @@ ide_source_view_get_property (GObject    *object,
       g_value_set_boolean (value, ide_source_view_get_show_line_changes (self));
       break;
 
+    case PROP_SHOW_LINE_DIAGNOSTICS:
+      g_value_set_boolean (value, ide_source_view_get_show_line_diagnostics (self));
+      break;
+
     case PROP_SHOW_SEARCH_BUBBLES:
       g_value_set_boolean (value, ide_source_view_get_show_search_bubbles (self));
       break;
@@ -5039,6 +5048,10 @@ ide_source_view_set_property (GObject      *object,
       ide_source_view_set_show_line_changes (self, g_value_get_boolean (value));
       break;
 
+    case PROP_SHOW_LINE_DIAGNOSTICS:
+      ide_source_view_set_show_line_diagnostics (self, g_value_get_boolean (value));
+      break;
+
     case PROP_SHOW_SEARCH_BUBBLES:
       ide_source_view_set_show_search_bubbles (self, g_value_get_boolean (value));
       break;
@@ -5262,6 +5275,23 @@ ide_source_view_class_init (IdeSourceViewClass *klass)
   g_object_class_install_property (object_class, PROP_SHOW_LINE_CHANGES,
                                    gParamSpecs [PROP_SHOW_LINE_CHANGES]);
 
+  /**
+   * IdeSourceView:show-line-diagnostics:
+   *
+   * If the diagnostics gutter should be visible.
+   *
+   * This also requires that IdeBuffer:highlight-diagnostics is set to %TRUE
+   * to generate diagnostics.
+   */
+  gParamSpecs [PROP_SHOW_LINE_DIAGNOSTICS] =
+    g_param_spec_boolean ("show-line-diagnostics",
+                          _("Show Line Diagnostics"),
+                          _("If line changes diagnostics should be shown in the left gutter."),
+                          TRUE,
+                          (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (object_class, PROP_SHOW_LINE_DIAGNOSTICS,
+                                   gParamSpecs [PROP_SHOW_LINE_DIAGNOSTICS]);
+
   gParamSpecs [PROP_SHOW_SEARCH_BUBBLES] =
     g_param_spec_boolean ("show-search-bubbles",
                           _("Show Search Bubbles"),
@@ -5834,6 +5864,7 @@ ide_source_view_init (IdeSourceView *self)
   priv->target_line_offset = -1;
   priv->snippets = g_queue_new ();
   priv->selections = g_queue_new ();
+  priv->show_line_diagnostics = TRUE;
 
   g_signal_connect (self,
                     "notify::buffer",
@@ -5932,6 +5963,44 @@ ide_source_view_set_show_line_changes (IdeSourceView *self,
 }
 
 gboolean
+ide_source_view_get_show_line_diagnostics (IdeSourceView *self)
+{
+  IdeSourceViewPrivate *priv = ide_source_view_get_instance_private (self);
+
+  g_return_val_if_fail (IDE_IS_SOURCE_VIEW (self), FALSE);
+
+  return priv->show_line_diagnostics;
+}
+
+void
+ide_source_view_set_show_line_diagnostics (IdeSourceView *self,
+                                           gboolean       show_line_diagnostics)
+{
+  IdeSourceViewPrivate *priv = ide_source_view_get_instance_private (self);
+
+  g_return_if_fail (IDE_IS_SOURCE_VIEW (self));
+
+  show_line_diagnostics = !!show_line_diagnostics;
+
+  if (show_line_diagnostics != priv->show_line_diagnostics)
+    {
+      gboolean visible;
+
+      priv->show_line_diagnostics = show_line_diagnostics;
+
+      if ((priv->buffer != NULL) && (priv->line_diagnostics_renderer != NULL))
+        {
+          visible = ((priv->buffer != NULL) &&
+                     priv->show_line_diagnostics &&
+                     ide_buffer_get_highlight_diagnostics (priv->buffer));
+          gtk_source_gutter_renderer_set_visible (priv->line_diagnostics_renderer, visible);
+        }
+
+      g_object_notify_by_pspec (G_OBJECT (self), gParamSpecs [PROP_SHOW_LINE_CHANGES]);
+    }
+}
+
+gboolean
 ide_source_view_get_show_grid_lines (IdeSourceView *self)
 {
   IdeSourceViewPrivate *priv = ide_source_view_get_instance_private (self);
diff --git a/libide/ide-source-view.h b/libide/ide-source-view.h
index 15e280f..e3f4c5f 100644
--- a/libide/ide-source-view.h
+++ b/libide/ide-source-view.h
@@ -296,6 +296,7 @@ guint                       ide_source_view_get_scroll_offset         (IdeSource
 GtkSourceSearchContext     *ide_source_view_get_search_context        (IdeSourceView              *self);
 gboolean                    ide_source_view_get_show_grid_lines       (IdeSourceView              *self);
 gboolean                    ide_source_view_get_show_line_changes     (IdeSourceView              *self);
+gboolean                    ide_source_view_get_show_line_diagnostics (IdeSourceView              *self);
 gboolean                    ide_source_view_get_show_search_bubbles   (IdeSourceView              *self);
 gboolean                    ide_source_view_get_show_search_shadow    (IdeSourceView              *self);
 gboolean                    ide_source_view_get_smart_backspace       (IdeSourceView              *self);
@@ -331,6 +332,8 @@ void                        ide_source_view_set_show_grid_lines       (IdeSource
                                                                        gboolean                    
show_grid_lines);
 void                        ide_source_view_set_show_line_changes     (IdeSourceView              *self,
                                                                        gboolean                    
show_line_changes);
+void                        ide_source_view_set_show_line_diagnostics (IdeSourceView              *self,
+                                                                       gboolean                    
show_line_changes);
 void                        ide_source_view_set_show_search_bubbles   (IdeSourceView              *self,
                                                                        gboolean                    
show_search_bubbles);
 void                        ide_source_view_set_show_search_shadow    (IdeSourceView              *self,


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