Fix for #34739 and #35060, avoid ambiguity in compositor viewer nodes.
[blender.git] / source / blender / editors / space_node / space_node.c
index e234b4255ed169e62df7b69ca665a7df94c7cde3..ec5c4657b9c9e62b17a7774227b0fe63701ce3ca 100644 (file)
@@ -90,6 +90,8 @@ void ED_node_tree_start(SpaceNode *snode, bNodeTree *ntree, ID *id, ID *from)
        snode->id = id;
        snode->from = from;
        
+       ED_node_set_active_viewer_key(snode);
+       
        WM_main_add_notifier(NC_SCENE | ND_NODES, NULL);
 }
 
@@ -117,6 +119,8 @@ void ED_node_tree_push(SpaceNode *snode, bNodeTree *ntree, bNode *gnode)
        /* update current tree */
        snode->edittree = ntree;
        
+       ED_node_set_active_viewer_key(snode);
+       
        WM_main_add_notifier(NC_SCENE | ND_NODES, NULL);
 }
 
@@ -135,6 +139,8 @@ void ED_node_tree_pop(SpaceNode *snode)
        path = snode->treepath.last;
        snode->edittree = path->nodetree;
        
+       ED_node_set_active_viewer_key(snode);
+       
        /* listener updates the View2D center from edittree */
        WM_main_add_notifier(NC_SCENE | ND_NODES, NULL);
 }
@@ -208,6 +214,14 @@ void ED_node_tree_path_get_fixedbuf(SpaceNode *snode, char *value, int max_lengt
        }
 }
 
+void ED_node_set_active_viewer_key(SpaceNode *snode)
+{
+       bNodeTreePath *path = snode->treepath.last;
+       if (snode->nodetree && path) {
+               snode->nodetree->active_viewer_key = path->parent_key;
+       }
+}
+
 void snode_group_offset(SpaceNode *snode, float *x, float *y)
 {
        bNodeTreePath *path = snode->treepath.last;