Browse Source

Fix bug where leading and trailing spaces werent taken into account with center and right allignment.

(cherry picked from commit 4318ad94acb2f1f3dabfed1d5159da6fe013b529)
mvl 5 years ago
parent
commit
be13df0a08
1 changed files with 17 additions and 1 deletions
  1. 17 1
      scene/gui/label.cpp

+ 17 - 1
scene/gui/label.cpp

@@ -191,7 +191,7 @@ void Label::_notification(int p_what) {
 			while (to && to->char_pos >= 0) {
 
 				taken += to->pixel_width;
-				if (to != from && to->space_count) {
+				if (to->space_count) {
 					spaces += to->space_count;
 				}
 				to = to->next;
@@ -438,6 +438,22 @@ void Label::regenerate_word_cache() {
 				wc->space_count = space_count;
 				current_word_size = 0;
 				space_count = 0;
+			} else if ((i == xl_text.length() || current == '\n') && last != nullptr && space_count != 0) {
+				//in case there are trailing white spaces we add a placeholder word cache with just the spaces
+				WordCache *wc = memnew(WordCache);
+				if (word_cache) {
+					last->next = wc;
+				} else {
+					word_cache = wc;
+				}
+				last = wc;
+
+				wc->pixel_width = 0;
+				wc->char_pos = 0;
+				wc->word_len = 0;
+				wc->space_count = space_count;
+				current_word_size = 0;
+				space_count = 0;
 			}
 
 			if (current == '\n') {