From c415a0982c51e7391870341de52b95d0fd3f0d85 Mon Sep 17 00:00:00 2001 From: Jesse van den Kieboom Date: Mon, 21 Dec 2015 11:06:28 +0100 Subject: [PATCH] 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 99c2eb80..da139758 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 e69f621a..25614c0b 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 lines) { var oldn = hunk.get_old_start(); diff --git a/libgitg/resources/ui/libgitg-style.css b/libgitg/resources/ui/libgitg-style.css index b463d6b1..b21a464a 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); }