Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLukas Toenne <lukas.toenne@googlemail.com>2013-05-08 19:41:07 +0400
committerLukas Toenne <lukas.toenne@googlemail.com>2013-05-08 19:41:07 +0400
commitd7c74acab14183c7e444cc06e66824590e12391b (patch)
treed008d8832d1a004c6bcda23a15df8245faed1ab3 /release
parent8863222a905bba7e8cccd32d434a31a5d3654b6e (diff)
Added filter to the node group items callback to remove recursive node groups right from the start. These tree pointers would be polled out internally as well, but this way they don't show up in the menus in the first place.
Diffstat (limited to 'release')
-rw-r--r--release/scripts/startup/nodeitems_builtins.py19
1 files changed, 17 insertions, 2 deletions
diff --git a/release/scripts/startup/nodeitems_builtins.py b/release/scripts/startup/nodeitems_builtins.py
index 93cd7110486..ee32045367b 100644
--- a/release/scripts/startup/nodeitems_builtins.py
+++ b/release/scripts/startup/nodeitems_builtins.py
@@ -61,9 +61,24 @@ def node_group_items(context):
if not ntree:
return
+ def contains_group(nodetree, group):
+ if nodetree == group:
+ return True
+ else:
+ for node in nodetree.nodes:
+ if node.bl_idname in node_tree_group_type.values() and node.node_tree is not None:
+ if contains_group(node.node_tree, group):
+ return True
+ return False
+
for group in context.blend_data.node_groups:
- if group.bl_idname == ntree.bl_idname:
- yield NodeItem(node_tree_group_type[group.bl_idname], group.name, { "node_tree" : "bpy.data.node_groups['%s']" % group.name })
+ if group.bl_idname != ntree.bl_idname:
+ continue
+ # filter out recursive groups
+ if contains_group(ntree, group):
+ continue
+
+ yield NodeItem(node_tree_group_type[group.bl_idname], group.name, { "node_tree" : "bpy.data.node_groups['%s']" % group.name })
# All standard node categories currently used in nodes.