aboutsummaryrefslogtreecommitdiffstats
path: root/libpyside/dynamicqmetaobject.cpp
diff options
context:
space:
mode:
authorRenato Filho <renato.filho@openbossa.org>2010-05-26 16:42:13 -0300
committerRenato Filho <renato.filho@openbossa.org>2010-05-26 18:34:42 -0300
commit43ec6577661dd468ba8f6c841b3fe90537a951eb (patch)
tree51429da433367cf6b30ac0956108b477c4ca68ee /libpyside/dynamicqmetaobject.cpp
parentcafb38dafd9a44da1227bc914094833b5a8dbfde (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.cpp9
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());
}
}
}