diff --git a/src/gui/Window.cc b/src/gui/Window.cc index a06c4e6..31a89a1 100644 --- a/src/gui/Window.cc +++ b/src/gui/Window.cc @@ -2,7 +2,6 @@ #include "Window.h" #include "Runtime.h" #include "BufferPane.h" -#include "Jtk.h" #include #include "jes_icon-32x32.h" #include @@ -143,11 +142,11 @@ bool Window::create(std::shared_ptr buffer) */ void Window::run_event_loop() { -#if 0 - SDL_Event event; + Jtk_Event event; - while ((!m_exit_requested) && SDL_WaitEvent(&event)) + while (!m_exit_requested) { + Jtk_WaitEvent(&event); handle_event(event); if (m_redraw_requested) { @@ -155,9 +154,6 @@ void Window::run_event_loop() redraw(); } } -#endif - redraw(); - sleep(5); } #if 0 @@ -185,20 +181,23 @@ Uint32 Key_Repeat(Uint32 interval, void * param) return 0u; } } +#endif /** - * Handle a SDL event. + * Handle a Jtk event. */ -void Window::handle_event(SDL_Event & event) +void Window::handle_event(Jtk_Event & event) { switch (event.type) { +#if 0 case SDL_QUIT: m_exit_requested = true; break; +#endif - case SDL_KEYDOWN: - m_keymod = event.key.keysym.mod; + case JTK_EVENT_KEY_PRESS: +#if 0 if (event.key.repeat == 0) { Key_Statuses[event.key.keysym.scancode].pressed = true; @@ -206,18 +205,25 @@ void Window::handle_event(SDL_Event & event) Key_Statuses[event.key.keysym.scancode].timer_id = SDL_AddTimer(300, Key_Repeat, (void *)event.key.keysym.scancode); handle_keysym(event.key.keysym.sym); } +#endif + handle_keyval(event.key.key); break; - case SDL_KEYUP: - m_keymod = event.key.keysym.mod; + case JTK_EVENT_KEY_RELEASE: +#if 0 Key_Statuses[event.key.keysym.scancode].pressed = false; if (Key_Statuses[event.key.keysym.scancode].timer_id != 0) { SDL_RemoveTimer(Key_Statuses[event.key.keysym.scancode].timer_id); Key_Statuses[event.key.keysym.scancode].timer_id = 0; } +#endif break; + case JTK_EVENT_WINDOW_EXPOSE: + m_redraw_requested = true; + break; +#if 0 case SDL_WINDOWEVENT: switch (event.window.event) { @@ -246,40 +252,36 @@ void Window::handle_event(SDL_Event & event) m_focused_buffer_pane->scroll_window_down(ScrollMode::WHEEL); } break; +#endif } } -void Window::handle_keysym(uint32_t keysym) -{ - handle_keyval(get_keyval(keysym)); -} - void Window::handle_keyval(uint32_t keyval) { switch (keyval) { - case SDLK_HOME: + case JTK_KEY_HOME: m_focused_buffer_pane->cursor_move(BufferPane::CursorMovement::SOL); break; - case SDLK_END: + case JTK_KEY_END: m_focused_buffer_pane->cursor_move(BufferPane::CursorMovement::EOL); break; - case SDLK_RIGHT: + case JTK_KEY_RIGHT: m_focused_buffer_pane->cursor_move(BufferPane::CursorMovement::RIGHT); break; - case SDLK_LEFT: + case JTK_KEY_LEFT: m_focused_buffer_pane->cursor_move(BufferPane::CursorMovement::LEFT); break; - case SDLK_DOWN: + case JTK_KEY_DOWN: m_focused_buffer_pane->cursor_move(BufferPane::CursorMovement::DOWN); break; - case SDLK_UP: + case JTK_KEY_UP: m_focused_buffer_pane->cursor_move(BufferPane::CursorMovement::UP); break; - case SDLK_PAGEUP: + case JTK_KEY_PAGE_UP: m_focused_buffer_pane->scroll_window_up(ScrollMode::WHOLE_SCREEN); break; - case SDLK_PAGEDOWN: + case JTK_KEY_PAGE_DOWN: m_focused_buffer_pane->scroll_window_down(ScrollMode::WHOLE_SCREEN); break; default: @@ -402,7 +404,6 @@ void Window::handle_keyval(uint32_t keyval) break; } } -#endif void Window::resize() { @@ -440,113 +441,6 @@ void Window::redraw() Jtk_SwapBuffers(m_window); } -#if 0 -uint32_t Window::get_keyval(SDL_Keycode keysym) -{ - uint32_t keyval = keysym; - if ((m_keymod & (KMOD_SHIFT | KMOD_CAPS)) != 0u) - { - uint32_t shifted = get_shifted(keyval); - if (shifted != 0u) - { - keyval = shifted; - } - else - { - keyval |= Keymod::SHIFT; - } - } - switch (keyval) - { - case SDLK_RETURN: keyval = '\n'; break; - case SDLK_KP_DIVIDE: keyval = '/'; break; - case SDLK_KP_MULTIPLY: keyval = '*'; break; - case SDLK_KP_MINUS: keyval = '-'; break; - case SDLK_KP_PLUS: keyval = '+'; break; - case SDLK_KP_ENTER: keyval = '\n'; break; - case SDLK_KP_1: keyval = '1'; break; - case SDLK_KP_2: keyval = '2'; break; - case SDLK_KP_3: keyval = '3'; break; - case SDLK_KP_4: keyval = '4'; break; - case SDLK_KP_5: keyval = '5'; break; - case SDLK_KP_6: keyval = '6'; break; - case SDLK_KP_7: keyval = '7'; break; - case SDLK_KP_8: keyval = '8'; break; - case SDLK_KP_9: keyval = '9'; break; - case SDLK_KP_0: keyval = '0'; break; - case SDLK_KP_PERIOD: keyval = '.'; break; - case SDLK_KP_EQUALS: keyval = '='; break; - case SDLK_KP_COMMA: keyval = ','; break; - case SDLK_KP_LEFTPAREN: keyval = '('; break; - case SDLK_KP_RIGHTPAREN: keyval = ')'; break; - case SDLK_KP_LEFTBRACE: keyval = '{'; break; - case SDLK_KP_RIGHTBRACE: keyval = '}'; break; - case SDLK_KP_TAB: keyval = '\t'; break; - case SDLK_KP_BACKSPACE: keyval = '\b'; break; - case SDLK_KP_PERCENT: keyval = '%'; break; - case SDLK_KP_LESS: keyval = '<'; break; - case SDLK_KP_GREATER: keyval = '>'; break; - case SDLK_KP_AMPERSAND: keyval = '&'; break; - case SDLK_KP_VERTICALBAR: keyval = '|'; break; - case SDLK_KP_COLON: keyval = ':'; break; - case SDLK_KP_HASH: keyval = '#'; break; - case SDLK_KP_SPACE: keyval = ' '; break; - case SDLK_KP_AT: keyval = '@'; break; - case SDLK_KP_EXCLAM: keyval = '!'; break; - } - if ((m_keymod & KMOD_CTRL) != 0u) - { - keyval |= Keymod::CTRL; - } - if ((m_keymod & KMOD_ALT) != 0u) - { - keyval |= Keymod::ALT; - } - if ((m_keymod & KMOD_GUI) != 0u) - { - keyval |= Keymod::GUI; - } - return keyval; -} - -uint32_t Window::get_shifted(uint32_t keysym) -{ - if ((keysym >= 'a') && (keysym <= 'z')) - { - return keysym - ('a' - 'A'); - } - - switch (keysym) - { - case SDLK_QUOTE: return '"'; - case SDLK_COMMA: return '<'; - case SDLK_MINUS: return '_'; - case SDLK_PERIOD: return '>'; - case SDLK_SLASH: return '?'; - case SDLK_0: return ')'; - case SDLK_1: return '!'; - case SDLK_2: return '@'; - case SDLK_3: return '#'; - case SDLK_4: return '$'; - case SDLK_5: return '%'; - case SDLK_6: return '^'; - case SDLK_7: return '&'; - case SDLK_8: return '*'; - case SDLK_9: return '('; - case SDLK_SEMICOLON: return ':'; - case SDLK_EQUALS: return '+'; - case SDLK_LEFTBRACKET: return '{'; - case SDLK_BACKSLASH: return '|'; - case SDLK_RIGHTBRACKET: return '}'; - case SDLK_BACKQUOTE: return '~'; - case SDLK_SPACE: return ' '; - case SDLK_BACKSPACE: return '\b'; - } - - return 0u; -} -#endif - 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 8c1aa1c..2da7bb3 100644 --- a/src/gui/Window.h +++ b/src/gui/Window.h @@ -8,6 +8,7 @@ #include "GL.h" #include "EncodedString.h" #include "CommandParser.h" +#include "Jtk.h" class BufferPane; @@ -54,10 +55,9 @@ protected: void resize(); void redraw(); -#if 0 - void handle_event(SDL_Event & event); - void handle_keysym(uint32_t keysym); + void handle_event(Jtk_Event & event); void handle_keyval(uint32_t keyval); +#if 0 uint32_t get_keyval(SDL_Keycode keysym); uint32_t get_shifted(uint32_t keysym); #endif @@ -86,10 +86,6 @@ protected: std::shared_ptr m_focused_buffer_pane; std::shared_ptr m_command_buffer; std::shared_ptr m_command_buffer_pane; - -#if 0 - Uint16 m_keymod; -#endif }; #endif