diff options
Diffstat (limited to 'scene/gui/text_edit.cpp')
-rw-r--r-- | scene/gui/text_edit.cpp | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/scene/gui/text_edit.cpp b/scene/gui/text_edit.cpp index a46d77c61e..2b2ea54dde 100644 --- a/scene/gui/text_edit.cpp +++ b/scene/gui/text_edit.cpp @@ -286,6 +286,7 @@ void TextEdit::Text::invalidate_all_lines() { } tab_size_dirty = false; + max_width = -1; _calculate_max_line_width(); } @@ -404,10 +405,12 @@ void TextEdit::Text::remove_range(int p_from_line, int p_to_line) { text.resize(text.size() - diff); if (dirty_height) { + line_height = -1; _calculate_line_height(); } if (dirty_width) { + max_width = -1; _calculate_max_line_width(); } } @@ -5174,7 +5177,7 @@ void TextEdit::add_selection_for_next_occurrence() { const String &highlighted_text = get_selected_text(caret); int column = get_selection_from_column(caret) + 1; - int line = get_caret_line(caret); + int line = get_selection_from_line(caret); const Point2i next_occurrence = search(highlighted_text, SEARCH_MATCH_CASE, line, column); @@ -5188,6 +5191,7 @@ void TextEdit::add_selection_for_next_occurrence() { if (new_caret != -1) { select(next_occurrence.y, next_occurrence.x, next_occurrence.y, end, new_caret); + _unhide_carets(); adjust_viewport_to_caret(new_caret); merge_overlapping_carets(); } @@ -5211,8 +5215,8 @@ void TextEdit::skip_selection_for_next_occurrence() { // Due to const and &(reference) presence, ternary operator is a way to avoid errors and warnings. const String &searched_text = has_selection(caret) ? get_selected_text(caret) : get_word_under_caret(caret); - int column = (has_selection(caret) ? get_selection_from_column(caret) : get_caret_column(caret)) + 1; - int line = get_caret_line(caret); + int column = get_selection_from_column(caret) + 1; + int line = get_selection_from_line(caret); const Point2i next_occurrence = search(searched_text, SEARCH_MATCH_CASE, line, column); @@ -5220,12 +5224,13 @@ void TextEdit::skip_selection_for_next_occurrence() { return; } - int to_column = (has_selection(caret) ? get_selection_to_column(caret) : get_caret_column(caret)) + 1; + int to_column = get_selection_to_column(caret) + 1; int end = next_occurrence.x + (to_column - column); int new_caret = add_caret(next_occurrence.y, end); if (new_caret != -1) { select(next_occurrence.y, next_occurrence.x, next_occurrence.y, end, new_caret); + _unhide_carets(); adjust_viewport_to_caret(new_caret); merge_overlapping_carets(); } |