Browse Source

Merge pull request #60737 from kleonc/debug-inspect-nested-dict-array-fix-3x

[3.x] Fix inspecting nested dictionaries/arrays when debugging
Rémi Verschelde 3 năm trước cách đây
mục cha
commit
40cec55963
1 tập tin đã thay đổi với 2 bổ sung7 xóa
  1. 2 7
      editor/script_editor_debugger.cpp

+ 2 - 7
editor/script_editor_debugger.cpp

@@ -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;