From d9e567d36573bf81549ea5c4914a65b3a21dafcc Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 4 Mar 2021 23:09:11 +1100 Subject: PyAPI: support methods for collection properties Previously only static methods were supported. Now C/API functions added to collections can receive a 'self' argument. --- source/blender/python/intern/bpy_rna.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/source/blender/python/intern/bpy_rna.c b/source/blender/python/intern/bpy_rna.c index a006b81cb60..bad6c4b4b56 100644 --- a/source/blender/python/intern/bpy_rna.c +++ b/source/blender/python/intern/bpy_rna.c @@ -4622,6 +4622,19 @@ static PyObject *pyrna_prop_collection_getattro(BPy_PropertyRNA *self, PyObject if (ret == NULL) { PyErr_Restore(error_type, error_value, error_traceback); } + else { + if (Py_TYPE(ret) == &PyMethodDescr_Type) { + PyMethodDef *m = ((PyMethodDescrObject *)ret)->d_method; + /* TODO: #METH_CLASS */ + if (m->ml_flags & METH_STATIC) { + /* Keep 'ret' as-is. */ + } + else { + Py_DECREF(ret); + ret = PyCMethod_New(m, (PyObject *)self, NULL, NULL); + } + } + } } } -- cgit v1.2.3