[gtksourceview/wip/misc-improvements: 2/2] view: disconnect notify::buffer in dispose()
- From: Sébastien Wilmet <swilmet src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtksourceview/wip/misc-improvements: 2/2] view: disconnect notify::buffer in dispose()
- Date: Sun, 6 Jul 2014 16:29:26 +0000 (UTC)
commit e0b4460d793a5913d5e5ee0bddcde9f69dac846c
Author: Sébastien Wilmet <swilmet gnome org>
Date: Sun Jul 6 17:58:33 2014 +0200
view: disconnect notify::buffer in dispose()
gtksourceview/gtksourceview.c | 15 +++++++++++----
1 files changed, 11 insertions(+), 4 deletions(-)
---
diff --git a/gtksourceview/gtksourceview.c b/gtksourceview/gtksourceview.c
index 64fb899..90e3c2b 100644
--- a/gtksourceview/gtksourceview.c
+++ b/gtksourceview/gtksourceview.c
@@ -926,10 +926,9 @@ gtk_source_view_get_property (GObject *object,
}
static void
-notify_buffer (GtkSourceView *view)
+notify_buffer_cb (GtkSourceView *view)
{
- set_source_buffer (view,
- gtk_text_view_get_buffer (GTK_TEXT_VIEW (view)));
+ set_source_buffer (view, gtk_text_view_get_buffer (GTK_TEXT_VIEW (view)));
}
static void
@@ -973,7 +972,7 @@ gtk_source_view_init (GtkSourceView *view)
g_signal_connect (view,
"notify::buffer",
- G_CALLBACK (notify_buffer),
+ G_CALLBACK (notify_buffer_cb),
NULL);
}
@@ -988,6 +987,14 @@ gtk_source_view_dispose (GObject *object)
remove_source_buffer (view);
+ /* Disconnect notify buffer because the destroy of the textview will set
+ * the buffer to NULL, and we call get_buffer in the notify which would
+ * reinstate a buffer which we don't want.
+ * There is no problem calling g_signal_handlers_disconnect_by_func()
+ * several times (if dispose() is called several times).
+ */
+ g_signal_handlers_disconnect_by_func (view, notify_buffer_cb, NULL);
+
G_OBJECT_CLASS (gtk_source_view_parent_class)->dispose (object);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]