diff options
author | Qt Continuous Integration System <qt-info@nokia.com> | 2010-05-25 19:53:30 (GMT) |
---|---|---|
committer | Qt Continuous Integration System <qt-info@nokia.com> | 2010-05-25 19:53:30 (GMT) |
commit | ef5891755bf760b68df1fc387e08a1b16980d6ad (patch) | |
tree | ffacc13c82dcadd1dda588e703ba43e440d9454c /tests | |
parent | 5a7223450d0ebd4eaa47f263005c6d1c2e142a76 (diff) | |
parent | a32c96e753c2f5a123e518a92762ec9c9ff3b0b7 (diff) | |
download | Qt-ef5891755bf760b68df1fc387e08a1b16980d6ad.zip Qt-ef5891755bf760b68df1fc387e08a1b16980d6ad.tar.gz Qt-ef5891755bf760b68df1fc387e08a1b16980d6ad.tar.bz2 |
Merge branch '4.7' of scm.dev.nokia.troll.no:qt/oslo-staging-1 into 4.7-integration
* '4.7' of scm.dev.nokia.troll.no:qt/oslo-staging-1: (50 commits)
Dont crash when assigning the same input context twice.
Fixed a typo in variable name in qlocale data generator.
Fix for Norwegian and Korean languages on symbian.
Remove unused function in QDBusConnectionPrivate
Doc: Fixing bugs in HTML generator
Updating 4.7.0 change log.
Doc: Correcting style to class lists
qdoc: Improved class index page.
Added MSVC 2010 project files to .gitignore
Fix architecture detection on GNU/Hurd.
Revert "tst_bic: make it possible to test for cross-compilation"
fix typo in documentation
Improve Bearer Management related documentation in QNetworkAccessManager
Compile with QT_NO_ACTION.
Unbreak compilation outside Mac
QDBusAbstractInterface: don't set lastError outside the object's own thread
tst_bic: make it possible to test for cross-compilation
Remove Q_PACKED from QChar and QLocale::Data.
QDebug operator for QFlags
Removing unneeded qDebug statement.
...
Diffstat (limited to 'tests')
-rw-r--r-- | tests/auto/qapplication/tst_qapplication.cpp | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/tests/auto/qapplication/tst_qapplication.cpp b/tests/auto/qapplication/tst_qapplication.cpp index 459ac2b..43fbba1 100644 --- a/tests/auto/qapplication/tst_qapplication.cpp +++ b/tests/auto/qapplication/tst_qapplication.cpp @@ -106,6 +106,7 @@ private slots: void lastWindowClosed(); void quitOnLastWindowClosed(); + void closeAllWindows(); void testDeleteLater(); void testDeleteLaterProcessEvents(); @@ -745,6 +746,83 @@ void tst_QApplication::quitOnLastWindowClosed() } } +class PromptOnCloseWidget : public QWidget +{ +public: + void closeEvent(QCloseEvent *event) + { + QMessageBox *messageBox = new QMessageBox(this); + messageBox->setWindowTitle("Unsaved data"); + messageBox->setText("Would you like to save or discard your current data?"); + messageBox->setStandardButtons(QMessageBox::Save|QMessageBox::Discard|QMessageBox::Cancel); + messageBox->setDefaultButton(QMessageBox::Save); + + messageBox->show(); + QTest::qWaitForWindowShown(messageBox); + + // verify that all windows are visible + foreach (QWidget *w, qApp->topLevelWidgets()) + QVERIFY(w->isVisible()); + // flush event queue + qApp->processEvents(); + // close all windows + qApp->closeAllWindows(); + + if (messageBox->standardButton(messageBox->clickedButton()) == QMessageBox::Cancel) + event->ignore(); + else + event->accept(); + + delete messageBox; + } +}; + +void tst_QApplication::closeAllWindows() +{ + int argc = 0; + QApplication app(argc, 0, QApplication::GuiServer); + + // create some windows + new QWidget; + new QWidget; + new QWidget; + + // show all windows + foreach (QWidget *w, app.topLevelWidgets()) { + w->show(); + QTest::qWaitForWindowShown(w); + } + // verify that they are visible + foreach (QWidget *w, app.topLevelWidgets()) + QVERIFY(w->isVisible()); + // empty event queue + app.processEvents(); + // close all windows + app.closeAllWindows(); + // all windows should no longer be visible + foreach (QWidget *w, app.topLevelWidgets()) + QVERIFY(!w->isVisible()); + + // add a window that prompts the user when closed + PromptOnCloseWidget *promptOnCloseWidget = new PromptOnCloseWidget; + // show all windows + foreach (QWidget *w, app.topLevelWidgets()) { + w->show(); + QTest::qWaitForWindowShown(w); + } + // close the last window to open the prompt (eventloop recurses) + promptOnCloseWidget->close(); + // all windows should not be visible, except the one that opened the prompt + foreach (QWidget *w, app.topLevelWidgets()) { + if (w == promptOnCloseWidget) + QVERIFY(w->isVisible()); + else + QVERIFY(!w->isVisible()); + } + + qDeleteAll(app.topLevelWidgets()); +} + bool isPathListIncluded(const QStringList &l, const QStringList &r) { int size = r.count(); |