done = false
@shelled = true
until done
- key = Ncurses.nonblocking_getch
+ key = Ncurses.nonblocking_getch or next
if key == Ncurses::KEY_CANCEL
done = true
elsif (accept && accept.member?(key)) || !accept
def drop_tag_for o; @tagged.delete o; end
def apply_to_tagged
- num_tagged = @tagged.map { |t| t ? 1 : 0 }.sum
+ targets = @tagged.select_by_value
+ num_tagged = targets.size
if num_tagged == 0
- BufferManager.flash "No tagged messages!"
+ BufferManager.flash "No tagged threads!"
return
end
- noun = num_tagged == 1 ? "message" : "messages"
+ noun = num_tagged == 1 ? "thread" : "threads"
c = BufferManager.ask_getch "apply to #{num_tagged} tagged #{noun}:"
return if c.nil? # user cancelled
- if(action = @mode.resolve_input c)
+ if(action = @mode.resolve_input(c))
tagged_sym = "multi_#{action}".intern
if @mode.respond_to? tagged_sym
- targets = @tagged.select_by_value
@mode.send tagged_sym, targets
else
- BufferManager.flash "That command cannot be applied to multiple messages."
+ BufferManager.flash "That command cannot be applied to multiple threads."
end
else
BufferManager.flash "Unknown command #{c.to_character}."