sup

A curses threads-with-tags style email client

sup.git

git clone https://supmua.dev/git/sup/
commit 7605bdfab2c8e61fa51bd0ebda618a5190e85a07
parent 45b4d6b3f89c379d3a52dba28bb0aeb4e5eb8ef3
Author: wmorgan <wmorgan@5c8cc53c-5e98-4d25-b20a-d8db53a31250>
Date:   Thu,  9 Aug 2007 15:33:46 +0000

fix reply mode/edit field interactions

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

Diffstat:
M lib/sup/modes/edit-message-mode.rb | 7 ++++---
M lib/sup/modes/reply-mode.rb | 13 ++++++++++---
M lib/sup/poll.rb | 2 +-
3 files changed, 15 insertions(+), 7 deletions(-)
diff --git a/lib/sup/modes/edit-message-mode.rb b/lib/sup/modes/edit-message-mode.rb
@@ -35,6 +35,7 @@ class EditMessageMode < LineCursorMode
     @attachments = []
     @message_id = "<#{Time.now.to_i}-sup-#{rand 10000}@#{Socket.gethostname}>"
     @edited = false
+    @skip_top_rows = opts[:skip_top_rows] || 0
 
     super opts
     regen_text
@@ -47,10 +48,10 @@ class EditMessageMode < LineCursorMode
   def handle_new_text header, body; end
 
   def edit_field
-    if curpos >= @header_lines.length
+    if (curpos - @skip_top_rows) >= @header_lines.length
       edit_message
     else
-      case(field = @header_lines[curpos])
+      case(field = @header_lines[curpos - @skip_top_rows])
       when "Subject"
         text = BufferManager.ask :subject, "Subject: ", @header[field]
         @header[field] = parse_header field, text if text
@@ -105,7 +106,7 @@ class EditMessageMode < LineCursorMode
   end
 
   def delete_attachment
-    i = curpos - @attachment_lines_offset
+    i = (curpos - @skip_top_rows) - @attachment_lines_offset
     if i >= 0 && i < @attachments.size && BufferManager.ask_yes_or_no("Delete attachment #{@attachments[i]}?")
       @attachments.delete_at i
       update
diff --git a/lib/sup/modes/reply-mode.rb b/lib/sup/modes/reply-mode.rb
@@ -66,9 +66,9 @@ class ReplyMode < EditMessageMode
     refs = gen_references
     @headers.each do |k, v|
       @headers[k] = {
-               "To" => "",
-               "Cc" => "",
-               "Bcc" => "",
+               "To" => [],
+               "Cc" => [],
+               "Bcc" => [],
                "In-Reply-To" => "<#{@m.id}>",
                "Subject" => Message.reify_subj(@m.subj),
                "References" => refs,
@@ -125,6 +125,13 @@ protected
   def gen_references
     (@m.refs + [@m.id]).map { |x| "<#{x}>" }.join(" ")
   end
+
+  def edit_field
+    @selected_type = :user
+    self.header = @headers[:user]
+    update
+    super
+  end
   
   def move_cursor_left
     i = @type_labels.index @selected_type
diff --git a/lib/sup/poll.rb b/lib/sup/poll.rb
@@ -69,7 +69,7 @@ class PollManager
           end
           m
         end
-        yield "Found #{num} messages, #{numi} to inbox" unless num == 0
+        yield "Found #{num} messages, #{numi} to inbox." unless num == 0
         total_num += num
         total_numi += numi
       end