[gnome-builder] ctags: use load vfunc to initialize context
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder] ctags: use load vfunc to initialize context
- Date: Sat, 11 Mar 2017 10:10:16 +0000 (UTC)
commit 22d2c012ceefc27a12ff4e97afde106af9fa8d4c
Author: Christian Hergert <chergert redhat com>
Date: Sat Mar 11 01:57:57 2017 -0800
ctags: use load vfunc to initialize context
Now that we cannot guarantee that :context will be set before constructed
we need to use the load vfunc to attach things. This is much better/safer
anyway.
https://bugzilla.gnome.org/show_bug.cgi?id=779891
libide/sourceview/ide-source-view.c | 4 +++-
plugins/ctags/ide-ctags-completion-provider.c | 22 ++++++++++++++--------
2 files changed, 17 insertions(+), 9 deletions(-)
---
diff --git a/libide/sourceview/ide-source-view.c b/libide/sourceview/ide-source-view.c
index f1f7e21..218b7b7 100644
--- a/libide/sourceview/ide-source-view.c
+++ b/libide/sourceview/ide-source-view.c
@@ -1495,6 +1495,7 @@ ide_source_view__completion_provider_added (IdeExtensionSetAdapter *adapter,
PeasExtension *extension,
IdeSourceView *self)
{
+ IdeSourceViewPrivate *priv = ide_source_view_get_instance_private (self);
GtkSourceCompletion *completion;
g_assert (IDE_IS_SOURCE_VIEW (self));
@@ -1508,7 +1509,8 @@ ide_source_view__completion_provider_added (IdeExtensionSetAdapter *adapter,
GTK_SOURCE_COMPLETION_PROVIDER (extension),
NULL);
- ide_completion_provider_load (IDE_COMPLETION_PROVIDER (extension));
+ ide_completion_provider_load (IDE_COMPLETION_PROVIDER (extension),
+ ide_buffer_get_context (priv->buffer));
}
static void
diff --git a/plugins/ctags/ide-ctags-completion-provider.c b/plugins/ctags/ide-ctags-completion-provider.c
index 75a4909..3df0da5 100644
--- a/plugins/ctags/ide-ctags-completion-provider.c
+++ b/plugins/ctags/ide-ctags-completion-provider.c
@@ -28,14 +28,15 @@
#include "ide-ctags-service.h"
#include "ide-ctags-util.h"
-static void provider_iface_init (GtkSourceCompletionProviderIface *iface);
+static void provider_iface_init (GtkSourceCompletionProviderIface *iface);
+static void provider2_iface_init (IdeCompletionProviderInterface *iface);
G_DEFINE_DYNAMIC_TYPE_EXTENDED (IdeCtagsCompletionProvider,
ide_ctags_completion_provider,
IDE_TYPE_OBJECT,
0,
G_IMPLEMENT_INTERFACE (GTK_SOURCE_TYPE_COMPLETION_PROVIDER,
provider_iface_init)
- G_IMPLEMENT_INTERFACE (IDE_TYPE_COMPLETION_PROVIDER, NULL))
+ G_IMPLEMENT_INTERFACE (IDE_TYPE_COMPLETION_PROVIDER, provider2_iface_init))
void
ide_ctags_completion_provider_add_index (IdeCtagsCompletionProvider *self,
@@ -72,15 +73,15 @@ ide_ctags_completion_provider_add_index (IdeCtagsCompletionProvider *self,
}
static void
-ide_ctags_completion_provider_constructed (GObject *object)
+ide_ctags_completion_provider_load (IdeCompletionProvider *provider,
+ IdeContext *context)
{
- IdeCtagsCompletionProvider *self = (IdeCtagsCompletionProvider *)object;
- IdeContext *context;
+ IdeCtagsCompletionProvider *self = (IdeCtagsCompletionProvider *)provider;
IdeCtagsService *service;
- G_OBJECT_CLASS (ide_ctags_completion_provider_parent_class)->constructed (object);
+ g_assert (IDE_IS_CTAGS_COMPLETION_PROVIDER (self));
+ g_assert (IDE_IS_CONTEXT (context));
- context = ide_object_get_context (IDE_OBJECT (self));
service = ide_context_get_service_typed (context, IDE_TYPE_CTAGS_SERVICE);
ide_ctags_service_register_completion (service, self);
}
@@ -117,7 +118,6 @@ ide_ctags_completion_provider_class_init (IdeCtagsCompletionProviderClass *klass
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
- object_class->constructed = ide_ctags_completion_provider_constructed;
object_class->dispose = ide_ctags_completion_provider_dispose;
object_class->finalize = ide_ctags_completion_provider_finalize;
}
@@ -366,6 +366,12 @@ provider_iface_init (GtkSourceCompletionProviderIface *iface)
iface->activate_proposal = ide_ctags_completion_provider_activate_proposal;
}
+static void
+provider2_iface_init (IdeCompletionProviderInterface *iface)
+{
+ iface->load = ide_ctags_completion_provider_load;
+}
+
void
_ide_ctags_completion_provider_register_type (GTypeModule *module)
{
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]