From 29c21ac5904e212c5837dc39a70d6fa9da6f8bd1 Mon Sep 17 00:00:00 2001 From: markdibarry Date: Wed, 9 Feb 2022 15:02:46 -0500 Subject: [PATCH] Add get_content_width method Adds a get_content_width method to RichTextLabel --- doc/classes/RichTextLabel.xml | 6 ++++++ scene/gui/rich_text_label.cpp | 9 +++++++++ scene/gui/rich_text_label.h | 1 + 3 files changed, 16 insertions(+) diff --git a/doc/classes/RichTextLabel.xml b/doc/classes/RichTextLabel.xml index 95dffd3e284..6a2812bb93f 100644 --- a/doc/classes/RichTextLabel.xml +++ b/doc/classes/RichTextLabel.xml @@ -55,6 +55,12 @@ Returns the height of the content. + + + + Returns the width of the content. + + diff --git a/scene/gui/rich_text_label.cpp b/scene/gui/rich_text_label.cpp index 4865b9770e1..86e5afcb7cb 100644 --- a/scene/gui/rich_text_label.cpp +++ b/scene/gui/rich_text_label.cpp @@ -4157,6 +4157,14 @@ int RichTextLabel::get_content_height() const { return total_height; } +int RichTextLabel::get_content_width() const { + int total_width = 0; + for (int i = 0; i < main->lines.size(); i++) { + total_width = MAX(total_width, main->lines[i].offset.x + main->lines[i].text_buf->get_size().x); + } + return total_width; +} + #ifndef DISABLE_DEPRECATED // People will be very angry, if their texts get erased, because of #39148. (3.x -> 4.0) // Although some people may not used bbcode_text, so we only overwrite, if bbcode_text is not empty. @@ -4279,6 +4287,7 @@ void RichTextLabel::_bind_methods() { ClassDB::bind_method(D_METHOD("get_visible_paragraph_count"), &RichTextLabel::get_visible_paragraph_count); ClassDB::bind_method(D_METHOD("get_content_height"), &RichTextLabel::get_content_height); + ClassDB::bind_method(D_METHOD("get_content_width"), &RichTextLabel::get_content_width); ClassDB::bind_method(D_METHOD("parse_expressions_for_values", "expressions"), &RichTextLabel::parse_expressions_for_values); diff --git a/scene/gui/rich_text_label.h b/scene/gui/rich_text_label.h index e79244f2e43..ea3a08d7bd4 100644 --- a/scene/gui/rich_text_label.h +++ b/scene/gui/rich_text_label.h @@ -554,6 +554,7 @@ public: int get_visible_line_count() const; int get_content_height() const; + int get_content_width() const; VScrollBar *get_v_scroll_bar() { return vscroll; }