have _notmuch_thread_create mark which messages matched the query
authorBart Trojanowski <bart@jukie.net>
Wed, 25 Nov 2009 04:54:34 +0000 (23:54 -0500)
committerCarl Worth <cworth@cworth.org>
Sat, 28 Nov 2009 01:07:06 +0000 (17:07 -0800)
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 293a859bc3bc83e41671d3498fd8186096fb3a2b..e4f399291689d3d533a2aab90fe79d97159e41b8 100644 (file)
@@ -711,6 +711,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