Add selection getter methods to LineEdit

Co-authored-by: Yuri Roubinsky <chaosus89@gmail.com>
This commit is contained in:
Yuri Roubinsky 2021-09-24 11:00:45 +03:00 committed by Marcel Admiraal
parent 8f4f384131
commit e54a4646c7
3 changed files with 38 additions and 0 deletions

View file

@ -74,6 +74,24 @@
Returns the scroll offset due to [member caret_position], 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="menu_option">
<return type="void" />
<argument index="0" name="option" type="int" />

View file

@ -1584,6 +1584,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);
@ -1956,6 +1970,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("set_placeholder", "text"), &LineEdit::set_placeholder);

View file

@ -187,6 +187,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);