From 5adc7e397e9df3b8e2fb13e9c35836fb1ab69c17 Mon Sep 17 00:00:00 2001 From: Maxim Kulkin Date: Mon, 30 Jan 2023 08:03:34 -0500 Subject: [PATCH] Fix LineEdit not consuming events The most important issue is LineEdit not consuming "ui_text_submit" event which makes pressing Enter after editing escape to other components causing unwanted interactions. Also fix handling mouse button interactions not consuming some events. Also implement early return in case we know which event type it is and there is no point in checking other event types. PS I'm also suspicious that mouse motion events also need to be consumed, but haven't explored those cases. --- scene/gui/line_edit.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/scene/gui/line_edit.cpp b/scene/gui/line_edit.cpp index dba08e16cbd..04126c0b976 100644 --- a/scene/gui/line_edit.cpp +++ b/scene/gui/line_edit.cpp @@ -272,6 +272,7 @@ void LineEdit::gui_input(const Ref &p_event) { } } grab_focus(); + accept_event(); return; } @@ -381,6 +382,7 @@ void LineEdit::gui_input(const Ref &p_event) { } queue_redraw(); + return; } Ref m = p_event; @@ -405,6 +407,8 @@ void LineEdit::gui_input(const Ref &p_event) { drag_caret_force_displayed = true; set_caret_at_pixel_pos(m->get_position().x); } + + return; } Ref k = p_event; @@ -458,6 +462,9 @@ void LineEdit::gui_input(const Ref &p_event) { menu->reset_size(); menu->popup(); menu->grab_focus(); + + accept_event(); + return; } } @@ -467,6 +474,8 @@ void LineEdit::gui_input(const Ref &p_event) { if (DisplayServer::get_singleton()->has_feature(DisplayServer::FEATURE_VIRTUAL_KEYBOARD) && virtual_keyboard_enabled) { DisplayServer::get_singleton()->virtual_keyboard_hide(); } + accept_event(); + return; } if (is_shortcut_keys_enabled()) { @@ -606,6 +615,7 @@ void LineEdit::gui_input(const Ref &p_event) { _text_changed(); } accept_event(); + return; } } }