[gtksourceview/wip/fix-search-1] SearchContext: clear search when buffer destroyed (!doesn't work)
- From: Sébastien Wilmet <swilmet src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtksourceview/wip/fix-search-1] SearchContext: clear search when buffer destroyed (!doesn't work)
- Date: Thu, 5 Mar 2015 13:16:01 +0000 (UTC)
commit ea2f9a064399770dfdbbb07b7815994754acfb49
Author: Sébastien Wilmet <swilmet gnome org>
Date: Thu Mar 5 11:55:36 2015 +0100
SearchContext: clear search when buffer destroyed (!doesn't work)
So the idle scan function is removed.
But there is a bug in GObject, the unit test fails. See the backtrace in
gdb.
gtksourceview/gtksourcesearchcontext.c | 18 ++++++++++++++----
1 files changed, 14 insertions(+), 4 deletions(-)
---
diff --git a/gtksourceview/gtksourcesearchcontext.c b/gtksourceview/gtksourcesearchcontext.c
index 5b92558..4273315 100644
--- a/gtksourceview/gtksourcesearchcontext.c
+++ b/gtksourceview/gtksourcesearchcontext.c
@@ -2528,6 +2528,14 @@ delete_range_after_cb (GtkSourceSearchContext *search,
}
static void
+buffer_destroyed_cb (GtkSourceSearchContext *search,
+ GObject *where_the_object_was)
+{
+ search->priv->buffer = NULL;
+ clear_search (search);
+}
+
+static void
set_buffer (GtkSourceSearchContext *search,
GtkSourceBuffer *buffer)
{
@@ -2536,8 +2544,9 @@ set_buffer (GtkSourceSearchContext *search,
search->priv->buffer = GTK_TEXT_BUFFER (buffer);
- g_object_add_weak_pointer (G_OBJECT (buffer),
- (gpointer *)&search->priv->buffer);
+ g_object_weak_ref (G_OBJECT (buffer),
+ (GWeakNotify) buffer_destroyed_cb,
+ search);
search->priv->tag_table = gtk_text_buffer_get_tag_table (search->priv->buffer);
g_object_ref (search->priv->tag_table);
@@ -2664,8 +2673,9 @@ gtk_source_search_context_dispose (GObject *object)
if (search->priv->buffer != NULL)
{
- g_object_remove_weak_pointer (G_OBJECT (search->priv->buffer),
- (gpointer *)&search->priv->buffer);
+ g_object_weak_unref (G_OBJECT (search->priv->buffer),
+ (GWeakNotify) buffer_destroyed_cb,
+ search);
search->priv->buffer = NULL;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]