[gnome-builder] gutter: add tooltips to omni gutter renderer



commit 0a135c67fe668f74c2b7a34e046601efa072db4a
Author: Christian Hergert <chergert redhat com>
Date:   Mon Feb 19 15:27:13 2018 -0800

    gutter: add tooltips to omni gutter renderer
    
    This lets the user know what happens when they click on a line (if
    breakpoints are enabled) as well as information about the diagnostic.

 po/POTFILES.in                                   |  1 +
 src/libide/sourceview/ide-omni-gutter-renderer.c | 44 ++++++++++++++++++++++++
 2 files changed, 45 insertions(+)
---
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 92915de8f..2aa67441a 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -100,6 +100,7 @@ src/libide/runner/ide-runner.c
 src/libide/runtimes/ide-runtime-manager.c
 src/libide/snippets/ide-source-snippet-completion-provider.c
 src/libide/snippets/ide-source-snippets-manager.c
+src/libide/sourceview/ide-omni-gutter-renderer.c
 src/libide/sourceview/ide-source-view.c
 src/libide/sourceview/ide-word-completion-provider.c
 src/libide/terminal/ide-terminal-search.ui
diff --git a/src/libide/sourceview/ide-omni-gutter-renderer.c 
b/src/libide/sourceview/ide-omni-gutter-renderer.c
index aade92830..cf8000686 100644
--- a/src/libide/sourceview/ide-omni-gutter-renderer.c
+++ b/src/libide/sourceview/ide-omni-gutter-renderer.c
@@ -19,12 +19,14 @@
 #define G_LOG_DOMAIN "ide-omni-gutter-renderer"
 
 #include <dazzle.h>
+#include <glib/gi18n.h>
 #include <string.h>
 
 #include "ide-context.h"
 #include "ide-debug.h"
 
 #include "buffers/ide-buffer.h"
+#include "diagnostics/ide-diagnostic.h"
 #include "debugger/ide-debug-manager.h"
 #include "debugger/ide-debugger-breakpoint.h"
 #include "debugger/ide-debugger-breakpoints.h"
@@ -711,6 +713,47 @@ ide_omni_gutter_renderer_query_activatable (GtkSourceGutterRenderer *renderer,
   return TRUE;
 }
 
+static gboolean
+ide_omni_gutter_renderer_query_tooltip (GtkSourceGutterRenderer *renderer,
+                                        GtkTextIter             *iter,
+                                        GdkRectangle            *area,
+                                        gint                     x,
+                                        gint                     y,
+                                        GtkTooltip              *tooltip)
+{
+  IdeOmniGutterRenderer *self = (IdeOmniGutterRenderer *)renderer;
+  g_autoptr(GString) text = NULL;
+  GtkTextBuffer *buffer;
+  IdeDiagnostic *diag;
+
+  g_assert (IDE_IS_OMNI_GUTTER_RENDERER (renderer));
+  g_assert (iter != NULL);
+  g_assert (area != NULL);
+  g_assert (GTK_IS_TOOLTIP (tooltip));
+
+  text = g_string_new (NULL);
+
+  buffer = gtk_text_iter_get_buffer (iter);
+  if ((diag = ide_buffer_get_diagnostic_at_iter (IDE_BUFFER (buffer), iter)))
+    {
+      g_autofree gchar *disp = NULL;
+
+      disp = ide_diagnostic_get_text_for_display (diag);
+      g_string_append (text, disp);
+    }
+
+  if (self->breakpoints != NULL)
+    {
+      if (text->len > 0)
+        g_string_append (text, "\n\n");
+      g_string_append (text, _("Click to toggle breakpoint"));
+    }
+
+  gtk_tooltip_set_text (tooltip, text->str);
+
+  return text->len > 0;
+}
+
 static void
 animate_at_iter (IdeOmniGutterRenderer *self,
                  GdkRectangle          *area,
@@ -1517,6 +1560,7 @@ ide_omni_gutter_renderer_class_init (IdeOmniGutterRendererClass *klass)
   renderer_class->begin = ide_omni_gutter_renderer_begin;
   renderer_class->end = ide_omni_gutter_renderer_end;
   renderer_class->query_activatable = ide_omni_gutter_renderer_query_activatable;
+  renderer_class->query_tooltip = ide_omni_gutter_renderer_query_tooltip;
   renderer_class->activate = ide_omni_gutter_renderer_activate;
 
   properties [PROP_SHOW_LINE_CHANGES] =


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