Fix "fill" justification in RichTextLabel to only affect lines that have automatically wrapped.

This commit is contained in:
Sean McCarthy 2018-10-25 16:19:15 -07:00
parent 13582354fd
commit 0ce185629d
1 changed files with 4 additions and 1 deletions

View File

@ -220,13 +220,14 @@ int RichTextLabel::_process_line(ItemFrame *p_frame, const Vector2 &p_ofs, int &
case ALIGN_LEFT: l.offset_caches.push_back(0); break; \ case ALIGN_LEFT: l.offset_caches.push_back(0); break; \
case ALIGN_CENTER: l.offset_caches.push_back(((p_width - margin) - used) / 2); break; \ case ALIGN_CENTER: l.offset_caches.push_back(((p_width - margin) - used) / 2); break; \
case ALIGN_RIGHT: l.offset_caches.push_back(((p_width - margin) - used)); break; \ case ALIGN_RIGHT: l.offset_caches.push_back(((p_width - margin) - used)); break; \
case ALIGN_FILL: l.offset_caches.push_back((p_width - margin) - used /*+spaces_size*/); break; \ case ALIGN_FILL: l.offset_caches.push_back(line_wrapped ? ((p_width - margin) - used) : 0); break; \
} \ } \
l.height_caches.push_back(line_height); \ l.height_caches.push_back(line_height); \
l.ascent_caches.push_back(line_ascent); \ l.ascent_caches.push_back(line_ascent); \
l.descent_caches.push_back(line_descent); \ l.descent_caches.push_back(line_descent); \
l.space_caches.push_back(spaces); \ l.space_caches.push_back(spaces); \
} \ } \
line_wrapped = false; \
y += line_height + get_constant(SceneStringNames::get_singleton()->line_separation); \ y += line_height + get_constant(SceneStringNames::get_singleton()->line_separation); \
line_height = 0; \ line_height = 0; \
line_ascent = 0; \ line_ascent = 0; \
@ -254,6 +255,7 @@ int RichTextLabel::_process_line(ItemFrame *p_frame, const Vector2 &p_ofs, int &
l.minimum_width = MAX(l.minimum_width, m_width); \ l.minimum_width = MAX(l.minimum_width, m_width); \
} \ } \
if (wofs + m_width > p_width) { \ if (wofs + m_width > p_width) { \
line_wrapped = true; \
if (p_mode == PROCESS_CACHE) { \ if (p_mode == PROCESS_CACHE) { \
if (spaces > 0) \ if (spaces > 0) \
spaces -= 1; \ spaces -= 1; \
@ -298,6 +300,7 @@ int RichTextLabel::_process_line(ItemFrame *p_frame, const Vector2 &p_ofs, int &
int rchar = 0; int rchar = 0;
int lh = 0; int lh = 0;
bool line_is_blank = true; bool line_is_blank = true;
bool line_wrapped = false;
int fh = 0; int fh = 0;
while (it) { while (it) {