diff options
-rw-r--r-- | scene/gui/label.cpp | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/scene/gui/label.cpp b/scene/gui/label.cpp index 83b36daff4..4069fbb553 100644 --- a/scene/gui/label.cpp +++ b/scene/gui/label.cpp @@ -438,6 +438,25 @@ void Label::regenerate_word_cache() { current_word_size=0; space_count=0; } + float current_width = font->get_char_size(current).width; + if ((autowrap && line_width+current_width>=width && last_width<width)) { + + WordCache *wc = memnew( WordCache ); + if (word_cache) { + last->next=wc; + } else { + word_cache=wc; + } + last=wc; + + wc->pixel_width=0; + wc->char_pos=WordCache::CHAR_WRAPLINE; + + line_width=0; + line_count++; + + + } WordCache *wc = memnew( WordCache ); if (word_cache) { last->next=wc; @@ -446,7 +465,7 @@ void Label::regenerate_word_cache() { } last=wc; - wc->pixel_width=font->get_char_size(current).width; + wc->pixel_width=current_width; wc->char_pos=i; wc->word_len=1; wc->space_count=space_count; |