sup

A curses threads-with-tags style email client

sup.git

git clone https://supmua.dev/git/sup/
commit e8a45c523fd04cf325eed0701c16892bf7952a57
parent 47b63308254b5e70157a3c0ac63dcebf36f8c319
Author: wmorgan <wmorgan@5c8cc53c-5e98-4d25-b20a-d8db53a31250>
Date:   Mon, 29 Oct 2007 15:03:14 +0000

fix compose mode spawning from within thread-view-mode

git-svn-id: svn://rubyforge.org/var/svn/sup/trunk@645 5c8cc53c-5e98-4d25-b20a-d8db53a31250

Diffstat:
M bin/sup | 9 ++-------
M lib/sup/modes/compose-mode.rb | 12 ++++++++++++
M lib/sup/modes/thread-view-mode.rb | 15 +++++++--------
3 files changed, 21 insertions(+), 15 deletions(-)
diff --git a/bin/sup b/bin/sup
@@ -92,6 +92,7 @@ EOS
 end
 
 begin
+  extend CanSpawnComposeMode
   Redwood::start
   Index.load
 
@@ -253,13 +254,7 @@ begin
         end
 
       when :compose
-        to = BufferManager.ask_for_contacts(:people, "To: ") or next
-        cc = BufferManager.ask_for_contacts(:people, "Cc: ") or next if $config[:ask_for_cc]
-        bcc = BufferManager.ask_for_contacts(:people, "Bcc: ") or next if $config[:ask_for_bcc]
-
-        mode = ComposeMode.new :to => to, :cc => cc, :bcc => bcc
-        bm.spawn "New Message", mode
-        mode.edit_message
+        spawn_compose_mode
       when :poll
         reporting_thread { PollManager.poll }
       when :recall_draft
diff --git a/lib/sup/modes/compose-mode.rb b/lib/sup/modes/compose-mode.rb
@@ -1,5 +1,17 @@
 module Redwood
 
+module CanSpawnComposeMode
+  def spawn_compose_mode opts={}
+    to = opts[:to] || BufferManager.ask_for_contacts(:people, "To: ") or return
+    cc = opts[:cc] || BufferManager.ask_for_contacts(:people, "Cc: ") or return if $config[:ask_for_cc]
+    bcc = opts[:bcc] || BufferManager.ask_for_contacts(:people, "Bcc: ") or return if $config[:ask_for_bcc]
+    
+    mode = ComposeMode.new :to => to, :cc => cc, :bcc => bcc
+    BufferManager.spawn "New Message", mode
+    mode.edit_message
+  end
+end
+
 class ComposeMode < EditMessageMode
   def initialize opts={}
     header = {
diff --git a/lib/sup/modes/thread-view-mode.rb b/lib/sup/modes/thread-view-mode.rb
@@ -1,6 +1,8 @@
 module Redwood
 
 class ThreadViewMode < LineCursorMode
+  include CanSpawnComposeMode
+
   ## this holds all info we need to lay out a message
   class MessageLayout
     attr_accessor :top, :bot, :prev, :next, :depth, :width, :state, :color, :star_color, :orig_new
@@ -128,14 +130,11 @@ class ThreadViewMode < LineCursorMode
 
   def compose
     p = @person_lines[curpos]
-    mode =
-      if p
-        ComposeMode.new :to => [p]
-      else
-        ComposeMode.new
-      end
-    BufferManager.spawn "Compose message", mode
-    mode.edit_message
+    if p
+      spawn_compose_mode :to => [p]
+    else
+      spawn_compose_mode
+    end
   end    
 
   def edit_labels