mirror of
https://github.com/godotengine/godot.git
synced 2025-10-19 16:03:29 +00:00
LineEdit
add member keep_editing_on_text_submit
.
Allow users to exit edit mode when Enter is pressed.
This commit is contained in:
parent
aa8d9b83f6
commit
e89c196a80
4 changed files with 21 additions and 5 deletions
|
@ -6,7 +6,7 @@
|
||||||
<description>
|
<description>
|
||||||
[LineEdit] provides an input field for editing a single line of text.
|
[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.
|
- 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.
|
- 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.
|
- Check [method edit], [method unedit], [method is_editing], and [signal editing_toggled] for more information.
|
||||||
[b]Important:[/b]
|
[b]Important:[/b]
|
||||||
|
@ -80,7 +80,7 @@
|
||||||
<return type="void" />
|
<return type="void" />
|
||||||
<description>
|
<description>
|
||||||
Allows entering edit mode whether the [LineEdit] is focused or not.
|
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>
|
</description>
|
||||||
</method>
|
</method>
|
||||||
<method name="get_menu" qualifiers="const">
|
<method name="get_menu" qualifiers="const">
|
||||||
|
@ -283,6 +283,9 @@
|
||||||
If [code]true[/code], the [LineEdit] doesn't display decoration.
|
If [code]true[/code], the [LineEdit] doesn't display decoration.
|
||||||
</member>
|
</member>
|
||||||
<member name="focus_mode" type="int" setter="set_focus_mode" getter="get_focus_mode" overrides="Control" enum="Control.FocusMode" default="2" />
|
<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="""">
|
<member name="language" type="String" setter="set_language" getter="get_language" default="""">
|
||||||
Language code used for line-breaking and text shaping algorithms. If left empty, current locale is used instead.
|
Language code used for line-breaking and text shaping algorithms. If left empty, current locale is used instead.
|
||||||
</member>
|
</member>
|
||||||
|
|
|
@ -644,8 +644,6 @@ void FindReplaceBar::_search_text_submitted(const String &p_text) {
|
||||||
} else {
|
} else {
|
||||||
search_next();
|
search_next();
|
||||||
}
|
}
|
||||||
|
|
||||||
callable_mp(search_text, &LineEdit::edit).call_deferred();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void FindReplaceBar::_replace_text_submitted(const String &p_text) {
|
void FindReplaceBar::_replace_text_submitted(const String &p_text) {
|
||||||
|
@ -753,6 +751,7 @@ FindReplaceBar::FindReplaceBar() {
|
||||||
|
|
||||||
// Search toolbar
|
// Search toolbar
|
||||||
search_text = memnew(LineEdit);
|
search_text = memnew(LineEdit);
|
||||||
|
search_text->set_keep_editing_on_text_submit(true);
|
||||||
vbc_lineedit->add_child(search_text);
|
vbc_lineedit->add_child(search_text);
|
||||||
search_text->set_placeholder(TTR("Find"));
|
search_text->set_placeholder(TTR("Find"));
|
||||||
search_text->set_tooltip_text(TTR("Find"));
|
search_text->set_tooltip_text(TTR("Find"));
|
||||||
|
|
|
@ -99,6 +99,14 @@ bool LineEdit::is_editing() const {
|
||||||
return editing;
|
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() {
|
void LineEdit::_close_ime_window() {
|
||||||
DisplayServer::WindowID wid = get_window() ? get_window()->get_window_id() : DisplayServer::INVALID_WINDOW_ID;
|
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)) {
|
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();
|
DisplayServer::get_singleton()->virtual_keyboard_hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (editing) {
|
if (editing && !keep_editing_on_text_submit) {
|
||||||
unedit();
|
unedit();
|
||||||
emit_signal(SNAME("editing_toggled"), false);
|
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("edit"), &LineEdit::edit);
|
||||||
ClassDB::bind_method(D_METHOD("unedit"), &LineEdit::unedit);
|
ClassDB::bind_method(D_METHOD("unedit"), &LineEdit::unedit);
|
||||||
ClassDB::bind_method(D_METHOD("is_editing"), &LineEdit::is_editing);
|
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("clear"), &LineEdit::clear);
|
||||||
ClassDB::bind_method(D_METHOD("select", "from", "to"), &LineEdit::select, DEFVAL(0), DEFVAL(-1));
|
ClassDB::bind_method(D_METHOD("select", "from", "to"), &LineEdit::select, DEFVAL(0), DEFVAL(-1));
|
||||||
ClassDB::bind_method(D_METHOD("select_all"), &LineEdit::select_all);
|
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, "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::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, "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, "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, "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");
|
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "virtual_keyboard_enabled"), "set_virtual_keyboard_enabled", "is_virtual_keyboard_enabled");
|
||||||
|
|
|
@ -87,6 +87,7 @@ private:
|
||||||
HorizontalAlignment alignment = HORIZONTAL_ALIGNMENT_LEFT;
|
HorizontalAlignment alignment = HORIZONTAL_ALIGNMENT_LEFT;
|
||||||
|
|
||||||
bool editing = false;
|
bool editing = false;
|
||||||
|
bool keep_editing_on_text_submit = false;
|
||||||
bool editable = false;
|
bool editable = false;
|
||||||
bool pass = false;
|
bool pass = false;
|
||||||
bool text_changed_dirty = false;
|
bool text_changed_dirty = false;
|
||||||
|
@ -266,6 +267,8 @@ public:
|
||||||
void edit();
|
void edit();
|
||||||
void unedit();
|
void unedit();
|
||||||
bool is_editing() const;
|
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;
|
bool has_ime_text() const;
|
||||||
void cancel_ime();
|
void cancel_ime();
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue