diff options
| author | Yuri Sizov <yuris@humnom.net> | 2023-07-21 17:54:11 +0200 |
|---|---|---|
| committer | Yuri Sizov <yuris@humnom.net> | 2023-07-21 17:54:11 +0200 |
| commit | e38dc581992f4963b8d3590193fb77c1810ff8eb (patch) | |
| tree | 57943772d4b60d26196835728e47d5efc5b3e44f | |
| parent | a3a7e1fa3bf0ca0aab1462bc095b9e1b464f383b (diff) | |
| parent | e2536d0643cf23fe1854c7eac0ecdb0295bb82e6 (diff) | |
| download | redot-engine-e38dc581992f4963b8d3590193fb77c1810ff8eb.tar.gz | |
Merge pull request #76759 from Nidjo123/master
Fix RichTextLabel character line and paragraph index getters
| -rw-r--r-- | scene/gui/rich_text_label.cpp | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/scene/gui/rich_text_label.cpp b/scene/gui/rich_text_label.cpp index 7cd346056a..db7196fb07 100644 --- a/scene/gui/rich_text_label.cpp +++ b/scene/gui/rich_text_label.cpp @@ -5812,10 +5812,12 @@ int RichTextLabel::get_character_line(int p_char) { int to_line = main->first_invalid_line.load(); for (int i = 0; i < to_line; i++) { MutexLock lock(main->lines[i].text_buf->get_mutex()); - if (main->lines[i].char_offset < p_char && p_char <= main->lines[i].char_offset + main->lines[i].char_count) { + int char_offset = main->lines[i].char_offset; + int char_count = main->lines[i].char_count; + if (char_offset <= p_char && p_char < char_offset + char_count) { for (int j = 0; j < main->lines[i].text_buf->get_line_count(); j++) { Vector2i range = main->lines[i].text_buf->get_line_range(j); - if (main->lines[i].char_offset + range.x < p_char && p_char <= main->lines[i].char_offset + range.y) { + if (char_offset + range.x <= p_char && p_char <= char_offset + range.y) { return line_count; } line_count++; @@ -5830,13 +5832,11 @@ int RichTextLabel::get_character_line(int p_char) { int RichTextLabel::get_character_paragraph(int p_char) { _validate_line_caches(); - int para_count = 0; int to_line = main->first_invalid_line.load(); for (int i = 0; i < to_line; i++) { - if (main->lines[i].char_offset < p_char && p_char <= main->lines[i].char_offset + main->lines[i].char_count) { - return para_count; - } else { - para_count++; + int char_offset = main->lines[i].char_offset; + if (char_offset <= p_char && p_char < char_offset + main->lines[i].char_count) { + return i; } } return -1; |
