diff options
author | Yuri Roubinsky <chaosus89@gmail.com> | 2021-09-24 11:00:45 +0300 |
---|---|---|
committer | Yuri Roubinsky <chaosus89@gmail.com> | 2021-09-24 11:30:58 +0300 |
commit | 4e0552a4ffbead06d4a31ef944b37baf8ff7acef (patch) | |
tree | 396bf26b563ab13545be5a2b8985288cef3d349a | |
parent | 10801b90f99eb67b2999e3dc8f42cc82c7799f3e (diff) |
Add selection getter methods to `LineEdit`
-rw-r--r-- | doc/classes/LineEdit.xml | 18 | ||||
-rw-r--r-- | scene/gui/line_edit.cpp | 17 | ||||
-rw-r--r-- | scene/gui/line_edit.h | 3 |
3 files changed, 38 insertions, 0 deletions
diff --git a/doc/classes/LineEdit.xml b/doc/classes/LineEdit.xml index 834b5a41db..83e3f5b05a 100644 --- a/doc/classes/LineEdit.xml +++ b/doc/classes/LineEdit.xml @@ -82,6 +82,24 @@ Returns the scroll offset due to [member caret_column], as a number of characters. </description> </method> + <method name="get_selection_from_column" qualifiers="const"> + <return type="int" /> + <description> + Returns the selection begin column. + </description> + </method> + <method name="get_selection_to_column" qualifiers="const"> + <return type="int" /> + <description> + Returns the selection end column. + </description> + </method> + <method name="has_selection" qualifiers="const"> + <return type="bool" /> + <description> + Returns [code]true[/code] if the user has selected text. + </description> + </method> <method name="insert_text_at_caret"> <return type="void" /> <argument index="0" name="text" type="String" /> diff --git a/scene/gui/line_edit.cpp b/scene/gui/line_edit.cpp index d9acbeb828..3ec75eb4aa 100644 --- a/scene/gui/line_edit.cpp +++ b/scene/gui/line_edit.cpp @@ -1555,6 +1555,20 @@ void LineEdit::deselect() { update(); } +bool LineEdit::has_selection() const { + return selection.enabled; +} + +int LineEdit::get_selection_from_column() const { + ERR_FAIL_COND_V(!selection.enabled, -1); + return selection.begin; +} + +int LineEdit::get_selection_to_column() const { + ERR_FAIL_COND_V(!selection.enabled, -1); + return selection.end; +} + void LineEdit::selection_delete() { if (selection.enabled) { delete_text(selection.begin, selection.end); @@ -2089,6 +2103,9 @@ void LineEdit::_bind_methods() { 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("deselect"), &LineEdit::deselect); + ClassDB::bind_method(D_METHOD("has_selection"), &LineEdit::has_selection); + ClassDB::bind_method(D_METHOD("get_selection_from_column"), &LineEdit::get_selection_from_column); + ClassDB::bind_method(D_METHOD("get_selection_to_column"), &LineEdit::get_selection_to_column); ClassDB::bind_method(D_METHOD("set_text", "text"), &LineEdit::set_text); ClassDB::bind_method(D_METHOD("get_text"), &LineEdit::get_text); ClassDB::bind_method(D_METHOD("get_draw_control_chars"), &LineEdit::get_draw_control_chars); diff --git a/scene/gui/line_edit.h b/scene/gui/line_edit.h index e364a79c83..b8c34f9779 100644 --- a/scene/gui/line_edit.h +++ b/scene/gui/line_edit.h @@ -229,6 +229,9 @@ public: void select_all(); void selection_delete(); void deselect(); + bool has_selection() const; + int get_selection_from_column() const; + int get_selection_to_column() const; void delete_char(); void delete_text(int p_from_column, int p_to_column); |