aboutsummaryrefslogtreecommitdiffstats
path: root/libpyside/pysidesignal.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'libpyside/pysidesignal.cpp')
-rw-r--r--libpyside/pysidesignal.cpp9
1 files changed, 8 insertions, 1 deletions
diff --git a/libpyside/pysidesignal.cpp b/libpyside/pysidesignal.cpp
index 9b8cbc076..3308035a4 100644
--- a/libpyside/pysidesignal.cpp
+++ b/libpyside/pysidesignal.cpp
@@ -777,6 +777,12 @@ static void _addSignalToWrapper(SbkObjectType* wrapperType, const char* signalNa
PyDict_SetItemString(typeDict, signalName, reinterpret_cast<PyObject*>(signal));
}
+// This function is used by qStableSort to promote empty signatures
+static bool compareSignals(const QByteArray& sig1, const QByteArray& sig2)
+{
+ return sig1.isEmpty();
+}
+
void registerSignals(SbkObjectType* pyObj, const QMetaObject* metaObject)
{
typedef QHash<QByteArray, QList<QByteArray> > SignalSigMap;
@@ -801,7 +807,8 @@ void registerSignals(SbkObjectType* pyObj, const QMetaObject* metaObject)
self->initialized = 0;
self->homonymousMethod = 0;
- qSort(it.value().begin(), it.value().end());
+ // Empty signatures comes first! So they will be the default signal signature
+ qStableSort(it.value().begin(), it.value().end(), &compareSignals);
SignalSigMap::mapped_type::const_iterator j = it.value().begin();
SignalSigMap::mapped_type::const_iterator endJ = it.value().end();
for (; j != endJ; ++j)