diff --git a/src/cata_imgui.cpp b/src/cata_imgui.cpp index dd61907cb41d3..7db097919f9c2 100644 --- a/src/cata_imgui.cpp +++ b/src/cata_imgui.cpp @@ -74,6 +74,11 @@ void cataimgui::client::end_frame() ImTui_ImplText_RenderDrawData( ImGui::GetDrawData() ); ImTui_ImplNcurses_DrawScreen(); + ImGuiIO &io = ImGui::GetIO(); + for( const int &code : cata_input_trail ) { + io.AddKeyEvent( cata_key_to_imgui( code ), false ); + } + cata_input_trail.clear(); } void cataimgui::client::upload_color_pair( int p, int f, int b ) @@ -261,6 +266,11 @@ void cataimgui::client::end_frame() { ImGui::Render(); ImGui_ImplSDLRenderer2_RenderDrawData( ImGui::GetDrawData() ); + ImGuiIO &io = ImGui::GetIO(); + for( const int &code : cata_input_trail ) { + io.AddKeyEvent( cata_key_to_imgui( code ), false ); + } + cata_input_trail.clear(); } void cataimgui::client::process_input( void *input ) @@ -328,7 +338,7 @@ void cataimgui::client::process_cata_input( const input_event &event ) int code = event.get_first_input(); ImGuiIO &io = ImGui::GetIO(); io.AddKeyEvent( cata_key_to_imgui( code ), true ); - io.AddKeyEvent( cata_key_to_imgui( code ), false ); + cata_input_trail.push_back( code ); } } diff --git a/src/cata_imgui.h b/src/cata_imgui.h index 1bb3789aebc7c..c89153ed53009 100644 --- a/src/cata_imgui.h +++ b/src/cata_imgui.h @@ -43,6 +43,7 @@ enum class dialog_result { class client { + std::vector cata_input_trail; public: #if !(defined(TILES) || defined(WIN32)) client();