diff options
author | Paolo Borelli <pborelli@gnome.org> | 2015-08-11 15:32:11 +0200 |
---|---|---|
committer | Paolo Borelli <pborelli@gnome.org> | 2015-08-15 10:00:20 +0200 |
commit | 5fabb88e1ea02abdbfc3a945e6b9367112b2b09e (patch) | |
tree | c22f2716106677d2bda7f2a06576ab79144e53be /gtksourceview | |
parent | 4a3702df87a124ad4a3380a69531ed3062b1daa1 (diff) | |
download | gtksourceview-5fabb88e1ea02abdbfc3a945e6b9367112b2b09e.tar.gz |
completion: add support for named-icons and GIcon
Support setting an icon-name or a GIcon on providers and proposals
as an alternative to setting the Pixbuf. This makes much easier
to use symbolic icons.
Diffstat (limited to 'gtksourceview')
-rw-r--r-- | gtksourceview/gtksourcecompletion.c | 47 | ||||
-rw-r--r-- | gtksourceview/gtksourcecompletionitem.c | 81 | ||||
-rw-r--r-- | gtksourceview/gtksourcecompletionmodel.c | 28 | ||||
-rw-r--r-- | gtksourceview/gtksourcecompletionmodel.h | 2 | ||||
-rw-r--r-- | gtksourceview/gtksourcecompletionproposal.c | 55 | ||||
-rw-r--r-- | gtksourceview/gtksourcecompletionproposal.h | 28 | ||||
-rw-r--r-- | gtksourceview/gtksourcecompletionprovider.c | 55 | ||||
-rw-r--r-- | gtksourceview/gtksourcecompletionprovider.h | 12 |
8 files changed, 289 insertions, 19 deletions
diff --git a/gtksourceview/gtksourcecompletion.c b/gtksourceview/gtksourcecompletion.c index 74851572..65fd3e83 100644 --- a/gtksourceview/gtksourcecompletion.c +++ b/gtksourceview/gtksourcecompletion.c @@ -1950,6 +1950,42 @@ accelerators_notify_cb (GtkSourceCompletion *completion, } static void +cell_icon_func (GtkTreeViewColumn *column, + GtkCellRenderer *cell, + GtkTreeModel *model, + GtkTreeIter *iter, + gpointer data) +{ + GdkPixbuf *pixbuf; + gchar *icon_name; + GIcon *gicon; + + gtk_tree_model_get (model, iter, + GTK_SOURCE_COMPLETION_MODEL_COLUMN_ICON, &pixbuf, + GTK_SOURCE_COMPLETION_MODEL_COLUMN_ICON_NAME, &icon_name, + GTK_SOURCE_COMPLETION_MODEL_COLUMN_GICON, &gicon, + -1); + + if (pixbuf != NULL) + { + g_object_set (cell, "pixbuf", pixbuf, NULL); + g_object_unref (pixbuf); + } + + if (icon_name != NULL) + { + g_object_set (cell, "icon-name", icon_name, NULL); + g_free (icon_name); + } + + if (gicon != NULL) + { + g_object_set (cell, "gicon", gicon, NULL); + g_object_unref (gicon); + } +} + +static void init_tree_view (GtkSourceCompletion *completion, GtkBuilder *builder) { @@ -1992,8 +2028,17 @@ init_tree_view (GtkSourceCompletion *completion, column = GTK_TREE_VIEW_COLUMN (gtk_builder_get_object (builder, "tree_view_column_icon")); + /* We use a cell function instead of plain attributes for the icon since + * the pixbuf renderer will not renderer any icon if pixbuf is set to NULL. + * See https://bugzilla.gnome.org/show_bug.cgi?id=753510 + */ + gtk_tree_view_column_set_cell_data_func (column, + cell_renderer, + cell_icon_func, + NULL, + NULL); + gtk_tree_view_column_set_attributes (column, cell_renderer, - "pixbuf", GTK_SOURCE_COMPLETION_MODEL_COLUMN_ICON, "cell-background-set", GTK_SOURCE_COMPLETION_MODEL_COLUMN_IS_HEADER, NULL); diff --git a/gtksourceview/gtksourcecompletionitem.c b/gtksourceview/gtksourcecompletionitem.c index 66df16d3..b352fd8a 100644 --- a/gtksourceview/gtksourcecompletionitem.c +++ b/gtksourceview/gtksourcecompletionitem.c @@ -39,6 +39,8 @@ struct _GtkSourceCompletionItemPrivate gchar *text; gchar *info; GdkPixbuf *icon; + gchar *icon_name; + GIcon *gicon; }; /* Properties */ @@ -49,6 +51,8 @@ enum PROP_MARKUP, PROP_TEXT, PROP_ICON, + PROP_ICON_NAME, + PROP_GICON, PROP_INFO }; @@ -85,6 +89,18 @@ gtk_source_completion_proposal_get_icon_impl (GtkSourceCompletionProposal *self) return GTK_SOURCE_COMPLETION_ITEM (self)->priv->icon; } +static const gchar * +gtk_source_completion_proposal_get_icon_name_impl (GtkSourceCompletionProposal *self) +{ + return GTK_SOURCE_COMPLETION_ITEM (self)->priv->icon_name; +} + +static GIcon * +gtk_source_completion_proposal_get_gicon_impl (GtkSourceCompletionProposal *self) +{ + return GTK_SOURCE_COMPLETION_ITEM (self)->priv->gicon; +} + static gchar * gtk_source_completion_proposal_get_info_impl (GtkSourceCompletionProposal *self) { @@ -102,6 +118,8 @@ gtk_source_completion_proposal_iface_init (gpointer g_iface, iface->get_markup = gtk_source_completion_proposal_get_markup_impl; iface->get_text = gtk_source_completion_proposal_get_text_impl; iface->get_icon = gtk_source_completion_proposal_get_icon_impl; + iface->get_icon_name = gtk_source_completion_proposal_get_icon_name_impl; + iface->get_gicon = gtk_source_completion_proposal_get_gicon_impl; iface->get_info = gtk_source_completion_proposal_get_info_impl; } @@ -121,6 +139,13 @@ gtk_source_completion_item_finalize (GObject *object) g_object_unref (self->priv->icon); } + g_free (self->priv->icon_name); + + if (self->priv->gicon != NULL) + { + g_object_unref (self->priv->gicon); + } + G_OBJECT_CLASS (gtk_source_completion_item_parent_class)->finalize (object); } @@ -153,6 +178,12 @@ gtk_source_completion_item_get_property (GObject *object, case PROP_ICON: g_value_set_object (value, self->priv->icon); break; + case PROP_ICON_NAME: + g_value_set_string (value, self->priv->icon_name); + break; + case PROP_GICON: + g_value_set_object (value, self->priv->gicon); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; @@ -182,13 +213,11 @@ gtk_source_completion_item_set_property (GObject *object, case PROP_LABEL: g_free (self->priv->label); self->priv->label = g_value_dup_string (value); - emit_changed (self); break; case PROP_MARKUP: g_free (self->priv->markup); self->priv->markup = g_value_dup_string (value); - emit_changed (self); break; case PROP_TEXT: @@ -198,7 +227,6 @@ gtk_source_completion_item_set_property (GObject *object, case PROP_INFO: g_free (self->priv->info); self->priv->info = g_value_dup_string (value); - emit_changed (self); break; case PROP_ICON: @@ -210,6 +238,20 @@ gtk_source_completion_item_set_property (GObject *object, self->priv->icon = GDK_PIXBUF (g_value_dup_object (value)); emit_changed (self); break; + case PROP_ICON_NAME: + g_free (self->priv->icon_name); + self->priv->icon_name = g_value_dup_string (value); + emit_changed (self); + break; + case PROP_GICON: + if (self->priv->gicon != NULL) + { + g_object_unref (self->priv->gicon); + } + + self->priv->gicon = G_ICON (g_value_dup_object (value)); + emit_changed (self); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; @@ -267,17 +309,46 @@ gtk_source_completion_item_class_init (GtkSourceCompletionItemClass *klass) /** * GtkSourceCompletionItem:icon: * - * Icon to be shown for this proposal. + * The #GdkPixbuf for the icon to be shown for this proposal. */ g_object_class_install_property (object_class, PROP_ICON, g_param_spec_object ("icon", "Icon", - "Icon to be shown for this item", + "Pixbuf of the icon to be shown for this item", GDK_TYPE_PIXBUF, G_PARAM_READWRITE)); /** + * GtkSourceCompletionItem:icon-name: + * + * The icon name for the icon to be shown for this proposal. + * + * Since: 3.18 + */ + g_object_class_install_property (object_class, + PROP_ICON_NAME, + g_param_spec_string ("icon-name", + "Icon Name", + "Icon name of the icon to be shown for this item", + NULL, + G_PARAM_READWRITE)); + + /** + * GtkSourceCompletionItem:gicon: + * + * The #GIcon for the icon to be shown for this proposal. + * + * Since: 3.18 + */ + g_object_class_install_property (object_class, + PROP_GICON, + g_param_spec_object ("gicon", + "GIcon", + "GIcon of the icon to be shown for this item", + G_TYPE_ICON, + G_PARAM_READWRITE)); + /** * GtkSourceCompletionItem:info: * * Optional extra information to be shown for this proposal. diff --git a/gtksourceview/gtksourcecompletionmodel.c b/gtksourceview/gtksourcecompletionmodel.c index 0430a2a6..ca54de83 100644 --- a/gtksourceview/gtksourcecompletionmodel.c +++ b/gtksourceview/gtksourcecompletionmodel.c @@ -520,6 +520,32 @@ tree_model_get_value (GtkTreeModel *tree_model, } break; + case GTK_SOURCE_COMPLETION_MODEL_COLUMN_ICON_NAME: + if (is_header (proposal_info)) + { + const gchar *icon_name = gtk_source_completion_provider_get_icon_name (completion_provider); + g_value_set_string (value, (gpointer)icon_name); + } + else + { + const gchar *icon_name = gtk_source_completion_proposal_get_icon_name (completion_proposal); + g_value_set_string (value, (gpointer)icon_name); + } + break; + + case GTK_SOURCE_COMPLETION_MODEL_COLUMN_GICON: + if (is_header (proposal_info)) + { + GIcon *icon = gtk_source_completion_provider_get_gicon (completion_provider); + g_value_set_object (value, (gpointer)icon); + } + else + { + GIcon *icon = gtk_source_completion_proposal_get_gicon (completion_proposal); + g_value_set_object (value, (gpointer)icon); + } + break; + case GTK_SOURCE_COMPLETION_MODEL_COLUMN_IS_HEADER: g_value_set_boolean (value, is_header (proposal_info)); break; @@ -724,6 +750,8 @@ gtk_source_completion_model_init (GtkSourceCompletionModel *self) self->priv->column_types[GTK_SOURCE_COMPLETION_MODEL_COLUMN_MARKUP] = G_TYPE_STRING; self->priv->column_types[GTK_SOURCE_COMPLETION_MODEL_COLUMN_ICON] = GDK_TYPE_PIXBUF; + self->priv->column_types[GTK_SOURCE_COMPLETION_MODEL_COLUMN_ICON_NAME] = G_TYPE_STRING; + self->priv->column_types[GTK_SOURCE_COMPLETION_MODEL_COLUMN_GICON] = G_TYPE_ICON; self->priv->column_types[GTK_SOURCE_COMPLETION_MODEL_COLUMN_PROPOSAL] = G_TYPE_OBJECT; self->priv->column_types[GTK_SOURCE_COMPLETION_MODEL_COLUMN_PROVIDER] = G_TYPE_OBJECT; self->priv->column_types[GTK_SOURCE_COMPLETION_MODEL_COLUMN_IS_HEADER] = G_TYPE_BOOLEAN; diff --git a/gtksourceview/gtksourcecompletionmodel.h b/gtksourceview/gtksourcecompletionmodel.h index 927051d1..8f7ee268 100644 --- a/gtksourceview/gtksourcecompletionmodel.h +++ b/gtksourceview/gtksourcecompletionmodel.h @@ -55,6 +55,8 @@ enum { GTK_SOURCE_COMPLETION_MODEL_COLUMN_MARKUP, GTK_SOURCE_COMPLETION_MODEL_COLUMN_ICON, + GTK_SOURCE_COMPLETION_MODEL_COLUMN_ICON_NAME, + GTK_SOURCE_COMPLETION_MODEL_COLUMN_GICON, GTK_SOURCE_COMPLETION_MODEL_COLUMN_PROPOSAL, GTK_SOURCE_COMPLETION_MODEL_COLUMN_PROVIDER, GTK_SOURCE_COMPLETION_MODEL_COLUMN_IS_HEADER, diff --git a/gtksourceview/gtksourcecompletionproposal.c b/gtksourceview/gtksourcecompletionproposal.c index 47bf9250..8e063a33 100644 --- a/gtksourceview/gtksourcecompletionproposal.c +++ b/gtksourceview/gtksourcecompletionproposal.c @@ -69,6 +69,18 @@ gtk_source_completion_proposal_get_icon_default (GtkSourceCompletionProposal *pr return NULL; } +static const gchar * +gtk_source_completion_proposal_get_icon_name_default (GtkSourceCompletionProposal *proposal) +{ + return NULL; +} + +static GIcon * +gtk_source_completion_proposal_get_gicon_default (GtkSourceCompletionProposal *proposal) +{ + return NULL; +} + static gchar * gtk_source_completion_proposal_get_info_default (GtkSourceCompletionProposal *proposal) { @@ -96,8 +108,9 @@ gtk_source_completion_proposal_default_init (GtkSourceCompletionProposalIface *i iface->get_label = gtk_source_completion_proposal_get_label_default; iface->get_markup = gtk_source_completion_proposal_get_markup_default; iface->get_text = gtk_source_completion_proposal_get_text_default; - iface->get_icon = gtk_source_completion_proposal_get_icon_default; + iface->get_icon_name = gtk_source_completion_proposal_get_icon_name_default; + iface->get_gicon = gtk_source_completion_proposal_get_gicon_default; iface->get_info = gtk_source_completion_proposal_get_info_default; iface->hash = gtk_source_completion_proposal_hash_default; iface->equal = gtk_source_completion_proposal_equal_default; @@ -187,9 +200,9 @@ gtk_source_completion_proposal_get_text (GtkSourceCompletionProposal *proposal) * gtk_source_completion_proposal_get_icon: * @proposal: a #GtkSourceCompletionProposal. * - * Gets the icon of @proposal. + * Gets the #GdkPixbuf for the icon of @proposal. * - * Returns: (transfer none): The icon of @proposal. + * Returns: (nullable) (transfer none): A #GdkPixbuf with the icon of @proposal. */ GdkPixbuf * gtk_source_completion_proposal_get_icon (GtkSourceCompletionProposal *proposal) @@ -200,6 +213,42 @@ gtk_source_completion_proposal_get_icon (GtkSourceCompletionProposal *proposal) } /** + * gtk_source_completion_proposal_get_icon_name: + * @proposal: a #GtkSourceCompletionProposal. + * + * Gets the icon name of @proposal. + * + * Returns: (nullable) (transfer none): The icon name of @proposal. + * + * Since: 3.18 + */ +const gchar * +gtk_source_completion_proposal_get_icon_name (GtkSourceCompletionProposal *proposal) +{ + g_return_val_if_fail (GTK_SOURCE_IS_COMPLETION_PROPOSAL (proposal), NULL); + + return GTK_SOURCE_COMPLETION_PROPOSAL_GET_INTERFACE (proposal)->get_icon_name (proposal); +} + +/** + * gtk_source_completion_proposal_get_gicon: + * @proposal: a #GtkSourceCompletionProposal. + * + * Gets the #GIcon for the icon of @proposal. + * + * Returns: (nullable) (transfer none): A #GIcon with the icon of @proposal. + * + * Since: 3.18 + */ +GIcon * +gtk_source_completion_proposal_get_gicon (GtkSourceCompletionProposal *proposal) +{ + g_return_val_if_fail (GTK_SOURCE_IS_COMPLETION_PROPOSAL (proposal), NULL); + + return GTK_SOURCE_COMPLETION_PROPOSAL_GET_INTERFACE (proposal)->get_gicon (proposal); +} + +/** * gtk_source_completion_proposal_get_info: * @proposal: a #GtkSourceCompletionProposal. * diff --git a/gtksourceview/gtksourcecompletionproposal.h b/gtksourceview/gtksourcecompletionproposal.h index 05d09690..0b59012d 100644 --- a/gtksourceview/gtksourcecompletionproposal.h +++ b/gtksourceview/gtksourcecompletionproposal.h @@ -47,6 +47,10 @@ typedef struct _GtkSourceCompletionProposalIface GtkSourceCompletionProposalIfac * By default, %NULL is returned. * @get_icon: The virtual function pointer for gtk_source_completion_proposal_get_icon(). * By default, %NULL is returned. + * @get_icon_name: The virtual function pointer for gtk_source_completion_proposal_get_icon_name(). + * By default, %NULL is returned. + * @get_gicon: The virtual function pointer for gtk_source_completion_proposal_get_gicon(). + * By default, %NULL is returned. * @get_info: The virtual function pointer for gtk_source_completion_proposal_get_info(). * By default, %NULL is returned. * @hash: The virtual function pointer for gtk_source_completion_proposal_hash(). @@ -62,19 +66,22 @@ struct _GtkSourceCompletionProposalIface GTypeInterface parent; /* Interface functions */ - gchar *(*get_label) (GtkSourceCompletionProposal *proposal); - gchar *(*get_markup) (GtkSourceCompletionProposal *proposal); - gchar *(*get_text) (GtkSourceCompletionProposal *proposal); + gchar *(*get_label) (GtkSourceCompletionProposal *proposal); + gchar *(*get_markup) (GtkSourceCompletionProposal *proposal); + gchar *(*get_text) (GtkSourceCompletionProposal *proposal); - GdkPixbuf *(*get_icon) (GtkSourceCompletionProposal *proposal); - gchar *(*get_info) (GtkSourceCompletionProposal *proposal); + GdkPixbuf *(*get_icon) (GtkSourceCompletionProposal *proposal); + const gchar *(*get_icon_name) (GtkSourceCompletionProposal *proposal); + GIcon *(*get_gicon) (GtkSourceCompletionProposal *proposal); - guint (*hash) (GtkSourceCompletionProposal *proposal); - gboolean (*equal) (GtkSourceCompletionProposal *proposal, - GtkSourceCompletionProposal *other); + gchar *(*get_info) (GtkSourceCompletionProposal *proposal); + + guint (*hash) (GtkSourceCompletionProposal *proposal); + gboolean (*equal) (GtkSourceCompletionProposal *proposal, + GtkSourceCompletionProposal *other); /* Signals */ - void (*changed) (GtkSourceCompletionProposal *proposal); + void (*changed) (GtkSourceCompletionProposal *proposal); }; GType gtk_source_completion_proposal_get_type (void) G_GNUC_CONST; @@ -84,6 +91,9 @@ gchar *gtk_source_completion_proposal_get_markup (GtkSourceCompletionProposal gchar *gtk_source_completion_proposal_get_text (GtkSourceCompletionProposal *proposal); GdkPixbuf *gtk_source_completion_proposal_get_icon (GtkSourceCompletionProposal *proposal); +const gchar *gtk_source_completion_proposal_get_icon_name (GtkSourceCompletionProposal *proposal); +GIcon *gtk_source_completion_proposal_get_gicon (GtkSourceCompletionProposal *proposal); + gchar *gtk_source_completion_proposal_get_info (GtkSourceCompletionProposal *proposal); void gtk_source_completion_proposal_changed (GtkSourceCompletionProposal *proposal); diff --git a/gtksourceview/gtksourcecompletionprovider.c b/gtksourceview/gtksourcecompletionprovider.c index 3f1f4f7c..1b3ad81b 100644 --- a/gtksourceview/gtksourcecompletionprovider.c +++ b/gtksourceview/gtksourcecompletionprovider.c @@ -50,6 +50,18 @@ gtk_source_completion_provider_get_icon_default (GtkSourceCompletionProvider *pr return NULL; } +static const gchar * +gtk_source_completion_provider_get_icon_name_default (GtkSourceCompletionProvider *provider) +{ + return NULL; +} + +static GIcon * +gtk_source_completion_provider_get_gicon_default (GtkSourceCompletionProvider *provider) +{ + return NULL; +} + static void gtk_source_completion_provider_populate_default (GtkSourceCompletionProvider *provider, GtkSourceCompletionContext *context) @@ -119,7 +131,10 @@ static void gtk_source_completion_provider_default_init (GtkSourceCompletionProviderIface *iface) { iface->get_name = gtk_source_completion_provider_get_name_default; + iface->get_icon = gtk_source_completion_provider_get_icon_default; + iface->get_icon_name = gtk_source_completion_provider_get_icon_name_default; + iface->get_gicon = gtk_source_completion_provider_get_gicon_default; iface->populate = gtk_source_completion_provider_populate_default; @@ -158,7 +173,7 @@ gtk_source_completion_provider_get_name (GtkSourceCompletionProvider *provider) * gtk_source_completion_provider_get_icon: * @provider: The #GtkSourceCompletionProvider * - * Get the icon of the provider. + * Get the #GdkPixbuf for the icon of the @provider. * * Returns: (nullable) (transfer none): The icon to be used for the provider, * or %NULL if the provider does not have a special icon. @@ -172,6 +187,44 @@ gtk_source_completion_provider_get_icon (GtkSourceCompletionProvider *provider) } /** + * gtk_source_completion_provider_get_icon_name: + * @provider: The #GtkSourceCompletionProvider + * + * Gets the icon name of @provider. + * + * Returns: (nullable) (transfer none): The icon name to be used for the provider, + * or %NULL if the provider does not have a special icon. + * + * Since: 3.18 + */ +const gchar * +gtk_source_completion_provider_get_icon_name (GtkSourceCompletionProvider *provider) +{ + g_return_val_if_fail (GTK_SOURCE_IS_COMPLETION_PROVIDER (provider), NULL); + + return GTK_SOURCE_COMPLETION_PROVIDER_GET_INTERFACE (provider)->get_icon_name (provider); +} + +/** + * gtk_source_completion_provider_get_gicon: + * @provider: The #GtkSourceCompletionProvider + * + * Gets the #GIcon for the icon of @provider. + * + * Returns: (nullable) (transfer none): The icon to be used for the provider, + * or %NULL if the provider does not have a special icon. + * + * Since: 3.18 + */ +GIcon * +gtk_source_completion_provider_get_gicon (GtkSourceCompletionProvider *provider) +{ + g_return_val_if_fail (GTK_SOURCE_IS_COMPLETION_PROVIDER (provider), NULL); + + return GTK_SOURCE_COMPLETION_PROVIDER_GET_INTERFACE (provider)->get_gicon (provider); +} + +/** * gtk_source_completion_provider_populate: * @provider: a #GtkSourceCompletionProvider. * @context: a #GtkSourceCompletionContext. diff --git a/gtksourceview/gtksourcecompletionprovider.h b/gtksourceview/gtksourcecompletionprovider.h index e6a1e700..f1aa173f 100644 --- a/gtksourceview/gtksourcecompletionprovider.h +++ b/gtksourceview/gtksourcecompletionprovider.h @@ -43,6 +43,10 @@ typedef struct _GtkSourceCompletionProviderIface GtkSourceCompletionProviderIfac * Must be implemented. * @get_icon: The virtual function pointer for gtk_source_completion_provider_get_icon(). * By default, %NULL is returned. + * @get_icon_name: The virtual function pointer for gtk_source_completion_provider_get_icon_name(). + * By default, %NULL is returned. + * @get_gicon: The virtual function pointer for gtk_source_completion_provider_get_gicon(). + * By default, %NULL is returned. * @populate: The virtual function pointer for gtk_source_completion_provider_populate(). * Add no proposals by default. * @match: The virtual function pointer for gtk_source_completion_provider_match(). @@ -69,7 +73,11 @@ struct _GtkSourceCompletionProviderIface GTypeInterface g_iface; gchar *(*get_name) (GtkSourceCompletionProvider *provider); + GdkPixbuf *(*get_icon) (GtkSourceCompletionProvider *provider); + const gchar *(*get_icon_name) (GtkSourceCompletionProvider *provider); + GIcon *(*get_gicon) (GtkSourceCompletionProvider *provider); + void (*populate) (GtkSourceCompletionProvider *provider, GtkSourceCompletionContext *context); @@ -104,6 +112,10 @@ gchar *gtk_source_completion_provider_get_name (GtkSourceCompletionProvider *pr GdkPixbuf *gtk_source_completion_provider_get_icon (GtkSourceCompletionProvider *provider); +const gchar *gtk_source_completion_provider_get_icon_name (GtkSourceCompletionProvider *provider); + +GIcon *gtk_source_completion_provider_get_gicon (GtkSourceCompletionProvider *provider); + void gtk_source_completion_provider_populate (GtkSourceCompletionProvider *provider, GtkSourceCompletionContext *context); |