[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [49523] trunk/blender/source/blender/ editors/space_node/node_edit.c: Fix for node clipboard copy operator for Frame nodes.
Lukas Toenne
lukas.toenne at googlemail.com
Fri Aug 3 12:18:53 CEST 2012
Revision: 49523
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=49523
Author: lukastoenne
Date: 2012-08-03 10:18:52 +0000 (Fri, 03 Aug 2012)
Log Message:
-----------
Fix for node clipboard copy operator for Frame nodes. Was redirecting the parent pointer of the original instead of the copied nodes.
Modified Paths:
--------------
trunk/blender/source/blender/editors/space_node/node_edit.c
Modified: trunk/blender/source/blender/editors/space_node/node_edit.c
===================================================================
--- trunk/blender/source/blender/editors/space_node/node_edit.c 2012-08-03 09:54:08 UTC (rev 49522)
+++ trunk/blender/source/blender/editors/space_node/node_edit.c 2012-08-03 10:18:52 UTC (rev 49523)
@@ -1919,6 +1919,22 @@
}
}
+ /* ensure valid pointers */
+ for (node = ntree->nodes.first; node; node = node->next) {
+ if (node->flag & SELECT) {
+ bNode *new_node = node->new_node;
+ if (new_node->parent) {
+ /* parent pointer must be redirected to new node or detached if parent is not copied */
+ if (new_node->parent->flag & NODE_SELECT) {
+ new_node->parent = new_node->parent->new_node;
+ }
+ else {
+ nodeDetachNode(new_node);
+ }
+ }
+ }
+ }
+
/* copy links between selected nodes
* NB: this depends on correct node->new_node and sock->new_sock pointers from above copy!
*/
@@ -1938,16 +1954,6 @@
}
}
- /* reparent copied nodes */
- for (node = ntree->nodes.first; node; node = node->next) {
- if ((node->flag & SELECT) && node->parent) {
- if (node->parent->flag & SELECT)
- node->parent = node->parent->new_node;
- else
- node->parent = NULL;
- }
- }
-
return OPERATOR_FINISHED;
}
@@ -1995,27 +2001,28 @@
/* copy nodes from clipboard */
for (node = nodeClipboardGetNodes()->first; node; node = node->next) {
- bNode *newnode = nodeCopyNode(ntree, node);
+ bNode *new_node = nodeCopyNode(ntree, node);
/* pasted nodes are selected */
- node_select(newnode);
+ node_select(new_node);
/* place nodes around the mouse cursor */
- newnode->locx += snode->mx - centerx;
- newnode->locy += snode->my - centery;
+ new_node->locx += snode->mx - centerx;
+ new_node->locy += snode->my - centery;
}
+
+ /* reparent copied nodes */
+ for (node = nodeClipboardGetNodes()->first; node; node = node->next) {
+ bNode *new_node = node->new_node;
+ if (new_node->parent)
+ new_node->parent = new_node->parent->new_node;
+ }
for (link = nodeClipboardGetLinks()->first; link; link = link->next) {
nodeAddLink(ntree, link->fromnode->new_node, link->fromsock->new_sock,
link->tonode->new_node, link->tosock->new_sock);
}
- /* reparent copied nodes */
- for (node = nodeClipboardGetNodes()->first; node; node = node->next) {
- if (node->new_node->parent)
- node->new_node->parent = node->new_node->parent->new_node;
- }
-
ntreeUpdateTree(snode->edittree);
snode_notify(C, snode);
More information about the Bf-blender-cvs
mailing list