aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorfiaxh <git@lightrise.org>2018-12-10 18:27:02 +0100
committerfiaxh <git@lightrise.org>2018-12-27 13:00:45 +0100
commitd0d68f5878267320eb99ad544e9117553af11532 (patch)
tree16ae5df53541a09441b932a6078d0b3532698094
parent680d28360c781ff29e810821801cfaba0493c526 (diff)
downloaddino-d0d68f5878267320eb99ad544e9117553af11532.tar.gz
dino-d0d68f5878267320eb99ad544e9117553af11532.zip
(Partially) Fix messages being displayed wrongly sorted in ConversationSummary due to being compared->equal
-rw-r--r--libdino/src/plugin/interfaces.vala3
-rw-r--r--main/src/ui/conversation_summary/content_populator.vala3
-rw-r--r--main/src/ui/conversation_summary/conversation_view.vala14
3 files changed, 11 insertions, 9 deletions
diff --git a/libdino/src/plugin/interfaces.vala b/libdino/src/plugin/interfaces.vala
index 01cd525a..308ae5e6 100644
--- a/libdino/src/plugin/interfaces.vala
+++ b/libdino/src/plugin/interfaces.vala
@@ -93,7 +93,8 @@ public abstract class MetaConversationItem : Object {
public virtual Jid? jid { get; set; default=null; }
public virtual bool dim { get; set; default=false; }
public virtual DateTime? sort_time { get; set; default=null; }
- public virtual double seccondary_sort_indicator { get; set; }
+ public virtual long seccondary_sort_indicator { get; set; }
+ public virtual long tertiary_sort_indicator { get; set; }
public virtual DateTime? display_time { get; set; default=null; }
public virtual Encryption? encryption { get; set; default=null; }
public virtual Entities.Message.Marked? mark { get; set; default=null; }
diff --git a/main/src/ui/conversation_summary/content_populator.vala b/main/src/ui/conversation_summary/content_populator.vala
index 754446d3..cc014a04 100644
--- a/main/src/ui/conversation_summary/content_populator.vala
+++ b/main/src/ui/conversation_summary/content_populator.vala
@@ -78,7 +78,8 @@ public class ContentMetaItem : Plugins.MetaConversationItem {
public ContentMetaItem(ContentItem content_item, ContentItemWidgetFactory widget_factory) {
this.jid = content_item.jid;
this.sort_time = content_item.sort_time;
- this.seccondary_sort_indicator = content_item.id;
+ this.seccondary_sort_indicator = (long) content_item.display_time.to_unix();
+ this.tertiary_sort_indicator = content_item.id;
this.display_time = content_item.display_time;
this.encryption = content_item.encryption;
this.mark = content_item.mark;
diff --git a/main/src/ui/conversation_summary/conversation_view.vala b/main/src/ui/conversation_summary/conversation_view.vala
index 83da81aa..0216e891 100644
--- a/main/src/ui/conversation_summary/conversation_view.vala
+++ b/main/src/ui/conversation_summary/conversation_view.vala
@@ -381,15 +381,15 @@ public class ConversationView : Box, Plugins.ConversationItemCollection, Plugins
}
private static int compare_meta_items(Plugins.MetaConversationItem a, Plugins.MetaConversationItem b) {
- int res = a.sort_time.compare(b.sort_time);
- if (res == 0) {
- if (a.seccondary_sort_indicator < b.seccondary_sort_indicator) {
- res = -1;
- } else if (a.seccondary_sort_indicator > b.seccondary_sort_indicator) {
- res = 1;
+ int cmp1 = a.sort_time.compare(b.sort_time);
+ if (cmp1 == 0) {
+ double cmp2 = a.seccondary_sort_indicator - b.seccondary_sort_indicator;
+ if (cmp2 == 0) {
+ return (int) (a.tertiary_sort_indicator - b.tertiary_sort_indicator);
}
+ return (int) cmp2;
}
- return res;
+ return cmp1;
}
private void clear() {