diff options
Diffstat (limited to 'src/widgets/kernel/qwidgetwindow_qpa.cpp')
-rw-r--r-- | src/widgets/kernel/qwidgetwindow_qpa.cpp | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/widgets/kernel/qwidgetwindow_qpa.cpp b/src/widgets/kernel/qwidgetwindow_qpa.cpp index 24e76f05d6..ab8bacc1c7 100644 --- a/src/widgets/kernel/qwidgetwindow_qpa.cpp +++ b/src/widgets/kernel/qwidgetwindow_qpa.cpp @@ -114,6 +114,10 @@ bool QWidgetWindow::event(QEvent *event) handleExposeEvent(static_cast<QExposeEvent *>(event)); return true; + case QEvent::WindowStateChange: + handleWindowStateChangedEvent(static_cast<QWindowStateChangeEvent *>(event)); + return true; + default: break; } @@ -385,4 +389,14 @@ void QWidgetWindow::handleExposeEvent(QExposeEvent *event) m_widget->d_func()->syncBackingStore(event->region()); } +void QWidgetWindow::handleWindowStateChangedEvent(QWindowStateChangeEvent *event) +{ + // QWindow does currently not know 'active'. + Qt::WindowStates eventState = event->oldState(); + if (m_widget->windowState() & Qt::WindowActive) + eventState |= Qt::WindowActive; + QWindowStateChangeEvent widgetEvent(eventState); + QGuiApplication::sendSpontaneousEvent(m_widget, &widgetEvent); +} + QT_END_NAMESPACE |