Explorar el Código

Merge pull request #19351 from guilhermefelipecgs/fix_reversed_text

Fixes to the new inspector
Max Hilbrunner hace 7 años
padre
commit
43748f67be
Se han modificado 4 ficheros con 18 adiciones y 11 borrados
  1. 12 5
      editor/editor_inspector.cpp
  2. 2 2
      editor/editor_inspector.h
  3. 3 3
      editor/editor_properties.cpp
  4. 1 1
      scene/gui/control.cpp

+ 12 - 5
editor/editor_inspector.cpp

@@ -1572,7 +1572,7 @@ void EditorInspector::_clear() {
 
 void EditorInspector::refresh() {
 
-	if (refresh_countdown > 0)
+	if (refresh_countdown > 0 || changing)
 		return;
 	refresh_countdown = EditorSettings::get_singleton()->get("docks/property_editor/auto_refresh_interval");
 }
@@ -1773,9 +1773,7 @@ void EditorInspector::_edit_set(const String &p_name, const Variant &p_value, bo
 		}
 		undo_redo->add_do_method(this, "emit_signal", _prop_edited, p_name);
 		undo_redo->add_undo_method(this, "emit_signal", _prop_edited, p_name);
-		changing++;
 		undo_redo->commit_action();
-		changing--;
 	}
 
 	if (editor_property_map.has(p_name)) {
@@ -1785,9 +1783,17 @@ void EditorInspector::_edit_set(const String &p_name, const Variant &p_value, bo
 	}
 }
 
-void EditorInspector::_property_changed(const String &p_path, const Variant &p_value) {
+void EditorInspector::_property_changed(const String &p_path, const Variant &p_value, bool changing) {
+
+	// The "changing" variable must be true for properties that trigger events as typing occurs,
+	// like "text_changed" signal. eg: Text property of Label, Button, RichTextLabel, etc.
+	if (changing)
+		this->changing++;
 
 	_edit_set(p_path, p_value, false, "");
+
+	if (changing)
+		this->changing--;
 }
 
 void EditorInspector::_property_changed_update_all(const String &p_path, const Variant &p_value) {
@@ -1961,8 +1967,8 @@ void EditorInspector::_changed_callback(Object *p_changed, const char *p_prop) {
 
 void EditorInspector::_bind_methods() {
 
+	ClassDB::bind_method("_property_changed", &EditorInspector::_property_changed, DEFVAL(false));
 	ClassDB::bind_method("_multiple_properties_changed", &EditorInspector::_multiple_properties_changed);
-	ClassDB::bind_method("_property_changed", &EditorInspector::_property_changed);
 	ClassDB::bind_method("_property_changed_update_all", &EditorInspector::_property_changed_update_all);
 
 	ClassDB::bind_method("_edit_request_change", &EditorInspector::_edit_request_change);
@@ -1974,6 +1980,7 @@ void EditorInspector::_bind_methods() {
 	ClassDB::bind_method("_property_selected", &EditorInspector::_property_selected);
 	ClassDB::bind_method("_resource_selected", &EditorInspector::_resource_selected);
 	ClassDB::bind_method("_object_id_selected", &EditorInspector::_object_id_selected);
+	ClassDB::bind_method("refresh", &EditorInspector::refresh);
 
 	ADD_SIGNAL(MethodInfo("property_keyed", PropertyInfo(Variant::STRING, "property")));
 	ADD_SIGNAL(MethodInfo("resource_selected", PropertyInfo(Variant::OBJECT, "res"), PropertyInfo(Variant::STRING, "prop")));

+ 2 - 2
editor/editor_inspector.h

@@ -245,7 +245,7 @@ class EditorInspector : public ScrollContainer {
 	bool read_only;
 	bool keying;
 
-	int refresh_countdown;
+	float refresh_countdown;
 	bool update_tree_pending;
 	StringName _prop_edited;
 	StringName property_selected;
@@ -256,7 +256,7 @@ class EditorInspector : public ScrollContainer {
 
 	void _edit_set(const String &p_name, const Variant &p_value, bool p_refresh_all, const String &p_changed_field);
 
-	void _property_changed(const String &p_path, const Variant &p_value);
+	void _property_changed(const String &p_path, const Variant &p_value, bool changing = false);
 	void _property_changed_update_all(const String &p_path, const Variant &p_value);
 	void _multiple_properties_changed(Vector<String> p_paths, Array p_values);
 	void _property_keyed(const String &p_path);

+ 3 - 3
editor/editor_properties.cpp

@@ -50,7 +50,7 @@ void EditorPropertyText::_text_changed(const String &p_string) {
 	if (updating)
 		return;
 
-	emit_signal("property_changed", get_edited_property(), p_string);
+	emit_signal("property_changed", get_edited_property(), p_string, true);
 }
 
 void EditorPropertyText::update_property() {
@@ -78,12 +78,12 @@ EditorPropertyText::EditorPropertyText() {
 
 void EditorPropertyMultilineText::_big_text_changed() {
 	text->set_text(big_text->get_text());
-	emit_signal("property_changed", get_edited_property(), big_text->get_text());
+	emit_signal("property_changed", get_edited_property(), big_text->get_text(), true);
 }
 
 void EditorPropertyMultilineText::_text_changed() {
 
-	emit_signal("property_changed", get_edited_property(), text->get_text());
+	emit_signal("property_changed", get_edited_property(), text->get_text(), true);
 }
 
 void EditorPropertyMultilineText::_open_big_text() {

+ 1 - 1
scene/gui/control.cpp

@@ -1385,7 +1385,7 @@ void Control::set_anchor(Margin p_margin, float p_anchor, bool p_keep_margin, bo
 	}
 
 	update();
-	_change_notify();
+	_change_notify("anchor");
 }
 
 void Control::_set_anchor(Margin p_margin, float p_anchor) {