summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRémi Verschelde <rverschelde@gmail.com>2024-01-03 15:47:03 +0100
committerRémi Verschelde <rverschelde@gmail.com>2024-01-03 15:47:03 +0100
commit5042f543ab2d2feeac219eedb60f7c5e2046be31 (patch)
treeea484ed92b6e540340be93b26a0ffaa717f61d76
parent27a9119b8a17786ad00b53bf0c662ee9aed81524 (diff)
parentcab48493d848c93ae8fa3b5843a4a24d782a1189 (diff)
downloadredot-engine-5042f543ab2d2feeac219eedb60f7c5e2046be31.tar.gz
Merge pull request #86460 from reach-satori/double_textchanged_emit
Fix double `text_changed` signal when overwriting selection in LineEdit
-rw-r--r--scene/gui/line_edit.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/scene/gui/line_edit.cpp b/scene/gui/line_edit.cpp
index 5cca09bcf6..1efe11a777 100644
--- a/scene/gui/line_edit.cpp
+++ b/scene/gui/line_edit.cpp
@@ -624,7 +624,12 @@ void LineEdit::gui_input(const Ref<InputEvent> &p_event) {
int prev_len = text.length();
insert_text_at_caret(ucodestr);
if (text.length() != prev_len) {
- _text_changed();
+ if (!text_changed_dirty) {
+ if (is_inside_tree()) {
+ callable_mp(this, &LineEdit::_text_changed).call_deferred();
+ }
+ text_changed_dirty = true;
+ }
}
accept_event();
return;