* Properly synchronizes the selected folder when closing the main window
authorSergio Villar Senin <svillar@igalia.com>
Tue, 22 Apr 2008 07:59:21 +0000 (07:59 +0000)
committerSergio Villar Senin <svillar@igalia.com>
Tue, 22 Apr 2008 07:59:21 +0000 (07:59 +0000)
pmo-trunk-r4445

src/maemo/modest-main-window.c
src/widgets/modest-folder-view.c

index d997f0b..f3890e6 100644 (file)
@@ -2828,8 +2828,27 @@ on_window_hide (GObject    *gobject,
 {
        g_return_if_fail (MODEST_IS_MAIN_WINDOW (gobject));
 
 {
        g_return_if_fail (MODEST_IS_MAIN_WINDOW (gobject));
 
-       if (!GTK_WIDGET_VISIBLE (gobject))
+       if (!GTK_WIDGET_VISIBLE (gobject)) {
+               TnyFolderStore *folder_store;
+               ModestMainWindowPrivate *priv;
+               
+               /* Remove the currently shown banners */
                remove_banners (MODEST_MAIN_WINDOW (gobject));
                remove_banners (MODEST_MAIN_WINDOW (gobject));
+
+               /* Force the folder view to sync the currently selected folder
+                  to save the read/unread status and to expunge messages */
+               priv = MODEST_MAIN_WINDOW_GET_PRIVATE (gobject);
+               folder_store = modest_folder_view_get_selected (priv->folder_view);
+               if (TNY_IS_FOLDER (folder_store)) {
+                       ModestMailOperation *mail_op;
+                       
+                       mail_op = modest_mail_operation_new (NULL);
+                       modest_mail_operation_queue_add (modest_runtime_get_mail_operation_queue (),
+                                                        mail_op);
+                       modest_mail_operation_sync_folder (mail_op, TNY_FOLDER (folder_store), FALSE);
+                       g_object_unref (mail_op);
+               }
+       }
 }
 
 static void
 }
 
 static void
index e189605..8a9ba72 100644 (file)
@@ -1111,7 +1111,6 @@ modest_folder_view_finalize (GObject *obj)
                priv->query = NULL;
        }
 
                priv->query = NULL;
        }
 
-/*     modest_folder_view_disable_next_folder_selection (MODEST_FOLDER_VIEW(obj)); */
        if (priv->folder_to_select) {
                g_object_unref (G_OBJECT(priv->folder_to_select));
                priv->folder_to_select = NULL;
        if (priv->folder_to_select) {
                g_object_unref (G_OBJECT(priv->folder_to_select));
                priv->folder_to_select = NULL;
@@ -1131,16 +1130,6 @@ modest_folder_view_finalize (GObject *obj)
        }
 
        if (priv->cur_folder_store) {
        }
 
        if (priv->cur_folder_store) {
-               if (TNY_IS_FOLDER(priv->cur_folder_store)) {
-                       ModestMailOperation *mail_op;
-
-                       mail_op = modest_mail_operation_new (NULL);
-                       modest_mail_operation_queue_add (modest_runtime_get_mail_operation_queue (),
-                                                        mail_op);
-                       modest_mail_operation_sync_folder (mail_op, TNY_FOLDER (priv->cur_folder_store), FALSE);
-                       g_object_unref (mail_op);
-               }
-
                g_object_unref (priv->cur_folder_store);
                priv->cur_folder_store = NULL;
        }
                g_object_unref (priv->cur_folder_store);
                priv->cur_folder_store = NULL;
        }