1
0
mirror of https://github.com/godotengine/godot.git synced 2025-11-29 16:16:38 +00:00

Shortcut and Bind to Remove Secondary Carets

Adds the bind `ui_text_remove_secondary_carets` to TextEdit, with ESC as the default shortcut.

When the bind is performed, if the TextEdit has multiple carets, `remove_secondary_carets` is called and secondary carets are removed.

This is useful when multiple selects are performed with `add_select_for_next_occurrence` #67644 or when multiple multiple carets are manually added, then it's possible to go back to a single caret with a shortcut.

Closes #67991
This commit is contained in:
Alfred Reinold Baudisch
2022-10-31 16:55:47 +01:00
parent 2ccd827453
commit fcff978763
4 changed files with 19 additions and 0 deletions

View File

@@ -2067,6 +2067,11 @@ void TextEdit::gui_input(const Ref<InputEvent> &p_gui_input) {
accept_event();
return;
}
if (k->is_action("ui_text_remove_secondary_carets", true) && _should_remove_secondary_carets()) {
remove_secondary_carets();
accept_event();
return;
}
if (k->is_action("ui_cut", true)) {
cut();
accept_event();
@@ -2819,6 +2824,10 @@ void TextEdit::_move_caret_document_end(bool p_select) {
}
}
bool TextEdit::_should_remove_secondary_carets() {
return carets.size() > 1;
}
void TextEdit::_get_above_below_caret_line_column(int p_old_line, int p_old_wrap_index, int p_old_column, bool p_below, int &p_new_line, int &p_new_column, int p_last_fit_x) const {
if (p_last_fit_x == -1) {
p_last_fit_x = _get_column_x_offset_for_line(p_old_column, p_old_line, p_old_column);