From 0bedf9cf07c66f4f6ddbdcfb47001bb29cb2389e Mon Sep 17 00:00:00 2001 From: Philipp Oeser Date: Mon, 3 Feb 2020 12:49:09 +0100 Subject: Fix T58842: Add-ons Import/Export entries disapear when enabling Filter Addons option This removes the 'use_owner' option feature from rB61c8ed40f5df. (this wasnt working well when addons are enabled and when switching workspaces) Now Addon filtering is just bypassed for Import/Export menus. (by introducing/setting bl_owner_use_filter = False) Maniphest Tasks: T58842 Differential Revision: https://developer.blender.org/D6740 --- release/scripts/modules/addon_utils.py | 16 ++++------------ release/scripts/modules/bpy_types.py | 5 ++++- release/scripts/startup/bl_ui/properties_workspace.py | 2 -- release/scripts/startup/bl_ui/space_topbar.py | 2 ++ 4 files changed, 10 insertions(+), 15 deletions(-) diff --git a/release/scripts/modules/addon_utils.py b/release/scripts/modules/addon_utils.py index e212df17f60..b58c683dc24 100644 --- a/release/scripts/modules/addon_utils.py +++ b/release/scripts/modules/addon_utils.py @@ -373,11 +373,9 @@ def enable(module_name, *, default_set=False, persistent=False, handle_error=Non # 2) Try register collected modules. # Removed register_module, addons need to handle their 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) + 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: @@ -393,8 +391,7 @@ def enable(module_name, *, default_set=False, persistent=False, handle_error=Non _addon_remove(module_name) return None finally: - if use_owner: - _bl_owner_id_set(owner_id_prev) + _bl_owner_id_set(owner_id_prev) # * OK loaded successfully! * mod.__addon_enabled__ = True @@ -513,7 +510,6 @@ def module_bl_info(mod, info_basis=None): "category": "", "warning": "", "show_expanded": False, - "use_owner": True, } addon_info = getattr(mod, "bl_info", {}) @@ -531,9 +527,5 @@ 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 diff --git a/release/scripts/modules/bpy_types.py b/release/scripts/modules/bpy_types.py index 43ee785438b..4c47b5a5fb6 100644 --- a/release/scripts/modules/bpy_types.py +++ b/release/scripts/modules/bpy_types.py @@ -783,7 +783,10 @@ class _GenericUI: for func in draw_ls._draw_funcs: # Begin 'owner_id' filter. - if owner_names is not None: + # Exclude Import/Export menus from this filtering (io addons should always show there) + if not getattr(self, "bl_owner_use_filter", True): + pass + elif owner_names is not None: owner_id = getattr(func, "_owner", None) if owner_id is not None: if func._owner not in owner_names: diff --git a/release/scripts/startup/bl_ui/properties_workspace.py b/release/scripts/startup/bl_ui/properties_workspace.py index 322cdee0922..8af30b5c002 100644 --- a/release/scripts/startup/bl_ui/properties_workspace.py +++ b/release/scripts/startup/bl_ui/properties_workspace.py @@ -77,8 +77,6 @@ class WORKSPACE_PT_addons(WorkSpaceButtonsPanel, Panel): if module is None: continue info = addon_utils.module_bl_info(module) - if not info["use_owner"]: - continue is_enabled = module_name in owner_ids row = col.row() row.alignment = 'LEFT' diff --git a/release/scripts/startup/bl_ui/space_topbar.py b/release/scripts/startup/bl_ui/space_topbar.py index fd46bd53cd2..192b239ac03 100644 --- a/release/scripts/startup/bl_ui/space_topbar.py +++ b/release/scripts/startup/bl_ui/space_topbar.py @@ -452,6 +452,7 @@ class TOPBAR_MT_templates_more(Menu): class TOPBAR_MT_file_import(Menu): bl_idname = "TOPBAR_MT_file_import" bl_label = "Import" + bl_owner_use_filter = False def draw(self, _context): if bpy.app.build_options.collada: @@ -464,6 +465,7 @@ class TOPBAR_MT_file_import(Menu): class TOPBAR_MT_file_export(Menu): bl_idname = "TOPBAR_MT_file_export" bl_label = "Export" + bl_owner_use_filter = False def draw(self, context): if bpy.app.build_options.collada: -- cgit v1.2.3