diff options
author | Renato Filho <renato.filho@openbossa.org> | 2010-05-26 16:42:13 -0300 |
---|---|---|
committer | Renato Filho <renato.filho@openbossa.org> | 2010-05-26 18:34:42 -0300 |
commit | 43ec6577661dd468ba8f6c841b3fe90537a951eb (patch) | |
tree | 51429da433367cf6b30ac0956108b477c4ca68ee /libpyside/dynamicqmetaobject.cpp | |
parent | cafb38dafd9a44da1227bc914094833b5a8dbfde (diff) |
Fixed bug on dynamic metaobject creation.
Reviewer: Luciano Wolf <luciano.wolf@openbossa.org>,
Marcelo Lira <marcelo.lira@openbossa.org>
Diffstat (limited to 'libpyside/dynamicqmetaobject.cpp')
-rw-r--r-- | libpyside/dynamicqmetaobject.cpp | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/libpyside/dynamicqmetaobject.cpp b/libpyside/dynamicqmetaobject.cpp index d4e3ca255..562f2d476 100644 --- a/libpyside/dynamicqmetaobject.cpp +++ b/libpyside/dynamicqmetaobject.cpp @@ -153,6 +153,7 @@ void DynamicQMetaObject::addSlot(const char* slot, const char* type) if (i != m_slots.end()) return; + //search for a empty space MethodData blank; i = qFind(m_slots.begin(), m_slots.end(), blank); @@ -193,7 +194,9 @@ DynamicQMetaObject* DynamicQMetaObject::createBasedOn(PyObject* pyObj, PyTypeObj PyObject *attr = PyObject_GetAttr(pyObj, key); SignalInstanceData *data = reinterpret_cast<SignalInstanceData*>(attr); while(data) { - mo->addSignal(data->signature); + int index = base->indexOfSignal(data->signature); + if (index == -1) + mo->addSignal(data->signature); data = reinterpret_cast<SignalInstanceData*>(data->next); } } @@ -209,7 +212,9 @@ DynamicQMetaObject* DynamicQMetaObject::createBasedOn(PyObject* pyObj, PyTypeObj QString sig(PyString_AsString(signature)); //slot the slot type and signature QStringList slotInfo = sig.split(" ", QString::SkipEmptyParts); - mo->addSlot(slotInfo[1].toAscii(), slotInfo[0].toAscii()); + int index = base->indexOfSlot(slotInfo[0].toAscii()); + if (index == -1) + mo->addSlot(slotInfo[1].toAscii(), slotInfo[0].toAscii()); } } } |