LineEdit add member keep_editing_on_text_submit.

Allow users to exit edit mode when Enter is pressed.
This commit is contained in:
Mounir Tohami 2025-01-02 23:41:27 +02:00
parent aa8d9b83f6
commit e89c196a80
4 changed files with 21 additions and 5 deletions

View file

@ -99,6 +99,14 @@ bool LineEdit::is_editing() const {
return editing;
}
void LineEdit::set_keep_editing_on_text_submit(bool p_enabled) {
keep_editing_on_text_submit = p_enabled;
}
bool LineEdit::is_editing_kept_on_text_submit() const {
return keep_editing_on_text_submit;
}
void LineEdit::_close_ime_window() {
DisplayServer::WindowID wid = get_window() ? get_window()->get_window_id() : DisplayServer::INVALID_WINDOW_ID;
if (wid == DisplayServer::INVALID_WINDOW_ID || !DisplayServer::get_singleton()->has_feature(DisplayServer::FEATURE_IME)) {
@ -773,7 +781,7 @@ void LineEdit::gui_input(const Ref<InputEvent> &p_event) {
DisplayServer::get_singleton()->virtual_keyboard_hide();
}
if (editing) {
if (editing && !keep_editing_on_text_submit) {
unedit();
emit_signal(SNAME("editing_toggled"), false);
}
@ -2791,6 +2799,8 @@ void LineEdit::_bind_methods() {
ClassDB::bind_method(D_METHOD("edit"), &LineEdit::edit);
ClassDB::bind_method(D_METHOD("unedit"), &LineEdit::unedit);
ClassDB::bind_method(D_METHOD("is_editing"), &LineEdit::is_editing);
ClassDB::bind_method(D_METHOD("set_keep_editing_on_text_submit", "enable"), &LineEdit::set_keep_editing_on_text_submit);
ClassDB::bind_method(D_METHOD("is_editing_kept_on_text_submit"), &LineEdit::is_editing_kept_on_text_submit);
ClassDB::bind_method(D_METHOD("clear"), &LineEdit::clear);
ClassDB::bind_method(D_METHOD("select", "from", "to"), &LineEdit::select, DEFVAL(0), DEFVAL(-1));
ClassDB::bind_method(D_METHOD("select_all"), &LineEdit::select_all);
@ -2921,6 +2931,7 @@ void LineEdit::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::INT, "alignment", PROPERTY_HINT_ENUM, "Left,Center,Right,Fill"), "set_horizontal_alignment", "get_horizontal_alignment");
ADD_PROPERTY(PropertyInfo(Variant::INT, "max_length", PROPERTY_HINT_RANGE, "0,1000,1,or_greater"), "set_max_length", "get_max_length");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "editable"), "set_editable", "is_editable");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "keep_editing_on_text_submit"), "set_keep_editing_on_text_submit", "is_editing_kept_on_text_submit");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "expand_to_text_length"), "set_expand_to_text_length_enabled", "is_expand_to_text_length_enabled");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "context_menu_enabled"), "set_context_menu_enabled", "is_context_menu_enabled");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "virtual_keyboard_enabled"), "set_virtual_keyboard_enabled", "is_virtual_keyboard_enabled");