From 8cd11fdae6e075fa445b1c26decf3f8184394253 Mon Sep 17 00:00:00 2001 From: Leroy Hopson Date: Sun, 25 Feb 2024 22:06:58 +1300 Subject: [PATCH] fix(term): prevent double keyboard input Disconnects the "gui_input" signal as the _gui_input() override is working as expected now. Having this signal connected was causing it to be called twice for every input. --- addons/godot_xterm/native/src/terminal.cpp | 2 -- test/test_rendering.gd | 7 +++++++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/addons/godot_xterm/native/src/terminal.cpp b/addons/godot_xterm/native/src/terminal.cpp index 02adb19..cde35e7 100644 --- a/addons/godot_xterm/native/src/terminal.cpp +++ b/addons/godot_xterm/native/src/terminal.cpp @@ -646,8 +646,6 @@ void Terminal::initialize_input() { selection_timer->set_wait_time(0.05); selection_timer->connect("timeout", Callable(this, "_on_selection_held")); add_child(selection_timer, false, INTERNAL_MODE_FRONT); - - connect("gui_input", Callable(this, "_on_gui_input")); } void Terminal::_handle_key_input(Ref event) { diff --git a/test/test_rendering.gd b/test/test_rendering.gd index 5503838..5fa0c23 100644 --- a/test/test_rendering.gd +++ b/test/test_rendering.gd @@ -57,6 +57,13 @@ class TestKeyPressed: await wait_for_signal(terminal.key_pressed, 1) assert_signal_emitted(terminal, "key_pressed") + func test_key_pressed_emitted_only_once_per_key_input(): + input_event.keycode = KEY_B + input_event.unicode = "b".unicode_at(0) + + await wait_for_signal(terminal.key_pressed, 1) + assert_signal_emit_count(terminal, "key_pressed", 1) + func test_key_pressed_emits_interpreted_key_input_as_first_param(): input_event.keycode = KEY_UP input_event.unicode = 0