Fix inspecting nested dictionaries/arrays when debugging

This commit is contained in:
kleonc 2022-05-04 00:49:34 +02:00
parent 37fd526ddd
commit 2e4e8bb87c

View file

@ -672,7 +672,8 @@ void ScriptEditorDebugger::_parse_message(const String &p_msg, const Array &p_da
new_props_added++;
debugObj->prop_values[pinfo.name] = var;
} else {
if (bool(Variant::evaluate(Variant::OP_NOT_EQUAL, debugObj->prop_values[pinfo.name], var))) {
// Compare using `deep_equal` so dictionaries/arrays will be compared by value.
if (!debugObj->prop_values[pinfo.name].deep_equal(var)) {
debugObj->prop_values[pinfo.name] = var;
changed.insert(pinfo.name);
}
@ -715,7 +716,6 @@ void ScriptEditorDebugger::_parse_message(const String &p_msg, const Array &p_da
vmem_total->set_tooltip(TTR("Bytes:") + " " + itos(total));
vmem_total->set_text(String::humanize_size(total));
} else if (p_msg == "stack_dump") {
stack_dump->clear();
TreeItem *r = stack_dump->create_item();
@ -801,7 +801,6 @@ void ScriptEditorDebugger::_parse_message(const String &p_msg, const Array &p_da
variables->update();
inspector->edit(variables);
} else if (p_msg == "output") {
//OUT
for (int i = 0; i < p_data.size(); i++) {
@ -837,7 +836,6 @@ void ScriptEditorDebugger::_parse_message(const String &p_msg, const Array &p_da
EditorNode::get_log()->add_message(str, msg_type);
}
} else if (p_msg == "performance") {
Array arr = p_data[0];
Vector<float> p;
@ -871,7 +869,6 @@ void ScriptEditorDebugger::_parse_message(const String &p_msg, const Array &p_da
}
perf_history.push_front(p);
perf_draw->update();
} else if (p_msg == "error") {
// Should have at least two elements, error array and stack items count.
ERR_FAIL_COND_MSG(p_data.size() < 2, "Malformed error message from script debugger.");
@ -999,11 +996,9 @@ void ScriptEditorDebugger::_parse_message(const String &p_msg, const Array &p_da
} else {
error_count++;
}
} else if (p_msg == "profile_sig") {
//cache a signature
profiler_signature[p_data[1]] = p_data[0];
} else if (p_msg == "profile_frame" || p_msg == "profile_total") {
EditorProfiler::Metric metric;
metric.valid = true;