summaryrefslogtreecommitdiffstats
path: root/src/gui/kernel/qguiapplication.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui/kernel/qguiapplication.cpp')
-rw-r--r--src/gui/kernel/qguiapplication.cpp87
1 files changed, 55 insertions, 32 deletions
diff --git a/src/gui/kernel/qguiapplication.cpp b/src/gui/kernel/qguiapplication.cpp
index eed1c41bfa..4c2adef6de 100644
--- a/src/gui/kernel/qguiapplication.cpp
+++ b/src/gui/kernel/qguiapplication.cpp
@@ -1418,7 +1418,7 @@ void QGuiApplicationPrivate::processWindowSystemEvent(QWindowSystemInterfacePriv
QGuiApplicationPrivate::processWindowScreenChangedEvent(static_cast<QWindowSystemInterfacePrivate::WindowScreenChangedEvent *>(e));
break;
case QWindowSystemInterfacePrivate::ApplicationStateChanged:
- QGuiApplicationPrivate::processApplicationStateChangedEvent(static_cast<QWindowSystemInterfacePrivate::ApplicationStateChangedEvent *>(e));
+ QGuiApplicationPrivate::setApplicationState(static_cast<QWindowSystemInterfacePrivate::ApplicationStateChangedEvent *>(e)->newState);
break;
case QWindowSystemInterfacePrivate::FlushEvents:
QWindowSystemInterface::deferredFlushWindowSystemEvents();
@@ -1748,10 +1748,7 @@ void QGuiApplicationPrivate::processActivatedEvent(QWindowSystemInterfacePrivate
QObject::disconnect(previous, SIGNAL(focusObjectChanged(QObject*)),
qApp, SLOT(_q_updateFocusObject(QObject*)));
} else if (!platformIntegration()->hasCapability(QPlatformIntegration::ApplicationState)) {
- QEvent appActivate(QEvent::ApplicationActivate);
- qApp->sendSpontaneousEvent(qApp, &appActivate);
- QApplicationStateChangeEvent appState(Qt::ApplicationActive);
- qApp->sendSpontaneousEvent(qApp, &appState);
+ setApplicationState(Qt::ApplicationActive);
}
if (QGuiApplicationPrivate::focus_window) {
@@ -1760,10 +1757,7 @@ void QGuiApplicationPrivate::processActivatedEvent(QWindowSystemInterfacePrivate
QObject::connect(QGuiApplicationPrivate::focus_window, SIGNAL(focusObjectChanged(QObject*)),
qApp, SLOT(_q_updateFocusObject(QObject*)));
} else if (!platformIntegration()->hasCapability(QPlatformIntegration::ApplicationState)) {
- QEvent appActivate(QEvent::ApplicationDeactivate);
- qApp->sendSpontaneousEvent(qApp, &appActivate);
- QApplicationStateChangeEvent appState(Qt::ApplicationInactive);
- qApp->sendSpontaneousEvent(qApp, &appState);
+ setApplicationState(Qt::ApplicationInactive);
}
if (self) {
@@ -1799,29 +1793,6 @@ void QGuiApplicationPrivate::processWindowScreenChangedEvent(QWindowSystemInterf
}
}
-void QGuiApplicationPrivate::processApplicationStateChangedEvent(QWindowSystemInterfacePrivate::ApplicationStateChangedEvent *e)
-{
- if (e->newState == applicationState)
- return;
- applicationState = e->newState;
-
- switch (e->newState) {
- case Qt::ApplicationActive: {
- QEvent appActivate(QEvent::ApplicationActivate);
- qApp->sendSpontaneousEvent(qApp, &appActivate);
- break; }
- case Qt::ApplicationInactive: {
- QEvent appDeactivate(QEvent::ApplicationDeactivate);
- qApp->sendSpontaneousEvent(qApp, &appDeactivate);
- break; }
- default:
- break;
- }
-
- QApplicationStateChangeEvent event(applicationState);
- qApp->sendSpontaneousEvent(qApp, &event);
-}
-
void QGuiApplicationPrivate::processThemeChanged(QWindowSystemInterfacePrivate::ThemeChangeEvent *tce)
{
if (self)
@@ -2632,6 +2603,58 @@ bool QGuiApplicationPrivate::shouldQuitInternal(const QWindowList &processedWind
}
/*!
+ \since 5.2
+ \fn Qt::ApplicationState QGuiApplication::applicationState()
+
+
+ Returns the current state of the application.
+
+ You can react to application state changes to perform actions such as
+ stopping/resuming CPU-intensive tasks, freeing/loading resources or
+ saving/restoring application data.
+ */
+
+Qt::ApplicationState QGuiApplication::applicationState()
+{
+ return QGuiApplicationPrivate::applicationState;
+}
+
+/*!
+ \since 5.2
+ \fn void QGuiApplication::applicationStateChanged(Qt::ApplicationState state)
+
+ This signal is emitted when the \a state of the application changes.
+
+ \sa applicationState()
+*/
+
+void QGuiApplicationPrivate::setApplicationState(Qt::ApplicationState state)
+{
+ if (applicationState == state)
+ return;
+
+ applicationState = state;
+
+ switch (state) {
+ case Qt::ApplicationActive: {
+ QEvent appActivate(QEvent::ApplicationActivate);
+ QCoreApplication::sendSpontaneousEvent(qApp, &appActivate);
+ break; }
+ case Qt::ApplicationInactive: {
+ QEvent appDeactivate(QEvent::ApplicationDeactivate);
+ QCoreApplication::sendSpontaneousEvent(qApp, &appDeactivate);
+ break; }
+ default:
+ break;
+ }
+
+ QApplicationStateChangeEvent event(applicationState);
+ QCoreApplication::sendSpontaneousEvent(qApp, &event);
+
+ emit qApp->applicationStateChanged(applicationState);
+}
+
+/*!
\since 4.2
\fn void QGuiApplication::commitDataRequest(QSessionManager &manager)