[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [38457] trunk/blender/source/blender/ editors/space_node: Little modification of the duplicate operator on artist request: The default behavior (shift+dkey) is now to copy nodes and internal links, but not the input links from unselected nodes.

Lukas Toenne lukas.toenne at googlemail.com
Sun Jul 17 20:04:28 CEST 2011


Revision: 38457
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=38457
Author:   lukastoenne
Date:     2011-07-17 18:04:28 +0000 (Sun, 17 Jul 2011)
Log Message:
-----------
Little modification of the duplicate operator on artist request: The default behavior (shift+dkey) is now to copy nodes and internal links, but not the input links from unselected nodes. This feature is available with the alternate duplicate operator (alt+dkey).

Modified Paths:
--------------
    trunk/blender/source/blender/editors/space_node/node_edit.c
    trunk/blender/source/blender/editors/space_node/node_ops.c

Modified: trunk/blender/source/blender/editors/space_node/node_edit.c
===================================================================
--- trunk/blender/source/blender/editors/space_node/node_edit.c	2011-07-17 17:30:41 UTC (rev 38456)
+++ trunk/blender/source/blender/editors/space_node/node_edit.c	2011-07-17 18:04:28 UTC (rev 38457)
@@ -2000,12 +2000,13 @@
 
 /* ****************** Duplicate *********************** */
 
-static int node_duplicate_exec(bContext *C, wmOperator *UNUSED(op))
+static int node_duplicate_exec(bContext *C, wmOperator *op)
 {
 	SpaceNode *snode= CTX_wm_space_node(C);
 	bNodeTree *ntree= snode->edittree;
 	bNode *node, *newnode, *lastnode;
 	bNodeLink *link, *newlink, *lastlink;
+	int keep_inputs = RNA_boolean_get(op->ptr, "keep_inputs");
 	
 	ED_preview_kill_jobs(C);
 	
@@ -2033,10 +2034,11 @@
 	 */
 	lastlink = ntree->links.last;
 	for (link=ntree->links.first; link; link=link->next) {
-		/* this creates new links between copied nodes,
-		 * as well as input links from unselected (when fromnode==NULL) !
+		/* This creates new links between copied nodes.
+		 * If keep_inputs is set, also copies input links from unselected (when fromnode==NULL)!
 		 */
-		if (link->tonode && (link->tonode->flag & NODE_SELECT)) {
+		if (link->tonode && (link->tonode->flag & NODE_SELECT)
+			&& (keep_inputs || link->fromnode && (link->fromnode->flag & NODE_SELECT))) {
 			newlink = MEM_callocN(sizeof(bNodeLink), "bNodeLink");
 			newlink->flag = link->flag;
 			newlink->tonode = link->tonode->new_node;
@@ -2096,6 +2098,8 @@
 	
 	/* flags */
 	ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+	
+	RNA_def_boolean(ot->srna, "keep_inputs", 0, "Keep Inputs", "Keep the input links to duplicated nodes");
 }
 
 /* *************************** add link op ******************** */

Modified: trunk/blender/source/blender/editors/space_node/node_ops.c
===================================================================
--- trunk/blender/source/blender/editors/space_node/node_ops.c	2011-07-17 17:30:41 UTC (rev 38456)
+++ trunk/blender/source/blender/editors/space_node/node_ops.c	2011-07-17 18:04:28 UTC (rev 38457)
@@ -101,11 +101,18 @@
 void ED_operatormacros_node(void)
 {
 	wmOperatorType *ot;
+	wmOperatorTypeMacro *mot;
 	
 	ot= WM_operatortype_append_macro("NODE_OT_duplicate_move", "Duplicate", OPTYPE_UNDO|OPTYPE_REGISTER);
 	WM_operatortype_macro_define(ot, "NODE_OT_duplicate");
 	WM_operatortype_macro_define(ot, "TRANSFORM_OT_translate");
 
+	/* modified operator call for duplicating with input links */
+	ot= WM_operatortype_append_macro("NODE_OT_duplicate_move_keep_inputs", "Duplicate", OPTYPE_UNDO|OPTYPE_REGISTER);
+	mot = WM_operatortype_macro_define(ot, "NODE_OT_duplicate");
+		RNA_boolean_set(mot->ptr, "keep_inputs", 1);
+	WM_operatortype_macro_define(ot, "TRANSFORM_OT_translate");
+
 	ot= WM_operatortype_append_macro("NODE_OT_select_link_viewer", "Link Viewer", OPTYPE_UNDO);
 	WM_operatortype_macro_define(ot, "NODE_OT_select");
 	WM_operatortype_macro_define(ot, "NODE_OT_link_viewer");
@@ -155,6 +162,8 @@
 	
 	WM_keymap_add_menu(keymap, "NODE_MT_add", AKEY, KM_PRESS, KM_SHIFT, 0);
 	WM_keymap_add_item(keymap, "NODE_OT_duplicate_move", DKEY, KM_PRESS, KM_SHIFT, 0);
+	/* modified operator call for duplicating with input links */
+	WM_keymap_add_item(keymap, "NODE_OT_duplicate_move_keep_inputs", DKEY, KM_PRESS, KM_ALT, 0);
 	
 	WM_keymap_add_item(keymap, "NODE_OT_hide_toggle", HKEY, KM_PRESS, 0, 0);
 	WM_keymap_add_item(keymap, "NODE_OT_mute_toggle", MKEY, KM_PRESS, 0, 0);




More information about the Bf-blender-cvs mailing list