diff options
Diffstat (limited to 'tests/auto')
15 files changed, 249 insertions, 157 deletions
diff --git a/tests/auto/concurrent/qtconcurrentrun/tst_qtconcurrentrun.cpp b/tests/auto/concurrent/qtconcurrentrun/tst_qtconcurrentrun.cpp index 1b0ac7a8bc..bd53aa69fe 100644 --- a/tests/auto/concurrent/qtconcurrentrun/tst_qtconcurrentrun.cpp +++ b/tests/auto/concurrent/qtconcurrentrun/tst_qtconcurrentrun.cpp @@ -464,6 +464,19 @@ int throwFunctionReturn() return 0; } +class SlowTask : public QRunnable +{ +public: + static QAtomicInt cancel; + void run() Q_DECL_OVERRIDE { + int iter = 60; + while (--iter && !cancel.load()) + QThread::currentThread()->msleep(25); + } +}; + +QAtomicInt SlowTask::cancel; + void tst_QtConcurrentRun::exceptions() { QThreadPool pool; @@ -504,6 +517,30 @@ void tst_QtConcurrentRun::exceptions() } if (!caught) QFAIL("did not get exception"); + + caught = false; + try { + QtConcurrent::run(&pool, throwFunctionReturn).result(); + } catch (QException &) { + caught = true; + } + QVERIFY2(caught, "did not get exception"); + + // Force the task to be run on this thread. + caught = false; + QThreadPool shortPool; + shortPool.setMaxThreadCount(1); + SlowTask *st = new SlowTask(); + try { + shortPool.start(st); + QtConcurrent::run(&shortPool, throwFunctionReturn).result(); + } catch (QException &) { + caught = true; + } + + SlowTask::cancel.store(true); + + QVERIFY2(caught, "did not get exception"); } #endif diff --git a/tests/auto/corelib/json/tst_qtjson.cpp b/tests/auto/corelib/json/tst_qtjson.cpp index 015228d7b9..1194260efa 100644 --- a/tests/auto/corelib/json/tst_qtjson.cpp +++ b/tests/auto/corelib/json/tst_qtjson.cpp @@ -2751,8 +2751,9 @@ void tst_QtJson::unicodeKeys() QCOMPARE(error.error, QJsonParseError::NoError); QJsonObject o = doc.object(); - QCOMPARE(o.keys().size(), 5); - Q_FOREACH (const QString &key, o.keys()) { + const auto keys = o.keys(); + QCOMPARE(keys.size(), 5); + for (const QString &key : keys) { QString suffix = key.mid(key.indexOf(QLatin1Char('_'))); QCOMPARE(o[key].toString(), QString("hello") + suffix); } diff --git a/tests/auto/corelib/mimetypes/qmimedatabase/tst_qmimedatabase.cpp b/tests/auto/corelib/mimetypes/qmimedatabase/tst_qmimedatabase.cpp index a7ab221dda..9e369792f1 100644 --- a/tests/auto/corelib/mimetypes/qmimedatabase/tst_qmimedatabase.cpp +++ b/tests/auto/corelib/mimetypes/qmimedatabase/tst_qmimedatabase.cpp @@ -127,6 +127,7 @@ tst_QMimeDatabase::tst_QMimeDatabase() void tst_QMimeDatabase::initTestCase() { + QLocale::setDefault(QLocale::c()); QVERIFY2(m_temporaryDir.isValid(), qPrintable(m_temporaryDir.errorString())); QStandardPaths::setTestModeEnabled(true); m_localMimeDir = QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation) + "/mime"; @@ -445,6 +446,21 @@ void tst_QMimeDatabase::icons() QCOMPARE(pub.genericIconName(), QString::fromLatin1("x-office-document")); } +void tst_QMimeDatabase::comment() +{ + struct RestoreLocale + { + ~RestoreLocale() { QLocale::setDefault(QLocale::c()); } + } restoreLocale; + + QLocale::setDefault(QLocale("de")); + QMimeDatabase db; + QMimeType directory = db.mimeTypeForName(QStringLiteral("inode/directory")); + QCOMPARE(directory.comment(), QStringLiteral("Ordner")); + QLocale::setDefault(QLocale("fr")); + QCOMPARE(directory.comment(), QStringLiteral("dossier")); +} + // In here we do the tests that need some content in a temporary file. // This could also be added to shared-mime-info's testsuite... void tst_QMimeDatabase::mimeTypeForFileWithContent() diff --git a/tests/auto/corelib/mimetypes/qmimedatabase/tst_qmimedatabase.h b/tests/auto/corelib/mimetypes/qmimedatabase/tst_qmimedatabase.h index 06e875c9e2..4918dc6f4a 100644 --- a/tests/auto/corelib/mimetypes/qmimedatabase/tst_qmimedatabase.h +++ b/tests/auto/corelib/mimetypes/qmimedatabase/tst_qmimedatabase.h @@ -55,6 +55,7 @@ private slots: void listAliases_data(); void listAliases(); void icons(); + void comment(); void mimeTypeForFileWithContent(); void mimeTypeForUrl(); void mimeTypeForData_data(); diff --git a/tests/auto/corelib/plugin/qplugin/tst_qplugin.cpp b/tests/auto/corelib/plugin/qplugin/tst_qplugin.cpp index 874429aab7..ee7cf7ded8 100644 --- a/tests/auto/corelib/plugin/qplugin/tst_qplugin.cpp +++ b/tests/auto/corelib/plugin/qplugin/tst_qplugin.cpp @@ -61,7 +61,8 @@ void tst_QPlugin::initTestCase() void tst_QPlugin::loadDebugPlugin() { - foreach (QString fileName, dir.entryList(QStringList() << "*debug*", QDir::Files)) { + const auto fileNames = dir.entryList(QStringList() << "*debug*", QDir::Files); + for (const QString &fileName : fileNames) { if (!QLibrary::isLibrary(fileName)) continue; QPluginLoader loader(dir.filePath(fileName)); @@ -87,8 +88,8 @@ void tst_QPlugin::loadDebugPlugin() void tst_QPlugin::loadReleasePlugin() { - foreach (QString fileName, dir.entryList(QStringList() << "*release*", QDir::Files)) { - if (!QLibrary::isLibrary(fileName)) + const auto fileNames = dir.entryList(QStringList() << "*release*", QDir::Files); + for (const QString &fileName : fileNames) { continue; QPluginLoader loader(dir.filePath(fileName)); #if defined(Q_OS_UNIX) && !defined(Q_OS_MAC) diff --git a/tests/auto/corelib/xml/qxmlstream/tst_qxmlstream.cpp b/tests/auto/corelib/xml/qxmlstream/tst_qxmlstream.cpp index 9556a167c5..79cd17b5b3 100644 --- a/tests/auto/corelib/xml/qxmlstream/tst_qxmlstream.cpp +++ b/tests/auto/corelib/xml/qxmlstream/tst_qxmlstream.cpp @@ -65,6 +65,16 @@ static inline int best(int a, int b, int c) return qMin(qMin(a, b), c); } +template <typename C> +const C sorted_by_name(C c) { // return by const value so we can feed directly into range-for loops below + using T = typename C::value_type; + auto byName = [](const T &lhs, const T &rhs) { + return lhs.name() < rhs.name(); + }; + std::sort(c.begin(), c.end(), byName); + return c; +} + /** * Opens \a filename and returns content produced as per * xmlconf/xmltest/canonxml.html. @@ -97,7 +107,8 @@ static QByteArray makeCanonical(const QString &filename, while (!reader.atEnd()) { reader.readNext(); if (reader.isDTD()) { - if (!reader.notationDeclarations().isEmpty()) { + const auto notationDeclarations = reader.notationDeclarations(); + if (!notationDeclarations.isEmpty()) { QString dtd; QTextStream writeDtd(&dtd); @@ -105,10 +116,7 @@ static QByteArray makeCanonical(const QString &filename, writeDtd << docType; writeDtd << " ["; writeDtd << endl; - QMap<QString, QXmlStreamNotationDeclaration> sortedNotationDeclarations; - foreach (QXmlStreamNotationDeclaration notation, reader.notationDeclarations()) - sortedNotationDeclarations.insert(notation.name().toString(), notation); - foreach (QXmlStreamNotationDeclaration notation, sortedNotationDeclarations.values()) { + for (const QXmlStreamNotationDeclaration ¬ation : sorted_by_name(notationDeclarations)) { writeDtd << "<!NOTATION "; writeDtd << notation.name().toString(); if (notation.publicId().isEmpty()) { @@ -135,11 +143,7 @@ static QByteArray makeCanonical(const QString &filename, } } else if (reader.isStartElement()) { writer.writeStartElement(reader.namespaceUri().toString(), reader.name().toString()); - - QMap<QString, QXmlStreamAttribute> sortedAttributes; - foreach(QXmlStreamAttribute attribute, reader.attributes()) - sortedAttributes.insert(attribute.name().toString(), attribute); - foreach(QXmlStreamAttribute attribute, sortedAttributes.values()) + for (const QXmlStreamAttribute &attribute : sorted_by_name(reader.attributes())) writer.writeAttribute(attribute); writer.writeCharacters(QString()); // write empty string to avoid having empty xml tags } else if (reader.isCharacters()) { @@ -236,6 +240,8 @@ public: */ class MissedBaseline { + friend class QVector<MissedBaseline>; + MissedBaseline() {} // for QVector, don't use public: MissedBaseline(const QString &aId, const QByteArray &aExpected, @@ -247,13 +253,20 @@ public: qFatal("%s: aId must not be an empty string", Q_FUNC_INFO); } + void swap(MissedBaseline &other) Q_DECL_NOTHROW + { + qSwap(id, other.id); + qSwap(expected, other.expected); + qSwap(output, other.output); + } + QString id; QByteArray expected; QByteArray output; }; - QList<GeneralFailure> failures; - QList<MissedBaseline> missedBaselines; + QVector<GeneralFailure> failures; + QVector<MissedBaseline> missedBaselines; /** * The count of how many tests that were run. @@ -507,6 +520,9 @@ private: QString m_ch; QStack<QUrl> m_baseURI; }; +QT_BEGIN_NAMESPACE +Q_DECLARE_SHARED(TestSuiteHandler::MissedBaseline) +QT_END_NAMESPACE class tst_QXmlStream: public QObject { @@ -718,8 +734,9 @@ QByteArray tst_QXmlStream::readFile(const QString &filename) writer << " qualifiedName=\"" << reader.qualifiedName().toString() << '"'; if (!reader.prefix().isEmpty()) writer << " prefix=\"" << reader.prefix().toString() << '"'; - if (reader.attributes().size()) { - foreach(QXmlStreamAttribute attribute, reader.attributes()) { + const auto attributes = reader.attributes(); + if (attributes.size()) { + for (const QXmlStreamAttribute &attribute : attributes) { writer << endl << " Attribute("; if (!attribute.name().isEmpty()) writer << " name=\"" << attribute.name().toString() << '"'; @@ -734,8 +751,9 @@ QByteArray tst_QXmlStream::readFile(const QString &filename) writer << " )" << endl; } } - if (reader.namespaceDeclarations().size()) { - foreach(QXmlStreamNamespaceDeclaration namespaceDeclaration, reader.namespaceDeclarations()) { + const auto namespaceDeclarations = reader.namespaceDeclarations(); + if (namespaceDeclarations.size()) { + for (const QXmlStreamNamespaceDeclaration &namespaceDeclaration : namespaceDeclarations) { writer << endl << " NamespaceDeclaration("; if (!namespaceDeclaration.prefix().isEmpty()) writer << " prefix=\"" << namespaceDeclaration.prefix().toString() << '"'; @@ -744,8 +762,9 @@ QByteArray tst_QXmlStream::readFile(const QString &filename) writer << " )" << endl; } } - if (reader.notationDeclarations().size()) { - foreach(QXmlStreamNotationDeclaration notationDeclaration, reader.notationDeclarations()) { + const auto notationDeclarations = reader.notationDeclarations(); + if (notationDeclarations.size()) { + for (const QXmlStreamNotationDeclaration ¬ationDeclaration : notationDeclarations) { writer << endl << " NotationDeclaration("; if (!notationDeclaration.name().isEmpty()) writer << " name=\"" << notationDeclaration.name().toString() << '"'; @@ -756,8 +775,9 @@ QByteArray tst_QXmlStream::readFile(const QString &filename) writer << " )" << endl; } } - if (reader.entityDeclarations().size()) { - foreach(QXmlStreamEntityDeclaration entityDeclaration, reader.entityDeclarations()) { + const auto entityDeclarations = reader.entityDeclarations(); + if (entityDeclarations.size()) { + for (const QXmlStreamEntityDeclaration &entityDeclaration : entityDeclarations) { writer << endl << " EntityDeclaration("; if (!entityDeclaration.name().isEmpty()) writer << " name=\"" << entityDeclaration.name().toString() << '"'; @@ -803,7 +823,8 @@ void tst_QXmlStream::testReader_data() const QTest::addColumn<QString>("ref"); QDir dir; dir.cd(QFINDTESTDATA("data/")); - foreach(QString filename , dir.entryList(QStringList() << "*.xml")) { + const auto fileNames = dir.entryList(QStringList() << "*.xml"); + for (const QString &filename : fileNames) { QString reference = QFileInfo(filename).baseName() + ".ref"; QTest::newRow(dir.filePath(filename).toLatin1().data()) << dir.filePath(filename) << dir.filePath(reference); } diff --git a/tests/auto/gui/qopenglconfig/tst_qopenglconfig.cpp b/tests/auto/gui/qopenglconfig/tst_qopenglconfig.cpp index 447b6e8468..39f7beca6f 100644 --- a/tests/auto/gui/qopenglconfig/tst_qopenglconfig.cpp +++ b/tests/auto/gui/qopenglconfig/tst_qopenglconfig.cpp @@ -152,11 +152,13 @@ static void dumpConfiguration(QTextStream &str) } // On Windows, this will provide addition GPU info similar to the output of dxdiag. - const QVariant gpuInfoV = QGuiApplication::platformNativeInterface()->property("gpu"); - if (gpuInfoV.type() == QVariant::Map) { - const QString description = gpuInfoV.toMap().value(QStringLiteral("printable")).toString(); - if (!description.isEmpty()) - str << "\nGPU:\n" << description << "\n\n"; + if (QGuiApplication::platformNativeInterface()) { + const QVariant gpuInfoV = QGuiApplication::platformNativeInterface()->property("gpu"); + if (gpuInfoV.type() == QVariant::Map) { + const QString description = gpuInfoV.toMap().value(QStringLiteral("printable")).toString(); + if (!description.isEmpty()) + str << "\nGPU:\n" << description << "\n\n"; + } } } diff --git a/tests/auto/gui/text/qtextdocument/tst_qtextdocument.cpp b/tests/auto/gui/text/qtextdocument/tst_qtextdocument.cpp index b0f70d1a59..3b47f4b17b 100644 --- a/tests/auto/gui/text/qtextdocument/tst_qtextdocument.cpp +++ b/tests/auto/gui/text/qtextdocument/tst_qtextdocument.cpp @@ -314,6 +314,8 @@ void tst_QTextDocument::find_data() << 15 << 6 << 11; QTest::newRow("nbsp") << "Hello" + QString(QChar(QChar::Nbsp)) +"World" << " " << int(QTextDocument::FindCaseSensitively) << 0 << 5 << 6; + + QTest::newRow("from-the-end") << "Hello World" << "Hello World" << int(QTextDocument::FindCaseSensitively| QTextDocument::FindBackward) << 11 << 0 << 11; } void tst_QTextDocument::find() diff --git a/tests/auto/other/lancelot/lancelot.pro b/tests/auto/other/lancelot/lancelot.pro index 6e79566649..e9c9af7143 100644 --- a/tests/auto/other/lancelot/lancelot.pro +++ b/tests/auto/other/lancelot/lancelot.pro @@ -1,7 +1,7 @@ CONFIG += testcase CONFIG -= app_bundle TARGET = tst_lancelot -QT += xml widgets testlib +QT += xml testlib SOURCES += tst_lancelot.cpp \ paintcommands.cpp diff --git a/tests/auto/tools/qmakelib/evaltest.cpp b/tests/auto/tools/qmakelib/evaltest.cpp index 1cd5c71531..62fcedddb9 100644 --- a/tests/auto/tools/qmakelib/evaltest.cpp +++ b/tests/auto/tools/qmakelib/evaltest.cpp @@ -2325,6 +2325,18 @@ void tst_qmakelib::addTestFunctions(const QString &qindir) << "##:1: load(feature) requires one or two arguments." << true; + QTest::newRow("discard_from()") + << "HERE = 1\nPLUS = one\ninclude(include/inc.pri)\ndiscard_from(include/inc.pri): OK = 1" + << "OK = 1\nHERE = 1\nPLUS = one\nVAR = UNDEF" + << "" + << true; + + QTest::newRow("discard_from(): bad number of arguments") + << "discard_from(1, 2): OK = 1" + << "OK = UNDEF" + << "##:1: discard_from(file) requires one argument." + << true; + // We don't test debug() and log(), because they print directly to stderr. QTest::newRow("message()") @@ -2744,7 +2756,8 @@ void tst_qmakelib::proEval() QMakeTestHandler handler; handler.setExpectedMessages(msgs.replace("##:", infile + ':').split('\n', QString::SkipEmptyParts)); QMakeVfs vfs; - QMakeParser parser(0, &vfs, &handler); + ProFileCache cache; + QMakeParser parser(&cache, &vfs, &handler); QMakeGlobals globals; globals.do_cache = false; globals.xqmakespec = "fake-g++"; diff --git a/tests/auto/tools/qmakelib/testdata/include/inc.pri b/tests/auto/tools/qmakelib/testdata/include/inc.pri index 1f1b3a287f..f9a4ec1bfa 100644 --- a/tests/auto/tools/qmakelib/testdata/include/inc.pri +++ b/tests/auto/tools/qmakelib/testdata/include/inc.pri @@ -1,6 +1,8 @@ VAR = val .VAR = nope +PLUS += more + fake-*: MATCH = 1 defineTest(func) { diff --git a/tests/auto/widgets/dialogs/qfiledialog/tst_qfiledialog.cpp b/tests/auto/widgets/dialogs/qfiledialog/tst_qfiledialog.cpp index 7d4fe2d499..844f21cfe1 100644 --- a/tests/auto/widgets/dialogs/qfiledialog/tst_qfiledialog.cpp +++ b/tests/auto/widgets/dialogs/qfiledialog/tst_qfiledialog.cpp @@ -80,18 +80,6 @@ static inline bool isCaseSensitiveFileSystem(const QString &path) #endif } - -class QNonNativeFileDialog : public QFileDialog -{ - Q_OBJECT -public: - QNonNativeFileDialog(QWidget *parent = 0, const QString &caption = QString(), const QString &directory = QString(), const QString &filter = QString()) - : QFileDialog(parent, caption, directory, filter) - { - setOption(QFileDialog::DontUseNativeDialog, true); - } -}; - class tst_QFiledialog : public QObject { Q_OBJECT @@ -180,9 +168,11 @@ void tst_QFiledialog::initTestCase() void tst_QFiledialog::init() { + // all tests, except widgetlessNativeDialog, use non-native dialogs + QCoreApplication::setAttribute(Qt::AA_DontUseNativeDialogs); QFileDialogPrivate::setLastVisitedDirectory(QUrl()); // populate the sidebar with some default settings - QNonNativeFileDialog fd; + QFileDialog fd; } void tst_QFiledialog::cleanup() @@ -201,7 +191,7 @@ public: // emitted any time the selection model emits current changed void tst_QFiledialog::currentChangedSignal() { - QNonNativeFileDialog fd; + QFileDialog fd; fd.setViewMode(QFileDialog::List); QSignalSpy spyCurrentChanged(&fd, SIGNAL(currentChanged(QString))); @@ -227,8 +217,7 @@ void tst_QFiledialog::currentChangedSignal() #if defined QT_BUILD_INTERNAL void tst_QFiledialog::directoryEnteredSignal() { - QNonNativeFileDialog fd(0, "", QDir::root().path()); - fd.setOptions(QFileDialog::DontUseNativeDialog); + QFileDialog fd(0, "", QDir::root().path()); QSidebar *sidebar = fd.findChild<QSidebar*>("sidebar"); QVERIFY(sidebar); if (sidebar->model()->rowCount() < 2) @@ -293,9 +282,8 @@ void tst_QFiledialog::filesSelectedSignal_data() // emitted when the dialog closes with the selected files void tst_QFiledialog::filesSelectedSignal() { - QNonNativeFileDialog fd; + QFileDialog fd; fd.setViewMode(QFileDialog::List); - fd.setOptions(QFileDialog::DontUseNativeDialog); QDir testDir(SRCDIR); fd.setDirectory(testDir); QFETCH(QFileDialog::FileMode, fileMode); @@ -337,7 +325,7 @@ void tst_QFiledialog::filesSelectedSignal() // only emitted when the combo box is activated void tst_QFiledialog::filterSelectedSignal() { - QNonNativeFileDialog fd; + QFileDialog fd; fd.setAcceptMode(QFileDialog::AcceptSave); fd.show(); QSignalSpy spyFilterSelected(&fd, SIGNAL(filterSelected(QString))); @@ -365,7 +353,7 @@ void tst_QFiledialog::args() QString caption = "caption"; QString directory = QDir::tempPath(); QString filter = "*.mp3"; - QNonNativeFileDialog fd(parent, caption, directory, filter); + QFileDialog fd(parent, caption, directory, filter); QCOMPARE(fd.parent(), (QObject *)parent); QCOMPARE(fd.windowTitle(), caption); #ifndef Q_OS_WIN @@ -376,7 +364,7 @@ void tst_QFiledialog::args() void tst_QFiledialog::directory() { - QNonNativeFileDialog fd; + QFileDialog fd; fd.setViewMode(QFileDialog::List); QFileSystemModel *model = fd.findChild<QFileSystemModel*>("qt_filesystem_model"); QVERIFY(model); @@ -410,12 +398,12 @@ void tst_QFiledialog::directory() #else QCOMPARE(list.at(0)->rootIndex().data().toString(), temp.dirName()); #endif - QNonNativeFileDialog *dlg = new QNonNativeFileDialog(0, "", tempPath); + QFileDialog *dlg = new QFileDialog(0, "", tempPath); QCOMPARE(model->index(tempPath), model->index(dlg->directory().absolutePath())); QCOMPARE(model->index(tempPath).data(QFileSystemModel::FileNameRole).toString(), model->index(dlg->directory().absolutePath()).data(QFileSystemModel::FileNameRole).toString()); delete dlg; - dlg = new QNonNativeFileDialog(); + dlg = new QFileDialog(); QCOMPARE(model->index(tempPath), model->index(dlg->directory().absolutePath())); delete dlg; } @@ -472,10 +460,9 @@ void tst_QFiledialog::completer() } // ### flesh this out more - QNonNativeFileDialog fd(0, QLatin1String(QTest::currentTestFunction()) + QFileDialog fd(0, QLatin1String(QTest::currentTestFunction()) + QStringLiteral(" \"") + QLatin1String(QTest::currentDataTag()) + QLatin1Char('"'), startPath); - fd.setOptions(QFileDialog::DontUseNativeDialog); fd.show(); QVERIFY(QTest::qWaitForWindowExposed(&fd)); QVERIFY(fd.isVisible()); @@ -570,8 +557,7 @@ void tst_QFiledialog::completer() void tst_QFiledialog::completer_up() { - QNonNativeFileDialog fd; - fd.setOptions(QFileDialog::DontUseNativeDialog); + QFileDialog fd; QSignalSpy spyCurrentChanged(&fd, SIGNAL(currentChanged(QString))); QSignalSpy spyDirectoryEntered(&fd, SIGNAL(directoryEntered(QString))); QSignalSpy spyFilesSelected(&fd, SIGNAL(filesSelected(QStringList))); @@ -594,7 +580,7 @@ void tst_QFiledialog::completer_up() void tst_QFiledialog::acceptMode() { - QNonNativeFileDialog fd; + QFileDialog fd; fd.show(); QToolButton* newButton = fd.findChild<QToolButton*>("newFolderButton"); @@ -616,7 +602,7 @@ void tst_QFiledialog::acceptMode() void tst_QFiledialog::confirmOverwrite() { - QNonNativeFileDialog fd; + QFileDialog fd; QCOMPARE(fd.confirmOverwrite(), true); fd.setConfirmOverwrite(true); QCOMPARE(fd.confirmOverwrite(), true); @@ -628,7 +614,7 @@ void tst_QFiledialog::confirmOverwrite() void tst_QFiledialog::defaultSuffix() { - QNonNativeFileDialog fd; + QFileDialog fd; QCOMPARE(fd.defaultSuffix(), QString()); fd.setDefaultSuffix("txt"); QCOMPARE(fd.defaultSuffix(), QString("txt")); @@ -640,7 +626,7 @@ void tst_QFiledialog::defaultSuffix() void tst_QFiledialog::fileMode() { - QNonNativeFileDialog fd; + QFileDialog fd; QCOMPARE(fd.fileMode(), QFileDialog::AnyFile); fd.setFileMode(QFileDialog::ExistingFile); QCOMPARE(fd.fileMode(), QFileDialog::ExistingFile); @@ -654,7 +640,7 @@ void tst_QFiledialog::fileMode() void tst_QFiledialog::caption() { - QNonNativeFileDialog fd; + QFileDialog fd; fd.setWindowTitle("testing"); fd.setFileMode(QFileDialog::Directory); QCOMPARE(fd.windowTitle(), QString("testing")); @@ -662,8 +648,7 @@ void tst_QFiledialog::caption() void tst_QFiledialog::filters() { - QNonNativeFileDialog fd; - fd.setOptions(QFileDialog::DontUseNativeDialog); + QFileDialog fd; QSignalSpy spyCurrentChanged(&fd, SIGNAL(currentChanged(QString))); QSignalSpy spyDirectoryEntered(&fd, SIGNAL(directoryEntered(QString))); QSignalSpy spyFilesSelected(&fd, SIGNAL(filesSelected(QStringList))); @@ -698,7 +683,7 @@ void tst_QFiledialog::filters() QCOMPARE(spyFilterSelected.count(), 0); //Let check if filters with whitespaces - QNonNativeFileDialog fd2; + QFileDialog fd2; QStringList expected; expected << "C++ Source Files(*.cpp)"; expected << "Any(*.*)"; @@ -716,7 +701,7 @@ void tst_QFiledialog::filters() void tst_QFiledialog::selectFilter() { - QNonNativeFileDialog fd; + QFileDialog fd; QSignalSpy spyFilterSelected(&fd, SIGNAL(filterSelected(QString))); QCOMPARE(fd.selectedNameFilter(), QString("All Files (*)")); QStringList filters; @@ -739,7 +724,7 @@ void tst_QFiledialog::selectFilter() void tst_QFiledialog::history() { - QNonNativeFileDialog fd; + QFileDialog fd; fd.setViewMode(QFileDialog::List); QFileSystemModel *model = fd.findChild<QFileSystemModel*>("qt_filesystem_model"); QVERIFY(model); @@ -781,7 +766,7 @@ void tst_QFiledialog::history() void tst_QFiledialog::iconProvider() { - QNonNativeFileDialog *fd = new QNonNativeFileDialog(); + QFileDialog *fd = new QFileDialog(); QVERIFY(fd->iconProvider() != 0); QFileIconProvider *ip = new QFileIconProvider(); fd->setIconProvider(ip); @@ -792,7 +777,7 @@ void tst_QFiledialog::iconProvider() void tst_QFiledialog::isReadOnly() { - QNonNativeFileDialog fd; + QFileDialog fd; QPushButton* newButton = fd.findChild<QPushButton*>("newFolderButton"); QAction* renameAction = fd.findChild<QAction*>("qt_rename_action"); @@ -816,7 +801,7 @@ void tst_QFiledialog::isReadOnly() void tst_QFiledialog::itemDelegate() { - QNonNativeFileDialog fd; + QFileDialog fd; QVERIFY(fd.itemDelegate() != 0); QItemDelegate *id = new QItemDelegate(&fd); fd.setItemDelegate(id); @@ -825,7 +810,7 @@ void tst_QFiledialog::itemDelegate() void tst_QFiledialog::labelText() { - QNonNativeFileDialog fd; + QFileDialog fd; QDialogButtonBox buttonBox; QPushButton *cancelButton = buttonBox.addButton(QDialogButtonBox::Cancel); QCOMPARE(fd.labelText(QFileDialog::LookIn), QString("Look in:")); @@ -848,7 +833,7 @@ void tst_QFiledialog::labelText() void tst_QFiledialog::resolveSymlinks() { - QNonNativeFileDialog fd; + QFileDialog fd; // default QCOMPARE(fd.resolveSymlinks(), true); @@ -874,7 +859,7 @@ void tst_QFiledialog::selectFile() { QFETCH(QString, file); QFETCH(int, count); - QScopedPointer<QNonNativeFileDialog> fd(new QNonNativeFileDialog); + QScopedPointer<QFileDialog> fd(new QFileDialog); QFileSystemModel *model = fd->findChild<QFileSystemModel*>("qt_filesystem_model"); QVERIFY(model); fd->setDirectory(QDir::currentPath()); @@ -911,7 +896,7 @@ void tst_QFiledialog::selectFileWrongCaseSaveAs() QString wrongCasePath = path; for (int c = 0; c < wrongCasePath.size(); c += 2) wrongCasePath[c] = wrongCasePath.at(c).isLower() ? wrongCasePath.at(c).toUpper() : wrongCasePath.at(c).toLower(); - QNonNativeFileDialog fd(0, "QTBUG-38162", wrongCasePath); + QFileDialog fd(0, "QTBUG-38162", wrongCasePath); fd.setAcceptMode(QFileDialog::AcceptSave); fd.selectFile(wrongCasePath); const QLineEdit *lineEdit = fd.findChild<QLineEdit*>("fileNameEdit"); @@ -925,7 +910,7 @@ void tst_QFiledialog::selectFiles() QVERIFY2(tempDir.isValid(), qPrintable(tempDir.errorString())); const QString tempPath = tempDir.path(); { - QNonNativeFileDialog fd; + QFileDialog fd; fd.setViewMode(QFileDialog::List); fd.setDirectory(tempPath); QSignalSpy spyCurrentChanged(&fd, SIGNAL(currentChanged(QString))); @@ -975,7 +960,7 @@ void tst_QFiledialog::selectFiles() { //If the selection is invalid then we fill the line edit but without the / - QNonNativeFileDialog dialog( 0, "Save" ); + QFileDialog dialog( 0, "Save" ); dialog.setFileMode( QFileDialog::AnyFile ); dialog.setAcceptMode( QFileDialog::AcceptSave ); dialog.selectFile(tempPath + QStringLiteral("/blah")); @@ -989,7 +974,7 @@ void tst_QFiledialog::selectFiles() void tst_QFiledialog::viewMode() { - QNonNativeFileDialog fd; + QFileDialog fd; fd.setViewMode(QFileDialog::List); fd.show(); @@ -1027,7 +1012,7 @@ void tst_QFiledialog::viewMode() void tst_QFiledialog::proxymodel() { - QNonNativeFileDialog fd; + QFileDialog fd; QCOMPARE(fd.proxyModel(), (QAbstractProxyModel*)0); fd.setProxyModel(0); @@ -1043,7 +1028,7 @@ void tst_QFiledialog::proxymodel() void tst_QFiledialog::setEmptyNameFilter() { - QNonNativeFileDialog fd; + QFileDialog fd; fd.setNameFilter(QString()); fd.setNameFilters(QStringList()); } @@ -1084,7 +1069,7 @@ void tst_QFiledialog::setNameFilter() QFETCH(QString, selectFilter); QFETCH(QString, expectedSelectedFilter); - QNonNativeFileDialog fd; + QFileDialog fd; fd.setNameFilters(filters); fd.setNameFilterDetailsVisible(nameFilterDetailsVisible); fd.selectNameFilter(selectFilter); @@ -1093,7 +1078,7 @@ void tst_QFiledialog::setNameFilter() void tst_QFiledialog::focus() { - QNonNativeFileDialog fd; + QFileDialog fd; fd.setDirectory(QDir::currentPath()); fd.show(); QApplication::setActiveWindow(&fd); @@ -1115,7 +1100,7 @@ void tst_QFiledialog::focus() void tst_QFiledialog::historyBack() { - QNonNativeFileDialog fd; + QFileDialog fd; QFileSystemModel *model = fd.findChild<QFileSystemModel*>("qt_filesystem_model"); QVERIFY(model); QToolButton *backButton = fd.findChild<QToolButton*>("backButton"); @@ -1162,7 +1147,7 @@ void tst_QFiledialog::historyBack() void tst_QFiledialog::historyForward() { - QNonNativeFileDialog fd; + QFileDialog fd; fd.setDirectory(QDir::currentPath()); QToolButton *backButton = fd.findChild<QToolButton*>("backButton"); QVERIFY(backButton); @@ -1238,7 +1223,7 @@ void tst_QFiledialog::disableSaveButton() QFETCH(QString, path); QFETCH(bool, isEnabled); - QNonNativeFileDialog fd(0, "caption", path); + QFileDialog fd(0, "caption", path); fd.setAcceptMode(QFileDialog::AcceptSave); QDialogButtonBox *buttonBox = fd.findChild<QDialogButtonBox*>("buttonBox"); QPushButton *button = buttonBox->button(QDialogButtonBox::Save); @@ -1265,7 +1250,7 @@ void tst_QFiledialog::saveButtonText() QFETCH(QString, label); QFETCH(QString, caption); - QNonNativeFileDialog fd(0, "auto test", QDir::temp().absolutePath()); + QFileDialog fd(0, "auto test", QDir::temp().absolutePath()); fd.setAcceptMode(QFileDialog::AcceptSave); if (!label.isNull()) fd.setLabelText(QFileDialog::Accept, label); @@ -1280,10 +1265,9 @@ void tst_QFiledialog::saveButtonText() void tst_QFiledialog::clearLineEdit() { - QNonNativeFileDialog fd(0, "caption", "foo"); + QFileDialog fd(0, "caption", "foo"); fd.setViewMode(QFileDialog::List); fd.setFileMode(QFileDialog::AnyFile); - fd.setOptions(QFileDialog::DontUseNativeDialog); fd.show(); //play it really safe by creating a directory @@ -1317,7 +1301,7 @@ void tst_QFiledialog::clearLineEdit() // selecting a dir the text should be cleared so one can just hit ok // and it selects that directory - fd.setFileMode(QNonNativeFileDialog::Directory); + fd.setFileMode(QFileDialog::Directory); fd.setDirectory(QDir::home()); QTest::qWait(1000); @@ -1338,7 +1322,7 @@ void tst_QFiledialog::clearLineEdit() void tst_QFiledialog::enableChooseButton() { - QNonNativeFileDialog fd; + QFileDialog fd; fd.setFileMode(QFileDialog::Directory); fd.show(); QDialogButtonBox *buttonBox = fd.findChild<QDialogButtonBox*>("buttonBox"); @@ -1351,6 +1335,7 @@ void tst_QFiledialog::widgetlessNativeDialog() { if (!QGuiApplicationPrivate::platformTheme()->usePlatformNativeDialog(QPlatformTheme::FileDialog)) QSKIP("This platform always uses widgets to realize its QFileDialog, instead of the native file dialog."); + QApplication::setAttribute(Qt::AA_DontUseNativeDialogs, false); QFileDialog fd; fd.setWindowModality(Qt::ApplicationModal); fd.show(); @@ -1374,10 +1359,9 @@ void tst_QFiledialog::trailingDotsAndSpaces() #ifndef Q_OS_WIN QSKIP("This is only tested on Windows"); #endif - QNonNativeFileDialog fd; + QFileDialog fd; fd.setViewMode(QFileDialog::List); fd.setFileMode(QFileDialog::ExistingFile); - fd.setOptions(QFileDialog::DontUseNativeDialog); fd.show(); QLineEdit *lineEdit = fd.findChild<QLineEdit *>("fileNameEdit"); QVERIFY(lineEdit); @@ -1453,35 +1437,28 @@ public slots: void tst_QFiledialog::rejectModalDialogs() { // QTBUG-38672 , static functions should return empty Urls - const QFileDialog::Options options = QFileDialog::DontUseNativeDialog; DialogRejecter dr; - QUrl url = QFileDialog::getOpenFileUrl(0, QStringLiteral("getOpenFileUrl"), - QUrl(), QString(), Q_NULLPTR, options); + QUrl url = QFileDialog::getOpenFileUrl(0, QStringLiteral("getOpenFileUrl")); QVERIFY(url.isEmpty()); QVERIFY(!url.isValid()); - url = QFileDialog::getExistingDirectoryUrl(0, QStringLiteral("getExistingDirectoryUrl"), - QUrl(), options | QFileDialog::ShowDirsOnly); + url = QFileDialog::getExistingDirectoryUrl(0, QStringLiteral("getExistingDirectoryUrl")); QVERIFY(url.isEmpty()); QVERIFY(!url.isValid()); - url = QFileDialog::getSaveFileUrl(0, QStringLiteral("getSaveFileUrl"), - QUrl(), QString(), Q_NULLPTR, options); + url = QFileDialog::getSaveFileUrl(0, QStringLiteral("getSaveFileUrl")); QVERIFY(url.isEmpty()); QVERIFY(!url.isValid()); // Same test with local files - QString file = QFileDialog::getOpenFileName(0, QStringLiteral("getOpenFileName"), - QString(), QString(), Q_NULLPTR, options); + QString file = QFileDialog::getOpenFileName(0, QStringLiteral("getOpenFileName")); QVERIFY(file.isEmpty()); - file = QFileDialog::getExistingDirectory(0, QStringLiteral("getExistingDirectory"), - QString(), options | QFileDialog::ShowDirsOnly); + file = QFileDialog::getExistingDirectory(0, QStringLiteral("getExistingDirectory")); QVERIFY(file.isEmpty()); - file = QFileDialog::getSaveFileName(0, QStringLiteral("getSaveFileName"), - QString(), QString(), Q_NULLPTR, options); + file = QFileDialog::getSaveFileName(0, QStringLiteral("getSaveFileName")); QVERIFY(file.isEmpty()); } diff --git a/tests/auto/widgets/dialogs/qfiledialog2/tst_qfiledialog2.cpp b/tests/auto/widgets/dialogs/qfiledialog2/tst_qfiledialog2.cpp index f08d78acf7..a16bd1a787 100644 --- a/tests/auto/widgets/dialogs/qfiledialog2/tst_qfiledialog2.cpp +++ b/tests/auto/widgets/dialogs/qfiledialog2/tst_qfiledialog2.cpp @@ -65,17 +65,6 @@ Q_GUI_EXPORT void qt_test_resetFetchedRoot(); QT_END_NAMESPACE #endif -class QNonNativeFileDialog : public QFileDialog -{ - Q_OBJECT -public: - QNonNativeFileDialog(QWidget *parent = 0, const QString &caption = QString(), const QString &directory = QString(), const QString &filter = QString()) - : QFileDialog(parent, caption, directory, filter) - { - setOption(QFileDialog::DontUseNativeDialog, true); - } -}; - static QByteArray msgDoesNotExist(const QString &name) { return (QLatin1Char('"') + QDir::toNativeSeparators(name) @@ -148,6 +137,7 @@ private: tst_QFileDialog2::tst_QFileDialog2() : tempDir(QDir::tempPath() + "/tst_qfiledialog2.XXXXXX") { + QCoreApplication::setAttribute(Qt::AA_DontUseNativeDialogs); } void tst_QFileDialog2::cleanupSettingsFile() @@ -173,7 +163,7 @@ void tst_QFileDialog2::init() { QFileDialogPrivate::setLastVisitedDirectory(QUrl()); // populate the sidebar with some default settings - QNonNativeFileDialog fd; + QFileDialog fd; } void tst_QFileDialog2::cleanup() @@ -189,7 +179,7 @@ void tst_QFileDialog2::listRoot() QTest::qWait(1500); qt_test_resetFetchedRoot(); QString dir(QDir::currentPath()); - QNonNativeFileDialog fd(0, QString(), dir); + QFileDialog fd(0, QString(), dir); fd.show(); QCOMPARE(qt_test_isFetchedRoot(),false); fd.setDirectory(""); @@ -200,15 +190,15 @@ void tst_QFileDialog2::listRoot() void tst_QFileDialog2::heapCorruption() { - QVector<QNonNativeFileDialog*> dialogs; + QVector<QFileDialog*> dialogs; for (int i=0; i < 10; i++) { - QNonNativeFileDialog *f = new QNonNativeFileDialog(NULL); + QFileDialog *f = new QFileDialog(NULL); dialogs << f; } qDeleteAll(dialogs); } -struct FriendlyQFileDialog : public QNonNativeFileDialog +struct FriendlyQFileDialog : public QFileDialog { friend class tst_QFileDialog2; Q_DECLARE_PRIVATE(QFileDialog) @@ -239,7 +229,6 @@ void tst_QFileDialog2::deleteDirAndFiles() t->close(); delete t; FriendlyQFileDialog fd; - fd.setOption(QFileDialog::DontUseNativeDialog); fd.d_func()->removeDirectory(tempPath); QFileInfo info(tempPath); QTest::qWait(2000); @@ -249,7 +238,7 @@ void tst_QFileDialog2::deleteDirAndFiles() void tst_QFileDialog2::filter() { - QNonNativeFileDialog fd; + QFileDialog fd; QAction *hiddenAction = fd.findChild<QAction*>("qt_show_hidden_action"); QVERIFY(hiddenAction); QVERIFY(hiddenAction->isEnabled()); @@ -262,7 +251,7 @@ void tst_QFileDialog2::filter() void tst_QFileDialog2::showNameFilterDetails() { - QNonNativeFileDialog fd; + QFileDialog fd; QComboBox *filters = fd.findChild<QComboBox*>("fileTypeCombo"); QVERIFY(filters); QVERIFY(fd.isNameFilterDetailsVisible()); @@ -294,7 +283,7 @@ void tst_QFileDialog2::unc() QString dir(QDir::currentPath()); #endif QVERIFY2(QFile::exists(dir), msgDoesNotExist(dir).constData()); - QNonNativeFileDialog fd(0, QString(), dir); + QFileDialog fd(0, QString(), dir); QFileSystemModel *model = fd.findChild<QFileSystemModel*>("qt_filesystem_model"); QVERIFY(model); QCOMPARE(model->index(fd.directory().absolutePath()), model->index(dir)); @@ -302,7 +291,7 @@ void tst_QFileDialog2::unc() void tst_QFileDialog2::emptyUncPath() { - QNonNativeFileDialog fd; + QFileDialog fd; fd.show(); QLineEdit *lineEdit = fd.findChild<QLineEdit*>("fileNameEdit"); QVERIFY(lineEdit); @@ -371,7 +360,7 @@ void tst_QFileDialog2::task143519_deleteAndRenameActionBehavior() QVERIFY(ctx.file.permissions() & QFile::WriteUser); ctx.file.close(); - QNonNativeFileDialog fd; + QFileDialog fd; fd.setViewMode(QFileDialog::List); fd.setDirectory(ctx.test.absolutePath()); fd.show(); @@ -412,7 +401,7 @@ void tst_QFileDialog2::task143519_deleteAndRenameActionBehavior() void tst_QFileDialog2::task178897_minimumSize() { - QNonNativeFileDialog fd; + QFileDialog fd; QSize oldMs = fd.layout()->minimumSize(); QStringList history = fd.history(); history << QDir::toNativeSeparators("/verylongdirectory/" @@ -452,7 +441,7 @@ void tst_QFileDialog2::task180459_lastDirectory() if (!QGuiApplication::platformName().compare(QLatin1String("cocoa"), Qt::CaseInsensitive)) QSKIP("Insignificant on OSX"); //QTBUG-39183 //first visit the temp directory and close the dialog - QNonNativeFileDialog *dlg = new QNonNativeFileDialog(0, "", tempDir.path()); + QFileDialog *dlg = new QFileDialog(0, "", tempDir.path()); QFileSystemModel *model = dlg->findChild<QFileSystemModel*>("qt_filesystem_model"); QVERIFY(model); QCOMPARE(model->index(tempDir.path()), model->index(dlg->directory().absolutePath())); @@ -463,7 +452,7 @@ void tst_QFileDialog2::task180459_lastDirectory() QFETCH(bool, isEnabled); QFETCH(QString, result); - dlg = new QNonNativeFileDialog(0, "", path); + dlg = new QFileDialog(0, "", path); model = dlg->findChild<QFileSystemModel*>("qt_filesystem_model"); QVERIFY(model); dlg->setAcceptMode(QFileDialog::AcceptSave); @@ -539,14 +528,14 @@ protected: } }; -class CrashDialog : public QNonNativeFileDialog +class CrashDialog : public QFileDialog { Q_OBJECT public: CrashDialog(QWidget *parent, const QString &caption, const QString &dir, const QString &filter) - : QNonNativeFileDialog(parent, caption, dir, filter) + : QFileDialog(parent, caption, dir, filter) { sortProxy *proxyModel = new sortProxy(this); setProxyModel(proxyModel); @@ -556,7 +545,7 @@ QString &dir, const QString &filter) #ifdef QT_BUILD_INTERNAL void tst_QFileDialog2::task227304_proxyOnFileDialog() { - QNonNativeFileDialog fd(0, "", QDir::currentPath(), 0); + QFileDialog fd(0, "", QDir::currentPath(), 0); fd.setProxyModel(new FilterDirModel(QDir::currentPath())); fd.show(); QLineEdit *edit = fd.findChild<QLineEdit*>("fileNameEdit"); @@ -579,7 +568,7 @@ void tst_QFileDialog2::task227304_proxyOnFileDialog() dialog->close(); fd.close(); - QNonNativeFileDialog fd2(0, "I should not crash with a proxy", tempDir.path(), 0); + QFileDialog fd2(0, "I should not crash with a proxy", tempDir.path(), 0); QSortFilterProxyModel *pm = new QSortFilterProxyModel; fd2.setProxyModel(pm); fd2.show(); @@ -607,7 +596,7 @@ void tst_QFileDialog2::task227930_correctNavigationKeyboardBehavior() QVERIFY(file2.open(QIODevice::WriteOnly | QIODevice::Text)); current.cdUp(); current.mkdir("test2"); - QNonNativeFileDialog fd; + QFileDialog fd; fd.setViewMode(QFileDialog::List); fd.setDirectory(current.absolutePath()); fd.show(); @@ -638,7 +627,7 @@ void tst_QFileDialog2::task227930_correctNavigationKeyboardBehavior() #if defined(Q_OS_WIN) void tst_QFileDialog2::task226366_lowerCaseHardDriveWindows() { - QNonNativeFileDialog fd; + QFileDialog fd; fd.setDirectory(QDir::root().path()); fd.show(); QLineEdit *edit = fd.findChild<QLineEdit*>("fileNameEdit"); @@ -664,7 +653,7 @@ void tst_QFileDialog2::task226366_lowerCaseHardDriveWindows() void tst_QFileDialog2::completionOnLevelAfterRoot() { - QNonNativeFileDialog fd; + QFileDialog fd; #if defined(Q_OS_WIN) fd.setDirectory("C:/"); QDir current = fd.directory(); @@ -731,7 +720,7 @@ void tst_QFileDialog2::task233037_selectingDirectory() { QDir current = QDir::currentPath(); current.mkdir("test"); - QNonNativeFileDialog fd; + QFileDialog fd; fd.setViewMode(QFileDialog::List); fd.setDirectory(current.absolutePath()); fd.setAcceptMode( QFileDialog::AcceptSave); @@ -765,7 +754,7 @@ void tst_QFileDialog2::task235069_hideOnEscape() QFETCH(QFileDialog::ViewMode, viewMode); QDir current = QDir::currentPath(); - QNonNativeFileDialog fd; + QFileDialog fd; QSignalSpy spyFinished(&fd, &QDialog::finished); QVERIFY(spyFinished.isValid()); QSignalSpy spyRejected(&fd, &QDialog::rejected); @@ -813,7 +802,7 @@ void tst_QFileDialog2::task203703_returnProperSeparator() { QDir current = QDir::currentPath(); current.mkdir("aaaaaaaaaaaaaaaaaa"); - QNonNativeFileDialog fd; + QFileDialog fd; fd.setDirectory(current.absolutePath()); fd.setViewMode(QFileDialog::List); fd.setFileMode(QFileDialog::Directory); @@ -850,7 +839,7 @@ void tst_QFileDialog2::task228844_ensurePreviousSorting() QVERIFY2(tempFile->open(), qPrintable(tempFile->errorString())); current.cdUp(); - QNonNativeFileDialog fd; + QFileDialog fd; fd.setDirectory(current.absolutePath()); fd.setViewMode(QFileDialog::Detail); fd.show(); @@ -862,7 +851,7 @@ void tst_QFileDialog2::task228844_ensurePreviousSorting() QPushButton *button = buttonBox->button(QDialogButtonBox::Open); QTest::mouseClick(button, Qt::LeftButton); QTest::qWait(500); - QNonNativeFileDialog fd2; + QFileDialog fd2; fd2.setFileMode(QFileDialog::Directory); fd2.restoreState(fd.saveState()); current.cd("aaaaaaaaaaaaaaaaaa"); @@ -881,7 +870,7 @@ void tst_QFileDialog2::task228844_ensurePreviousSorting() QTest::qWait(500); QCOMPARE(fd2.selectedFiles().first(), current.absolutePath() + QLatin1String("/g")); - QNonNativeFileDialog fd3(0, "This is a third file dialog", tempFile->fileName()); + QFileDialog fd3(0, "This is a third file dialog", tempFile->fileName()); fd3.restoreState(fd.saveState()); fd3.setFileMode(QFileDialog::Directory); fd3.show(); @@ -914,7 +903,7 @@ void tst_QFileDialog2::task228844_ensurePreviousSorting() void tst_QFileDialog2::task239706_editableFilterCombo() { - QNonNativeFileDialog d; + QFileDialog d; d.setNameFilter("*.cpp *.h"); d.show(); @@ -939,7 +928,7 @@ void tst_QFileDialog2::task218353_relativePaths() { QDir appDir = QDir::current(); QVERIFY(appDir.cdUp() != false); - QNonNativeFileDialog d(0, "TestDialog", ".."); + QFileDialog d(0, "TestDialog", ".."); QCOMPARE(d.directory().absolutePath(), appDir.absolutePath()); d.setDirectory(appDir.absolutePath() + QLatin1String("/non-existing-directory/../another-non-existing-dir/../")); @@ -955,7 +944,7 @@ void tst_QFileDialog2::task218353_relativePaths() #ifdef QT_BUILD_INTERNAL void tst_QFileDialog2::task251321_sideBarHiddenEntries() { - QNonNativeFileDialog fd; + QFileDialog fd; QDir current = QDir::currentPath(); current.mkdir(".hidden"); @@ -1011,7 +1000,7 @@ public : #ifdef QT_BUILD_INTERNAL void tst_QFileDialog2::task251341_sideBarRemoveEntries() { - QNonNativeFileDialog fd; + QFileDialog fd; QDir current = QDir::currentPath(); current.mkdir("testDir"); @@ -1080,7 +1069,7 @@ void tst_QFileDialog2::task254490_selectFileMultipleTimes() t = new QTemporaryFile; QVERIFY2(t->open(), qPrintable(t->errorString())); t->open(); - QNonNativeFileDialog fd(0, "TestFileDialog"); + QFileDialog fd(0, "TestFileDialog"); fd.setDirectory(tempPath); fd.setViewMode(QFileDialog::List); @@ -1114,7 +1103,7 @@ void tst_QFileDialog2::task257579_sideBarWithNonCleanUrls() dir.rmdir(dirname); //makes sure it doesn't exist any more QVERIFY(dir.mkdir(dirname)); QString url = dir.absolutePath() + QLatin1Char('/') + dirname + QLatin1String("/.."); - QNonNativeFileDialog fd; + QFileDialog fd; fd.setSidebarUrls(QList<QUrl>() << QUrl::fromLocalFile(url)); QSidebar *sidebar = fd.findChild<QSidebar*>("sidebar"); QCOMPARE(sidebar->urls().count(), 1); @@ -1134,7 +1123,7 @@ void tst_QFileDialog2::task257579_sideBarWithNonCleanUrls() void tst_QFileDialog2::task259105_filtersCornerCases() { - QNonNativeFileDialog fd(0, "TestFileDialog"); + QFileDialog fd(0, "TestFileDialog"); fd.setNameFilter(QLatin1String("All Files! (*);;Text Files (*.txt)")); fd.setOption(QFileDialog::HideNameFilterDetails, true); fd.show(); @@ -1181,7 +1170,7 @@ void tst_QFileDialog2::QTBUG4419_lineEditSelectAll() QString tempPath = tempDir.path(); QTemporaryFile temporaryFile(tempPath + "/tst_qfiledialog2_lineEditSelectAll.XXXXXX"); QVERIFY2(temporaryFile.open(), qPrintable(temporaryFile.errorString())); - QNonNativeFileDialog fd(0, "TestFileDialog", temporaryFile.fileName()); + QFileDialog fd(0, "TestFileDialog", temporaryFile.fileName()); fd.setDirectory(tempPath); fd.setViewMode(QFileDialog::List); @@ -1224,7 +1213,7 @@ void tst_QFileDialog2::QTBUG6558_showDirsOnly() out << "The magic number is: " << 49 << "\n"; tempFile.close(); - QNonNativeFileDialog fd(0, "TestFileDialog"); + QFileDialog fd(0, "TestFileDialog"); fd.setDirectory(dir.absolutePath()); fd.setViewMode(QFileDialog::List); @@ -1273,7 +1262,7 @@ void tst_QFileDialog2::QTBUG4842_selectFilterWithHideNameFilterDetails() filtersStr << "Images (*.png *.xpm *.jpg)" << "Text files (*.txt)" << "XML files (*.xml)"; QString chosenFilterString("Text files (*.txt)"); - QNonNativeFileDialog fd(0, "TestFileDialog"); + QFileDialog fd(0, "TestFileDialog"); fd.setAcceptMode(QFileDialog::AcceptSave); fd.setOption(QFileDialog::HideNameFilterDetails, true); fd.setNameFilters(filtersStr); @@ -1289,7 +1278,7 @@ void tst_QFileDialog2::QTBUG4842_selectFilterWithHideNameFilterDetails() //We compare the current combobox text with the stripped version QCOMPARE(filters->currentText(), QString("Text files")); - QNonNativeFileDialog fd2(0, "TestFileDialog"); + QFileDialog fd2(0, "TestFileDialog"); fd2.setAcceptMode(QFileDialog::AcceptSave); fd2.setOption(QFileDialog::HideNameFilterDetails, false); fd2.setNameFilters(filtersStr); @@ -1309,7 +1298,7 @@ void tst_QFileDialog2::QTBUG4842_selectFilterWithHideNameFilterDetails() void tst_QFileDialog2::dontShowCompleterOnRoot() { - QNonNativeFileDialog fd(0, "TestFileDialog"); + QFileDialog fd(0, "TestFileDialog"); fd.setAcceptMode(QFileDialog::AcceptSave); fd.show(); diff --git a/tests/auto/widgets/graphicsview/qgraphicsproxywidget/tst_qgraphicsproxywidget.cpp b/tests/auto/widgets/graphicsview/qgraphicsproxywidget/tst_qgraphicsproxywidget.cpp index 6faeb10ce7..01708d526c 100644 --- a/tests/auto/widgets/graphicsview/qgraphicsproxywidget/tst_qgraphicsproxywidget.cpp +++ b/tests/auto/widgets/graphicsview/qgraphicsproxywidget/tst_qgraphicsproxywidget.cpp @@ -275,6 +275,7 @@ void tst_QGraphicsProxyWidget::initTestCase() QApplication::setEffectEnabled(Qt::UI_AnimateMenu, false); // Disable combo for QTBUG_43780_visibility()/Windows Vista. QApplication::setEffectEnabled(Qt::UI_AnimateCombo, false); + QCoreApplication::setAttribute(Qt::AA_DontUseNativeDialogs); } // This will be called after every test function. diff --git a/tests/auto/widgets/widgets/qspinbox/tst_qspinbox.cpp b/tests/auto/widgets/widgets/qspinbox/tst_qspinbox.cpp index c735d269c5..808c7f9d3d 100644 --- a/tests/auto/widgets/widgets/qspinbox/tst_qspinbox.cpp +++ b/tests/auto/widgets/widgets/qspinbox/tst_qspinbox.cpp @@ -138,6 +138,8 @@ private slots: void positiveSign(); + void interpretOnLosingFocus(); + void setGroupSeparatorShown_data(); void setGroupSeparatorShown(); @@ -1145,6 +1147,33 @@ void tst_QSpinBox::positiveSign() QCOMPARE(spinBox.text(), QLatin1String("+20")); } +void tst_QSpinBox::interpretOnLosingFocus() +{ + // QTBUG-55249: When typing an invalid value after QSpinBox::clear(), + // it should be fixed up on losing focus. + + static const int minimumValue = 10; + static const int maximumValue = 20; + + QWidget widget; + widget.setWindowTitle(QTest::currentTestFunction()); + QVBoxLayout *layout = new QVBoxLayout(&widget); + QLineEdit *focusDummy = new QLineEdit("focusDummy", &widget); + layout->addWidget(focusDummy); + SpinBox *spinBox = new SpinBox(&widget); + spinBox->setRange(minimumValue, maximumValue); + spinBox->setValue(minimumValue); + layout->addWidget(spinBox); + spinBox->clear(); + spinBox->setFocus(); + widget.show(); + QVERIFY(QTest::qWaitForWindowActive(&widget)); + QTest::keyClick(spinBox, Qt::Key_1); // Too small + focusDummy->setFocus(); + QCOMPARE(spinBox->value(), minimumValue); + QCOMPARE(spinBox->lineEdit()->text().toInt(), minimumValue); +} + void tst_QSpinBox::setGroupSeparatorShown_data() { QTest::addColumn<QLocale::Language>("lang"); |