diff options
author | Campbell Barton <ideasman42@gmail.com> | 2020-05-13 09:08:56 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2020-05-13 09:08:56 +0300 |
commit | 8799fbbef8c7d15457faaf9b5e5a31fa75ad50c1 (patch) | |
tree | 19bc38fcb0d80ee61387ca08233fa44c096d737f /source | |
parent | 7ff47680c6b894da460856fc3b5f30d80a3a5e00 (diff) | |
parent | 75d0287cee1aae1a94e46d3fb90379ce016eda8c (diff) |
Merge branch 'blender-v2.83-release'
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/python/intern/bpy_rna.c | 16 | ||||
-rw-r--r-- | source/blender/python/intern/bpy_rna.h | 4 | ||||
-rw-r--r-- | source/blender/python/intern/bpy_rna_types_capi.c | 5 |
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); } /** \} */ |