diff options
56 files changed, 327 insertions, 1467 deletions
diff --git a/doc/src/declarative/advtutorial.qdoc b/doc/src/declarative/advtutorial.qdoc index 3a70eee..751bf00 100644 --- a/doc/src/declarative/advtutorial.qdoc +++ b/doc/src/declarative/advtutorial.qdoc @@ -46,27 +46,34 @@ \nextpage QML Advanced Tutorial 1 - Creating the Game Canvas and Blocks This tutorial walks step-by-step through the creation of a full application using QML. +It assumes that you already know the basics of QML (for example, from reading the +\l{QML Tutorial}{simple tutorial}). -It is assumed that you already know the basics of QML (for example, from reading the \l{QML Tutorial}{simple tutorial}) and this -tutorial focuses on using that knowledge to produce a complete and functioning application. +In this tutorial we write a game, \e {Same Game}, based on the Same Game application +included in the declarative \c demos directory, which looks like this: -The tutorial involves a significant amount of JavaScript to implement the game logic. An understanding of JavaScript is helpful to understand parts of this tutorial, but if you don't understand JavaScript you can still get a feel for how you can integrate backend logic to create and control QML elements. From the QML perspective, there is little difference between integrating QML with backend logic written in C++ and backend logic written in JavaScript. +\image declarative-samegame.png -In this tutorial we recreate, step by step, a version of the Same Game demo in $QTDIR/demos/declarative/samegame.qml. -The results of the individual steps are in the $QTDIR/examples/declarative/tutorials/samegame directory. +We will cover concepts for producing a fully functioning application, including +JavaScript integration, using QML \l States and \l {Behavior}{Behaviors} to +manage components and enhance your interface, and storing persistent application data. + +An understanding of JavaScript is helpful to understand parts of this tutorial, but if you don't +know JavaScript you can still get a feel for how you can integrate backend logic to create and +control QML elements. -The Same Game demo has been extended since this tutorial was written. This tutorial only covers the version in -the $QTDIR/examples/declarative/tutorials/samegame directory. However once you have completed the tutorial you should be able -to understand the extensions in the most recent Same Game demo, and even extend it yourself. Tutorial chapters: -\list -\o \l {QML Advanced Tutorial 1 - Creating the Game Canvas and Blocks} -\o \l {QML Advanced Tutorial 2 - Populating the Game Canvas} -\o \l {QML Advanced Tutorial 3 - Implementing the Game Logic} -\o \l {QML Advanced Tutorial 4 - Finishing Touches} +\list 1 +\o \l {QML Advanced Tutorial 1 - Creating the Game Canvas and Blocks}{Creating the Game Canvas and Blocks} +\o \l {QML Advanced Tutorial 2 - Populating the Game Canvas}{Populating the Game Canvas}} +\o \l {QML Advanced Tutorial 3 - Implementing the Game Logic}{Implementing the Game Logic} +\o \l {QML Advanced Tutorial 4 - Finishing Touches}{Finishing Touches} \endlist + +All the code in this tutorial can be found in the $QTDIR/examples/declarative/tutorials/samegame +directory. */ /*! diff --git a/doc/src/declarative/codingconventions.qdoc b/doc/src/declarative/codingconventions.qdoc index e1e7871..7ae5cbd 100644 --- a/doc/src/declarative/codingconventions.qdoc +++ b/doc/src/declarative/codingconventions.qdoc @@ -101,7 +101,7 @@ we will write this: \snippet doc/src/snippets/declarative/codingconventions/lists.qml 1 -\section1 Javascript +\section1 Javascript code If the script is a single expression, we recommend writing it inline: diff --git a/doc/src/images/declarative-samegame.png b/doc/src/images/declarative-samegame.png Binary files differnew file mode 100644 index 0000000..2232df2 --- /dev/null +++ b/doc/src/images/declarative-samegame.png diff --git a/src/declarative/graphicsitems/qdeclarativetext.cpp b/src/declarative/graphicsitems/qdeclarativetext.cpp index 3a35dd5..3b39fa4 100644 --- a/src/declarative/graphicsitems/qdeclarativetext.cpp +++ b/src/declarative/graphicsitems/qdeclarativetext.cpp @@ -43,6 +43,7 @@ #include "private/qdeclarativetext_p_p.h" #include <qdeclarativestyledtext_p.h> #include <qdeclarativeinfo.h> +#include <qdeclarativepixmapcache_p.h> #include <QTextLayout> #include <QTextLine> @@ -55,6 +56,50 @@ QT_BEGIN_NAMESPACE +class QTextDocumentWithImageResources : public QTextDocument { + Q_OBJECT + +public: + QTextDocumentWithImageResources(QDeclarativeText *parent) : + QTextDocument(parent), + outstanding(0) + { + } + + int resourcesLoading() const { return outstanding; } + +protected: + QVariant loadResource(int type, const QUrl &name) + { + QUrl url = qmlContext(parent())->resolvedUrl(name); + + if (type == QTextDocument::ImageResource) { + QPixmap pm; + QDeclarativePixmapReply::Status status = QDeclarativePixmapCache::get(url, &pm, 0, true, 0, 0); + if (status == QDeclarativePixmapReply::Ready) + return pm; + if (status != QDeclarativePixmapReply::Error) { + QDeclarativePixmapReply *reply = QDeclarativePixmapCache::request(qmlEngine(parent()), url); + connect(reply, SIGNAL(finished()), this, SLOT(requestFinished())); + outstanding++; + static_cast<QDeclarativeText*>(parent())->reloadWithResources(); + } + } + + return QTextDocument::loadResource(type,url); // The *resolved* URL + } + +private slots: + void requestFinished() + { + outstanding--; + static_cast<QDeclarativeText*>(parent())->reloadWithResources(); + } + +private: + int outstanding; +}; + /*! \qmlclass Text QDeclarativeText \since 4.7 @@ -77,6 +122,9 @@ QT_BEGIN_NAMESPACE The \c elide property can alternatively be used to fit a single line of plain text to a set width. + Note that the \l{Supported HTML Subset} is limited, and that if IMG tags + load remote images, the text reloads (see resourcesLoading). + Text provides read-only text. For editable text, see \l TextEdit. */ @@ -259,11 +307,10 @@ void QDeclarativeText::setText(const QString &n) d->richText = d->format == RichText || (d->format == AutoText && Qt::mightBeRichText(n)); if (d->richText) { - if (!d->doc) { - d->doc = new QTextDocument(this); - d->doc->setDocumentMargin(0); + if (isComponentComplete()) { + d->ensureDoc(); + d->doc->setHtml(n); } - d->doc->setHtml(n); } d->text = n; @@ -550,11 +597,10 @@ void QDeclarativeText::setTextFormat(TextFormat format) d->updateLayout(); d->markImgDirty(); } else if (!wasRich && d->richText) { - if (!d->doc) { - d->doc = new QTextDocument(this); - d->doc->setDocumentMargin(0); + if (isComponentComplete()) { + d->ensureDoc(); + d->doc->setHtml(d->text); } - d->doc->setHtml(d->text); d->updateLayout(); d->markImgDirty(); } @@ -898,6 +944,39 @@ void QDeclarativeTextPrivate::checkImgCache() imgDirty = false; } +void QDeclarativeTextPrivate::ensureDoc() +{ + if (!doc) { + Q_Q(QDeclarativeText); + doc = new QTextDocumentWithImageResources(q); + doc->setDocumentMargin(0); + } +} + +void QDeclarativeText::reloadWithResources() +{ + Q_D(QDeclarativeText); + if (!d->richText) + return; + if (resourcesLoading()!=0) + return; + emit resourcesLoadingChanged(); + d->doc->setHtml(d->text); + d->updateLayout(); + d->markImgDirty(); +} + +/*! + \qmlproperty int Text::resourcesLoading + This property is the number of resources (images) that are being loaded asynchronously. +*/ +int QDeclarativeText::resourcesLoading() const +{ + Q_D(const QDeclarativeText); + return d->doc ? d->doc->resourcesLoading() : 0; +} + + void QDeclarativeText::paint(QPainter *p, const QStyleOptionGraphicsItem *, QWidget *) { Q_D(QDeclarativeText); @@ -1011,6 +1090,10 @@ void QDeclarativeText::componentComplete() Q_D(QDeclarativeText); QDeclarativeItem::componentComplete(); if (d->dirty) { + if (d->richText) { + d->ensureDoc(); + d->doc->setHtml(d->text); + } d->updateLayout(); d->dirty = false; } @@ -1061,4 +1144,7 @@ void QDeclarativeText::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) if (!event->isAccepted()) QDeclarativeItem::mouseReleaseEvent(event); } + QT_END_NAMESPACE + +#include "qdeclarativetext.moc" diff --git a/src/declarative/graphicsitems/qdeclarativetext_p.h b/src/declarative/graphicsitems/qdeclarativetext_p.h index 871c833..fcad898 100644 --- a/src/declarative/graphicsitems/qdeclarativetext_p.h +++ b/src/declarative/graphicsitems/qdeclarativetext_p.h @@ -72,6 +72,7 @@ class Q_DECLARATIVE_EXPORT QDeclarativeText : public QDeclarativeItem Q_PROPERTY(bool wrap READ wrap WRITE setWrap NOTIFY wrapModeChanged) Q_PROPERTY(TextFormat textFormat READ textFormat WRITE setTextFormat NOTIFY textFormatChanged) Q_PROPERTY(TextElideMode elide READ elideMode WRITE setElideMode NOTIFY elideModeChanged) //### elideMode? + Q_PROPERTY(int resourcesLoading READ resourcesLoading NOTIFY resourcesLoadingChanged) public: QDeclarativeText(QDeclarativeItem *parent=0); @@ -138,6 +139,8 @@ public: virtual void componentComplete(); + int resourcesLoading() const; + Q_SIGNALS: void textChanged(const QString &text); void linkActivated(const QString &link); @@ -150,6 +153,7 @@ Q_SIGNALS: void wrapModeChanged(); void textFormatChanged(TextFormat textFormat); void elideModeChanged(TextElideMode mode); + void resourcesLoadingChanged(); protected: void mousePressEvent(QGraphicsSceneMouseEvent *event); @@ -160,6 +164,9 @@ protected: private: Q_DISABLE_COPY(QDeclarativeText) Q_DECLARE_PRIVATE_D(QGraphicsItem::d_ptr.data(), QDeclarativeText) + + friend class QTextDocumentWithImageResources; + void reloadWithResources(); }; QT_END_NAMESPACE diff --git a/src/declarative/graphicsitems/qdeclarativetext_p_p.h b/src/declarative/graphicsitems/qdeclarativetext_p_p.h index cc5a9f2..332f99e 100644 --- a/src/declarative/graphicsitems/qdeclarativetext_p_p.h +++ b/src/declarative/graphicsitems/qdeclarativetext_p_p.h @@ -63,7 +63,7 @@ QT_BEGIN_NAMESPACE class QTextLayout; -class QTextDocument; +class QTextDocumentWithImageResources; class QDeclarativeTextPrivate : public QDeclarativeItemPrivate { @@ -84,6 +84,7 @@ public: ~QDeclarativeTextPrivate(); + void ensureDoc(); void updateSize(); void updateLayout(); void markImgDirty() { @@ -118,7 +119,7 @@ public: bool richText:1; bool singleline:1; bool cache:1; - QTextDocument *doc; + QTextDocumentWithImageResources *doc; QTextLayout layout; QSize cachedLayoutSize; QDeclarativeText::TextFormat format; diff --git a/tests/auto/declarative/.gitignore b/tests/auto/declarative/.gitignore index d937eb4..57608cf 100644 --- a/tests/auto/declarative/.gitignore +++ b/tests/auto/declarative/.gitignore @@ -1,4 +1,5 @@ tst_* !tst_*.* +tst_*.log tst_*.debug tst_*~ diff --git a/tests/auto/declarative/declarative.pro b/tests/auto/declarative/declarative.pro index 5441311..7834650 100644 --- a/tests/auto/declarative/declarative.pro +++ b/tests/auto/declarative/declarative.pro @@ -62,7 +62,7 @@ SUBDIRS += \ qdeclarativexmlhttprequest \ # Cover qdeclarativeimageprovider \ # Cover qdeclarativestyledtext \ # Cover - sql \ # Cover + qdeclarativesqldatabase \ # Cover qmlvisual # Cover contains(QT_CONFIG, webkit) { diff --git a/tests/auto/declarative/qdeclarativemoduleplugin/tst_qdeclarativemoduleplugin.cpp b/tests/auto/declarative/qdeclarativemoduleplugin/tst_qdeclarativemoduleplugin.cpp index 26199d3..6d17acc 100644 --- a/tests/auto/declarative/qdeclarativemoduleplugin/tst_qdeclarativemoduleplugin.cpp +++ b/tests/auto/declarative/qdeclarativemoduleplugin/tst_qdeclarativemoduleplugin.cpp @@ -101,7 +101,6 @@ inline QUrl TEST_FILE(const QString &filename) void tst_qdeclarativemoduleplugin::importsPlugin() { -QSKIP("Fix me", SkipAll); QDeclarativeEngine engine; engine.addImportPath(QLatin1String(SRCDIR) + QDir::separator() + QLatin1String("imports")); QTest::ignoreMessage(QtWarningMsg, "plugin created"); diff --git a/tests/auto/declarative/sql/data/README b/tests/auto/declarative/qdeclarativesqldatabase/data/README index 7efca3a..7efca3a 100644 --- a/tests/auto/declarative/sql/data/README +++ b/tests/auto/declarative/qdeclarativesqldatabase/data/README diff --git a/tests/auto/declarative/sql/data/changeversion.js b/tests/auto/declarative/qdeclarativesqldatabase/data/changeversion.js index 680d7a6..680d7a6 100644 --- a/tests/auto/declarative/sql/data/changeversion.js +++ b/tests/auto/declarative/qdeclarativesqldatabase/data/changeversion.js diff --git a/tests/auto/declarative/sql/data/creation-a.js b/tests/auto/declarative/qdeclarativesqldatabase/data/creation-a.js index bd7d5c5..bd7d5c5 100644 --- a/tests/auto/declarative/sql/data/creation-a.js +++ b/tests/auto/declarative/qdeclarativesqldatabase/data/creation-a.js diff --git a/tests/auto/declarative/sql/data/creation.js b/tests/auto/declarative/qdeclarativesqldatabase/data/creation.js index 317b4c1..317b4c1 100644 --- a/tests/auto/declarative/sql/data/creation.js +++ b/tests/auto/declarative/qdeclarativesqldatabase/data/creation.js diff --git a/tests/auto/declarative/sql/data/error-a.js b/tests/auto/declarative/qdeclarativesqldatabase/data/error-a.js index 10a23f6..10a23f6 100644 --- a/tests/auto/declarative/sql/data/error-a.js +++ b/tests/auto/declarative/qdeclarativesqldatabase/data/error-a.js diff --git a/tests/auto/declarative/sql/data/error-b.js b/tests/auto/declarative/qdeclarativesqldatabase/data/error-b.js index 4dd0ecf..4dd0ecf 100644 --- a/tests/auto/declarative/sql/data/error-b.js +++ b/tests/auto/declarative/qdeclarativesqldatabase/data/error-b.js diff --git a/tests/auto/declarative/sql/data/error-creation.js b/tests/auto/declarative/qdeclarativesqldatabase/data/error-creation.js index 0ab2a35..0ab2a35 100644 --- a/tests/auto/declarative/sql/data/error-creation.js +++ b/tests/auto/declarative/qdeclarativesqldatabase/data/error-creation.js diff --git a/tests/auto/declarative/sql/data/error-notransaction.js b/tests/auto/declarative/qdeclarativesqldatabase/data/error-notransaction.js index b9cc647..b9cc647 100644 --- a/tests/auto/declarative/sql/data/error-notransaction.js +++ b/tests/auto/declarative/qdeclarativesqldatabase/data/error-notransaction.js diff --git a/tests/auto/declarative/sql/data/error-outsidetransaction.js b/tests/auto/declarative/qdeclarativesqldatabase/data/error-outsidetransaction.js index a7af3bd..a7af3bd 100644 --- a/tests/auto/declarative/sql/data/error-outsidetransaction.js +++ b/tests/auto/declarative/qdeclarativesqldatabase/data/error-outsidetransaction.js diff --git a/tests/auto/declarative/sql/data/iteration-forwardonly.js b/tests/auto/declarative/qdeclarativesqldatabase/data/iteration-forwardonly.js index 45947c0..45947c0 100644 --- a/tests/auto/declarative/sql/data/iteration-forwardonly.js +++ b/tests/auto/declarative/qdeclarativesqldatabase/data/iteration-forwardonly.js diff --git a/tests/auto/declarative/sql/data/iteration.js b/tests/auto/declarative/qdeclarativesqldatabase/data/iteration.js index c34cbbb..c34cbbb 100644 --- a/tests/auto/declarative/sql/data/iteration.js +++ b/tests/auto/declarative/qdeclarativesqldatabase/data/iteration.js diff --git a/tests/auto/declarative/sql/data/readonly-error.js b/tests/auto/declarative/qdeclarativesqldatabase/data/readonly-error.js index 69ec67f..69ec67f 100644 --- a/tests/auto/declarative/sql/data/readonly-error.js +++ b/tests/auto/declarative/qdeclarativesqldatabase/data/readonly-error.js diff --git a/tests/auto/declarative/sql/data/readonly.js b/tests/auto/declarative/qdeclarativesqldatabase/data/readonly.js index 5ee862c..5ee862c 100644 --- a/tests/auto/declarative/sql/data/readonly.js +++ b/tests/auto/declarative/qdeclarativesqldatabase/data/readonly.js diff --git a/tests/auto/declarative/sql/data/reopen1.js b/tests/auto/declarative/qdeclarativesqldatabase/data/reopen1.js index c1a8157..c1a8157 100644 --- a/tests/auto/declarative/sql/data/reopen1.js +++ b/tests/auto/declarative/qdeclarativesqldatabase/data/reopen1.js diff --git a/tests/auto/declarative/sql/data/reopen2.js b/tests/auto/declarative/qdeclarativesqldatabase/data/reopen2.js index 4f7248f..4f7248f 100644 --- a/tests/auto/declarative/sql/data/reopen2.js +++ b/tests/auto/declarative/qdeclarativesqldatabase/data/reopen2.js diff --git a/tests/auto/declarative/sql/data/selection-bindnames.js b/tests/auto/declarative/qdeclarativesqldatabase/data/selection-bindnames.js index 9786821..9786821 100644 --- a/tests/auto/declarative/sql/data/selection-bindnames.js +++ b/tests/auto/declarative/qdeclarativesqldatabase/data/selection-bindnames.js diff --git a/tests/auto/declarative/sql/data/selection.js b/tests/auto/declarative/qdeclarativesqldatabase/data/selection.js index f116eff..f116eff 100644 --- a/tests/auto/declarative/sql/data/selection.js +++ b/tests/auto/declarative/qdeclarativesqldatabase/data/selection.js diff --git a/tests/auto/declarative/sql/sql.pro b/tests/auto/declarative/qdeclarativesqldatabase/qdeclarativesqldatabase.pro index 7e4fdd8..3ff4529 100644 --- a/tests/auto/declarative/sql/sql.pro +++ b/tests/auto/declarative/qdeclarativesqldatabase/qdeclarativesqldatabase.pro @@ -3,7 +3,7 @@ contains(QT_CONFIG,declarative): QT += declarative QT += sql script macx:CONFIG -= app_bundle -SOURCES += tst_sql.cpp +SOURCES += tst_qdeclarativesqldatabase.cpp # Define SRCDIR equal to test's source directory DEFINES += SRCDIR=\\\"$$PWD\\\" diff --git a/tests/auto/declarative/sql/tst_sql.cpp b/tests/auto/declarative/qdeclarativesqldatabase/tst_qdeclarativesqldatabase.cpp index c8b8dc3..7486a4b 100644 --- a/tests/auto/declarative/sql/tst_sql.cpp +++ b/tests/auto/declarative/qdeclarativesqldatabase/tst_qdeclarativesqldatabase.cpp @@ -53,19 +53,19 @@ #include <QtCore/qdir.h> #include <QtCore/qfile.h> -class tst_sql : public QObject +class tst_qdeclarativesqldatabase : public QObject { Q_OBJECT public: - tst_sql() + tst_qdeclarativesqldatabase() { - qApp->setApplicationName("tst_sql"); + qApp->setApplicationName("tst_qdeclarativesqldatabase"); qApp->setOrganizationName("Nokia"); qApp->setOrganizationDomain("nokia.com"); engine = new QDeclarativeEngine; } - ~tst_sql() + ~tst_qdeclarativesqldatabase() { delete engine; } @@ -108,33 +108,33 @@ void removeRecursive(const QString& dirname) QDir().rmdir(dirname); } -void tst_sql::initTestCase() +void tst_qdeclarativesqldatabase::initTestCase() { removeRecursive(dbDir()); QDir().mkpath(dbDir()); } -void tst_sql::cleanupTestCase() +void tst_qdeclarativesqldatabase::cleanupTestCase() { removeRecursive(dbDir()); } -QString tst_sql::dbDir() const +QString tst_qdeclarativesqldatabase::dbDir() const { - static QString tmpd = QDir::tempPath()+"/tst_sql_output-" + static QString tmpd = QDir::tempPath()+"/tst_qdeclarativesqldatabase_output-" + QDateTime::currentDateTime().toString(QLatin1String("yyyyMMddhhmmss")); return tmpd; } -void tst_sql::checkDatabasePath() +void tst_qdeclarativesqldatabase::checkDatabasePath() { // Check default storage path (we can't use it since we don't want to mess with user's data) - QVERIFY(engine->offlineStoragePath().contains("tst_sql")); + QVERIFY(engine->offlineStoragePath().contains("tst_qdeclarativesqldatabase")); QVERIFY(engine->offlineStoragePath().contains("OfflineStorage")); } static const int total_databases_created_by_tests = 12; -void tst_sql::testQml_data() +void tst_qdeclarativesqldatabase::testQml_data() { QTest::addColumn<QString>("jsfile"); // The input file @@ -161,7 +161,7 @@ void tst_sql::testQml_data() } /* -void tst_sql::validateAgainstWebkit() +void tst_qdeclarativesqldatabase::validateAgainstWebkit() { // Validates tests against WebKit (HTML5) support. // @@ -188,7 +188,7 @@ void tst_sql::validateAgainstWebkit() } */ -void tst_sql::testQml() +void tst_qdeclarativesqldatabase::testQml() { // Tests QML SQL Database support with tests // that have been validated against Webkit. @@ -209,7 +209,7 @@ void tst_sql::testQml() QCOMPARE(text->text(),QString("passed")); } -void tst_sql::testQml_cleanopen_data() +void tst_qdeclarativesqldatabase::testQml_cleanopen_data() { QTest::addColumn<QString>("jsfile"); // The input file QTest::newRow("reopen1") << "data/reopen1.js"; @@ -217,7 +217,7 @@ void tst_sql::testQml_cleanopen_data() QTest::newRow("error-creation") << "data/error-creation.js"; // re-uses creation DB } -void tst_sql::testQml_cleanopen() +void tst_qdeclarativesqldatabase::testQml_cleanopen() { // Same as testQml, but clean connections between tests, // making it more like the tests are running in new processes. @@ -229,11 +229,11 @@ void tst_sql::testQml_cleanopen() } } -void tst_sql::totalDatabases() +void tst_qdeclarativesqldatabase::totalDatabases() { QCOMPARE(QDir(dbDir()+"/Databases").entryInfoList(QDir::Files|QDir::NoDotAndDotDot).count(), total_databases_created_by_tests*2); } -QTEST_MAIN(tst_sql) +QTEST_MAIN(tst_qdeclarativesqldatabase) -#include "tst_sql.moc" +#include "tst_qdeclarativesqldatabase.moc" diff --git a/tests/auto/declarative/qdeclarativetext/data/embeddedImagesLocal.qml b/tests/auto/declarative/qdeclarativetext/data/embeddedImagesLocal.qml new file mode 100644 index 0000000..5aeea56 --- /dev/null +++ b/tests/auto/declarative/qdeclarativetext/data/embeddedImagesLocal.qml @@ -0,0 +1,5 @@ +import Qt 4.6 + +Text { + text: "<img src='http/exists.png'>" +} diff --git a/tests/auto/declarative/qdeclarativetext/data/embeddedImagesLocalError.qml b/tests/auto/declarative/qdeclarativetext/data/embeddedImagesLocalError.qml new file mode 100644 index 0000000..17bb21c --- /dev/null +++ b/tests/auto/declarative/qdeclarativetext/data/embeddedImagesLocalError.qml @@ -0,0 +1,5 @@ +import Qt 4.6 + +Text { + text: "<img src='http/notexists.png'>" +} diff --git a/tests/auto/declarative/qdeclarativetext/data/embeddedImagesRemote.qml b/tests/auto/declarative/qdeclarativetext/data/embeddedImagesRemote.qml new file mode 100644 index 0000000..53b0266 --- /dev/null +++ b/tests/auto/declarative/qdeclarativetext/data/embeddedImagesRemote.qml @@ -0,0 +1,5 @@ +import Qt 4.6 + +Text { + text: "<img src='http://127.0.0.1:14453/exists.png'>" +} diff --git a/tests/auto/declarative/qdeclarativetext/data/embeddedImagesRemoteError.qml b/tests/auto/declarative/qdeclarativetext/data/embeddedImagesRemoteError.qml new file mode 100644 index 0000000..48c7a95 --- /dev/null +++ b/tests/auto/declarative/qdeclarativetext/data/embeddedImagesRemoteError.qml @@ -0,0 +1,5 @@ +import Qt 4.6 + +Text { + text: "<img src='http://127.0.0.1:14453/notexists.png'>" +} diff --git a/tests/auto/declarative/qdeclarativetext/data/http/exists.png b/tests/auto/declarative/qdeclarativetext/data/http/exists.png Binary files differnew file mode 100644 index 0000000..399bd0b --- /dev/null +++ b/tests/auto/declarative/qdeclarativetext/data/http/exists.png diff --git a/tests/auto/declarative/qdeclarativetext/qdeclarativetext.pro b/tests/auto/declarative/qdeclarativetext/qdeclarativetext.pro index 73c05b5..e70443e 100644 --- a/tests/auto/declarative/qdeclarativetext/qdeclarativetext.pro +++ b/tests/auto/declarative/qdeclarativetext/qdeclarativetext.pro @@ -1,8 +1,15 @@ load(qttest_p4) contains(QT_CONFIG,declarative): QT += declarative gui +QT += network macx:CONFIG -= app_bundle SOURCES += tst_qdeclarativetext.cpp +INCLUDEPATH += ../shared/ +HEADERS += ../shared/testhttpserver.h +SOURCES += ../shared/testhttpserver.cpp + +DEFINES += SRCDIR=\\\"$$PWD\\\" + CONFIG += parallel_test diff --git a/tests/auto/declarative/qdeclarativetext/tst_qdeclarativetext.cpp b/tests/auto/declarative/qdeclarativetext/tst_qdeclarativetext.cpp index 6637415..53640d0 100644 --- a/tests/auto/declarative/qdeclarativetext/tst_qdeclarativetext.cpp +++ b/tests/auto/declarative/qdeclarativetext/tst_qdeclarativetext.cpp @@ -48,6 +48,9 @@ #include <QGraphicsSceneMouseEvent> #include <qmath.h> +#include "../../../shared/util.h" +#include "testhttpserver.h" + class tst_qdeclarativetext : public QObject { @@ -62,6 +65,9 @@ private slots: void elide(); void textFormat(); + void embeddedImages_data(); + void embeddedImages(); + // ### these tests may be trivial void horizontalAlignment(); void verticalAlignment(); @@ -859,6 +865,45 @@ void tst_qdeclarativetext::clickLink() } } +void tst_qdeclarativetext::embeddedImages_data() +{ + QTest::addColumn<QUrl>("qmlfile"); + QTest::addColumn<QString>("error"); + QTest::newRow("local") << QUrl::fromLocalFile(SRCDIR "/data/embeddedImagesLocal.qml") << ""; + QTest::newRow("local-error") << QUrl::fromLocalFile(SRCDIR "/data/embeddedImagesLocalError.qml") + << "\"Cannot open: " + QUrl::fromLocalFile(SRCDIR "/data/http/notexists.png").toString() + "\" "; + QTest::newRow("remote") << QUrl::fromLocalFile(SRCDIR "/data/embeddedImagesRemote.qml") << ""; + QTest::newRow("remote-error") << QUrl::fromLocalFile(SRCDIR "/data/embeddedImagesRemoteError.qml") + << "\"Error downloading http://127.0.0.1:14453/notexists.png - server replied: Not found\" "; +} + +void tst_qdeclarativetext::embeddedImages() +{ + // Tests QTBUG-9900 + + QFETCH(QUrl, qmlfile); + QFETCH(QString, error); + + TestHTTPServer server(14453); + server.serveDirectory(SRCDIR "/data/http"); + + if (!error.isEmpty()) + QTest::ignoreMessage(QtWarningMsg, error.toLatin1()); + + QDeclarativeComponent textComponent(&engine, qmlfile); + QDeclarativeText *textObject = qobject_cast<QDeclarativeText*>(textComponent.create()); + + QVERIFY(textObject != 0); + + QTRY_COMPARE(textObject->resourcesLoading(), 0); + + if (error.isEmpty()) { + QPixmap pm(SRCDIR "/data/http/exists.png"); + QCOMPARE(textObject->width(), double(pm.width())); + QCOMPARE(textObject->height(), double(pm.height())); + } +} + QTEST_MAIN(tst_qdeclarativetext) #include "tst_qdeclarativetext.moc" diff --git a/tests/auto/declarative/qmlvisual/Package_Views/packageviews.qml b/tests/auto/declarative/qmlvisual/Package_Views/packageviews.qml index f6c033f..7ccba10 100644 --- a/tests/auto/declarative/qmlvisual/Package_Views/packageviews.qml +++ b/tests/auto/declarative/qmlvisual/Package_Views/packageviews.qml @@ -63,8 +63,9 @@ Rectangle { Transition { from: "*"; to: "*" SequentialAnimation { - ParentAction{} - NumberAnimation { properties: "x,y,width"; easing.type: "InOutQuad" } + ParentAnimation{ + NumberAnimation { properties: "x,y,width"; easing.type: "InOutQuad" } + } } } ] diff --git a/tests/auto/declarative/qmlvisual/animation/colorAnimation/data/colorAnimation.0.png b/tests/auto/declarative/qmlvisual/animation/colorAnimation/data/colorAnimation-visual.0.png Binary files differindex e6ea16d..e6ea16d 100644 --- a/tests/auto/declarative/qmlvisual/animation/colorAnimation/data/colorAnimation.0.png +++ b/tests/auto/declarative/qmlvisual/animation/colorAnimation/data/colorAnimation-visual.0.png diff --git a/tests/auto/declarative/qmlvisual/animation/colorAnimation/data/colorAnimation.1.png b/tests/auto/declarative/qmlvisual/animation/colorAnimation/data/colorAnimation-visual.1.png Binary files differindex b75ba61..b75ba61 100644 --- a/tests/auto/declarative/qmlvisual/animation/colorAnimation/data/colorAnimation.1.png +++ b/tests/auto/declarative/qmlvisual/animation/colorAnimation/data/colorAnimation-visual.1.png diff --git a/tests/auto/declarative/qmlvisual/animation/colorAnimation/data/colorAnimation.2.png b/tests/auto/declarative/qmlvisual/animation/colorAnimation/data/colorAnimation-visual.2.png Binary files differindex 4320f6f..4320f6f 100644 --- a/tests/auto/declarative/qmlvisual/animation/colorAnimation/data/colorAnimation.2.png +++ b/tests/auto/declarative/qmlvisual/animation/colorAnimation/data/colorAnimation-visual.2.png diff --git a/tests/auto/declarative/qmlvisual/animation/colorAnimation/data/colorAnimation-visual.qml b/tests/auto/declarative/qmlvisual/animation/colorAnimation/data/colorAnimation-visual.qml index 4d0959a..4ab94f3 100644 --- a/tests/auto/declarative/qmlvisual/animation/colorAnimation/data/colorAnimation-visual.qml +++ b/tests/auto/declarative/qmlvisual/animation/colorAnimation/data/colorAnimation-visual.qml @@ -258,7 +258,7 @@ VisualTest { } Frame { msec: 960 - image: "colorAnimation.0.png" + image: "colorAnimation-visual.0.png" } Frame { msec: 976 @@ -270,7 +270,7 @@ VisualTest { } Frame { msec: 1008 - hash: "243dbffcf416926242bbcb7348974c4c" + hash: "e0f53c5605116a30d9bf3c031c63d958" } Frame { msec: 1024 @@ -370,7 +370,7 @@ VisualTest { } Frame { msec: 1408 - hash: "7178bfe86fd2fd513218b33760460f8d" + hash: "45770fe0d61c485c13992d0f98b2a3ba" } Frame { msec: 1424 @@ -470,7 +470,7 @@ VisualTest { } Frame { msec: 1808 - hash: "8593a81be812edf54ec94da8ae9c1314" + hash: "a2fa71b4147372175774250501b6625e" } Frame { msec: 1824 @@ -498,7 +498,7 @@ VisualTest { } Frame { msec: 1920 - image: "colorAnimation.1.png" + image: "colorAnimation-visual.1.png" } Frame { msec: 1936 @@ -570,7 +570,7 @@ VisualTest { } Frame { msec: 2208 - hash: "e5dc5450604a491cc24a0dcf5c278b58" + hash: "10d46d2862e333e5136b1c046dabb33b" } Frame { msec: 2224 @@ -738,7 +738,7 @@ VisualTest { } Frame { msec: 2880 - image: "colorAnimation.2.png" + image: "colorAnimation-visual.2.png" } Frame { msec: 2896 diff --git a/tests/auto/declarative/qmlvisual/animation/propertyAction/data/propertyAction.0.png b/tests/auto/declarative/qmlvisual/animation/propertyAction/data/propertyAction-visual.0.png Binary files differindex 64d6b06..64d6b06 100644 --- a/tests/auto/declarative/qmlvisual/animation/propertyAction/data/propertyAction.0.png +++ b/tests/auto/declarative/qmlvisual/animation/propertyAction/data/propertyAction-visual.0.png diff --git a/tests/auto/declarative/qmlvisual/animation/propertyAction/data/propertyAction.1.png b/tests/auto/declarative/qmlvisual/animation/propertyAction/data/propertyAction-visual.1.png Binary files differindex f7fce15..f7fce15 100644 --- a/tests/auto/declarative/qmlvisual/animation/propertyAction/data/propertyAction.1.png +++ b/tests/auto/declarative/qmlvisual/animation/propertyAction/data/propertyAction-visual.1.png diff --git a/tests/auto/declarative/qmlvisual/animation/propertyAction/data/propertyAction.2.png b/tests/auto/declarative/qmlvisual/animation/propertyAction/data/propertyAction-visual.2.png Binary files differindex 3080df5..3080df5 100644 --- a/tests/auto/declarative/qmlvisual/animation/propertyAction/data/propertyAction.2.png +++ b/tests/auto/declarative/qmlvisual/animation/propertyAction/data/propertyAction-visual.2.png diff --git a/tests/auto/declarative/qmlvisual/animation/propertyAction/data/propertyAction-visual.qml b/tests/auto/declarative/qmlvisual/animation/propertyAction/data/propertyAction-visual.qml index 7c8c233..0a9057e 100644 --- a/tests/auto/declarative/qmlvisual/animation/propertyAction/data/propertyAction-visual.qml +++ b/tests/auto/declarative/qmlvisual/animation/propertyAction/data/propertyAction-visual.qml @@ -242,7 +242,7 @@ VisualTest { } Frame { msec: 960 - image: "propertyAction.0.png" + image: "propertyAction-visual.0.png" } Frame { msec: 976 @@ -490,7 +490,7 @@ VisualTest { } Frame { msec: 1920 - image: "propertyAction.1.png" + image: "propertyAction-visual.1.png" } Frame { msec: 1936 @@ -738,7 +738,7 @@ VisualTest { } Frame { msec: 2880 - image: "propertyAction.2.png" + image: "propertyAction-visual.2.png" } Frame { msec: 2896 @@ -810,7 +810,7 @@ VisualTest { } Frame { msec: 3168 - hash: "dcc79277fdb8966e5a3f2ed1b2fc4292" + hash: "38b7e5894cf49a19ac055264d6447b9f" } Frame { msec: 3184 diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.1.png b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.1.png Binary files differindex 1f960e5..4366d53 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.1.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.1.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.qml b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.qml index 043f5e2..c6df3c4 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.qml @@ -130,7 +130,7 @@ VisualTest { } Frame { msec: 512 - hash: "37c3f25e5cfdb48d7e3ab0cf8ffb9154" + hash: "0f347763f25350ebb62dda1536372b45" } Frame { msec: 528 @@ -186,7 +186,7 @@ VisualTest { } Frame { msec: 736 - hash: "902683d72f789399e9d99d1cea1bf177" + hash: "74af3457583fbaf73f14556aeccc8403" } Frame { msec: 752 @@ -210,7 +210,7 @@ VisualTest { } Frame { msec: 832 - hash: "a15f19f374bbfb6a922b69d080a91eaa" + hash: "d2ed2cf3a12e41bac299399cc35abe6a" } Frame { msec: 848 @@ -294,7 +294,7 @@ VisualTest { } Frame { msec: 1168 - hash: "2192094410e2d7c8d9d4aa5f8deacff5" + hash: "85ef33fcb3f91e4fc20391bf94455984" } Frame { msec: 1184 @@ -302,7 +302,7 @@ VisualTest { } Frame { msec: 1200 - hash: "92176cce4836dcae4dfca94e49b041a8" + hash: "07acba64dc608439a8a54fcb080379e8" } Frame { msec: 1216 @@ -310,7 +310,7 @@ VisualTest { } Frame { msec: 1232 - hash: "42be5d26afb9f066dd27cc9fbaf6ce20" + hash: "1f964c6c9bebdc9945dc69a6095400f7" } Frame { msec: 1248 @@ -318,7 +318,7 @@ VisualTest { } Frame { msec: 1264 - hash: "7f9999a9c87af43b9703323efab31770" + hash: "2084ccc60ddd493399c128717816d33b" } Frame { msec: 1280 @@ -346,7 +346,7 @@ VisualTest { } Frame { msec: 1376 - hash: "49a1df977b0494c7c72ca0b65c394e13" + hash: "45d891d804609ebbe1d5ac3f826d0c17" } Frame { msec: 1392 @@ -406,7 +406,7 @@ VisualTest { } Frame { msec: 1616 - hash: "4520003d4b221a3de6834b2729b3026d" + hash: "880640372bf584955627f6835f24be13" } Frame { msec: 1632 @@ -414,7 +414,7 @@ VisualTest { } Frame { msec: 1648 - hash: "83d49474db15d5779923972ff5f55917" + hash: "705d9c8de05c859a42769f73761c6a63" } Frame { msec: 1664 @@ -426,7 +426,7 @@ VisualTest { } Frame { msec: 1696 - hash: "d8e398a1ce9ca45c19951e93bd5c932a" + hash: "64cd225202ed6c91b02c368a9160a656" } Frame { msec: 1712 @@ -438,7 +438,7 @@ VisualTest { } Frame { msec: 1744 - hash: "fc913807eb1069d611495fbd5d43ee3d" + hash: "fe899138116774df4c4441687e3019c5" } Frame { msec: 1760 @@ -450,7 +450,7 @@ VisualTest { } Frame { msec: 1792 - hash: "e3a2b5c7247acfc1b30825233fbfd56b" + hash: "c3ea530de646612f9203c5800cad884b" } Frame { msec: 1808 @@ -490,7 +490,7 @@ VisualTest { } Frame { msec: 1952 - hash: "3991bc7760b7981d80665e3a7654c9f4" + hash: "b980703c1d0018937e83a8ba8862469e" } Frame { msec: 1968 @@ -502,15 +502,15 @@ VisualTest { } Frame { msec: 2000 - hash: "723f87da7e5b002a2e9b0bcbc81f9458" + hash: "ee297a2d68c9e58157d9bf189d353713" } Frame { msec: 2016 - hash: "6b8ded0d9386a3fff0601a100c513080" + hash: "00f3c9b8b37cb104cf2a7701639bc61f" } Frame { msec: 2032 - hash: "f976cd5046ef5391536859e63db905bd" + hash: "ee297a2d68c9e58157d9bf189d353713" } Frame { msec: 2048 @@ -562,7 +562,7 @@ VisualTest { } Frame { msec: 2240 - hash: "e3a2b5c7247acfc1b30825233fbfd56b" + hash: "c3ea530de646612f9203c5800cad884b" } Frame { msec: 2256 @@ -598,7 +598,7 @@ VisualTest { } Frame { msec: 2384 - hash: "83d49474db15d5779923972ff5f55917" + hash: "705d9c8de05c859a42769f73761c6a63" } Frame { msec: 2400 @@ -606,7 +606,7 @@ VisualTest { } Frame { msec: 2416 - hash: "4520003d4b221a3de6834b2729b3026d" + hash: "880640372bf584955627f6835f24be13" } Frame { msec: 2432 @@ -666,7 +666,7 @@ VisualTest { } Frame { msec: 2656 - hash: "a676f45d946aeb9fa577c0e862735b01" + hash: "45d891d804609ebbe1d5ac3f826d0c17" } Frame { msec: 2672 @@ -702,7 +702,7 @@ VisualTest { } Frame { msec: 2800 - hash: "42be5d26afb9f066dd27cc9fbaf6ce20" + hash: "1f964c6c9bebdc9945dc69a6095400f7" } Frame { msec: 2816 @@ -710,7 +710,7 @@ VisualTest { } Frame { msec: 2832 - hash: "92176cce4836dcae4dfca94e49b041a8" + hash: "07acba64dc608439a8a54fcb080379e8" } Frame { msec: 2848 @@ -802,7 +802,7 @@ VisualTest { } Frame { msec: 3200 - hash: "a15f19f374bbfb6a922b69d080a91eaa" + hash: "d2ed2cf3a12e41bac299399cc35abe6a" } Frame { msec: 3216 @@ -826,7 +826,7 @@ VisualTest { } Frame { msec: 3296 - hash: "902683d72f789399e9d99d1cea1bf177" + hash: "74af3457583fbaf73f14556aeccc8403" } Frame { msec: 3312 @@ -854,7 +854,7 @@ VisualTest { } Frame { msec: 3408 - hash: "f602e3eda1889d1a7e49560f0dfb5d4c" + hash: "89c159ef00d273ecfe61332e1bf7244d" } Frame { msec: 3424 @@ -862,7 +862,7 @@ VisualTest { } Frame { msec: 3440 - hash: "c8312ede0998636a6bd6451d13636577" + hash: "61c16009b65a55bffb63e27727e1615e" } Frame { msec: 3456 @@ -950,7 +950,7 @@ VisualTest { } Frame { msec: 3792 - hash: "8419b295f67cae133760da79dfc26505" + hash: "f22a47b846cfee96ebdf39bbce2e6d51" } Frame { msec: 3808 @@ -970,7 +970,7 @@ VisualTest { } Frame { msec: 3872 - hash: "d56ba74d38c1889a278929d1c1b7f17a" + hash: "ed9f2ca797894612600bc4b7fbaecb84" } Frame { msec: 3888 @@ -1130,7 +1130,7 @@ VisualTest { } Frame { msec: 4512 - hash: "37c3f25e5cfdb48d7e3ab0cf8ffb9154" + hash: "0f347763f25350ebb62dda1536372b45" } Frame { msec: 4528 @@ -1186,7 +1186,7 @@ VisualTest { } Frame { msec: 4736 - hash: "902683d72f789399e9d99d1cea1bf177" + hash: "74af3457583fbaf73f14556aeccc8403" } Frame { msec: 4752 @@ -1210,7 +1210,7 @@ VisualTest { } Frame { msec: 4832 - hash: "a15f19f374bbfb6a922b69d080a91eaa" + hash: "d2ed2cf3a12e41bac299399cc35abe6a" } Frame { msec: 4848 @@ -1294,7 +1294,7 @@ VisualTest { } Frame { msec: 5168 - hash: "2192094410e2d7c8d9d4aa5f8deacff5" + hash: "85ef33fcb3f91e4fc20391bf94455984" } Frame { msec: 5184 @@ -1302,7 +1302,7 @@ VisualTest { } Frame { msec: 5200 - hash: "92176cce4836dcae4dfca94e49b041a8" + hash: "07acba64dc608439a8a54fcb080379e8" } Frame { msec: 5216 @@ -1310,7 +1310,7 @@ VisualTest { } Frame { msec: 5232 - hash: "42be5d26afb9f066dd27cc9fbaf6ce20" + hash: "1f964c6c9bebdc9945dc69a6095400f7" } Frame { msec: 5248 @@ -1318,7 +1318,7 @@ VisualTest { } Frame { msec: 5264 - hash: "7f9999a9c87af43b9703323efab31770" + hash: "2084ccc60ddd493399c128717816d33b" } Frame { msec: 5280 @@ -1346,7 +1346,7 @@ VisualTest { } Frame { msec: 5376 - hash: "49a1df977b0494c7c72ca0b65c394e13" + hash: "45d891d804609ebbe1d5ac3f826d0c17" } Frame { msec: 5392 @@ -1406,7 +1406,7 @@ VisualTest { } Frame { msec: 5616 - hash: "4520003d4b221a3de6834b2729b3026d" + hash: "880640372bf584955627f6835f24be13" } Frame { msec: 5632 @@ -1414,7 +1414,7 @@ VisualTest { } Frame { msec: 5648 - hash: "83d49474db15d5779923972ff5f55917" + hash: "705d9c8de05c859a42769f73761c6a63" } Frame { msec: 5664 @@ -1426,7 +1426,7 @@ VisualTest { } Frame { msec: 5696 - hash: "d8e398a1ce9ca45c19951e93bd5c932a" + hash: "64cd225202ed6c91b02c368a9160a656" } Frame { msec: 5712 @@ -1438,7 +1438,7 @@ VisualTest { } Frame { msec: 5744 - hash: "fc913807eb1069d611495fbd5d43ee3d" + hash: "fe899138116774df4c4441687e3019c5" } Frame { msec: 5760 @@ -1450,7 +1450,7 @@ VisualTest { } Frame { msec: 5792 - hash: "e3a2b5c7247acfc1b30825233fbfd56b" + hash: "c3ea530de646612f9203c5800cad884b" } Frame { msec: 5808 @@ -1482,7 +1482,7 @@ VisualTest { } Frame { msec: 5920 - hash: "ec7e1190dd4fe122545e6ce6c8740500" + hash: "3b7b83e97d17440b42e6ef4b962076d8" } Frame { msec: 5936 @@ -1490,7 +1490,7 @@ VisualTest { } Frame { msec: 5952 - hash: "3991bc7760b7981d80665e3a7654c9f4" + hash: "b980703c1d0018937e83a8ba8862469e" } Frame { msec: 5968 @@ -1502,15 +1502,15 @@ VisualTest { } Frame { msec: 6000 - hash: "723f87da7e5b002a2e9b0bcbc81f9458" + hash: "ee297a2d68c9e58157d9bf189d353713" } Frame { msec: 6016 - hash: "6b8ded0d9386a3fff0601a100c513080" + hash: "00f3c9b8b37cb104cf2a7701639bc61f" } Frame { msec: 6032 - hash: "f976cd5046ef5391536859e63db905bd" + hash: "ee297a2d68c9e58157d9bf189d353713" } Frame { msec: 6048 @@ -1562,7 +1562,7 @@ VisualTest { } Frame { msec: 6240 - hash: "e3a2b5c7247acfc1b30825233fbfd56b" + hash: "c3ea530de646612f9203c5800cad884b" } Frame { msec: 6256 @@ -1598,7 +1598,7 @@ VisualTest { } Frame { msec: 6384 - hash: "83d49474db15d5779923972ff5f55917" + hash: "705d9c8de05c859a42769f73761c6a63" } Frame { msec: 6400 @@ -1606,7 +1606,7 @@ VisualTest { } Frame { msec: 6416 - hash: "4520003d4b221a3de6834b2729b3026d" + hash: "880640372bf584955627f6835f24be13" } Frame { msec: 6432 @@ -1666,7 +1666,7 @@ VisualTest { } Frame { msec: 6656 - hash: "a676f45d946aeb9fa577c0e862735b01" + hash: "45d891d804609ebbe1d5ac3f826d0c17" } Frame { msec: 6672 @@ -1702,7 +1702,7 @@ VisualTest { } Frame { msec: 6800 - hash: "42be5d26afb9f066dd27cc9fbaf6ce20" + hash: "1f964c6c9bebdc9945dc69a6095400f7" } Frame { msec: 6816 @@ -1710,7 +1710,7 @@ VisualTest { } Frame { msec: 6832 - hash: "92176cce4836dcae4dfca94e49b041a8" + hash: "07acba64dc608439a8a54fcb080379e8" } Frame { msec: 6848 @@ -1779,7 +1779,7 @@ VisualTest { Key { type: 6 key: 16777249 - modifiers: 67108864 + modifiers: 0 text: "" autorep: false count: 1 @@ -1810,7 +1810,7 @@ VisualTest { } Frame { msec: 7200 - hash: "a15f19f374bbfb6a922b69d080a91eaa" + hash: "d2ed2cf3a12e41bac299399cc35abe6a" } Frame { msec: 7216 diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/borders.1.png b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/borders.1.png Binary files differdeleted file mode 100644 index 80cbd26..0000000 --- a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/borders.1.png +++ /dev/null diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/borders.2.png b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/borders.2.png Binary files differdeleted file mode 100644 index 80cbd26..0000000 --- a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/borders.2.png +++ /dev/null diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/borders.3.png b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/borders.3.png Binary files differdeleted file mode 100644 index 80cbd26..0000000 --- a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/borders.3.png +++ /dev/null diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/borders.4.png b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/borders.4.png Binary files differdeleted file mode 100644 index 80cbd26..0000000 --- a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/borders.4.png +++ /dev/null diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/borders.qml b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/borders.qml index 16cd5e9..1403d35 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/borders.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/borders.qml @@ -6,1354 +6,6 @@ VisualTest { } Frame { msec: 16 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 32 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 48 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 64 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 80 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 96 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 112 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 128 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 144 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 160 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 176 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 192 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 208 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 224 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 240 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 256 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 272 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 288 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 304 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 320 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 336 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 352 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 368 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 384 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 400 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 416 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 432 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 448 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 464 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 480 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 496 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 512 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 528 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 544 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 560 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 576 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 592 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 608 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 624 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 640 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 656 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 672 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 688 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 704 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 720 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 736 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 752 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 768 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 784 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 800 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 816 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 832 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 848 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 864 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 880 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 896 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 912 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 928 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 944 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 960 - image: "borders.0.png" - } - Frame { - msec: 976 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 992 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1008 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1024 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1040 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1056 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1072 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1088 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1104 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1120 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1136 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1152 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1168 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1184 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1200 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1216 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1232 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1248 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1264 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1280 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1296 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1312 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1328 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1344 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1360 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1376 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1392 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1408 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1424 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1440 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1456 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1472 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1488 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1504 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1520 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1536 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1552 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1568 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1584 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1600 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1616 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1632 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1648 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1664 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1680 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1696 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1712 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1728 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1744 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1760 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1776 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1792 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1808 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1824 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1840 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1856 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1872 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1888 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1904 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1920 - image: "borders.1.png" - } - Frame { - msec: 1936 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1952 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1968 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1984 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2000 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2016 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2032 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2048 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2064 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2080 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2096 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2112 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2128 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2144 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2160 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2176 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2192 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2208 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2224 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2240 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2256 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2272 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2288 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2304 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2320 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2336 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2352 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2368 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2384 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2400 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2416 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2432 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2448 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2464 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2480 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2496 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2512 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2528 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2544 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2560 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2576 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2592 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2608 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2624 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2640 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2656 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2672 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2688 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2704 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2720 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2736 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2752 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2768 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2784 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2800 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2816 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2832 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2848 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2864 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2880 - image: "borders.2.png" - } - Frame { - msec: 2896 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2912 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2928 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2944 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2960 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2976 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2992 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3008 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3024 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3040 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3056 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3072 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3088 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3104 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3120 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3136 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3152 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3168 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3184 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3200 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3216 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3232 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3248 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3264 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3280 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3296 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3312 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3328 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3344 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3360 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3376 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3392 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3408 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3424 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3440 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3456 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3472 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3488 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3504 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3520 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3536 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3552 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3568 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3584 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3600 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3616 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3632 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3648 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3664 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3680 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3696 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3712 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3728 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3744 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3760 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3776 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3792 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3808 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3824 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3840 - image: "borders.3.png" - } - Frame { - msec: 3856 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3872 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3888 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3904 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3920 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3936 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3952 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3968 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3984 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4000 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4016 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4032 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4048 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4064 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4080 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4096 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4112 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4128 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4144 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4160 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4176 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4192 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4208 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4224 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4240 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4256 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4272 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4288 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4304 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4320 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4336 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4352 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4368 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4384 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4400 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4416 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4432 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4448 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4464 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4480 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4496 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4512 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4528 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4544 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4560 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4576 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4592 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4608 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4624 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4640 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4656 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4672 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4688 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4704 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4720 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4736 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4752 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4768 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4784 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4800 - image: "borders.4.png" - } - Frame { - msec: 4816 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4832 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4848 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4864 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4880 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4896 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4912 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4928 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4944 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4960 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4976 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4992 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 5008 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 5024 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 5040 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 5056 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 5072 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 5088 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 5104 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 5120 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 5136 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 5152 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 5168 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 5184 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 5200 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 5216 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 5232 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 5248 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 5264 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 5280 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 5296 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 5312 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 5328 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 5344 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 5360 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 5376 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 5392 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 5408 - hash: "ab9753116e289c932064144bb0845857" + hash: "258a7e75b491e4f51a91739c776803b3" } } diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeparticles/particles.qml b/tests/auto/declarative/qmlvisual/qdeclarativeparticles/particles.qml index 2d481c9..fc8261f 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativeparticles/particles.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativeparticles/particles.qml @@ -1,4 +1,5 @@ import Qt 4.6 +import Qt.labs.particles 1.0 Rectangle { width: 640; height: 480; color: "black" diff --git a/tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/repeater.qml b/tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/usingRepeater.qml index 1eb115d..1eb115d 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/repeater.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/usingRepeater.qml diff --git a/tests/auto/declarative/qmlvisual/qdeclarativepositioners/repeater.qml b/tests/auto/declarative/qmlvisual/qdeclarativepositioners/usingRepeater.qml index ff60365..ff60365 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativepositioners/repeater.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativepositioners/usingRepeater.qml diff --git a/tests/auto/declarative/qmlvisual/tst_qmlvisual.cpp b/tests/auto/declarative/qmlvisual/tst_qmlvisual.cpp index 718e3a6..681b530 100644 --- a/tests/auto/declarative/qmlvisual/tst_qmlvisual.cpp +++ b/tests/auto/declarative/qmlvisual/tst_qmlvisual.cpp @@ -100,20 +100,35 @@ void tst_qmlvisual::visual_data() if (qgetenv("QMLVISUAL_ALL") != "") files << findQmlFiles(QDir(QT_TEST_SOURCE_DIR)); else { + //these are newly added tests we want to try out in CI (then move to the stable list) + files << QT_TEST_SOURCE_DIR "/qdeclarativeborderimage/borders.qml"; + files << QT_TEST_SOURCE_DIR "/qdeclarativeborderimage/animated.qml"; + files << QT_TEST_SOURCE_DIR "/qdeclarativeborderimage/animated-smooth.qml"; + files << QT_TEST_SOURCE_DIR "/qdeclarativeflipable/test-flipable.qml"; + files << QT_TEST_SOURCE_DIR "/qdeclarativepositioners/usingRepeater.qml"; + //these are tests we think are stable and useful enough to be run by the CI system files << QT_TEST_SOURCE_DIR "/animation/bindinganimation/bindinganimation.qml"; - files << QT_TEST_SOURCE_DIR "/animation/colorAnimation/colorAnimation-visual.qml"; - files << QT_TEST_SOURCE_DIR "/animation/easing/easing.qml"; files << QT_TEST_SOURCE_DIR "/animation/loop/loop.qml"; files << QT_TEST_SOURCE_DIR "/animation/parallelAnimation/parallelAnimation-visual.qml"; files << QT_TEST_SOURCE_DIR "/animation/parentAnimation/parentAnimation-visual.qml"; - files << QT_TEST_SOURCE_DIR "/animation/pauseAnimation/pauseAnimation-visual.qml"; - files << QT_TEST_SOURCE_DIR "/animation/propertyAction/propertyAction-visual.qml"; files << QT_TEST_SOURCE_DIR "/animation/reanchor/reanchor.qml"; files << QT_TEST_SOURCE_DIR "/animation/scriptAction/scriptAction-visual.qml"; - files << QT_TEST_SOURCE_DIR "/qdeclarativemousearea/mousearea-visual.qml"; files << QT_TEST_SOURCE_DIR "/qdeclarativemousearea/drag.qml"; files << QT_TEST_SOURCE_DIR "/fillmode/fillmode.qml"; + + //these reliably fail in CI, for unknown reasons + //files << QT_TEST_SOURCE_DIR "/animation/easing/easing.qml"; + //files << QT_TEST_SOURCE_DIR "/animation/pauseAnimation/pauseAnimation-visual.qml"; + + //these reliably fail on Linux because of color interpolation (different float rounding) +#if !defined(Q_WS_X11) && !defined(Q_WS_QWS) + files << QT_TEST_SOURCE_DIR "/animation/colorAnimation/colorAnimation-visual.qml"; + files << QT_TEST_SOURCE_DIR "/animation/propertyAction/propertyAction-visual.qml"; +#endif + + //this is unstable because the MouseArea press-and-hold timer is not synchronized to the animation framework. + //files << QT_TEST_SOURCE_DIR "/qdeclarativemousearea/mousearea-visual.qml"; } foreach (const QString &file, files) { diff --git a/tools/qml/qdeclarativetester.cpp b/tools/qml/qdeclarativetester.cpp index cf537ee..11fa22f 100644 --- a/tools/qml/qdeclarativetester.cpp +++ b/tools/qml/qdeclarativetester.cpp @@ -332,6 +332,24 @@ void QDeclarativeTester::updateCurrentTime(int msec) qWarning() << "QDeclarativeTester: Image mismatch. Reject saved to:" << reject; img.save(reject); + bool doDiff = (goodImage.size() == img.size()); + if (doDiff) { + QImage diffimg(m_view->width(), m_view->height(), QImage::Format_RGB32); + diffimg.fill(qRgb(255,255,255)); + QPainter p(&diffimg); + int diffCount = 0; + for (int x = 0; x < img.width(); ++x) { + for (int y = 0; y < img.height(); ++y) { + if (goodImage.pixel(x,y) != img.pixel(x,y)) { + ++diffCount; + p.drawPoint(x,y); + } + } + } + QString diff(frame->image().toLocalFile() + ".diff.png"); + diffimg.save(diff); + qWarning().nospace() << " Diff (" << diffCount << " pixels differed) saved to: " << diff; + } imagefailure(); } } |