Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrecht Van Lommel <brechtvanlommel@pandora.be>2009-06-03 03:53:40 +0400
committerBrecht Van Lommel <brechtvanlommel@pandora.be>2009-06-03 03:53:40 +0400
commitc2d2b1c57d50a3f0a902532646811616502386c3 (patch)
tree5a0e874d09c125a7c0533c8109cde80d52498200 /source/blender
parentca24322413e78b60ece51902da1b8a9ac22d13ba (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')
-rw-r--r--source/blender/makesrna/intern/rna_access.c11
-rw-r--r--source/blender/makesrna/intern/rna_constraint.c3
-rw-r--r--source/blender/makesrna/intern/rna_lamp.c4
-rw-r--r--source/blender/makesrna/intern/rna_ui.c6
-rw-r--r--source/blender/makesrna/intern/rna_wm.c2
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)