summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStephen Kelly <stephen.kelly@kdab.com>2012-10-18 14:29:06 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2012-10-25 15:56:14 +0200
commitdee57bc91080740201a0bf0b8c42eb374ee696f3 (patch)
treeedc27d73f41475ccb7c3e83c671f361f79693eeb
parent611c0081ff265354405882b40b323d7cb20ca967 (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.cpp2
-rw-r--r--src/corelib/kernel/qcoreapplication.h12
-rw-r--r--src/corelib/kernel/qeventdispatcher_unix.cpp2
-rw-r--r--src/corelib/kernel/qobject.cpp2
-rw-r--r--src/corelib/kernel/qobject.h6
-rw-r--r--src/corelib/kernel/qsocketnotifier.cpp2
-rw-r--r--src/corelib/kernel/qsocketnotifier.h6
-rw-r--r--src/corelib/kernel/qtimer.cpp2
-rw-r--r--src/corelib/kernel/qtimer.h6
-rw-r--r--src/corelib/kernel/qwineventnotifier.cpp2
-rw-r--r--src/corelib/kernel/qwineventnotifier.h6
-rw-r--r--tests/auto/corelib/kernel/qmetamethod/tst_qmetamethod.cpp3
-rw-r--r--tests/auto/widgets/dialogs/qfiledialog2/tst_qfiledialog2.cpp8
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.