summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRémi Verschelde <rverschelde@gmail.com>2018-01-07 00:31:09 +0100
committerGitHub <noreply@github.com>2018-01-07 00:31:09 +0100
commit7159f533c3f7f7494b69ce588a43d2809b948c97 (patch)
tree0334f30487dfd82886c0127c7eac6cf61e1cd197
parentb33bf23c6a2a6806a9ae48bd6477812710e9ae7e (diff)
parentb3ad2538d082fc191ad2695e68d6b4032a7e31bf (diff)
Merge pull request #15421 from ianb96/center_viewport_fix
Fix center_viewport_to_cursor out of size error
-rw-r--r--scene/gui/text_edit.cpp7
1 files changed, 4 insertions, 3 deletions
diff --git a/scene/gui/text_edit.cpp b/scene/gui/text_edit.cpp
index 881cdc48f7..a3f59b54fc 100644
--- a/scene/gui/text_edit.cpp
+++ b/scene/gui/text_edit.cpp
@@ -3641,9 +3641,10 @@ void TextEdit::center_viewport_to_cursor() {
int visible_rows = get_visible_rows();
if (h_scroll->is_visible_in_tree())
visible_rows -= ((h_scroll->get_combined_minimum_size().height - 1) / get_row_height());
-
- int max_ofs = text.size() - (scroll_past_end_of_file_enabled ? 1 : num_lines_from(text.size() - 1, -visible_rows));
- cursor.line_ofs = CLAMP(cursor.line - num_lines_from(cursor.line - visible_rows / 2, -visible_rows / 2), 0, max_ofs);
+ if (text.size() >= visible_rows) {
+ int max_ofs = text.size() - (scroll_past_end_of_file_enabled ? 1 : MAX(num_lines_from(text.size() - 1, -visible_rows), 0));
+ cursor.line_ofs = CLAMP(cursor.line - num_lines_from(MAX(cursor.line - visible_rows / 2, 0), -visible_rows / 2), 0, max_ofs);
+ }
int cursor_x = get_column_x_offset(cursor.column, text[cursor.line]);
if (cursor_x > (cursor.x_ofs + visible_width))