Add ':' command to focus command buffer pane
This commit is contained in:
parent
9d150524fb
commit
12c034fb8f
@ -748,4 +748,5 @@ void BufferPane::set_command_mode()
|
||||
{
|
||||
m_command_mode = true;
|
||||
set_show_status_bar(false);
|
||||
enter_insert_mode(Window::EnterInsertModeMode::START_OF_CHAR);
|
||||
}
|
||||
|
@ -272,9 +272,16 @@ void Window::handle_keyval(uint32_t keyval)
|
||||
if (m_focused_buffer_pane->insert_mode())
|
||||
{
|
||||
if (keyval == '\033')
|
||||
{
|
||||
if (m_focused_buffer_pane == m_command_buffer_pane)
|
||||
{
|
||||
change_focus(m_buffer_pane);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_focused_buffer_pane->exit_insert_mode();
|
||||
}
|
||||
}
|
||||
else if (keyval < 0xFFu)
|
||||
{
|
||||
m_focused_buffer_pane->insert_code_point(keyval);
|
||||
@ -290,6 +297,9 @@ void Window::handle_keyval(uint32_t keyval)
|
||||
case '$':
|
||||
m_focused_buffer_pane->cursor_move(CursorMovement::EOL);
|
||||
break;
|
||||
case ':':
|
||||
change_focus(m_command_buffer_pane);
|
||||
break;
|
||||
case 'A':
|
||||
m_focused_buffer_pane->enter_insert_mode(EnterInsertModeMode::END_OF_LINE);
|
||||
break;
|
||||
@ -490,3 +500,11 @@ uint32_t Window::get_shifted(uint32_t keysym)
|
||||
|
||||
return 0u;
|
||||
}
|
||||
|
||||
void Window::change_focus(std::shared_ptr<BufferPane> buffer_pane)
|
||||
{
|
||||
m_focused_buffer_pane->set_focused(false);
|
||||
m_focused_buffer_pane = buffer_pane;
|
||||
m_focused_buffer_pane->set_focused(true);
|
||||
request_redraw();
|
||||
}
|
||||
|
@ -72,6 +72,7 @@ protected:
|
||||
void handle_keyval(uint32_t keyval);
|
||||
uint32_t get_keyval(SDL_Keycode keysym);
|
||||
uint32_t get_shifted(uint32_t keysym);
|
||||
void change_focus(std::shared_ptr<BufferPane> buffer_pane);
|
||||
|
||||
SDL_Window * m_window;
|
||||
bool m_exit_requested;
|
||||
|
Loading…
x
Reference in New Issue
Block a user