diff --git a/lib/aethyr/core/render/display.rb b/lib/aethyr/core/render/display.rb index bd3f9e4ddca8e916f9f12b9b39f81ef4fc18882a..407a6d86dbf6f1775db1935a70f76b1cc08c5fa0 100644 --- a/lib/aethyr/core/render/display.rb +++ b/lib/aethyr/core/render/display.rb @@ -299,7 +299,9 @@ CONF @windows[:input].clear @windows[:input].window_text.mvaddstr(y,x,string) if echo? @windows[:input].window_text.move(y,x+cursor_pos) if echo? - update + #update + @windows[:input].update + Ncurses.doupdate(); next if not @scanner.process_iac ch = @windows[:input].window_text.getch @@ -372,15 +374,16 @@ CONF cursor_pos = [0, cursor_pos-1].max when Ncurses::KEY_RIGHT cursor_pos = [max_len, cursor_pos + 1, string.length].min - # similar, implement yourself ! - # when Ncurses::KEY_ENTER, ?\n, ?\r - # return string, cursor_pos, ch # Which return key has been used? + when Ncurses::KEY_UP + @windows[:main].buffer_pos += 1 + when Ncurses::KEY_DOWN + @windows[:main].buffer_pos -= 1 when 13 # return @windows[:input].clear self.selected = :input @windows[:main].send("≫≫≫≫≫ #{string}") if echo? @windows[:main].buffer_pos = 0 - update + @windows[:main].update return string#, cursor_pos, ch # Which return key has been used? #when Ncurses::KEY_BACKSPACE when 127, "\b".ord, Ncurses::KEY_BACKSPACE # backspace diff --git a/lib/aethyr/core/render/window.rb b/lib/aethyr/core/render/window.rb index 0bbaced2d7e0a1d74f9d97140f83ea5edceaabb8..8e7933c8efa80197fffbd6e517a489e85dc1dd2b 100644 --- a/lib/aethyr/core/render/window.rb +++ b/lib/aethyr/core/render/window.rb @@ -110,11 +110,13 @@ class Window else render(message, add_newline: add_newline) end + update end def buffer_pos= new_pos @buffer_pos = new_pos if new_pos <= @buffer_size && new_pos <= @buffer_lines.length - @text_height && new_pos >= 0 render_buffer + update end def self.split_message(message, cols = @text_width) @@ -249,8 +251,6 @@ class Window if @use_color regular_format.revert(@window_text) end - - update end def color_encode(code)