Merge pull request #29785 from eligt/fix-richtext-alignment

Fix RichTextLabel alignment tags not working properly
This commit is contained in:
Rémi Verschelde 2019-06-15 10:34:22 +02:00 committed by GitHub
commit 0a3c21d999
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 14 additions and 3 deletions

View File

@ -307,6 +307,13 @@ int RichTextLabel::_process_line(ItemFrame *p_frame, const Vector2 &p_ofs, int &
switch (it->type) {
case ITEM_ALIGN: {
ItemAlign *align_it = static_cast<ItemAlign *>(it);
align = align_it->align;
} break;
case ITEM_TEXT: {
ItemText *text = static_cast<ItemText *>(it);
@ -1411,10 +1418,14 @@ void RichTextLabel::_add_item(Item *p_item, bool p_enter, bool p_ensure_newline)
if (p_enter)
current = p_item;
if (p_ensure_newline && current_frame->lines[current_frame->lines.size() - 1].from) {
if (p_ensure_newline) {
Item *from = current_frame->lines[current_frame->lines.size() - 1].from;
// only create a new line for Item types that generate content/layout, ignore those that represent formatting/styling
if (from && from->type != ITEM_FONT && from->type != ITEM_COLOR && from->type != ITEM_UNDERLINE && from->type != ITEM_STRIKETHROUGH) {
_invalidate_current_line(current_frame);
current_frame->lines.resize(current_frame->lines.size() + 1);
}
}
if (current_frame->lines[current_frame->lines.size() - 1].from == NULL) {
current_frame->lines.write[current_frame->lines.size() - 1].from = p_item;