commit 4971a2b57dceb6c92aac2d47c55e81ea58677f07
parent f4fd908dbe5ed6a8b256256d71f56d135c95f452
Author: wmorgan <wmorgan@5c8cc53c-5e98-4d25-b20a-d8db53a31250>
Date: Sat, 24 Nov 2007 20:08:07 +0000
make label-list-mode non-modal
git-svn-id: svn://rubyforge.org/var/svn/sup/trunk@717 5c8cc53c-5e98-4d25-b20a-d8db53a31250
Diffstat:
4 files changed, 10 insertions(+), 14 deletions(-)
diff --git 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
diff --git a/lib/sup/buffer.rb b/lib/sup/buffer.rb
@@ -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={}
diff --git a/lib/sup/modes/label-list-mode.rb b/lib/sup/modes/label-list-mode.rb
@@ -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
diff --git a/lib/sup/modes/label-search-results-mode.rb b/lib/sup/modes/label-search-results-mode.rb
@@ -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