[gitg] Render gutter separators externally to fill all expanded area



commit c415a0982c51e7391870341de52b95d0fd3f0d85
Author: Jesse van den Kieboom <jessevdk gnome org>
Date:   Mon Dec 21 11:06:28 2015 +0100

    Render gutter separators externally to fill all expanded area

 libgitg/gitg-diff-view-file.vala           |   28 ++++++++++++++++++++++++++
 libgitg/gitg-diff-view-lines-renderer.vala |   30 ----------------------------
 libgitg/resources/ui/libgitg-style.css     |    7 +----
 3 files changed, 30 insertions(+), 35 deletions(-)
---
diff --git a/libgitg/gitg-diff-view-file.vala b/libgitg/gitg-diff-view-file.vala
index 99c2eb8..da13975 100644
--- a/libgitg/gitg-diff-view-file.vala
+++ b/libgitg/gitg-diff-view-file.vala
@@ -221,6 +221,34 @@ class Gitg.DiffViewFile : Gtk.Grid
                d_sourceview_hunks.draw.connect_after(sourceview_hunks_on_draw);
        }
 
+       private bool sourceview_hunks_on_draw(Cairo.Context cr)
+       {
+               var win = d_sourceview_hunks.get_window(Gtk.TextWindowType.LEFT);
+
+               if (!Gtk.cairo_should_draw_window(cr, win))
+               {
+                       return false;
+               }
+
+               var ctx = d_sourceview_hunks.get_style_context();
+
+               var old_lines_width = d_old_lines.size + d_old_lines.xpad * 2;
+               var new_lines_width = d_new_lines.size + d_new_lines.xpad * 2;
+               var sym_lines_width = d_sym_lines.size + d_sym_lines.xpad * 2;
+
+               ctx.save();
+               ctx.add_class("diff-lines-separator");
+               ctx.render_frame(cr, 0, 0, old_lines_width, win.get_height());
+               ctx.restore();
+
+               ctx.save();
+               ctx.add_class("diff-lines-gutter-border");
+               ctx.render_frame(cr, old_lines_width + new_lines_width, 0, sym_lines_width, win.get_height());
+               ctx.restore();
+               
+               return false;
+       }
+
        private void update_theme()
        {
                var header_attributes = new Gtk.SourceMarkAttributes();
diff --git a/libgitg/gitg-diff-view-lines-renderer.vala b/libgitg/gitg-diff-view-lines-renderer.vala
index e69f621..25614c0 100644
--- a/libgitg/gitg-diff-view-lines-renderer.vala
+++ b/libgitg/gitg-diff-view-lines-renderer.vala
@@ -186,36 +186,6 @@ class Gitg.DiffViewLinesRenderer : Gtk.SourceGutterRendererText
                d_num_digits_fill = string.nfill(num_digits, ' ');
        }
 
-       public override void begin(Cairo.Context cr,
-                                  Gdk.Rectangle background_area,
-                                  Gdk.Rectangle cell_area,
-                                  Gtk.TextIter  start,
-                                  Gtk.TextIter  end)
-       {
-               base.begin(cr, background_area, cell_area, start, end);
-
-               if (style == Style.OLD || style == Style.SYMBOL)
-               {
-                       var ctx = get_view().get_style_context();
-
-                       ctx.save();
-                       ctx.add_class("diff-lines-border");
-
-                       if (style == Style.SYMBOL)
-                       {
-                               ctx.add_class("symbol");
-                       }
-
-                       ctx.render_frame(cr,
-                                        background_area.x,
-                                        background_area.y,
-                                        background_area.width,
-                                        background_area.height);
-
-                       ctx.restore();
-               }
-       }
-
        private string[] precalculate_line_strings(Ggit.DiffHunk hunk, Gee.ArrayList<Ggit.DiffLine> lines)
        {
                var oldn = hunk.get_old_start();
diff --git a/libgitg/resources/ui/libgitg-style.css b/libgitg/resources/ui/libgitg-style.css
index b463d6b..b21a464 100644
--- a/libgitg/resources/ui/libgitg-style.css
+++ b/libgitg/resources/ui/libgitg-style.css
@@ -12,14 +12,11 @@
        border-top: 1px solid @borders;
 }
 
-.diff-lines-border {
-       border-top: 0;
-       border-left: 0;
-       border-bottom: 0;
+.diff-lines-separator {
        border-right: 1px solid shade(@theme_bg_color, 0.95);
 }
 
-.diff-lines-border.symbol {
+.diff-lines-gutter-border {
        border-right: 2px solid shade(@theme_bg_color, 0.95);
 }
 


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