bugfix [#24231] outliner not refreshed correctly

also made world changes only redraw the 3d view if 'Render Only' option is set.
This commit is contained in:
Campbell Barton 2010-10-13 01:10:56 +00:00
parent 118e0426f1
commit 9347dd04a3
6 changed files with 35 additions and 13 deletions

@ -128,7 +128,7 @@ ENDIF(APPLE)
IF(NOT WITH_GAMEENGINE AND WITH_PLAYER) IF(NOT WITH_GAMEENGINE AND WITH_PLAYER)
MESSAGE("WARNING: WITH_PLAYER needs WITH_GAMEENGINE") MESSAGE(FATAL_ERROR "WITH_PLAYER needs WITH_GAMEENGINE")
ENDIF(NOT WITH_GAMEENGINE AND WITH_PLAYER) ENDIF(NOT WITH_GAMEENGINE AND WITH_PLAYER)
IF(NOT WITH_INSTALL AND WITH_PYTHON_INSTALL) IF(NOT WITH_INSTALL AND WITH_PYTHON_INSTALL)
@ -334,7 +334,7 @@ IF(WIN32)
# Setup 64bit and 64bit windows systems # Setup 64bit and 64bit windows systems
IF(CMAKE_CL_64) IF(CMAKE_CL_64)
message("64 bit compiler detected.") MESSAGE("64 bit compiler detected.")
SET(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/win64) SET(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/win64)
ENDIF(CMAKE_CL_64) ENDIF(CMAKE_CL_64)

@ -104,6 +104,7 @@ static void outliner_main_area_listener(ARegion *ar, wmNotifier *wmn)
case ND_FRAME: case ND_FRAME:
case ND_RENDER_OPTIONS: case ND_RENDER_OPTIONS:
case ND_LAYER: case ND_LAYER:
case ND_WORLD:
ED_region_tag_redraw(ar); ED_region_tag_redraw(ar);
break; break;
} }

@ -548,22 +548,36 @@ static void view3d_recalc_used_layers(ARegion *ar, wmNotifier *wmn, Scene *scene
base= base->next; base= base->next;
} }
sa= win->screen->areabase.first; for(sa= win->screen->areabase.first; sa; sa= sa->next) {
while(sa) { if(sa->spacetype == SPACE_VIEW3D) {
if(sa->spacetype == SPACE_VIEW3D) if(BLI_findindex(&sa->regionbase, ar) != -1) {
if(BLI_findindex(&sa->regionbase, ar) >= 0) {
View3D *v3d= sa->spacedata.first; View3D *v3d= sa->spacedata.first;
v3d->lay_used= lay_used; v3d->lay_used= lay_used;
break; break;
} }
}
sa= sa->next;
} }
} }
static View3D *view3d_from_wmn(ARegion *ar, wmNotifier *wmn)
{
wmWindow *win= wmn->wm->winactive;
ScrArea *sa;
for(sa= win->screen->areabase.first; sa; sa= sa->next) {
if(sa->spacetype == SPACE_VIEW3D)
if(BLI_findindex(&sa->regionbase, ar) != -1) {
return (View3D *)sa->spacedata.first;
}
}
return NULL;
}
static void view3d_main_area_listener(ARegion *ar, wmNotifier *wmn) static void view3d_main_area_listener(ARegion *ar, wmNotifier *wmn)
{ {
bScreen *sc; bScreen *sc;
View3D *v3d;
/* context changes */ /* context changes */
switch(wmn->category) { switch(wmn->category) {
@ -600,6 +614,11 @@ static void view3d_main_area_listener(ARegion *ar, wmNotifier *wmn)
case ND_MODE: case ND_MODE:
ED_region_tag_redraw(ar); ED_region_tag_redraw(ar);
break; break;
case ND_WORLD:
v3d= view3d_from_wmn(ar, wmn);
if(v3d->flag2 & V3D_RENDER_OVERRIDE)
ED_region_tag_redraw(ar);
break;
} }
if (wmn->action == NA_EDITED) if (wmn->action == NA_EDITED)
ED_region_tag_redraw(ar); ED_region_tag_redraw(ar);
@ -650,7 +669,9 @@ static void view3d_main_area_listener(ARegion *ar, wmNotifier *wmn)
case NC_WORLD: case NC_WORLD:
switch(wmn->data) { switch(wmn->data) {
case ND_WORLD_DRAW: case ND_WORLD_DRAW:
ED_region_tag_redraw(ar); v3d= view3d_from_wmn(ar, wmn);
if(v3d->flag2 & V3D_RENDER_OVERRIDE)
ED_region_tag_redraw(ar);
break; break;
} }
break; break;

@ -3094,7 +3094,7 @@ void RNA_def_scene(BlenderRNA *brna)
prop= RNA_def_property(srna, "world", PROP_POINTER, PROP_NONE); prop= RNA_def_property(srna, "world", PROP_POINTER, PROP_NONE);
RNA_def_property_flag(prop, PROP_EDITABLE); RNA_def_property_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "World", "World used for rendering the scene"); RNA_def_property_ui_text(prop, "World", "World used for rendering the scene");
RNA_def_property_update(prop, NC_SCENE|NC_WORLD, NULL); RNA_def_property_update(prop, NC_SCENE|ND_WORLD, NULL);
prop= RNA_def_property(srna, "cursor_location", PROP_FLOAT, PROP_XYZ_LENGTH); prop= RNA_def_property(srna, "cursor_location", PROP_FLOAT, PROP_XYZ_LENGTH);
RNA_def_property_float_sdna(prop, NULL, "cursor"); RNA_def_property_float_sdna(prop, NULL, "cursor");

@ -478,9 +478,8 @@ void RNA_def_world(BlenderRNA *brna)
RNA_def_property_array(prop, 3); RNA_def_property_array(prop, 3);
RNA_def_property_ui_text(prop, "Horizon Color", "Color at the horizon"); RNA_def_property_ui_text(prop, "Horizon Color", "Color at the horizon");
/* RNA_def_property_update(prop, 0, "rna_World_update"); */ /* RNA_def_property_update(prop, 0, "rna_World_update"); */
/* render-only uses this, the notifier could be made to be more spesific */ /* render-only uses this */
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, "rna_World_update"); RNA_def_property_update(prop, NC_WORLD|ND_WORLD_DRAW, "rna_World_update");
prop= RNA_def_property(srna, "zenith_color", PROP_FLOAT, PROP_COLOR); prop= RNA_def_property(srna, "zenith_color", PROP_FLOAT, PROP_COLOR);

@ -191,6 +191,7 @@ typedef struct wmNotifier {
#define ND_TOOLSETTINGS (15<<16) #define ND_TOOLSETTINGS (15<<16)
#define ND_LAYER (16<<16) #define ND_LAYER (16<<16)
#define ND_FRAME_RANGE (17<<16) #define ND_FRAME_RANGE (17<<16)
#define ND_WORLD (92<<16)
#define ND_LAYER_CONTENT (101<<16) #define ND_LAYER_CONTENT (101<<16)
/* NC_OBJECT Object */ /* NC_OBJECT Object */