summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@digia.com>2013-01-15 16:53:47 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-01-18 15:42:59 +0100
commitaacf4d0263f94724379dc48cfbbf8d98265d70a0 (patch)
tree2df31f85d0b693f014cb28537de3a7fe5b90697c
parentd6506c129d698c677f2d7418759b147007ca15a2 (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.cpp4
-rw-r--r--tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp4
-rw-r--r--tests/auto/widgets/widgets/qmdiarea/tst_qmdiarea.cpp1
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