[gtksourceview] Block/unblock completion based on view editability
- From: Jesse van den Kieboom <jessevdk src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [gtksourceview] Block/unblock completion based on view editability
- Date: Sun, 3 Jan 2010 11:55:05 +0000 (UTC)
commit 2d232d3d42dee6baeb5ee0d131d551a03be783f1
Author: Jesse van den Kieboom <jesse vandenkieboom epfl ch>
Date: Sun Jan 3 12:54:56 2010 +0100
Block/unblock completion based on view editability
gtksourceview/gtksourcecompletion.c | 28 +++++++++++++++++++++++++++-
1 files changed, 27 insertions(+), 1 deletions(-)
---
diff --git a/gtksourceview/gtksourcecompletion.c b/gtksourceview/gtksourcecompletion.c
index 3df1eec..05e372f 100644
--- a/gtksourceview/gtksourcecompletion.c
+++ b/gtksourceview/gtksourcecompletion.c
@@ -92,6 +92,7 @@ enum
TEXT_VIEW_KEY_PRESS,
TEXT_VIEW_FOCUS_OUT,
TEXT_VIEW_BUTTON_PRESS,
+ TEXT_VIEW_EDITABLE,
TEXT_BUFFER_BEGIN_SIGNALS,
TEXT_BUFFER_DELETE_RANGE,
TEXT_BUFFER_INSERT_TEXT,
@@ -1617,7 +1618,7 @@ update_interactive_completion (GtkSourceCompletion *completion,
gboolean start_completion)
{
/* Only handle interactive completion in editable parts of the buffer */
- if (!gtk_text_iter_editable (iter, gtk_text_view_get_editable (GTK_TEXT_VIEW (completion->priv->view))))
+ if (!gtk_text_iter_editable (iter, TRUE))
{
return;
}
@@ -1744,6 +1745,25 @@ buffer_paste_done_cb (GtkTextBuffer *buffer,
}
static void
+text_view_editable_cb (GtkTextView *view,
+ GParamSpec *spec,
+ GtkSourceCompletion *completion)
+{
+ gboolean editable = gtk_text_view_get_editable (view);
+ GtkSourceBuffer *buffer = GTK_SOURCE_BUFFER (gtk_text_view_get_buffer (view));
+
+ /* Block when view is not editable, and unblock if it is */
+ if (!editable)
+ {
+ completion_begin_block (completion, buffer);
+ }
+ else
+ {
+ completion_end_block (completion, buffer);
+ }
+}
+
+static void
connect_view (GtkSourceCompletion *completion)
{
GtkTextBuffer *buffer;
@@ -1766,6 +1786,12 @@ connect_view (GtkSourceCompletion *completion)
G_CALLBACK (view_key_press_event_cb),
completion);
+ completion->priv->signals_ids[TEXT_VIEW_EDITABLE] =
+ g_signal_connect (completion->priv->view,
+ "notify::editable",
+ G_CALLBACK (text_view_editable_cb),
+ completion);
+
buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (completion->priv->view));
completion->priv->signals_ids[TEXT_BUFFER_DELETE_RANGE] =
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]