浏览代码

fixed a autowrap bug when word is too length.

Gen 10 年之前
父节点
当前提交
c322eddffb
共有 1 个文件被更改,包括 5 次插入6 次删除
  1. 5 6
      scene/gui/label.cpp

+ 5 - 6
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;
-		
+
 }