[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [55408] trunk/blender/source/blender: Fixes for context updates of the node editor:
Lukas Toenne
lukas.toenne at googlemail.com
Tue Mar 19 11:42:34 CET 2013
Revision: 55408
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=55408
Author: lukastoenne
Date: 2013-03-19 10:42:33 +0000 (Tue, 19 Mar 2013)
Log Message:
-----------
Fixes for context updates of the node editor:
* If the node tree can be updated from context (tree has get_from_context callback defined), reset the pointers first to clear the editor path if no tree can be found.
* Stupid mistake: snode->from != snode->from is always false.
* Shader nodes context update: set the 'from' pointer to the active object, even if it doesn't have a material or node tree.
Modified Paths:
--------------
trunk/blender/source/blender/editors/space_node/node_edit.c
trunk/blender/source/blender/nodes/shader/node_shader_tree.c
trunk/blender/source/blender/nodes/texture/node_texture_tree.c
Modified: trunk/blender/source/blender/editors/space_node/node_edit.c
===================================================================
--- trunk/blender/source/blender/editors/space_node/node_edit.c 2013-03-19 10:11:41 UTC (rev 55407)
+++ trunk/blender/source/blender/editors/space_node/node_edit.c 2013-03-19 10:42:33 UTC (rev 55408)
@@ -530,11 +530,17 @@
}
if (!(snode->flag & SNODE_PIN) || ntree == NULL) {
- if (treetype->get_from_context)
+ if (treetype->get_from_context) {
+ /* reset and update from context */
+ ntree = NULL;
+ id = NULL;
+ from = NULL;
+
treetype->get_from_context(C, treetype, &ntree, &id, &from);
+ }
}
- if (snode->nodetree != ntree || snode->id != id || snode->from != snode->from) {
+ if (snode->nodetree != ntree || snode->id != id || snode->from != from) {
ED_node_tree_start(snode, ntree, id, from);
}
}
Modified: trunk/blender/source/blender/nodes/shader/node_shader_tree.c
===================================================================
--- trunk/blender/source/blender/nodes/shader/node_shader_tree.c 2013-03-19 10:11:41 UTC (rev 55407)
+++ trunk/blender/source/blender/nodes/shader/node_shader_tree.c 2013-03-19 10:42:33 UTC (rev 55408)
@@ -80,15 +80,14 @@
if (snode->shaderfrom == SNODE_SHADER_OBJECT) {
if (ob) {
+ *r_from = &ob->id;
if (ob->type == OB_LAMP) {
- *r_from = &ob->id;
*r_id = ob->data;
*r_ntree = ((Lamp *)ob->data)->nodetree;
}
else {
Material *ma = give_current_material(ob, ob->actcol);
if (ma) {
- *r_from = &ob->id;
*r_id = &ma->id;
*r_ntree = ma->nodetree;
}
Modified: trunk/blender/source/blender/nodes/texture/node_texture_tree.c
===================================================================
--- trunk/blender/source/blender/nodes/texture/node_texture_tree.c 2013-03-19 10:11:41 UTC (rev 55407)
+++ trunk/blender/source/blender/nodes/texture/node_texture_tree.c 2013-03-19 10:42:33 UTC (rev 55408)
@@ -83,11 +83,13 @@
}
}
else if (snode->texfrom == SNODE_TEX_WORLD) {
- tx = give_current_world_texture(scene->world);
- if (tx) {
+ if (scene->world) {
*r_from = (ID *)scene->world;
- *r_id = &tx->id;
- *r_ntree = tx->nodetree;
+ tx = give_current_world_texture(scene->world);
+ if (tx) {
+ *r_id = &tx->id;
+ *r_ntree = tx->nodetree;
+ }
}
}
else {
More information about the Bf-blender-cvs
mailing list