Add a method for querying window activation status from QPA.
authorMorten Johan Sorvig <morten.sorvig@nokia.com>
Thu, 3 May 2012 20:15:38 +0000 (22:15 +0200)
committerQt by Nokia <qt-info@nokia.com>
Tue, 26 Jun 2012 22:46:35 +0000 (00:46 +0200)
Add QPlatformWindow::isActive(), where the platform
can do further isActive tests, and Windows implementation for it.

Change-Id: I1acfc44d3a4ab36a3aaee52fb7b5f5b40661095e
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@digia.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
Reviewed-by: Girish Ramakrishnan <girish.1.ramakrishnan@nokia.com>
src/gui/kernel/qplatformwindow.h
src/gui/kernel/qplatformwindow_qpa.cpp
src/plugins/platforms/windows/qwindowswindow.cpp
src/plugins/platforms/windows/qwindowswindow.h

index d9f79f2..cded1fe 100644 (file)
@@ -102,6 +102,7 @@ public:
     virtual void lower();
 
     virtual bool isExposed() const;
+    virtual bool isActive() const;
 
     virtual void propagateSizeHints();
 
index 88f2a64..d2ec683 100644 (file)
@@ -169,6 +169,17 @@ bool QPlatformWindow::isExposed() const
 }
 
 /*!
+    Returns true if the window should appear active from a style perspective.
+
+    This function can make platform-specific isActive checks, such as checking
+    if the QWindow is embedded in an active native window.
+*/
+bool QPlatformWindow::isActive() const
+{
+    return false;
+}
+
+/*!
     Requests setting the window state of this surface
     to \a type. Returns the actual state set.
 
index aabea04..a7140a3 100644 (file)
@@ -807,6 +807,15 @@ bool QWindowsWindow::isVisible() const
     return m_data.hwnd && IsWindowVisible(m_data.hwnd);
 }
 
+bool QWindowsWindow::isActive() const
+{
+    // Check for native windows or children of the active native window.
+    if (const HWND activeHwnd = GetActiveWindow())
+        if (m_data.hwnd == activeHwnd || IsChild(activeHwnd, m_data.hwnd))
+            return true;
+    return false;
+}
+
 // partially from QWidgetPrivate::show_sys()
 void QWindowsWindow::show_sys() const
 {
index 743e10d..182bef7 100644 (file)
@@ -150,6 +150,7 @@ public:
 
     virtual void setVisible(bool visible);
     bool isVisible() const;
+    virtual bool isActive() const;
     virtual Qt::WindowFlags setWindowFlags(Qt::WindowFlags flags);
     virtual Qt::WindowState setWindowState(Qt::WindowState state);