From 08cc6901f84ed8fbf3d6b95ef90fff77a9fe81b5 Mon Sep 17 00:00:00 2001 From: Shane Kearns Date: Tue, 24 Apr 2012 13:33:22 +0100 Subject: 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 Reviewed-by: Joerg Bornemann Reviewed-by: Debao Zhang --- src/corelib/kernel/qwineventnotifier.cpp | 45 ++++++++++++++++++++++---------- src/corelib/kernel/qwineventnotifier.h | 8 ++---- 2 files changed, 33 insertions(+), 20 deletions(-) (limited to 'src') diff --git a/src/corelib/kernel/qwineventnotifier.cpp b/src/corelib/kernel/qwineventnotifier.cpp index 8af1ab2161..b48bd0c8cc 100644 --- a/src/corelib/kernel/qwineventnotifier.cpp +++ b/src/corelib/kernel/qwineventnotifier.cpp @@ -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(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(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; diff --git a/src/corelib/kernel/qwineventnotifier.h b/src/corelib/kernel/qwineventnotifier.h index b364c68e05..36ec415124 100644 --- a/src/corelib/kernel/qwineventnotifier.h +++ b/src/corelib/kernel/qwineventnotifier.h @@ -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 -- cgit v1.2.3