aboutsummaryrefslogtreecommitdiffstats
path: root/shell/e-shell.c
diff options
context:
space:
mode:
Diffstat (limited to 'shell/e-shell.c')
-rw-r--r--shell/e-shell.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/shell/e-shell.c b/shell/e-shell.c
index c6b2f782e3..84c4ddad85 100644
--- a/shell/e-shell.c
+++ b/shell/e-shell.c
@@ -28,6 +28,7 @@
#include "e-util/e-dialog-utils.h"
+#include "e-activity-handler.h"
#include "e-setup.h"
#include "e-shell-constants.h"
#include "e-shell-settings-dialog.h"
@@ -89,6 +90,9 @@ struct _EShellPrivate {
/* Settings Dialog */
GtkWidget *settings_dialog;
+
+ /* The handler for the ::Activity interface. */
+ EActivityHandler *activity_handler; /* <aggregate> */
/* Whether the shell is succesfully initialized. This is needed during
the start-up sequence, to avoid CORBA calls to do make wrong things
@@ -135,6 +139,18 @@ get_config_start_offline (void)
return value;
}
+/* Set up the ::Activity interface. */
+static void
+setup_activity_interface (EShell *shell)
+{
+ EActivityHandler *activity_handler;
+
+ activity_handler = e_activity_handler_new ();
+
+ bonobo_object_add_interface (BONOBO_OBJECT (shell), BONOBO_OBJECT (activity_handler));
+ shell->priv->activity_handler = activity_handler;
+}
+
/* Interactivity handling. */
@@ -333,6 +349,8 @@ create_window (EShell *shell,
g_signal_connect (window, "delete_event", G_CALLBACK (window_delete_event_cb), shell);
g_object_weak_ref (G_OBJECT (window), window_weak_notify, shell);
+ e_activity_handler_attach_task_bar (priv->activity_handler, E_TASK_BAR (e_shell_window_peek_task_bar (window)));
+
shell->priv->windows = g_list_prepend (shell->priv->windows, window);
g_signal_emit (shell, signals[NEW_WINDOW_CREATED], 0, window);
@@ -389,6 +407,9 @@ impl_dispose (GObject *object)
priv->settings_dialog = NULL;
}
+ /* No unreffing for this as it is aggregate. */
+ /* bonobo_object_unref (BONOBO_OBJECT (priv->activity_handler)); */
+
(* G_OBJECT_CLASS (parent_class)->dispose) (object);
}
@@ -473,6 +494,8 @@ e_shell_init (EShell *shell)
priv->user_creatable_items_handler = e_user_creatable_items_handler_new (priv->component_registry);
shell->priv = priv;
+
+ setup_activity_interface (shell);
}