[gnome-builder] libide: add debug tool for checking scroll offset



commit 1f9bcf469a928956406c50c08c1cd409e4c62c22
Author: Christian Hergert <christian hergert me>
Date:   Mon Mar 9 01:14:33 2015 -0700

    libide: add debug tool for checking scroll offset

 tests/test-ide-source-view.c |   34 ++++++++++++++++++++++++++++++++++
 1 files changed, 34 insertions(+), 0 deletions(-)
---
diff --git a/tests/test-ide-source-view.c b/tests/test-ide-source-view.c
index cef740e..09f421d 100644
--- a/tests/test-ide-source-view.c
+++ b/tests/test-ide-source-view.c
@@ -36,6 +36,7 @@ static GHashTable     *gBufferToView;
 static GList          *gFilesToOpen;
 static gint            gExitCode = EXIT_SUCCESS;
 static gboolean        gDarkMode;
+static gboolean        gDebugScrollOffset;
 static gchar          *gCss = "\
 @binding-set file-keybindings { \
     bind \"<ctrl>s\" { \"action\" (\"file\", \"save\", \"\") }; \
@@ -106,6 +107,34 @@ delete_event_cb (GtkWindow *window,
   return FALSE;
 }
 
+static gboolean
+debug_draw (IdeSourceView *sv,
+            cairo_t       *cr,
+            gpointer       user_data)
+{
+  static GdkRGBA rgba;
+  static guint rgba_set;
+  GdkRectangle rect;
+
+  g_assert (IDE_IS_SOURCE_VIEW (sv));
+
+  if (G_UNLIKELY (!rgba_set))
+    {
+      gdk_rgba_parse (&rgba, "#729fcf");
+      rgba.alpha = 0.2;
+    }
+
+  ide_source_view_get_visible_rect (sv, &rect);
+  gtk_text_view_buffer_to_window_coords (GTK_TEXT_VIEW (sv),
+                                         GTK_TEXT_WINDOW_WIDGET,
+                                         rect.x, rect.y, &rect.x, &rect.y);
+  gdk_cairo_rectangle (cr, &rect);
+  gdk_cairo_set_source_rgba (cr, &rgba);
+  cairo_fill (cr);
+
+  return FALSE;
+}
+
 static void
 add_buffer (IdeBuffer *buffer)
 {
@@ -126,6 +155,7 @@ add_buffer (IdeBuffer *buffer)
                            "highlight-current-line", TRUE,
                            "insert-matching-brace", TRUE,
                            "overwrite-braces", TRUE,
+                           "scroll-offset", gDebugScrollOffset ? 5 : 0,
                            "sensitive", FALSE,
                            "show-grid-lines", TRUE,
                            "show-line-changes", TRUE,
@@ -134,6 +164,8 @@ add_buffer (IdeBuffer *buffer)
                            "snippet-completion", TRUE,
                            "visible", TRUE,
                            NULL);
+      if (gDebugScrollOffset)
+        g_signal_connect_after (view, "draw", G_CALLBACK (debug_draw), NULL);
       gtk_container_add (GTK_CONTAINER (scroller), GTK_WIDGET (view));
       gtk_container_add (GTK_CONTAINER (gDocStack), GTK_WIDGET (scroller));
       g_hash_table_insert (gBufferToView, buffer, view);
@@ -540,6 +572,8 @@ main (int argc,
     { "emacs", 'e', 0, G_OPTION_ARG_NONE, &emacs, N_("Use emacs keybindings") },
     { "vim", 'm', 0, G_OPTION_ARG_NONE, &vim, N_("Use Vim keybindings") },
     { "dark", 'd', 0, G_OPTION_ARG_NONE, &gDarkMode, N_("Use dark mode") },
+    { "debug-scroll-offset", 0, 0, G_OPTION_ARG_NONE, &gDebugScrollOffset,
+      N_("Render a rectangle over the visible region taking scroll offset into account.") },
     { NULL }
   };
 


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