Browse Source

LinkButton's text now is automatically translated

(cherry picked from commit 9cecabb1866656fb53845ea42d8ba685977bc915)
LeaoLuciano 4 years ago
parent
commit
138e995177
2 changed files with 16 additions and 6 deletions
  1. 15 6
      scene/gui/link_button.cpp
  2. 1 0
      scene/gui/link_button.h

+ 15 - 6
scene/gui/link_button.cpp

@@ -30,10 +30,16 @@
 
 #include "link_button.h"
 
-void LinkButton::set_text(const String &p_text) {
+#include "core/translation.h"
 
+void LinkButton::set_text(const String &p_text) {
+	if (text == p_text) {
+		return;
+	}
 	text = p_text;
+	xl_text = tr(p_text);
 	update();
+	_change_notify("text");
 	minimum_size_changed();
 }
 
@@ -53,14 +59,17 @@ LinkButton::UnderlineMode LinkButton::get_underline_mode() const {
 }
 
 Size2 LinkButton::get_minimum_size() const {
-
-	return get_font("font")->get_string_size(text);
+	return get_font("font")->get_string_size(xl_text);
 }
 
 void LinkButton::_notification(int p_what) {
 
 	switch (p_what) {
-
+		case NOTIFICATION_TRANSLATION_CHANGED: {
+			xl_text = tr(text);
+			minimum_size_changed();
+			update();
+		} break;
 		case NOTIFICATION_DRAW: {
 
 			RID ci = get_canvas_item();
@@ -108,11 +117,11 @@ void LinkButton::_notification(int p_what) {
 
 			Ref<Font> font = get_font("font");
 
-			draw_string(font, Vector2(0, font->get_ascent()), text, color);
+			draw_string(font, Vector2(0, font->get_ascent()), xl_text, color);
 
 			if (do_underline) {
 				int underline_spacing = get_constant("underline_spacing");
-				int width = font->get_string_size(text).width;
+				int width = font->get_string_size(xl_text).width;
 				int y = font->get_ascent() + underline_spacing;
 
 				draw_line(Vector2(0, y), Vector2(width, y), color);

+ 1 - 0
scene/gui/link_button.h

@@ -47,6 +47,7 @@ public:
 
 private:
 	String text;
+	String xl_text;
 	UnderlineMode underline_mode;
 
 protected: