diff options
author | RĂ©mi Verschelde <remi@verschelde.fr> | 2022-09-07 23:27:08 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-09-07 23:27:08 +0200 |
commit | 5803a1ddc5024bcea6fa5482bee206ccac94d62e (patch) | |
tree | 340ceeaf004702dc9cfd24de93c0a49e27b9bfc7 | |
parent | 337e4d185af0ff0ea2dba60abecd4af50b9d10f8 (diff) | |
parent | ac1f2b378fb669e298a1e61d27617f4561c1af60 (diff) |
Merge pull request #65498 from bruvzg/fix_rtl_updating
[RTL] Stop threaded RTL auto-redrawing as soon as text processing is finished, instead of waiting for first redraw.
-rw-r--r-- | scene/gui/rich_text_label.cpp | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/scene/gui/rich_text_label.cpp b/scene/gui/rich_text_label.cpp index 72f5de170c..c936fe9738 100644 --- a/scene/gui/rich_text_label.cpp +++ b/scene/gui/rich_text_label.cpp @@ -2563,7 +2563,9 @@ bool RichTextLabel::_find_layout_subitem(Item *from, Item *to) { void RichTextLabel::_thread_function(void *self) { RichTextLabel *rtl = reinterpret_cast<RichTextLabel *>(self); + rtl->set_physics_process_internal(true); rtl->_process_line_caches(); + rtl->set_physics_process_internal(false); rtl->updating.store(false); rtl->call_deferred(SNAME("queue_redraw")); } @@ -2679,7 +2681,6 @@ bool RichTextLabel::_validate_line_caches() { loaded.store(true); thread.start(RichTextLabel::_thread_function, reinterpret_cast<void *>(this)); loading_started = OS::get_singleton()->get_ticks_msec(); - set_physics_process_internal(true); return false; } else { _process_line_caches(); @@ -4367,12 +4368,12 @@ int RichTextLabel::get_visible_paragraph_count() const { } void RichTextLabel::scroll_to_line(int p_line) { - _validate_line_caches(); - if (p_line <= 0) { vscroll->set_value(0); return; } + _validate_line_caches(); + int line_count = 0; int to_line = main->first_invalid_line.load(); for (int i = 0; i < to_line; i++) { |