From c2b50a3f4f5d6e685fb04b6c42bc1b3308f65a4e Mon Sep 17 00:00:00 2001 From: Josh Holtrop Date: Tue, 14 Nov 2017 20:40:50 -0500 Subject: [PATCH] Draw command characters as they are input --- src/gui/Window.cc | 31 ++++++++++++++++++++++++++++++- src/gui/Window.h | 1 + 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/src/gui/Window.cc b/src/gui/Window.cc index ffef3c5..628713e 100644 --- a/src/gui/Window.cc +++ b/src/gui/Window.cc @@ -135,6 +135,7 @@ bool Window::create(std::shared_ptr buffer) m_command_buffer_pane = std::make_shared(this, m_command_buffer); m_command_buffer_pane->set_command_mode(); m_command_buffer_screen_rows = 1; + m_command_invalid = false; resize(INITIAL_WIDTH, INITIAL_HEIGHT); @@ -456,11 +457,39 @@ void Window::redraw() m_buffer_pane->draw(); m_gl->draw_rect(0, m_command_buffer_screen_rows * m_font->get_line_height(), m_width, 1, 0.5, 0.5, 0.5, 1.0); - m_command_buffer_pane->draw(); + if (m_focused_buffer_pane->insert_mode()) + { + m_command_buffer_pane->draw(); + } + else + { + draw_command_input(); + } Jtk_SwapBuffers(m_window); } +void Window::draw_command_input() +{ + int x = 0; + float g, b; + if (m_command_invalid) + { + g = 0.0; + b = 0.0; + } + else + { + g = 1.0; + b = 1.0; + } + for (size_t i = 0u, length = m_command_input.size(); i < length; i++) + { + m_gl->draw_character(x, 0, m_command_input[i], *m_font, 1.0, g, b, 1.0); + x += m_font->get_advance(); + } +} + void Window::change_focus(std::shared_ptr buffer_pane) { m_focused_buffer_pane->set_focused(false); diff --git a/src/gui/Window.h b/src/gui/Window.h index 8af83b6..f29d0b5 100644 --- a/src/gui/Window.h +++ b/src/gui/Window.h @@ -51,6 +51,7 @@ protected: void handle_command(const EncodedString & command); void evaluate_command_input(); void execute_command(const Command & command); + void draw_command_input(); void command_write_file(const CommandParser & cp); void command_quit(const CommandParser & cp);