sup

A curses threads-with-tags style email client

sup.git

git clone https://supmua.dev/git/sup/
commit a9a43a503335fac7be3100f7f2d10b02a8713e1e
parent c659fe13b4202fe09f809ae35b46635b15689f08
Author: William Morgan <wmorgan-sup@masanjin.net>
Date:   Thu,  3 Jan 2008 18:23:16 -0800

bugfix: thread ordering in thread-index-mode "jumping around"

happens when more than one thread exists with the exact same date.

Diffstat:
M doc/TODO | 3 +--
M lib/sup/modes/thread-index-mode.rb | 2 +-
2 files changed, 2 insertions(+), 3 deletions(-)
diff --git a/doc/TODO b/doc/TODO
@@ -15,8 +15,6 @@ _ have "notes" (treated as emails to oneself, never sent) as
 
 for 0.4
 -------
-_ bugfix: pressing S on an email address should search to/from
-_ bugfix: thread ordering in thread-index-mode sometimes jumps around with 'M'
 _ bugfix in completion: capitalization for contact names
 _ imap: cache headers
 _ imap: share connection to the same server.
@@ -79,6 +77,7 @@ x gmail support: obsoleted by imap
 
 done
 ----
+x bugfix: thread ordering in thread-index-mode sometimes jumps around with 'M'
 x forwards optionally include attachments
 x flesh out gpg integration: sign & encrypt outgoing
 x pressing A in thread-view-mode should jump to next message
diff --git a/lib/sup/modes/thread-index-mode.rb b/lib/sup/modes/thread-index-mode.rb
@@ -167,7 +167,7 @@ EOS
   def update
     @mutex.synchronize do
       ## let's see you do THIS in python
-      @threads = @ts.threads.select { |t| !@hidden_threads[t] }.sort_by { |t| t.date }.reverse
+      @threads = @ts.threads.select { |t| !@hidden_threads[t] }.sort_by { |t| [t.date, t.first.id] }.reverse
       @size_widgets = @threads.map { |t| size_widget_for_thread t }
       @size_widget_width = @size_widgets.max_of { |w| w.length }
     end