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:
Diffstat (limited to 'source/blender/python/intern/bpy_rna.c')
-rw-r--r--source/blender/python/intern/bpy_rna.c30
1 files changed, 30 insertions, 0 deletions
diff --git a/source/blender/python/intern/bpy_rna.c b/source/blender/python/intern/bpy_rna.c
index bfb79ea6531..11e79fdee2a 100644
--- a/source/blender/python/intern/bpy_rna.c
+++ b/source/blender/python/intern/bpy_rna.c
@@ -6298,6 +6298,8 @@ static struct PyMethodDef pyrna_basetype_methods[] = {
{NULL, NULL, 0, NULL}
};
+/* used to call ..._keys() direct, but we need to filter out operator subclasses */
+#if 0
static PyObject *pyrna_basetype_dir(BPy_BaseTypeRNA *self)
{
PyObject *list;
@@ -6318,6 +6320,34 @@ static PyObject *pyrna_basetype_dir(BPy_BaseTypeRNA *self)
return list;
}
+#else
+
+static PyObject *pyrna_basetype_dir(BPy_BaseTypeRNA *self)
+{
+ PyObject *ret = PyList_New(0);
+ PyObject *item;
+
+ RNA_PROP_BEGIN(&self->ptr, itemptr, self->prop) {
+ StructRNA *srna = itemptr.data;
+ StructRNA *srna_base = RNA_struct_base(itemptr.data);
+ /* skip own operators, these double up [#29666] */
+ if (srna_base == &RNA_Operator) {
+ /* do nothing */
+ }
+ else {
+ /* add to python list */
+ item = PyUnicode_FromString(RNA_struct_identifier(srna));
+ PyList_Append(ret, item);
+ Py_DECREF(item);
+ }
+ }
+ RNA_PROP_END;
+
+ return ret;
+}
+
+#endif
+
static PyTypeObject pyrna_basetype_Type = BLANK_PYTHON_TYPE;
PyObject *BPY_rna_types(void)