]> git.cworth.org Git - sup/commitdiff
bugfix for input history (stop adding all those excessive blank entries)
authorwmorgan <wmorgan@5c8cc53c-5e98-4d25-b20a-d8db53a31250>
Mon, 12 Nov 2007 23:37:39 +0000 (23:37 +0000)
committerwmorgan <wmorgan@5c8cc53c-5e98-4d25-b20a-d8db53a31250>
Mon, 12 Nov 2007 23:37:39 +0000 (23:37 +0000)
git-svn-id: svn://rubyforge.org/var/svn/sup/trunk@695 5c8cc53c-5e98-4d25-b20a-d8db53a31250

lib/sup/textfield.rb

index c155ea0f84d4bbf503b13047a2801e24e21f81a3..f4d7fbbf6d1e260ce441ae999e75416a298ee70a 100644 (file)
@@ -64,7 +64,7 @@ class TextField
     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
@@ -108,23 +108,23 @@ class TextField
         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