summaryrefslogtreecommitdiff
path: root/editor/editor_inspector.cpp
diff options
context:
space:
mode:
authorFabio Alessandrelli <fabio.alessandrelli@gmail.com>2021-12-03 16:23:32 +0100
committerFabio Alessandrelli <fabio.alessandrelli@gmail.com>2022-01-07 15:48:37 +0100
commit98b147b319883e874f3b0987b11368aee22a52f4 (patch)
treeb82d19f8b1b3c017bae1b9e47c6cf987e4224790 /editor/editor_inspector.cpp
parentfcc2648e18f0b6bcfd2b4e70829078346dc74b36 (diff)
[Editor] Fix inspector keying signals argument count.
The second parameter of the signals `EditorInspector.property_keyed` and `EditorProperty.property_keyed_with_value` can be NIL, causing the event to fire with less arguments when using `emit_signal` that accepts Variant arguments, so we use the pointer version instead.
Diffstat (limited to 'editor/editor_inspector.cpp')
-rw-r--r--editor/editor_inspector.cpp14
1 files changed, 10 insertions, 4 deletions
diff --git a/editor/editor_inspector.cpp b/editor/editor_inspector.cpp
index d01954a5f3..75e518e050 100644
--- a/editor/editor_inspector.cpp
+++ b/editor/editor_inspector.cpp
@@ -3205,7 +3205,10 @@ void EditorInspector::_property_keyed(const String &p_path, bool p_advance) {
return;
}
- emit_signal(SNAME("property_keyed"), p_path, object->get(p_path), p_advance); //second param is deprecated
+ // The second parameter could be null, causing the event to fire with less arguments, so use the pointer call which preserves it.
+ const Variant args[3] = { p_path, object->get(p_path), p_advance };
+ const Variant *argp[3] = { &args[0], &args[1], &args[2] };
+ emit_signal(SNAME("property_keyed"), argp, 3);
}
void EditorInspector::_property_deleted(const String &p_path) {
@@ -3213,7 +3216,7 @@ void EditorInspector::_property_deleted(const String &p_path) {
return;
}
- emit_signal(SNAME("property_deleted"), p_path); //second param is deprecated
+ emit_signal(SNAME("property_deleted"), p_path);
}
void EditorInspector::_property_keyed_with_value(const String &p_path, const Variant &p_value, bool p_advance) {
@@ -3221,7 +3224,10 @@ void EditorInspector::_property_keyed_with_value(const String &p_path, const Var
return;
}
- emit_signal(SNAME("property_keyed"), p_path, p_value, p_advance); //second param is deprecated
+ // The second parameter could be null, causing the event to fire with less arguments, so use the pointer call which preserves it.
+ const Variant args[3] = { p_path, p_value, p_advance };
+ const Variant *argp[3] = { &args[0], &args[1], &args[2] };
+ emit_signal(SNAME("property_keyed"), argp, 3);
}
void EditorInspector::_property_checked(const String &p_path, bool p_checked) {
@@ -3531,7 +3537,7 @@ void EditorInspector::_bind_methods() {
ClassDB::bind_method("_edit_request_change", &EditorInspector::_edit_request_change);
ADD_SIGNAL(MethodInfo("property_selected", PropertyInfo(Variant::STRING, "property")));
- ADD_SIGNAL(MethodInfo("property_keyed", PropertyInfo(Variant::STRING, "property")));
+ ADD_SIGNAL(MethodInfo("property_keyed", PropertyInfo(Variant::STRING, "property"), PropertyInfo(Variant::NIL, "value", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NIL_IS_VARIANT), PropertyInfo(Variant::BOOL, "advance")));
ADD_SIGNAL(MethodInfo("property_deleted", PropertyInfo(Variant::STRING, "property")));
ADD_SIGNAL(MethodInfo("resource_selected", PropertyInfo(Variant::OBJECT, "res"), PropertyInfo(Variant::STRING, "prop")));
ADD_SIGNAL(MethodInfo("object_id_selected", PropertyInfo(Variant::INT, "id")));