From: wmorgan Date: Sat, 24 Nov 2007 20:08:07 +0000 (+0000) Subject: make label-list-mode non-modal X-Git-Url: https://git.cworth.org/git?a=commitdiff_plain;h=4971a2b57dceb6c92aac2d47c55e81ea58677f07;p=sup make label-list-mode non-modal git-svn-id: svn://rubyforge.org/var/svn/sup/trunk@717 5c8cc53c-5e98-4d25-b20a-d8db53a31250 --- diff --git a/bin/sup b/bin/sup index c857ac4..d779ad0 100644 --- 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 index a418762..21e55ed 100644 --- 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 index e02fa26..f02f8a0 100644 --- 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 index 4897140..7587ba1 100644 --- 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