[gitg] Change the single line (un)stage to use a pixbuf renderer
- From: Garrett Regier <gregier src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gitg] Change the single line (un)stage to use a pixbuf renderer
- Date: Tue, 26 Jul 2011 21:04:28 +0000 (UTC)
commit 6ef33c5c8f866bc7028c6db70a475cec60e8b4a1
Author: Garrett Regier <garrettregier gmail com>
Date: Sat Jul 23 03:31:54 2011 -0700
Change the single line (un)stage to use a pixbuf renderer
This is meant to fix issues caused in the past where (un)staging a single
line does not work because a selection is started instead. This
also makes the feature more visible.
configure.ac | 2 +-
gitg/gitg-commit-view.c | 271 +++++++++++++++++++++++++++-------------
gitg/gitg-diff-line-renderer.c | 181 +++------------------------
gitg/gitg-diff-view.c | 39 ------
gitg/gitg-diff-view.h | 9 --
5 files changed, 203 insertions(+), 299 deletions(-)
---
diff --git a/configure.ac b/configure.ac
index 992a3fb..76776df 100644
--- a/configure.ac
+++ b/configure.ac
@@ -56,7 +56,7 @@ AC_CHECK_LIB([m], [sinf])
GLIB_REQUIRED_VERSION=2.26
GTK_REQUIRED_VERSION=3.0.0
-GTKSOURCEVIEW_REQUIRED_VERSION=3.0.0
+GTKSOURCEVIEW_REQUIRED_VERSION=3.1.3
PKG_CHECK_MODULES(GITG, [
gtk+-3.0 >= $GTK_REQUIRED_VERSION
diff --git a/gitg/gitg-commit-view.c b/gitg/gitg-commit-view.c
index 0b98b45..b7640d0 100644
--- a/gitg/gitg-commit-view.c
+++ b/gitg/gitg-commit-view.c
@@ -23,6 +23,7 @@
#include <gtksourceview/gtksourceview.h>
#include <gtksourceview/gtksourcelanguagemanager.h>
#include <gtksourceview/gtksourcestyleschememanager.h>
+#include <gtksourceview/gtksourcegutterrendererpixbuf.h>
#include <glib/gi18n.h>
#include <string.h>
#include <libgitg/gitg-commit.h>
@@ -70,6 +71,7 @@ struct _GitgCommitViewPrivate
GtkSourceView *changes_view;
GtkTextView *comment_view;
+ GtkSourceGutterRenderer *pixbuf_renderer;
GtkCheckButton *check_button_signed_off_by;
GtkCheckButton *check_button_amend;
@@ -142,6 +144,22 @@ static void on_delete_file (GtkAction *action,
static void on_check_button_amend_toggled (GtkToggleButton *button, GitgCommitView *view);
+static void pixbuf_renderer_query_data_cb (GtkSourceGutterRenderer *renderer,
+ GtkTextIter *start,
+ GtkTextIter *end,
+ GtkSourceGutterRendererState state,
+ GitgCommitView *view);
+static gboolean pixbuf_renderer_query_activatable_cb (GtkSourceGutterRenderer *renderer,
+ GtkTextIter *iter,
+ GdkRectangle *area,
+ GdkEvent *event,
+ GitgCommitView *view);
+static void pixbuf_renderer_activate_cb (GtkSourceGutterRenderer *renderer,
+ GtkTextIter *iter,
+ GdkRectangle *area,
+ GdkEvent *event,
+ GitgCommitView *view);
+
static void
gitg_commit_view_finalize (GObject *object)
{
@@ -1069,35 +1087,63 @@ set_highlight (GitgCommitView *view, GtkTextIter *iter)
&end);
}
-static void
-update_cursor_view (GitgCommitView *view, gboolean isctrl)
+static gboolean
+gutter_event (GtkWidget *widget, GdkEventAny *event, GitgCommitView *view)
{
- gboolean is_hunk = FALSE;
+ GtkTextView *textview = GTK_TEXT_VIEW (view->priv->changes_view);
+ gint x;
+ gint y;
+ gint width;
+ gint height;
+ gint buf_x;
+ gint buf_y;
GtkTextIter iter;
- GitgDiffLineType line_type = GITG_DIFF_LINE_TYPE_NONE;
- GdkWindow *window;
+ GitgDiffLineType line_type;
+ GtkSourceGutter *gutter;
+ GtkSourceGutterRenderer *renderer_at_pos;
+
+ /* Get where the pointer really is. */
+ GdkWindow *win = gtk_text_view_get_window (textview, GTK_TEXT_WINDOW_LEFT);
+
+ gdk_window_get_pointer (win, &x, &y, NULL);
- window = gtk_text_view_get_window (GTK_TEXT_VIEW (view->priv->changes_view), GTK_TEXT_WINDOW_TEXT);
+ width = gdk_window_get_width (win);
+ height = gdk_window_get_height (win);
- if (!get_info_at_pointer (view, &iter, &is_hunk, NULL, &line_type))
+ if (x < 0 || y < 0 || x > width || y > height)
{
unset_highlight (view);
- gdk_window_set_cursor (window, NULL);
- return;
+ gdk_window_set_cursor (event->window, NULL);
+ return FALSE;
}
- if (is_hunk ||
- (isctrl && (line_type == GITG_DIFF_LINE_TYPE_ADD ||
- line_type == GITG_DIFF_LINE_TYPE_REMOVE)))
+ /* Get the iter where the cursor is at */
+ gtk_text_view_window_to_buffer_coords (textview, GTK_TEXT_WINDOW_LEFT, x, y, &buf_x, &buf_y);
+ gtk_text_view_get_iter_at_location (textview, &iter, buf_x, buf_y);
+
+ gtk_text_iter_set_line_offset (&iter, 0);
+
+ line_type = gitg_diff_view_get_line_type (GITG_DIFF_VIEW (view->priv->changes_view),
+ &iter);
+
+ gutter = gtk_source_view_get_gutter (view->priv->changes_view,
+ GTK_TEXT_WINDOW_LEFT);
+ renderer_at_pos = gtk_source_gutter_get_renderer_at_pos (gutter, x, y);
+
+ if (renderer_at_pos == view->priv->pixbuf_renderer &&
+ (line_type == GITG_DIFF_LINE_TYPE_ADD ||
+ line_type == GITG_DIFF_LINE_TYPE_REMOVE))
{
- gdk_window_set_cursor (window, view->priv->hand);
set_highlight (view, &iter);
+ gdk_window_set_cursor (event->window, view->priv->hand);
}
else
{
- gdk_window_set_cursor (window, NULL);
unset_highlight (view);
+ gdk_window_set_cursor (event->window, NULL);
}
+
+ return FALSE;
}
static gboolean
@@ -1105,13 +1151,17 @@ view_event (GtkWidget *widget, GdkEventAny *event, GitgCommitView *view)
{
GtkTextWindowType type;
GtkTextBuffer *buffer;
-
- gboolean isctrl = FALSE;
- GdkModifierType state;
+ GtkTextIter iter;
+ gboolean is_hunk = FALSE;
type = gtk_text_view_get_window_type (GTK_TEXT_VIEW (widget), event->window);
buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (widget));
+ if (type == GTK_TEXT_WINDOW_LEFT)
+ {
+ return gutter_event (widget, event, view);
+ }
+
if (type == GTK_TEXT_WINDOW_TEXT && event->type == GDK_LEAVE_NOTIFY)
{
unset_highlight (view);
@@ -1119,10 +1169,7 @@ view_event (GtkWidget *widget, GdkEventAny *event, GitgCommitView *view)
return FALSE;
}
- if (gdk_event_get_state ((GdkEvent *)event, &state))
- {
- isctrl = state & GDK_CONTROL_MASK;
- }
+ get_info_at_pointer (view, &iter, &is_hunk, NULL, NULL);
if (event->type == GDK_LEAVE_NOTIFY ||
event->type == GDK_MOTION_NOTIFY ||
@@ -1130,79 +1177,30 @@ view_event (GtkWidget *widget, GdkEventAny *event, GitgCommitView *view)
event->type == GDK_BUTTON_RELEASE ||
event->type == GDK_ENTER_NOTIFY)
{
- update_cursor_view (view, isctrl);
- }
-
- if (type == GTK_TEXT_WINDOW_TEXT && event->type == GDK_BUTTON_RELEASE &&
- ((GdkEventButton *)event)->button == 1 &&
- !gtk_text_buffer_get_has_selection (buffer))
- {
- GtkTextIter iter;
- gboolean is_hunk = FALSE;
- GitgDiffLineType line_type = GITG_DIFF_LINE_TYPE_NONE;
-
- get_info_at_pointer (view, &iter, &is_hunk, NULL, &line_type);
-
if (is_hunk)
{
- if (handle_stage_unstage (view, &iter))
- {
- unset_highlight (view);
- update_cursor_view (view, isctrl);
- }
+ set_highlight (view, &iter);
+ gdk_window_set_cursor (event->window, view->priv->hand);
}
- else if (isctrl && (line_type == GITG_DIFF_LINE_TYPE_ADD ||
- line_type == GITG_DIFF_LINE_TYPE_REMOVE))
+ else
{
- if (handle_stage_unstage_line (view, &iter))
- {
- unset_highlight (view);
- update_cursor_view (view, isctrl);
- }
+ unset_highlight (view);
+ gdk_window_set_cursor (event->window, NULL);
}
}
- return FALSE;
-}
-
-static gchar *
-stage_unstage_label_func (GitgDiffView *diff_view,
- gint line,
- GitgCommitView *view)
-{
- static gchar const *format = "<small><b>%s</b></small>";
-
- gchar const *labels[] = {
- _("unstage"),
- _("stage")
- };
-
- gboolean staging = (view->priv->current_changes & GITG_CHANGED_FILE_CHANGES_UNSTAGED) != 0;
-
- if (line == -1)
- {
- return g_markup_printf_escaped (format, labels[staging]);
- }
- else if (view->priv->highlight_mark)
+ if (type == GTK_TEXT_WINDOW_TEXT &&event->type == GDK_BUTTON_RELEASE &&
+ ((GdkEventButton *) event)->button == 1 && is_hunk &&
+ !gtk_text_buffer_get_has_selection (buffer))
{
- GtkTextBuffer *buffer;
- GtkTextIter iter;
- GtkTextIter hl_iter;
-
- buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (diff_view));
- gtk_text_buffer_get_iter_at_line (buffer, &iter, line);
-
- gtk_text_buffer_get_iter_at_mark (buffer,
- &hl_iter,
- view->priv->highlight_mark);
-
- if (gtk_text_iter_equal (&iter, &hl_iter))
+ if (handle_stage_unstage (view, &iter))
{
- return g_markup_printf_escaped (format, labels[staging]);
+ unset_highlight (view);
+ gdk_window_set_cursor (event->window, NULL);
}
}
- return NULL;
+ return FALSE;
}
static GtkTextBuffer *
@@ -1361,10 +1359,29 @@ on_tag_added (GtkTextTagTable *table,
gtk_text_tag_table_get_size (table) - 1);
}
+/* Copied from GtkSourceView's gtksourceviewgutterrenderermarks.c */
+static int
+measure_line_height (GtkSourceView *view)
+{
+ PangoLayout *layout;
+ gint height = 12;
+
+ layout = gtk_widget_create_pango_layout (GTK_WIDGET (view), "QWERTY");
+
+ if (layout)
+ {
+ pango_layout_get_pixel_size (layout, NULL, &height);
+ g_object_unref (layout);
+ }
+
+ return height - 2;
+}
+
static void
gitg_commit_view_parser_finished(GtkBuildable *buildable, GtkBuilder *builder)
{
GtkSourceMarkAttributes *attrs;
+ GtkSourceGutter *gutter;
if (parent_iface.parser_finished)
parent_iface.parser_finished(buildable, builder);
@@ -1403,11 +1420,6 @@ gitg_commit_view_parser_finished(GtkBuildable *buildable, GtkBuilder *builder)
gtk_widget_add_events (GTK_WIDGET (self->priv->changes_view),
GDK_LEAVE_NOTIFY_MASK | GDK_ENTER_NOTIFY_MASK);
- gitg_diff_view_set_label_func (GITG_DIFF_VIEW (self->priv->changes_view),
- (GitgDiffViewLabelFunc)stage_unstage_label_func,
- self,
- NULL);
-
self->priv->comment_view = GTK_TEXT_VIEW(gtk_builder_get_object(builder, "text_view_comment"));
self->priv->check_button_signed_off_by = GTK_CHECK_BUTTON(gtk_builder_get_object(builder, "check_button_signed_off_by"));
self->priv->check_button_amend = GTK_CHECK_BUTTON(gtk_builder_get_object(builder, "check_button_amend"));
@@ -1578,6 +1590,29 @@ gitg_commit_view_parser_finished(GtkBuildable *buildable, GtkBuilder *builder)
"toggled",
G_CALLBACK (on_check_button_amend_toggled),
self);
+
+ gutter = gtk_source_view_get_gutter (self->priv->changes_view,
+ GTK_TEXT_WINDOW_LEFT);
+
+ self->priv->pixbuf_renderer = gtk_source_gutter_renderer_pixbuf_new ();
+ g_object_set (self->priv->pixbuf_renderer, "xpad", 4, NULL);
+
+ gtk_source_gutter_insert (gutter, self->priv->pixbuf_renderer, 1);
+ gtk_source_gutter_renderer_set_size (self->priv->pixbuf_renderer,
+ measure_line_height (GTK_SOURCE_VIEW (self->priv->changes_view)));
+
+ g_signal_connect (self->priv->pixbuf_renderer,
+ "query-data",
+ G_CALLBACK (pixbuf_renderer_query_data_cb),
+ self);
+ g_signal_connect (self->priv->pixbuf_renderer,
+ "query-activatable",
+ G_CALLBACK (pixbuf_renderer_query_activatable_cb),
+ self);
+ g_signal_connect (self->priv->pixbuf_renderer,
+ "activate",
+ G_CALLBACK (pixbuf_renderer_activate_cb),
+ self);
}
static void
@@ -1619,6 +1654,12 @@ gitg_commit_view_dispose(GObject *object)
g_object_unref(self->priv->commit);
self->priv->commit = NULL;
}
+
+ if (self->priv->pixbuf_renderer != NULL)
+ {
+ g_object_unref (self->priv->pixbuf_renderer);
+ self->priv->pixbuf_renderer = NULL;
+ }
}
static void
@@ -2522,3 +2563,59 @@ on_check_button_amend_toggled (GtkToggleButton *button, GitgCommitView *view)
g_free (message);
}
}
+
+static void
+pixbuf_renderer_query_data_cb (GtkSourceGutterRenderer *renderer,
+ GtkTextIter *start,
+ GtkTextIter *end,
+ GtkSourceGutterRendererState state,
+ GitgCommitView *view)
+{
+ GitgDiffView *diff_view = GITG_DIFF_VIEW (view->priv->changes_view);
+ const gchar *stock_id;
+
+ switch (gitg_diff_view_get_line_type (diff_view, start))
+ {
+ case GITG_DIFF_LINE_TYPE_NONE:
+ stock_id = GTK_STOCK_DISCARD;
+ break;
+ case GITG_DIFF_LINE_TYPE_ADD:
+ stock_id = GTK_STOCK_ADD;
+ break;
+ case GITG_DIFF_LINE_TYPE_REMOVE:
+ stock_id = GTK_STOCK_REMOVE;
+ break;
+ default:
+ g_return_if_reached ();
+ }
+
+ g_object_set (renderer,
+ "stock-id", stock_id,
+ NULL);
+}
+
+static gboolean
+pixbuf_renderer_query_activatable_cb (GtkSourceGutterRenderer *renderer,
+ GtkTextIter *iter,
+ GdkRectangle *area,
+ GdkEvent *event,
+ GitgCommitView *view)
+{
+ GitgDiffView *diff_view = GITG_DIFF_VIEW (view->priv->changes_view);
+ GitgDiffLineType line_type;
+
+ line_type = gitg_diff_view_get_line_type (diff_view, iter);
+
+ return line_type != GITG_DIFF_LINE_TYPE_NONE &&
+ ((GdkEventButton *) event)->button == 1;
+}
+
+static void
+pixbuf_renderer_activate_cb (GtkSourceGutterRenderer *renderer,
+ GtkTextIter *iter,
+ GdkRectangle *area,
+ GdkEvent *event,
+ GitgCommitView *view)
+{
+ handle_stage_unstage_line (view, iter);
+}
diff --git a/gitg/gitg-diff-line-renderer.c b/gitg/gitg-diff-line-renderer.c
index 366119e..e28eb8f 100644
--- a/gitg/gitg-diff-line-renderer.c
+++ b/gitg/gitg-diff-line-renderer.c
@@ -30,15 +30,13 @@ enum
{
PROP_0,
PROP_LINE_OLD,
- PROP_LINE_NEW,
- PROP_LABEL
+ PROP_LINE_NEW
};
struct _GitgDiffLineRendererPrivate
{
gint line_old;
gint line_new;
- gchar *label;
gint num_digits;
PangoLayout *cached_layout;
@@ -66,10 +64,6 @@ gitg_diff_line_renderer_set_property (GObject *object,
case PROP_LINE_NEW:
self->priv->line_new = g_value_get_int (value);
break;
- case PROP_LABEL:
- g_free (self->priv->label);
- self->priv->label = g_value_dup_string (value);
- break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@@ -92,9 +86,6 @@ gitg_diff_line_renderer_get_property (GObject *object,
case PROP_LINE_NEW:
g_value_set_int (value, self->priv->line_new);
break;
- case PROP_LABEL:
- g_value_set_string (value, self->priv->label);
- break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@@ -102,16 +93,6 @@ gitg_diff_line_renderer_get_property (GObject *object,
}
static void
-gitg_diff_line_renderer_finalize (GObject *object)
-{
- GitgDiffLineRenderer *self = GITG_DIFF_LINE_RENDERER (object);
-
- g_free (self->priv->label);
-
- G_OBJECT_CLASS (gitg_diff_line_renderer_parent_class)->finalize (object);
-}
-
-static void
create_layout (GitgDiffLineRenderer *renderer,
GtkWidget *widget)
{
@@ -155,97 +136,13 @@ gitg_diff_line_renderer_begin (GtkSourceGutterRenderer *renderer,
}
static void
-darken_or_lighten (cairo_t *ctx,
- GdkRGBA const *color)
-{
- float r, g, b;
-
- r = color->red;
- g = color->green;
- b = color->blue;
-
- if ((r + g + b) / 3 > 0.5)
- {
- cairo_set_source_rgb (ctx,
- r * 0.5,
- g * 0.5,
- b * 0.5);
- }
- else
- {
- cairo_set_source_rgb (ctx,
- r * 1.5,
- g * 1.5,
- b * 1.5);
- }
-}
-
-static void
-render_label (GtkSourceGutterRenderer *renderer,
- cairo_t *ctx,
- GdkRectangle *background_area,
- GdkRectangle *cell_area,
- GtkTextIter *start,
- GtkTextIter *end,
- GtkSourceGutterRendererState renderer_state)
-{
- GitgDiffLineRenderer *lr = GITG_DIFF_LINE_RENDERER (renderer);
- GtkWidget *widget;
- PangoLayout *layout;
- GtkStyleContext *style_context;
- GtkStateType state;
- gint pixel_height;
- GdkRGBA fg_color, bg_color;
-
- widget = GTK_WIDGET (gtk_source_gutter_renderer_get_view (renderer));
- layout = lr->priv->cached_layout;
-
- pango_layout_set_markup (layout, lr->priv->label, -1);
- pango_layout_set_width (layout, cell_area->width);
-
- pango_layout_get_pixel_size (layout, NULL, &pixel_height);
-
- pango_layout_set_alignment (layout, PANGO_ALIGN_CENTER);
-
- style_context = gtk_widget_get_style_context (widget);
- state = gtk_widget_get_state (widget);
-
- gtk_style_context_get_color (style_context, state, &fg_color);
- gtk_style_context_get_background_color (style_context, state, &bg_color);
-
- gdk_cairo_set_source_rgba (ctx, &fg_color);
-
- gitg_utils_rounded_rectangle (ctx,
- cell_area->x + 0.5,
- cell_area->y + 0.5,
- cell_area->width - 1,
- cell_area->height - 1,
- 5);
-
- cairo_fill_preserve (ctx);
-
- darken_or_lighten (ctx, &fg_color);
-
- cairo_set_line_width (ctx, 1);
- cairo_stroke (ctx);
-
- gdk_cairo_set_source_rgba (ctx, &bg_color);
-
- cairo_move_to (ctx,
- cell_area->x + cell_area->width / 2,
- cell_area->y + (cell_area->height - pixel_height) / 2);
-
- pango_cairo_show_layout (ctx, layout);
-}
-
-static void
-render_lines (GtkSourceGutterRenderer *renderer,
- cairo_t *ctx,
- GdkRectangle *background_area,
- GdkRectangle *cell_area,
- GtkTextIter *start,
- GtkTextIter *end,
- GtkSourceGutterRendererState renderer_state)
+gitg_diff_line_renderer_draw (GtkSourceGutterRenderer *renderer,
+ cairo_t *ctx,
+ GdkRectangle *background_area,
+ GdkRectangle *cell_area,
+ GtkTextIter *start,
+ GtkTextIter *end,
+ GtkSourceGutterRendererState renderer_state)
{
GitgDiffLineRenderer *lr = GITG_DIFF_LINE_RENDERER (renderer);
gchar old_str[16];
@@ -255,6 +152,16 @@ render_lines (GtkSourceGutterRenderer *renderer,
GtkStyleContext *style_context;
guint xpad = 0;
+ /* Chain up to draw background */
+ GTK_SOURCE_GUTTER_RENDERER_CLASS (
+ gitg_diff_line_renderer_parent_class)->draw (renderer,
+ ctx,
+ background_area,
+ cell_area,
+ start,
+ end,
+ renderer_state);
+
widget = GTK_WIDGET (gtk_source_gutter_renderer_get_view (renderer));
layout = lr->priv->cached_layout;
@@ -307,49 +214,6 @@ render_lines (GtkSourceGutterRenderer *renderer,
}
static void
-gitg_diff_line_renderer_draw (GtkSourceGutterRenderer *renderer,
- cairo_t *ctx,
- GdkRectangle *background_area,
- GdkRectangle *cell_area,
- GtkTextIter *start,
- GtkTextIter *end,
- GtkSourceGutterRendererState renderer_state)
-{
- GitgDiffLineRenderer *lr = GITG_DIFF_LINE_RENDERER (renderer);
-
- /* Chain up to draw background */
- GTK_SOURCE_GUTTER_RENDERER_CLASS (
- gitg_diff_line_renderer_parent_class)->draw (renderer,
- ctx,
- background_area,
- cell_area,
- start,
- end,
- renderer_state);
-
- if (lr->priv->label)
- {
- render_label (renderer,
- ctx,
- background_area,
- cell_area,
- start,
- end,
- renderer_state);
- }
- else
- {
- render_lines (renderer,
- ctx,
- background_area,
- cell_area,
- start,
- end,
- renderer_state);
- }
-}
-
-static void
gitg_diff_line_renderer_end (GtkSourceGutterRenderer *renderer)
{
GitgDiffLineRenderer *lr = GITG_DIFF_LINE_RENDERER (renderer);
@@ -469,7 +333,6 @@ gitg_diff_line_renderer_class_init (GitgDiffLineRendererClass *klass)
object_class->set_property = gitg_diff_line_renderer_set_property;
object_class->get_property = gitg_diff_line_renderer_get_property;
- object_class->finalize = gitg_diff_line_renderer_finalize;
g_object_class_install_property (object_class,
PROP_LINE_OLD,
@@ -491,14 +354,6 @@ gitg_diff_line_renderer_class_init (GitgDiffLineRendererClass *klass)
-1,
G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
- g_object_class_install_property (object_class,
- PROP_LABEL,
- g_param_spec_string ("label",
- "Label",
- "Label",
- NULL,
- G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
-
g_type_class_add_private (object_class, sizeof (GitgDiffLineRendererPrivate));
}
diff --git a/gitg/gitg-diff-view.c b/gitg/gitg-diff-view.c
index e7665a5..284a867 100644
--- a/gitg/gitg-diff-view.c
+++ b/gitg/gitg-diff-view.c
@@ -136,10 +136,6 @@ struct _GitgDiffViewPrivate
guint lines_counters[2];
gboolean ignore_changes;
-
- GitgDiffViewLabelFunc label_func;
- gpointer label_func_user_data;
- GDestroyNotify label_func_destroy_notify;
};
G_DEFINE_TYPE (GitgDiffView, gitg_diff_view, GTK_SOURCE_TYPE_VIEW)
@@ -219,12 +215,6 @@ gitg_diff_view_finalize (GObject *object)
regions_free (view);
g_sequence_free (view->priv->regions_index);
- if (view->priv->label_func &&
- view->priv->label_func_destroy_notify)
- {
- view->priv->label_func_destroy_notify (view->priv->label_func_user_data);
- }
-
G_OBJECT_CLASS (gitg_diff_view_parent_class)->finalize (object);
}
@@ -827,16 +817,6 @@ line_renderer_query_data_cb (GtkSourceGutterRenderer *renderer,
view->priv->lines_counters[0] = view->priv->lines_counters[1] = 0;
*current = (*current)->next->visible ? (*current)->next : NULL;
}
-
- if (view->priv->label_func)
- {
- gchar *label = view->priv->label_func (view,
- line_number,
- view->priv->label_func_user_data);
-
- g_object_set (renderer, "label", label, NULL);
- g_free (label);
- }
}
static gint
@@ -1651,22 +1631,3 @@ gitg_diff_view_clear_line (GitgDiffView *view,
view->priv->ignore_changes = FALSE;
gtk_text_buffer_end_user_action (buffer);
}
-
-void
-gitg_diff_view_set_label_func (GitgDiffView *view,
- GitgDiffViewLabelFunc func,
- gpointer user_data,
- GDestroyNotify destroy_notify)
-{
- g_return_if_fail (GITG_IS_DIFF_VIEW (view));
-
- if (view->priv->label_func &&
- view->priv->label_func_destroy_notify)
- {
- view->priv->label_func_destroy_notify (view->priv->label_func_user_data);
- }
-
- view->priv->label_func = func;
- view->priv->label_func_user_data = user_data;
- view->priv->label_func_destroy_notify = destroy_notify;
-}
diff --git a/gitg/gitg-diff-view.h b/gitg/gitg-diff-view.h
index 4aa294e..f714b53 100644
--- a/gitg/gitg-diff-view.h
+++ b/gitg/gitg-diff-view.h
@@ -76,10 +76,6 @@ struct _GitgDiffViewClass
void (*hunk_added)(GitgDiffView *view, GitgDiffIter *iter);
};
-typedef gchar *(*GitgDiffViewLabelFunc) (GitgDiffView *view,
- gint line,
- gpointer user_data);
-
GType gitg_diff_view_get_type(void) G_GNUC_CONST;
GitgDiffView *gitg_diff_view_new(void);
@@ -105,11 +101,6 @@ void gitg_diff_iter_get_bounds (GitgDiffIter const *iter, GtkTextIter *start, Gt
GitgDiffLineType gitg_diff_view_get_line_type (GitgDiffView *view, GtkTextIter const *iter);
void gitg_diff_view_clear_line (GitgDiffView *view, GtkTextIter const *iter, GitgDiffLineType old_type, GitgDiffLineType new_type);
-void gitg_diff_view_set_label_func (GitgDiffView *view,
- GitgDiffViewLabelFunc func,
- gpointer user_data,
- GDestroyNotify destroy_notify);
-
G_END_DECLS
#endif /* __GITG_DIFF_VIEW_H__ */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]