diff options
author | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2009-06-03 03:53:40 +0400 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2009-06-03 03:53:40 +0400 |
commit | c2d2b1c57d50a3f0a902532646811616502386c3 (patch) | |
tree | 5a0e874d09c125a7c0533c8109cde80d52498200 /source/blender/makesrna | |
parent | ca24322413e78b60ece51902da1b8a9ac22d13ba (diff) |
RNA
* Fix an issue where the pointer types wasn't always refine
to the most specific type, now RNA_pointer_create also
does this for convenience.
* Make lamp fallof type editable.
Diffstat (limited to 'source/blender/makesrna')
-rw-r--r-- | source/blender/makesrna/intern/rna_access.c | 11 | ||||
-rw-r--r-- | source/blender/makesrna/intern/rna_constraint.c | 3 | ||||
-rw-r--r-- | source/blender/makesrna/intern/rna_lamp.c | 4 | ||||
-rw-r--r-- | source/blender/makesrna/intern/rna_ui.c | 6 | ||||
-rw-r--r-- | source/blender/makesrna/intern/rna_wm.c | 2 |
5 files changed, 19 insertions, 7 deletions
diff --git a/source/blender/makesrna/intern/rna_access.c b/source/blender/makesrna/intern/rna_access.c index cc952528302..41e1f4753f0 100644 --- a/source/blender/makesrna/intern/rna_access.c +++ b/source/blender/makesrna/intern/rna_access.c @@ -99,6 +99,17 @@ void RNA_pointer_create(ID *id, StructRNA *type, void *data, PointerRNA *r_ptr) r_ptr->id.data= id; r_ptr->type= type; r_ptr->data= data; + + if(data) { + while(r_ptr->type && r_ptr->type->refine) { + StructRNA *rtype= r_ptr->type->refine(r_ptr); + + if(rtype == r_ptr->type) + break; + else + r_ptr->type= rtype; + } + } } static void rna_pointer_inherit_id(StructRNA *type, PointerRNA *parent, PointerRNA *ptr) diff --git a/source/blender/makesrna/intern/rna_constraint.c b/source/blender/makesrna/intern/rna_constraint.c index 02429ffa4bf..d0730cd7bb0 100644 --- a/source/blender/makesrna/intern/rna_constraint.c +++ b/source/blender/makesrna/intern/rna_constraint.c @@ -1558,4 +1558,5 @@ void RNA_def_constraint(BlenderRNA *brna) rna_def_constraint_shrinkwrap(brna); } -#endif
\ No newline at end of file +#endif + diff --git a/source/blender/makesrna/intern/rna_lamp.c b/source/blender/makesrna/intern/rna_lamp.c index 1c4aa7b4eee..d7f9c8728e8 100644 --- a/source/blender/makesrna/intern/rna_lamp.c +++ b/source/blender/makesrna/intern/rna_lamp.c @@ -329,7 +329,6 @@ static void rna_def_lamp_falloff(StructRNA *srna) {0, NULL, NULL, NULL}}; prop= RNA_def_property(srna, "falloff_type", PROP_ENUM, PROP_NONE); - RNA_def_property_clear_flag(prop, PROP_EDITABLE); /* needs to be able to create curve mapping */ RNA_def_property_enum_items(prop, prop_fallofftype_items); RNA_def_property_ui_text(prop, "Falloff Type", "Intensity Decay with distance."); RNA_def_property_update(prop, NC_LAMP|ND_LIGHTING, NULL); @@ -653,6 +652,8 @@ static void rna_def_sun_lamp(BlenderRNA *brna) RNA_def_property_struct_type(prop, "LampSkySettings"); RNA_def_property_pointer_funcs(prop, "rna_Lamp_sky_settings_get", NULL); RNA_def_property_ui_text(prop, "Sky Settings", "Sky related settings for sun lamps."); + + rna_def_lamp_sky_settings(brna); } static void rna_def_hemi_lamp(BlenderRNA *brna) @@ -672,7 +673,6 @@ void RNA_def_lamp(BlenderRNA *brna) rna_def_spot_lamp(brna); rna_def_sun_lamp(brna); rna_def_hemi_lamp(brna); - rna_def_lamp_sky_settings(brna); rna_def_lamp_mtex(brna); } diff --git a/source/blender/makesrna/intern/rna_ui.c b/source/blender/makesrna/intern/rna_ui.c index 9d3d961c18f..7ca0c586d47 100644 --- a/source/blender/makesrna/intern/rna_ui.c +++ b/source/blender/makesrna/intern/rna_ui.c @@ -199,7 +199,7 @@ static StructRNA *rna_Panel_register(const bContext *C, ReportList *reports, voi static StructRNA* rna_Panel_refine(struct PointerRNA *ptr) { Panel *hdr= (Panel*)ptr->data; - return (hdr->type)? hdr->type->py_srna: &RNA_Panel; + return (hdr->type && hdr->type->py_srna)? hdr->type->py_srna: &RNA_Panel; } /* Header */ @@ -290,7 +290,7 @@ static StructRNA *rna_Header_register(const bContext *C, ReportList *reports, vo static StructRNA* rna_Header_refine(struct PointerRNA *htr) { Header *hdr= (Header*)htr->data; - return (hdr->type)? hdr->type->py_srna: &RNA_Header; + return (hdr->type && hdr->type->py_srna)? hdr->type->py_srna: &RNA_Header; } /* Menu */ @@ -405,7 +405,7 @@ static StructRNA *rna_Menu_register(const bContext *C, ReportList *reports, void static StructRNA* rna_Menu_refine(struct PointerRNA *mtr) { Menu *hdr= (Menu*)mtr->data; - return (hdr->type)? hdr->type->py_srna: &RNA_Menu; + return (hdr->type && hdr->type->py_srna)? hdr->type->py_srna: &RNA_Menu; } static int rna_UILayout_active_get(struct PointerRNA *ptr) diff --git a/source/blender/makesrna/intern/rna_wm.c b/source/blender/makesrna/intern/rna_wm.c index c1bccad4ffa..a8f63566349 100644 --- a/source/blender/makesrna/intern/rna_wm.c +++ b/source/blender/makesrna/intern/rna_wm.c @@ -56,7 +56,7 @@ static StructRNA *rna_OperatorProperties_refine(PointerRNA *ptr) if(op) return op->type->srna; else - return &RNA_OperatorProperties; + return ptr->type; } IDProperty *rna_OperatorProperties_idproperties(PointerRNA *ptr, int create) |