This commit broke ID selectors (scene, screen, ...) The menu will open and everything, but clicking on a new item closes the menu and doesn't do anything else.
Reverting those changes (locally) fixed the problem, so it should probably be investigated. Martin --- On Tue, 12/8/09, Brecht Van Lommel <[email protected]> wrote: > From: Brecht Van Lommel <[email protected]> > Subject: [Bf-blender-cvs] SVN commit: /data/svn/bf-blender [25217] > trunk/blender/source/blender: RNA: > To: [email protected] > Received: Tuesday, December 8, 2009, 12:23 PM > Revision: 25217 > > http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=25217 > Author: blendix > Date: 2009-12-08 18:23:48 +0100 > (Tue, 08 Dec 2009) > > Log Message: > ----------- > RNA: > > * Property update functions no longer get context, instead > they get only > Main and Scene. The RNA api was intended to be as > context-less as > possible, since it doesn't really matter who is > changing the property, > everything that uses the property should be > updated. > * There's still one exception case that use it now, screen > operations > still depend on context too much. It also revealed a > few places using > context where they shouldn't. > * Ideally Scene shouldn't be passed, but much of Blender > still depends on > it, should be dropped when we try to support > multiple scene editing. > > Change was planned for a while, but need this now to be > able to call > update without a context pointer. > > Modified Paths: > -------------- > > trunk/blender/source/blender/editors/include/ED_screen.h > > trunk/blender/source/blender/editors/screen/screen_edit.c > > trunk/blender/source/blender/editors/screen/screen_ops.c > > trunk/blender/source/blender/makesrna/RNA_access.h > > trunk/blender/source/blender/makesrna/RNA_types.h > > trunk/blender/source/blender/makesrna/intern/makesrna.c > > trunk/blender/source/blender/makesrna/intern/rna_access.c > > trunk/blender/source/blender/makesrna/intern/rna_armature.c > > trunk/blender/source/blender/makesrna/intern/rna_boid.c > > trunk/blender/source/blender/makesrna/intern/rna_brush.c > > trunk/blender/source/blender/makesrna/intern/rna_camera.c > > trunk/blender/source/blender/makesrna/intern/rna_cloth.c > > trunk/blender/source/blender/makesrna/intern/rna_constraint.c > > trunk/blender/source/blender/makesrna/intern/rna_curve.c > > trunk/blender/source/blender/makesrna/intern/rna_fcurve.c > > trunk/blender/source/blender/makesrna/intern/rna_fluidsim.c > > trunk/blender/source/blender/makesrna/intern/rna_group.c > > trunk/blender/source/blender/makesrna/intern/rna_image.c > > trunk/blender/source/blender/makesrna/intern/rna_internal.h > > trunk/blender/source/blender/makesrna/intern/rna_internal_types.h > > trunk/blender/source/blender/makesrna/intern/rna_key.c > > trunk/blender/source/blender/makesrna/intern/rna_lamp.c > > trunk/blender/source/blender/makesrna/intern/rna_lattice.c > > trunk/blender/source/blender/makesrna/intern/rna_main_api.c > > trunk/blender/source/blender/makesrna/intern/rna_material.c > > trunk/blender/source/blender/makesrna/intern/rna_mesh.c > > trunk/blender/source/blender/makesrna/intern/rna_meta.c > > trunk/blender/source/blender/makesrna/intern/rna_modifier.c > > trunk/blender/source/blender/makesrna/intern/rna_nodetree.c > > trunk/blender/source/blender/makesrna/intern/rna_object.c > > trunk/blender/source/blender/makesrna/intern/rna_object_force.c > > trunk/blender/source/blender/makesrna/intern/rna_particle.c > > trunk/blender/source/blender/makesrna/intern/rna_pose.c > > trunk/blender/source/blender/makesrna/intern/rna_scene.c > > trunk/blender/source/blender/makesrna/intern/rna_scene_api.c > > trunk/blender/source/blender/makesrna/intern/rna_screen.c > > trunk/blender/source/blender/makesrna/intern/rna_sculpt_paint.c > > trunk/blender/source/blender/makesrna/intern/rna_sequence.c > > trunk/blender/source/blender/makesrna/intern/rna_smoke.c > > trunk/blender/source/blender/makesrna/intern/rna_sound.c > > trunk/blender/source/blender/makesrna/intern/rna_space.c > > trunk/blender/source/blender/makesrna/intern/rna_texture.c > > trunk/blender/source/blender/makesrna/intern/rna_ui.c > > trunk/blender/source/blender/makesrna/intern/rna_userdef.c > > trunk/blender/source/blender/makesrna/intern/rna_wm.c > > trunk/blender/source/blender/makesrna/intern/rna_world.c > > trunk/blender/source/blender/windowmanager/WM_api.h > > trunk/blender/source/blender/windowmanager/intern/wm.c > > trunk/blender/source/blender/windowmanager/intern/wm_files.c > > Modified: > trunk/blender/source/blender/editors/include/ED_screen.h > =================================================================== > --- > trunk/blender/source/blender/editors/include/ED_screen.h > 2009-12-08 17:00:53 UTC (rev 25216) > +++ > trunk/blender/source/blender/editors/include/ED_screen.h > 2009-12-08 17:23:48 UTC (rev 25217) > @@ -98,7 +98,7 @@ > void ED_screen_set_subwinactive(struct > wmWindow *win, struct wmEvent *event); > void ED_screen_exit(struct bContext *C, > struct wmWindow *window, struct bScreen *screen); > void ED_screen_animation_timer(struct > bContext *C, int redraws, int sync, int enable); > -void > ED_screen_animation_timer_update(struct bContext *C, int > redraws); > +void > ED_screen_animation_timer_update(struct bScreen *screen, int > redraws); > int > ED_screen_full_newspace(struct bContext *C, ScrArea *sa, int > type); > void ED_screen_full_prevspace(struct > bContext *C, ScrArea *sa); > void ED_screen_full_restore(struct > bContext *C, ScrArea *sa); > > Modified: > trunk/blender/source/blender/editors/screen/screen_edit.c > =================================================================== > --- > trunk/blender/source/blender/editors/screen/screen_edit.c > 2009-12-08 17:00:53 UTC (rev 25216) > +++ > trunk/blender/source/blender/editors/screen/screen_edit.c > 2009-12-08 17:23:48 UTC (rev 25217) > @@ -1632,10 +1632,8 @@ > return aret; > } > > -void ED_screen_animation_timer_update(bContext *C, int > redraws) > +void ED_screen_animation_timer_update(bScreen *screen, int > redraws) > { > - bScreen *screen= CTX_wm_screen(C); > - > if(screen && > screen->animtimer) { > wmTimer *wt= > screen->animtimer; > ScreenAnimData *sad= > wt->customdata; > > Modified: > trunk/blender/source/blender/editors/screen/screen_ops.c > =================================================================== > --- > trunk/blender/source/blender/editors/screen/screen_ops.c > 2009-12-08 17:00:53 UTC (rev 25216) > +++ > trunk/blender/source/blender/editors/screen/screen_ops.c > 2009-12-08 17:23:48 UTC (rev 25217) > @@ -2418,7 +2418,7 @@ > > ED_screen_animation_timer(C, stime->redraws, sync, > mode); > > > /* update region if TIME_REGION was set, to leftmost 3d > window */ > - > ED_screen_animation_timer_update(C, stime->redraws); > + > ED_screen_animation_timer_update(screen, > stime->redraws); > } > else { > > int redraws = TIME_REGION|TIME_ALL_3D_WIN; > > Modified: > trunk/blender/source/blender/makesrna/RNA_access.h > =================================================================== > --- > trunk/blender/source/blender/makesrna/RNA_access.h > 2009-12-08 17:00:53 UTC (rev 25216) > +++ > trunk/blender/source/blender/makesrna/RNA_access.h > 2009-12-08 17:23:48 UTC (rev 25217) > @@ -38,6 +38,7 @@ > struct ID; > struct Main; > struct ReportList; > +struct Scene; > > /* Types */ > > @@ -649,6 +650,7 @@ > int RNA_property_animated(PointerRNA *ptr, PropertyRNA > *prop); > > void RNA_property_update(struct bContext *C, PointerRNA > *ptr, PropertyRNA *prop); > +void RNA_property_update_main(struct Main *bmain, struct > Scene *scene, PointerRNA *ptr, PropertyRNA *prop); > > /* Property Data */ > > > Modified: > trunk/blender/source/blender/makesrna/RNA_types.h > =================================================================== > --- > trunk/blender/source/blender/makesrna/RNA_types.h > 2009-12-08 17:00:53 UTC (rev 25216) > +++ > trunk/blender/source/blender/makesrna/RNA_types.h > 2009-12-08 17:23:48 UTC (rev 25217) > @@ -166,6 +166,9 @@ > /* flag contains multiple enums */ > PROP_ENUM_FLAG = 1<<21, > > + /* need context for update function */ > + PROP_CONTEXT_UPDATE = 1<<22, > + > /* internal flags */ > PROP_BUILTIN = 1<<7, > PROP_EXPORT = 1<<8, > > Modified: > trunk/blender/source/blender/makesrna/intern/makesrna.c > =================================================================== > --- > trunk/blender/source/blender/makesrna/intern/makesrna.c > 2009-12-08 17:00:53 UTC (rev 25216) > +++ > trunk/blender/source/blender/makesrna/intern/makesrna.c > 2009-12-08 17:23:48 UTC (rev 25217) > @@ -1763,7 +1763,7 @@ > rna_print_c_string(f, > prop->description); fprintf(f, ",\n\t"); > fprintf(f, "%d,\n", prop->icon); > fprintf(f, "\t%s, %s|%s, %s, %d, {%d, > %d, %d}, %d,\n", rna_property_typename(prop->type), > rna_property_subtypename(prop->subtype), > rna_property_subtype_unit(prop->subtype), > rna_function_string(prop->getlength), > prop->arraydimension, prop->arraylength[0], > prop->arraylength[1], prop->arraylength[2], > prop->totarraylength); > - fprintf(f, "\t%s, %d, %s, %s,\n", > rna_function_string(prop->update), prop->noteflag, > rna_function_string(prop->editable), > rna_function_string(prop->itemeditable)); > + fprintf(f, "\t%s%s, %d, %s, %s,\n", > (prop->flag & PROP_CONTEXT_UPDATE)? "(UpdateFunc)": > "", rna_function_string(prop->update), prop->noteflag, > rna_function_string(prop->editable), > rna_function_string(prop->itemeditable)); > > if(prop->flag & PROP_RAW_ACCESS) > rna_set_raw_offset(f, srna, prop); > else fprintf(f, "\t0, 0"); > @@ -2050,11 +2050,13 @@ > fprintf(f, "#include > <stddef.h>\n\n"); > > fprintf(f, "#include \"DNA_ID.h\"\n"); > + fprintf(f, "#include > \"DNA_scene_types.h\"\n"); > > fprintf(f, "#include > \"BLI_blenlib.h\"\n\n"); > > fprintf(f, "#include > \"BKE_context.h\"\n"); > fprintf(f, "#include > \"BKE_library.h\"\n"); > + fprintf(f, "#include > \"BKE_main.h\"\n"); > fprintf(f, "#include > \"BKE_report.h\"\n"); > fprintf(f, "#include > \"BKE_utildefines.h\"\n\n"); > > > Modified: > trunk/blender/source/blender/makesrna/intern/rna_access.c > =================================================================== > --- > trunk/blender/source/blender/makesrna/intern/rna_access.c > 2009-12-08 17:00:53 UTC (rev 25216) > +++ > trunk/blender/source/blender/makesrna/intern/rna_access.c > 2009-12-08 17:23:48 UTC (rev 25217) > @@ -29,6 +29,7 @@ > #include "MEM_guardedalloc.h" > > #include "DNA_ID.h" > +#include "DNA_scene_types.h" > #include "DNA_windowmanager_types.h" > > #include "BLI_blenlib.h" > @@ -37,6 +38,7 @@ > > #include "BKE_context.h" > #include "BKE_idprop.h" > +#include "BKE_main.h" > #include "BKE_report.h" > #include "BKE_utildefines.h" > > @@ -1103,25 +1105,43 @@ > return 0; > } > > -void RNA_property_update(bContext *C, PointerRNA *ptr, > PropertyRNA *prop) > +static void rna_property_update(bContext *C, Main *bmain, > Scene *scene, PointerRNA *ptr, PropertyRNA *prop) > { > int is_rna = (prop->magic == > RNA_MAGIC); > prop= rna_ensure_property(prop); > > if(is_rna) { > - if(prop->update) > - > prop->update(C, ptr); > + if(prop->update) > { > + > /* ideally no context would be needed for update, but > there's some > + > parts of the code that need it still, so > we have this exception */ > + > if(prop->flag & PROP_CONTEXT_UPDATE) { > + > if(C) > ((ContextUpdateFunc)prop->update)(C, ptr); > + > } > + > else > + > prop->update(bmain, scene, ptr); > + } > > if(prop->noteflag) > - > WM_event_add_notifier(C, prop->noteflag, > ptr->id.data); > + > WM_main_add_notifier(prop->noteflag, ptr->id.data); > } > else { > /* WARNING! This is > so property drivers update the display! > * not > especially nice */ > > DAG_id_flush_update(ptr->id.data, OB_RECALC_OB); > - > WM_event_add_notifier(C, NC_WINDOW, NULL); > + > WM_main_add_notifier(NC_WINDOW, NULL); > } > + > } > > +void RNA_property_update(bContext *C, PointerRNA *ptr, > PropertyRNA *prop) > +{ > + rna_property_update(C, > CTX_data_main(C), CTX_data_scene(C), ptr, prop); > +} > + > +void RNA_property_update_main(Main *bmain, Scene *scene, > PointerRNA *ptr, PropertyRNA *prop) > +{ > + rna_property_update(NULL, bmain, scene, > ptr, prop); > +} > + > /* Property Data */ > > int RNA_property_boolean_get(PointerRNA *ptr, PropertyRNA > *prop) > > Modified: > trunk/blender/source/blender/makesrna/intern/rna_armature.c > =================================================================== > --- > trunk/blender/source/blender/makesrna/intern/rna_armature.c > 2009-12-08 17:00:53 UTC (rev 25216) > +++ > trunk/blender/source/blender/makesrna/intern/rna_armature.c > 2009-12-08 17:23:48 UTC (rev 25217) > @@ -47,13 +47,13 @@ > > #include "ED_armature.h" > > -static void rna_Armature_update_data(bContext *C, > PointerRNA *ptr) > +static void rna_Armature_update_data(Main *bmain, Scene > *scene, PointerRNA *ptr) > { > ID *id= ptr->id.data; > > DAG_id_flush_update(id, > OB_RECALC_DATA); > - WM_event_add_notifier(C, > NC_GEOM|ND_DATA, id); > - //WM_event_add_notifier(C, > NC_OBJECT|ND_POSE, NULL); > + WM_main_add_notifier(NC_GEOM|ND_DATA, > id); > + > //WM_main_add_notifier(NC_OBJECT|ND_POSE, NULL); > } > > > @@ -103,11 +103,11 @@ > ED_armature_edit_bone_remove(arm, > ebone); > } > > -static void rna_Armature_redraw_data(bContext *C, > PointerRNA *ptr) > +static void rna_Armature_redraw_data(Main *bmain, Scene > *scene, PointerRNA *ptr) > { > ID *id= ptr->id.data; > > - WM_event_add_notifier(C, > NC_GEOM|ND_DATA, id); > + WM_main_add_notifier(NC_GEOM|ND_DATA, > id); > } > > static char *rna_Bone_path(PointerRNA *ptr) > @@ -304,7 +304,7 @@ > } > } > > -static void > rna_Armature_editbone_transform_update(bContext *C, > PointerRNA *ptr) > +static void rna_Armature_editbone_transform_update(Main > *bmain, Scene *scene, PointerRNA *ptr) > { > bArmature *arm= > (bArmature*)ptr->id.data; > EditBone *ebone= > (EditBone*)ptr->data; > @@ -339,7 +339,7 @@ > } > } > > - rna_Armature_update_data(C, ptr); > + rna_Armature_update_data(bmain, scene, > ptr); > } > > static void > rna_Armature_bones_next(CollectionPropertyIterator *iter) > > Modified: > trunk/blender/source/blender/makesrna/intern/rna_boid.c > =================================================================== > --- > trunk/blender/source/blender/makesrna/intern/rna_boid.c > 2009-12-08 17:00:53 UTC (rev 25216) > +++ > trunk/blender/source/blender/makesrna/intern/rna_boid.c > 2009-12-08 17:23:48 UTC (rev 25217) > @@ -72,7 +72,7 @@ > #include "BKE_depsgraph.h" > #include "BKE_particle.h" > > -static void rna_Boids_reset(bContext *C, PointerRNA *ptr) > +static void rna_Boids_reset(Main *bmain, Scene *scene, > PointerRNA *ptr) > { > > if(ptr->type==&RNA_ParticleSystem) { > ParticleSystem *psys > = (ParticleSystem*)ptr->data; > @@ -84,12 +84,10 @@ > else > > DAG_id_flush_update(ptr->id.data, > OB_RECALC_DATA|PSYS_RECALC_RESET); > > - WM_event_add_notifier(C, > NC_OBJECT|ND_PARTICLE_DATA, NULL); > + > WM_main_add_notifier(NC_OBJECT|ND_PARTICLE_DATA, NULL); > } > -static void rna_Boids_reset_deps(bContext *C, PointerRNA > *ptr) > +static void rna_Boids_reset_deps(Main *bmain, Scene > *scene, PointerRNA *ptr) > { > - Scene *scene = CTX_data_scene(C); > - > > if(ptr->type==&RNA_ParticleSystem) { > ParticleSystem *psys > = (ParticleSystem*)ptr->data; > > @@ -102,7 +100,7 @@ > > DAG_scene_sort(scene); > > - WM_event_add_notifier(C, > NC_OBJECT|ND_PARTICLE_DATA, NULL); > + > WM_main_add_notifier(NC_OBJECT|ND_PARTICLE_DATA, NULL); > } > > static StructRNA* rna_BoidRule_refine(struct PointerRNA > *ptr) > > > @@ Diff output truncated at 10240 characters. @@ > > _______________________________________________ > Bf-blender-cvs mailing list > [email protected] > http://lists.blender.org/mailman/listinfo/bf-blender-cvs > __________________________________________________________________ Connect with friends from any web browser - no download required. Try the new Yahoo! Canada Messenger for the Web BETA at http://ca.messenger.yahoo.com/webmessengerpromo.php _______________________________________________ Bf-committers mailing list [email protected] http://lists.blender.org/mailman/listinfo/bf-committers
