Merge pull request #111552 from robob27/scrollbar-width-fix
Fix scrollbar render with RTL scroll following visible enabled
This commit is contained in:
@ -2303,6 +2303,11 @@ RID RichTextLabel::get_focused_accessibility_element() const {
|
|||||||
return get_accessibility_element();
|
return get_accessibility_element();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void RichTextLabel::_prepare_scroll_anchor() {
|
||||||
|
scroll_w = vscroll->get_combined_minimum_size().width;
|
||||||
|
vscroll->set_anchor_and_offset(SIDE_LEFT, ANCHOR_END, -scroll_w);
|
||||||
|
}
|
||||||
|
|
||||||
void RichTextLabel::_notification(int p_what) {
|
void RichTextLabel::_notification(int p_what) {
|
||||||
switch (p_what) {
|
switch (p_what) {
|
||||||
case NOTIFICATION_ACCESSIBILITY_INVALIDATE: {
|
case NOTIFICATION_ACCESSIBILITY_INVALIDATE: {
|
||||||
@ -2417,6 +2422,10 @@ void RichTextLabel::_notification(int p_what) {
|
|||||||
queue_redraw();
|
queue_redraw();
|
||||||
} break;
|
} break;
|
||||||
|
|
||||||
|
case NOTIFICATION_READY: {
|
||||||
|
_prepare_scroll_anchor();
|
||||||
|
} break;
|
||||||
|
|
||||||
case NOTIFICATION_THEME_CHANGED: {
|
case NOTIFICATION_THEME_CHANGED: {
|
||||||
_stop_thread();
|
_stop_thread();
|
||||||
main->first_invalid_font_line.store(0); // Invalidate all lines.
|
main->first_invalid_font_line.store(0); // Invalidate all lines.
|
||||||
@ -2588,6 +2597,7 @@ void RichTextLabel::_notification(int p_what) {
|
|||||||
from_line++;
|
from_line++;
|
||||||
}
|
}
|
||||||
if (scroll_follow_visible_characters && scroll_active) {
|
if (scroll_follow_visible_characters && scroll_active) {
|
||||||
|
scroll_visible = follow_vc_pos > 0;
|
||||||
vscroll->set_visible(follow_vc_pos > 0);
|
vscroll->set_visible(follow_vc_pos > 0);
|
||||||
}
|
}
|
||||||
if (has_focus() && get_tree()->is_accessibility_enabled()) {
|
if (has_focus() && get_tree()->is_accessibility_enabled()) {
|
||||||
@ -3726,9 +3736,8 @@ _FORCE_INLINE_ float RichTextLabel::_update_scroll_exceeds(float p_total_height,
|
|||||||
if (exceeds != scroll_visible) {
|
if (exceeds != scroll_visible) {
|
||||||
if (exceeds) {
|
if (exceeds) {
|
||||||
scroll_visible = true;
|
scroll_visible = true;
|
||||||
scroll_w = vscroll->get_combined_minimum_size().width;
|
_prepare_scroll_anchor();
|
||||||
vscroll->show();
|
vscroll->show();
|
||||||
vscroll->set_anchor_and_offset(SIDE_LEFT, ANCHOR_END, -scroll_w);
|
|
||||||
} else {
|
} else {
|
||||||
scroll_visible = false;
|
scroll_visible = false;
|
||||||
scroll_w = 0;
|
scroll_w = 0;
|
||||||
|
|||||||
@ -591,6 +591,8 @@ private:
|
|||||||
void _invalidate_accessibility();
|
void _invalidate_accessibility();
|
||||||
void _invalidate_current_line(ItemFrame *p_frame);
|
void _invalidate_current_line(ItemFrame *p_frame);
|
||||||
|
|
||||||
|
void _prepare_scroll_anchor();
|
||||||
|
|
||||||
void _thread_function(void *p_userdata);
|
void _thread_function(void *p_userdata);
|
||||||
void _thread_end();
|
void _thread_end();
|
||||||
void _stop_thread();
|
void _stop_thread();
|
||||||
|
|||||||
Reference in New Issue
Block a user