aboutsummaryrefslogtreecommitdiffstats
path: root/shell
diff options
context:
space:
mode:
authorMatthew Barnes <mbarnes@redhat.com>2009-06-30 22:47:59 +0800
committerMatthew Barnes <mbarnes@redhat.com>2009-06-30 22:47:59 +0800
commit8dc6bbd250891bcef9130a789c9b74a01be7f1cb (patch)
treeabf0e8555b04f6748473ac8215e26fb7d6c44d35 /shell
parent99126d46e61ce19a72acb3dd8498729b025339ec (diff)
downloadgsoc2013-evolution-8dc6bbd250891bcef9130a789c9b74a01be7f1cb.tar.gz
gsoc2013-evolution-8dc6bbd250891bcef9130a789c9b74a01be7f1cb.tar.zst
gsoc2013-evolution-8dc6bbd250891bcef9130a789c9b74a01be7f1cb.zip
Get the "startup-wizard" plugin working again.
Diffstat (limited to 'shell')
-rw-r--r--shell/e-shell-migrate.c19
-rw-r--r--shell/e-shell-window.c2
-rw-r--r--shell/e-shell.c6
-rw-r--r--shell/main.c18
4 files changed, 32 insertions, 13 deletions
diff --git a/shell/e-shell-migrate.c b/shell/e-shell-migrate.c
index 53df4106b4..f18c84685d 100644
--- a/shell/e-shell-migrate.c
+++ b/shell/e-shell-migrate.c
@@ -32,6 +32,8 @@
#include "e-util/e-fsutils.h"
#include "e-util/e-util.h"
+#include "es-event.h"
+
#define GCONF_VERSION_KEY "/apps/evolution/version"
#define GCONF_LAST_VERSION_KEY "/apps/evolution/last_version"
@@ -195,6 +197,7 @@ fail:
gboolean
e_shell_migrate_attempt (EShell *shell)
{
+ ESEvent *ese;
GConfClient *client;
const gchar *key;
const gchar *old_data_dir;
@@ -283,7 +286,7 @@ check_old:
string = g_strdup_printf (
"%d.%d.%d", last_major, last_minor, last_micro);
response = e_error_run (
- NULL, "shel:upgrade-remove-1-4", string, NULL);
+ NULL, "shell:upgrade-remove-1-4", string, NULL);
g_free (string);
switch (response) {
@@ -319,6 +322,20 @@ check_old:
gconf_client_set_string (client, key, string, NULL);
g_free (string);
+ /** @Event: Shell attempted upgrade
+ * @Shell: an #EShell
+ * @Id: upgrade.done
+ * @Target: ESMenuTargetState
+ *
+ * This event is emitted whenever the shell successfully attempts
+ * an upgrade.
+ **/
+ ese = es_event_peek ();
+ e_event_emit (
+ (EEvent *) ese, "upgrade.done",
+ (EEventTarget *) es_event_target_new_upgrade (
+ ese, curr_major, curr_minor, curr_micro));
+
return TRUE;
}
diff --git a/shell/e-shell-window.c b/shell/e-shell-window.c
index bb913f74ea..f22d30e1fd 100644
--- a/shell/e-shell-window.c
+++ b/shell/e-shell-window.c
@@ -23,8 +23,6 @@
#include <gconf/gconf-client.h>
-#include <es-event.h>
-
#include <e-util/e-plugin-ui.h>
#include <e-util/e-util-private.h>
diff --git a/shell/e-shell.c b/shell/e-shell.c
index 547432bc2d..c9e8d46317 100644
--- a/shell/e-shell.c
+++ b/shell/e-shell.c
@@ -525,6 +525,12 @@ shell_constructed (GObject *object)
shell_load_modules (E_SHELL (object));
shell_create_backends (E_SHELL (object));
+
+ /* e_shell_migrate_attempt() leads to code paths that rely on
+ * e_shell_get_default(), so set the default shell first. */
+ if (default_shell == NULL)
+ default_shell = g_object_ref (object);
+
e_shell_migrate_attempt (E_SHELL (object));
}
diff --git a/shell/main.c b/shell/main.c
index 438f09d7a9..7a04cee149 100644
--- a/shell/main.c
+++ b/shell/main.c
@@ -279,8 +279,6 @@ show_development_warning(void)
gtk_widget_destroy (warning_dialog);
- idle_cb (NULL);
-
return skip;
}
@@ -631,7 +629,11 @@ create_default_shell (void)
g_object_unref (conf_client);
- default_shell = shell;
+ /* EShell keeps its own reference to the first instance for use
+ * in e_shell_get_default(), so it's safe to unreference here. */
+ g_object_unref (shell);
+
+ g_idle_add ((GSourceFunc) idle_cb, remaining_args);
}
gint
@@ -662,7 +664,7 @@ main (gint argc, gchar **argv)
gtk_init_with_args (
&argc, &argv,
_("- The Evolution PIM and Email Client"),
- entries, GETTEXT_PACKAGE, &error);
+ entries, (gchar *) GETTEXT_PACKAGE, &error);
if (error != NULL) {
g_printerr ("%s\n", error->message);
g_error_free (error);
@@ -756,11 +758,6 @@ main (gint argc, gchar **argv)
gconf_client_set_bool (
client, SKIP_WARNING_DIALOG_KEY,
show_development_warning (), NULL);
- else
- g_idle_add ((GSourceFunc) idle_cb, remaining_args);
-
-#else
- g_idle_add ((GSourceFunc) idle_cb, remaining_args);
#endif
g_object_unref (client);
@@ -769,7 +766,8 @@ main (gint argc, gchar **argv)
gtk_main ();
- /* Emit a warning if the shell is not finalized. */
+ /* Drop what should be the last reference to the shell.
+ * Emit a warning if references are leaking somewhere. */
g_object_unref (default_shell);
if (E_IS_SHELL (default_shell))
g_warning ("Shell not finalized on exit");