From 01660fd569f78ce48364e1b9d9df3137f35a9a57 Mon Sep 17 00:00:00 2001 From: J-P Nurmi Date: Fri, 20 Jun 2014 11:22:26 +0200 Subject: QQuickApplication: do not filter ApplicationActive/Inactive events Listening to QGuiApplication::applicationStateChanged() is enough, no need to do expensive event filtering for listening to application state changes. Change-Id: Iba71bc8cefec236f2f7e2e25c57c5c6b9c9fb1ea Reviewed-by: Shawn Rutledge --- src/quick/util/qquickapplication.cpp | 24 +++++------------------- 1 file changed, 5 insertions(+), 19 deletions(-) (limited to 'src/quick/util/qquickapplication.cpp') diff --git a/src/quick/util/qquickapplication.cpp b/src/quick/util/qquickapplication.cpp index fb7c900252..7fee2ee1fe 100644 --- a/src/quick/util/qquickapplication.cpp +++ b/src/quick/util/qquickapplication.cpp @@ -55,13 +55,11 @@ class QQuickApplicationPrivate : public QQmlApplicationPrivate Q_DECLARE_PUBLIC(QQuickApplication) public: QQuickApplicationPrivate() - : isActive(QGuiApplication::focusWindow() != 0), - direction(QGuiApplication::layoutDirection()) + : direction(QGuiApplication::layoutDirection()) { } private: - bool isActive; Qt::LayoutDirection direction; }; @@ -78,6 +76,8 @@ QQuickApplication::QQuickApplication(QObject *parent) connect(qApp, SIGNAL(applicationStateChanged(Qt::ApplicationState)), this, SIGNAL(stateChanged(Qt::ApplicationState))); + connect(qApp, SIGNAL(applicationStateChanged(Qt::ApplicationState)), + this, SIGNAL(activeChanged())); } } @@ -87,8 +87,7 @@ QQuickApplication::~QQuickApplication() bool QQuickApplication::active() const { - Q_D(const QQuickApplication); - return d->isActive; + return QGuiApplication::applicationState() == Qt::ApplicationActive; } Qt::LayoutDirection QQuickApplication::layoutDirection() const @@ -110,20 +109,7 @@ Qt::ApplicationState QQuickApplication::state() const bool QQuickApplication::eventFilter(QObject *, QEvent *event) { Q_D(QQuickApplication); - if ((event->type() == QEvent::ApplicationActivate) || - (event->type() == QEvent::ApplicationDeactivate) || - (event->type() == QEvent::ApplicationStateChange)) { - bool wasActive = d->isActive; - if (event->type() == QEvent::ApplicationStateChange) { - QApplicationStateChangeEvent * e= static_cast(event); - d->isActive = e->applicationState() == Qt::ApplicationActive; - } else { - d->isActive = (event->type() == QEvent::ApplicationActivate); - } - if (d->isActive != wasActive) { - emit activeChanged(); - } - } else if (event->type() == QEvent::ApplicationLayoutDirectionChange) { + if (event->type() == QEvent::ApplicationLayoutDirectionChange) { Qt::LayoutDirection newDirection = QGuiApplication::layoutDirection(); if (d->direction != newDirection) { d->direction = newDirection; -- cgit v1.2.3