Fixes to the new inspector
- Fix inspector dock not updating tree for main resource; - Fixes the inspector input text reverted during typing; - Add method bind for "refresh" used by MultiNodeEdit;
This commit is contained in:
parent
a9acdd84b7
commit
709948aa5a
|
@ -1567,7 +1567,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");
|
||||
}
|
||||
|
@ -1768,9 +1768,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)) {
|
||||
|
@ -1780,9 +1778,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) {
|
||||
|
@ -1956,8 +1962,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);
|
||||
|
@ -1969,6 +1975,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")));
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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() {
|
||||
|
|
|
@ -1411,7 +1411,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) {
|
||||
|
|
Loading…
Reference in New Issue