From 25597a3be248ce035c6efaedfa02fc911e9962b6 Mon Sep 17 00:00:00 2001 From: Srinivasa Ragavan Date: Tue, 3 Jul 2007 04:45:33 +0000 Subject: ** Added a hook event after the shell is started. svn path=/trunk/; revision=33742 --- shell/ChangeLog | 8 ++++++++ shell/e-shell.c | 8 ++++++++ shell/es-event.c | 11 +++++++++++ shell/es-event.h | 11 ++++++++++- 4 files changed, 37 insertions(+), 1 deletion(-) diff --git a/shell/ChangeLog b/shell/ChangeLog index d39e8241df..63356b1497 100644 --- a/shell/ChangeLog +++ b/shell/ChangeLog @@ -1,3 +1,11 @@ +2007-07-03 Srinivasa Ragavan + + ** Added a hook event after the shell is started. + + * e-shell.c: (e_shell_create_window): + * es-event.c: (es_event_target_new_shell): + * es-event.h: + 2007-06-18 Srinivasa Ragavan ** Fix for bug #448201 from Gabor Kelemen diff --git a/shell/e-shell.c b/shell/e-shell.c index c6b380a1ec..915e40d491 100644 --- a/shell/e-shell.c +++ b/shell/e-shell.c @@ -76,6 +76,7 @@ static void set_line_status_complete(EvolutionListener *el, void *data); #define PARENT_TYPE bonobo_object_get_type () static BonoboObjectClass *parent_class = NULL; +static gboolean session_started = FALSE; struct _EShellPrivate { /* IID for registering the object on OAF. */ @@ -946,6 +947,13 @@ e_shell_create_window (EShell *shell, set_interactive (shell, TRUE); + if (!session_started) { + ESEvent *ese; + + session_started = TRUE; + ese = es_event_peek(); + e_event_emit((EEvent *)ese, "started.done", (EEventTarget *)es_event_target_new_shell(ese, shell)); + } return window; } diff --git a/shell/es-event.c b/shell/es-event.c index 72a05931bd..f48e0c6270 100644 --- a/shell/es-event.c +++ b/shell/es-event.c @@ -129,6 +129,16 @@ es_event_target_new_state(ESEvent *eme, int state) return t; } +ESEventTargetShell * +es_event_target_new_shell(ESEvent *eme, EShell *shell) +{ + ESEventTargetShell *t = e_event_target_new(&eme->event, ES_EVENT_TARGET_SHELL, sizeof(*t)); + + t->shell = shell; + + return t; +} + ESEventTargetUpgrade * es_event_target_new_upgrade(ESEvent *eme, int major, int minor, int revision) { @@ -155,6 +165,7 @@ static const EEventHookTargetMask emeh_state_masks[] = { static const EEventHookTargetMap emeh_targets[] = { { "state", ES_EVENT_TARGET_STATE, emeh_state_masks }, { "upgrade", ES_EVENT_TARGET_UPGRADE, NULL }, + { "shell", ES_EVENT_TARGET_SHELL, NULL }, { 0 } }; diff --git a/shell/es-event.h b/shell/es-event.h index e857b97c1a..ef3cb2c618 100644 --- a/shell/es-event.h +++ b/shell/es-event.h @@ -26,6 +26,7 @@ #include #include "e-util/e-event.h" +#include "e-shell.h" #ifdef __cplusplus extern "C" { @@ -38,7 +39,8 @@ typedef struct _ESEventClass ESEventClass; /* Current target description */ enum _es_event_target_t { ES_EVENT_TARGET_STATE, - ES_EVENT_TARGET_UPGRADE + ES_EVENT_TARGET_UPGRADE, + ES_EVENT_TARGET_SHELL }; /* Flags that qualify TARGET_STATE */ @@ -49,6 +51,13 @@ enum { typedef struct _ESEventTargetState ESEventTargetState; typedef struct _ESEventTargetUpgrade ESEventTargetUpgrade; +typedef struct _ESEventTargetShell ESEventTargetShell; + +struct _ESEventTargetShell { + EEventTarget target; + + EShell *shell; +}; struct _ESEventTargetState { EEventTarget target; -- cgit v1.2.3