[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [20763] trunk/blender/source/blender/src: Fix for bug #18855: in texture node editor, "Add New" for world

Brecht Van Lommel brecht at blender.org
Tue Jun 9 19:56:07 CEST 2009


Revision: 20763
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=20763
Author:   blendix
Date:     2009-06-09 19:56:07 +0200 (Tue, 09 Jun 2009)

Log Message:
-----------
Fix for bug #18855: in texture node editor, "Add New" for world
did not set texture in correct place and crashed without an active
object.

Modified Paths:
--------------
    trunk/blender/source/blender/src/header_node.c
    trunk/blender/source/blender/src/headerbuttons.c

Modified: trunk/blender/source/blender/src/header_node.c
===================================================================
--- trunk/blender/source/blender/src/header_node.c	2009-06-09 17:04:50 UTC (rev 20762)
+++ trunk/blender/source/blender/src/header_node.c	2009-06-09 17:56:07 UTC (rev 20763)
@@ -804,8 +804,12 @@
 		if(snode->from) {
 			
 			/* can't use unlink etc here, code requires buttons context */
-			xco= std_libbuttons(block, xco, 0, 0, NULL, B_TEXBROWSE, ID_TE, 1, snode->id, snode->from, &(snode->menunr), 
-					   0, 0, 0, B_AUTOTEXNAME, B_KEEPDATA);
+			if(snode->texfrom == SNODE_TEX_WORLD)
+				xco= std_libbuttons(block, xco, 0, 0, NULL, B_WTEXBROWSE, ID_TE, 1, snode->id, snode->from, &(snode->menunr), 
+						   0, 0, 0, B_AUTOTEXNAME, B_KEEPDATA);
+			else
+				xco= std_libbuttons(block, xco, 0, 0, NULL, B_TEXBROWSE, ID_TE, 1, snode->id, snode->from, &(snode->menunr), 
+						   0, 0, 0, B_AUTOTEXNAME, B_KEEPDATA);
 			
 			if(snode->id) {
 				Tex *tx= (Tex *)snode->id;

Modified: trunk/blender/source/blender/src/headerbuttons.c
===================================================================
--- trunk/blender/source/blender/src/headerbuttons.c	2009-06-09 17:04:50 UTC (rev 20762)
+++ trunk/blender/source/blender/src/headerbuttons.c	2009-06-09 17:56:07 UTC (rev 20763)
@@ -1226,8 +1226,20 @@
 		
 		break;
 	case B_WTEXBROWSE:
+	{
+		short *menunr = 0;
+		
+		/* this is called now from Node editor too, buttons might not exist */
+		if(curarea->spacetype==SPACE_NODE) {
+			SpaceNode *snode = curarea->spacedata.first;
+			menunr = &snode->menunr;
+		}
+		else if(G.buts) {
+			menunr = &G.buts->texnr;
+		}
+		else return;
 
-		if(G.buts->texnr== -2) {
+		if(*menunr== -2) {
 			id= NULL;
 			wrld= G.scene->world;
 			if(wrld) {
@@ -1235,12 +1247,12 @@
 				if(mtex) id= (ID *)mtex->tex;
 			}
 
-			activate_databrowse((ID *)id, ID_TE, 0, B_WTEXBROWSE, &G.buts->texnr, do_global_buttons);
+			activate_databrowse((ID *)id, ID_TE, 0, B_WTEXBROWSE, menunr, do_global_buttons);
 			return;
 		}
-		if(G.buts->texnr < 0) break;
+		if(*menunr < 0) break;
 
-		if(G.buts->pin) {
+		if(G.buts && G.buts->pin) {
 			
 		}
 		else {
@@ -1279,10 +1291,12 @@
 				allqueue(REDRAWBUTSSHADING, 0);
 				allqueue(REDRAWIPO, 0);
 				allqueue(REDRAWOOPS, 0);
+				allqueue(REDRAWNODE, 0);
 				BIF_preview_changed(ID_WO);
 			}
 		}
 		break;
+	}
 	case B_LAMPBROWSE:
 		/* no lock */
 		if(ob==0) return;





More information about the Bf-blender-cvs mailing list