You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-11 13:10:58 +00:00
Fix clone line undo history and extra new line, issue 21811
This commit is contained in:
@@ -1060,7 +1060,7 @@ void CodeTextEditor::delete_lines() {
|
|||||||
text_editor->end_complex_operation();
|
text_editor->end_complex_operation();
|
||||||
}
|
}
|
||||||
|
|
||||||
void CodeTextEditor::code_lines_down() {
|
void CodeTextEditor::clone_lines_down() {
|
||||||
int from_line = text_editor->cursor_get_line();
|
int from_line = text_editor->cursor_get_line();
|
||||||
int to_line = text_editor->cursor_get_line();
|
int to_line = text_editor->cursor_get_line();
|
||||||
int column = text_editor->cursor_get_column();
|
int column = text_editor->cursor_get_column();
|
||||||
@@ -1072,22 +1072,21 @@ void CodeTextEditor::code_lines_down() {
|
|||||||
}
|
}
|
||||||
int next_line = to_line + 1;
|
int next_line = to_line + 1;
|
||||||
|
|
||||||
if (to_line >= text_editor->get_line_count() - 1) {
|
bool caret_at_start = text_editor->cursor_get_line() == from_line;
|
||||||
text_editor->set_line(to_line, text_editor->get_line(to_line) + "\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
text_editor->begin_complex_operation();
|
text_editor->begin_complex_operation();
|
||||||
for (int i = from_line; i <= to_line; i++) {
|
for (int i = from_line; i <= to_line; i++) {
|
||||||
|
|
||||||
text_editor->unfold_line(i);
|
text_editor->unfold_line(i);
|
||||||
if (i >= text_editor->get_line_count() - 1) {
|
text_editor->set_line(next_line - 1, text_editor->get_line(next_line - 1) + "\n");
|
||||||
text_editor->set_line(i, text_editor->get_line(i) + "\n");
|
text_editor->set_line(next_line, text_editor->get_line(i));
|
||||||
}
|
|
||||||
String line_clone = text_editor->get_line(i);
|
|
||||||
text_editor->insert_at(line_clone, next_line);
|
|
||||||
next_line++;
|
next_line++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (caret_at_start) {
|
||||||
|
text_editor->cursor_set_line(to_line + 1);
|
||||||
|
} else {
|
||||||
|
text_editor->cursor_set_line(next_line - 1);
|
||||||
|
}
|
||||||
|
|
||||||
text_editor->cursor_set_column(column);
|
text_editor->cursor_set_column(column);
|
||||||
if (text_editor->is_selection_active()) {
|
if (text_editor->is_selection_active()) {
|
||||||
text_editor->select(to_line + 1, text_editor->get_selection_from_column(), next_line - 1, text_editor->get_selection_to_column());
|
text_editor->select(to_line + 1, text_editor->get_selection_from_column(), next_line - 1, text_editor->get_selection_to_column());
|
||||||
|
|||||||
@@ -203,7 +203,7 @@ public:
|
|||||||
void move_lines_up();
|
void move_lines_up();
|
||||||
void move_lines_down();
|
void move_lines_down();
|
||||||
void delete_lines();
|
void delete_lines();
|
||||||
void code_lines_down();
|
void clone_lines_down();
|
||||||
|
|
||||||
void goto_line(int p_line);
|
void goto_line(int p_line);
|
||||||
void goto_line_selection(int p_line, int p_begin, int p_end);
|
void goto_line_selection(int p_line, int p_begin, int p_end);
|
||||||
|
|||||||
@@ -773,7 +773,7 @@ void ScriptTextEditor::_edit_option(int p_op) {
|
|||||||
} break;
|
} break;
|
||||||
case EDIT_CLONE_DOWN: {
|
case EDIT_CLONE_DOWN: {
|
||||||
|
|
||||||
code_editor->code_lines_down();
|
code_editor->clone_lines_down();
|
||||||
} break;
|
} break;
|
||||||
case EDIT_TOGGLE_FOLD_LINE: {
|
case EDIT_TOGGLE_FOLD_LINE: {
|
||||||
|
|
||||||
|
|||||||
@@ -263,7 +263,7 @@ void ShaderEditor::_menu_option(int p_option) {
|
|||||||
shader_editor->delete_lines();
|
shader_editor->delete_lines();
|
||||||
} break;
|
} break;
|
||||||
case EDIT_CLONE_DOWN: {
|
case EDIT_CLONE_DOWN: {
|
||||||
shader_editor->code_lines_down();
|
shader_editor->clone_lines_down();
|
||||||
} break;
|
} break;
|
||||||
case EDIT_TOGGLE_COMMENT: {
|
case EDIT_TOGGLE_COMMENT: {
|
||||||
|
|
||||||
|
|||||||
@@ -360,7 +360,7 @@ void TextEditor::_edit_option(int p_op) {
|
|||||||
} break;
|
} break;
|
||||||
case EDIT_CLONE_DOWN: {
|
case EDIT_CLONE_DOWN: {
|
||||||
|
|
||||||
code_editor->code_lines_down();
|
code_editor->clone_lines_down();
|
||||||
} break;
|
} break;
|
||||||
case EDIT_TOGGLE_FOLD_LINE: {
|
case EDIT_TOGGLE_FOLD_LINE: {
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user