[gtksourceview] Completion: little clean-up of activate_current_proposal()
- From: SÃbastien Wilmet <swilmet src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtksourceview] Completion: little clean-up of activate_current_proposal()
- Date: Fri, 15 Feb 2013 23:35:27 +0000 (UTC)
commit c33d66bb7c9e49ed600ba302c362031506f65dcf
Author: SÃbastien Wilmet <swilmet gnome org>
Date: Sat Feb 16 00:20:09 2013 +0100
Completion: little clean-up of activate_current_proposal()
gtksourceview/gtksourcecompletion.c | 42 ++++++++++++++--------------------
1 files changed, 17 insertions(+), 25 deletions(-)
---
diff --git a/gtksourceview/gtksourcecompletion.c b/gtksourceview/gtksourcecompletion.c
index 4c49f71..7de802f 100644
--- a/gtksourceview/gtksourcecompletion.c
+++ b/gtksourceview/gtksourcecompletion.c
@@ -229,6 +229,9 @@ static void update_completion (GtkSourceCompletion *completion,
static void show_info_cb (GtkWidget *widget,
GtkSourceCompletion *completion);
+/* Returns %TRUE if a proposal is selected.
+ * Call g_object_unref() on @provider and @proposal when no longer needed.
+ */
static gboolean
get_selected_proposal (GtkSourceCompletion *completion,
GtkTreeIter *iter,
@@ -300,35 +303,26 @@ completion_end_block (GtkSourceCompletion *completion,
g_signal_handler_unblock (buffer, completion->priv->signals_ids[TEXT_BUFFER_DELETE_RANGE]);
}
-static gboolean
+static void
activate_current_proposal (GtkSourceCompletion *completion)
{
- gboolean activated;
- GtkTreeIter iter;
- GtkTextIter titer;
- GtkSourceCompletionProposal *proposal = NULL;
GtkSourceCompletionProvider *provider = NULL;
+ GtkSourceCompletionProposal *proposal = NULL;
GtkTextBuffer *buffer;
gboolean has_start;
- GtkTextIter start;
+ GtkTextIter start_iter;
+ GtkTextIter insert_iter;
+ gboolean activated;
- if (!get_selected_proposal (completion, &iter, &provider, &proposal))
+ if (!get_selected_proposal (completion, NULL, &provider, &proposal))
{
- DEBUG({
- g_print ("Hiding because activated without proposal\n");
- });
-
- gtk_source_completion_hide (completion);
- return TRUE;
+ g_return_if_reached ();
}
- buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (completion->priv->view));
- gtk_text_buffer_get_start_iter (buffer, &start);
-
has_start = gtk_source_completion_provider_get_start_iter (provider,
completion->priv->context,
proposal,
- &start);
+ &start_iter);
/* First hide the completion because the activation might actually
activate another one, which we don't want to hide */
@@ -338,13 +332,13 @@ activate_current_proposal (GtkSourceCompletion *completion)
gtk_source_completion_hide (completion);
- /* Get insert iter */
+ get_iter_at_insert (completion, &insert_iter);
- get_iter_at_insert (completion, &titer);
+ buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (completion->priv->view));
completion_begin_block (completion, GTK_SOURCE_BUFFER (buffer));
- activated = gtk_source_completion_provider_activate_proposal (provider, proposal, &titer);
+ activated = gtk_source_completion_provider_activate_proposal (provider, proposal, &insert_iter);
if (!activated)
{
@@ -352,10 +346,9 @@ activate_current_proposal (GtkSourceCompletion *completion)
if (has_start)
{
- /* Replace from 'start' to 'titer' */
gtk_text_buffer_begin_user_action (buffer);
- gtk_text_buffer_delete (buffer, &start, &titer);
- gtk_text_buffer_insert (buffer, &start, text, -1);
+ gtk_text_buffer_delete (buffer, &start_iter, &insert_iter);
+ gtk_text_buffer_insert (buffer, &start_iter, text, -1);
gtk_text_buffer_end_user_action (buffer);
}
else
@@ -364,6 +357,7 @@ activate_current_proposal (GtkSourceCompletion *completion)
text,
-1);
}
+
g_free (text);
}
@@ -371,8 +365,6 @@ activate_current_proposal (GtkSourceCompletion *completion)
g_object_unref (provider);
g_object_unref (proposal);
-
- return TRUE;
}
typedef gboolean (*ProposalSelector)(GtkSourceCompletion *completion,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]