Browse Source

Merge pull request #93968 from bruvzg/font_prev_update

[Editor] Update font preview directly instead of invalidating property list.
Rémi Verschelde 1 year ago
parent
commit
f1749c691f

+ 16 - 0
editor/plugins/font_config_plugin.cpp

@@ -950,6 +950,12 @@ void FontPreview::_notification(int p_what) {
 				font->draw_string(get_canvas_item(), Point2(0, font->get_height(font_size) + 2 * EDSCALE), TTR("Unable to preview font"), HORIZONTAL_ALIGNMENT_CENTER, get_size().x, font_size, text_color);
 			}
 		} break;
+
+		case NOTIFICATION_EXIT_TREE: {
+			if (prev_font.is_valid()) {
+				prev_font->disconnect_changed(callable_mp(this, &FontPreview::_preview_changed));
+			}
+		} break;
 	}
 }
 
@@ -960,7 +966,17 @@ Size2 FontPreview::get_minimum_size() const {
 }
 
 void FontPreview::set_data(const Ref<Font> &p_f) {
+	if (prev_font.is_valid()) {
+		prev_font->disconnect_changed(callable_mp(this, &FontPreview::_preview_changed));
+	}
 	prev_font = p_f;
+	if (prev_font.is_valid()) {
+		prev_font->connect_changed(callable_mp(this, &FontPreview::_preview_changed));
+	}
+	queue_redraw();
+}
+
+void FontPreview::_preview_changed() {
 	queue_redraw();
 }
 

+ 2 - 0
editor/plugins/font_config_plugin.h

@@ -225,6 +225,8 @@ protected:
 
 	Ref<Font> prev_font;
 
+	void _preview_changed();
+
 public:
 	virtual Size2 get_minimum_size() const override;
 

+ 0 - 1
scene/resources/font.cpp

@@ -3213,7 +3213,6 @@ void SystemFont::_update_base_font() {
 	}
 
 	_invalidate_rids();
-	notify_property_list_changed();
 }
 
 void SystemFont::reset_state() {