diff options
Diffstat (limited to 'src/widgets/kernel/qwidget_qpa.cpp')
-rw-r--r-- | src/widgets/kernel/qwidget_qpa.cpp | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/widgets/kernel/qwidget_qpa.cpp b/src/widgets/kernel/qwidget_qpa.cpp index ef3d7a16d9..a4cbcefb83 100644 --- a/src/widgets/kernel/qwidget_qpa.cpp +++ b/src/widgets/kernel/qwidget_qpa.cpp @@ -667,7 +667,14 @@ void QWidget::setWindowState(Qt::WindowStates newstate) 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(); + } + } } void QWidgetPrivate::raise_sys() |