diff options
author | Gen <z.rz2323721@gmail.com> | 2015-04-30 12:47:05 +0800 |
---|---|---|
committer | Gen <z.rz2323721@gmail.com> | 2015-04-30 12:47:05 +0800 |
commit | c322eddffb6ac9abc709cfdc7bdc4466bdb7b80a (patch) | |
tree | d21fc134241006531c729ca16457ddda52b0c6b8 | |
parent | 57d571a1c40ac58ca47a68dbe24ab1ca717dabed (diff) |
fixed a autowrap bug when word is too length.
-rw-r--r-- | scene/gui/label.cpp | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/scene/gui/label.cpp b/scene/gui/label.cpp index 4069fbb553..38e7435aeb 100644 --- a/scene/gui/label.cpp +++ b/scene/gui/label.cpp @@ -99,7 +99,7 @@ void Label::_notification(int p_what) { int chars_total=0; int vbegin=0,vsep=0; - + if (lines_total && lines_total < lines_visible) { @@ -136,10 +136,9 @@ void Label::_notification(int p_what) { if (!wc) return; - + int c = 0; int line=0; while(wc) { - /* handle lines not meant to be drawn quickly */ if (line>line_to) break; @@ -253,7 +252,7 @@ void Label::_notification(int p_what) { } for (int i=0;i<from->word_len;i++) { - + if (visible_chars < 0 || chars_total<visible_chars) { CharType c = text[i+pos]; CharType n = text[i+pos+1]; @@ -486,7 +485,7 @@ void Label::regenerate_word_cache() { } - if ((autowrap && line_width>=width && last_width<width) || insert_newline) { + if ((autowrap && line_width>=width && last && last->char_pos >= 0) || insert_newline) { WordCache *wc = memnew( WordCache ); if (word_cache) { @@ -525,7 +524,7 @@ void Label::regenerate_word_cache() { set_max(line_count); word_cache_dirty=false; - + } |