From 5e6d52f341182b286f88ec705d63a239d96f5c78 Mon Sep 17 00:00:00 2001 From: lisyarus Date: Wed, 3 Mar 2021 12:15:52 +0300 Subject: [PATCH] Add (unused) ui key press event --- libs/ui/CMakeLists.txt | 2 +- libs/ui/include/psemek/ui/controller.hpp | 1 + libs/ui/include/psemek/ui/element.hpp | 1 + libs/ui/include/psemek/ui/event.hpp | 10 +++++++++- libs/ui/source/controller.cpp | 5 +++++ 5 files changed, 17 insertions(+), 2 deletions(-) diff --git a/libs/ui/CMakeLists.txt b/libs/ui/CMakeLists.txt index e2a7c65c..2dc35ac3 100644 --- a/libs/ui/CMakeLists.txt +++ b/libs/ui/CMakeLists.txt @@ -3,7 +3,7 @@ file(GLOB_RECURSE PSEMEK_UI_SOURCES RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" "sour psemek_add_library(psemek-ui ${PSEMEK_UI_HEADERS} ${PSEMEK_UI_SOURCES}) target_include_directories(psemek-ui PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include") -target_link_libraries(psemek-ui PUBLIC psemek-util psemek-log psemek-geom psemek-cg psemek-gfx psemek-async) +target_link_libraries(psemek-ui PUBLIC psemek-util psemek-log psemek-geom psemek-cg psemek-gfx psemek-async psemek-sdl2) psemek_add_resources(psemek-ui resources/cross_red_16x16.png psemek/ui/resources/cross_red_16x16_png diff --git a/libs/ui/include/psemek/ui/controller.hpp b/libs/ui/include/psemek/ui/controller.hpp index b5692d12..8866f27c 100644 --- a/libs/ui/include/psemek/ui/controller.hpp +++ b/libs/ui/include/psemek/ui/controller.hpp @@ -21,6 +21,7 @@ namespace psemek::ui bool event(mouse_move const & e); bool event(mouse_click const & e); bool event(mouse_wheel const & e); + bool event(key_press const & e); void render(gfx::render_target const & rt); diff --git a/libs/ui/include/psemek/ui/element.hpp b/libs/ui/include/psemek/ui/element.hpp index d4bac324..7a42f185 100644 --- a/libs/ui/include/psemek/ui/element.hpp +++ b/libs/ui/include/psemek/ui/element.hpp @@ -32,6 +32,7 @@ namespace psemek::ui virtual bool on_event(mouse_move const &) { return false; } virtual bool on_event(mouse_click const &) { return false; } virtual bool on_event(mouse_wheel const &) { return false; } + virtual bool on_event(key_press const &) { return false; } virtual struct shape const & shape() const = 0; virtual void reshape(geom::box const & bbox) = 0; diff --git a/libs/ui/include/psemek/ui/event.hpp b/libs/ui/include/psemek/ui/event.hpp index 722b74f7..3a5cc7eb 100644 --- a/libs/ui/include/psemek/ui/event.hpp +++ b/libs/ui/include/psemek/ui/event.hpp @@ -1,5 +1,7 @@ #pragma once +#include + #include #include @@ -30,6 +32,12 @@ namespace psemek::ui int delta; }; - using event_type_list = std::tuple; + struct key_press + { + SDL_Keycode key; + bool down; + }; + + using event_type_list = std::tuple; } diff --git a/libs/ui/source/controller.cpp b/libs/ui/source/controller.cpp index aebd51e9..b4d10868 100644 --- a/libs/ui/source/controller.cpp +++ b/libs/ui/source/controller.cpp @@ -139,6 +139,11 @@ namespace psemek::ui return impl().event(e); } + bool controller::event(key_press const & e) + { + return impl().event(e); + } + void controller::render(gfx::render_target const & rt) { rt.bind();