summaryrefslogtreecommitdiff
path: root/src/eom-application.c
diff options
context:
space:
mode:
authorFelix Riemann <[email protected]>2012-08-12 15:53:18 +0200
committerraveit65 <[email protected]>2018-07-17 21:53:38 +0200
commitbb3b0c0a009cbf5f699a37c656b43bdc5a12b7b0 (patch)
tree38ed9f81943477b6f999d5fecf0c543c9d87a21c /src/eom-application.c
parent57506ffd5c8f99a2461c538c61ebe38653760dd7 (diff)
downloadeom-bb3b0c0a009cbf5f699a37c656b43bdc5a12b7b0.tar.bz2
eom-bb3b0c0a009cbf5f699a37c656b43bdc5a12b7b0.tar.xz
Add new plugin hook for per-application plugins
These will be loaded on application initialization and disabled once the application is disposed. origin commit: https://gitlab.gnome.org/GNOME/eog/commit/cdfe77e
Diffstat (limited to 'src/eom-application.c')
-rw-r--r--src/eom-application.c33
1 files changed, 33 insertions, 0 deletions
diff --git a/src/eom-application.c b/src/eom-application.c
index 6135ae1..1ab52d1 100644
--- a/src/eom-application.c
+++ b/src/eom-application.c
@@ -30,6 +30,7 @@
#include "eom-session.h"
#include "eom-window.h"
#include "eom-application.h"
+#include "eom-application-activatable.h"
#include "eom-util.h"
#include <string.h>
@@ -86,6 +87,9 @@ eom_application_finalize (GObject *object)
g_free (application->toolbars_file);
application->toolbars_file = NULL;
}
+
+ g_clear_object (&application->extensions);
+
if (application->plugin_engine) {
g_object_unref (application->plugin_engine);
application->plugin_engine = NULL;
@@ -147,6 +151,24 @@ eom_application_class_init (EomApplicationClass *eom_application_class)
}
static void
+on_extension_added (PeasExtensionSet *set,
+ PeasPluginInfo *info,
+ PeasExtension *exten,
+ EomApplication *app)
+{
+ eom_application_activatable_activate (EOM_APPLICATION_ACTIVATABLE (exten));
+}
+
+static void
+on_extension_removed (PeasExtensionSet *set,
+ PeasPluginInfo *info,
+ PeasExtension *exten,
+ EomApplication *app)
+{
+ eom_application_activatable_deactivate (EOM_APPLICATION_ACTIVATABLE (exten));
+}
+
+static void
eom_application_init (EomApplication *eom_application)
{
const gchar *dot_dir = eom_util_dot_dir ();
@@ -175,6 +197,17 @@ eom_application_init (EomApplication *eom_application)
EGG_TB_MODEL_NOT_REMOVABLE);
eom_application_load_accelerators ();
+
+ eom_application->extensions = peas_extension_set_new (
+ PEAS_ENGINE (eom_application->plugin_engine),
+ EOM_TYPE_APPLICATION_ACTIVATABLE,
+ "app", EOM_APPLICATION (eom_application),
+ NULL);
+ peas_extension_set_call (eom_application->extensions, "activate");
+ g_signal_connect (eom_application->extensions, "extension-added",
+ G_CALLBACK (on_extension_added), eom_application);
+ g_signal_connect (eom_application->extensions, "extension-removed",
+ G_CALLBACK (on_extension_removed), eom_application);
}
/**