From mboxrd@z Thu Jan 1 00:00:00 1970 Received: by 10.213.28.69 with SMTP id l5cs594421ebc; Thu, 21 Jan 2010 20:26:29 -0800 (PST) Received: by 10.224.113.218 with SMTP id b26mr1626680qaq.184.1264134388619; Thu, 21 Jan 2010 20:26:28 -0800 (PST) Return-Path: Received: from rubyforge.org (rubyforge.org [205.234.109.19]) by mx.google.com with ESMTP id 7si3973746qwf.54.2010.01.21.20.26.28; Thu, 21 Jan 2010 20:26:28 -0800 (PST) Received-SPF: pass (google.com: domain of sup-devel-bounces@rubyforge.org designates 205.234.109.19 as permitted sender) client-ip=205.234.109.19; Authentication-Results: mx.google.com; spf=pass (google.com: domain of sup-devel-bounces@rubyforge.org designates 205.234.109.19 as permitted sender) smtp.mail=sup-devel-bounces@rubyforge.org Received: from rubyforge.org (rubyforge.org [127.0.0.1]) by rubyforge.org (Postfix) with ESMTP id E705D167830D; Thu, 21 Jan 2010 23:26:27 -0500 (EST) Received: from magnesium.club.cc.cmu.edu (MAGNESIUM.CLUB.CC.cmu.edu [128.237.157.15]) by rubyforge.org (Postfix) with ESMTP id 4F90818582C7 for ; Thu, 21 Jan 2010 23:26:25 -0500 (EST) Received: (qmail 22880 invoked from network); 22 Jan 2010 04:26:25 -0000 Received: from pion.club.cc.cmu.edu (HELO localhost.localdomain) (128.237.157.88) by magnesium.club.cc.cmu.edu with SMTP; 22 Jan 2010 04:26:25 -0000 From: Rich Lane To: sup-devel@rubyforge.org Date: Thu, 21 Jan 2010 20:25:16 -0800 Message-Id: <1264134316-17210-1-git-send-email-rlane@club.cc.cmu.edu> X-Mailer: git-send-email 1.6.3.3 Subject: [sup-devel] [PATCH] copy thread when spawning ThreadViewMode X-BeenThere: sup-devel@rubyforge.org X-Mailman-Version: 2.1.12 Precedence: list Reply-To: Sup developer discussion List-Id: Sup developer discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: sup-devel-bounces@rubyforge.org Errors-To: sup-devel-bounces@rubyforge.org Currently ThreadIndexMode just passes a reference to the selected thread when spawning a ThreadViewMode. This is a problem because as long as the original ThreadIndexMode is alive that thread will be updated with new messages, but ThreadViewMode will not display them. This can lead to the user unknowingly archiving a thread containing unread messages. --- lib/sup/modes/thread-index-mode.rb | 16 +++++++++++++--- 1 files changed, 13 insertions(+), 3 deletions(-) diff --git a/lib/sup/modes/thread-index-mode.rb b/lib/sup/modes/thread-index-mode.rb index a6bb2b9..ca5e1f3 100644 --- a/lib/sup/modes/thread-index-mode.rb +++ b/lib/sup/modes/thread-index-mode.rb @@ -94,6 +94,18 @@ EOS load_threads :num => buffer.content_height end + def copy_thread t + ts = ThreadSet.new nil + t.each_with_index do |(m, *o), i| + next unless m + yield i + m.load_from_source! + ts.add_message m + end + fail unless ts.threads.size == 1 + ts.threads.first + end + ## open up a thread view window def select t=nil, when_done=nil t ||= cursor_thread or return @@ -102,10 +114,8 @@ EOS num = t.size message = "Loading #{num.pluralize 'message body'}..." BufferManager.say(message) do |sid| - t.each_with_index do |(m, *o), i| - next unless m + t = copy_thread t do |i| BufferManager.say "#{message} (#{i}/#{num})", sid if t.size > 1 - m.load_from_source! end end mode = ThreadViewMode.new t, @hidden_labels, self -- 1.6.3.3 _______________________________________________ Sup-devel mailing list Sup-devel@rubyforge.org http://rubyforge.org/mailman/listinfo/sup-devel