summaryrefslogtreecommitdiffstats
path: root/tests/auto/widgets/kernel
diff options
context:
space:
mode:
authorStephen Kelly <stephen.kelly@kdab.com>2012-05-14 16:58:26 +0200
committerQt by Nokia <qt-info@nokia.com>2012-06-12 04:30:18 +0200
commitc5665a182db5002afe6dc7c69f343e89de5fca31 (patch)
treeaf488d02a88f3de714629303029c77240d697574 /tests/auto/widgets/kernel
parentc66dc44968f4ae51e01cee7c7605991177d5e081 (diff)
Only quit if there are no visible widgets or windows.
We need to let the QGuiApplication determine whether quitting is appropriate based on whether there are visible top level QWindows after the last top-level QWidget was closed. This solves the issue raised here: http://thread.gmane.org/gmane.comp.lib.qt.user/1880 The transientParent is the QWindow equivalent of parentWidget on QWidget, so the test in QGuiApplication::shouldQuit is similar to the one in QApplication::shouldQuit. Change-Id: I500eff8d5887f24415180134b3a4be3c630a896f Reviewed-by: Bradley T. Hughes <bradley.hughes@nokia.com>
Diffstat (limited to 'tests/auto/widgets/kernel')
-rw-r--r--tests/auto/widgets/kernel/qapplication/tst_qapplication.cpp24
1 files changed, 24 insertions, 0 deletions
diff --git a/tests/auto/widgets/kernel/qapplication/tst_qapplication.cpp b/tests/auto/widgets/kernel/qapplication/tst_qapplication.cpp
index 000eea8555..120ed9127c 100644
--- a/tests/auto/widgets/kernel/qapplication/tst_qapplication.cpp
+++ b/tests/auto/widgets/kernel/qapplication/tst_qapplication.cpp
@@ -718,6 +718,30 @@ void tst_QApplication::quitOnLastWindowClosed()
QCOMPARE(timerSpy.count(), 1);
QCOMPARE(appSpy.count(), 2);
}
+ {
+ int argc = 0;
+ QApplication app(argc, 0, QApplication::GuiServer);
+ QVERIFY(app.quitOnLastWindowClosed());
+
+ QTimer timer;
+ timer.setInterval(100);
+ QSignalSpy timerSpy(&timer, SIGNAL(timeout()));
+
+ QWindow w;
+ w.show();
+
+ QWidget wid;
+ wid.show();
+
+ timer.start();
+ QTimer::singleShot(1000, &wid, SLOT(close())); // This should NOT quit the application because the
+ // QWindow is still there.
+ QTimer::singleShot(2000, &app, SLOT(quit())); // This causes the quit.
+
+ app.exec();
+
+ QVERIFY(timerSpy.count() > 15); // Should be around 20 if closing did not caused the quit
+ }
}
class PromptOnCloseWidget : public QWidget