diff options
author | Andy Shaw <andy.shaw@qt.io> | 2017-11-23 09:02:03 +0100 |
---|---|---|
committer | Andy Shaw <andy.shaw@qt.io> | 2017-12-11 15:00:00 +0000 |
commit | dd2657e30a42c269f47195d61a9fe8a5fff02912 (patch) | |
tree | bc9ccf150986631c1014b458a99ca17e67894cf0 /src/quick | |
parent | 0c6e7aa125184f8a04c30019204d5ab1e8d3ef01 (diff) |
Handle the application state changes so items update appropriately
When the application state is no longer active, then the items should be
acting as if the window deactivated in this case. This allows MouseAreas
for instance to ungrab the mouse when the application goes into the
background on mobile devices.
Task-number: QTBUG-53036
Change-Id: I5c9a56a5fd3ad3a2ef03ff114561c671874a9391
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
Diffstat (limited to 'src/quick')
-rw-r--r-- | src/quick/items/qquickwindow.cpp | 10 | ||||
-rw-r--r-- | src/quick/items/qquickwindow.h | 2 |
2 files changed, 10 insertions, 2 deletions
diff --git a/src/quick/items/qquickwindow.cpp b/src/quick/items/qquickwindow.cpp index fbcfa84948..a483020439 100644 --- a/src/quick/items/qquickwindow.cpp +++ b/src/quick/items/qquickwindow.cpp @@ -567,13 +567,21 @@ void QQuickWindowPrivate::init(QQuickWindow *c, QQuickRenderControl *control) QObject::connect(q, SIGNAL(focusObjectChanged(QObject*)), q, SIGNAL(activeFocusItemChanged())); QObject::connect(q, SIGNAL(screenChanged(QScreen*)), q, SLOT(handleScreenChanged(QScreen*))); - + QObject::connect(qApp, SIGNAL(applicationStateChanged(Qt::ApplicationState)), + q, SLOT(handleApplicationStateChanged(Qt::ApplicationState))); QObject::connect(q, SIGNAL(frameSwapped()), q, SLOT(runJobsAfterSwap()), Qt::DirectConnection); if (QQmlInspectorService *service = QQmlDebugConnector::service<QQmlInspectorService>()) service->addWindow(q); } +void QQuickWindow::handleApplicationStateChanged(Qt::ApplicationState state) +{ + Q_D(QQuickWindow); + if (state != Qt::ApplicationActive && d->contentItem) + d->contentItem->windowDeactivateEvent(); +} + /*! \property QQuickWindow::data \internal diff --git a/src/quick/items/qquickwindow.h b/src/quick/items/qquickwindow.h index 9c3e7277bc..cd27d48bc9 100644 --- a/src/quick/items/qquickwindow.h +++ b/src/quick/items/qquickwindow.h @@ -221,7 +221,7 @@ private Q_SLOTS: void handleScreenChanged(QScreen *screen); void setTransientParent_helper(QQuickWindow *window); void runJobsAfterSwap(); - + void handleApplicationStateChanged(Qt::ApplicationState state); private: friend class QQuickItem; friend class QQuickWidget; |