changeset 13113:2e15e70f5f2d

lib-storage: Sorting by relevancy returned messages in reverse order.
author Timo Sirainen <tss@iki.fi>
date Tue, 26 Jul 2011 15:04:57 +0300
parents 10dcd83cd77d
children 04716e20f44f
files src/lib-storage/index/index-sort.c
diffstat 1 files changed, 9 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib-storage/index/index-sort.c	Tue Jul 26 14:11:23 2011 +0300
+++ b/src/lib-storage/index/index-sort.c	Tue Jul 26 15:04:57 2011 +0300
@@ -209,7 +209,12 @@
 {
 	ARRAY_TYPE(mail_sort_node_float) *nodes = program->context;
 
+	/* NOTE: higher relevancy is returned first, unlike with all
+	   other number based sort keys, so temporarily reverse the search */
+	static_node_cmp_context.reverse = !static_node_cmp_context.reverse;
 	array_sort(nodes, sort_node_float_cmp);
+	static_node_cmp_context.reverse = !static_node_cmp_context.reverse;
+
 	memcpy(&program->seqs, nodes, sizeof(program->seqs));
 	i_free(nodes);
 	program->context = NULL;
@@ -519,8 +524,10 @@
 		mail_set_seq(mail, seq2);
 		float2 = index_sort_get_relevancy(mail);
 
-		ret = float1 < float2 ? -1 :
-			(float1 > float2 ? 1 : 0);
+		/* NOTE: higher relevancy is returned first, unlike with all
+		   other number based sort keys */
+		ret = float1 < float2 ? 1 :
+			(float1 > float2 ? -1 : 0);
 		break;
 	case MAIL_SORT_POP3_ORDER:
 		/* 32bit numbers would be enough, but since there is already