diff options
author | Bradley T. Hughes <bradley.hughes@nokia.com> | 2012-05-08 07:37:04 +0200 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-05-09 13:41:49 +0200 |
commit | cebfd69ade5bf6f401d3d7b256e2073b0ac18183 (patch) | |
tree | b84943deb047c2b5e19ff47763659058068315ff /src/widgets/kernel/qwidgetwindow_qpa.cpp | |
parent | 4e4403d69c60ea6429b3ad5e7898a84b1dc92be5 (diff) |
Don't handle window events after Qt::WA_DontShowOnScreen is set
QWidget can set WA_DontShowOnScreen while visible, which generates
events when the QWidgetWindow is hidden. This causes
QWidgetWindow::handleExposeEvent() to clear the WA_Mapped flag which was
set by QWidgetPrivate::show_sys(). Once WA_Mapped is cleared, the
QWidget becomes non-functional, causing failures in at least
tst_QGraphicsProxyWidget::paintEvent(), since paint events are not sent
to widgets that don't have WA_Mapped set.
Change-Id: I2d3e5b3baffb07ab73f41520771866f181260bd2
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
Diffstat (limited to 'src/widgets/kernel/qwidgetwindow_qpa.cpp')
-rw-r--r-- | src/widgets/kernel/qwidgetwindow_qpa.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/widgets/kernel/qwidgetwindow_qpa.cpp b/src/widgets/kernel/qwidgetwindow_qpa.cpp index 34b56b7954..5639bac3ff 100644 --- a/src/widgets/kernel/qwidgetwindow_qpa.cpp +++ b/src/widgets/kernel/qwidgetwindow_qpa.cpp @@ -83,6 +83,12 @@ QObject *QWidgetWindow::focusObject() const bool QWidgetWindow::event(QEvent *event) { + if (m_widget->testAttribute(Qt::WA_DontShowOnScreen)) { + // \a event is uninteresting for QWidgetWindow, the event was probably + // generated before WA_DontShowOnScreen was set + return m_widget->event(event); + } + switch (event->type()) { case QEvent::Close: handleCloseEvent(static_cast<QCloseEvent *>(event)); |