Commit: e14de692fc99b5e66d93c6240ec51410d087cf4d Author: OmarSquircleArt Date: Mon Aug 17 13:43:19 2020 +0200 Branches: master https://developer.blender.org/rBe14de692fc99b5e66d93c6240ec51410d087cf4d
UI: Only draw node menu search if categories exist Currently, the search operator in the node add menu NODE_MT_add is drawn even if no node categories exists. This patch only draws the operator if at least one node category passes the poll. This patch is needed because some add-ons use custom search operator and do not register node categories. In this case, it is undesirable to have a search operator drawn that do nothing and is not used. One such add-on is Animation Nodes. Reviewed By: Jacques Lucke Differential Revision: https://developer.blender.org/D8576 =================================================================== M release/scripts/modules/nodeitems_utils.py M release/scripts/startup/bl_ui/space_node.py =================================================================== diff --git a/release/scripts/modules/nodeitems_utils.py b/release/scripts/modules/nodeitems_utils.py index 595b6c8ee5f..d1e1cc5e346 100644 --- a/release/scripts/modules/nodeitems_utils.py +++ b/release/scripts/modules/nodeitems_utils.py @@ -144,6 +144,14 @@ def node_categories_iter(context): yield cat +def has_node_categories(context): + for cat_type in _node_categories.values(): + for cat in cat_type[0]: + if cat.poll and ((context is None) or cat.poll(context)): + return True + return False + + def node_items_iter(context): for cat in node_categories_iter(context): for item in cat.items(context): diff --git a/release/scripts/startup/bl_ui/space_node.py b/release/scripts/startup/bl_ui/space_node.py index faf4036f9b3..93be870ce73 100644 --- a/release/scripts/startup/bl_ui/space_node.py +++ b/release/scripts/startup/bl_ui/space_node.py @@ -216,13 +216,15 @@ class NODE_MT_add(bpy.types.Menu): layout = self.layout layout.operator_context = 'INVOKE_DEFAULT' - props = layout.operator("node.add_search", text="Search...", icon='VIEWZOOM') - props.use_transform = True - layout.separator() + if nodeitems_utils.has_node_categories(context): + props = layout.operator("node.add_search", text="Search...", icon='VIEWZOOM') + props.use_transform = True + + layout.separator() - # actual node submenus are defined by draw functions from node categories - nodeitems_utils.draw_node_categories_menu(self, context) + # actual node submenus are defined by draw functions from node categories + nodeitems_utils.draw_node_categories_menu(self, context) class NODE_MT_view(Menu): _______________________________________________ Bf-blender-cvs mailing list [email protected] https://lists.blender.org/mailman/listinfo/bf-blender-cvs
