keep track of the focused buffer pane
This commit is contained in:
parent
f2770d66fd
commit
9d150524fb
@ -121,6 +121,7 @@ bool Window::create(std::shared_ptr<Buffer> buffer)
|
||||
glClearColor (0.0, 0.0, 0.0, 0.0);
|
||||
|
||||
m_buffer_pane = std::make_shared<BufferPane>(this, buffer);
|
||||
m_focused_buffer_pane = m_buffer_pane;
|
||||
m_buffer_pane->set_focused(true);
|
||||
m_command_buffer = std::make_shared<Buffer>();
|
||||
m_command_buffer_pane = std::make_shared<BufferPane>(this, m_command_buffer);
|
||||
@ -224,11 +225,11 @@ void Window::handle_event(SDL_Event & event)
|
||||
case SDL_MOUSEWHEEL:
|
||||
if (event.wheel.y > 0)
|
||||
{
|
||||
m_buffer_pane->scroll_window_up(ScrollMode::WHEEL);
|
||||
m_focused_buffer_pane->scroll_window_up(ScrollMode::WHEEL);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_buffer_pane->scroll_window_down(ScrollMode::WHEEL);
|
||||
m_focused_buffer_pane->scroll_window_down(ScrollMode::WHEEL);
|
||||
}
|
||||
break;
|
||||
}
|
||||
@ -244,39 +245,39 @@ void Window::handle_keyval(uint32_t keyval)
|
||||
switch (keyval)
|
||||
{
|
||||
case SDLK_HOME:
|
||||
m_buffer_pane->cursor_move(CursorMovement::SOL);
|
||||
m_focused_buffer_pane->cursor_move(CursorMovement::SOL);
|
||||
break;
|
||||
case SDLK_END:
|
||||
m_buffer_pane->cursor_move(CursorMovement::EOL);
|
||||
m_focused_buffer_pane->cursor_move(CursorMovement::EOL);
|
||||
break;
|
||||
case SDLK_RIGHT:
|
||||
m_buffer_pane->cursor_move(CursorMovement::RIGHT);
|
||||
m_focused_buffer_pane->cursor_move(CursorMovement::RIGHT);
|
||||
break;
|
||||
case SDLK_LEFT:
|
||||
m_buffer_pane->cursor_move(CursorMovement::LEFT);
|
||||
m_focused_buffer_pane->cursor_move(CursorMovement::LEFT);
|
||||
break;
|
||||
case SDLK_DOWN:
|
||||
m_buffer_pane->cursor_move(CursorMovement::DOWN);
|
||||
m_focused_buffer_pane->cursor_move(CursorMovement::DOWN);
|
||||
break;
|
||||
case SDLK_UP:
|
||||
m_buffer_pane->cursor_move(CursorMovement::UP);
|
||||
m_focused_buffer_pane->cursor_move(CursorMovement::UP);
|
||||
break;
|
||||
case SDLK_PAGEUP:
|
||||
m_buffer_pane->scroll_window_up(ScrollMode::WHOLE_SCREEN);
|
||||
m_focused_buffer_pane->scroll_window_up(ScrollMode::WHOLE_SCREEN);
|
||||
break;
|
||||
case SDLK_PAGEDOWN:
|
||||
m_buffer_pane->scroll_window_down(ScrollMode::WHOLE_SCREEN);
|
||||
m_focused_buffer_pane->scroll_window_down(ScrollMode::WHOLE_SCREEN);
|
||||
break;
|
||||
default:
|
||||
if (m_buffer_pane->insert_mode())
|
||||
if (m_focused_buffer_pane->insert_mode())
|
||||
{
|
||||
if (keyval == '\033')
|
||||
{
|
||||
m_buffer_pane->exit_insert_mode();
|
||||
m_focused_buffer_pane->exit_insert_mode();
|
||||
}
|
||||
else if (keyval < 0xFFu)
|
||||
{
|
||||
m_buffer_pane->insert_code_point(keyval);
|
||||
m_focused_buffer_pane->insert_code_point(keyval);
|
||||
}
|
||||
}
|
||||
else
|
||||
@ -284,76 +285,76 @@ void Window::handle_keyval(uint32_t keyval)
|
||||
switch (keyval)
|
||||
{
|
||||
case '0':
|
||||
m_buffer_pane->cursor_move(CursorMovement::SOL);
|
||||
m_focused_buffer_pane->cursor_move(CursorMovement::SOL);
|
||||
break;
|
||||
case '$':
|
||||
m_buffer_pane->cursor_move(CursorMovement::EOL);
|
||||
m_focused_buffer_pane->cursor_move(CursorMovement::EOL);
|
||||
break;
|
||||
case 'A':
|
||||
m_buffer_pane->enter_insert_mode(EnterInsertModeMode::END_OF_LINE);
|
||||
m_focused_buffer_pane->enter_insert_mode(EnterInsertModeMode::END_OF_LINE);
|
||||
break;
|
||||
case 'G':
|
||||
m_buffer_pane->cursor_move(CursorMovement::LAST_LINE);
|
||||
m_focused_buffer_pane->cursor_move(CursorMovement::LAST_LINE);
|
||||
break;
|
||||
case 'I':
|
||||
m_buffer_pane->enter_insert_mode(EnterInsertModeMode::START_OF_LINE);
|
||||
m_focused_buffer_pane->enter_insert_mode(EnterInsertModeMode::START_OF_LINE);
|
||||
break;
|
||||
case 'O':
|
||||
m_buffer_pane->enter_insert_mode(EnterInsertModeMode::NEW_LINE_BEFORE);
|
||||
m_focused_buffer_pane->enter_insert_mode(EnterInsertModeMode::NEW_LINE_BEFORE);
|
||||
break;
|
||||
case 'a':
|
||||
m_buffer_pane->enter_insert_mode(EnterInsertModeMode::END_OF_CHAR);
|
||||
m_focused_buffer_pane->enter_insert_mode(EnterInsertModeMode::END_OF_CHAR);
|
||||
break;
|
||||
case 'g':
|
||||
m_buffer_pane->cursor_move(CursorMovement::FIRST_LINE);
|
||||
m_focused_buffer_pane->cursor_move(CursorMovement::FIRST_LINE);
|
||||
break;
|
||||
case 'h':
|
||||
m_buffer_pane->cursor_move(CursorMovement::LEFT);
|
||||
m_focused_buffer_pane->cursor_move(CursorMovement::LEFT);
|
||||
break;
|
||||
case 'i':
|
||||
m_buffer_pane->enter_insert_mode(EnterInsertModeMode::START_OF_CHAR);
|
||||
m_focused_buffer_pane->enter_insert_mode(EnterInsertModeMode::START_OF_CHAR);
|
||||
break;
|
||||
case 'j':
|
||||
m_buffer_pane->cursor_move(CursorMovement::DOWN);
|
||||
m_focused_buffer_pane->cursor_move(CursorMovement::DOWN);
|
||||
break;
|
||||
case 'k':
|
||||
m_buffer_pane->cursor_move(CursorMovement::UP);
|
||||
m_focused_buffer_pane->cursor_move(CursorMovement::UP);
|
||||
break;
|
||||
case 'l':
|
||||
m_buffer_pane->cursor_move(CursorMovement::RIGHT);
|
||||
m_focused_buffer_pane->cursor_move(CursorMovement::RIGHT);
|
||||
break;
|
||||
case 'o':
|
||||
m_buffer_pane->enter_insert_mode(EnterInsertModeMode::NEW_LINE_AFTER);
|
||||
m_focused_buffer_pane->enter_insert_mode(EnterInsertModeMode::NEW_LINE_AFTER);
|
||||
break;
|
||||
case 'r':
|
||||
m_buffer_pane->redo();
|
||||
m_focused_buffer_pane->redo();
|
||||
break;
|
||||
case 'u':
|
||||
m_buffer_pane->undo();
|
||||
m_focused_buffer_pane->undo();
|
||||
break;
|
||||
case 'x':
|
||||
m_buffer_pane->kill_character_at_cursor();
|
||||
m_focused_buffer_pane->kill_character_at_cursor();
|
||||
break;
|
||||
case Keymod::CTRL + 'b':
|
||||
m_buffer_pane->scroll_window_up(ScrollMode::WHOLE_SCREEN);
|
||||
m_focused_buffer_pane->scroll_window_up(ScrollMode::WHOLE_SCREEN);
|
||||
break;
|
||||
case Keymod::CTRL + 'd':
|
||||
m_buffer_pane->scroll_window_down(ScrollMode::HALF_SCREEN);
|
||||
m_focused_buffer_pane->scroll_window_down(ScrollMode::HALF_SCREEN);
|
||||
break;
|
||||
case Keymod::CTRL + 'e':
|
||||
m_buffer_pane->scroll_window_down(ScrollMode::ONE_LINE);
|
||||
m_focused_buffer_pane->scroll_window_down(ScrollMode::ONE_LINE);
|
||||
break;
|
||||
case Keymod::CTRL + 'f':
|
||||
m_buffer_pane->scroll_window_down(ScrollMode::WHOLE_SCREEN);
|
||||
m_focused_buffer_pane->scroll_window_down(ScrollMode::WHOLE_SCREEN);
|
||||
break;
|
||||
case Keymod::CTRL + 'u':
|
||||
m_buffer_pane->scroll_window_up(ScrollMode::HALF_SCREEN);
|
||||
m_focused_buffer_pane->scroll_window_up(ScrollMode::HALF_SCREEN);
|
||||
break;
|
||||
case Keymod::CTRL + 'w':
|
||||
m_buffer_pane->write_file();
|
||||
m_focused_buffer_pane->write_file();
|
||||
break;
|
||||
case Keymod::CTRL + 'y':
|
||||
m_buffer_pane->scroll_window_up(ScrollMode::ONE_LINE);
|
||||
m_focused_buffer_pane->scroll_window_up(ScrollMode::ONE_LINE);
|
||||
break;
|
||||
case Keymod::CTRL + 'q':
|
||||
m_exit_requested = true;
|
||||
|
@ -85,6 +85,7 @@ protected:
|
||||
std::shared_ptr<GL> m_gl;
|
||||
|
||||
std::shared_ptr<BufferPane> m_buffer_pane;
|
||||
std::shared_ptr<BufferPane> m_focused_buffer_pane;
|
||||
std::shared_ptr<Buffer> m_command_buffer;
|
||||
std::shared_ptr<BufferPane> m_command_buffer_pane;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user