From aacf4d0263f94724379dc48cfbbf8d98265d70a0 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Tue, 15 Jan 2013 16:53:47 +0100 Subject: [PATCH] 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 --- src/plugins/platforms/windows/qwindowswindow.cpp | 4 ++++ tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp | 4 ---- 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 14040db5df3..42a301cbb26 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 18497e9d4a4..ab1500ee32f 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 c382d37efab..6364727e0eb 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