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:
authorCampbell Barton <ideasman42@gmail.com>2020-05-13 09:08:56 +0300
committerCampbell Barton <ideasman42@gmail.com>2020-05-13 09:08:56 +0300
commit8799fbbef8c7d15457faaf9b5e5a31fa75ad50c1 (patch)
tree19bc38fcb0d80ee61387ca08233fa44c096d737f
parent7ff47680c6b894da460856fc3b5f30d80a3a5e00 (diff)
parent75d0287cee1aae1a94e46d3fb90379ce016eda8c (diff)
Merge branch 'blender-v2.83-release'
-rw-r--r--source/blender/python/intern/bpy_rna.c16
-rw-r--r--source/blender/python/intern/bpy_rna.h4
-rw-r--r--source/blender/python/intern/bpy_rna_types_capi.c5
3 files changed, 19 insertions, 6 deletions
diff --git a/source/blender/python/intern/bpy_rna.c b/source/blender/python/intern/bpy_rna.c
index 4da81e3380f..55bf87051ec 100644
--- a/source/blender/python/intern/bpy_rna.c
+++ b/source/blender/python/intern/bpy_rna.c
@@ -9034,9 +9034,11 @@ static PyObject *pyrna_unregister_class(PyObject *UNUSED(self), PyObject *py_cla
}
/**
- * Extend RNA types with C/API methods.
+ * Extend RNA types with C/API methods, properties.
*/
-void pyrna_struct_type_extend_capi(struct StructRNA *srna, struct PyMethodDef *method)
+void pyrna_struct_type_extend_capi(struct StructRNA *srna,
+ struct PyMethodDef *method,
+ struct PyGetSetDef *getset)
{
PyObject *cls = pyrna_srna_Subtype(srna);
if (method != NULL) {
@@ -9052,6 +9054,16 @@ void pyrna_struct_type_extend_capi(struct StructRNA *srna, struct PyMethodDef *m
Py_DECREF(args); /* Clears 'func' too. */
}
}
+
+ if (getset != NULL) {
+ for (; getset->name != NULL; getset++) {
+ PyObject *dict = ((PyTypeObject *)cls)->tp_dict;
+ PyObject *descr = PyDescr_NewGetSet((PyTypeObject *)cls, getset);
+ BLI_assert(PyDict_GetItem(dict, PyDescr_NAME(descr)) == NULL);
+ PyDict_SetItem(dict, PyDescr_NAME(descr), descr);
+ Py_DECREF(descr);
+ }
+ }
Py_DECREF(cls);
}
diff --git a/source/blender/python/intern/bpy_rna.h b/source/blender/python/intern/bpy_rna.h
index 3f73ea20205..652d65fe64c 100644
--- a/source/blender/python/intern/bpy_rna.h
+++ b/source/blender/python/intern/bpy_rna.h
@@ -220,7 +220,9 @@ int pyrna_enum_value_from_id(const EnumPropertyItem *item,
int pyrna_deferred_register_class(struct StructRNA *srna, PyTypeObject *py_class);
-void pyrna_struct_type_extend_capi(struct StructRNA *srna, struct PyMethodDef *py_method);
+void pyrna_struct_type_extend_capi(struct StructRNA *srna,
+ struct PyMethodDef *py_method,
+ struct PyGetSetDef *py_getset);
/* called before stopping python */
void pyrna_alloc_types(void);
diff --git a/source/blender/python/intern/bpy_rna_types_capi.c b/source/blender/python/intern/bpy_rna_types_capi.c
index 1b4533224b8..00442295e0b 100644
--- a/source/blender/python/intern/bpy_rna_types_capi.c
+++ b/source/blender/python/intern/bpy_rna_types_capi.c
@@ -121,9 +121,8 @@ static struct PyMethodDef pyrna_space_methods[] = {
void BPY_rna_types_extend_capi(void)
{
- pyrna_struct_type_extend_capi(&RNA_Space, pyrna_space_methods);
- pyrna_struct_type_extend_capi(
- &RNA_WindowManager, pyrna_windowmanager_methods);
+ pyrna_struct_type_extend_capi(&RNA_Space, pyrna_space_methods, NULL);
+ pyrna_struct_type_extend_capi(&RNA_WindowManager, pyrna_windowmanager_methods, NULL);
}
/** \} */