[gtksourceview] Emit the change_buffer in the gutter renderer also when a view is set.



commit 9cb7d5fd6689c263b713f738cd070417eb43b8bf
Author: Paolo Borelli <pbor gnome org>
Date:   Wed Feb 23 00:21:11 2011 +0100

    Emit the change_buffer in the gutter renderer also when a view is set.
    
    Before this was only emitted when the buffer in the view changed,
    but makes sense also to emit it when the view is set.

 gtksourceview/gtksourcegutterrenderer.c |   32 +++++++++++++++++++++---------
 1 files changed, 22 insertions(+), 10 deletions(-)
---
diff --git a/gtksourceview/gtksourcegutterrenderer.c b/gtksourceview/gtksourcegutterrenderer.c
index af5ce39..8635531 100644
--- a/gtksourceview/gtksourcegutterrenderer.c
+++ b/gtksourceview/gtksourcegutterrenderer.c
@@ -89,22 +89,32 @@ gtk_source_gutter_renderer_finalize (GObject *object)
 }
 
 static void
-on_buffer_changed (GtkTextView             *view,
-                   GParamSpec              *spec,
-                   GtkSourceGutterRenderer *renderer)
+emit_buffer_changed (GtkTextView             *view,
+                     GtkSourceGutterRenderer *renderer)
 {
 	GtkTextBuffer* buffer;
 
-	if (GTK_SOURCE_GUTTER_RENDERER_GET_CLASS (renderer)->change_buffer)
+	buffer = gtk_text_view_get_buffer (view);
+
+	if (buffer != renderer->priv->buffer)
 	{
-		GTK_SOURCE_GUTTER_RENDERER_GET_CLASS (renderer)->change_buffer (renderer,
-		                                                                renderer->priv->buffer);
+		if (GTK_SOURCE_GUTTER_RENDERER_GET_CLASS (renderer)->change_buffer)
+		{
+			GTK_SOURCE_GUTTER_RENDERER_GET_CLASS (renderer)->change_buffer (renderer,
+			                                                                renderer->priv->buffer);
+		}
+
+		renderer->priv->buffer = buffer;
+		g_object_add_weak_pointer (G_OBJECT (buffer), (gpointer)&renderer->priv->buffer);
 	}
+}
 
-	buffer = gtk_text_view_get_buffer (view);
-
-	renderer->priv->buffer = buffer;
-	g_object_add_weak_pointer (G_OBJECT (buffer), (gpointer)&renderer->priv->buffer);
+static void
+on_buffer_changed (GtkTextView             *view,
+                   GParamSpec              *spec,
+                   GtkSourceGutterRenderer *renderer)
+{
+	emit_buffer_changed (view, renderer);
 }
 
 static void
@@ -120,6 +130,8 @@ renderer_change_view_impl (GtkSourceGutterRenderer *renderer,
 
 	if (renderer->priv->view)
 	{
+		emit_buffer_changed (renderer->priv->view, renderer);
+
 		g_signal_connect (renderer->priv->view,
 		                  "notify::buffer",
 		                  G_CALLBACK (on_buffer_changed),



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