aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--shell/ChangeLog11
-rw-r--r--shell/e-shell-window.c10
-rw-r--r--shell/es-event.c11
-rw-r--r--shell/es-event.h11
4 files changed, 42 insertions, 1 deletions
diff --git a/shell/ChangeLog b/shell/ChangeLog
index 910bbb9ee8..7c26a8a006 100644
--- a/shell/ChangeLog
+++ b/shell/ChangeLog
@@ -1,3 +1,14 @@
+2008-04-07 Ondrej Jirman <megous@megous.com>
+
+ ** Fix for bug #525238
+
+ * e-shell-window.c: (switch_view):
+ * es-event.c:
+ * es-event.h:
+ Add new "component.activated" event. Event is emitted whenever
+ component is activated. ESEventTargetComponent contains an id
+ of the component being activated.
+
2008-03-25 Veerapuram Varadhan <vvaradhan@novell.com>
** Added configurable Proxy settings for Evolution.
diff --git a/shell/e-shell-window.c b/shell/e-shell-window.c
index 788aaf2004..887ced0c87 100644
--- a/shell/e-shell-window.c
+++ b/shell/e-shell-window.c
@@ -36,6 +36,7 @@
#include "e-shell-marshal.h"
#include "e-sidebar.h"
#include "es-menu.h"
+#include "es-event.h"
#include <gtk/gtkbutton.h>
#include <gtk/gtkhbox.h>
@@ -356,6 +357,15 @@ switch_view (EShellWindow *window, ComponentView *component_view)
g_object_unref (gconf_client);
+ /** @Event: Shell component activated or switched to.
+ * @Id: component.activated
+ * @Target: ESEventTargetComponent
+ *
+ * This event is emitted whenever the shell successfully activates component
+ * view.
+ */
+ e_event_emit ((EEvent *) es_event_peek (), "component.activated", (EEventTarget *) es_event_target_new_component (es_event_peek (), component_view->component_id));
+
g_signal_emit (window, signals[COMPONENT_CHANGED], 0);
}
diff --git a/shell/es-event.c b/shell/es-event.c
index 5d4c5366d8..78b601092e 100644
--- a/shell/es-event.c
+++ b/shell/es-event.c
@@ -152,6 +152,16 @@ es_event_target_new_upgrade(ESEvent *eme, int major, int minor, int revision)
return t;
}
+ESEventTargetComponent *
+es_event_target_new_component (ESEvent *eme, const char *id)
+{
+ ESEventTargetComponent *t = e_event_target_new (&eme->event, ES_EVENT_TARGET_COMPONENT, sizeof (*t));
+
+ t->id = id;
+
+ return t;
+}
+
/* ********************************************************************** */
static void *emeh_parent_class;
@@ -167,6 +177,7 @@ 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 },
+ { "component", ES_EVENT_TARGET_COMPONENT, NULL },
{ NULL }
};
diff --git a/shell/es-event.h b/shell/es-event.h
index 518fd44e52..10b74ef163 100644
--- a/shell/es-event.h
+++ b/shell/es-event.h
@@ -41,7 +41,8 @@ typedef struct _ESEventClass ESEventClass;
enum _es_event_target_t {
ES_EVENT_TARGET_STATE,
ES_EVENT_TARGET_UPGRADE,
- ES_EVENT_TARGET_SHELL
+ ES_EVENT_TARGET_SHELL,
+ ES_EVENT_TARGET_COMPONENT
};
/* Flags that qualify TARGET_STATE */
@@ -53,6 +54,7 @@ enum {
typedef struct _ESEventTargetState ESEventTargetState;
typedef struct _ESEventTargetUpgrade ESEventTargetUpgrade;
typedef struct _ESEventTargetShell ESEventTargetShell;
+typedef struct _ESEventTargetComponent ESEventTargetComponent;
struct _ESEventTargetShell {
EEventTarget target;
@@ -74,6 +76,12 @@ struct _ESEventTargetUpgrade {
int revision;
};
+struct _ESEventTargetComponent {
+ EEventTarget target;
+
+ const char *id;
+};
+
typedef struct _EEventItem ESEventItem;
/* The object */
@@ -94,6 +102,7 @@ ESEvent *es_event_peek(void);
ESEventTargetState *es_event_target_new_state(ESEvent *emp, int state);
ESEventTargetShell *es_event_target_new_shell(ESEvent *eme, struct _EShell *shell);
ESEventTargetUpgrade *es_event_target_new_upgrade(ESEvent *emp, int major, int minor, int revision);
+ESEventTargetComponent *es_event_target_new_component(ESEvent *eme, const char *id);
/* ********************************************************************** */