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:
authorTon Roosendaal <ton@blender.org>2008-02-15 18:20:50 +0300
committerTon Roosendaal <ton@blender.org>2008-02-15 18:20:50 +0300
commitde707a32be8f07dc826665c5f24bd8478503743c (patch)
treea915262a388613c09a40bddb2af3be58292b60ac /source/blender/src/editnode.c
parentb5437cc8a2fbc8d0d6c8bfad74e3b031ea855e93 (diff)
Simple but useful compositor feature:
CTRL+click on node will not only select it, but also connect the active viewer to the top output of the node. To evaluate: make viewing option to have this as a default on select. Could work nice for collapsed nodes.
Diffstat (limited to 'source/blender/src/editnode.c')
-rw-r--r--source/blender/src/editnode.c45
1 files changed, 45 insertions, 0 deletions
diff --git a/source/blender/src/editnode.c b/source/blender/src/editnode.c
index f1cfd9c630c..d59f095ea1d 100644
--- a/source/blender/src/editnode.c
+++ b/source/blender/src/editnode.c
@@ -1316,6 +1316,47 @@ static int do_header_hidden_node(SpaceNode *snode, bNode *node, float mx, float
return 0;
}
+static void node_link_viewer(SpaceNode *snode, bNode *tonode)
+{
+ bNode *node;
+
+ /* context check */
+ if(tonode==NULL || tonode->outputs.first==NULL)
+ return;
+ if( ELEM(tonode->type, CMP_NODE_VIEWER, CMP_NODE_SPLITVIEWER))
+ return;
+
+ /* get viewer */
+ for(node= snode->edittree->nodes.first; node; node= node->next)
+ if( ELEM(node->type, CMP_NODE_VIEWER, CMP_NODE_SPLITVIEWER))
+ if(node->flag & NODE_DO_OUTPUT)
+ break;
+
+ if(node) {
+ bNodeLink *link;
+
+ /* get link to viewer */
+ for(link= snode->edittree->links.first; link; link= link->next)
+ if(link->tonode==node)
+ break;
+
+ if(link) {
+ link->fromnode= tonode;
+ link->fromsock= tonode->outputs.first;
+ NodeTagChanged(snode->edittree, node);
+
+ snode_handle_recalc(snode);
+ }
+ }
+}
+
+
+void node_active_link_viewer(SpaceNode *snode)
+{
+ bNode *node= editnode_get_active(snode->edittree);
+ if(node)
+ node_link_viewer(snode, node);
+}
/* return 0: nothing done */
static int node_mouse_select(SpaceNode *snode, unsigned short event)
@@ -1358,6 +1399,10 @@ static int node_mouse_select(SpaceNode *snode, unsigned short event)
node_set_active(snode, node);
+ /* viewer linking */
+ if(G.qual & LR_CTRLKEY)
+ node_link_viewer(snode, node);
+
/* not so nice (no event), but function below delays redraw otherwise */
force_draw(0);