diff options
author | renatofilho <renato.filho@openbossa.org> | 2010-10-28 16:28:43 -0300 |
---|---|---|
committer | renatofilho <renato.filho@openbossa.org> | 2010-10-28 17:40:12 -0300 |
commit | bd8239b1cd99d25c26eb99a051072254342ab0bb (patch) | |
tree | 12fce76bd9206473ead1600e05d5591619f98393 /PySide | |
parent | a1524b78b632d99aa6076391d0d77e46271dd7c8 (diff) |
Stop signal/slot connection if is impossible to register that on object.
Created unit test for bug #442, #437.
Fixes bug #442.
Reviewer: Marcelo Lira <marcelo.lira@openbossa.org>
Luciano Wolf <luciano.wolf@openbossa.org>
Diffstat (limited to 'PySide')
-rw-r--r-- | PySide/QtCore/glue/qobject_connect.cpp | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/PySide/QtCore/glue/qobject_connect.cpp b/PySide/QtCore/glue/qobject_connect.cpp index cf7877912..b98a4114a 100644 --- a/PySide/QtCore/glue/qobject_connect.cpp +++ b/PySide/QtCore/glue/qobject_connect.cpp @@ -32,7 +32,8 @@ static bool qobjectConnect(QObject* source, const char* signal, QObject* receive return false; signal++; - PySide::SignalManager::registerMetaMethod(source, signal, QMetaMethod::Signal); + if (!PySide::SignalManager::registerMetaMethod(source, signal, QMetaMethod::Signal)) + return false; bool isSignal = PySide::isSignal(slot); slot++; @@ -46,7 +47,9 @@ static bool qobjectConnectCallback(QObject* source, const char* signal, PyObject return false; signal++; - PySide::SignalManager::registerMetaMethod(source, signal, QMetaMethod::Signal); + if (!PySide::SignalManager::registerMetaMethod(source, signal, QMetaMethod::Signal)) + return false; + int signalIndex = source->metaObject()->indexOfMethod(signal); PySide::SignalManager& signalManager = PySide::SignalManager::instance(); @@ -70,7 +73,8 @@ static bool qobjectConnectCallback(QObject* source, const char* signal, PyObject if (usingGlobalReceiver) { signalManager.addGlobalSlot(slot, callback); } else { - PySide::SignalManager::registerMetaMethod(receiver, slot, QMetaMethod::Slot); + if (!PySide::SignalManager::registerMetaMethod(receiver, slot, QMetaMethod::Slot)) + return false; } slotIndex = metaObject->indexOfSlot(slot); } |