evolution-data-server r9392 - trunk/camel/providers/imap



Author: sragavan
Date: Tue Aug 19 05:29:58 2008
New Revision: 9392
URL: http://svn.gnome.org/viewvc/evolution-data-server?rev=9392&view=rev

Log:
2008-08-19  Srinivasa Ragavan  <sragavan novell com>

	* camel/providers/imap/camel-imap-folder.c: Refresh message list when
	expunged.


Modified:
   trunk/camel/providers/imap/ChangeLog
   trunk/camel/providers/imap/camel-imap-folder.c

Modified: trunk/camel/providers/imap/camel-imap-folder.c
==============================================================================
--- trunk/camel/providers/imap/camel-imap-folder.c	(original)
+++ trunk/camel/providers/imap/camel-imap-folder.c	Tue Aug 19 05:29:58 2008
@@ -1477,7 +1477,10 @@
 	int uid = 0;
 	char *set;
 	gboolean full_expunge = (store->capabilities & IMAP_CAPABILITY_UIDPLUS) == 0;
-	
+	CamelFolderChangeInfo *changes;
+	int i;
+	GSList *list=NULL;
+
 	CAMEL_SERVICE_REC_LOCK (store, connect_lock);
 
 	if ((store->capabilities & IMAP_CAPABILITY_UIDPLUS) == 0) {
@@ -1530,6 +1533,21 @@
 	}
 
 	CAMEL_SERVICE_REC_UNLOCK (store, connect_lock);
+
+	changes = camel_folder_change_info_new ();
+	for (i = 0; i < uids->len; i++) {
+		camel_folder_summary_remove_uid_fast (folder->summary, uids->pdata[i]);
+		camel_folder_change_info_remove_uid (changes, uids->pdata[i]);
+		list = g_slist_prepend (list, (gpointer) uids->pdata[i]);
+		/* We intentionally don't remove it from the cache because
+		 * the cached data may be useful in replaying a COPY later.
+		 */
+	}
+	camel_db_delete_uids (folder->cdb, folder->full_name, list, ex);
+	g_slist_free (list);
+	camel_folder_summary_save_to_db (folder->summary, ex);
+	camel_object_trigger_event (CAMEL_OBJECT (folder), "folder_changed", changes);
+	camel_folder_change_info_free (changes);
 }
 
 static void



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]