diff options
Diffstat (limited to 'src/widgets')
-rw-r--r-- | src/widgets/kernel/qwidgetwindow_qpa.cpp | 17 | ||||
-rw-r--r-- | src/widgets/kernel/qwidgetwindow_qpa_p.h | 1 |
2 files changed, 13 insertions, 5 deletions
diff --git a/src/widgets/kernel/qwidgetwindow_qpa.cpp b/src/widgets/kernel/qwidgetwindow_qpa.cpp index 2265fb55fb..32a446fa54 100644 --- a/src/widgets/kernel/qwidgetwindow_qpa.cpp +++ b/src/widgets/kernel/qwidgetwindow_qpa.cpp @@ -67,6 +67,16 @@ QAccessibleInterface *QWidgetWindow::accessibleRoot() const return 0; } +QObject *QWidgetWindow::focusObject() const +{ + QWidget *widget = m_widget->focusWidget(); + + if (!widget) + widget = m_widget; + + return widget; +} + bool QWidgetWindow::event(QEvent *event) { switch (event->type()) { @@ -287,12 +297,9 @@ void QWidgetWindow::handleKeyEvent(QKeyEvent *event) if (QApplicationPrivate::instance()->modalState() && !qt_try_modal(m_widget, event->type())) return; - QWidget *widget = m_widget->focusWidget(); - - if (!widget) - widget = m_widget; + QObject *receiver = focusObject(); - QGuiApplication::sendSpontaneousEvent(widget, event); + QGuiApplication::sendSpontaneousEvent(receiver, event); } void QWidgetWindow::updateGeometry() diff --git a/src/widgets/kernel/qwidgetwindow_qpa_p.h b/src/widgets/kernel/qwidgetwindow_qpa_p.h index 9f31d0e2ca..906b96c47b 100644 --- a/src/widgets/kernel/qwidgetwindow_qpa_p.h +++ b/src/widgets/kernel/qwidgetwindow_qpa_p.h @@ -65,6 +65,7 @@ public: QWidget *widget() const { return m_widget; } QAccessibleInterface *accessibleRoot() const; + QObject *focusObject() const; protected: bool event(QEvent *); |