have _notmuch_thread_create mark which messages matched the query
authorBart Trojanowski <bart@jukie.net>
Wed, 25 Nov 2009 04:28:39 +0000 (23:28 -0500)
committerBart Trojanowski <bart@jukie.net>
Wed, 25 Nov 2009 05:46:44 +0000 (00:46 -0500)
When _notmuch_thread_create() is given a query string, it can return more
messages than just those matching the query.  To distinguish those that
matched the query expression, the MATCHING_SEARCH flag is set
appropriately.

Signed-off-by: Bart Trojanowski <bart@jukie.net>
lib/notmuch.h
lib/thread.cc

index c232c5805dd3e4f3a370b49a79d2452532754b4e..3974820c0d3573305f8b5a168e8a414fd357bdfa 100644 (file)
@@ -686,6 +686,7 @@ notmuch_message_get_filename (notmuch_message_t *message);
 
 /* Message flags */
 typedef enum _notmuch_message_flag {
+    NOTMUCH_MSG_FLAG_MATCHING_SEARCH,
 } notmuch_message_flag_t;
 
 /* Get a value of a flag for the email corresponding to 'message'. */
index 58d88c2d1597145276a83807165d6939ab340bd2..9e4cb5c89174cc697af2c3f828a66eeb9497024a 100644 (file)
@@ -132,6 +132,7 @@ _thread_add_matched_message (notmuch_thread_t *thread,
                             notmuch_message_t *message)
 {
     time_t date;
+    notmuch_message_t *hashed_message;
 
     date = notmuch_message_get_date (message);
 
@@ -142,6 +143,13 @@ _thread_add_matched_message (notmuch_thread_t *thread,
        thread->newest = date;
 
     thread->matched_messages++;
+
+    if (g_hash_table_lookup_extended (thread->message_hash,
+                           notmuch_message_get_message_id (message), NULL,
+                           (void **) &hashed_message)) {
+       notmuch_message_set_flag (hashed_message,
+                       NOTMUCH_MSG_FLAG_MATCHING_SEARCH, 1);
+    }
 }
 
 static void