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.
This commit is contained in:
Brecht Van Lommel 2009-06-09 17:56:07 +00:00
parent 61889df87b
commit 19c9708a16
2 changed files with 24 additions and 6 deletions

@ -804,8 +804,12 @@ void node_buttons(ScrArea *sa)
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;

@ -1226,8 +1226,20 @@ void do_global_buttons(unsigned short event)
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 @@ void do_global_buttons(unsigned short event)
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 @@ void do_global_buttons(unsigned short event)
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;