lib/sup/textfield.rb in sup-0.2 vs lib/sup/textfield.rb in sup-0.3

- old
+ new

@@ -62,11 +62,11 @@ def handle_input c ## short-circuit exit paths case c when Ncurses::KEY_ENTER # submit! @value = get_cursed_value - @history.push @value + @history.push @value unless @value =~ /^\s*$/ return false when Ncurses::KEY_CANCEL # cancel @value = nil return false when Ncurses::KEY_TAB # completion @@ -106,26 +106,26 @@ Ncurses::Form::REQ_BEG_FIELD when 5 #ctrl-e Ncurses::Form::REQ_END_FIELD when 11 # ctrl-k Ncurses::Form::REQ_CLR_EOF - when Ncurses::KEY_UP - @i ||= @history.size - @history[@i] = get_cursed_value - @i = (@i - 1) % @history.size - @value = @history[@i] - set_cursed_value @value - when Ncurses::KEY_DOWN - @i ||= @history.size - @history[@i] = get_cursed_value - @i = (@i + 1) % @history.size - @value = @history[@i] - set_cursed_value @value + when Ncurses::KEY_UP, Ncurses::KEY_DOWN + unless @history.empty? + value = get_cursed_value + @i ||= @history.size + #Redwood::log "history before #{@history.inspect}" + @history[@i] = value #unless value =~ /^\s*$/ + @i = (@i + (c == Ncurses::KEY_UP ? -1 : 1)) % @history.size + @value = @history[@i] + #Redwood::log "history after #{@history.inspect}" + set_cursed_value @value + Ncurses::Form::REQ_END_FIELD + end else c end - Ncurses::Form.form_driver @form, d + Ncurses::Form.form_driver @form, d if d true end private