diff options
author | Yuri Sizov <yuris@humnom.net> | 2023-07-26 18:40:18 +0200 |
---|---|---|
committer | Yuri Sizov <yuris@humnom.net> | 2023-07-26 18:40:18 +0200 |
commit | a68137bf1813244249e137bd17b6883bc1d8a093 (patch) | |
tree | 25ae836533db6c338f146f3d90507485611cc252 /core/object/object.cpp | |
parent | 1de9171c324741b1e50f2da2b3ffaeabae8ba36a (diff) | |
parent | e8731f4821075327716b61400b96d39fca2de252 (diff) | |
download | redot-engine-a68137bf1813244249e137bd17b6883bc1d8a093.tar.gz |
Merge pull request #79683 from Zylann/fix_gdext_get_property_list
GDExtension: Fix `_get_property_list` not working correctly in parent classes
Diffstat (limited to 'core/object/object.cpp')
-rw-r--r-- | core/object/object.cpp | 24 |
1 files changed, 13 insertions, 11 deletions
diff --git a/core/object/object.cpp b/core/object/object.cpp index 4d19a2c75b..4ae0ecdefd 100644 --- a/core/object/object.cpp +++ b/core/object/object.cpp @@ -486,19 +486,21 @@ void Object::get_property_list(List<PropertyInfo> *p_list, bool p_reversed) cons const ObjectGDExtension *current_extension = _extension; while (current_extension) { p_list->push_back(PropertyInfo(Variant::NIL, current_extension->class_name, PROPERTY_HINT_NONE, String(), PROPERTY_USAGE_CATEGORY)); + ClassDB::get_property_list(current_extension->class_name, p_list, true, this); - current_extension = current_extension->parent; - } - } - if (_extension && _extension->get_property_list) { - uint32_t pcount; - const GDExtensionPropertyInfo *pinfo = _extension->get_property_list(_extension_instance, &pcount); - for (uint32_t i = 0; i < pcount; i++) { - p_list->push_back(PropertyInfo(pinfo[i])); - } - if (_extension->free_property_list) { - _extension->free_property_list(_extension_instance, pinfo); + if (current_extension->get_property_list) { + uint32_t pcount; + const GDExtensionPropertyInfo *pinfo = current_extension->get_property_list(_extension_instance, &pcount); + for (uint32_t i = 0; i < pcount; i++) { + p_list->push_back(PropertyInfo(pinfo[i])); + } + if (current_extension->free_property_list) { + current_extension->free_property_list(_extension_instance, pinfo); + } + } + + current_extension = current_extension->parent; } } |