[gtksourceview] Made block/unblock reintrant
- From: Jesse van den Kieboom <jessevdk src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [gtksourceview] Made block/unblock reintrant
- Date: Sun, 3 Jan 2010 11:58:15 +0000 (UTC)
commit 2bff0d24c2432fb93d8cb430c55b433d0cf3db2e
Author: Jesse van den Kieboom <jesse vandenkieboom epfl ch>
Date: Sun Jan 3 12:57:47 2010 +0100
Made block/unblock reintrant
gtksourceview/gtksourcecompletion.c | 27 +++++++++++++++++++++++----
1 files changed, 23 insertions(+), 4 deletions(-)
---
diff --git a/gtksourceview/gtksourcecompletion.c b/gtksourceview/gtksourcecompletion.c
index 05e372f..4cb27a5 100644
--- a/gtksourceview/gtksourcecompletion.c
+++ b/gtksourceview/gtksourcecompletion.c
@@ -158,6 +158,8 @@ struct _GtkSourceCompletionPrivate
gint min_auto_complete_delay;
GList *auto_completion_selection;
GtkSourceCompletionContext *auto_completion_context;
+
+ gint block_count;
};
static guint signals[LAST_SIGNAL] = { 0 };
@@ -228,16 +230,33 @@ static void
completion_begin_block (GtkSourceCompletion *completion,
GtkSourceBuffer *buffer)
{
- g_signal_handler_block (buffer, completion->priv->signals_ids[TEXT_BUFFER_INSERT_TEXT]);
- g_signal_handler_block (buffer, completion->priv->signals_ids[TEXT_BUFFER_DELETE_RANGE]);
+ if (completion->priv->block_count == 0)
+ {
+ g_signal_handler_block (buffer,
+ completion->priv->signals_ids[TEXT_BUFFER_INSERT_TEXT]);
+ g_signal_handler_block (buffer,
+ completion->priv->signals_ids[TEXT_BUFFER_DELETE_RANGE]);
+ }
+
+ ++completion->priv->block_count;
}
static void
completion_end_block (GtkSourceCompletion *completion,
GtkSourceBuffer *buffer)
{
- g_signal_handler_unblock (buffer, completion->priv->signals_ids[TEXT_BUFFER_INSERT_TEXT]);
- g_signal_handler_unblock (buffer, completion->priv->signals_ids[TEXT_BUFFER_DELETE_RANGE]);
+ if (completion->priv->block_count == 0)
+ {
+ return;
+ }
+
+ if (--completion->priv->block_count == 0)
+ {
+ g_signal_handler_unblock (buffer,
+ completion->priv->signals_ids[TEXT_BUFFER_INSERT_TEXT]);
+ g_signal_handler_unblock (buffer,
+ completion->priv->signals_ids[TEXT_BUFFER_DELETE_RANGE]);
+ }
}
static gboolean
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]