Revision: 49175
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=49175
Author:   campbellbarton
Date:     2012-07-24 12:35:41 +0000 (Tue, 24 Jul 2012)
Log Message:
-----------
fix/workaround for glitch with node editing active texture bug - where a node 
texture in a group could get `stuck` and the buttons UI wouldnt update to other 
active nodes.

Files saved with this error will still give problems, toggling group edit will 
fix.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/space_node/node_edit.c
    trunk/blender/source/blender/makesdna/DNA_node_types.h

Modified: trunk/blender/source/blender/editors/space_node/node_edit.c
===================================================================
--- trunk/blender/source/blender/editors/space_node/node_edit.c 2012-07-24 
12:18:40 UTC (rev 49174)
+++ trunk/blender/source/blender/editors/space_node/node_edit.c 2012-07-24 
12:35:41 UTC (rev 49175)
@@ -796,8 +796,15 @@
        bNode *node;
        
        /* make sure nothing has group editing on */
-       for (node = snode->nodetree->nodes.first; node; node = node->next)
+       for (node = snode->nodetree->nodes.first; node; node = node->next) {
                nodeGroupEditClear(node);
+
+               /* while we're here, clear texture active */
+               if (node->typeinfo->nclass == NODE_CLASS_TEXTURE) {
+                       /* this is not 100% sure to be reliable, see comment on 
the flag */
+                       node->flag &= ~NODE_ACTIVE_TEXTURE;
+               }
+       }
        
        if (gnode == NULL) {
                /* with NULL argument we do a toggle */
@@ -809,8 +816,14 @@
                snode->edittree = nodeGroupEditSet(gnode, 1);
                
                /* deselect all other nodes, so we can also do grabbing of 
entire subtree */
-               for (node = snode->nodetree->nodes.first; node; node = 
node->next)
+               for (node = snode->nodetree->nodes.first; node; node = 
node->next) {
                        node_deselect(node);
+
+                       if (node->typeinfo->nclass == NODE_CLASS_TEXTURE) {
+                               /* this is not 100% sure to be reliable, see 
comment on the flag */
+                               node->flag &= ~NODE_ACTIVE_TEXTURE;
+                       }
+               }
                node_select(gnode);
        }
        else 

Modified: trunk/blender/source/blender/makesdna/DNA_node_types.h
===================================================================
--- trunk/blender/source/blender/makesdna/DNA_node_types.h      2012-07-24 
12:18:40 UTC (rev 49174)
+++ trunk/blender/source/blender/makesdna/DNA_node_types.h      2012-07-24 
12:35:41 UTC (rev 49175)
@@ -211,6 +211,11 @@
        /* automatic flag for nodes included in transforms */
 #define NODE_TRANSFORM         (1<<13)
        /* node is active texture */
+
+       /* note: take care with this flag since its possible it gets
+        * `stuck` inside/outside the active group - which makes buttons
+        * window texture not update, we try to avoid it by clearing the
+        * flag when toggling group editing - Campbell */
 #define NODE_ACTIVE_TEXTURE    (1<<14)
        /* use a custom color for the node */
 #define NODE_CUSTOM_COLOR      (1<<15)

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to