Triple click in text editor now uses last mouse position for validity
Previously, you would be able to double click a word, followed by single-clicking another word on the same line, which would select the entire line. Now, it will only select the whole line if the mouse position has remained the same after the double click. This mimicks the behavior in most third party text editors. Fixes #51312.
This commit is contained in:
parent
974cc68fb4
commit
408401a642
2 changed files with 6 additions and 1 deletions
|
|
@ -2246,7 +2246,10 @@ void TextEdit::_gui_input(const Ref<InputEvent> &p_gui_input) {
|
|||
selection.selecting_column = col;
|
||||
}
|
||||
|
||||
if (!mb->is_double_click() && (OS::get_singleton()->get_ticks_msec() - last_dblclk) < 600 && cursor.line == prev_line) {
|
||||
const int triple_click_timeout = 600;
|
||||
const int triple_click_tolerance = 5;
|
||||
|
||||
if (!mb->is_double_click() && (OS::get_singleton()->get_ticks_msec() - last_dblclk) < triple_click_timeout && mb->get_position().distance_to(last_dblclk_pos) < triple_click_tolerance) {
|
||||
// Triple-click select line.
|
||||
selection.selecting_mode = SelectionMode::SELECTION_MODE_LINE;
|
||||
_update_selection_mode_line();
|
||||
|
|
@ -2256,6 +2259,7 @@ void TextEdit::_gui_input(const Ref<InputEvent> &p_gui_input) {
|
|||
selection.selecting_mode = SelectionMode::SELECTION_MODE_WORD;
|
||||
_update_selection_mode_word();
|
||||
last_dblclk = OS::get_singleton()->get_ticks_msec();
|
||||
last_dblclk_pos = mb->get_position();
|
||||
}
|
||||
|
||||
update();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue