aboutsummaryrefslogtreecommitdiffstats
path: root/PySide
diff options
context:
space:
mode:
authorrenatofilho <renato.filho@openbossa.org>2010-10-28 16:28:43 -0300
committerrenatofilho <renato.filho@openbossa.org>2010-10-28 17:40:12 -0300
commitbd8239b1cd99d25c26eb99a051072254342ab0bb (patch)
tree12fce76bd9206473ead1600e05d5591619f98393 /PySide
parenta1524b78b632d99aa6076391d0d77e46271dd7c8 (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.cpp10
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);
}