summaryrefslogtreecommitdiffstats
path: root/src/gui
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui')
-rw-r--r--src/gui/kernel/qevent.cpp17
-rw-r--r--src/gui/kernel/qevent.h10
-rw-r--r--src/gui/kernel/qguiapplication.cpp7
3 files changed, 34 insertions, 0 deletions
diff --git a/src/gui/kernel/qevent.cpp b/src/gui/kernel/qevent.cpp
index f7b7410278..4f1f7d838f 100644
--- a/src/gui/kernel/qevent.cpp
+++ b/src/gui/kernel/qevent.cpp
@@ -4400,4 +4400,21 @@ Qt::ScreenOrientation QScreenOrientationChangeEvent::orientation() const
return m_orientation;
}
+/*!
+ Creates a new QApplicationStateChangeEvent.
+ \a applicationState is the new state.
+*/
+QApplicationStateChangeEvent::QApplicationStateChangeEvent(Qt::ApplicationState applicationState)
+ : QEvent(QEvent::ApplicationStateChange), m_applicationState(applicationState)
+{
+}
+
+/*!
+ Returns the state of the application.
+*/
+Qt::ApplicationState QApplicationStateChangeEvent::applicationState() const
+{
+ return m_applicationState;
+}
+
QT_END_NAMESPACE
diff --git a/src/gui/kernel/qevent.h b/src/gui/kernel/qevent.h
index 0b4e708bdb..79dcc6d250 100644
--- a/src/gui/kernel/qevent.h
+++ b/src/gui/kernel/qevent.h
@@ -905,6 +905,16 @@ private:
Qt::ScreenOrientation m_orientation;
};
+class Q_GUI_EXPORT QApplicationStateChangeEvent : public QEvent
+{
+public:
+ explicit QApplicationStateChangeEvent(Qt::ApplicationState state);
+ Qt::ApplicationState applicationState() const;
+
+private:
+ Qt::ApplicationState m_applicationState;
+};
+
QT_END_NAMESPACE
#endif // QEVENT_H
diff --git a/src/gui/kernel/qguiapplication.cpp b/src/gui/kernel/qguiapplication.cpp
index a1c9af45b8..c2e19ca2a8 100644
--- a/src/gui/kernel/qguiapplication.cpp
+++ b/src/gui/kernel/qguiapplication.cpp
@@ -1604,6 +1604,8 @@ void QGuiApplicationPrivate::processActivatedEvent(QWindowSystemInterfacePrivate
} else if (!platformIntegration()->hasCapability(QPlatformIntegration::ApplicationState)) {
QEvent appActivate(QEvent::ApplicationActivate);
qApp->sendSpontaneousEvent(qApp, &appActivate);
+ QApplicationStateChangeEvent appState(Qt::ApplicationActive);
+ qApp->sendSpontaneousEvent(qApp, &appState);
}
if (QGuiApplicationPrivate::focus_window) {
@@ -1614,6 +1616,8 @@ void QGuiApplicationPrivate::processActivatedEvent(QWindowSystemInterfacePrivate
} else if (!platformIntegration()->hasCapability(QPlatformIntegration::ApplicationState)) {
QEvent appActivate(QEvent::ApplicationDeactivate);
qApp->sendSpontaneousEvent(qApp, &appActivate);
+ QApplicationStateChangeEvent appState(Qt::ApplicationInactive);
+ qApp->sendSpontaneousEvent(qApp, &appState);
}
if (self) {
@@ -1653,6 +1657,9 @@ void QGuiApplicationPrivate::processApplicationStateChangedEvent(QWindowSystemIn
default:
break;
}
+
+ QApplicationStateChangeEvent event(applicationState);
+ qApp->sendSpontaneousEvent(qApp, &event);
}
void QGuiApplicationPrivate::processThemeChanged(QWindowSystemInterfacePrivate::ThemeChangeEvent *tce)