aboutsummaryrefslogtreecommitdiffstats
path: root/shell
diff options
context:
space:
mode:
Diffstat (limited to 'shell')
-rw-r--r--shell/e-shell-window-actions.c1
-rw-r--r--shell/e-shell.c18
-rw-r--r--shell/e-shell.h5
-rw-r--r--shell/main.c24
4 files changed, 30 insertions, 18 deletions
diff --git a/shell/e-shell-window-actions.c b/shell/e-shell-window-actions.c
index 348daae89e..38f33d99e9 100644
--- a/shell/e-shell-window-actions.c
+++ b/shell/e-shell-window-actions.c
@@ -1781,7 +1781,6 @@ shell_window_extract_actions (EShellWindow *shell_window,
{
const gchar *current_view;
GList *match_list = NULL;
- GList *primary = NULL;
GList *iter;
/* Pick out the actions from the source list that are tagged
diff --git a/shell/e-shell.c b/shell/e-shell.c
index c875dcb5cf..d6884b0a69 100644
--- a/shell/e-shell.c
+++ b/shell/e-shell.c
@@ -62,6 +62,7 @@ enum {
LAST_SIGNAL
};
+EShell *default_shell = NULL;
static gpointer parent_class;
static guint signals[LAST_SIGNAL];
@@ -362,8 +363,9 @@ shell_class_init (EShellClass *class)
G_OBJECT_CLASS_TYPE (object_class),
G_SIGNAL_RUN_FIRST | G_SIGNAL_DETAILED | G_SIGNAL_ACTION,
0, NULL, NULL,
- g_cclosure_marshal_VOID__VOID,
- G_TYPE_NONE, 0);
+ g_cclosure_marshal_VOID__POINTER,
+ G_TYPE_NONE, 1,
+ G_TYPE_POINTER);
signals[HANDLE_URI] = g_signal_new (
"handle-uri",
@@ -451,9 +453,12 @@ e_shell_get_type (void)
}
EShell *
-e_shell_new (gboolean online_mode)
+e_shell_get_default (void)
{
- return g_object_new (E_TYPE_SHELL, "online-mode", online_mode, NULL);
+ /* Emit a warning if we call this too early. */
+ g_return_val_if_fail (default_shell != NULL, NULL);
+
+ return default_shell;
}
GList *
@@ -626,7 +631,8 @@ e_shell_get_preferences_window (void)
void
e_shell_event (EShell *shell,
- const gchar *event_name)
+ const gchar *event_name,
+ gpointer event_data)
{
GQuark detail;
@@ -634,7 +640,7 @@ e_shell_event (EShell *shell,
g_return_if_fail (event_name != NULL);
detail = g_quark_from_string (event_name);
- g_signal_emit (shell, signals[EVENT], detail);
+ g_signal_emit (shell, signals[EVENT], detail, event_data);
}
gboolean
diff --git a/shell/e-shell.h b/shell/e-shell.h
index 7bee6b9fff..2c942097c5 100644
--- a/shell/e-shell.h
+++ b/shell/e-shell.h
@@ -81,7 +81,7 @@ enum _EShellLineStatus {
};
GType e_shell_get_type (void);
-EShell * e_shell_new (gboolean online);
+EShell * e_shell_get_default (void);
GList * e_shell_list_modules (EShell *shell);
const gchar * e_shell_get_canonical_name (EShell *shell,
const gchar *name);
@@ -104,7 +104,8 @@ void e_shell_set_line_status (EShell *shell,
EShellLineStatus status);
GtkWidget * e_shell_get_preferences_window (void);
void e_shell_event (EShell *shell,
- const gchar *event_name);
+ const gchar *event_name,
+ gpointer event_data);
gboolean e_shell_is_busy (EShell *shell);
gboolean e_shell_do_quit (EShell *shell);
gboolean e_shell_quit (EShell *shell);
diff --git a/shell/main.c b/shell/main.c
index 5d9405fcfe..47400798ab 100644
--- a/shell/main.c
+++ b/shell/main.c
@@ -96,11 +96,13 @@ static gboolean disable_eplugin = FALSE;
static gboolean disable_preview = FALSE;
static gboolean idle_cb (gchar **uris);
-static EShell *global_shell;
static char *requested_view = NULL;
static char *evolution_debug_log = NULL;
static gchar **remaining_args;
+/* Defined in <e-shell.h> */
+extern EShell *default_shell;
+
#ifdef KILL_PROCESS_CMD
static void
@@ -265,12 +267,15 @@ destroy_config (GConfClient *client)
static void
open_uris (gchar **uris)
{
+ EShell *shell;
guint ii;
g_return_if_fail (uris != NULL);
+ shell = e_shell_get_default ();
+
for (ii = 0; uris[ii] != NULL; ii++)
- if (!e_shell_handle_uri (global_shell, uris[ii]))
+ if (!e_shell_handle_uri (shell, uris[ii]))
g_warning ("Invalid URI: %s", uris[ii]);
}
@@ -279,6 +284,7 @@ open_uris (gchar **uris)
static gboolean
idle_cb (gchar **uris)
{
+ EShell *shell;
GtkWidget *shell_window;
const gchar *initial_view;
@@ -293,8 +299,8 @@ idle_cb (gchar **uris)
return FALSE;
}
- initial_view = e_shell_get_canonical_name (
- global_shell, requested_view);
+ shell = e_shell_get_default ();
+ initial_view = e_shell_get_canonical_name (shell, requested_view);
if (initial_view != NULL) {
GConfClient *client;
@@ -306,7 +312,7 @@ idle_cb (gchar **uris)
g_object_unref (client);
}
- shell_window = e_shell_create_window (global_shell);
+ shell_window = e_shell_create_window (shell);
#if 0 /* MBARNES */
if (shell == NULL) {
@@ -481,7 +487,7 @@ master_client_die_cb (GnomeClient *client,
}
static void
-create_shell (void)
+create_default_shell (void)
{
EShell *shell;
GConfClient *conf_client;
@@ -510,7 +516,7 @@ create_shell (void)
}
}
- shell = e_shell_new (online_mode);
+ shell = g_object_new (E_TYPE_SHELL, "online-mode", online_mode, NULL);
g_signal_connect (
shell, "window-destroyed",
@@ -526,7 +532,7 @@ create_shell (void)
g_object_unref (conf_client);
- global_shell = shell;
+ default_shell = shell;
}
int
@@ -662,7 +668,7 @@ main (int argc, char **argv)
g_object_unref (client);
- create_shell ();
+ create_default_shell ();
gtk_main ();