Merge pull request #1447 from dsnopek/avoid-double-postinitialize

Fix NOTIFICATION_POSTINITIALIZE sent twice to native parent classes
pull/1469/head
David Snopek 2024-05-17 11:56:09 -05:00 committed by GitHub
commit b697ba8896
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 7 additions and 4 deletions

View File

@ -89,6 +89,7 @@ protected:
::godot::List<::godot::PropertyInfo> plist_owned; ::godot::List<::godot::PropertyInfo> plist_owned;
void _postinitialize(); void _postinitialize();
virtual void _notificationv(int32_t p_what, bool p_reversed = false) {}
Wrapped(const StringName p_godot_class); Wrapped(const StringName p_godot_class);
Wrapped(GodotObject *p_godot_object); Wrapped(GodotObject *p_godot_object);
@ -374,6 +375,11 @@ public:
_gde_binding_reference_callback, \ _gde_binding_reference_callback, \
}; \ }; \
\ \
protected: \
virtual void _notificationv(int32_t p_what, bool p_reversed = false) override { \
m_class::notification_bind(this, p_what, p_reversed); \
} \
\
private: private:
// Don't use this for your classes, use GDCLASS() instead. // Don't use this for your classes, use GDCLASS() instead.

View File

@ -51,10 +51,7 @@ void Wrapped::_postinitialize() {
} }
godot::internal::gdextension_interface_object_set_instance_binding(_owner, godot::internal::token, this, _get_bindings_callbacks()); godot::internal::gdextension_interface_object_set_instance_binding(_owner, godot::internal::token, this, _get_bindings_callbacks());
if (extension_class) { if (extension_class) {
Object *obj = dynamic_cast<Object *>(this); _notificationv(Object::NOTIFICATION_POSTINITIALIZE);
if (obj) {
obj->notification(Object::NOTIFICATION_POSTINITIALIZE);
}
} }
} }