Move QWinEventNotifier data members to a private class
This is a binary incompatible change to allow future changes to QWinEventNotifier to be possible in a binary compatible way. Change-Id: I268d3e01d8ee237ecbd164ee0f7cae1eb73dd725 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com> Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com> Reviewed-by: Debao Zhang <dbzhang800@gmail.com>bb10
parent
e79d975be4
commit
08cc6901f8
|
|
@ -48,6 +48,19 @@
|
|||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
class QWinEventNotifierPrivate : public QObjectPrivate
|
||||
{
|
||||
Q_DECLARE_PUBLIC(QWinEventNotifier)
|
||||
public:
|
||||
QWinEventNotifierPrivate()
|
||||
: handleToEvent(0), enabled(false) {}
|
||||
QWinEventNotifierPrivate(HANDLE h, bool e)
|
||||
: handleToEvent(h), enabled(e) {}
|
||||
|
||||
HANDLE handleToEvent;
|
||||
bool enabled;
|
||||
};
|
||||
|
||||
/*!
|
||||
\class QWinEventNotifier
|
||||
\since 5.0
|
||||
|
|
@ -103,7 +116,7 @@ QT_BEGIN_NAMESPACE
|
|||
*/
|
||||
|
||||
QWinEventNotifier::QWinEventNotifier(QObject *parent)
|
||||
: QObject(parent), handleToEvent(0), enabled(false)
|
||||
: QObject(*new QWinEventNotifierPrivate, parent)
|
||||
{}
|
||||
|
||||
/*!
|
||||
|
|
@ -118,14 +131,14 @@ QWinEventNotifier::QWinEventNotifier(QObject *parent)
|
|||
*/
|
||||
|
||||
QWinEventNotifier::QWinEventNotifier(HANDLE hEvent, QObject *parent)
|
||||
: QObject(parent), handleToEvent(hEvent), enabled(false)
|
||||
: QObject(*new QWinEventNotifierPrivate(hEvent, false), parent)
|
||||
{
|
||||
Q_D(QObject);
|
||||
Q_D(QWinEventNotifier);
|
||||
QEventDispatcherWin32 *eventDispatcher = qobject_cast<QEventDispatcherWin32 *>(d->threadData->eventDispatcher);
|
||||
Q_ASSERT_X(eventDispatcher, "QWinEventNotifier::QWinEventNotifier()",
|
||||
"Cannot create a win event notifier without a QEventDispatcherWin32");
|
||||
eventDispatcher->registerEventNotifier(this);
|
||||
enabled = true;
|
||||
d->enabled = true;
|
||||
}
|
||||
|
||||
/*!
|
||||
|
|
@ -149,8 +162,9 @@ QWinEventNotifier::~QWinEventNotifier()
|
|||
|
||||
void QWinEventNotifier::setHandle(HANDLE hEvent)
|
||||
{
|
||||
Q_D(QWinEventNotifier);
|
||||
setEnabled(false);
|
||||
handleToEvent = hEvent;
|
||||
d->handleToEvent = hEvent;
|
||||
}
|
||||
|
||||
/*!
|
||||
|
|
@ -161,7 +175,8 @@ void QWinEventNotifier::setHandle(HANDLE hEvent)
|
|||
|
||||
HANDLE QWinEventNotifier::handle() const
|
||||
{
|
||||
return handleToEvent;
|
||||
Q_D(const QWinEventNotifier);
|
||||
return d->handleToEvent;
|
||||
}
|
||||
|
||||
/*!
|
||||
|
|
@ -172,7 +187,8 @@ HANDLE QWinEventNotifier::handle() const
|
|||
|
||||
bool QWinEventNotifier::isEnabled() const
|
||||
{
|
||||
return enabled;
|
||||
Q_D(const QWinEventNotifier);
|
||||
return d->enabled;
|
||||
}
|
||||
|
||||
/*!
|
||||
|
|
@ -184,16 +200,16 @@ bool QWinEventNotifier::isEnabled() const
|
|||
|
||||
void QWinEventNotifier::setEnabled(bool enable)
|
||||
{
|
||||
if (enabled == enable) // no change
|
||||
Q_D(QWinEventNotifier);
|
||||
if (d->enabled == enable) // no change
|
||||
return;
|
||||
enabled = enable;
|
||||
d->enabled = enable;
|
||||
|
||||
Q_D(QObject);
|
||||
QEventDispatcherWin32 *eventDispatcher = qobject_cast<QEventDispatcherWin32 *>(d->threadData->eventDispatcher);
|
||||
if (!eventDispatcher) // perhaps application is shutting down
|
||||
return;
|
||||
|
||||
if (enabled)
|
||||
if (enable)
|
||||
eventDispatcher->registerEventNotifier(this);
|
||||
else
|
||||
eventDispatcher->unregisterEventNotifier(this);
|
||||
|
|
@ -205,16 +221,17 @@ void QWinEventNotifier::setEnabled(bool enable)
|
|||
|
||||
bool QWinEventNotifier::event(QEvent * e)
|
||||
{
|
||||
Q_D(QWinEventNotifier);
|
||||
if (e->type() == QEvent::ThreadChange) {
|
||||
if (enabled) {
|
||||
if (d->enabled) {
|
||||
QMetaObject::invokeMethod(this, "setEnabled", Qt::QueuedConnection,
|
||||
Q_ARG(bool, enabled));
|
||||
Q_ARG(bool, true));
|
||||
setEnabled(false);
|
||||
}
|
||||
}
|
||||
QObject::event(e); // will activate filters
|
||||
if (e->type() == QEvent::WinEventAct) {
|
||||
emit activated(handleToEvent);
|
||||
emit activated(d->handleToEvent);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
|
|
|||
|
|
@ -54,11 +54,11 @@ QT_BEGIN_HEADER
|
|||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
|
||||
class QWinEventNotifierPrivate;
|
||||
class Q_CORE_EXPORT QWinEventNotifier : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
Q_DECLARE_PRIVATE(QObject)
|
||||
Q_DECLARE_PRIVATE(QWinEventNotifier)
|
||||
|
||||
public:
|
||||
explicit QWinEventNotifier(QObject *parent = 0);
|
||||
|
|
@ -78,10 +78,6 @@ Q_SIGNALS:
|
|||
|
||||
protected:
|
||||
bool event(QEvent * e);
|
||||
|
||||
private:
|
||||
HANDLE handleToEvent;
|
||||
bool enabled;
|
||||
};
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
|
|
|||
Loading…
Reference in New Issue