diff options
Diffstat (limited to 'core/object/class_db.cpp')
-rw-r--r-- | core/object/class_db.cpp | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/core/object/class_db.cpp b/core/object/class_db.cpp index e9fd8ad583..9cefd3999d 100644 --- a/core/object/class_db.cpp +++ b/core/object/class_db.cpp @@ -1674,7 +1674,14 @@ void ClassDB::register_extension_class(ObjectGDExtension *p_extension) { c.inherits = parent->name; c.class_ptr = parent->class_ptr; c.inherits_ptr = parent; - c.exposed = true; + c.exposed = p_extension->is_exposed; + if (c.exposed) { + // The parent classes should be exposed if it has an exposed child class. + while (parent && !parent->exposed) { + parent->exposed = true; + parent = classes.getptr(parent->name); + } + } classes[p_extension->class_name] = c; } |