Do not call requestActivateWindow() on popups.
authorFriedemann Kleint <Friedemann.Kleint@nokia.com>
Fri, 7 Sep 2012 07:36:49 +0000 (09:36 +0200)
committerQt by Nokia <qt-info@nokia.com>
Mon, 10 Sep 2012 07:39:07 +0000 (09:39 +0200)
Showing a compo dropdown would cause the parent to
become deactivated (Windows). Introduced by:

8368557b9c0010fb205969d010c9d8549fbee0ae for
QTBUG-25852 , QTBUG-23699 .

Task-number: QTBUG-27145
Change-Id: I7b89697a2c55d58cc0ab184b61a0cff8bf2275ec
Reviewed-by: Qt Doc Bot <qt_docbot@qt-project.org>
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@digia.com>
Reviewed-by: Jonathan Liu <net147@gmail.com>
Reviewed-by: Jørgen Lind <jorgen.lind@nokia.com>
src/widgets/kernel/qwidget_qpa.cpp

index a1a414e..a94eceb 100644 (file)
@@ -684,10 +684,13 @@ void QWidgetPrivate::setFocus_sys()
 {
     Q_Q(QWidget);
     // Embedded native widget may have taken the focus; get it back to toplevel if that is the case
-    if (QWindow *nativeWindow = q->window()->windowHandle()) {
-        if (nativeWindow != QGuiApplication::focusWindow()
-            && q->testAttribute(Qt::WA_WState_Created)) {
-            nativeWindow->requestActivateWindow();
+    const QWidget *topLevel = q->window();
+    if (topLevel->windowType() != Qt::Popup) {
+        if (QWindow *nativeWindow = q->window()->windowHandle()) {
+            if (nativeWindow != QGuiApplication::focusWindow()
+                && q->testAttribute(Qt::WA_WState_Created)) {
+                nativeWindow->requestActivateWindow();
+            }
         }
     }
 }