diff --git a/src/gui/Window.cc b/src/gui/Window.cc index 5409f9a..c9063ea 100644 --- a/src/gui/Window.cc +++ b/src/gui/Window.cc @@ -121,6 +121,7 @@ bool Window::create(std::shared_ptr buffer) glClearColor (0.0, 0.0, 0.0, 0.0); m_buffer_pane = std::make_shared(this, buffer); + m_focused_buffer_pane = m_buffer_pane; m_buffer_pane->set_focused(true); m_command_buffer = std::make_shared(); m_command_buffer_pane = std::make_shared(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; diff --git a/src/gui/Window.h b/src/gui/Window.h index 1e3b2c4..f5abe20 100644 --- a/src/gui/Window.h +++ b/src/gui/Window.h @@ -85,6 +85,7 @@ protected: std::shared_ptr m_gl; std::shared_ptr m_buffer_pane; + std::shared_ptr m_focused_buffer_pane; std::shared_ptr m_command_buffer; std::shared_ptr m_command_buffer_pane;