[gnome-builder] gui: give IdeApplicationAddin an activate callback
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder] gui: give IdeApplicationAddin an activate callback
- Date: Thu, 10 Jan 2019 22:20:38 +0000 (UTC)
commit 709387cb75724f55d50cbc0d8a51834da2359c50
Author: Christian Hergert <chergert redhat com>
Date: Thu Jan 10 14:20:16 2019 -0800
gui: give IdeApplicationAddin an activate callback
src/libide/gui/ide-application-addin.c | 21 +++++++++++++++++++++
src/libide/gui/ide-application-addin.h | 5 +++++
src/libide/gui/ide-application.c | 21 ++++++++++++++++++++-
3 files changed, 46 insertions(+), 1 deletion(-)
---
diff --git a/src/libide/gui/ide-application-addin.c b/src/libide/gui/ide-application-addin.c
index 557832e0e..b5e5bee6d 100644
--- a/src/libide/gui/ide-application-addin.c
+++ b/src/libide/gui/ide-application-addin.c
@@ -63,6 +63,27 @@ ide_application_addin_default_init (IdeApplicationAddinInterface *iface)
iface->unload = ide_application_addin_real_unload;
}
+/**
+ * ide_application_addin_activate:
+ * @self: a #IdeApplicationAddin
+ * @application: an #ideApplication
+ *
+ * This function is activated when the GApplication::activate signal is
+ * emitted.
+ *
+ * Since: 3.32
+ */
+void
+ide_application_addin_activate (IdeApplicationAddin *self,
+ IdeApplication *application)
+{
+ g_return_if_fail (IDE_IS_APPLICATION_ADDIN (self));
+ g_return_if_fail (IDE_IS_APPLICATION (application));
+
+ if (IDE_APPLICATION_ADDIN_GET_IFACE (self)->activate)
+ IDE_APPLICATION_ADDIN_GET_IFACE (self)->activate (self, application);
+}
+
/**
* ide_application_addin_load:
* @self: An #IdeApplicationAddin.
diff --git a/src/libide/gui/ide-application-addin.h b/src/libide/gui/ide-application-addin.h
index 5551cd2e7..400a822b8 100644
--- a/src/libide/gui/ide-application-addin.h
+++ b/src/libide/gui/ide-application-addin.h
@@ -53,6 +53,8 @@ struct _IdeApplicationAddinInterface
IdeApplication *application);
void (*unload) (IdeApplicationAddin *self,
IdeApplication *application);
+ void (*activate) (IdeApplicationAddin *self,
+ IdeApplication *application);
void (*add_option_entries) (IdeApplicationAddin *self,
IdeApplication *application);
void (*handle_command_line) (IdeApplicationAddin *self,
@@ -64,6 +66,9 @@ struct _IdeApplicationAddinInterface
IdeWorkbench *workbench);
};
+IDE_AVAILABLE_IN_3_32
+void ide_application_addin_activate (IdeApplicationAddin *self,
+ IdeApplication *application);
IDE_AVAILABLE_IN_3_32
void ide_application_addin_load (IdeApplicationAddin *self,
IdeApplication *application);
diff --git a/src/libide/gui/ide-application.c b/src/libide/gui/ide-application.c
index b19e96c4b..e81a70b9b 100644
--- a/src/libide/gui/ide-application.c
+++ b/src/libide/gui/ide-application.c
@@ -228,6 +228,20 @@ ide_application_activate_worker (IdeApplication *self)
IDE_EXIT;
}
+static void
+ide_application_activate_cb (PeasExtensionSet *set,
+ PeasPluginInfo *plugin_info,
+ PeasExtension *exten,
+ gpointer user_data)
+{
+ g_assert (PEAS_IS_EXTENSION_SET (set));
+ g_assert (plugin_info != NULL);
+ g_assert (IDE_IS_APPLICATION_ADDIN (exten));
+ g_assert (IDE_IS_APPLICATION (user_data));
+
+ ide_application_addin_activate (IDE_APPLICATION_ADDIN (exten), user_data);
+}
+
static void
ide_application_activate (GApplication *app)
{
@@ -242,12 +256,17 @@ ide_application_activate (GApplication *app)
if (ide_str_equal0 (self->type, "worker"))
{
ide_application_activate_worker (self);
- return;
+ IDE_EXIT;
}
if ((window = gtk_application_get_active_window (GTK_APPLICATION (self))))
ide_gtk_window_present (window);
+ if (self->addins != NULL)
+ peas_extension_set_foreach (self->addins,
+ ide_application_activate_cb,
+ self);
+
IDE_EXIT;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]