[anjal] Sync before we quit.
- From: Srinivasa Ragavan <sragavan src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [anjal] Sync before we quit.
- Date: Mon, 4 Jan 2010 19:21:12 +0000 (UTC)
commit 91c964555347c41edd2589b3666c2e4be7d0cb6f
Author: Srinivasa Ragavan <sragavan gnome org>
Date: Tue Jan 5 00:49:36 2010 +0530
Sync before we quit.
src/module/anjal-shell-view-private.c | 44 +++++++++++++++++++++++++++++++++
src/module/anjal-shell-view-private.h | 3 ++
2 files changed, 47 insertions(+), 0 deletions(-)
---
diff --git a/src/module/anjal-shell-view-private.c b/src/module/anjal-shell-view-private.c
index b7108cc..a48784e 100644
--- a/src/module/anjal-shell-view-private.c
+++ b/src/module/anjal-shell-view-private.c
@@ -153,6 +153,40 @@ anjal_shell_view_private_init (AnjalShellView *mail_shell_view,
}
+static void
+mail_shell_view_prepare_for_quit_done_cb (CamelFolder *folder,
+ gpointer user_data)
+{
+ g_object_unref (E_ACTIVITY (user_data));
+}
+
+static void
+mail_shell_view_prepare_for_quit_cb (AnjalShellView *mail_shell_view,
+ EActivity *activity)
+{
+ CamelFolder *folder;
+ AnjalShellSidebar *mail_shell_sidebar;
+ EMFolderTree *folder_tree;
+
+ mail_shell_sidebar = mail_shell_view->priv->mail_shell_sidebar;
+ folder_tree = anjal_shell_sidebar_get_folder_tree (mail_shell_sidebar);
+ folder = em_folder_tree_get_selected_folder (folder_tree);
+
+ /* If we got here, it means the application is shutting down
+ * and this is the last EMailShellView instance. Synchronize
+ * the currently selected folder before we terminate. */
+
+
+ if (folder == NULL)
+ return;
+
+ mail_sync_folder (
+ folder,
+ mail_shell_view_prepare_for_quit_done_cb,
+ g_object_ref (activity));
+}
+
+
void
anjal_shell_view_private_constructed (AnjalShellView *mail_shell_view)
{
@@ -237,6 +271,16 @@ anjal_shell_view_private_constructed (AnjalShellView *mail_shell_view)
anjal_shell_view_actions_init (mail_shell_view);
anjal_shell_view_update_search_filter (mail_shell_view);
+ /* Need to keep the handler ID so we can disconnect it in
+ * dispose(). The shell outlives us and we don't want it
+ * invoking callbacks on finalized shell views. */
+ priv->prepare_for_quit_handler_id =
+ g_signal_connect_swapped (
+ shell, "prepare-for-quit",
+ G_CALLBACK
+ (mail_shell_view_prepare_for_quit_cb),
+ mail_shell_view);
+
/* Populate built-in rules for search entry popup menu.
* Keep the assertions, please. If the conditions aren't
* met we're going to crash anyway, just more mysteriously. */
diff --git a/src/module/anjal-shell-view-private.h b/src/module/anjal-shell-view-private.h
index 0204d24..53b3226 100644
--- a/src/module/anjal-shell-view-private.h
+++ b/src/module/anjal-shell-view-private.h
@@ -144,6 +144,9 @@ struct _AnjalShellViewPrivate {
/* Filter rules correspond to the search entry menu. */
EFilterRule *search_rules[MAIL_NUM_SEARCH_RULES];
+ /* EShell::prepare-for-quit */
+ gulong prepare_for_quit_handler_id;
+
guint show_deleted : 1;
AnjalMailView *view;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]