diff options
Diffstat (limited to 'src/widgets/kernel')
-rw-r--r-- | src/widgets/kernel/qwidget_qpa.cpp | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/src/widgets/kernel/qwidget_qpa.cpp b/src/widgets/kernel/qwidget_qpa.cpp index a1a414e4f4..a94ecebc64 100644 --- a/src/widgets/kernel/qwidget_qpa.cpp +++ b/src/widgets/kernel/qwidget_qpa.cpp @@ -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(); + } } } } |