summaryrefslogtreecommitdiffstats
path: root/src/widgets/kernel/qwidgetwindow_qpa.cpp
diff options
context:
space:
mode:
authorBradley T. Hughes <bradley.hughes@nokia.com>2012-05-08 07:37:04 +0200
committerQt by Nokia <qt-info@nokia.com>2012-05-09 13:41:49 +0200
commitcebfd69ade5bf6f401d3d7b256e2073b0ac18183 (patch)
treeb84943deb047c2b5e19ff47763659058068315ff /src/widgets/kernel/qwidgetwindow_qpa.cpp
parent4e4403d69c60ea6429b3ad5e7898a84b1dc92be5 (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.cpp6
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));