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-04-20 20:50:05 +0400
committerLukas Toenne <lukas.toenne@googlemail.com>2013-04-20 20:50:05 +0400
commitef170c16be8a8a228f3e0a06bca17cd7766a7ac1 (patch)
treeacfca87be39657f3f6d2cc23fa9e0e688c16b4a9 /source/blender/editors/space_node/node_ops.c
parent46b40e112b075a9a5a9d26e089f8e28c20257f19 (diff)
Fix #34846, Node->Ungroup menu entry is broken. The standard node group operators now don't require the node_type string property any more. They are limited to the Shader, Compositing and Texture node tree types and will pass through for other (pynodes) tree types. Associated node group types are hardcoded.
The original rationale for adding the node_type property was to allow node group operators work generically on any node group type automatically. The problem is that detecting the appropriate node group type and node tree type to use for a group depends on using a node base type. Due to the fact that RNA does not allow multiple inheritance (mixin classes) this is impossible to achieve if node types also have to use a base type such as ShaderNode, CompositingNode or TextureNode. The idea is now to just "make it work" by limiting the node group operators to the standard tree types. For future pynodes we can implement these operators nicely in Python, which will allow pynodes to use mixin base classes or derive their own operator types and re-use the same keymapping.
Diffstat (limited to 'source/blender/editors/space_node/node_ops.c')
-rw-r--r--source/blender/editors/space_node/node_ops.c34
1 files changed, 8 insertions, 26 deletions
diff --git a/source/blender/editors/space_node/node_ops.c b/source/blender/editors/space_node/node_ops.c
index 0155750fbf8..782ea77ea59 100644
--- a/source/blender/editors/space_node/node_ops.c
+++ b/source/blender/editors/space_node/node_ops.c
@@ -200,29 +200,6 @@ static void node_select_keymap(wmKeyMap *keymap, int extend)
}
}
-/* register group operators for a specific group node type */
-static void node_group_operators(wmKeyMap *keymap, const char *node_type)
-{
- wmKeyMapItem *kmi;
-
- kmi = WM_keymap_add_item(keymap, "NODE_OT_group_make", GKEY, KM_PRESS, KM_CTRL, 0);
- RNA_string_set(kmi->ptr, "node_type", node_type);
-
- kmi = WM_keymap_add_item(keymap, "NODE_OT_group_ungroup", GKEY, KM_PRESS, KM_ALT, 0);
- RNA_string_set(kmi->ptr, "node_type", node_type);
-
- kmi = WM_keymap_add_item(keymap, "NODE_OT_group_separate", PKEY, KM_PRESS, 0, 0);
- RNA_string_set(kmi->ptr, "node_type", node_type);
-
- kmi = WM_keymap_add_item(keymap, "NODE_OT_group_edit", TABKEY, KM_PRESS, 0, 0);
- RNA_string_set(kmi->ptr, "node_type", node_type);
- RNA_boolean_set(kmi->ptr, "exit", FALSE);
-
- kmi = WM_keymap_add_item(keymap, "NODE_OT_group_edit", TABKEY, KM_PRESS, KM_SHIFT, 0);
- RNA_string_set(kmi->ptr, "node_type", node_type);
- RNA_boolean_set(kmi->ptr, "exit", TRUE);
-}
-
void node_keymap(struct wmKeyConfig *keyconf)
{
wmKeyMap *keymap;
@@ -327,9 +304,14 @@ void node_keymap(struct wmKeyConfig *keyconf)
WM_keymap_add_item(keymap, "NODE_OT_find_node", FKEY, KM_PRESS, KM_CTRL, 0);
- node_group_operators(keymap, "ShaderNodeGroup");
- node_group_operators(keymap, "CompositorNodeGroup");
- node_group_operators(keymap, "TextureNodeGroup");
+ /* node group operators */
+ WM_keymap_add_item(keymap, "NODE_OT_group_make", GKEY, KM_PRESS, KM_CTRL, 0);
+ WM_keymap_add_item(keymap, "NODE_OT_group_ungroup", GKEY, KM_PRESS, KM_ALT, 0);
+ WM_keymap_add_item(keymap, "NODE_OT_group_separate", PKEY, KM_PRESS, 0, 0);
+ kmi = WM_keymap_add_item(keymap, "NODE_OT_group_edit", TABKEY, KM_PRESS, 0, 0);
+ RNA_boolean_set(kmi->ptr, "exit", FALSE);
+ kmi = WM_keymap_add_item(keymap, "NODE_OT_group_edit", TABKEY, KM_PRESS, KM_SHIFT, 0);
+ RNA_boolean_set(kmi->ptr, "exit", TRUE);
WM_keymap_add_item(keymap, "NODE_OT_read_renderlayers", RKEY, KM_PRESS, KM_CTRL, 0);
WM_keymap_add_item(keymap, "NODE_OT_read_fullsamplelayers", RKEY, KM_PRESS, KM_SHIFT, 0);