@@ -418,100 +418,6 @@ def get_absolute_node_position(node: bpy.types.Node):
418418 return node .location
419419 return get_absolute_node_position (node .parent ) + node .location
420420
421- # Blender 3.4 changed the way add_search works and broke NodeItems searches
422- # See https://developer.blender.org/T103108
423- # This is a copy of the 3.3 NODE_OT_add_search operator so we can get the functionality back
424- from bl_operators .node import *
425- class NODE_OT_malt_add_search (NodeAddOperator , Operator ):
426- '''Add a node to the active tree'''
427- bl_idname = "node.malt_add_search"
428- bl_label = "Search and Add Node"
429- bl_options = {'REGISTER' , 'UNDO' }
430- bl_property = "node_item"
431-
432- @classmethod
433- def poll (cls , context ):
434- return is_malt_tree_context (context )
435-
436- _enum_item_hack = []
437-
438- # Create an enum list from node items
439- def node_enum_items (self , context ):
440- import nodeitems_utils
441-
442- enum_items = NODE_OT_malt_add_search ._enum_item_hack
443- enum_items .clear ()
444-
445- for index , item in enumerate (nodeitems_utils .node_items_iter (context )):
446- if isinstance (item , nodeitems_utils .NodeItem ):
447- enum_items .append (
448- (str (index ),
449- item .label ,
450- "" ,
451- index ,
452- ))
453- return enum_items
454-
455- # Look up the item based on index
456- def find_node_item (self , context ):
457- import nodeitems_utils
458-
459- node_item = int (self .node_item )
460- for index , item in enumerate (nodeitems_utils .node_items_iter (context )):
461- if index == node_item :
462- return item
463- return None
464-
465- node_item : bpy .props .EnumProperty (
466- name = "Node Type" ,
467- description = "Node type" ,
468- items = node_enum_items ,
469- )
470-
471- def execute (self , context ):
472- item = self .find_node_item (context )
473-
474- # no need to keep
475- self ._enum_item_hack .clear ()
476-
477- if item :
478- # apply settings from the node item
479- for setting in item .settings .items ():
480- ops = self .settings .add ()
481- ops .name = setting [0 ]
482- ops .value = setting [1 ]
483-
484- self .create_node (context , item .nodetype )
485-
486- if self .use_transform :
487- bpy .ops .node .translate_attach_remove_on_cancel (
488- 'INVOKE_DEFAULT' )
489-
490- return {'FINISHED' }
491- else :
492- return {'CANCELLED' }
493-
494- def invoke (self , context , event ):
495- self .store_mouse_cursor (context , event )
496- # Delayed execution in the search popup
497- context .window_manager .invoke_search_popup (self )
498- return {'CANCELLED' }
499-
500- def draw_malt_add_search_menu (menu , context ):
501- if context .area .ui_type != 'MaltTree' :
502- return
503- layout = menu .layout
504- if is_malt_tree_context (context ) == False :
505- layout .label (text = "No node tree selected" , icon = 'ERROR' )
506- elif context .space_data .edit_tree .graph_type == '' :
507- layout .label (text = "No node tree type selected" , icon = 'ERROR' )
508- else :
509- row = layout .row ()
510- row .operator_context = "INVOKE_DEFAULT"
511- operator = row .operator ("node.malt_add_search" , text = "Search... (Malt)" , icon = 'VIEW_ZOOM' )
512- operator .use_transform = True
513-
514-
515421classes = [
516422 NodeTreePreview ,
517423 OT_MaltEditNodeTree ,
@@ -521,7 +427,6 @@ def draw_malt_add_search_menu(menu, context):
521427 OT_MaltAddNodeGroup ,
522428 OT_MaltNodesToGroup ,
523429 NODE_OT_add_malt_subcategory_node ,
524- NODE_OT_malt_add_search ,
525430]
526431
527432class MaltNodeDrawCallbacks :
@@ -630,12 +535,8 @@ def register():
630535 NodeTree .tree_preview = PointerProperty (type = NodeTreePreview , name = 'Node Tree Preview' ,
631536 options = {'LIBRARY_EDITABLE' }, override = {'LIBRARY_OVERRIDABLE' })
632537
633- bpy .types .NODE_MT_add .prepend (draw_malt_add_search_menu )
634-
635538
636539def unregister ():
637- bpy .types .NODE_MT_add .remove (draw_malt_add_search_menu )
638-
639540 del NodeTree .tree_preview
640541
641542 for km , kmi in keymaps :
0 commit comments