[gtksourceview] completion: add gtk_source_completion_context_get_proposals_for_provider



commit 1b46403ad63ffd5955acbaa1fd388b5979084036
Author: Christian Hergert <chergert redhat com>
Date:   Fri Sep 2 23:26:10 2022 -0700

    completion: add gtk_source_completion_context_get_proposals_for_provider
    
    This adds a getter for API symmetry. It's useful to monitor the changes of
    models in conjunction with an additional signals.

 gtksourceview/gtksourcecompletioncontext.c | 34 ++++++++++++++++++++++++++++++
 gtksourceview/gtksourcecompletioncontext.h |  3 +++
 2 files changed, 37 insertions(+)
---
diff --git a/gtksourceview/gtksourcecompletioncontext.c b/gtksourceview/gtksourcecompletioncontext.c
index 88dd9333..3a31ba66 100644
--- a/gtksourceview/gtksourcecompletioncontext.c
+++ b/gtksourceview/gtksourcecompletioncontext.c
@@ -589,6 +589,40 @@ gtk_source_completion_context_items_changed_cb (GtkSourceCompletionContext *self
        gtk_source_completion_context_update_empty (self);
 }
 
+/**
+ * gtk_source_completion_context_get_proposals_for_provider:
+ * @self: a #GtkSourceCompletionContext
+ * @provider: a #GtkSourceCompletionProvider
+ *
+ * Gets the #GListModel associated with the provider.
+ *
+ * You can connect to #GtkSourceCompletionContext::model-changed to receive
+ * notifications about when the model has been replaced by a new model.
+ *
+ * Returns: (transfer none) (nullable): a #GListModel or %NULL
+ *
+ * Since: 5.6
+ */
+GListModel *
+gtk_source_completion_context_get_proposals_for_provider (GtkSourceCompletionContext  *self,
+                                                          GtkSourceCompletionProvider *provider)
+{
+       g_return_val_if_fail (GTK_SOURCE_IS_COMPLETION_CONTEXT (self), NULL);
+       g_return_val_if_fail (GTK_SOURCE_IS_COMPLETION_PROVIDER (provider), NULL);
+
+       for (guint i = 0; i < self->providers->len; i++)
+       {
+               const ProviderInfo *info = &g_array_index (self->providers, ProviderInfo, i);
+
+               if (info->provider == provider)
+               {
+                       return info->results;
+               }
+       }
+
+       return NULL;
+}
+
 /**
  * gtk_source_completion_context_set_proposals_for_provider:
  * @self: an #GtkSourceCompletionContext
diff --git a/gtksourceview/gtksourcecompletioncontext.h b/gtksourceview/gtksourcecompletioncontext.h
index 1b013a11..7f3fe8c2 100644
--- a/gtksourceview/gtksourcecompletioncontext.h
+++ b/gtksourceview/gtksourcecompletioncontext.h
@@ -63,5 +63,8 @@ GTK_SOURCE_AVAILABLE_IN_ALL
 void                           gtk_source_completion_context_set_proposals_for_provider 
(GtkSourceCompletionContext  *self,
                                                                                          
GtkSourceCompletionProvider *provider,
                                                                                          GListModel          
        *results);
+GTK_SOURCE_AVAILABLE_IN_5_6
+GListModel                    *gtk_source_completion_context_get_proposals_for_provider 
(GtkSourceCompletionContext  *self,
+                                                                                         
GtkSourceCompletionProvider *provider);
 
 G_END_DECLS


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]