diff options
-rw-r--r-- | libpyside/dynamicqmetaobject.cpp | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/libpyside/dynamicqmetaobject.cpp b/libpyside/dynamicqmetaobject.cpp index 88497843a..a16a35469 100644 --- a/libpyside/dynamicqmetaobject.cpp +++ b/libpyside/dynamicqmetaobject.cpp @@ -404,12 +404,13 @@ DynamicQMetaObject* DynamicQMetaObject::createBasedOn(PyObject* pyObj, PyTypeObj className = className.mid(className.lastIndexOf('.')+1); DynamicQMetaObject *mo = new PySide::DynamicQMetaObject(className.toAscii(), base); + QList<PyObject*> properties; + while (PyDict_Next(type->tp_dict, &pos, &key, &value)) { - //Register properties - if (value->ob_type == &PySideQPropertyType) { - mo->addProperty(PyString_AsString(key), value); - } + //Leave the properties to be register after signals because of notify object + if (value->ob_type == &PySideQPropertyType) + properties.append(key); //Register signals if (value->ob_type == &PySideSignalType) { @@ -440,6 +441,13 @@ DynamicQMetaObject* DynamicQMetaObject::createBasedOn(PyObject* pyObj, PyTypeObj } } } + + //Register properties + foreach(PyObject* key, properties) { + PyObject* value = PyDict_GetItem(type->tp_dict, key); + mo->addProperty(PyString_AsString(key), value); + } + return mo; } |