diff options
author | Stephen Kelly <stephen.kelly@kdab.com> | 2012-10-18 14:29:06 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2012-10-25 15:56:14 +0200 |
commit | dee57bc91080740201a0bf0b8c42eb374ee696f3 (patch) | |
tree | edc27d73f41475ccb7c3e83c671f361f79693eeb | |
parent | 611c0081ff265354405882b40b323d7cb20ca967 (diff) |
Core/kernel: Make some signals private.
There are more opportunities in QtCore and the rest of Qt to make signals
private instead of public. This is a test-dart to see if there is any
reason not to do this.
It would be nice to make QObject::destroyed private, but as it has a
default argument it would be source incompatible to anyone connecting
to the SIGNAL(destroyed()) instead of SIGNAL(destroyed(QObject*)).
Currently the function-pointer-based connect syntax does not accept
a functor (or lambda) with a different number of arguments than the
signal. Olivier says a fix for that might come in 5.1, but for now
the qfiledialog2 test is changed to not use that anymore.
Also, the function pointer for a private signal can not be assigned to
a local variable, so the qmetamethod test is changed to not do so
anymore.
Change-Id: Iaf776b822f9ba364f2c184df0c6b23811da56e44
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
-rw-r--r-- | src/corelib/kernel/qcoreapplication.cpp | 2 | ||||
-rw-r--r-- | src/corelib/kernel/qcoreapplication.h | 12 | ||||
-rw-r--r-- | src/corelib/kernel/qeventdispatcher_unix.cpp | 2 | ||||
-rw-r--r-- | src/corelib/kernel/qobject.cpp | 2 | ||||
-rw-r--r-- | src/corelib/kernel/qobject.h | 6 | ||||
-rw-r--r-- | src/corelib/kernel/qsocketnotifier.cpp | 2 | ||||
-rw-r--r-- | src/corelib/kernel/qsocketnotifier.h | 6 | ||||
-rw-r--r-- | src/corelib/kernel/qtimer.cpp | 2 | ||||
-rw-r--r-- | src/corelib/kernel/qtimer.h | 6 | ||||
-rw-r--r-- | src/corelib/kernel/qwineventnotifier.cpp | 2 | ||||
-rw-r--r-- | src/corelib/kernel/qwineventnotifier.h | 6 | ||||
-rw-r--r-- | tests/auto/corelib/kernel/qmetamethod/tst_qmetamethod.cpp | 3 | ||||
-rw-r--r-- | tests/auto/widgets/dialogs/qfiledialog2/tst_qfiledialog2.cpp | 8 |
13 files changed, 42 insertions, 17 deletions
diff --git a/src/corelib/kernel/qcoreapplication.cpp b/src/corelib/kernel/qcoreapplication.cpp index 55112af7ec..8ff4aa7c54 100644 --- a/src/corelib/kernel/qcoreapplication.cpp +++ b/src/corelib/kernel/qcoreapplication.cpp @@ -1003,7 +1003,7 @@ int QCoreApplication::exec() if (self) { self->d_func()->in_exec = false; if (!self->d_func()->aboutToQuitEmitted) - emit self->aboutToQuit(); + emit self->aboutToQuit(QPrivateSignal()); self->d_func()->aboutToQuitEmitted = true; sendPostedEvents(0, QEvent::DeferredDelete); } diff --git a/src/corelib/kernel/qcoreapplication.h b/src/corelib/kernel/qcoreapplication.h index 622139e6f8..46eab4e740 100644 --- a/src/corelib/kernel/qcoreapplication.h +++ b/src/corelib/kernel/qcoreapplication.h @@ -166,8 +166,16 @@ public Q_SLOTS: static void quit(); Q_SIGNALS: - void aboutToQuit(); - void unixSignal(int); + void aboutToQuit( +#if !defined(qdoc) + QPrivateSignal +#endif + ); + void unixSignal(int +#if !defined(qdoc) + , QPrivateSignal +#endif + ); protected: bool event(QEvent *); diff --git a/src/corelib/kernel/qeventdispatcher_unix.cpp b/src/corelib/kernel/qeventdispatcher_unix.cpp index ded1f27f4f..44715b0553 100644 --- a/src/corelib/kernel/qeventdispatcher_unix.cpp +++ b/src/corelib/kernel/qeventdispatcher_unix.cpp @@ -191,7 +191,7 @@ int QEventDispatcherUNIXPrivate::doSelect(QEventLoop::ProcessEventsFlags flags, for (int i = 0; i < NSIG; ++i) { if (signals_fired[i]) { signals_fired[i] = 0; - emit QCoreApplication::instance()->unixSignal(i); + emit QCoreApplication::instance()->unixSignal(i, QCoreApplication::QPrivateSignal()); } } } diff --git a/src/corelib/kernel/qobject.cpp b/src/corelib/kernel/qobject.cpp index 58e8fcb24d..268677ee1b 100644 --- a/src/corelib/kernel/qobject.cpp +++ b/src/corelib/kernel/qobject.cpp @@ -1004,7 +1004,7 @@ void QObject::setObjectName(const QString &name) if (d->extraData->objectName != name) { d->extraData->objectName = name; - emit objectNameChanged(d->extraData->objectName); + emit objectNameChanged(d->extraData->objectName, QPrivateSignal()); } } diff --git a/src/corelib/kernel/qobject.h b/src/corelib/kernel/qobject.h index 653cc6a42e..689946b6c4 100644 --- a/src/corelib/kernel/qobject.h +++ b/src/corelib/kernel/qobject.h @@ -348,7 +348,11 @@ public: Q_SIGNALS: void destroyed(QObject * = 0); - void objectNameChanged(const QString &objectName); + void objectNameChanged(const QString &objectName +#if !defined(qdoc) + , QPrivateSignal +#endif + ); public: inline QObject *parent() const { return d_ptr->parent; } diff --git a/src/corelib/kernel/qsocketnotifier.cpp b/src/corelib/kernel/qsocketnotifier.cpp index cf65ea895c..f1b8741242 100644 --- a/src/corelib/kernel/qsocketnotifier.cpp +++ b/src/corelib/kernel/qsocketnotifier.cpp @@ -298,7 +298,7 @@ bool QSocketNotifier::event(QEvent *e) } QObject::event(e); // will activate filters if ((e->type() == QEvent::SockAct) || (e->type() == QEvent::SockClose)) { - emit activated(d->sockfd); + emit activated(d->sockfd, QPrivateSignal()); return true; } return false; diff --git a/src/corelib/kernel/qsocketnotifier.h b/src/corelib/kernel/qsocketnotifier.h index 177ce224bd..35e73b790b 100644 --- a/src/corelib/kernel/qsocketnotifier.h +++ b/src/corelib/kernel/qsocketnotifier.h @@ -69,7 +69,11 @@ public Q_SLOTS: void setEnabled(bool); Q_SIGNALS: - void activated(int socket); + void activated(int socket +#if !defined(qdoc) + , QPrivateSignal +#endif + ); protected: bool event(QEvent *); diff --git a/src/corelib/kernel/qtimer.cpp b/src/corelib/kernel/qtimer.cpp index a685973bd7..9dea666363 100644 --- a/src/corelib/kernel/qtimer.cpp +++ b/src/corelib/kernel/qtimer.cpp @@ -247,7 +247,7 @@ void QTimer::timerEvent(QTimerEvent *e) if (e->timerId() == id) { if (single) stop(); - emit timeout(); + emit timeout(QPrivateSignal()); } } diff --git a/src/corelib/kernel/qtimer.h b/src/corelib/kernel/qtimer.h index b934440275..a3cc1c7813 100644 --- a/src/corelib/kernel/qtimer.h +++ b/src/corelib/kernel/qtimer.h @@ -88,7 +88,11 @@ public Q_SLOTS: void stop(); Q_SIGNALS: - void timeout(); + void timeout( +#if !defined(qdoc) + QPrivateSignal +#endif + ); protected: void timerEvent(QTimerEvent *); diff --git a/src/corelib/kernel/qwineventnotifier.cpp b/src/corelib/kernel/qwineventnotifier.cpp index 9a99b15202..44116c3333 100644 --- a/src/corelib/kernel/qwineventnotifier.cpp +++ b/src/corelib/kernel/qwineventnotifier.cpp @@ -234,7 +234,7 @@ bool QWinEventNotifier::event(QEvent * e) } QObject::event(e); // will activate filters if (e->type() == QEvent::WinEventAct) { - emit activated(d->handleToEvent); + emit activated(d->handleToEvent, QPrivateSignal()); return true; } return false; diff --git a/src/corelib/kernel/qwineventnotifier.h b/src/corelib/kernel/qwineventnotifier.h index add4059595..d5e4d0f7e3 100644 --- a/src/corelib/kernel/qwineventnotifier.h +++ b/src/corelib/kernel/qwineventnotifier.h @@ -74,7 +74,11 @@ public Q_SLOTS: void setEnabled(bool enable); Q_SIGNALS: - void activated(HANDLE hEvent); + void activated(HANDLE hEvent +#if !defined(qdoc) + , QPrivateSignal +#endif + ); protected: bool event(QEvent * e); diff --git a/tests/auto/corelib/kernel/qmetamethod/tst_qmetamethod.cpp b/tests/auto/corelib/kernel/qmetamethod/tst_qmetamethod.cpp index 1ef2cf8e3f..526a5039b0 100644 --- a/tests/auto/corelib/kernel/qmetamethod/tst_qmetamethod.cpp +++ b/tests/auto/corelib/kernel/qmetamethod/tst_qmetamethod.cpp @@ -714,9 +714,8 @@ void tst_QMetaMethod::comparisonOperators() void tst_QMetaMethod::fromSignal() { #define FROMSIGNAL_HELPER(ObjectType, Name, Arguments) { \ - void (ObjectType::*signal)Arguments = &ObjectType::Name; \ const QMetaObject *signalMeta = &ObjectType::staticMetaObject; \ - QCOMPARE(QMetaMethod::fromSignal(signal), \ + QCOMPARE(QMetaMethod::fromSignal(&ObjectType::Name), \ signalMeta->method(signalMeta->indexOfSignal(QMetaObject::normalizedSignature(#Name #Arguments)))); \ } diff --git a/tests/auto/widgets/dialogs/qfiledialog2/tst_qfiledialog2.cpp b/tests/auto/widgets/dialogs/qfiledialog2/tst_qfiledialog2.cpp index b4985df8d4..54663ba3a3 100644 --- a/tests/auto/widgets/dialogs/qfiledialog2/tst_qfiledialog2.cpp +++ b/tests/auto/widgets/dialogs/qfiledialog2/tst_qfiledialog2.cpp @@ -319,10 +319,11 @@ void tst_QFileDialog2::emptyUncPath() } #if !defined(QT_NO_CONTEXTMENU) && !defined(QT_NO_MENU) -struct MenuCloser { +struct MenuCloser : public QObject { QWidget *w; explicit MenuCloser(QWidget *w) : w(w) {} - void operator()() const + + void close() { QMenu *menu = qFindChild<QMenu*>(w); if (!menu) { @@ -342,7 +343,8 @@ static bool openContextMenu(QFileDialog &fd) QTimer timer; timer.setInterval(300); timer.setSingleShot(true); - QObject::connect(&timer, &QTimer::timeout, MenuCloser(&fd)); + MenuCloser closer(&fd); + QObject::connect(&timer, &QTimer::timeout, &closer, &MenuCloser::close); timer.start(); QContextMenuEvent cme(QContextMenuEvent::Mouse, QPoint(10, 10)); qApp->sendEvent(list->viewport(), &cme); // blocks until menu is closed again. |