diff options
author | Oliver Gutierrez <ogutsua@gmail.com> | 2018-04-11 14:53:13 +0100 |
---|---|---|
committer | Oliver Gutierrez <ogutsua@gmail.com> | 2018-04-11 14:53:13 +0100 |
commit | 63a472aea4fd485570388566eb08790493133787 (patch) | |
tree | 8b322eacbb72f3c23422b1a5aa928dcc1ca3c65c | |
parent | d87307d850186d27d2c27c5916ec8c4744c14979 (diff) |
RichTextLabel, doc: Added new method to get total content height
-rw-r--r-- | doc/classes/RichTextLabel.xml | 7 | ||||
-rw-r--r-- | scene/gui/rich_text_label.cpp | 13 | ||||
-rw-r--r-- | scene/gui/rich_text_label.h | 2 |
3 files changed, 19 insertions, 3 deletions
diff --git a/doc/classes/RichTextLabel.xml b/doc/classes/RichTextLabel.xml index 49bb1aed45..7fd7162aeb 100644 --- a/doc/classes/RichTextLabel.xml +++ b/doc/classes/RichTextLabel.xml @@ -75,6 +75,13 @@ Returns the number of visible lines. </description> </method> + <method name="get_content_height"> + <return type="int"> + </return> + <description> + Returns the height of the content. + </description> + </method> <method name="newline"> <return type="void"> </return> diff --git a/scene/gui/rich_text_label.cpp b/scene/gui/rich_text_label.cpp index 6bfc4d4dee..7ae410e163 100644 --- a/scene/gui/rich_text_label.cpp +++ b/scene/gui/rich_text_label.cpp @@ -676,9 +676,7 @@ void RichTextLabel::_scroll_changed(double) { void RichTextLabel::_update_scroll() { - int total_height = 0; - if (main->lines.size()) - total_height = main->lines[main->lines.size() - 1].height_accum_cache + get_stylebox("normal")->get_minimum_size().height; + int total_height = get_content_height(); bool exceeds = total_height > get_size().height && scroll_active; @@ -2030,6 +2028,13 @@ float RichTextLabel::get_percent_visible() const { return percent_visible; } +int RichTextLabel::get_content_height() { + int total_height = 0; + if (main->lines.size()) + total_height = main->lines[main->lines.size() - 1].height_accum_cache + get_stylebox("normal")->get_minimum_size().height; + return total_height; +} + void RichTextLabel::_bind_methods() { ClassDB::bind_method(D_METHOD("_gui_input"), &RichTextLabel::_gui_input); @@ -2096,6 +2101,8 @@ void RichTextLabel::_bind_methods() { ClassDB::bind_method(D_METHOD("get_line_count"), &RichTextLabel::get_line_count); ClassDB::bind_method(D_METHOD("get_visible_line_count"), &RichTextLabel::get_visible_line_count); + ClassDB::bind_method(D_METHOD("get_content_height"), &RichTextLabel::get_content_height); + ADD_GROUP("BBCode", "bbcode_"); ADD_PROPERTY(PropertyInfo(Variant::BOOL, "bbcode_enabled"), "set_use_bbcode", "is_using_bbcode"); ADD_PROPERTY(PropertyInfo(Variant::STRING, "bbcode_text", PROPERTY_HINT_MULTILINE_TEXT), "set_bbcode", "get_bbcode"); diff --git a/scene/gui/rich_text_label.h b/scene/gui/rich_text_label.h index 83938cff61..ee4f43ce7d 100644 --- a/scene/gui/rich_text_label.h +++ b/scene/gui/rich_text_label.h @@ -340,6 +340,8 @@ public: int get_line_count() const; int get_visible_line_count() const; + int get_content_height(); + VScrollBar *get_v_scroll() { return vscroll; } virtual CursorShape get_cursor_shape(const Point2 &p_pos) const; |