diff options
author | Yan Pas <yanp.bugz@gmail.com> | 2018-02-16 19:50:11 +0300 |
---|---|---|
committer | Yan Pas <yanp.bugz@gmail.com> | 2018-02-17 17:56:13 +0300 |
commit | 7368978a48127a4c238f51bd0dbdf4c8d091809f (patch) | |
tree | 083d8c3090972c6954d9802a07203cc990af5eeb /editor/plugins | |
parent | 49dc473ff184683485c0e69f4f1d49c63f6be6a7 (diff) |
Delete all selected lines using the delete line shortcut in script editor
Diffstat (limited to 'editor/plugins')
-rw-r--r-- | editor/plugins/script_text_editor.cpp | 26 |
1 files changed, 20 insertions, 6 deletions
diff --git a/editor/plugins/script_text_editor.cpp b/editor/plugins/script_text_editor.cpp index 87e92f0807..aeba0ff930 100644 --- a/editor/plugins/script_text_editor.cpp +++ b/editor/plugins/script_text_editor.cpp @@ -935,13 +935,27 @@ void ScriptTextEditor::_edit_option(int p_op) { Ref<Script> scr = get_edited_script(); if (scr.is_null()) return; - tx->begin_complex_operation(); - int line = tx->cursor_get_line(); - tx->set_line(tx->cursor_get_line(), ""); - tx->backspace_at_cursor(); - tx->unfold_line(line); - tx->cursor_set_line(line); + if (tx->is_selection_active()) { + int to_line = tx->get_selection_to_line(); + int from_line = tx->get_selection_from_line(); + int count = Math::abs(to_line - from_line) + 1; + while (count) { + tx->set_line(tx->cursor_get_line(), ""); + tx->backspace_at_cursor(); + count--; + if (count) + tx->unfold_line(from_line); + } + tx->cursor_set_line(from_line - 1); + tx->deselect(); + } else { + int line = tx->cursor_get_line(); + tx->set_line(tx->cursor_get_line(), ""); + tx->backspace_at_cursor(); + tx->unfold_line(line); + tx->cursor_set_line(line); + } tx->end_complex_operation(); } break; case EDIT_CLONE_DOWN: { |