diff options
-rw-r--r-- | camel/ChangeLog | 11 | ||||
-rw-r--r-- | camel/providers/imap/camel-imap-store.c | 10 | ||||
-rw-r--r-- | camel/providers/local/camel-mbox-summary.c | 11 |
3 files changed, 23 insertions, 9 deletions
diff --git a/camel/ChangeLog b/camel/ChangeLog index 6f19e28d2d..0e91f8b820 100644 --- a/camel/ChangeLog +++ b/camel/ChangeLog @@ -1,3 +1,14 @@ +2001-10-17 <NotZed@Ximian.com> + + * providers/imap/camel-imap-store.c (get_folder_info_online): + (parse_list_response_as_folder_info): Patch from Danw, Use unread + count of -1 to mark unflagged messages. Make sure any folder we + dont lookup explicitly is marked as -1. Should fix #9947 and + friends. + + * providers/local/camel-mbox-summary.c (mbox_summary_sync): Only + touch the summary if the timestamp or size changed. + 2001-10-17 Jeffrey Stedfast <fejj@ximian.com> * camel-filter-driver.c (camel_filter_driver_filter_message): Set diff --git a/camel/providers/imap/camel-imap-store.c b/camel/providers/imap/camel-imap-store.c index 4ad2021c64..6d996ffe9f 100644 --- a/camel/providers/imap/camel-imap-store.c +++ b/camel/providers/imap/camel-imap-store.c @@ -1281,7 +1281,7 @@ parse_list_response_as_folder_info (CamelImapStore *imap_store, fi->url = camel_url_to_string (url, 0); camel_url_free (url); - if (!(flags & IMAP_LIST_FLAG_UNMARKED)) + if (flags & IMAP_LIST_FLAG_UNMARKED) fi->unread_message_count = -1; return fi; @@ -1452,7 +1452,7 @@ get_folder_info_online (CamelStore *store, const char *top, fi->full_name = g_strdup ("INBOX"); fi->name = g_strdup ("INBOX"); fi->url = uri; - fi->unread_message_count = -1; + fi->unread_message_count = 0; g_ptr_array_add (folders, fi); } @@ -1480,7 +1480,7 @@ get_folder_info_online (CamelStore *store, const char *top, */ url = camel_url_new (fi->url, NULL); noselect = url ? camel_url_get_param (url, "noselect") : NULL; - if (fi->unread_message_count != -1 || (noselect && !g_strcasecmp (noselect, "yes"))) { + if (fi->unread_message_count == -1 || (noselect && !g_strcasecmp (noselect, "yes"))) { camel_url_free (url); continue; } @@ -1490,8 +1490,10 @@ get_folder_info_online (CamelStore *store, const char *top, * checking INBOX. */ if ((!(imap_store->parameters & IMAP_PARAM_CHECK_ALL)) - && (g_strcasecmp (fi->name, "INBOX") != 0)) + && (g_strcasecmp (fi->name, "INBOX") != 0)) { + fi->unread_message_count = -1; continue; + } /* For the current folder, poke it to check for new * messages and then report that number, rather than diff --git a/camel/providers/local/camel-mbox-summary.c b/camel/providers/local/camel-mbox-summary.c index 89cc831b4a..008b5d6026 100644 --- a/camel/providers/local/camel-mbox-summary.c +++ b/camel/providers/local/camel-mbox-summary.c @@ -399,8 +399,7 @@ mbox_summary_check(CamelLocalSummary *cls, CamelFolderChangeInfo *changes, Camel /* FIXME: move upstream? */ if (ret != -1) { - if (mbs->folder_size != st.st_size - || s->time != st.st_mtime) { + if (mbs->folder_size != st.st_size || s->time != st.st_mtime) { mbs->folder_size = st.st_size; s->time = st.st_mtime; camel_folder_summary_touch(s); @@ -876,9 +875,11 @@ mbox_summary_sync(CamelLocalSummary *cls, gboolean expunge, CamelFolderChangeInf return -1; } - camel_folder_summary_touch(s); - s->time = st.st_mtime; - mbs->folder_size = st.st_size; + if (mbs->folder_size != st.st_size || s->time != st.st_mtime) { + s->time = st.st_mtime; + mbs->folder_size = st.st_size; + camel_folder_summary_touch(s); + } return ((CamelLocalSummaryClass *)camel_mbox_summary_parent)->sync(cls, expunge, changeinfo, ex); } |