ソースを参照

Delete all selected lines using the delete line shortcut in script editor

Yan Pas 7 年 前
コミット
7368978a48
1 ファイル変更20 行追加6 行削除
  1. 20 6
      editor/plugins/script_text_editor.cpp

+ 20 - 6
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: {