[gtksourceview] Completion: merge cancel_completion() into reset_completion()
- From: SÃbastien Wilmet <swilmet src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtksourceview] Completion: merge cancel_completion() into reset_completion()
- Date: Sun, 17 Feb 2013 17:23:03 +0000 (UTC)
commit 58f22571c9703b510402234a5044ec2197cd3d48
Author: SÃbastien Wilmet <swilmet gnome org>
Date: Sun Feb 17 17:37:11 2013 +0100
Completion: merge cancel_completion() into reset_completion()
And adapt the code to use only reset_completion().
gtksourceview/gtksourcecompletion.c | 52 +++++++++++-----------------------
1 files changed, 17 insertions(+), 35 deletions(-)
---
diff --git a/gtksourceview/gtksourcecompletion.c b/gtksourceview/gtksourcecompletion.c
index 7029b64..1ae1cd5 100644
--- a/gtksourceview/gtksourcecompletion.c
+++ b/gtksourceview/gtksourcecompletion.c
@@ -1852,9 +1852,9 @@ connect_view (GtkSourceCompletion *completion)
}
static void
-cancel_completion (GtkSourceCompletion *completion)
+reset_completion (GtkSourceCompletion *completion)
{
- if (completion->priv->show_timed_out_id)
+ if (completion->priv->show_timed_out_id != 0)
{
g_source_remove (completion->priv->show_timed_out_id);
completion->priv->show_timed_out_id = 0;
@@ -1865,20 +1865,12 @@ cancel_completion (GtkSourceCompletion *completion)
/* Inform providers of cancellation through the context */
_gtk_source_completion_context_cancel (completion->priv->context);
- g_object_unref (completion->priv->context);
- completion->priv->context = NULL;
-
- g_list_free (completion->priv->running_providers);
- completion->priv->running_providers = NULL;
+ g_clear_object (&completion->priv->context);
}
-}
-
-static void
-reset_completion (GtkSourceCompletion *completion)
-{
- cancel_completion (completion);
+ g_list_free (completion->priv->running_providers);
g_list_free (completion->priv->active_providers);
+ completion->priv->running_providers = NULL;
completion->priv->active_providers = NULL;
if (!completion->priv->remember_info_visibility)
@@ -1892,30 +1884,20 @@ gtk_source_completion_dispose (GObject *object)
{
GtkSourceCompletion *completion = GTK_SOURCE_COMPLETION (object);
- /* Cancel running completion */
- cancel_completion (completion);
+ reset_completion (completion);
if (completion->priv->view != NULL)
{
disconnect_view (completion);
-
g_clear_object (&completion->priv->view);
-
- g_list_foreach (completion->priv->providers, (GFunc)g_object_unref, NULL);
- }
-
- if (completion->priv->show_timed_out_id != 0)
- {
- g_source_remove (completion->priv->show_timed_out_id);
- completion->priv->show_timed_out_id = 0;
}
g_clear_object (&completion->priv->default_info);
- g_list_free (completion->priv->active_providers);
+ g_list_foreach (completion->priv->providers, (GFunc)g_object_unref, NULL);
+
g_list_free (completion->priv->interactive_providers);
g_list_free (completion->priv->providers);
- completion->priv->active_providers = NULL;
completion->priv->interactive_providers = NULL;
completion->priv->providers = NULL;
@@ -2801,6 +2783,9 @@ update_completion (GtkSourceCompletion *completion,
{
GList *item;
+ /* Copy the providers, because they can be freed by reset_completion(). */
+ GList *providers_copy = g_list_copy (providers);
+
DEBUG({
g_print ("Update completion: %d\n", g_list_length (providers));
});
@@ -2814,22 +2799,17 @@ update_completion (GtkSourceCompletion *completion,
}
/* Make sure to first cancel any running completion */
- cancel_completion (completion);
+ reset_completion (completion);
completion->priv->context = context;
- completion->priv->running_providers = g_list_copy (providers);
-
- if (completion->priv->active_providers != providers)
- {
- g_list_free (completion->priv->active_providers);
- completion->priv->active_providers = g_list_copy (providers);
- }
+ completion->priv->running_providers = g_list_copy (providers_copy);
+ completion->priv->active_providers = g_list_copy (providers_copy);
/* Create a new CompletionModel */
gtk_tree_view_set_model (GTK_TREE_VIEW (completion->priv->tree_view_proposals), NULL);
replace_model (completion);
- for (item = providers; item != NULL; item = g_list_next (item))
+ for (item = providers_copy; item != NULL; item = g_list_next (item))
{
GtkSourceCompletionProvider *provider =
GTK_SOURCE_COMPLETION_PROVIDER (item->data);
@@ -2842,6 +2822,8 @@ update_completion (GtkSourceCompletion *completion,
gtk_source_completion_provider_populate (provider, context);
}
+
+ g_list_free (providers_copy);
}
static void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]