diff options
-rw-r--r-- | source/blender/python/intern/bpy_operator.c | 4 | ||||
-rw-r--r-- | source/blender/python/intern/bpy_rna.c | 6 |
2 files changed, 7 insertions, 3 deletions
diff --git a/source/blender/python/intern/bpy_operator.c b/source/blender/python/intern/bpy_operator.c index b98dab1c5c4..bdd3255ccea 100644 --- a/source/blender/python/intern/bpy_operator.c +++ b/source/blender/python/intern/bpy_operator.c @@ -83,9 +83,7 @@ static PyObject *pyop_call( PyObject * self, PyObject * args) error_val= -1; } else { - /* WM_operator_properties_create(&ptr, opname); */ - /* Save another lookup */ - RNA_pointer_create(NULL, ot->srna, NULL, &ptr); + WM_operator_properties_create_ptr(&ptr, ot); if(kw && PyDict_Size(kw)) error_val= pyrna_pydict_to_props(&ptr, kw, 0, "Converting py args to operator properties: "); diff --git a/source/blender/python/intern/bpy_rna.c b/source/blender/python/intern/bpy_rna.c index 8370884c0a9..9c9192db1be 100644 --- a/source/blender/python/intern/bpy_rna.c +++ b/source/blender/python/intern/bpy_rna.c @@ -785,6 +785,12 @@ int pyrna_py_to_prop(PointerRNA *ptr, PropertyRNA *prop, ParameterList *parms, v StructRNA *ptype= RNA_property_pointer_type(ptr, prop); int flag = RNA_property_flag(prop); + /* if property is an OperatorProperties pointer and value is a map, forward back to pyrna_pydict_to_props */ + if (RNA_struct_is_a(ptype, &RNA_OperatorProperties) && PyDict_Check(value)) { + PointerRNA opptr = RNA_property_pointer_get(ptr, prop); + return pyrna_pydict_to_props(&opptr, value, 0, error_prefix); + } + if(!BPy_StructRNA_Check(value) && value != Py_None) { PyErr_Format(PyExc_TypeError, "%.200s expected a %.200s type", error_prefix, RNA_struct_identifier(ptype)); return -1; |