Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

LineEdit add member keep_editing_on_text_submit #100240

Merged
merged 1 commit into from
Jan 3, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 5 additions & 2 deletions doc/classes/LineEdit.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<description>
[LineEdit] provides an input field for editing a single line of text.
- When the [LineEdit] control is focused using the keyboard arrow keys, it will only gain focus and not enter edit mode.
- To enter edit mode, click on the control with the mouse or press the [code]ui_text_submit[/code] action (by default [kbd]Enter[/kbd] or [kbd]Kp Enter[/kbd]).
- To enter edit mode, click on the control with the mouse, see also [member keep_editing_on_text_submit].
- To exit edit mode, press [code]ui_text_submit[/code] or [code]ui_cancel[/code] (by default [kbd]Escape[/kbd]) actions.
- Check [method edit], [method unedit], [method is_editing], and [signal editing_toggled] for more information.
[b]Important:[/b]
Expand Down Expand Up @@ -80,7 +80,7 @@
<return type="void" />
<description>
Allows entering edit mode whether the [LineEdit] is focused or not.
Use [method Callable.call_deferred] if you want to enter edit mode on [signal text_submitted].
See also [member keep_editing_on_text_submit].
</description>
</method>
<method name="get_menu" qualifiers="const">
Expand Down Expand Up @@ -283,6 +283,9 @@
If [code]true[/code], the [LineEdit] doesn't display decoration.
</member>
<member name="focus_mode" type="int" setter="set_focus_mode" getter="get_focus_mode" overrides="Control" enum="Control.FocusMode" default="2" />
<member name="keep_editing_on_text_submit" type="bool" setter="set_keep_editing_on_text_submit" getter="is_editing_kept_on_text_submit" default="false">
If [code]true[/code], the [LineEdit] will not exit edit mode when text is submitted by pressing [code]ui_text_submit[/code] action (by default: [kbd]Enter[/kbd] or [kbd]Kp Enter[/kbd]).
</member>
<member name="language" type="String" setter="set_language" getter="get_language" default="&quot;&quot;">
Language code used for line-breaking and text shaping algorithms. If left empty, current locale is used instead.
</member>
Expand Down
3 changes: 1 addition & 2 deletions editor/code_editor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -644,8 +644,6 @@ void FindReplaceBar::_search_text_submitted(const String &p_text) {
} else {
search_next();
}

callable_mp(search_text, &LineEdit::edit).call_deferred();
}

void FindReplaceBar::_replace_text_submitted(const String &p_text) {
Expand Down Expand Up @@ -753,6 +751,7 @@ FindReplaceBar::FindReplaceBar() {

// Search toolbar
search_text = memnew(LineEdit);
search_text->set_keep_editing_on_text_submit(true);
vbc_lineedit->add_child(search_text);
search_text->set_placeholder(TTR("Find"));
search_text->set_tooltip_text(TTR("Find"));
Expand Down
13 changes: 12 additions & 1 deletion scene/gui/line_edit.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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)) {
Expand Down Expand Up @@ -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);
}
Expand Down Expand Up @@ -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);
Expand Down Expand Up @@ -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");
Expand Down
3 changes: 3 additions & 0 deletions scene/gui/line_edit.h
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,7 @@ class LineEdit : public Control {
HorizontalAlignment alignment = HORIZONTAL_ALIGNMENT_LEFT;

bool editing = false;
bool keep_editing_on_text_submit = false;
bool editable = false;
bool pass = false;
bool text_changed_dirty = false;
Expand Down Expand Up @@ -266,6 +267,8 @@ class LineEdit : public Control {
void edit();
void unedit();
bool is_editing() const;
void set_keep_editing_on_text_submit(bool p_enabled);
bool is_editing_kept_on_text_submit() const;

bool has_ime_text() const;
void cancel_ime();
Expand Down