diff options
author | Kent Hansen <kent.hansen@nokia.com> | 2012-03-23 14:31:28 +0100 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-03-23 14:31:28 +0100 |
commit | 425b38ef95f6f4478ffbd4ada0d3046fae2c95e7 (patch) | |
tree | 0347dd701ace8ab022cf6c86edbb61be9795a668 /src/corelib/kernel | |
parent | 2f2b78321427daa8c7f0702140c297d22b0bf3c8 (diff) | |
parent | 3b512ae142017f105f297467f74dc28d3cb9030a (diff) |
Merge "Merge master into api_changes" into refs/staging/api_changes
Diffstat (limited to 'src/corelib/kernel')
-rw-r--r-- | src/corelib/kernel/qcoreevent.h | 1 | ||||
-rw-r--r-- | src/corelib/kernel/qobject.cpp | 9 |
2 files changed, 9 insertions, 1 deletions
diff --git a/src/corelib/kernel/qcoreevent.h b/src/corelib/kernel/qcoreevent.h index 31ee8e810b..a833394bba 100644 --- a/src/corelib/kernel/qcoreevent.h +++ b/src/corelib/kernel/qcoreevent.h @@ -75,6 +75,7 @@ public: KeyRelease = 7, // key released FocusIn = 8, // keyboard focus received FocusOut = 9, // keyboard focus lost + FocusAboutToChange = 23, // keyboard focus is about to be lost Enter = 10, // mouse enters widget Leave = 11, // mouse leaves widget Paint = 12, // paint widget diff --git a/src/corelib/kernel/qobject.cpp b/src/corelib/kernel/qobject.cpp index ae4449e559..e41a7cf92e 100644 --- a/src/corelib/kernel/qobject.cpp +++ b/src/corelib/kernel/qobject.cpp @@ -4091,6 +4091,8 @@ QMetaObject::Connection QObject::connectImpl(const QObject *sender, void **signa { if (!sender || !signal || !slotObj || !senderMetaObject) { qWarning("QObject::connect: invalid null parametter"); + if (slotObj && !slotObj->ref.deref()) + delete slotObj; return QMetaObject::Connection(); } int signal_index = -1; @@ -4098,6 +4100,8 @@ QMetaObject::Connection QObject::connectImpl(const QObject *sender, void **signa senderMetaObject->static_metacall(QMetaObject::IndexOfMethod, 0, args); if (signal_index < 0 || signal_index >= QMetaObjectPrivate::get(senderMetaObject)->signalCount) { qWarning("QObject::connect: signal not found in %s", senderMetaObject->className()); + if (!slotObj->ref.deref()) + delete slotObj; return QMetaObject::Connection(0); } int signalOffset, methodOffset; @@ -4117,8 +4121,11 @@ QMetaObject::Connection QObject::connectImpl(const QObject *sender, void **signa (*connectionLists)[signal_index].first; while (c2) { - if (c2->receiver == receiver && c2->isSlotObject && c2->slotObj->compare(slot)) + if (c2->receiver == receiver && c2->isSlotObject && c2->slotObj->compare(slot)) { + if (!slotObj->ref.deref()) + delete slotObj; return QMetaObject::Connection(); + } c2 = c2->nextConnectionList; } } |