Browse Source

Add a function to notify font users that the font changed. Closes #5774

Juan Linietsky 9 years ago
parent
commit
254d79a560
3 changed files with 12 additions and 0 deletions
  1. 5 0
      doc/base/classes.xml
  2. 6 0
      scene/resources/font.cpp
  3. 1 0
      scene/resources/font.h

+ 5 - 0
doc/base/classes.xml

@@ -12999,6 +12999,11 @@
 				Return the font descent (number of pixels below the baseline).
 			</description>
 		</method>
+		<method name="update_changes">
+			<description>
+				After editing a font (changing size, ascent, char rects, etc.). Call this function to propagate changes to controls that might use it.
+			</description>
+		</method>
 		<method name="get_height" qualifiers="const">
 			<return type="float">
 			</return>

+ 6 - 0
scene/resources/font.cpp

@@ -71,6 +71,11 @@ void Font::draw(RID p_canvas_item, const Point2& p_pos, const String& p_text, co
 	}
 }
 
+void Font::update_changes() {
+
+	emit_changed();
+}
+
 void Font::_bind_methods() {
 
 	ObjectTypeDB::bind_method(_MD("draw","canvas_item","pos","string","modulate","clip_w"),&Font::draw,DEFVAL(Color(1,1,1)),DEFVAL(-1));
@@ -80,6 +85,7 @@ void Font::_bind_methods() {
 	ObjectTypeDB::bind_method(_MD("is_distance_field_hint"),&Font::is_distance_field_hint);
 	ObjectTypeDB::bind_method(_MD("get_string_size","string"),&Font::get_string_size);
 	ObjectTypeDB::bind_method(_MD("draw_char","canvas_item","pos","char","next","modulate"),&Font::draw_char,DEFVAL(-1),DEFVAL(Color(1,1,1)));
+	ObjectTypeDB::bind_method(_MD("update_changes"),&Font::update_changes);
 
 }
 

+ 1 - 0
scene/resources/font.h

@@ -61,6 +61,7 @@ public:
 	void draw_halign(RID p_canvas_item, const Point2& p_pos, HAlign p_align,float p_width,const String& p_text,const Color& p_modulate=Color(1,1,1)) const;
 	virtual float draw_char(RID p_canvas_item, const Point2& p_pos,  CharType p_char, CharType p_next=0,const Color& p_modulate=Color(1,1,1)) const=0;
 
+	void update_changes();
 	Font();
 
 };