diff options
Diffstat (limited to 'release/scripts/modules/addon_utils.py')
-rw-r--r-- | release/scripts/modules/addon_utils.py | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/release/scripts/modules/addon_utils.py b/release/scripts/modules/addon_utils.py index 97fc45189f2..c74286c8fb6 100644 --- a/release/scripts/modules/addon_utils.py +++ b/release/scripts/modules/addon_utils.py @@ -352,6 +352,12 @@ def enable(module_name, *, default_set=False, persistent=False, handle_error=Non # 2) try register collected modules # removed, addons need to handle own registration now. + use_owner = mod.bl_info.get("use_owner", True) + if use_owner: + from _bpy import _bl_owner_id_get, _bl_owner_id_set + owner_id_prev = _bl_owner_id_get() + _bl_owner_id_set(module_name) + # 3) try run the modules register function try: mod.register() @@ -363,6 +369,9 @@ def enable(module_name, *, default_set=False, persistent=False, handle_error=Non if default_set: _addon_remove(module_name) return None + finally: + if use_owner: + _bl_owner_id_set(owner_id_prev) # * OK loaded successfully! * mod.__addon_enabled__ = True @@ -473,6 +482,7 @@ def module_bl_info(mod, info_basis=None): "category": "", "warning": "", "show_expanded": False, + "use_owner": True, } addon_info = getattr(mod, "bl_info", {}) @@ -490,5 +500,9 @@ def module_bl_info(mod, info_basis=None): if not addon_info["name"]: addon_info["name"] = mod.__name__ + # Temporary auto-magic, don't use_owner for import export menus. + if mod.bl_info["category"] == "Import-Export": + mod.bl_info["use_owner"] = False + addon_info["_init"] = None return addon_info |