summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/corelib/io/qfile/tst_qfile.cpp2
-rw-r--r--tests/auto/corelib/io/qfileinfo/tst_qfileinfo.cpp13
-rw-r--r--tests/auto/corelib/io/qfilesystemwatcher/tst_qfilesystemwatcher.cpp21
-rw-r--r--tests/auto/corelib/io/qstandardpaths/tst_qstandardpaths.cpp14
-rw-r--r--tests/auto/corelib/io/qurl/tst_qurl.cpp50
-rw-r--r--tests/auto/corelib/json/invalidBinaryData/10.bjsonbin0 -> 544 bytes
-rw-r--r--tests/auto/corelib/json/invalidBinaryData/11.bjsonbin0 -> 542 bytes
-rw-r--r--tests/auto/corelib/json/invalidBinaryData/12.bjsonbin0 -> 506 bytes
-rw-r--r--tests/auto/corelib/json/invalidBinaryData/13.bjsonbin0 -> 544 bytes
-rw-r--r--tests/auto/corelib/json/invalidBinaryData/14.bjsonbin0 -> 521 bytes
-rw-r--r--tests/auto/corelib/json/invalidBinaryData/15.bjsonbin0 -> 536 bytes
-rw-r--r--tests/auto/corelib/json/invalidBinaryData/16.bjsonbin0 -> 874 bytes
-rw-r--r--tests/auto/corelib/json/invalidBinaryData/17.bjsonbin0 -> 49 bytes
-rw-r--r--tests/auto/corelib/json/invalidBinaryData/18.bjsonbin0 -> 524 bytes
-rw-r--r--tests/auto/corelib/json/invalidBinaryData/19.bjsonbin0 -> 524 bytes
-rw-r--r--tests/auto/corelib/json/invalidBinaryData/20.bjsonbin0 -> 524 bytes
-rw-r--r--tests/auto/corelib/json/invalidBinaryData/21.bjsonbin0 -> 552 bytes
-rw-r--r--tests/auto/corelib/json/invalidBinaryData/22.bjsonbin0 -> 524 bytes
-rw-r--r--tests/auto/corelib/json/invalidBinaryData/23.bjsonbin0 -> 533 bytes
-rw-r--r--tests/auto/corelib/json/invalidBinaryData/24.bjsonbin0 -> 506 bytes
-rw-r--r--tests/auto/corelib/json/invalidBinaryData/25.bjsonbin0 -> 542 bytes
-rw-r--r--tests/auto/corelib/json/invalidBinaryData/26.bjsonbin0 -> 628 bytes
-rw-r--r--tests/auto/corelib/json/invalidBinaryData/27.bjsonbin0 -> 51 bytes
-rw-r--r--tests/auto/corelib/json/invalidBinaryData/28.bjsonbin0 -> 542 bytes
-rw-r--r--tests/auto/corelib/json/invalidBinaryData/29.bjsonbin0 -> 544 bytes
-rw-r--r--tests/auto/corelib/json/invalidBinaryData/30.bjsonbin0 -> 542 bytes
-rw-r--r--tests/auto/corelib/json/invalidBinaryData/31.bjsonbin0 -> 553 bytes
-rw-r--r--tests/auto/corelib/json/invalidBinaryData/32.bjsonbin0 -> 536 bytes
-rw-r--r--tests/auto/corelib/json/invalidBinaryData/33.bjsonbin0 -> 544 bytes
-rw-r--r--tests/auto/corelib/json/invalidBinaryData/34.bjsonbin0 -> 524 bytes
-rw-r--r--tests/auto/corelib/json/invalidBinaryData/35.bjsonbin0 -> 524 bytes
-rw-r--r--tests/auto/corelib/json/invalidBinaryData/36.bjsonbin0 -> 524 bytes
-rw-r--r--tests/auto/corelib/json/invalidBinaryData/37.bjsonbin0 -> 536 bytes
-rw-r--r--tests/auto/corelib/json/tst_qtjson.cpp16
-rw-r--r--tests/auto/corelib/thread/qthread/tst_qthread.cpp4
-rw-r--r--tests/auto/gui/image/qpixmap/tst_qpixmap.cpp42
-rw-r--r--tests/auto/gui/kernel/qwindow/tst_qwindow.cpp20
-rw-r--r--tests/auto/gui/painting/qpainter/tst_qpainter.cpp19
-rw-r--r--tests/auto/gui/qopengl/tst_qopengl.cpp28
-rw-r--r--tests/auto/gui/text/qcssparser/tst_qcssparser.cpp1
-rw-r--r--tests/auto/gui/text/qtextlayout/tst_qtextlayout.cpp37
-rw-r--r--tests/auto/network/access/qnetworkcookiejar/tst_qnetworkcookiejar.cpp14
-rw-r--r--tests/auto/other/macnativeevents/BLACKLIST3
-rw-r--r--tests/auto/other/qaccessibility/tst_qaccessibility.cpp5
-rw-r--r--tests/auto/tools/qmakelib/evaltest.cpp4
-rw-r--r--tests/auto/widgets/dialogs/qfiledialog2/tst_qfiledialog2.cpp10
-rw-r--r--tests/auto/widgets/dialogs/qfilesystemmodel/tst_qfilesystemmodel.cpp19
-rw-r--r--tests/auto/widgets/dialogs/qwizard/tst_qwizard.cpp106
-rw-r--r--tests/auto/widgets/graphicsview/qgraphicsitem/tst_qgraphicsitem.cpp40
-rw-r--r--tests/auto/widgets/graphicsview/qgraphicsview/tst_qgraphicsview.cpp14
-rw-r--r--tests/auto/widgets/itemviews/qabstractitemview/tst_qabstractitemview.cpp52
-rw-r--r--tests/auto/widgets/itemviews/qlistwidget/tst_qlistwidget.cpp8
-rw-r--r--tests/auto/widgets/itemviews/qtablewidget/tst_qtablewidget.cpp8
-rw-r--r--tests/auto/widgets/kernel/qaction/tst_qaction.cpp6
-rw-r--r--tests/auto/widgets/kernel/qapplication/tst_qapplication.cpp12
-rw-r--r--tests/auto/widgets/kernel/qformlayout/tst_qformlayout.cpp57
-rw-r--r--tests/auto/widgets/kernel/qshortcut/tst_qshortcut.cpp3
-rw-r--r--tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp13
-rw-r--r--tests/auto/widgets/widgets/qdatetimeedit/tst_qdatetimeedit.cpp2
-rw-r--r--tests/auto/widgets/widgets/qlabel/red@2x.pngbin0 -> 105 bytes
-rw-r--r--tests/auto/widgets/widgets/qlabel/tst_qlabel.cpp24
-rw-r--r--tests/auto/widgets/widgets/qmainwindow/tst_qmainwindow.cpp4
-rw-r--r--tests/auto/widgets/widgets/qmenubar/qmenubar.pro5
-rw-r--r--tests/auto/widgets/widgets/qmenubar/tst_qmenubar.cpp24
-rw-r--r--tests/auto/widgets/widgets/qmenubar/tst_qmenubar_mac.mm44
-rw-r--r--tests/auto/widgets/widgets/qstackedwidget/tst_qstackedwidget.cpp3
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/tst_qxmlsimplereader.cpp12
-rw-r--r--tests/manual/qcursor/childwidget/childwidget.pro6
-rw-r--r--tests/manual/qcursor/childwidget/main.cpp92
-rw-r--r--tests/manual/qcursor/childwindow/childwindow.pro5
-rw-r--r--tests/manual/qcursor/childwindow/main.cpp91
-rw-r--r--tests/manual/qcursor/childwindowcontainer/childwindowcontainer.pro6
-rw-r--r--tests/manual/qcursor/childwindowcontainer/main.cpp138
-rw-r--r--tests/manual/qcursor/qcursor.pro2
74 files changed, 929 insertions, 170 deletions
diff --git a/tests/auto/corelib/io/qfile/tst_qfile.cpp b/tests/auto/corelib/io/qfile/tst_qfile.cpp
index d6bc75317a..7752930ae4 100644
--- a/tests/auto/corelib/io/qfile/tst_qfile.cpp
+++ b/tests/auto/corelib/io/qfile/tst_qfile.cpp
@@ -3442,7 +3442,7 @@ void tst_QFile::autocloseHandle()
//file is closed, read should fail
char buf;
QCOMPARE((int)QT_READ(fd, &buf, 1), -1);
- QVERIFY(errno = EBADF);
+ QVERIFY(errno == EBADF);
}
{
diff --git a/tests/auto/corelib/io/qfileinfo/tst_qfileinfo.cpp b/tests/auto/corelib/io/qfileinfo/tst_qfileinfo.cpp
index 8d62a38e6b..485b24dc62 100644
--- a/tests/auto/corelib/io/qfileinfo/tst_qfileinfo.cpp
+++ b/tests/auto/corelib/io/qfileinfo/tst_qfileinfo.cpp
@@ -765,6 +765,19 @@ void tst_QFileInfo::canonicalFilePath()
QDir::current().rmdir(linkTarget);
}
#endif
+
+#ifdef Q_OS_DARWIN
+ {
+ // Check if canonicalFilePath's result is in Composed normalization form.
+ QString path = QString::fromLatin1("caf\xe9");
+ QDir dir(QDir::tempPath());
+ dir.mkdir(path);
+ QString canonical = QFileInfo(dir.filePath(path)).canonicalFilePath();
+ QString roundtrip = QFile::decodeName(QFile::encodeName(canonical));
+ QCOMPARE(canonical, roundtrip);
+ dir.rmdir(path);
+ }
+#endif
}
void tst_QFileInfo::fileName_data()
diff --git a/tests/auto/corelib/io/qfilesystemwatcher/tst_qfilesystemwatcher.cpp b/tests/auto/corelib/io/qfilesystemwatcher/tst_qfilesystemwatcher.cpp
index 187f72d095..97b5e74bc2 100644
--- a/tests/auto/corelib/io/qfilesystemwatcher/tst_qfilesystemwatcher.cpp
+++ b/tests/auto/corelib/io/qfilesystemwatcher/tst_qfilesystemwatcher.cpp
@@ -73,6 +73,8 @@ private slots:
void signalsEmittedAfterFileMoved();
+ void watchUnicodeCharacters();
+
private:
QString m_tempDirPattern;
#endif // QT_NO_FILESYSTEMWATCHER
@@ -759,6 +761,25 @@ void tst_QFileSystemWatcher::signalsEmittedAfterFileMoved()
QVERIFY2(changedSpy.count() <= fileCount, changedSpy.receivedFilesMessage());
QTRY_COMPARE(changedSpy.count(), fileCount);
}
+
+void tst_QFileSystemWatcher::watchUnicodeCharacters()
+{
+ QTemporaryDir temporaryDirectory(m_tempDirPattern);
+ QVERIFY2(temporaryDirectory.isValid(), qPrintable(temporaryDirectory.errorString()));
+
+ QDir testDir(temporaryDirectory.path());
+ const QString subDir(QString::fromLatin1("caf\xe9"));
+ QVERIFY(testDir.mkdir(subDir));
+ testDir = QDir(temporaryDirectory.path() + QDir::separator() + subDir);
+
+ QFileSystemWatcher watcher;
+ QVERIFY(watcher.addPath(testDir.path()));
+
+ FileSystemWatcherSpy changedSpy(&watcher, FileSystemWatcherSpy::SpyOnDirectoryChanged);
+ QCOMPARE(changedSpy.count(), 0);
+ QVERIFY(testDir.mkdir("creme"));
+ QTRY_COMPARE(changedSpy.count(), 1);
+}
#endif // QT_NO_FILESYSTEMWATCHER
QTEST_MAIN(tst_QFileSystemWatcher)
diff --git a/tests/auto/corelib/io/qstandardpaths/tst_qstandardpaths.cpp b/tests/auto/corelib/io/qstandardpaths/tst_qstandardpaths.cpp
index 5b18ab9d68..a7a761a2da 100644
--- a/tests/auto/corelib/io/qstandardpaths/tst_qstandardpaths.cpp
+++ b/tests/auto/corelib/io/qstandardpaths/tst_qstandardpaths.cpp
@@ -33,6 +33,9 @@
#include <qfileinfo.h>
#include <qsysinfo.h>
#include <qregexp.h>
+#if defined(Q_OS_WIN) && !defined(Q_OS_WINRT) && !defined(Q_OS_WINCE)
+# include <qt_windows.h>
+#endif
#ifdef Q_OS_UNIX
#include <unistd.h>
@@ -126,6 +129,16 @@ static const char * const enumNames[MaxStandardLocation + 1 - int(QStandardPaths
void tst_qstandardpaths::initTestCase()
{
+#if defined(Q_OS_WIN) && !defined(Q_OS_WINRT) && !defined(Q_OS_WINCE)
+ // Disable WOW64 redirection, see testFindExecutable()
+ if (QSysInfo::buildCpuArchitecture() != QSysInfo::currentCpuArchitecture()) {
+ void *oldMode;
+ const bool disabledDisableWow64FsRedirection = Wow64DisableWow64FsRedirection(&oldMode) == TRUE;
+ if (!disabledDisableWow64FsRedirection)
+ qErrnoWarning("Wow64DisableWow64FsRedirection() failed");
+ QVERIFY(disabledDisableWow64FsRedirection);
+ }
+#endif // Q_OS_WIN && !Q_OS_WINRT && !Q_OS_WINCE
QVERIFY2(m_localConfigTempDir.isValid(), qPrintable(m_localConfigTempDir.errorString()));
QVERIFY2(m_globalConfigTempDir.isValid(), qPrintable(m_globalConfigTempDir.errorString()));
QVERIFY2(m_localAppTempDir.isValid(), qPrintable(m_localAppTempDir.errorString()));
@@ -375,6 +388,7 @@ void tst_qstandardpaths::testFindExecutable_data()
if (QSysInfo::windowsVersion() >= QSysInfo::WV_WINDOWS8) {
// The logo executable on Windows 8 is perfectly suited for testing that the
// suffix mechanism is not thrown off by dots in the name.
+ // Note: Requires disabling WOW64 redirection, see initTestCase()
const QString logo = QLatin1String("microsoft.windows.softwarelogo.showdesktop");
const QString logoPath = cmdFi.absolutePath() + QLatin1Char('/') + logo + QLatin1String(".exe");
QTest::newRow("win8-logo")
diff --git a/tests/auto/corelib/io/qurl/tst_qurl.cpp b/tests/auto/corelib/io/qurl/tst_qurl.cpp
index f589fe1d6d..a4461a12d3 100644
--- a/tests/auto/corelib/io/qurl/tst_qurl.cpp
+++ b/tests/auto/corelib/io/qurl/tst_qurl.cpp
@@ -177,6 +177,8 @@ private slots:
void streaming();
void detach();
void testThreading();
+ void matches_data();
+ void matches();
private:
void testThreadingHelper();
@@ -4020,6 +4022,54 @@ void tst_QUrl::testThreading()
delete s_urlStorage;
}
+void tst_QUrl::matches_data()
+{
+ QTest::addColumn<QString>("urlStrOne");
+ QTest::addColumn<QString>("urlStrTwo");
+ QTest::addColumn<uint>("options");
+ QTest::addColumn<bool>("matches");
+
+ QTest::newRow("matchingString-none") << "http://www.website.com/directory/?#ref"
+ << "http://www.website.com/directory/?#ref"
+ << uint(QUrl::None) << true;
+ QTest::newRow("nonMatchingString-none") << "http://www.website.com/directory/?#ref"
+ << "http://www.nomatch.com/directory/?#ref"
+ << uint(QUrl::None) << false;
+ QTest::newRow("matchingHost-removePath") << "http://www.website.com/directory"
+ << "http://www.website.com/differentdir"
+ << uint(QUrl::RemovePath) << true;
+ QTest::newRow("nonMatchingHost-removePath") << "http://www.website.com/directory"
+ << "http://www.different.com/differentdir"
+ << uint(QUrl::RemovePath) << false;
+ QTest::newRow("matchingHost-removePathAuthority") << "http://user:pass@www.website.com/directory"
+ << "http://www.website.com/differentdir"
+ << uint(QUrl::RemovePath | QUrl::RemoveAuthority)
+ << true;
+ QTest::newRow("nonMatchingHost-removePathAuthority") << "http://user:pass@www.website.com/directory"
+ << "http://user:pass@www.different.com/differentdir"
+ << uint(QUrl::RemovePath | QUrl::RemoveAuthority)
+ << true;
+ QTest::newRow("matchingHostAuthority-removePathAuthority")
+ << "http://user:pass@www.website.com/directory" << "http://www.website.com/differentdir"
+ << uint(QUrl::RemovePath | QUrl::RemoveAuthority) << true;
+ QTest::newRow("nonMatchingAuthority-removePathAuthority")
+ << "http://user:pass@www.website.com/directory"
+ << "http://otheruser:otherpass@www.website.com/directory"
+ << uint(QUrl::RemovePath | QUrl::RemoveAuthority) << true;
+}
+
+void tst_QUrl::matches()
+{
+ QFETCH(QString, urlStrOne);
+ QFETCH(QString, urlStrTwo);
+ QFETCH(uint, options);
+ QFETCH(bool, matches);
+
+ QUrl urlOne(urlStrOne);
+ QUrl urlTwo(urlStrTwo);
+ QCOMPARE(urlOne.matches(urlTwo, QUrl::FormattingOptions(options)), matches);
+}
+
QTEST_MAIN(tst_QUrl)
#include "tst_qurl.moc"
diff --git a/tests/auto/corelib/json/invalidBinaryData/10.bjson b/tests/auto/corelib/json/invalidBinaryData/10.bjson
new file mode 100644
index 0000000000..12b29b7aa5
--- /dev/null
+++ b/tests/auto/corelib/json/invalidBinaryData/10.bjson
Binary files differ
diff --git a/tests/auto/corelib/json/invalidBinaryData/11.bjson b/tests/auto/corelib/json/invalidBinaryData/11.bjson
new file mode 100644
index 0000000000..cf2b612111
--- /dev/null
+++ b/tests/auto/corelib/json/invalidBinaryData/11.bjson
Binary files differ
diff --git a/tests/auto/corelib/json/invalidBinaryData/12.bjson b/tests/auto/corelib/json/invalidBinaryData/12.bjson
new file mode 100644
index 0000000000..9c2403350e
--- /dev/null
+++ b/tests/auto/corelib/json/invalidBinaryData/12.bjson
Binary files differ
diff --git a/tests/auto/corelib/json/invalidBinaryData/13.bjson b/tests/auto/corelib/json/invalidBinaryData/13.bjson
new file mode 100644
index 0000000000..db6308b1fd
--- /dev/null
+++ b/tests/auto/corelib/json/invalidBinaryData/13.bjson
Binary files differ
diff --git a/tests/auto/corelib/json/invalidBinaryData/14.bjson b/tests/auto/corelib/json/invalidBinaryData/14.bjson
new file mode 100644
index 0000000000..347da4572c
--- /dev/null
+++ b/tests/auto/corelib/json/invalidBinaryData/14.bjson
Binary files differ
diff --git a/tests/auto/corelib/json/invalidBinaryData/15.bjson b/tests/auto/corelib/json/invalidBinaryData/15.bjson
new file mode 100644
index 0000000000..c6c5558934
--- /dev/null
+++ b/tests/auto/corelib/json/invalidBinaryData/15.bjson
Binary files differ
diff --git a/tests/auto/corelib/json/invalidBinaryData/16.bjson b/tests/auto/corelib/json/invalidBinaryData/16.bjson
new file mode 100644
index 0000000000..ae8b57446d
--- /dev/null
+++ b/tests/auto/corelib/json/invalidBinaryData/16.bjson
Binary files differ
diff --git a/tests/auto/corelib/json/invalidBinaryData/17.bjson b/tests/auto/corelib/json/invalidBinaryData/17.bjson
new file mode 100644
index 0000000000..32f0cc0e23
--- /dev/null
+++ b/tests/auto/corelib/json/invalidBinaryData/17.bjson
Binary files differ
diff --git a/tests/auto/corelib/json/invalidBinaryData/18.bjson b/tests/auto/corelib/json/invalidBinaryData/18.bjson
new file mode 100644
index 0000000000..50c89169eb
--- /dev/null
+++ b/tests/auto/corelib/json/invalidBinaryData/18.bjson
Binary files differ
diff --git a/tests/auto/corelib/json/invalidBinaryData/19.bjson b/tests/auto/corelib/json/invalidBinaryData/19.bjson
new file mode 100644
index 0000000000..b922212f45
--- /dev/null
+++ b/tests/auto/corelib/json/invalidBinaryData/19.bjson
Binary files differ
diff --git a/tests/auto/corelib/json/invalidBinaryData/20.bjson b/tests/auto/corelib/json/invalidBinaryData/20.bjson
new file mode 100644
index 0000000000..c965a0d294
--- /dev/null
+++ b/tests/auto/corelib/json/invalidBinaryData/20.bjson
Binary files differ
diff --git a/tests/auto/corelib/json/invalidBinaryData/21.bjson b/tests/auto/corelib/json/invalidBinaryData/21.bjson
new file mode 100644
index 0000000000..98165ee40c
--- /dev/null
+++ b/tests/auto/corelib/json/invalidBinaryData/21.bjson
Binary files differ
diff --git a/tests/auto/corelib/json/invalidBinaryData/22.bjson b/tests/auto/corelib/json/invalidBinaryData/22.bjson
new file mode 100644
index 0000000000..151f773a81
--- /dev/null
+++ b/tests/auto/corelib/json/invalidBinaryData/22.bjson
Binary files differ
diff --git a/tests/auto/corelib/json/invalidBinaryData/23.bjson b/tests/auto/corelib/json/invalidBinaryData/23.bjson
new file mode 100644
index 0000000000..6eb5269470
--- /dev/null
+++ b/tests/auto/corelib/json/invalidBinaryData/23.bjson
Binary files differ
diff --git a/tests/auto/corelib/json/invalidBinaryData/24.bjson b/tests/auto/corelib/json/invalidBinaryData/24.bjson
new file mode 100644
index 0000000000..c55a2a3e3b
--- /dev/null
+++ b/tests/auto/corelib/json/invalidBinaryData/24.bjson
Binary files differ
diff --git a/tests/auto/corelib/json/invalidBinaryData/25.bjson b/tests/auto/corelib/json/invalidBinaryData/25.bjson
new file mode 100644
index 0000000000..6c619f2ae1
--- /dev/null
+++ b/tests/auto/corelib/json/invalidBinaryData/25.bjson
Binary files differ
diff --git a/tests/auto/corelib/json/invalidBinaryData/26.bjson b/tests/auto/corelib/json/invalidBinaryData/26.bjson
new file mode 100644
index 0000000000..3bf303215a
--- /dev/null
+++ b/tests/auto/corelib/json/invalidBinaryData/26.bjson
Binary files differ
diff --git a/tests/auto/corelib/json/invalidBinaryData/27.bjson b/tests/auto/corelib/json/invalidBinaryData/27.bjson
new file mode 100644
index 0000000000..d2656c2287
--- /dev/null
+++ b/tests/auto/corelib/json/invalidBinaryData/27.bjson
Binary files differ
diff --git a/tests/auto/corelib/json/invalidBinaryData/28.bjson b/tests/auto/corelib/json/invalidBinaryData/28.bjson
new file mode 100644
index 0000000000..6797cf8c40
--- /dev/null
+++ b/tests/auto/corelib/json/invalidBinaryData/28.bjson
Binary files differ
diff --git a/tests/auto/corelib/json/invalidBinaryData/29.bjson b/tests/auto/corelib/json/invalidBinaryData/29.bjson
new file mode 100644
index 0000000000..0645dfc3b2
--- /dev/null
+++ b/tests/auto/corelib/json/invalidBinaryData/29.bjson
Binary files differ
diff --git a/tests/auto/corelib/json/invalidBinaryData/30.bjson b/tests/auto/corelib/json/invalidBinaryData/30.bjson
new file mode 100644
index 0000000000..f77fe1efd0
--- /dev/null
+++ b/tests/auto/corelib/json/invalidBinaryData/30.bjson
Binary files differ
diff --git a/tests/auto/corelib/json/invalidBinaryData/31.bjson b/tests/auto/corelib/json/invalidBinaryData/31.bjson
new file mode 100644
index 0000000000..d9840b6582
--- /dev/null
+++ b/tests/auto/corelib/json/invalidBinaryData/31.bjson
Binary files differ
diff --git a/tests/auto/corelib/json/invalidBinaryData/32.bjson b/tests/auto/corelib/json/invalidBinaryData/32.bjson
new file mode 100644
index 0000000000..1de4cb829f
--- /dev/null
+++ b/tests/auto/corelib/json/invalidBinaryData/32.bjson
Binary files differ
diff --git a/tests/auto/corelib/json/invalidBinaryData/33.bjson b/tests/auto/corelib/json/invalidBinaryData/33.bjson
new file mode 100644
index 0000000000..532a31dc08
--- /dev/null
+++ b/tests/auto/corelib/json/invalidBinaryData/33.bjson
Binary files differ
diff --git a/tests/auto/corelib/json/invalidBinaryData/34.bjson b/tests/auto/corelib/json/invalidBinaryData/34.bjson
new file mode 100644
index 0000000000..f498558eff
--- /dev/null
+++ b/tests/auto/corelib/json/invalidBinaryData/34.bjson
Binary files differ
diff --git a/tests/auto/corelib/json/invalidBinaryData/35.bjson b/tests/auto/corelib/json/invalidBinaryData/35.bjson
new file mode 100644
index 0000000000..8701210755
--- /dev/null
+++ b/tests/auto/corelib/json/invalidBinaryData/35.bjson
Binary files differ
diff --git a/tests/auto/corelib/json/invalidBinaryData/36.bjson b/tests/auto/corelib/json/invalidBinaryData/36.bjson
new file mode 100644
index 0000000000..ef5864e911
--- /dev/null
+++ b/tests/auto/corelib/json/invalidBinaryData/36.bjson
Binary files differ
diff --git a/tests/auto/corelib/json/invalidBinaryData/37.bjson b/tests/auto/corelib/json/invalidBinaryData/37.bjson
new file mode 100644
index 0000000000..f4dd4ae12f
--- /dev/null
+++ b/tests/auto/corelib/json/invalidBinaryData/37.bjson
Binary files differ
diff --git a/tests/auto/corelib/json/tst_qtjson.cpp b/tests/auto/corelib/json/tst_qtjson.cpp
index 5878d56a47..02f3a1901e 100644
--- a/tests/auto/corelib/json/tst_qtjson.cpp
+++ b/tests/auto/corelib/json/tst_qtjson.cpp
@@ -93,6 +93,7 @@ private Q_SLOTS:
void fromBinary();
void toAndFromBinary_data();
void toAndFromBinary();
+ void invalidBinaryData();
void parseNumbers();
void parseStrings();
void parseDuplicateKeys();
@@ -1764,6 +1765,21 @@ void tst_QtJson::toAndFromBinary()
QCOMPARE(doc, outdoc);
}
+void tst_QtJson::invalidBinaryData()
+{
+ QDir dir(testDataDir + "/invalidBinaryData");
+ QFileInfoList files = dir.entryInfoList();
+ for (int i = 0; i < files.size(); ++i) {
+ if (!files.at(i).isFile())
+ continue;
+ QFile file(files.at(i).filePath());
+ file.open(QIODevice::ReadOnly);
+ QByteArray bytes = file.readAll();
+ QJsonDocument document = QJsonDocument::fromRawData(bytes.constData(), bytes.size());
+ QVERIFY(document.isNull());
+ }
+}
+
void tst_QtJson::parseNumbers()
{
{
diff --git a/tests/auto/corelib/thread/qthread/tst_qthread.cpp b/tests/auto/corelib/thread/qthread/tst_qthread.cpp
index b4d0866d01..bbd319d2db 100644
--- a/tests/auto/corelib/thread/qthread/tst_qthread.cpp
+++ b/tests/auto/corelib/thread/qthread/tst_qthread.cpp
@@ -1077,8 +1077,8 @@ void tst_QThread::wait2()
thread.start();
timer.start();
QVERIFY(!thread.wait(Waiting_Thread::WaitTime));
- qint64 elapsed = timer.elapsed(); // On Windows, we sometimes get (WaitTime - 1).
- QVERIFY2(elapsed >= Waiting_Thread::WaitTime - 1, qPrintable(QString::fromLatin1("elapsed: %1").arg(elapsed)));
+ qint64 elapsed = timer.elapsed(); // On Windows, we sometimes get (WaitTime - 9).
+ QVERIFY2(elapsed >= Waiting_Thread::WaitTime - 10, qPrintable(QString::fromLatin1("elapsed: %1").arg(elapsed)));
timer.start();
thread.cond1.wakeOne();
diff --git a/tests/auto/gui/image/qpixmap/tst_qpixmap.cpp b/tests/auto/gui/image/qpixmap/tst_qpixmap.cpp
index 6adfe05fb0..8df8c2d3b6 100644
--- a/tests/auto/gui/image/qpixmap/tst_qpixmap.cpp
+++ b/tests/auto/gui/image/qpixmap/tst_qpixmap.cpp
@@ -162,6 +162,7 @@ private:
const QString m_prefix;
const QString m_convertFromImage;
const QString m_loadFromData;
+ const QTemporaryDir m_tempDir;
};
static bool lenientCompare(const QPixmap &actual, const QPixmap &expected)
@@ -209,11 +210,11 @@ void tst_QPixmap::initTestCase()
QVERIFY(!m_prefix.isEmpty());
QVERIFY(!m_convertFromImage.isEmpty());
QVERIFY(!m_loadFromData.isEmpty());
+ QVERIFY2(m_tempDir.isValid(), qPrintable(m_tempDir.errorString()));
}
void tst_QPixmap::cleanupTestCase()
{
- QFile::remove(QLatin1String("temp_image.png"));
}
void tst_QPixmap::swap()
@@ -1455,18 +1456,18 @@ void tst_QPixmap::preserveDepth()
void tst_QPixmap::loadAsBitmapOrPixmap()
{
QImage tmp(10, 10, QImage::Format_RGB32);
- tmp.save("temp_image.png");
+ tmp.save(m_tempDir.path() + "/temp_image.png");
bool ok;
// Check that we can load the pixmap as a pixmap and that it then turns into a pixmap
- QPixmap pixmap("temp_image.png");
+ QPixmap pixmap(m_tempDir.path() + "/temp_image.png");
QVERIFY(!pixmap.isNull());
QVERIFY(pixmap.depth() > 1);
QVERIFY(!pixmap.isQBitmap());
pixmap = QPixmap();
- ok = pixmap.load("temp_image.png");
+ ok = pixmap.load(m_tempDir.path() + "/temp_image.png");
QVERIFY(ok);
QVERIFY(!pixmap.isNull());
QVERIFY(pixmap.depth() > 1);
@@ -1474,24 +1475,51 @@ void tst_QPixmap::loadAsBitmapOrPixmap()
//now we can try to load it without an extension
pixmap = QPixmap();
- ok = pixmap.load("temp_image");
+ ok = pixmap.load(m_tempDir.path() + "/temp_image");
QVERIFY(ok);
QVERIFY(!pixmap.isNull());
QVERIFY(pixmap.depth() > 1);
QVERIFY(!pixmap.isQBitmap());
// The do the same check for bitmaps..
- QBitmap bitmap("temp_image.png");
+ QBitmap bitmap(m_tempDir.path() + "/temp_image.png");
QVERIFY(!bitmap.isNull());
QCOMPARE(bitmap.depth(), 1);
QVERIFY(bitmap.isQBitmap());
bitmap = QBitmap();
- ok = bitmap.load("temp_image.png");
+ ok = bitmap.load(m_tempDir.path() + "/temp_image.png");
QVERIFY(ok);
QVERIFY(!bitmap.isNull());
QCOMPARE(bitmap.depth(), 1);
QVERIFY(bitmap.isQBitmap());
+
+ // check that a QBitmap stays a QBitmap even when loading fails:
+ ok = bitmap.load(QString());
+ QVERIFY(!ok);
+ QVERIFY(bitmap.isNull());
+ QVERIFY(bitmap.isQBitmap());
+
+ ok = bitmap.load("does not exist");
+ QVERIFY(!ok);
+ QVERIFY(bitmap.isNull());
+ QVERIFY(bitmap.isQBitmap());
+
+ ok = bitmap.load("does not exist.png");
+ QVERIFY(!ok);
+ QVERIFY(bitmap.isNull());
+ QVERIFY(bitmap.isQBitmap());
+
+ QTemporaryFile garbage;
+ QVERIFY(garbage.open());
+ const QString garbagePath = garbage.fileName();
+ garbage.write(reinterpret_cast<const char *>(&garbage), sizeof garbage);
+ garbage.close();
+
+ ok = bitmap.load(garbagePath);
+ QVERIFY(!ok);
+ QVERIFY(bitmap.isNull());
+ QVERIFY(bitmap.isQBitmap());
}
void tst_QPixmap::toImageDeepCopy()
diff --git a/tests/auto/gui/kernel/qwindow/tst_qwindow.cpp b/tests/auto/gui/kernel/qwindow/tst_qwindow.cpp
index 70446e803a..e0010fb8be 100644
--- a/tests/auto/gui/kernel/qwindow/tst_qwindow.cpp
+++ b/tests/auto/gui/kernel/qwindow/tst_qwindow.cpp
@@ -782,6 +782,24 @@ void tst_QWindow::isActive()
// child has focus
QVERIFY(window.isActive());
+ // test focus back to parent and then back to child (QTBUG-39362)
+ // also verify the cumulative FocusOut and FocusIn counts
+ // activate parent
+ window.requestActivate();
+ QTRY_COMPARE(QGuiApplication::focusWindow(), &window);
+ QVERIFY(window.isActive());
+ QCoreApplication::processEvents();
+ QTRY_COMPARE(child.received(QEvent::FocusOut), 1);
+ QTRY_COMPARE(window.received(QEvent::FocusIn), 2);
+
+ // activate child again
+ child.requestActivate();
+ QTRY_COMPARE(QGuiApplication::focusWindow(), &child);
+ QVERIFY(child.isActive());
+ QCoreApplication::processEvents();
+ QTRY_COMPARE(window.received(QEvent::FocusOut), 2);
+ QTRY_COMPARE(child.received(QEvent::FocusIn), 2);
+
Window dialog;
dialog.setTransientParent(&window);
dialog.setGeometry(QRect(m_availableTopLeft + QPoint(110, 100), m_testWindowSize));
@@ -806,7 +824,7 @@ void tst_QWindow::isActive()
QTRY_COMPARE(QGuiApplication::focusWindow(), &window);
QCoreApplication::processEvents();
QTRY_COMPARE(dialog.received(QEvent::FocusOut), 1);
- QTRY_COMPARE(window.received(QEvent::FocusIn), 2);
+ QTRY_COMPARE(window.received(QEvent::FocusIn), 3);
QVERIFY(window.isActive());
diff --git a/tests/auto/gui/painting/qpainter/tst_qpainter.cpp b/tests/auto/gui/painting/qpainter/tst_qpainter.cpp
index 8a97a9261f..bb7e2dca35 100644
--- a/tests/auto/gui/painting/qpainter/tst_qpainter.cpp
+++ b/tests/auto/gui/painting/qpainter/tst_qpainter.cpp
@@ -297,6 +297,8 @@ private slots:
void QTBUG50153_drawImage_assert();
+ void QTBUG56252();
+
private:
void fillData();
void setPenColor(QPainter& p);
@@ -5061,6 +5063,23 @@ void tst_QPainter::QTBUG50153_drawImage_assert()
}
}
+void tst_QPainter::QTBUG56252()
+{
+ QImage sourceImage(1770, 1477, QImage::Format_RGB32);
+ QImage rotatedImage(1478, 1771, QImage::Format_RGB32);
+ QTransform transformCenter;
+ transformCenter.translate(739.0, 885.5);
+ transformCenter.rotate(270.0);
+ transformCenter.translate(-885.0, -738.5);
+ QPainter painter;
+ painter.begin(&rotatedImage);
+ painter.setTransform(transformCenter);
+ painter.drawImage(QPoint(0, 0),sourceImage);
+ painter.end();
+
+ // If no crash or illegal memory read, all is fine
+}
+
QTEST_MAIN(tst_QPainter)
#include "tst_qpainter.moc"
diff --git a/tests/auto/gui/qopengl/tst_qopengl.cpp b/tests/auto/gui/qopengl/tst_qopengl.cpp
index 15244744bf..f988cdb957 100644
--- a/tests/auto/gui/qopengl/tst_qopengl.cpp
+++ b/tests/auto/gui/qopengl/tst_qopengl.cpp
@@ -109,6 +109,7 @@ private slots:
void vaoCreate();
void bufferCreate();
void bufferMapRange();
+ void defaultQGLCurrentBuffer();
};
struct SharedResourceTracker
@@ -1520,6 +1521,33 @@ void tst_QOpenGL::bufferMapRange()
ctx->doneCurrent();
}
+void tst_QOpenGL::defaultQGLCurrentBuffer()
+{
+ QScopedPointer<QSurface> surface(createSurface(QSurface::Window));
+ QScopedPointer<QOpenGLContext> ctx(new QOpenGLContext);
+ ctx->create();
+ ctx->makeCurrent(surface.data());
+
+ // Bind default FBO on the current context, and record what's the current QGL FBO. It should
+ // be Q_NULLPTR because the default platform OpenGL FBO is not backed by a
+ // QOpenGLFramebufferObject.
+ QOpenGLFramebufferObject::bindDefault();
+ QOpenGLFramebufferObject *defaultQFBO = QOpenGLContextPrivate::get(ctx.data())->qgl_current_fbo;
+
+ // Create new FBO, bind it, and see that the QGL FBO points to the newly created FBO.
+ QScopedPointer<QOpenGLFramebufferObject> obj(new QOpenGLFramebufferObject(128, 128));
+ obj->bind();
+ QOpenGLFramebufferObject *customQFBO = QOpenGLContextPrivate::get(ctx.data())->qgl_current_fbo;
+ QVERIFY(defaultQFBO != customQFBO);
+
+ // Bind the default FBO, and check that the QGL FBO points to the original FBO object.
+ QOpenGLFramebufferObject::bindDefault();
+ QOpenGLFramebufferObject *finalQFBO = QOpenGLContextPrivate::get(ctx.data())->qgl_current_fbo;
+ QCOMPARE(defaultQFBO, finalQFBO);
+
+ ctx->doneCurrent();
+}
+
void tst_QOpenGL::nullTextureInitializtion()
{
QScopedPointer<QSurface> surface(createSurface(QSurface::Window));
diff --git a/tests/auto/gui/text/qcssparser/tst_qcssparser.cpp b/tests/auto/gui/text/qcssparser/tst_qcssparser.cpp
index 847d6e2e2f..244df5b899 100644
--- a/tests/auto/gui/text/qcssparser/tst_qcssparser.cpp
+++ b/tests/auto/gui/text/qcssparser/tst_qcssparser.cpp
@@ -842,6 +842,7 @@ void tst_QCssParser::colorValue_data()
QTest::newRow("hsla") << "color: hsva(10, 20, 30, 40)" << QColor::fromHsv(10, 20, 30, 40);
QTest::newRow("invalid1") << "color: rgb(why, does, it, always, rain, on, me)" << QColor();
QTest::newRow("invalid2") << "color: rgba(i, meant, norway)" << QColor();
+ QTest::newRow("invalid3") << "color: rgb(21)" << QColor();
QTest::newRow("role") << "color: palette(base)" << qApp->palette().color(QPalette::Base);
QTest::newRow("role2") << "color: palette( window-text ) " << qApp->palette().color(QPalette::WindowText);
QTest::newRow("transparent") << "color: transparent" << QColor(Qt::transparent);
diff --git a/tests/auto/gui/text/qtextlayout/tst_qtextlayout.cpp b/tests/auto/gui/text/qtextlayout/tst_qtextlayout.cpp
index 0d1d0f1ae1..b8af5271ea 100644
--- a/tests/auto/gui/text/qtextlayout/tst_qtextlayout.cpp
+++ b/tests/auto/gui/text/qtextlayout/tst_qtextlayout.cpp
@@ -134,6 +134,7 @@ private slots:
void xToCursorForLigatures();
void cursorInNonStopChars();
void nbsp();
+ void nbspWithFormat();
void noModificationOfInputString();
void superscriptCrash_qtbug53911();
@@ -2254,5 +2255,41 @@ void tst_QTextLayout::superscriptCrash_qtbug53911()
qDeleteAll(textLayouts);
}
+void tst_QTextLayout::nbspWithFormat()
+{
+ QString s1 = QLatin1String("ABCDEF ");
+ QString s2 = QLatin1String("GHI");
+ QChar nbsp(QChar::Nbsp);
+ QString s3 = QLatin1String("JKLMNOPQRSTUVWXYZ");
+
+ QTextLayout layout;
+ layout.setText(s1 + s2 + nbsp + s3);
+
+ QTextLayout::FormatRange formatRange;
+ formatRange.start = s1.length() + s2.length();
+ formatRange.length = 1;
+ formatRange.format.setFontUnderline(true);
+
+ QList<QTextLayout::FormatRange> overrides;
+ overrides.append(formatRange);
+
+ layout.setAdditionalFormats(overrides);
+
+ layout.beginLayout();
+ forever {
+ QTextLine line = layout.createLine();
+ if (!line.isValid())
+ break;
+ line.setLineWidth(1);
+ }
+ layout.endLayout();
+
+ QCOMPARE(layout.lineCount(), 2);
+ QCOMPARE(layout.lineAt(0).textStart(), 0);
+ QCOMPARE(layout.lineAt(0).textLength(), s1.length());
+ QCOMPARE(layout.lineAt(1).textStart(), s1.length());
+ QCOMPARE(layout.lineAt(1).textLength(), s2.length() + 1 + s3.length());
+}
+
QTEST_MAIN(tst_QTextLayout)
#include "tst_qtextlayout.moc"
diff --git a/tests/auto/network/access/qnetworkcookiejar/tst_qnetworkcookiejar.cpp b/tests/auto/network/access/qnetworkcookiejar/tst_qnetworkcookiejar.cpp
index 8a1a5b8369..849e2d8662 100644
--- a/tests/auto/network/access/qnetworkcookiejar/tst_qnetworkcookiejar.cpp
+++ b/tests/auto/network/access/qnetworkcookiejar/tst_qnetworkcookiejar.cpp
@@ -188,16 +188,16 @@ void tst_QNetworkCookieJar::setCookiesFromUrl_data()
result += cookie;
QTest::newRow("effective-tld1-accepted") << preset << cookie << "http://something.co.uk" << result << true;
- // 2. anything .mz is an effective TLD ('*.mz'), but 'teledata.mz' is an exception
+ // 2. anything .ck is an effective TLD ('*.ck'), but 'www.ck' is an exception
result.clear();
preset.clear();
- cookie.setDomain(".farmacia.mz");
- QTest::newRow("effective-tld2-denied") << preset << cookie << "http://farmacia.mz" << result << false;
- QTest::newRow("effective-tld2-denied2") << preset << cookie << "http://www.farmacia.mz" << result << false;
- QTest::newRow("effective-tld2-denied3") << preset << cookie << "http://www.anything.farmacia.mz" << result << false;
- cookie.setDomain(".teledata.mz");
+ cookie.setDomain(".foo.ck");
+ QTest::newRow("effective-tld2-denied") << preset << cookie << "http://foo.ck" << result << false;
+ QTest::newRow("effective-tld2-denied2") << preset << cookie << "http://www.foo.ck" << result << false;
+ QTest::newRow("effective-tld2-denied3") << preset << cookie << "http://www.anything.foo.ck" << result << false;
+ cookie.setDomain(".www.ck");
result += cookie;
- QTest::newRow("effective-tld2-accepted") << preset << cookie << "http://www.teledata.mz" << result << true;
+ QTest::newRow("effective-tld2-accepted") << preset << cookie << "http://www.www.ck" << result << true;
result.clear();
preset.clear();
diff --git a/tests/auto/other/macnativeevents/BLACKLIST b/tests/auto/other/macnativeevents/BLACKLIST
index 4129868022..3e68ba0cf0 100644
--- a/tests/auto/other/macnativeevents/BLACKLIST
+++ b/tests/auto/other/macnativeevents/BLACKLIST
@@ -2,8 +2,7 @@
[testDragWindow]
osx
[testMouseEnter]
-osx-10.9
-osx-10.8
+osx
[testChildDialogInFrontOfModalParent]
osx
[testChildWindowInFrontOfStaysOnTopParentWindow]
diff --git a/tests/auto/other/qaccessibility/tst_qaccessibility.cpp b/tests/auto/other/qaccessibility/tst_qaccessibility.cpp
index 99e3fc5bf2..a77daa7cb0 100644
--- a/tests/auto/other/qaccessibility/tst_qaccessibility.cpp
+++ b/tests/auto/other/qaccessibility/tst_qaccessibility.cpp
@@ -2898,7 +2898,10 @@ void tst_QAccessibility::listTest()
QAccessibleInterface *cellMunich3 = table2->cellAt(2,0);
QCOMPARE(cell4, cellMunich3);
QCOMPARE(axidMunich, QAccessible::uniqueId(cellMunich3));
-
+ delete listView->takeItem(2);
+ // list: Oslo, Helsinki
+ // verify that it doesn't return an invalid item from the cache
+ QVERIFY(table2->cellAt(2,0) == 0);
delete listView;
}
diff --git a/tests/auto/tools/qmakelib/evaltest.cpp b/tests/auto/tools/qmakelib/evaltest.cpp
index 4cd335d732..df8736a1b1 100644
--- a/tests/auto/tools/qmakelib/evaltest.cpp
+++ b/tests/auto/tools/qmakelib/evaltest.cpp
@@ -1120,8 +1120,8 @@ void tst_qmakelib::addReplaceFunctions(const QString &qindir)
QTest::newRow("$$section(): bad number of arguments")
<< "VAR = $$section(1, 2) \\\n$$section(1, 2, 3, 4, 5)"
<< "VAR ="
- << "##:1: section(var) section(var, sep, begin, end) requires three or four arguments.\n"
- "##:2: section(var) section(var, sep, begin, end) requires three or four arguments."
+ << "##:1: section(var, sep, begin, end) requires three or four arguments.\n"
+ "##:2: section(var, sep, begin, end) requires three or four arguments."
<< true;
QTest::newRow("$$find()")
diff --git a/tests/auto/widgets/dialogs/qfiledialog2/tst_qfiledialog2.cpp b/tests/auto/widgets/dialogs/qfiledialog2/tst_qfiledialog2.cpp
index 82934982c4..d6a1c264c7 100644
--- a/tests/auto/widgets/dialogs/qfiledialog2/tst_qfiledialog2.cpp
+++ b/tests/auto/widgets/dialogs/qfiledialog2/tst_qfiledialog2.cpp
@@ -350,8 +350,7 @@ void tst_QFileDialog2::task143519_deleteAndRenameActionBehavior()
// test based on task233037_selectingDirectory
struct TestContext {
- TestContext()
- : current(QDir::current()) {}
+ explicit TestContext(const QString &path) : current(path) {}
~TestContext() {
file.remove();
current.rmdir(test.dirName());
@@ -359,7 +358,9 @@ void tst_QFileDialog2::task143519_deleteAndRenameActionBehavior()
QDir current;
QDir test;
QFile file;
- } ctx;
+ };
+
+ TestContext ctx(tempDir.path());
// setup testbed
QVERIFY(ctx.current.mkdir("task143519_deleteAndRenameActionBehavior_test")); // ensure at least one item
@@ -373,6 +374,7 @@ void tst_QFileDialog2::task143519_deleteAndRenameActionBehavior()
QFileDialog fd;
fd.setViewMode(QFileDialog::List);
fd.setDirectory(ctx.test.absolutePath());
+ fd.selectFile(ctx.file.fileName());
fd.show();
QTest::qWaitForWindowActive(&fd);
@@ -387,7 +389,7 @@ void tst_QFileDialog2::task143519_deleteAndRenameActionBehavior()
// defaults
QVERIFY(openContextMenu(fd));
- QCOMPARE(fd.selectedFiles().size(), 1);
+ QCOMPARE(fd.selectedFiles(), QStringList(ctx.file.fileName()));
QCOMPARE(rm->isEnabled(), !fd.isReadOnly());
QCOMPARE(mv->isEnabled(), !fd.isReadOnly());
diff --git a/tests/auto/widgets/dialogs/qfilesystemmodel/tst_qfilesystemmodel.cpp b/tests/auto/widgets/dialogs/qfilesystemmodel/tst_qfilesystemmodel.cpp
index ad7600c784..1acf885285 100644
--- a/tests/auto/widgets/dialogs/qfilesystemmodel/tst_qfilesystemmodel.cpp
+++ b/tests/auto/widgets/dialogs/qfilesystemmodel/tst_qfilesystemmodel.cpp
@@ -1093,6 +1093,10 @@ static QSet<QString> fileListUnderIndex(const QFileSystemModel *model, const QMo
void tst_QFileSystemModel::specialFiles()
{
+#ifndef Q_OS_UNIX
+ QSKIP("Not implemented");
+#endif
+
QFileSystemModel model;
model.setFilter(QDir::AllEntries | QDir::System | QDir::Hidden);
@@ -1101,23 +1105,8 @@ void tst_QFileSystemModel::specialFiles()
// as it will always return a valid index for existing files,
// even if the file is not visible with the given filter.
-#if defined(Q_OS_UNIX)
const QModelIndex rootIndex = model.setRootPath(QStringLiteral("/dev/"));
const QString testFileName = QStringLiteral("null");
-#elif defined(Q_OS_WIN)
- const QModelIndex rootIndex = model.setRootPath(flatDirTestPath);
-
- const QString testFileName = QStringLiteral("linkSource.lnk");
-
- QFile file(flatDirTestPath + QLatin1String("/linkTarget.txt"));
- QVERIFY(file.open(QIODevice::WriteOnly));
- file.close();
- QVERIFY(file.link(flatDirTestPath + '/' + testFileName));
-#else
- QSKIP("Not implemented");
- QModelIndex rootIndex;
- QString testFileName;
-#endif
QTRY_VERIFY(fileListUnderIndex(&model, rootIndex).contains(testFileName));
diff --git a/tests/auto/widgets/dialogs/qwizard/tst_qwizard.cpp b/tests/auto/widgets/dialogs/qwizard/tst_qwizard.cpp
index 2635a2ed82..0f63baa0e6 100644
--- a/tests/auto/widgets/dialogs/qwizard/tst_qwizard.cpp
+++ b/tests/auto/widgets/dialogs/qwizard/tst_qwizard.cpp
@@ -1614,28 +1614,44 @@ class SetPage : public Operation
wizard->next();
}
QString describe() const { return QLatin1String("set page ") + QString::number(page); }
- const int page;
+ int page;
public:
- SetPage(int page) : page(page) {}
+ static QSharedPointer<SetPage> create(int page)
+ {
+ QSharedPointer<SetPage> o = QSharedPointer<SetPage>::create();
+ o->page = page;
+ return o;
+ }
};
class SetStyle : public Operation
{
void apply(QWizard *wizard) const { wizard->setWizardStyle(style); }
QString describe() const { return QLatin1String("set style ") + QString::number(style); }
- const QWizard::WizardStyle style;
+ QWizard::WizardStyle style;
public:
- SetStyle(QWizard::WizardStyle style) : style(style) {}
+ static QSharedPointer<SetStyle> create(QWizard::WizardStyle style)
+ {
+ QSharedPointer<SetStyle> o = QSharedPointer<SetStyle>::create();
+ o->style = style;
+ return o;
+ }
};
class SetOption : public Operation
{
void apply(QWizard *wizard) const { wizard->setOption(option, on); }
QString describe() const;
- const QWizard::WizardOption option;
- const bool on;
+ QWizard::WizardOption option;
+ bool on;
public:
- SetOption(QWizard::WizardOption option, bool on) : option(option), on(on) {}
+ static QSharedPointer<SetOption> create(QWizard::WizardOption option, bool on)
+ {
+ QSharedPointer<SetOption> o = QSharedPointer<SetOption>::create();
+ o->option = option;
+ o->on = on;
+ return o;
+ }
};
class OptionInfo
@@ -1660,16 +1676,16 @@ class OptionInfo
tags[QWizard::HaveCustomButton3] = "15/CB3";
for (int i = 0; i < 2; ++i) {
- QMap<QWizard::WizardOption, Operation *> operations_;
+ QMap<QWizard::WizardOption, QSharedPointer<Operation> > operations_;
foreach (QWizard::WizardOption option, tags.keys())
- operations_[option] = new SetOption(option, i == 1);
+ operations_[option] = SetOption::create(option, i == 1);
operations << operations_;
}
}
OptionInfo(OptionInfo const&);
OptionInfo& operator=(OptionInfo const&);
QMap<QWizard::WizardOption, QString> tags;
- QList<QMap<QWizard::WizardOption, Operation *> > operations;
+ QList<QMap<QWizard::WizardOption, QSharedPointer<Operation> > > operations;
public:
static OptionInfo &instance()
{
@@ -1678,7 +1694,7 @@ public:
}
QString tag(QWizard::WizardOption option) const { return tags.value(option); }
- Operation * operation(QWizard::WizardOption option, bool on) const
+ QSharedPointer<Operation> operation(QWizard::WizardOption option, bool on) const
{ return operations.at(on).value(option); }
QList<QWizard::WizardOption> options() const { return tags.keys(); }
};
@@ -1689,10 +1705,7 @@ QString SetOption::describe() const
+ QLatin1Char(on ? '1' : '0');
}
-Q_DECLARE_METATYPE(Operation *)
-Q_DECLARE_METATYPE(SetPage *)
-Q_DECLARE_METATYPE(SetStyle *)
-Q_DECLARE_METATYPE(SetOption *)
+Q_DECLARE_METATYPE(QVector<QSharedPointer<Operation> >)
class TestGroup
{
@@ -1709,14 +1722,17 @@ public:
combinations.clear();
}
- QList<Operation *> &add()
- { combinations << new QList<Operation *>; return *(combinations.last()); }
+ QVector<QSharedPointer<Operation> > &add()
+ {
+ combinations.resize(combinations.size() + 1);
+ return combinations.last();
+ }
void createTestRows()
{
for (int i = 0; i < combinations.count(); ++i) {
QTest::newRow((name.toLatin1() + ", row " + QByteArray::number(i)).constData())
- << (i == 0) << (type == Equality) << *(combinations.at(i));
+ << (i == 0) << (type == Equality) << combinations.at(i);
++nRows_;
}
}
@@ -1727,7 +1743,7 @@ private:
QString name;
Type type;
int nRows_;
- QList<QList<Operation *> *> combinations;
+ QVector<QVector<QSharedPointer<Operation> > > combinations;
};
class IntroPage : public QWizardPage
@@ -1811,9 +1827,9 @@ public:
}
}
- void applyOperations(const QList<Operation *> &operations)
+ void applyOperations(const QVector<QSharedPointer<Operation> > &operations)
{
- foreach (Operation * op, operations) {
+ foreach (const QSharedPointer<Operation> &op, operations) {
if (op) {
op->apply(this);
opsDescr += QLatin1Char('(') + op->describe() + QLatin1String(") ");
@@ -1833,31 +1849,29 @@ public:
class CombinationsTestData
{
TestGroup testGroup;
- QList<Operation *> pageOps;
- QList<Operation *> styleOps;
- QMap<bool, QList<Operation *> *> setAllOptions;
+ QVector<QSharedPointer<Operation> > pageOps;
+ QVector<QSharedPointer<Operation> > styleOps;
+ QMap<bool, QVector<QSharedPointer<Operation> > > setAllOptions;
public:
CombinationsTestData()
{
QTest::addColumn<bool>("ref");
QTest::addColumn<bool>("testEquality");
- QTest::addColumn<QList<Operation *> >("operations");
- pageOps << new SetPage(0) << new SetPage(1) << new SetPage(2);
- styleOps << new SetStyle(QWizard::ClassicStyle) << new SetStyle(QWizard::ModernStyle)
- << new SetStyle(QWizard::MacStyle);
+ QTest::addColumn<QVector<QSharedPointer<Operation> > >("operations");
+ pageOps << SetPage::create(0) << SetPage::create(1) << SetPage::create(2);
+ styleOps << SetStyle::create(QWizard::ClassicStyle) << SetStyle::create(QWizard::ModernStyle)
+ << SetStyle::create(QWizard::MacStyle);
#define SETPAGE(page) pageOps.at(page)
#define SETSTYLE(style) styleOps.at(style)
#define OPT(option, on) OptionInfo::instance().operation(option, on)
#define CLROPT(option) OPT(option, false)
#define SETOPT(option) OPT(option, true)
- setAllOptions[false] = new QList<Operation *>;
- setAllOptions[true] = new QList<Operation *>;
foreach (QWizard::WizardOption option, OptionInfo::instance().options()) {
- *setAllOptions.value(false) << CLROPT(option);
- *setAllOptions.value(true) << SETOPT(option);
+ setAllOptions[false] << CLROPT(option);
+ setAllOptions[true] << SETOPT(option);
}
-#define CLRALLOPTS *setAllOptions.value(false)
-#define SETALLOPTS *setAllOptions.value(true)
+#define CLRALLOPTS setAllOptions.value(false)
+#define SETALLOPTS setAllOptions.value(true)
}
int nRows() const { return testGroup.nRows(); }
@@ -1909,7 +1923,7 @@ public:
testGroup.createTestRows();
for (int i = 0; i < 2; ++i) {
- QList<Operation *> setOptions = *setAllOptions.value(i == 1);
+ QVector<QSharedPointer<Operation> > setOptions = setAllOptions.value(i == 1);
testGroup.reset("testAll 3.1");
testGroup.add() << setOptions;
@@ -1926,21 +1940,21 @@ public:
testGroup.createTestRows();
}
- foreach (Operation *pageOp, pageOps) {
+ foreach (const QSharedPointer<Operation> &pageOp, pageOps) {
testGroup.reset("testAll 4.1");
testGroup.add() << pageOp;
testGroup.add() << pageOp << pageOp;
testGroup.createTestRows();
for (int i = 0; i < 2; ++i) {
- QList<Operation *> optionOps = *setAllOptions.value(i == 1);
+ QVector<QSharedPointer<Operation> > optionOps = setAllOptions.value(i == 1);
testGroup.reset("testAll 4.2");
testGroup.add() << optionOps << pageOp;
testGroup.add() << pageOp << optionOps;
testGroup.createTestRows();
foreach (QWizard::WizardOption option, OptionInfo::instance().options()) {
- Operation *optionOp = OPT(option, i == 1);
+ QSharedPointer<Operation> optionOp = OPT(option, i == 1);
testGroup.reset("testAll 4.3");
testGroup.add() << optionOp << pageOp;
testGroup.add() << pageOp << optionOp;
@@ -1949,21 +1963,21 @@ public:
}
}
- foreach (Operation *styleOp, styleOps) {
+ foreach (const QSharedPointer<Operation> &styleOp, styleOps) {
testGroup.reset("testAll 5.1");
testGroup.add() << styleOp;
testGroup.add() << styleOp << styleOp;
testGroup.createTestRows();
for (int i = 0; i < 2; ++i) {
- QList<Operation *> optionOps = *setAllOptions.value(i == 1);
+ QVector<QSharedPointer<Operation> > optionOps = setAllOptions.value(i == 1);
testGroup.reset("testAll 5.2");
testGroup.add() << optionOps << styleOp;
testGroup.add() << styleOp << optionOps;
testGroup.createTestRows();
foreach (QWizard::WizardOption option, OptionInfo::instance().options()) {
- Operation *optionOp = OPT(option, i == 1);
+ QSharedPointer<Operation> optionOp = OPT(option, i == 1);
testGroup.reset("testAll 5.3");
testGroup.add() << optionOp << styleOp;
testGroup.add() << styleOp << optionOp;
@@ -1972,8 +1986,8 @@ public:
}
}
- foreach (Operation *pageOp, pageOps) {
- foreach (Operation *styleOp, styleOps) {
+ foreach (const QSharedPointer<Operation> &pageOp, pageOps) {
+ foreach (const QSharedPointer<Operation> &styleOp, styleOps) {
testGroup.reset("testAll 6.1");
testGroup.add() << pageOp;
@@ -1991,7 +2005,7 @@ public:
testGroup.createTestRows();
for (int i = 0; i < 2; ++i) {
- QList<Operation *> optionOps = *setAllOptions.value(i == 1);
+ QVector<QSharedPointer<Operation> > optionOps = setAllOptions.value(i == 1);
testGroup.reset("testAll 6.4");
testGroup.add() << optionOps << pageOp << styleOp;
testGroup.add() << pageOp << optionOps << styleOp;
@@ -2002,7 +2016,7 @@ public:
testGroup.createTestRows();
foreach (QWizard::WizardOption option, OptionInfo::instance().options()) {
- Operation *optionOp = OPT(option, i == 1);
+ QSharedPointer<Operation> optionOp = OPT(option, i == 1);
testGroup.reset("testAll 6.5");
testGroup.add() << optionOp << pageOp << styleOp;
testGroup.add() << pageOp << optionOp << styleOp;
@@ -2068,7 +2082,7 @@ void tst_QWizard::combinations()
QFETCH(bool, ref);
QFETCH(bool, testEquality);
- QFETCH(QList<Operation *>, operations);
+ QFETCH(QVector<QSharedPointer<Operation> >, operations);
TestWizard wizard;
#if !defined(QT_NO_STYLE_WINDOWSVISTA)
diff --git a/tests/auto/widgets/graphicsview/qgraphicsitem/tst_qgraphicsitem.cpp b/tests/auto/widgets/graphicsview/qgraphicsitem/tst_qgraphicsitem.cpp
index dc527767a7..60dc7a7288 100644
--- a/tests/auto/widgets/graphicsview/qgraphicsitem/tst_qgraphicsitem.cpp
+++ b/tests/auto/widgets/graphicsview/qgraphicsitem/tst_qgraphicsitem.cpp
@@ -845,14 +845,14 @@ void tst_QGraphicsItem::parentItem()
void tst_QGraphicsItem::setParentItem()
{
QGraphicsScene scene;
- QGraphicsItem *item = scene.addRect(QRectF(0, 0, 10, 10));
+ const QScopedPointer<QGraphicsItem> item(scene.addRect(QRectF(0, 0, 10, 10)));
QCOMPARE(item->scene(), &scene);
- QGraphicsRectItem *child = new QGraphicsRectItem;
+ const QScopedPointer<QGraphicsRectItem> child(new QGraphicsRectItem);
QCOMPARE(child->scene(), (QGraphicsScene *)0);
// This implicitly adds the item to the parent's scene
- child->setParentItem(item);
+ child->setParentItem(item.data());
QCOMPARE(child->scene(), &scene);
// This just makes it a toplevel
@@ -860,8 +860,8 @@ void tst_QGraphicsItem::setParentItem()
QCOMPARE(child->scene(), &scene);
// Add the child back to the parent, then remove the parent from the scene
- child->setParentItem(item);
- scene.removeItem(item);
+ child->setParentItem(item.data());
+ scene.removeItem(item.data());
QCOMPARE(child->scene(), (QGraphicsScene *)0);
}
@@ -959,19 +959,19 @@ void tst_QGraphicsItem::flags()
QCOMPARE(item->pos(), QPointF(10, 10));
}
{
- QGraphicsItem* clippingParent = new QGraphicsRectItem;
+ const QScopedPointer<QGraphicsItem> clippingParent(new QGraphicsRectItem);
clippingParent->setFlag(QGraphicsItem::ItemClipsChildrenToShape, true);
- QGraphicsItem* nonClippingParent = new QGraphicsRectItem;
+ const QScopedPointer<QGraphicsItem> nonClippingParent(new QGraphicsRectItem);
nonClippingParent->setFlag(QGraphicsItem::ItemClipsChildrenToShape, false);
- QGraphicsItem* child = new QGraphicsRectItem(nonClippingParent);
+ QGraphicsItem* child = new QGraphicsRectItem(nonClippingParent.data());
QVERIFY(!child->isClipped());
- child->setParentItem(clippingParent);
+ child->setParentItem(clippingParent.data());
QVERIFY(child->isClipped());
- child->setParentItem(nonClippingParent);
+ child->setParentItem(nonClippingParent.data());
QVERIFY(!child->isClipped());
}
}
@@ -3130,7 +3130,8 @@ void tst_QGraphicsItem::isAncestorOf()
void tst_QGraphicsItem::commonAncestorItem()
{
- QGraphicsItem *ancestor = new QGraphicsRectItem;
+ QGraphicsRectItem ancestorItem;
+ QGraphicsItem *ancestor = &ancestorItem;
QGraphicsItem *grandMa = new QGraphicsRectItem;
QGraphicsItem *grandPa = new QGraphicsRectItem;
QGraphicsItem *brotherInLaw = new QGraphicsRectItem;
@@ -3630,7 +3631,7 @@ void tst_QGraphicsItem::setGroup()
QGraphicsItemGroup group1;
QGraphicsItemGroup group2;
- QGraphicsRectItem *rect = new QGraphicsRectItem;
+ const QScopedPointer<QGraphicsRectItem> rect(new QGraphicsRectItem);
QCOMPARE(rect->group(), (QGraphicsItemGroup *)0);
QCOMPARE(rect->parentItem(), (QGraphicsItem *)0);
rect->setGroup(&group1);
@@ -6835,8 +6836,8 @@ void tst_QGraphicsItem::opacity()
QFETCH(qreal, c2_effectiveOpacity);
QFETCH(qreal, c3_effectiveOpacity);
- QGraphicsRectItem *p = new QGraphicsRectItem;
- QGraphicsRectItem *c1 = new QGraphicsRectItem(p);
+ const QScopedPointer<QGraphicsRectItem> p(new QGraphicsRectItem);
+ QGraphicsRectItem *c1 = new QGraphicsRectItem(p.data());
QGraphicsRectItem *c2 = new QGraphicsRectItem(c1);
QGraphicsRectItem *c3 = new QGraphicsRectItem(c2);
@@ -7224,11 +7225,12 @@ void tst_QGraphicsItem::sceneTransformCache()
// Test that an item's scene transform is updated correctly when the
// parent is transformed.
QGraphicsScene scene;
- QGraphicsRectItem *rect = scene.addRect(0, 0, 100, 100);
+
+ const QScopedPointer<QGraphicsRectItem> rect(scene.addRect(0, 0, 100, 100));
rect->setPen(QPen(Qt::black, 0));
QGraphicsRectItem *rect2 = scene.addRect(0, 0, 100, 100);
rect2->setPen(QPen(Qt::black, 0));
- rect2->setParentItem(rect);
+ rect2->setParentItem(rect.data());
rect2->setTransform(QTransform().rotate(90), true);
rect->setTransform(QTransform::fromTranslate(0, 50), true);
QGraphicsView view(&scene);
@@ -7240,7 +7242,7 @@ void tst_QGraphicsItem::sceneTransformCache()
x.rotate(90);
QCOMPARE(rect2->sceneTransform(), x);
- scene.removeItem(rect);
+ scene.removeItem(rect.data());
//Crazy use case : rect4 child of rect3 so the transformation of rect4 will be cached.Good!
//We remove rect4 from the scene, then the validTransform bit flag is set to 0 and the index of the cache
@@ -10696,7 +10698,7 @@ void tst_QGraphicsItem::scenePosChange()
{
ScenePosChangeTester* root = new ScenePosChangeTester;
ScenePosChangeTester* child1 = new ScenePosChangeTester(root);
- ScenePosChangeTester* grandChild1 = new ScenePosChangeTester(child1);
+ const QScopedPointer<ScenePosChangeTester> grandChild1(new ScenePosChangeTester(child1));
ScenePosChangeTester* child2 = new ScenePosChangeTester(root);
ScenePosChangeTester* grandChild2 = new ScenePosChangeTester(child2);
@@ -10748,7 +10750,7 @@ void tst_QGraphicsItem::scenePosChange()
QCOMPARE(grandChild2->changes.count(QGraphicsItem::ItemScenePositionHasChanged), 3);
// remove
- scene.removeItem(grandChild1);
+ scene.removeItem(grandChild1.data());
delete grandChild2; grandChild2 = 0;
QCoreApplication::processEvents(); // QGraphicsScenePrivate::_q_updateScenePosDescendants()
root->moveBy(1.0, 1.0);
diff --git a/tests/auto/widgets/graphicsview/qgraphicsview/tst_qgraphicsview.cpp b/tests/auto/widgets/graphicsview/qgraphicsview/tst_qgraphicsview.cpp
index 1df9a9434c..5b6f219d11 100644
--- a/tests/auto/widgets/graphicsview/qgraphicsview/tst_qgraphicsview.cpp
+++ b/tests/auto/widgets/graphicsview/qgraphicsview/tst_qgraphicsview.cpp
@@ -2924,6 +2924,9 @@ void tst_QGraphicsView::scrollBarRanges()
if (useStyledPanel && style == QStringLiteral("Macintosh") && platformName == QStringLiteral("cocoa"))
QSKIP("Insignificant on OSX");
+
+ QScopedPointer<QStyle> stylePtr;
+
QGraphicsScene scene;
QGraphicsView view(&scene);
view.setRenderHint(QPainter::Antialiasing);
@@ -2931,9 +2934,10 @@ void tst_QGraphicsView::scrollBarRanges()
view.setFrameStyle(useStyledPanel ? QFrame::StyledPanel : QFrame::NoFrame);
if (style == QString("motif"))
- view.setStyle(new FauxMotifStyle);
+ stylePtr.reset(new FauxMotifStyle);
else
- view.setStyle(QStyleFactory::create(style));
+ stylePtr.reset(QStyleFactory::create(style));
+ view.setStyle(stylePtr.data());
view.setStyleSheet(" "); // enables style propagation ;-)
int adjust = 0;
@@ -3500,7 +3504,7 @@ void tst_QGraphicsView::task245469_itemsAtPointWithClip()
static QGraphicsView *createSimpleViewAndScene()
{
QGraphicsView *view = new QGraphicsView;
- QGraphicsScene *scene = new QGraphicsScene;
+ QGraphicsScene *scene = new QGraphicsScene(view);
view->setScene(scene);
view->setBackgroundBrush(Qt::blue);
@@ -3628,7 +3632,7 @@ void tst_QGraphicsView::moveItemWhileScrolling()
MoveItemScrollView()
{
setWindowFlags(Qt::X11BypassWindowManagerHint);
- setScene(new QGraphicsScene(0, 0, 1000, 1000));
+ setScene(new QGraphicsScene(0, 0, 1000, 1000, this));
rect = scene()->addRect(0, 0, 10, 10);
rect->setPos(50, 50);
rect->setPen(QPen(Qt::black, 0));
@@ -3694,7 +3698,7 @@ void tst_QGraphicsView::centerOnDirtyItem()
toplevel.setWindowFlags(view.windowFlags() | Qt::WindowStaysOnTopHint);
view.resize(200, 200);
- QGraphicsScene *scene = new QGraphicsScene;
+ QGraphicsScene *scene = new QGraphicsScene(&view);
view.setScene(scene);
view.setSceneRect(-1000, -1000, 2000, 2000);
diff --git a/tests/auto/widgets/itemviews/qabstractitemview/tst_qabstractitemview.cpp b/tests/auto/widgets/itemviews/qabstractitemview/tst_qabstractitemview.cpp
index 8cb95c867c..6fd95c8266 100644
--- a/tests/auto/widgets/itemviews/qabstractitemview/tst_qabstractitemview.cpp
+++ b/tests/auto/widgets/itemviews/qabstractitemview/tst_qabstractitemview.cpp
@@ -149,6 +149,7 @@ private slots:
void QTBUG50102_SH_ItemView_ScrollMode();
void QTBUG50535_update_on_new_selection_model();
void testSelectionModelInSyncWithView();
+ void testClickToSelect();
};
class MyAbstractItemDelegate : public QAbstractItemDelegate
@@ -2113,5 +2114,56 @@ void tst_QAbstractItemView::testSelectionModelInSyncWithView()
QCOMPARE(view.selectionModel()->selection().indexes(), QModelIndexList() << model.index(0, 0));
}
+class SetSelectionTestView : public QListView
+{
+ Q_OBJECT
+public:
+ SetSelectionTestView() : QListView() {}
+
+signals:
+ void setSelectionCalled(const QRect &rect);
+
+protected:
+ void setSelection(const QRect &rect, QItemSelectionModel::SelectionFlags flags) Q_DECL_OVERRIDE
+ {
+ emit setSelectionCalled(rect);
+ QListView::setSelection(rect, flags);
+ }
+};
+
+void tst_QAbstractItemView::testClickToSelect()
+{
+ // This test verifies that the QRect that is passed from QAbstractItemView::mousePressEvent
+ // to the virtual method QAbstractItemView::setSelection(const QRect &, SelectionFlags)
+ // is the 1x1 rect which conains exactly the clicked pixel if no modifiers are pressed.
+
+ QStringList list;
+ list << "A" << "B" << "C";
+ QStringListModel model(list);
+
+ SetSelectionTestView view;
+ view.setModel(&model);
+ view.show();
+ QTest::qWaitForWindowExposed(&view);
+
+ QSignalSpy spy(&view, &SetSelectionTestView::setSelectionCalled);
+
+ const QModelIndex indexA(model.index(0, 0));
+ const QRect visualRectA = view.visualRect(indexA);
+ const QPoint centerA = visualRectA.center();
+
+ // Click the center of the visualRect of item "A"
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, Qt::NoModifier, centerA);
+ QCOMPARE(spy.count(), 1);
+ QCOMPARE(spy.back().front().value<QRect>(), QRect(centerA, QSize(1, 1)));
+
+ // Click a point slightly away from the center
+ const QPoint nearCenterA = centerA + QPoint(1, 1);
+ QVERIFY(visualRectA.contains(nearCenterA));
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, Qt::NoModifier, nearCenterA);
+ QCOMPARE(spy.count(), 2);
+ QCOMPARE(spy.back().front().value<QRect>(), QRect(nearCenterA, QSize(1, 1)));
+}
+
QTEST_MAIN(tst_QAbstractItemView)
#include "tst_qabstractitemview.moc"
diff --git a/tests/auto/widgets/itemviews/qlistwidget/tst_qlistwidget.cpp b/tests/auto/widgets/itemviews/qlistwidget/tst_qlistwidget.cpp
index e8bd86bee5..f8ab64e4d6 100644
--- a/tests/auto/widgets/itemviews/qlistwidget/tst_qlistwidget.cpp
+++ b/tests/auto/widgets/itemviews/qlistwidget/tst_qlistwidget.cpp
@@ -1672,16 +1672,16 @@ void tst_QListWidget::mimeData()
QMimeData *data;
- QVERIFY(data = list.mimeData(tableWidgetItemList));
+ QVERIFY((data = list.mimeData(tableWidgetItemList)));
delete data;
- QVERIFY(data = list.model()->mimeData(modelIndexList));
+ QVERIFY((data = list.model()->mimeData(modelIndexList)));
delete data;
- QVERIFY(data = list.model()->mimeData(modelIndexList));
+ QVERIFY((data = list.model()->mimeData(modelIndexList)));
delete data;
- QVERIFY(data = list.mimeData(tableWidgetItemList));
+ QVERIFY((data = list.mimeData(tableWidgetItemList)));
delete data;
// check the saved data is actually the same
diff --git a/tests/auto/widgets/itemviews/qtablewidget/tst_qtablewidget.cpp b/tests/auto/widgets/itemviews/qtablewidget/tst_qtablewidget.cpp
index 8f871b03f6..a86ffbc30d 100644
--- a/tests/auto/widgets/itemviews/qtablewidget/tst_qtablewidget.cpp
+++ b/tests/auto/widgets/itemviews/qtablewidget/tst_qtablewidget.cpp
@@ -1520,16 +1520,16 @@ void tst_QTableWidget::mimeData()
QMimeData *data;
- QVERIFY(data = table.mimeData(tableWidgetItemList));
+ QVERIFY((data = table.mimeData(tableWidgetItemList)));
delete data;
- QVERIFY(data = table.model()->mimeData(modelIndexList));
+ QVERIFY((data = table.model()->mimeData(modelIndexList)));
delete data;
- QVERIFY(data = table.model()->mimeData(modelIndexList));
+ QVERIFY((data = table.model()->mimeData(modelIndexList)));
delete data;
- QVERIFY(data = table.mimeData(tableWidgetItemList));
+ QVERIFY((data = table.mimeData(tableWidgetItemList)));
delete data;
// check the saved data is actually the same
diff --git a/tests/auto/widgets/kernel/qaction/tst_qaction.cpp b/tests/auto/widgets/kernel/qaction/tst_qaction.cpp
index 205067d89c..e6a615d4f5 100644
--- a/tests/auto/widgets/kernel/qaction/tst_qaction.cpp
+++ b/tests/auto/widgets/kernel/qaction/tst_qaction.cpp
@@ -324,7 +324,7 @@ void tst_QAction::enabledVisibleInteraction()
void tst_QAction::task200823_tooltip()
{
- QAction *action = new QAction("foo", 0);
+ const QScopedPointer<QAction> action(new QAction("foo", Q_NULLPTR));
QString shortcut("ctrl+o");
action->setShortcut(shortcut);
@@ -338,8 +338,8 @@ void tst_QAction::task200823_tooltip()
void tst_QAction::task229128TriggeredSignalWithoutActiongroup()
{
// test without a group
- QAction *actionWithoutGroup = new QAction("Test", qApp);
- QSignalSpy spyWithoutGroup(actionWithoutGroup, SIGNAL(triggered(bool)));
+ const QScopedPointer<QAction> actionWithoutGroup(new QAction("Test", Q_NULLPTR));
+ QSignalSpy spyWithoutGroup(actionWithoutGroup.data(), SIGNAL(triggered(bool)));
QCOMPARE(spyWithoutGroup.count(), 0);
actionWithoutGroup->trigger();
// signal should be emitted
diff --git a/tests/auto/widgets/kernel/qapplication/tst_qapplication.cpp b/tests/auto/widgets/kernel/qapplication/tst_qapplication.cpp
index ab9729342c..779773eff0 100644
--- a/tests/auto/widgets/kernel/qapplication/tst_qapplication.cpp
+++ b/tests/auto/widgets/kernel/qapplication/tst_qapplication.cpp
@@ -2197,8 +2197,8 @@ void tst_QApplication::noQuitOnHide()
{
int argc = 0;
QApplication app(argc, 0);
- QWidget *window1 = new NoQuitOnHideWidget;
- window1->show();
+ NoQuitOnHideWidget window1;
+ window1.show();
QCOMPARE(app.exec(), 1);
}
@@ -2232,12 +2232,12 @@ void tst_QApplication::abortQuitOnShow()
{
int argc = 0;
QApplication app(argc, 0);
- QWidget *window1 = new ShowCloseShowWidget(false);
- window1->show();
+ ShowCloseShowWidget window1(false);
+ window1.show();
QCOMPARE(app.exec(), 0);
- QWidget *window2 = new ShowCloseShowWidget(true);
- window2->show();
+ ShowCloseShowWidget window2(true);
+ window2.show();
QCOMPARE(app.exec(), 1);
}
diff --git a/tests/auto/widgets/kernel/qformlayout/tst_qformlayout.cpp b/tests/auto/widgets/kernel/qformlayout/tst_qformlayout.cpp
index a19f4aea56..1a15432c1a 100644
--- a/tests/auto/widgets/kernel/qformlayout/tst_qformlayout.cpp
+++ b/tests/auto/widgets/kernel/qformlayout/tst_qformlayout.cpp
@@ -43,6 +43,10 @@
#include <qformlayout.h>
+// ItemRole has enumerators for numerical values 0..2, thus the only
+// valid numerical values for storing into an ItemRole variable are 0..3:
+Q_CONSTEXPR QFormLayout::ItemRole invalidRole = QFormLayout::ItemRole(3);
+
static inline void setFrameless(QWidget *w)
{
Qt::WindowFlags flags = w->windowFlags();
@@ -390,7 +394,8 @@ void tst_QFormLayout::setFormStyle()
QCOMPARE(layout.rowWrapPolicy(), QFormLayout::DontWrapRows);
#endif
- widget.setStyle(QStyleFactory::create("windows"));
+ const QScopedPointer<QStyle> windowsStyle(QStyleFactory::create("windows"));
+ widget.setStyle(windowsStyle.data());
QCOMPARE(layout.labelAlignment(), Qt::AlignLeft);
QVERIFY(layout.formAlignment() == (Qt::AlignLeft | Qt::AlignTop));
@@ -401,14 +406,16 @@ void tst_QFormLayout::setFormStyle()
this test is cross platform.. so create dummy styles that
return all the right stylehints.
*/
- widget.setStyle(new DummyMacStyle());
+ DummyMacStyle macStyle;
+ widget.setStyle(&macStyle);
QCOMPARE(layout.labelAlignment(), Qt::AlignRight);
QVERIFY(layout.formAlignment() == (Qt::AlignHCenter | Qt::AlignTop));
QCOMPARE(layout.fieldGrowthPolicy(), QFormLayout::FieldsStayAtSizeHint);
QCOMPARE(layout.rowWrapPolicy(), QFormLayout::DontWrapRows);
- widget.setStyle(new DummyQtopiaStyle());
+ DummyQtopiaStyle qtopiaStyle;
+ widget.setStyle(&qtopiaStyle);
QCOMPARE(layout.labelAlignment(), Qt::AlignRight);
QVERIFY(layout.formAlignment() == (Qt::AlignLeft | Qt::AlignTop));
@@ -520,7 +527,7 @@ void tst_QFormLayout::insertRow_QWidget_QWidget()
{
int row = -1;
- QFormLayout::ItemRole role = QFormLayout::ItemRole(-123);
+ QFormLayout::ItemRole role = invalidRole;
layout->getWidgetPosition(lbl1, &row, &role);
QCOMPARE(row, 0);
QCOMPARE(int(role), int(QFormLayout::LabelRole));
@@ -528,7 +535,7 @@ void tst_QFormLayout::insertRow_QWidget_QWidget()
{
int row = -1;
- QFormLayout::ItemRole role = QFormLayout::ItemRole(-123);
+ QFormLayout::ItemRole role = invalidRole;
layout->getWidgetPosition(fld1, &row, &role);
QCOMPARE(row, 0);
QCOMPARE(int(role), int(QFormLayout::FieldRole));
@@ -589,7 +596,7 @@ void tst_QFormLayout::insertRow_QWidget_QLayout()
{
int row = -1;
- QFormLayout::ItemRole role = QFormLayout::ItemRole(-123);
+ QFormLayout::ItemRole role = invalidRole;
layout->getWidgetPosition(lbl1, &row, &role);
QCOMPARE(row, 0);
QCOMPARE(int(role), int(QFormLayout::LabelRole));
@@ -597,7 +604,7 @@ void tst_QFormLayout::insertRow_QWidget_QLayout()
{
int row = -1;
- QFormLayout::ItemRole role = QFormLayout::ItemRole(-123);
+ QFormLayout::ItemRole role = invalidRole;
layout->getLayoutPosition(fld1, &row, &role);
QCOMPARE(row, 0);
QCOMPARE(int(role), int(QFormLayout::FieldRole));
@@ -714,7 +721,7 @@ void tst_QFormLayout::setWidget()
{
int row = -1;
- QFormLayout::ItemRole role = QFormLayout::ItemRole(-123);
+ QFormLayout::ItemRole role = invalidRole;
layout.getWidgetPosition(&w1, &row, &role);
QCOMPARE(row, 5);
QCOMPARE(int(role), int(QFormLayout::LabelRole));
@@ -722,7 +729,7 @@ void tst_QFormLayout::setWidget()
{
int row = -1;
- QFormLayout::ItemRole role = QFormLayout::ItemRole(-123);
+ QFormLayout::ItemRole role = invalidRole;
layout.getWidgetPosition(&w2, &row, &role);
QCOMPARE(row, 3);
QCOMPARE(int(role), int(QFormLayout::FieldRole));
@@ -730,7 +737,7 @@ void tst_QFormLayout::setWidget()
{
int row = -1;
- QFormLayout::ItemRole role = QFormLayout::ItemRole(-123);
+ QFormLayout::ItemRole role = invalidRole;
layout.getWidgetPosition(&w3, &row, &role);
QCOMPARE(row, 3);
QCOMPARE(int(role), int(QFormLayout::LabelRole));
@@ -738,18 +745,20 @@ void tst_QFormLayout::setWidget()
{
int row = -1;
- QFormLayout::ItemRole role = QFormLayout::ItemRole(-123);
+ QFormLayout::ItemRole role = invalidRole;
layout.getWidgetPosition(&w4, &row, &role);
+ // not found
QCOMPARE(row, -1);
- QCOMPARE(int(role), -123);
+ QCOMPARE(int(role), int(invalidRole));
}
{
int row = -1;
- QFormLayout::ItemRole role = QFormLayout::ItemRole(-123);
+ QFormLayout::ItemRole role = invalidRole;
layout.getWidgetPosition(0, &row, &role);
+ // not found
QCOMPARE(row, -1);
- QCOMPARE(int(role), -123);
+ QCOMPARE(int(role), int(invalidRole));
}
}
@@ -782,7 +791,7 @@ void tst_QFormLayout::setLayout()
{
int row = -1;
- QFormLayout::ItemRole role = QFormLayout::ItemRole(-123);
+ QFormLayout::ItemRole role = invalidRole;
layout.getLayoutPosition(&l1, &row, &role);
QCOMPARE(row, 5);
QCOMPARE(int(role), int(QFormLayout::LabelRole));
@@ -790,7 +799,7 @@ void tst_QFormLayout::setLayout()
{
int row = -1;
- QFormLayout::ItemRole role = QFormLayout::ItemRole(-123);
+ QFormLayout::ItemRole role = invalidRole;
layout.getLayoutPosition(&l2, &row, &role);
QCOMPARE(row, 3);
QCOMPARE(int(role), int(QFormLayout::FieldRole));
@@ -798,7 +807,7 @@ void tst_QFormLayout::setLayout()
{
int row = -1;
- QFormLayout::ItemRole role = QFormLayout::ItemRole(-123);
+ QFormLayout::ItemRole role = invalidRole;
layout.getLayoutPosition(&l3, &row, &role);
QCOMPARE(row, 3);
QCOMPARE(int(role), int(QFormLayout::LabelRole));
@@ -806,18 +815,18 @@ void tst_QFormLayout::setLayout()
{
int row = -1;
- QFormLayout::ItemRole role = QFormLayout::ItemRole(-123);
+ QFormLayout::ItemRole role = invalidRole;
layout.getLayoutPosition(&l4, &row, &role);
QCOMPARE(row, -1);
- QCOMPARE(int(role), -123);
+ QCOMPARE(int(role), int(invalidRole));
}
{
int row = -1;
- QFormLayout::ItemRole role = QFormLayout::ItemRole(-123);
+ QFormLayout::ItemRole role = invalidRole;
layout.getLayoutPosition(0, &row, &role);
QCOMPARE(row, -1);
- QCOMPARE(int(role), -123);
+ QCOMPARE(int(role), int(invalidRole));
}
}
@@ -886,7 +895,7 @@ void tst_QFormLayout::takeAt()
QCOMPARE(layout->count(), 7);
for (int i = 6; i >= 0; --i) {
- layout->takeAt(0);
+ delete layout->takeAt(0);
QCOMPARE(layout->count(), i);
}
}
@@ -978,7 +987,7 @@ void tst_QFormLayout::replaceWidget()
QFormLayout::ItemRole role;
// replace editor
- layout->replaceWidget(edit1, edit3);
+ delete layout->replaceWidget(edit1, edit3);
edit1->hide(); // Not strictly needed for the test, but for normal usage it is.
QCOMPARE(layout->indexOf(edit1), -1);
QCOMPARE(layout->indexOf(edit3), editIndex);
@@ -989,7 +998,7 @@ void tst_QFormLayout::replaceWidget()
QCOMPARE(rownum, 0);
QCOMPARE(role, QFormLayout::FieldRole);
- layout->replaceWidget(label1, label2);
+ delete layout->replaceWidget(label1, label2);
label1->hide();
QCOMPARE(layout->indexOf(label1), -1);
QCOMPARE(layout->indexOf(label2), labelIndex);
diff --git a/tests/auto/widgets/kernel/qshortcut/tst_qshortcut.cpp b/tests/auto/widgets/kernel/qshortcut/tst_qshortcut.cpp
index 55b0ed4279..62c75cadf3 100644
--- a/tests/auto/widgets/kernel/qshortcut/tst_qshortcut.cpp
+++ b/tests/auto/widgets/kernel/qshortcut/tst_qshortcut.cpp
@@ -1207,7 +1207,8 @@ QShortcut *tst_QShortcut::setupShortcut(QWidget *parent, const char *name, int t
void tst_QShortcut::shortcutDestroyed(QObject* obj)
{
- shortcuts.removeAll(static_cast<QShortcut *>(obj));
+ shortcuts.erase(std::remove(shortcuts.begin(), shortcuts.end(), obj),
+ shortcuts.end());
}
void tst_QShortcut::sendKeyEvents(int k1, QChar c1, int k2, QChar c2, int k3, QChar c3, int k4, QChar c4)
diff --git a/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp b/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp
index 272e6ef02f..5a00b0dad9 100644
--- a/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp
+++ b/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp
@@ -10425,14 +10425,13 @@ public slots:
bool eventFilter(QObject *o, QEvent *e)
{
- if (modal && modal->button && o == modal->button) {
- switch (e->type()) {
- case QEvent::Enter:
+ switch (e->type()) {
+ case QEvent::Enter:
+ if (modal && modal->button && o == modal->button)
enters++;
- break;
- default:
- break;
- }
+ break;
+ default:
+ break;
}
return QDialog::eventFilter(o, e);
}
diff --git a/tests/auto/widgets/widgets/qdatetimeedit/tst_qdatetimeedit.cpp b/tests/auto/widgets/widgets/qdatetimeedit/tst_qdatetimeedit.cpp
index 31eb05a957..9e09d17903 100644
--- a/tests/auto/widgets/widgets/qdatetimeedit/tst_qdatetimeedit.cpp
+++ b/tests/auto/widgets/widgets/qdatetimeedit/tst_qdatetimeedit.cpp
@@ -3734,7 +3734,7 @@ void tst_QDateTimeEdit::dateEditCorrectSectionSize()
QTest::keyClick(&edit, keyPair.first, keyPair.second);
QDateTimeEditPrivate* edit_d_ptr(static_cast<QDateTimeEditPrivate*>(qt_widget_private(&edit)));
- QCOMPARE(edit_d_ptr->text, expectedDisplayString);
+ QCOMPARE(edit_d_ptr->QDateTimeParser::displayText(), expectedDisplayString);
}
#endif
diff --git a/tests/auto/widgets/widgets/qlabel/red@2x.png b/tests/auto/widgets/widgets/qlabel/red@2x.png
new file mode 100644
index 0000000000..4a843e744f
--- /dev/null
+++ b/tests/auto/widgets/widgets/qlabel/red@2x.png
Binary files differ
diff --git a/tests/auto/widgets/widgets/qlabel/tst_qlabel.cpp b/tests/auto/widgets/widgets/qlabel/tst_qlabel.cpp
index ad971c6b5f..6363d0c673 100644
--- a/tests/auto/widgets/widgets/qlabel/tst_qlabel.cpp
+++ b/tests/auto/widgets/widgets/qlabel/tst_qlabel.cpp
@@ -96,6 +96,9 @@ private Q_SLOTS:
void taskQTBUG_7902_contextMenuCrash();
#endif
+ void taskQTBUG_48157_dprPixmap();
+ void taskQTBUG_48157_dprMovie();
+
private:
QLabel *testWidget;
QPointer<Widget> test_box;
@@ -541,5 +544,26 @@ void tst_QLabel::taskQTBUG_7902_contextMenuCrash()
}
#endif
+void tst_QLabel::taskQTBUG_48157_dprPixmap()
+{
+ QLabel label;
+ QPixmap pixmap;
+ pixmap.load(QFINDTESTDATA(QStringLiteral("red@2x.png")));
+ QCOMPARE(pixmap.devicePixelRatio(), 2.0);
+ label.setPixmap(pixmap);
+ QCOMPARE(label.sizeHint(), pixmap.rect().size() / pixmap.devicePixelRatio());
+}
+
+void tst_QLabel::taskQTBUG_48157_dprMovie()
+{
+ QLabel label;
+ QMovie movie;
+ movie.setFileName(QFINDTESTDATA(QStringLiteral("red@2x.png")));
+ movie.start();
+ QCOMPARE(movie.currentPixmap().devicePixelRatio(), 2.0);
+ label.setMovie(&movie);
+ QCOMPARE(label.sizeHint(), movie.currentPixmap().size() / movie.currentPixmap().devicePixelRatio());
+}
+
QTEST_MAIN(tst_QLabel)
#include "tst_qlabel.moc"
diff --git a/tests/auto/widgets/widgets/qmainwindow/tst_qmainwindow.cpp b/tests/auto/widgets/widgets/qmainwindow/tst_qmainwindow.cpp
index 5bd26c632c..6ee5f76c6a 100644
--- a/tests/auto/widgets/widgets/qmainwindow/tst_qmainwindow.cpp
+++ b/tests/auto/widgets/widgets/qmainwindow/tst_qmainwindow.cpp
@@ -859,6 +859,10 @@ void tst_QMainWindow::takeCentralWidget() {
QVERIFY(!mw.centralWidget());
+ // verify that we don't crash when trying to take a non-set
+ // central widget but just return a null pointer instead
+ QVERIFY(!mw.takeCentralWidget());
+
mw.setCentralWidget(w1);
QWidget *oldCentralWidget = mw.takeCentralWidget();
diff --git a/tests/auto/widgets/widgets/qmenubar/qmenubar.pro b/tests/auto/widgets/widgets/qmenubar/qmenubar.pro
index 3fb6ae61a8..e680cf4d7d 100644
--- a/tests/auto/widgets/widgets/qmenubar/qmenubar.pro
+++ b/tests/auto/widgets/widgets/qmenubar/qmenubar.pro
@@ -2,3 +2,8 @@ CONFIG += testcase
TARGET = tst_qmenubar
QT += widgets testlib
SOURCES += tst_qmenubar.cpp
+
+macos: {
+ OBJECTIVE_SOURCES += tst_qmenubar_mac.mm
+ LIBS += -framework AppKit
+}
diff --git a/tests/auto/widgets/widgets/qmenubar/tst_qmenubar.cpp b/tests/auto/widgets/widgets/qmenubar/tst_qmenubar.cpp
index 185bfc02a0..9a68655fb6 100644
--- a/tests/auto/widgets/widgets/qmenubar/tst_qmenubar.cpp
+++ b/tests/auto/widgets/widgets/qmenubar/tst_qmenubar.cpp
@@ -130,6 +130,9 @@ private slots:
void cornerWidgets_data();
void cornerWidgets();
void taskQTBUG53205_crashReparentNested();
+#ifdef Q_OS_MACOS
+ void taskQTBUG56275_reinsertMenuInParentlessQMenuBar();
+#endif
protected slots:
void onSimpleActivated( QAction*);
@@ -1496,7 +1499,28 @@ void tst_QMenuBar::slotForTaskQTBUG53205()
taskQTBUG53205MenuBar->setParent(parent);
}
+#ifdef Q_OS_MACOS
+extern bool tst_qmenubar_taskQTBUG56275(QMenuBar *);
+
+void tst_QMenuBar::taskQTBUG56275_reinsertMenuInParentlessQMenuBar()
+{
+ QMenuBar menubar;
+ QMenu *menu = new QMenu("menu", &menubar);
+ QMenu* submenu = menu->addMenu("submenu");
+ submenu->addAction("action1");
+ submenu->addAction("action2");
+ menu->addAction("action3");
+ menubar.addMenu(menu);
+
+ QTest::qWait(100);
+ menubar.clear();
+ menubar.addMenu(menu);
+ QTest::qWait(100);
+
+ QVERIFY(tst_qmenubar_taskQTBUG56275(&menubar));
+}
+#endif // Q_OS_MACOS
QTEST_MAIN(tst_QMenuBar)
#include "tst_qmenubar.moc"
diff --git a/tests/auto/widgets/widgets/qmenubar/tst_qmenubar_mac.mm b/tests/auto/widgets/widgets/qmenubar/tst_qmenubar_mac.mm
new file mode 100644
index 0000000000..4645de4d7a
--- /dev/null
+++ b/tests/auto/widgets/widgets/qmenubar/tst_qmenubar_mac.mm
@@ -0,0 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2016 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL21$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see http://www.qt.io/terms-conditions. For further
+** information use the contact form at http://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 or version 3 as published by the Free
+** Software Foundation and appearing in the file LICENSE.LGPLv21 and
+** LICENSE.LGPLv3 included in the packaging of this file. Please review the
+** following information to ensure the GNU Lesser General Public License
+** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** As a special exception, The Qt Company gives you certain additional
+** rights. These rights are described in The Qt Company LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#import <Cocoa/Cocoa.h>
+
+#include <QMenuBar>
+#include <QTest>
+
+bool tst_qmenubar_taskQTBUG56275(QMenuBar *menubar)
+{
+ NSMenu *mainMenu = menubar->toNSMenu();
+ return mainMenu.numberOfItems == 2
+ && [[mainMenu itemAtIndex:1].title isEqualToString:@"menu"];
+}
diff --git a/tests/auto/widgets/widgets/qstackedwidget/tst_qstackedwidget.cpp b/tests/auto/widgets/widgets/qstackedwidget/tst_qstackedwidget.cpp
index 7b5ec4fa4c..2df5f01627 100644
--- a/tests/auto/widgets/widgets/qstackedwidget/tst_qstackedwidget.cpp
+++ b/tests/auto/widgets/widgets/qstackedwidget/tst_qstackedwidget.cpp
@@ -163,7 +163,8 @@ private:
void tst_QStackedWidget::dynamicPages()
{
- QStackedWidget *sw = new QStackedWidget;
+ QStackedWidget stackedWidget;
+ QStackedWidget *sw = &stackedWidget;
TestPage *w1 = new TestPage(true);
w1->setN(3);
diff --git a/tests/auto/xml/sax/qxmlsimplereader/tst_qxmlsimplereader.cpp b/tests/auto/xml/sax/qxmlsimplereader/tst_qxmlsimplereader.cpp
index 5d5e00ac42..b591112bd1 100644
--- a/tests/auto/xml/sax/qxmlsimplereader/tst_qxmlsimplereader.cpp
+++ b/tests/auto/xml/sax/qxmlsimplereader/tst_qxmlsimplereader.cpp
@@ -760,22 +760,22 @@ void tst_QXmlSimpleReader::dtdRecursionLimit()
QVERIFY(file.open(QIODevice::ReadOnly));
QXmlSimpleReader xmlReader;
{
- QXmlInputSource *source = new QXmlInputSource(&file);
+ QXmlInputSource source(&file);
TestHandler handler;
xmlReader.setDeclHandler(&handler);
xmlReader.setErrorHandler(&handler);
- QVERIFY(!xmlReader.parse(source));
+ QVERIFY(!xmlReader.parse(&source));
}
file.close();
file.setFileName("xmldocs/1-levels-nested-dtd.xml");
QVERIFY(file.open(QIODevice::ReadOnly));
{
- QXmlInputSource *source = new QXmlInputSource(&file);
+ QXmlInputSource source(&file);
TestHandler handler;
xmlReader.setDeclHandler(&handler);
xmlReader.setErrorHandler(&handler);
- QVERIFY(!xmlReader.parse(source));
+ QVERIFY(!xmlReader.parse(&source));
// The error wasn't because of the recursion limit being reached,
// it was because the document is not valid.
QVERIFY(handler.recursionCount < 2);
@@ -785,11 +785,11 @@ void tst_QXmlSimpleReader::dtdRecursionLimit()
file.setFileName("xmldocs/internal-entity-polynomial-attribute.xml");
QVERIFY(file.open(QIODevice::ReadOnly));
{
- QXmlInputSource *source = new QXmlInputSource(&file);
+ QXmlInputSource source(&file);
TestHandler handler;
xmlReader.setDeclHandler(&handler);
xmlReader.setErrorHandler(&handler);
- QVERIFY(!xmlReader.parse(source));
+ QVERIFY(!xmlReader.parse(&source));
QCOMPARE(handler.recursionCount, 2);
}
}
diff --git a/tests/manual/qcursor/childwidget/childwidget.pro b/tests/manual/qcursor/childwidget/childwidget.pro
new file mode 100644
index 0000000000..9ca41c5b4f
--- /dev/null
+++ b/tests/manual/qcursor/childwidget/childwidget.pro
@@ -0,0 +1,6 @@
+TEMPLATE = app
+TARGET = childwidget
+INCLUDEPATH += .
+QT += widgets
+
+SOURCES += main.cpp
diff --git a/tests/manual/qcursor/childwidget/main.cpp b/tests/manual/qcursor/childwidget/main.cpp
new file mode 100644
index 0000000000..4447c87210
--- /dev/null
+++ b/tests/manual/qcursor/childwidget/main.cpp
@@ -0,0 +1,92 @@
+/****************************************************************************
+**
+** Copyright (C) 2016 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL21$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see http://www.qt.io/terms-conditions. For further
+** information use the contact form at http://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 or version 3 as published by the Free
+** Software Foundation and appearing in the file LICENSE.LGPLv21 and
+** LICENSE.LGPLv3 included in the packaging of this file. Please review the
+** following information to ensure the GNU Lesser General Public License
+** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** As a special exception, The Qt Company gives you certain additional
+** rights. These rights are described in The Qt Company LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <QtWidgets>
+
+class CursorWidget : public QWidget
+{
+public:
+ CursorWidget(QCursor cursor, QColor color)
+ :m_cursor(cursor)
+ ,m_color(color)
+ {
+ if (cursor.shape() == Qt::ArrowCursor)
+ unsetCursor();
+ else
+ setCursor(cursor);
+ }
+
+ void paintEvent(QPaintEvent *e)
+ {
+ QPainter p(this);
+ p.fillRect(e->rect(), m_color);
+ }
+
+ void mousePressEvent(QMouseEvent *)
+ {
+ // Toggle cursor
+ QCursor newCursor = (cursor().shape() == m_cursor.shape()) ? QCursor() : m_cursor;
+ if (newCursor.shape() == Qt::ArrowCursor)
+ unsetCursor();
+ else
+ setCursor(newCursor);
+ }
+
+private:
+ QCursor m_cursor;
+ QColor m_color;
+};
+
+int main(int argc, char **argv)
+{
+ QApplication app(argc, argv);
+
+ // Test child widgets (one of which is native) with set cursors.
+ // Click window to toggle cursor.
+
+ CursorWidget w1((QCursor(Qt::SizeVerCursor)), QColor(Qt::blue).darker());
+ w1.resize(200, 200);
+ w1.show();
+
+ CursorWidget w2((QCursor(Qt::OpenHandCursor)), QColor(Qt::red).darker());
+ w2.setParent(&w1);
+ w2.setGeometry(0, 0, 100, 100);
+ w2.show();
+
+ CursorWidget w3((QCursor(Qt::IBeamCursor)), QColor(Qt::green).darker());
+ w3.winId();
+ w3.setParent(&w1);
+ w3.setGeometry(100, 100, 100, 100);
+ w3.show();
+
+ return app.exec();
+}
diff --git a/tests/manual/qcursor/childwindow/childwindow.pro b/tests/manual/qcursor/childwindow/childwindow.pro
new file mode 100644
index 0000000000..194536a91a
--- /dev/null
+++ b/tests/manual/qcursor/childwindow/childwindow.pro
@@ -0,0 +1,5 @@
+TEMPLATE = app
+TARGET = childwindow
+INCLUDEPATH += .
+
+SOURCES += main.cpp
diff --git a/tests/manual/qcursor/childwindow/main.cpp b/tests/manual/qcursor/childwindow/main.cpp
new file mode 100644
index 0000000000..5fc293dfcf
--- /dev/null
+++ b/tests/manual/qcursor/childwindow/main.cpp
@@ -0,0 +1,91 @@
+/****************************************************************************
+**
+** Copyright (C) 2016 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL21$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see http://www.qt.io/terms-conditions. For further
+** information use the contact form at http://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 or version 3 as published by the Free
+** Software Foundation and appearing in the file LICENSE.LGPLv21 and
+** LICENSE.LGPLv3 included in the packaging of this file. Please review the
+** following information to ensure the GNU Lesser General Public License
+** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** As a special exception, The Qt Company gives you certain additional
+** rights. These rights are described in The Qt Company LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <QtGui>
+
+class CursorWindow : public QRasterWindow
+{
+public:
+ CursorWindow(QCursor cursor, QColor color)
+ :m_cursor(cursor)
+ ,m_color(color)
+ {
+ if (cursor.shape() == Qt::ArrowCursor)
+ unsetCursor();
+ else
+ setCursor(cursor);
+ }
+
+ void paintEvent(QPaintEvent *e)
+ {
+ QPainter p(this);
+ p.fillRect(e->rect(), m_color);
+ }
+
+ void mousePressEvent(QMouseEvent *)
+ {
+ // Toggle cursor
+ QCursor newCursor = (cursor().shape() == m_cursor.shape()) ? QCursor() : m_cursor;
+ if (newCursor.shape() == Qt::ArrowCursor)
+ unsetCursor();
+ else
+ setCursor(newCursor);
+ }
+
+private:
+ QCursor m_cursor;
+ QColor m_color;
+};
+
+int main(int argc, char **argv)
+{
+ QGuiApplication app(argc, argv);
+
+ // Test child windows with set cursors. Create parent window and
+ // two child windows. Click window to toggle cursor.
+
+ CursorWindow w1((QCursor(Qt::SizeVerCursor)), QColor(Qt::blue).darker());
+ w1.resize(200, 200);
+ w1.show();
+
+ CursorWindow w2((QCursor(Qt::OpenHandCursor)), QColor(Qt::red).darker());
+ w2.setParent(&w1);
+ w2.setGeometry(0, 0, 100, 100);
+ w2.show();
+
+ CursorWindow w3((QCursor(Qt::IBeamCursor)), QColor(Qt::green).darker());
+ w3.setParent(&w1);
+ w3.setGeometry(100, 100, 100, 100);
+ w3.show();
+
+ return app.exec();
+}
diff --git a/tests/manual/qcursor/childwindowcontainer/childwindowcontainer.pro b/tests/manual/qcursor/childwindowcontainer/childwindowcontainer.pro
new file mode 100644
index 0000000000..2233ce4a63
--- /dev/null
+++ b/tests/manual/qcursor/childwindowcontainer/childwindowcontainer.pro
@@ -0,0 +1,6 @@
+TEMPLATE = app
+TARGET = childwindowcontainer
+INCLUDEPATH += .
+QT += widgets
+
+SOURCES += main.cpp
diff --git a/tests/manual/qcursor/childwindowcontainer/main.cpp b/tests/manual/qcursor/childwindowcontainer/main.cpp
new file mode 100644
index 0000000000..d440133a42
--- /dev/null
+++ b/tests/manual/qcursor/childwindowcontainer/main.cpp
@@ -0,0 +1,138 @@
+/****************************************************************************
+**
+** Copyright (C) 2016 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL21$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see http://www.qt.io/terms-conditions. For further
+** information use the contact form at http://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 or version 3 as published by the Free
+** Software Foundation and appearing in the file LICENSE.LGPLv21 and
+** LICENSE.LGPLv3 included in the packaging of this file. Please review the
+** following information to ensure the GNU Lesser General Public License
+** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** As a special exception, The Qt Company gives you certain additional
+** rights. These rights are described in The Qt Company LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <QtWidgets>
+
+class CursorWindow : public QRasterWindow
+{
+public:
+ CursorWindow(QCursor cursor, QColor color)
+ :m_cursor(cursor)
+ ,m_color(color)
+ {
+ if (cursor.shape() == Qt::ArrowCursor)
+ unsetCursor();
+ else
+ setCursor(cursor);
+ }
+
+ void paintEvent(QPaintEvent *e)
+ {
+ QPainter p(this);
+ p.fillRect(e->rect(), m_color);
+ }
+
+ void mousePressEvent(QMouseEvent *)
+ {
+ // Toggle cursor
+ QCursor newCursor = (cursor().shape() == m_cursor.shape()) ? QCursor() : m_cursor;
+ if (newCursor.shape() == Qt::ArrowCursor)
+ unsetCursor();
+ else
+ setCursor(newCursor);
+ }
+
+private:
+ QCursor m_cursor;
+ QColor m_color;
+};
+
+class CursorWidget : public QWidget
+{
+public:
+ CursorWidget(QCursor cursor, QColor color)
+ :m_cursor(cursor)
+ ,m_color(color)
+ {
+ if (cursor.shape() == Qt::ArrowCursor)
+ unsetCursor();
+ else
+ setCursor(cursor);
+ }
+
+ void paintEvent(QPaintEvent *e)
+ {
+ QPainter p(this);
+ p.fillRect(e->rect(), m_color);
+ }
+
+ void mousePressEvent(QMouseEvent *)
+ {
+ // Toggle cursor
+ QCursor newCursor = (cursor().shape() == m_cursor.shape()) ? QCursor() : m_cursor;
+ if (newCursor.shape() == Qt::ArrowCursor)
+ unsetCursor();
+ else
+ setCursor(newCursor);
+ }
+
+private:
+ QCursor m_cursor;
+ QColor m_color;
+};
+
+int main(int argc, char **argv)
+{
+ QApplication app(argc, argv);
+
+ {
+ // Create top-level windowContainer with window. Setting the cursor
+ // for the container should set the cursor for the window as well.
+ // Setting the cursor for the window overrides the cursor for the
+ // container. The example starts out with a window cursor; click
+ // to fall back to the container cursor.
+ CursorWindow *w1 = new CursorWindow(QCursor(Qt::OpenHandCursor), QColor(Qt::red).darker());
+ QWidget* container = QWidget::createWindowContainer(w1);
+ container->resize(200, 200);
+ container->setCursor(Qt::PointingHandCursor);
+ container->show();
+ }
+
+ {
+ // Similar to above, but with a top-level QWiget
+ CursorWidget *w1 = new CursorWidget(QCursor(Qt::IBeamCursor), QColor(Qt::green).darker());
+ w1->resize(200, 200);
+
+ CursorWindow *w2 = new CursorWindow(QCursor(Qt::OpenHandCursor), QColor(Qt::red).darker());
+ QWidget* container = QWidget::createWindowContainer(w2);
+ container->winId(); // must make the container native, otherwise setCursor
+ // sets the cursor on a QWindowContainerClassWindow which
+ // is outside the QWindow hierarchy (macOS).
+ container->setParent(w1);
+ container->setCursor(Qt::PointingHandCursor);
+ container->setGeometry(0, 0, 100, 100);
+
+ w1->show();
+ }
+
+ return app.exec();
+}
diff --git a/tests/manual/qcursor/qcursor.pro b/tests/manual/qcursor/qcursor.pro
index 0b5c2b1945..c6617b8e89 100644
--- a/tests/manual/qcursor/qcursor.pro
+++ b/tests/manual/qcursor/qcursor.pro
@@ -1,3 +1,3 @@
TEMPLATE = subdirs
-SUBDIRS = allcursors grab_override qcursorhighdpi
+SUBDIRS = allcursors childwidget childwindow childwindowcontainer grab_override qcursorhighdpi