From b975f80dd4fb0e59c751ae9de7740d9da92c4693 Mon Sep 17 00:00:00 2001 From: J-P Nurmi Date: Fri, 20 Jun 2014 11:26:54 +0200 Subject: [PATCH] QQuickApplication: do not filter LayoutDirectionChange events The newly introduced QGuiApplication::layoutDirectionChanged() is much cheaper to use than filtering events of the application object. Change-Id: I356c94cc6bea806bf3644c31c2610501d90f6c35 Reviewed-by: Simon Hausmann Reviewed-by: Shawn Rutledge Reviewed-by: Alan Alpert --- src/quick/util/qquickapplication.cpp | 35 ++++------------------------------- src/quick/util/qquickapplication_p.h | 4 ---- 2 files changed, 4 insertions(+), 35 deletions(-) diff --git a/src/quick/util/qquickapplication.cpp b/src/quick/util/qquickapplication.cpp index 7fee2ee..159d855 100644 --- a/src/quick/util/qquickapplication.cpp +++ b/src/quick/util/qquickapplication.cpp @@ -50,30 +50,17 @@ QT_BEGIN_NAMESPACE -class QQuickApplicationPrivate : public QQmlApplicationPrivate -{ - Q_DECLARE_PUBLIC(QQuickApplication) -public: - QQuickApplicationPrivate() - : direction(QGuiApplication::layoutDirection()) - { - } - -private: - Qt::LayoutDirection direction; -}; - /* This object and its properties are documented as part of the Qt object, in qqmlengine.cpp */ QQuickApplication::QQuickApplication(QObject *parent) - : QQmlApplication(*new QQuickApplicationPrivate(), parent) + : QQmlApplication(parent) { if (qApp) { - qApp->installEventFilter(this); - + connect(qApp, SIGNAL(layoutDirectionChanged(Qt::LayoutDirection)), + this, SIGNAL(layoutDirectionChanged())); connect(qApp, SIGNAL(applicationStateChanged(Qt::ApplicationState)), this, SIGNAL(stateChanged(Qt::ApplicationState))); connect(qApp, SIGNAL(applicationStateChanged(Qt::ApplicationState)), @@ -92,8 +79,7 @@ bool QQuickApplication::active() const Qt::LayoutDirection QQuickApplication::layoutDirection() const { - Q_D(const QQuickApplication); - return d->direction; + return QGuiApplication::layoutDirection(); } bool QQuickApplication::supportsMultipleWindows() const @@ -106,17 +92,4 @@ Qt::ApplicationState QQuickApplication::state() const return QGuiApplication::applicationState(); } -bool QQuickApplication::eventFilter(QObject *, QEvent *event) -{ - Q_D(QQuickApplication); - if (event->type() == QEvent::ApplicationLayoutDirectionChange) { - Qt::LayoutDirection newDirection = QGuiApplication::layoutDirection(); - if (d->direction != newDirection) { - d->direction = newDirection; - emit layoutDirectionChanged(); - } - } - return false; -} - QT_END_NAMESPACE diff --git a/src/quick/util/qquickapplication_p.h b/src/quick/util/qquickapplication_p.h index 780fb1f..996ed67 100644 --- a/src/quick/util/qquickapplication_p.h +++ b/src/quick/util/qquickapplication_p.h @@ -50,7 +50,6 @@ QT_BEGIN_NAMESPACE -class QQuickApplicationPrivate; class Q_AUTOTEST_EXPORT QQuickApplication : public QQmlApplication { Q_OBJECT @@ -73,10 +72,7 @@ Q_SIGNALS: void stateChanged(Qt::ApplicationState state); private: - bool eventFilter(QObject *, QEvent *event); - Q_DISABLE_COPY(QQuickApplication) - Q_DECLARE_PRIVATE(QQuickApplication) }; QT_END_NAMESPACE -- 2.7.4