From d0d68f5878267320eb99ad544e9117553af11532 Mon Sep 17 00:00:00 2001 From: fiaxh Date: Mon, 10 Dec 2018 18:27:02 +0100 Subject: (Partially) Fix messages being displayed wrongly sorted in ConversationSummary due to being compared->equal --- libdino/src/plugin/interfaces.vala | 3 ++- main/src/ui/conversation_summary/content_populator.vala | 3 ++- main/src/ui/conversation_summary/conversation_view.vala | 14 +++++++------- 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() { -- cgit v1.2.3-70-g09d2