|
@@ -3119,16 +3119,14 @@ void TextEdit::_gui_input(const Ref<InputEvent> &p_gui_input) {
|
|
|
if (selection.active) {
|
|
|
int ini = selection.from_line;
|
|
|
int end = selection.to_line;
|
|
|
+
|
|
|
for (int i = ini; i <= end; i++) {
|
|
|
- if (get_line(i).begins_with("#"))
|
|
|
- _remove_text(i, 0, i, 1);
|
|
|
+ _uncomment_line(i);
|
|
|
}
|
|
|
} else {
|
|
|
- if (get_line(cursor.line).begins_with("#")) {
|
|
|
- _remove_text(cursor.line, 0, cursor.line, 1);
|
|
|
- if (cursor.column >= get_line(cursor.line).length()) {
|
|
|
- cursor.column = MAX(0, get_line(cursor.line).length() - 1);
|
|
|
- }
|
|
|
+ _uncomment_line(cursor.line);
|
|
|
+ if (cursor.column >= get_line(cursor.line).length()) {
|
|
|
+ cursor.column = MAX(0, get_line(cursor.line).length() - 1);
|
|
|
}
|
|
|
}
|
|
|
update();
|
|
@@ -3208,6 +3206,24 @@ void TextEdit::_gui_input(const Ref<InputEvent> &p_gui_input) {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+void TextEdit::_uncomment_line(int p_line) {
|
|
|
+ String line_text = get_line(p_line);
|
|
|
+ for (int i = 0; i < line_text.length(); i++) {
|
|
|
+ if (line_text[i] == '#') {
|
|
|
+ _remove_text(p_line, i, p_line, i + 1);
|
|
|
+ if (p_line == selection.to_line && selection.to_column > line_text.length() - 1) {
|
|
|
+ selection.to_column -= 1;
|
|
|
+ if (selection.to_column >= selection.from_column) {
|
|
|
+ selection.active = false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return;
|
|
|
+ } else if (line_text[i] != '\t' && line_text[i] != ' ') {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
void TextEdit::_scroll_up(real_t p_delta) {
|
|
|
|
|
|
if (scrolling && smooth_scroll_enabled && SGN(target_v_scroll - v_scroll->get_value()) != SGN(-p_delta))
|
|
@@ -5910,6 +5926,9 @@ void TextEdit::set_line(int line, String new_text) {
|
|
|
if (cursor.line == line) {
|
|
|
cursor.column = MIN(cursor.column, new_text.length());
|
|
|
}
|
|
|
+ if (is_selection_active() && line == selection.to_line && selection.to_column > text[line].length()) {
|
|
|
+ selection.to_column = text[line].length();
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
void TextEdit::insert_at(const String &p_text, int at) {
|