forked from bartvdbraak/blender
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:
parent
61889df87b
commit
19c9708a16
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user