diff --git a/leenkx.py b/leenkx.py index 8e88055..d976433 100644 --- a/leenkx.py +++ b/leenkx.py @@ -914,7 +914,10 @@ def restart_leenkx(context): @persistent def on_load_post(context): - restart_leenkx(bpy.context) # context is None, use bpy.context instead + if bpy.context is not None: + restart_leenkx(bpy.context) # context is None, use bpy.context instead + else: + bpy.app.timers.register(lambda: restart_leenkx(bpy.context), first_interval=0.1) def on_register_post(): diff --git a/leenkx/blender/lnx/logicnode/lnx_sockets.py b/leenkx/blender/lnx/logicnode/lnx_sockets.py index 8c22599..585a3b0 100644 --- a/leenkx/blender/lnx/logicnode/lnx_sockets.py +++ b/leenkx/blender/lnx/logicnode/lnx_sockets.py @@ -87,8 +87,8 @@ class LnxAnimActionSocket(LnxCustomSocket): default_value_get: PointerProperty(name='Action', type=bpy.types.Action) # legacy version of the line after this one default_value_raw: PointerProperty(name='Action', type=bpy.types.Action, update=_on_update_socket) - def __init__(self): - super().__init__() + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) if self.default_value_get is not None: self.default_value_raw = self.default_value_get self.default_value_get = None @@ -496,8 +496,8 @@ class LnxObjectSocket(LnxCustomSocket): default_value_get: PointerProperty(name='Object', type=bpy.types.Object) # legacy version of the line after this one default_value_raw: PointerProperty(name='Object', type=bpy.types.Object, update=_on_update_socket) - def __init__(self): - super().__init__() + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) if self.default_value_get is not None: self.default_value_raw = self.default_value_get self.default_value_get = None diff --git a/leenkx/blender/lnx/node_utils.py b/leenkx/blender/lnx/node_utils.py index 4072418..97b4149 100644 --- a/leenkx/blender/lnx/node_utils.py +++ b/leenkx/blender/lnx/node_utils.py @@ -234,10 +234,18 @@ def haxe_format_prop_value(node: bpy.types.Node, prop_name: str) -> str: def nodetype_to_nodeitem(node_type: Type[bpy.types.Node]) -> NodeItem: """Create a NodeItem from a given node class.""" # Internal node types seem to have no bl_idname attribute - if issubclass(node_type, bpy.types.NodeInternal): - return NodeItem(node_type.__name__) + # if issubclass(node_type, bpy.types.NodeInternal): + # return NodeItem(node_type.__name__) - return NodeItem(node_type.bl_idname) + # return NodeItem(node_type.bl_idname) + node_id = node_type.__name__ if issubclass(node_type, bpy.types.NodeInternal) else node_type.bl_idname + node_label = getattr(node_type, "bl_label", node_type.__name__) + class ReturnNodeItem(NodeItem): + @property + def label(self): + """Return the node label without using bl_rna_get_subclass to support Blender 4.4 +""" + return node_label + return ReturnNodeItem(node_id) def copy_basic_node_props(from_node: bpy.types.Node, to_node: bpy.types.Node):