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:
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