Skip to content

Commit

Permalink
Merge pull request #46527 from kuruk-mm/3_2_lineedit
Browse files Browse the repository at this point in the history
  • Loading branch information
akien-mga authored Apr 29, 2021
2 parents 880b830 + 74b3021 commit d252ef4
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 6 deletions.
34 changes: 28 additions & 6 deletions scene/gui/line_edit.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -88,12 +88,34 @@ void LineEdit::_gui_input(Ref<InputEvent> p_event) {

} else {

if (b->is_doubleclick() && selecting_enabled) {

selection.enabled = true;
selection.begin = 0;
selection.end = text.length();
selection.doubleclick = true;
if (selecting_enabled) {
if (!b->is_doubleclick() && (OS::get_singleton()->get_ticks_msec() - selection.last_dblclk) < 600) {
// Triple-click select all.
selection.enabled = true;
selection.begin = 0;
selection.end = text.length();
selection.doubleclick = true;
selection.last_dblclk = 0;
} else if (b->is_doubleclick()) {
// Double-click select word.
selection.enabled = true;
int beg = cursor_pos;
int end = beg;
bool symbol = beg < text.length() && is_symbol(text[beg]);
while (beg > 0 && text[beg - 1] > 32 && (symbol == is_symbol(text[beg - 1]))) {
beg--;
}
while (end < text.length() && text[end + 1] > 32 && (symbol == is_symbol(text[end + 1]))) {
end++;
}
if (end < text.length()) {
end += 1;
}
selection.begin = beg;
selection.end = end;
selection.doubleclick = true;
selection.last_dblclk = OS::get_singleton()->get_ticks_msec();
}
}

selection.drag_attempt = false;
Expand Down
1 change: 1 addition & 0 deletions scene/gui/line_edit.h
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,7 @@ class LineEdit : public Control {
bool creating;
bool doubleclick;
bool drag_attempt;
uint64_t last_dblclk = 0;
} selection;

struct TextOperation {
Expand Down

0 comments on commit d252ef4

Please sign in to comment.