notmuch search: Fix thread dates to come only from matched messages.
authorCarl Worth <cworth@cworth.org>
Fri, 13 Nov 2009 07:10:04 +0000 (23:10 -0800)
committerCarl Worth <cworth@cworth.org>
Fri, 13 Nov 2009 07:10:04 +0000 (23:10 -0800)
We were properly sorting the threads based only on matched messages,
but we were displaying the date based on the total messages in the
thread, which led to inconsistent and very confusing results.

lib/thread.cc

index ffecc9d0d558822ca8a1c30566664d14e7cb1858..f2618ace756b7046899d4f843749aee138aa584b 100644 (file)
@@ -111,15 +111,24 @@ _thread_add_message (notmuch_thread_t *thread,
        g_hash_table_insert (thread->tags, xstrdup (tag), NULL);
     }
 
+    thread->total_messages++;
+}
+
+static void
+_thread_add_matched_message (notmuch_thread_t *thread,
+                            notmuch_message_t *message)
+{
+    time_t date;
+
     date = notmuch_message_get_date (message);
 
-    if (date < thread->oldest || ! thread->total_messages)
+    if (date < thread->oldest || ! thread->matched_messages)
        thread->oldest = date;
 
-    if (date > thread->newest || ! thread->total_messages)
+    if (date > thread->newest || ! thread->matched_messages)
        thread->newest = date;
 
-    thread->total_messages++;
+    thread->matched_messages++;
 }
 
 /* Create a new notmuch_thread_t object for the given thread ID,
@@ -201,7 +210,7 @@ _notmuch_thread_create (void *ctx,
         notmuch_messages_has_more (messages);
         notmuch_messages_advance (messages))
     {
-       thread->matched_messages++;
+       _thread_add_matched_message (thread, notmuch_messages_get (messages));
     }
 
     notmuch_query_destroy (matched_query);