diff --git a/scene/gui/rich_text_label.cpp b/scene/gui/rich_text_label.cpp index 1689831770..2bc1cdeb3f 100644 --- a/scene/gui/rich_text_label.cpp +++ b/scene/gui/rich_text_label.cpp @@ -229,7 +229,8 @@ RichTextLabel::Item *RichTextLabel::_get_item_at_pos(RichTextLabel::Item *p_item } } break; case ITEM_TABLE: { - offset += 1; + ItemTable *table = static_cast(it); + offset += table->char_count; } break; default: break; @@ -817,6 +818,7 @@ float RichTextLabel::_shape_line(ItemFrame *p_frame, int p_line, const Ref } idx++; } + table->char_count = t_char_count; // Compute width for each column. const int available_width = p_width - l.offset.x - theme_cache.table_h_separation * col_count; diff --git a/scene/gui/rich_text_label.h b/scene/gui/rich_text_label.h index 3c154eb7ea..e2ea4d98df 100644 --- a/scene/gui/rich_text_label.h +++ b/scene/gui/rich_text_label.h @@ -387,6 +387,7 @@ private: int align_to_row = -1; int total_width = 0; int total_height = 0; + int char_count = 0; InlineAlignment inline_align = INLINE_ALIGNMENT_TOP; ItemTable() { type = ITEM_TABLE; } };