path: root/src/gui/kernel/qwindowsysteminterface.h
diff options
authorRichard Moe Gustavsen <>2013-01-28 15:16:02 +0100
committerThe Qt Project <>2013-02-21 14:55:10 +0100
commit22077e1609c8a5af39d48ddfb65066581ef15c0d (patch)
treebf999e3ec88cf5df2ae03ea6b6b5b4b1ebac8336 /src/gui/kernel/qwindowsysteminterface.h
parent03b25125986f083a260b421abeed1f1d088d27b3 (diff)
QPA: Add interface for setting the application state explicitly
The motivation for this patch is twofold: 1: we need a way (for iOS/Android) to tell the current window to remove focus from the focus object when the user hides the input panel. Otherwise, if the focus object is e.g a line edit, the cursor will continue to blink inside it, which is wrong. As it stands, telling the active window to deactivate (by calling QWindowSystemInterface::handleWindowActivated(0)), will cause the whole application to deactivate if no windows are active, which is not what we want. 2: Qt currently understands just two application states, Activated and Deactivated. On mobile platforms we can have other states as well, like "suspended" on iOS. So controlling the application state should not depend on window activation, but instead be controlled through a separate API by the platform plugin. This patch will add the following function: QWindowSystemInterface::handleApplicationStateChanged(Qt::ApplicationState newState) that lets us control the application state from the plugin. This also means that we factor out application state handling from window activation, which also gives us a way to remove focus from a window while keeping the application active. To not break existing desktop platforms that relies on application activation being tied to window activation, we need to make this API opt-in by using a platform integration capability hint. This is not optimal, but found necessary after investigating several other solutions. Which states (other that active/inactive) it makes sense to add to Qt::ApplicationState will be a topic for later patches. Change-Id: Ic6fdd3b66867abb67da43eba04ec86f06d82ff94 Reviewed-by: Friedemann Kleint <> Reviewed-by: Samuel Rødal <>
Diffstat (limited to 'src/gui/kernel/qwindowsysteminterface.h')
1 files changed, 2 insertions, 0 deletions
diff --git a/src/gui/kernel/qwindowsysteminterface.h b/src/gui/kernel/qwindowsysteminterface.h
index 687c72bbef..5668f3c0cf 100644
--- a/src/gui/kernel/qwindowsysteminterface.h
+++ b/src/gui/kernel/qwindowsysteminterface.h
@@ -138,6 +138,8 @@ public:
static void handleWindowActivated(QWindow *w);
static void handleWindowStateChanged(QWindow *w, Qt::WindowState newState);
+ static void handleApplicationStateChanged(Qt::ApplicationState newState);
static void handleExposeEvent(QWindow *tlw, const QRegion &region);