diff options
author | RĂ©mi Verschelde <rverschelde@gmail.com> | 2020-01-06 22:26:14 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-01-06 22:26:14 +0100 |
commit | e2a6cae0c75eba84029d44449b658123ed8d6614 (patch) | |
tree | 35e14907df0714ba2d0f4b5328ef03ed58f257ee /scene/gui | |
parent | 24281cd9c9836e3efefed1fcc152195e35d7e82f (diff) | |
parent | e5a00186212d895d5a87c8e74b61d1f80748c9cc (diff) |
Merge pull request #34867 from volzhs/calculate-label-size-2
Calculate label size more accurately
Diffstat (limited to 'scene/gui')
-rw-r--r-- | scene/gui/label.cpp | 11 |
1 files changed, 4 insertions, 7 deletions
diff --git a/scene/gui/label.cpp b/scene/gui/label.cpp index fa795361a8..df88b34f9d 100644 --- a/scene/gui/label.cpp +++ b/scene/gui/label.cpp @@ -103,8 +103,7 @@ void Label::_notification(int p_what) { int lines_visible = (size.y + line_spacing) / font_h; - // ceiling to ensure autowrapping does not cut text - int space_w = Math::ceil(font->get_char_size(' ').width); + real_t space_w = font->get_char_size(' ').width; int chars_total = 0; int vbegin = 0, vsep = 0; @@ -390,10 +389,9 @@ void Label::regenerate_word_cache() { real_t current_word_size = 0; int word_pos = 0; - int line_width = 0; + real_t line_width = 0; int space_count = 0; - // ceiling to ensure autowrapping does not cut text - int space_width = Math::ceil(font->get_char_size(' ').width); + real_t space_width = font->get_char_size(' ').width; int line_spacing = get_constant("line_spacing"); line_count = 1; total_char_cache = 0; @@ -454,10 +452,9 @@ void Label::regenerate_word_cache() { if (current_word_size == 0) { word_pos = i; } - // ceiling to ensure autowrapping does not cut text char_width = font->get_char_size(current, xl_text[i + 1]).width; current_word_size += char_width; - line_width += Math::ceil(char_width); + line_width += char_width; total_char_cache++; // allow autowrap to cut words when they exceed line width |