diff options
author | Friedemann Kleint <Friedemann.Kleint@digia.com> | 2013-01-15 16:53:47 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-01-18 15:42:59 +0100 |
commit | aacf4d0263f94724379dc48cfbbf8d98265d70a0 (patch) | |
tree | 2df31f85d0b693f014cb28537de3a7fe5b90697c | |
parent | d6506c129d698c677f2d7418759b147007ca15a2 (diff) |
Fix a crash when minimizing a QQuickWindow.
Send empty expose event and flush queue when minimizing.
Task-number: QTBUG-28439
Task-number: QTBUG-26424
Change-Id: I2e921a86660f946ced7af735cdf197fb666e2934
Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
-rw-r--r-- | src/plugins/platforms/windows/qwindowswindow.cpp | 4 | ||||
-rw-r--r-- | tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp | 4 | ||||
-rw-r--r-- | tests/auto/widgets/widgets/qmdiarea/tst_qmdiarea.cpp | 1 |
3 files changed, 4 insertions, 5 deletions
diff --git a/src/plugins/platforms/windows/qwindowswindow.cpp b/src/plugins/platforms/windows/qwindowswindow.cpp index 14040db5df..42a301cbb2 100644 --- a/src/plugins/platforms/windows/qwindowswindow.cpp +++ b/src/plugins/platforms/windows/qwindowswindow.cpp @@ -1260,6 +1260,10 @@ void QWindowsWindow::handleWindowStateChange(Qt::WindowState state) setFlag(FrameDirty); m_windowState = state; QWindowSystemInterface::handleWindowStateChanged(window(), state); + if (state == Qt::WindowMinimized) { + handleHidden(); + QWindowSystemInterface::flushWindowSystemEvents(); // Tell QQuickWindow to stop rendering now. + } } void QWindowsWindow::setWindowState(Qt::WindowState state) diff --git a/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp b/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp index 18497e9d4a..ab1500ee32 100644 --- a/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp +++ b/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp @@ -2043,8 +2043,6 @@ void tst_QWidget::showFullScreen() QVERIFY(layouted.isFullScreen()); layouted.showFullScreen(); - if (m_platform == QStringLiteral("windows")) - QEXPECT_FAIL("", "QTBUG-26424", Continue); QVERIFY(!layouted.isMinimized()); QVERIFY(layouted.isFullScreen()); QVERIFY(layouted.isVisible()); @@ -7115,8 +7113,6 @@ void tst_QWidget::updateWhileMinimized() // Make sure update requests are discarded until the widget is shown again. widget.update(0, 0, 50, 50); QTest::qWait(10); - if (m_platform == QStringLiteral("windows")) - QEXPECT_FAIL("", "QTBUG-26424", Continue); QCOMPARE(widget.numPaintEvents, 0); // Restore window. diff --git a/tests/auto/widgets/widgets/qmdiarea/tst_qmdiarea.cpp b/tests/auto/widgets/widgets/qmdiarea/tst_qmdiarea.cpp index c382d37efa..6364727e0e 100644 --- a/tests/auto/widgets/widgets/qmdiarea/tst_qmdiarea.cpp +++ b/tests/auto/widgets/widgets/qmdiarea/tst_qmdiarea.cpp @@ -508,7 +508,6 @@ void tst_QMdiArea::subWindowActivated2() if (!macHasAccessToWindowsServer()) QEXPECT_FAIL("", "showMinimized doesn't really minimize if you don't have access to the server", Abort); #endif - QVERIFY(QTest::qWaitForWindowExposed(&mdiArea)); #ifdef Q_OS_WINCE QSKIP("Not fixed yet. See Task 197453"); #endif |