[gnome-builder] editor: use pangolayout to determine grid size.



commit 41a062365f47cc991928ddc1c1b395b856c65e8a
Author: Christian Hergert <christian hergert me>
Date:   Mon Nov 17 22:16:14 2014 -0800

    editor: use pangolayout to determine grid size.
    
    We should probably cache this somewhere and update when the font changes.

 src/editor/gb-source-view.c |   19 ++++++++++++++-----
 1 files changed, 14 insertions(+), 5 deletions(-)
---
diff --git a/src/editor/gb-source-view.c b/src/editor/gb-source-view.c
index 50da898..f0d63fc 100644
--- a/src/editor/gb-source-view.c
+++ b/src/editor/gb-source-view.c
@@ -1370,8 +1370,17 @@ gb_source_view_real_draw_layer (GbSourceView     *view,
       GdkRectangle vis;
       gdouble x;
       gdouble y;
+      PangoContext *context;
+      PangoLayout *layout;
+      int grid_size = 16;
 
-#define GRID_SIZE 16
+      context = gtk_widget_get_pango_context (GTK_WIDGET (view));
+      layout = pango_layout_new (context);
+      pango_layout_set_text (layout, "X", 1);
+      pango_layout_get_pixel_size (layout, NULL, &grid_size);
+      g_object_unref (layout);
+
+#define GRID_SIZE grid_size
 
       if (lines.alpha == 0.0)
         gdk_rgba_parse (&lines, "rgba(.125,.125,.125,.025)");
@@ -1392,14 +1401,14 @@ gb_source_view_real_draw_layer (GbSourceView     *view,
 
       for (; x <= clip.x + clip.width; x += GRID_SIZE)
         {
-          cairo_move_to (cr, x + .5, clip.y + .5);
-          cairo_line_to (cr, x + .5, clip.y + clip.height + .5);
+          cairo_move_to (cr, x + .5, clip.y - .5);
+          cairo_line_to (cr, x + .5, clip.y + clip.height - .5);
         }
 
       for (; y <= clip.y + clip.height; y += GRID_SIZE)
         {
-          cairo_move_to (cr, clip.x + .5, y + .5);
-          cairo_line_to (cr, clip.x + clip.width + .5, y + .5);
+          cairo_move_to (cr, clip.x + .5, y - .5);
+          cairo_line_to (cr, clip.x + clip.width + .5, y - .5);
         }
 
       cairo_stroke (cr);


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