]> git.cworth.org Git - sup/commitdiff
make label-list-mode non-modal
authorwmorgan <wmorgan@5c8cc53c-5e98-4d25-b20a-d8db53a31250>
Sat, 24 Nov 2007 20:08:07 +0000 (20:08 +0000)
committerwmorgan <wmorgan@5c8cc53c-5e98-4d25-b20a-d8db53a31250>
Sat, 24 Nov 2007 20:08:07 +0000 (20:08 +0000)
git-svn-id: svn://rubyforge.org/var/svn/sup/trunk@717 5c8cc53c-5e98-4d25-b20a-d8db53a31250

bin/sup
lib/sup/buffer.rb
lib/sup/modes/label-list-mode.rb
lib/sup/modes/label-search-results-mode.rb

diff --git a/bin/sup b/bin/sup
index c857ac4306d6add7c7a6bc68751c0154706030d0..d779ad0d55f797ab0c17e56dda11a04b599de1c7 100644 (file)
--- a/bin/sup
+++ b/bin/sup
@@ -216,7 +216,7 @@ begin
         bm.spawn_unless_exists("Buffer List") { BufferListMode.new }
       when :list_contacts
         b = bm.spawn_unless_exists("Contact List") { ContactListMode.new }
-        b.mode.load_in_background
+        b.mode.load_in_background if b
       when :search
         query = BufferManager.ask :search, "search all messages: "
         next unless query && query !~ /^\s*$/
@@ -246,10 +246,8 @@ begin
           BufferManager.spawn "Edit message", r
           r.edit_message
         else
-          b = BufferManager.spawn_unless_exists("All drafts") do
-            mode = LabelSearchResultsMode.new [:draft]
-          end
-          b.mode.load_threads :num => b.content_height
+          b = BufferManager.spawn_unless_exists("All drafts") { LabelSearchResultsMode.new [:draft] }
+          b.mode.load_threads :num => b.content_height if b
         end
       when :nothing
       when :redraw
index a418762db1bd24471fceb996a164463ccb3e5e48..21e55ed839310526d5d683bd75fe202238d4d7eb 100644 (file)
@@ -259,11 +259,12 @@ class BufferManager
   def spawn_unless_exists title, opts={}
     if @name_map.member? title
       raise_to_front @name_map[title] unless opts[:hidden]
+      nil
     else
       mode = yield
       spawn title, mode, opts
+      @name_map[title]
     end
-    @name_map[title]
   end
 
   def spawn title, mode, opts={}
index e02fa26d26afa23ee22d83e5bee3b9dbe082f745..f02f8a026cf65036496ff5ed0f84da234c8e369e 100644 (file)
@@ -2,18 +2,16 @@ module Redwood
 
 class LabelListMode < LineCursorMode
   register_keymap do |k|
-    k.add :select_label, "Select label", :enter
+    k.add :select_label, "Search by label", :enter
     k.add :reload, "Discard label list and reload", '@'
     k.add :toggle_show_unread_only, "Toggle between all labels and those with unread mail", :tab
   end
 
-  bool_reader :done
   attr_reader :value
 
   def initialize
     @labels = []
     @text = []
-    @done = false
     @value = nil
     @unread_only = false
     super
@@ -68,7 +66,8 @@ protected
 
   def select_label
     @value, string = @labels[curpos]
-    @done = true if @value
+    return unless @value
+    LabelSearchResultsMode.spawn_nicely @value
   end
 end
 
index 489714057d8efa74dd9dccb1fa1cb6daf4f3abc1..7587ba1972c9e111100d7520fef0b2b8c145caa4 100644 (file)
@@ -18,10 +18,8 @@ class LabelSearchResultsMode < ThreadIndexMode
     when :inbox
       BufferManager.raise_to_front InboxMode.instance.buffer
     else
-      BufferManager.spawn_unless_exists("All threads with label '#{label}'") do
-        mode = LabelSearchResultsMode.new([label])
-        mode.load_threads :num => b.content_height
-      end
+      b = BufferManager.spawn_unless_exists("All threads with label '#{label}'") { LabelSearchResultsMode.new [label] }
+      b.mode.load_threads :num => b.content_height if b
     end
   end
 end