summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorAaron Kennedy <aaron.kennedy@nokia.com>2009-11-10 06:52:35 (GMT)
committerAaron Kennedy <aaron.kennedy@nokia.com>2009-11-10 06:52:35 (GMT)
commit08b3d0ae11392528af3c39766023ffd2d116eb6b (patch)
treee9e2b90d84b2186db61932b0f3e3b245fb0fcd6c /tests
parentbdb9c0ffa84bfab386de5550bd8f9b013288daca (diff)
parent432d54d092414431e1e54daa2259384d83600bf2 (diff)
downloadQt-08b3d0ae11392528af3c39766023ffd2d116eb6b.zip
Qt-08b3d0ae11392528af3c39766023ffd2d116eb6b.tar.gz
Qt-08b3d0ae11392528af3c39766023ffd2d116eb6b.tar.bz2
Merge branch 'kinetic-declarativeui' of git@scm.dev.nokia.troll.no:qt/kinetic into kinetic-declarativeui
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/declarative/.gitignore1
-rw-r--r--tests/auto/declarative/debugger/debugger.pro4
-rw-r--r--tests/auto/declarative/debugger/debuggerutil.cpp102
-rw-r--r--tests/auto/declarative/debugger/debuggerutil_p.h84
-rw-r--r--tests/auto/declarative/debugger/qmldebugclient/qmldebugclient.pro (renamed from tests/auto/declarative/qmldebug/qmldebug.pro)4
-rw-r--r--tests/auto/declarative/debugger/qmldebugclient/tst_qmldebugclient.cpp190
-rw-r--r--tests/auto/declarative/debugger/qmldebugservice/qmldebugservice.pro7
-rw-r--r--tests/auto/declarative/debugger/qmldebugservice/tst_qmldebugservice.cpp222
-rw-r--r--tests/auto/declarative/declarative.pro4
-rw-r--r--tests/auto/declarative/qmldebug/tst_qmldebug.cpp590
-rw-r--r--tests/auto/declarative/qmlgraphicsflickable/data/flickable01.qml4
-rw-r--r--tests/auto/declarative/qmlgraphicsflickable/data/flickable02.qml14
-rw-r--r--tests/auto/declarative/qmlgraphicsflickable/data/flickable03.qml14
-rw-r--r--tests/auto/declarative/qmlgraphicsflickable/data/flickable04.qml16
-rw-r--r--tests/auto/declarative/qmlgraphicsflickable/qmlgraphicsflickable.pro8
-rw-r--r--tests/auto/declarative/qmlgraphicsflickable/tst_qmlgraphicsflickable.cpp145
-rw-r--r--tests/auto/declarative/qmlgraphicsflipable/data/test-flipable.qml9
-rw-r--r--tests/auto/declarative/qmlgraphicsflipable/qmlgraphicsflipable.pro8
-rw-r--r--tests/auto/declarative/qmlgraphicsflipable/tst_qmlgraphicsflipable.cpp113
-rw-r--r--tests/auto/declarative/qmlgraphicsgridview/data/gridview.qml1
-rw-r--r--tests/auto/declarative/qmlgraphicsgridview/tst_qmlgraphicsgridview.cpp88
-rw-r--r--tests/auto/declarative/qmlgraphicsitem/data/keys.qml3
-rw-r--r--tests/auto/declarative/qmlgraphicsitem/tst_qmlgraphicsitem.cpp31
-rw-r--r--tests/auto/declarative/qmlgraphicslistview/data/listview-initCurrent.qml1
-rw-r--r--tests/auto/declarative/qmlgraphicslistview/data/listview.qml2
-rw-r--r--tests/auto/declarative/qmlgraphicslistview/tst_qmlgraphicslistview.cpp27
-rw-r--r--tests/auto/declarative/qmlgraphicstextedit/tst_qmlgraphicstextedit.cpp52
-rw-r--r--tests/auto/declarative/qmlgraphicswebview/data/basic.icobin0 -> 318 bytes
-rw-r--r--tests/auto/declarative/qmlgraphicswebview/data/forward.html12
-rw-r--r--tests/auto/declarative/qmlgraphicswebview/data/javaScript.html11
-rw-r--r--tests/auto/declarative/qmlgraphicswebview/data/loadError.qml5
-rw-r--r--tests/auto/declarative/visual/ListView/data/itemlist.0.pngbin0 -> 961 bytes
-rw-r--r--tests/auto/declarative/visual/ListView/data/itemlist.1.pngbin0 -> 972 bytes
-rw-r--r--tests/auto/declarative/visual/ListView/data/itemlist.2.pngbin0 -> 962 bytes
-rw-r--r--tests/auto/declarative/visual/ListView/data/itemlist.3.pngbin0 -> 962 bytes
-rw-r--r--tests/auto/declarative/visual/ListView/data/itemlist.4.pngbin0 -> 962 bytes
-rw-r--r--tests/auto/declarative/visual/ListView/data/itemlist.5.pngbin0 -> 970 bytes
-rw-r--r--tests/auto/declarative/visual/ListView/data/itemlist.6.pngbin0 -> 961 bytes
-rw-r--r--tests/auto/declarative/visual/ListView/data/itemlist.qml2203
-rw-r--r--tests/auto/declarative/visual/ListView/itemlist.qml40
-rw-r--r--tests/auto/declarative/visual/flickable/Day.qml26
-rw-r--r--tests/auto/declarative/visual/flickable/cork.jpgbin22211 -> 0 bytes
-rw-r--r--tests/auto/declarative/visual/flickable/data-X11/flickable.0.pngbin115546 -> 0 bytes
-rw-r--r--tests/auto/declarative/visual/flickable/data-X11/flickable.1.pngbin115627 -> 0 bytes
-rw-r--r--tests/auto/declarative/visual/flickable/data-X11/flickable.2.pngbin116034 -> 0 bytes
-rw-r--r--tests/auto/declarative/visual/flickable/data-X11/flickable.qml791
-rw-r--r--tests/auto/declarative/visual/flickable/data/flickable.0.pngbin116681 -> 0 bytes
-rw-r--r--tests/auto/declarative/visual/flickable/data/flickable.1.pngbin116856 -> 0 bytes
-rw-r--r--tests/auto/declarative/visual/flickable/data/flickable.2.pngbin117276 -> 0 bytes
-rw-r--r--tests/auto/declarative/visual/flickable/data/flickable.qml791
-rw-r--r--tests/auto/declarative/visual/flickable/flickable.qml55
-rw-r--r--tests/auto/declarative/visual/qmlgraphicsflickable/data/flickable-horizontal.0.pngbin0 -> 1427 bytes
-rw-r--r--tests/auto/declarative/visual/qmlgraphicsflickable/data/flickable-horizontal.1.pngbin0 -> 1357 bytes
-rw-r--r--tests/auto/declarative/visual/qmlgraphicsflickable/data/flickable-horizontal.2.pngbin0 -> 1405 bytes
-rw-r--r--tests/auto/declarative/visual/qmlgraphicsflickable/data/flickable-horizontal.3.pngbin0 -> 1427 bytes
-rw-r--r--tests/auto/declarative/visual/qmlgraphicsflickable/data/flickable-horizontal.qml1199
-rw-r--r--tests/auto/declarative/visual/qmlgraphicsflickable/data/flickable-vertical.0.pngbin0 -> 1872 bytes
-rw-r--r--tests/auto/declarative/visual/qmlgraphicsflickable/data/flickable-vertical.1.pngbin0 -> 1908 bytes
-rw-r--r--tests/auto/declarative/visual/qmlgraphicsflickable/data/flickable-vertical.2.pngbin0 -> 1846 bytes
-rw-r--r--tests/auto/declarative/visual/qmlgraphicsflickable/data/flickable-vertical.qml1107
-rw-r--r--tests/auto/declarative/visual/qmlgraphicsflickable/flickable-horizontal.qml37
-rw-r--r--tests/auto/declarative/visual/qmlgraphicsflickable/flickable-vertical.qml37
-rw-r--r--tests/auto/declarative/visual/webview/zooming/renderControl.html7
-rw-r--r--tests/benchmarks/declarative/qmlcomponent/samegame/BoomBlock.qml15
64 files changed, 5812 insertions, 2268 deletions
diff --git a/tests/auto/declarative/.gitignore b/tests/auto/declarative/.gitignore
index c8bbd2f..d937eb4 100644
--- a/tests/auto/declarative/.gitignore
+++ b/tests/auto/declarative/.gitignore
@@ -1,3 +1,4 @@
tst_*
!tst_*.*
+tst_*.debug
tst_*~
diff --git a/tests/auto/declarative/debugger/debugger.pro b/tests/auto/declarative/debugger/debugger.pro
new file mode 100644
index 0000000..f4a4476
--- /dev/null
+++ b/tests/auto/declarative/debugger/debugger.pro
@@ -0,0 +1,4 @@
+TEMPLATE = subdirs
+SUBDIRS += qmldebug \
+ qmldebugclient \
+ qmldebugservice
diff --git a/tests/auto/declarative/debugger/debuggerutil.cpp b/tests/auto/declarative/debugger/debuggerutil.cpp
new file mode 100644
index 0000000..8e93407
--- /dev/null
+++ b/tests/auto/declarative/debugger/debuggerutil.cpp
@@ -0,0 +1,102 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** 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 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <QSignalSpy>
+#include <QEventLoop>
+#include <QTimer>
+
+#include <private/qmldebugclient_p.h>
+#include <private/qmldebugservice_p.h>
+
+#include "debuggerutil_p.h"
+
+namespace QmlDebuggerTest {
+
+ void waitForSignal(QObject *receiver, const char *member) {
+ QEventLoop loop;
+ QTimer timer;
+ QObject::connect(&timer, SIGNAL(timeout()), &loop, SLOT(quit()));
+ QObject::connect(receiver, member, &loop, SLOT(quit()));
+ timer.start(5000);
+ loop.exec();
+ }
+
+}
+
+
+EchoService::EchoService(const QString &s, QObject *parent)
+ : QmlDebugService(s, parent), enabled(false)
+{
+}
+
+void EchoService::messageReceived(const QByteArray &ba)
+{
+ sendMessage(ba);
+}
+
+void EchoService::enabledChanged(bool e)
+{
+ emit enabledStateChanged();
+ enabled = e;
+}
+
+
+MyQmlDebugClient::MyQmlDebugClient(const QString &s, QmlDebugConnection *c)
+ : QmlDebugClient(s, c)
+{
+}
+
+QByteArray MyQmlDebugClient::waitForResponse()
+{
+ QSignalSpy spy(this, SIGNAL(serverMessage(QByteArray)));
+ QmlDebuggerTest::waitForSignal(this, SIGNAL(serverMessage(QByteArray)));
+ if (spy.count() == 0) {
+ qWarning() << "tst_QmlDebugClient: no response from server!";
+ return QByteArray();
+ }
+ return spy.at(0).at(0).value<QByteArray>();
+}
+
+void MyQmlDebugClient::messageReceived(const QByteArray &ba)
+{
+ emit serverMessage(ba);
+}
+
+
diff --git a/tests/auto/declarative/debugger/debuggerutil_p.h b/tests/auto/declarative/debugger/debuggerutil_p.h
new file mode 100644
index 0000000..155d550
--- /dev/null
+++ b/tests/auto/declarative/debugger/debuggerutil_p.h
@@ -0,0 +1,84 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** 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 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <QSignalSpy>
+#include <QEventLoop>
+#include <QTimer>
+
+#include <private/qmldebugclient_p.h>
+#include <private/qmldebugservice_p.h>
+
+namespace QmlDebuggerTest {
+
+ void waitForSignal(QObject *receiver, const char *member);
+}
+
+class EchoService : public QmlDebugService
+{
+ Q_OBJECT
+public:
+ EchoService(const QString &s, QObject *parent = 0);
+ bool enabled;
+
+signals:
+ void enabledStateChanged();
+
+protected:
+ virtual void messageReceived(const QByteArray &ba);
+
+ virtual void enabledChanged(bool e);
+};
+
+class MyQmlDebugClient : public QmlDebugClient
+{
+ Q_OBJECT
+public:
+ MyQmlDebugClient(const QString &s, QmlDebugConnection *c);
+
+ QByteArray waitForResponse();
+
+signals:
+ void serverMessage(const QByteArray &);
+
+protected:
+ virtual void messageReceived(const QByteArray &ba);
+};
+
+
diff --git a/tests/auto/declarative/qmldebug/qmldebug.pro b/tests/auto/declarative/debugger/qmldebugclient/qmldebugclient.pro
index 61f821e..6e68cd5 100644
--- a/tests/auto/declarative/qmldebug/qmldebug.pro
+++ b/tests/auto/declarative/debugger/qmldebugclient/qmldebugclient.pro
@@ -2,4 +2,6 @@ load(qttest_p4)
contains(QT_CONFIG,declarative): QT += network declarative
macx:CONFIG -= app_bundle
-SOURCES += tst_qmldebug.cpp
+HEADERS += ../debuggerutil_p.h
+SOURCES += tst_qmldebugclient.cpp \
+ ../debuggerutil.cpp
diff --git a/tests/auto/declarative/debugger/qmldebugclient/tst_qmldebugclient.cpp b/tests/auto/declarative/debugger/qmldebugclient/tst_qmldebugclient.cpp
new file mode 100644
index 0000000..db33061
--- /dev/null
+++ b/tests/auto/declarative/debugger/qmldebugclient/tst_qmldebugclient.cpp
@@ -0,0 +1,190 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** 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 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <qtest.h>
+#include <QSignalSpy>
+#include <QTimer>
+#include <QHostAddress>
+#include <QDebug>
+#include <QThread>
+
+#include <QtDeclarative/qmlengine.h>
+
+#include <private/qmldebug_p.h>
+#include <private/qmlenginedebug_p.h>
+#include <private/qmldebugclient_p.h>
+#include <private/qmldebugservice_p.h>
+
+#include "../debuggerutil_p.h"
+
+class tst_QmlDebugClient : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_QmlDebugClient(QmlDebugConnection *conn, QmlEngine *engine)
+ : m_conn(conn), m_engine(engine) {}
+
+ QmlDebugConnection *m_conn;
+ QmlEngine *m_engine;
+
+private slots:
+ void name();
+ void isEnabled();
+ void setEnabled();
+ void isConnected();
+ void sendMessage();
+};
+
+void tst_QmlDebugClient::name()
+{
+ QString name = "tst_QmlDebugClient::name()";
+
+ QmlDebugClient client(name, m_conn);
+ QCOMPARE(client.name(), name);
+}
+
+void tst_QmlDebugClient::isEnabled()
+{
+ QmlDebugClient client("tst_QmlDebugClient::isEnabled()", m_conn);
+ QCOMPARE(client.isEnabled(), false);
+}
+
+void tst_QmlDebugClient::setEnabled()
+{
+ EchoService service("tst_QmlDebugClient::setEnabled()");
+ MyQmlDebugClient client("tst_QmlDebugClient::setEnabled()", m_conn);
+
+ QCOMPARE(service.isEnabled(), false);
+
+ client.setEnabled(true);
+ QCOMPARE(client.isEnabled(), true);
+ QmlDebuggerTest::waitForSignal(&service, SIGNAL(enabledStateChanged()));
+ QCOMPARE(service.isEnabled(), true);
+
+ client.setEnabled(false);
+ QCOMPARE(client.isEnabled(), false);
+ QmlDebuggerTest::waitForSignal(&service, SIGNAL(enabledStateChanged()));
+ QCOMPARE(service.isEnabled(), false);
+}
+
+void tst_QmlDebugClient::isConnected()
+{
+ QmlDebugClient client1("tst_QmlDebugClient::isConnected() A", m_conn);
+ QCOMPARE(client1.isConnected(), true);
+
+ QmlDebugConnection conn;
+ QmlDebugClient client2("tst_QmlDebugClient::isConnected() B", &conn);
+ QCOMPARE(client2.isConnected(), false);
+
+ QmlDebugClient client3("tst_QmlDebugClient::isConnected() C", 0);
+ QCOMPARE(client3.isConnected(), false);
+
+ // duplicate plugin name
+ QTest::ignoreMessage(QtWarningMsg, "QmlDebugClient: Conflicting plugin name \"tst_QmlDebugClient::isConnected() A\" ");
+ QmlDebugClient client4("tst_QmlDebugClient::isConnected() A", m_conn);
+ QCOMPARE(client4.isConnected(), false);
+}
+
+void tst_QmlDebugClient::sendMessage()
+{
+ EchoService service("tst_QmlDebugClient::sendMessage()");
+ MyQmlDebugClient client("tst_QmlDebugClient::sendMessage()", m_conn);
+
+ QByteArray msg = "hello!";
+
+ client.sendMessage(msg);
+ QByteArray resp = client.waitForResponse();
+ QCOMPARE(resp, msg);
+}
+
+
+
+class tst_QmlDebugClient_Thread : public QThread
+{
+ Q_OBJECT
+public:
+ void run() {
+ QTest::qWait(1000);
+ connectToEngine();
+ }
+
+ QPointer<QmlEngine> m_engine;
+
+signals:
+ void testsFinished();
+
+public slots:
+
+ void connectToEngine()
+ {
+ QmlDebugConnection conn;
+ conn.connectToHost("127.0.0.1", 3768);
+ bool ok = conn.waitForConnected(5000);
+ Q_ASSERT(ok);
+ while (!m_engine)
+ QTest::qWait(50);
+
+ tst_QmlDebugClient test(&conn, m_engine);
+ QTest::qExec(&test);
+ emit testsFinished();
+ }
+};
+
+
+int main(int argc, char *argv[])
+{
+ QApplication app(argc, argv);
+ qputenv("QML_DEBUG_SERVER_PORT", "3768");
+
+ tst_QmlDebugClient_Thread thread;
+ QObject::connect(&thread, SIGNAL(testsFinished()), qApp, SLOT(quit()));
+ thread.start();
+
+ QmlEngine engine; // blocks until client connects
+
+ // start the test
+ thread.m_engine = &engine;
+
+ return app.exec();
+
+}
+
+#include "tst_qmldebugclient.moc"
diff --git a/tests/auto/declarative/debugger/qmldebugservice/qmldebugservice.pro b/tests/auto/declarative/debugger/qmldebugservice/qmldebugservice.pro
new file mode 100644
index 0000000..1b6762c
--- /dev/null
+++ b/tests/auto/declarative/debugger/qmldebugservice/qmldebugservice.pro
@@ -0,0 +1,7 @@
+load(qttest_p4)
+contains(QT_CONFIG,declarative): QT += network declarative
+macx:CONFIG -= app_bundle
+
+HEADERS += ../debuggerutil_p.h
+SOURCES += tst_qmldebugservice.cpp \
+ ../debuggerutil.cpp
diff --git a/tests/auto/declarative/debugger/qmldebugservice/tst_qmldebugservice.cpp b/tests/auto/declarative/debugger/qmldebugservice/tst_qmldebugservice.cpp
new file mode 100644
index 0000000..224e7e1
--- /dev/null
+++ b/tests/auto/declarative/debugger/qmldebugservice/tst_qmldebugservice.cpp
@@ -0,0 +1,222 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** 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 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <qtest.h>
+#include <QSignalSpy>
+#include <QTimer>
+#include <QHostAddress>
+#include <QDebug>
+#include <QThread>
+
+#include <QtDeclarative/qmlengine.h>
+
+#include <private/qmldebug_p.h>
+#include <private/qmlenginedebug_p.h>
+#include <private/qmldebugclient_p.h>
+#include <private/qmldebugservice_p.h>
+
+#include "../debuggerutil_p.h"
+
+class tst_QmlDebugService : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_QmlDebugService(QmlDebugConnection *conn, QmlEngine *engine)
+ : m_conn(conn), m_engine(engine) {}
+
+ QmlDebugConnection *m_conn;
+ QmlEngine *m_engine;
+
+private slots:
+ void name();
+ void isEnabled();
+ void enabledChanged();
+ void sendMessage();
+ void idForObject();
+ void objectForId();
+ void objectToString();
+};
+
+void tst_QmlDebugService::name()
+{
+ QString name = "tst_QmlDebugService::name()";
+
+ QmlDebugService service(name);
+ QCOMPARE(service.name(), name);
+}
+
+void tst_QmlDebugService::isEnabled()
+{
+ EchoService service("tst_QmlDebugService::isEnabled()", m_conn);
+ QCOMPARE(service.isEnabled(), false);
+
+ MyQmlDebugClient client("tst_QmlDebugService::isEnabled()", m_conn);
+ client.setEnabled(true);
+ QmlDebuggerTest::waitForSignal(&service, SIGNAL(enabledStateChanged()));
+ QCOMPARE(service.isEnabled(), true);
+
+ QTest::ignoreMessage(QtWarningMsg, "QmlDebugService: Conflicting plugin name \"tst_QmlDebugService::isEnabled()\" ");
+ QmlDebugService duplicate("tst_QmlDebugService::isEnabled()", m_conn);
+ QCOMPARE(duplicate.isEnabled(), false);
+}
+
+void tst_QmlDebugService::enabledChanged()
+{
+ EchoService service("tst_QmlDebugService::enabledChanged()");
+ MyQmlDebugClient client("tst_QmlDebugService::enabledChanged()", m_conn);
+
+ QCOMPARE(service.enabled, false);
+
+ client.setEnabled(true);
+ QmlDebuggerTest::waitForSignal(&service, SIGNAL(enabledStateChanged()));
+ QCOMPARE(service.enabled, true);
+}
+
+void tst_QmlDebugService::sendMessage()
+{
+ EchoService service("tst_QmlDebugService::sendMessage()");
+ MyQmlDebugClient client("tst_QmlDebugService::sendMessage()", m_conn);
+
+ QByteArray msg = "hello!";
+
+ client.sendMessage(msg);
+ QByteArray resp = client.waitForResponse();
+ QCOMPARE(resp, msg);
+}
+
+void tst_QmlDebugService::idForObject()
+{
+ QCOMPARE(QmlDebugService::idForObject(0), -1);
+
+ QObject *objA = new QObject;
+
+ int idA = QmlDebugService::idForObject(objA);
+ QVERIFY(idA >= 0);
+ QCOMPARE(QmlDebugService::objectForId(idA), objA);
+
+ int idAA = QmlDebugService::idForObject(objA);
+ QCOMPARE(idAA, idA);
+
+ QObject *objB = new QObject;
+ int idB = QmlDebugService::idForObject(objB);
+ QVERIFY(idB != idA);
+ QCOMPARE(QmlDebugService::objectForId(idB), objB);
+
+ delete objA;
+ delete objB;
+}
+
+void tst_QmlDebugService::objectForId()
+{
+ QCOMPARE(QmlDebugService::objectForId(-1), static_cast<QObject*>(0));
+ QCOMPARE(QmlDebugService::objectForId(1), static_cast<QObject*>(0));
+
+ QObject *obj = new QObject;
+ int id = QmlDebugService::idForObject(obj);
+ QCOMPARE(QmlDebugService::objectForId(id), obj);
+
+ delete obj;
+ QCOMPARE(QmlDebugService::objectForId(id), static_cast<QObject*>(0));
+}
+
+void tst_QmlDebugService::objectToString()
+{
+ QCOMPARE(QmlDebugService::objectToString(0), QString("NULL"));
+
+ QObject *obj = new QObject;
+ QCOMPARE(QmlDebugService::objectToString(obj), QString("QObject: <unnamed>"));
+
+ obj->setObjectName("Hello");
+ QCOMPARE(QmlDebugService::objectToString(obj), QString("QObject: Hello"));
+}
+
+
+class tst_QmlDebugService_Thread : public QThread
+{
+ Q_OBJECT
+public:
+ void run() {
+ QTest::qWait(1000);
+ connectToEngine();
+ }
+
+ QPointer<QmlEngine> m_engine;
+
+signals:
+ void testsFinished();
+
+public slots:
+
+ void connectToEngine()
+ {
+ QmlDebugConnection conn;
+ conn.connectToHost("127.0.0.1", 3768);
+ bool ok = conn.waitForConnected(5000);
+ Q_ASSERT(ok);
+ while (!m_engine)
+ QTest::qWait(50);
+
+ tst_QmlDebugService test(&conn, m_engine);
+ QTest::qExec(&test);
+ emit testsFinished();
+ }
+};
+
+
+int main(int argc, char *argv[])
+{
+ QApplication app(argc, argv);
+ qputenv("QML_DEBUG_SERVER_PORT", "3768");
+
+ tst_QmlDebugService_Thread thread;
+ QObject::connect(&thread, SIGNAL(testsFinished()), qApp, SLOT(quit()));
+ thread.start();
+
+ QmlEngine engine; // blocks until client connects
+
+ // start the test
+ thread.m_engine = &engine;
+
+ return app.exec();
+
+}
+
+#include "tst_qmldebugservice.moc"
diff --git a/tests/auto/declarative/declarative.pro b/tests/auto/declarative/declarative.pro
index 4c31998..d1194d9 100644
--- a/tests/auto/declarative/declarative.pro
+++ b/tests/auto/declarative/declarative.pro
@@ -5,6 +5,7 @@ SUBDIRS += \
animations \ # Cover
behaviors \ # Cover
datetimeformatter \ # Cover
+ debugger \ # Cover
examples \
layouts \ # Cover
qmlgraphicslistview \ # Cover
@@ -17,13 +18,14 @@ SUBDIRS += \
qmlbinding \ # Cover
qmlconnection \ # Cover
qmlcontext \ # Cover
- qmldebug \ # Cover
qmldom \ # Cover
qmlecmascript \ # Cover
qmlerror \ # Cover
qmlfontloader \ # Cover
qmlgraphicsitem \ # Cover
qmlgraphicsborderimage \ # Cover
+ qmlgraphicsflickable \ # Cover
+ qmlgraphicsflipable \ # Cover
qmlgraphicsparticles \ # Cover
qmlgraphicspositioners \ # Cover
qmlgraphicstext \ # Cover
diff --git a/tests/auto/declarative/qmldebug/tst_qmldebug.cpp b/tests/auto/declarative/qmldebug/tst_qmldebug.cpp
deleted file mode 100644
index 0890557..0000000
--- a/tests/auto/declarative/qmldebug/tst_qmldebug.cpp
+++ /dev/null
@@ -1,590 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** 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 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-#include <qtest.h>
-#include <QSignalSpy>
-#include <QTimer>
-#include <QHostAddress>
-#include <QDebug>
-#include <QThread>
-#include <QProcessEnvironment>
-#include <QProcess>
-
-#include <QtDeclarative/qmlengine.h>
-#include <QtDeclarative/qmlcontext.h>
-#include <QtDeclarative/qmlcomponent.h>
-#include <QtDeclarative/qmlexpression.h>
-#include <QtDeclarative/qmlmetatype.h>
-#include <QtDeclarative/qmlmetaproperty.h>
-#include <QtDeclarative/qmlcontext.h>
-#include <QtDeclarative/qmlbinding.h>
-
-#include <private/qmldebug_p.h>
-#include <private/qmlenginedebug_p.h>
-#include <private/qmldebugclient_p.h>
-#include <private/qmldebugservice_p.h>
-#include <private/qmlgraphicsrectangle_p.h>
-#include <private/qmlgraphicstext_p.h>
-#include <private/qmldeclarativedata_p.h>
-
-
-class tst_QmlDebug : public QObject
-{
- Q_OBJECT
-
-public:
- tst_QmlDebug(QmlDebugConnection *conn, QmlEngine *engine, QmlGraphicsItem *rootItem)
- : m_conn(conn), m_dbg(0), m_engine(engine), m_rootItem(rootItem) {}
-
-protected slots:
- void saveValueChange(const QByteArray &ba, const QVariant &v)
- {
- m_savedValueChanges[ba] = v;
- }
-
-private:
- QmlDebugObjectReference findRootObject();
- QmlDebugPropertyReference findProperty(const QList<QmlDebugPropertyReference> &props, const QString &name);
- QObject *findObjectWithId(const QObjectList &objects, int id);
- void waitForQuery(QmlDebugQuery *query);
- void recursiveObjectTest(QObject *o, const QmlDebugObjectReference &oref, bool recursive);
-
- QmlDebugConnection *m_conn;
- QmlEngineDebug *m_dbg;
- QmlEngine *m_engine;
- QmlGraphicsItem *m_rootItem;
- QHash<QByteArray, QVariant> m_savedValueChanges;
-
-private slots:
- void initTestCase();
-
- void watch_property();
- void watch_object();
- void watch_expression();
- void watch_expression_data();
-
- void queryAvailableEngines();
- void queryRootContexts();
- void queryObject();
- void queryObject_data();
- void queryExpressionResult();
- void queryExpressionResult_data();
-};
-
-QmlDebugObjectReference tst_QmlDebug::findRootObject()
-{
- QmlDebugEnginesQuery *q_engines = m_dbg->queryAvailableEngines(this);
- waitForQuery(q_engines);
-
- if (q_engines->engines().count() == 0)
- return QmlDebugObjectReference();
- QmlDebugRootContextQuery *q_context = m_dbg->queryRootContexts(q_engines->engines()[0].debugId(), this);
- waitForQuery(q_context);
-
- if (q_context->rootContext().objects().count() == 0)
- return QmlDebugObjectReference();
- QmlDebugObjectQuery *q_obj = m_dbg->queryObject(q_context->rootContext().objects()[0], this);
- waitForQuery(q_obj);
-
- QmlDebugObjectReference result = q_obj->object();
-
- delete q_engines;
- delete q_context;
- delete q_obj;
-
- return result;
-}
-
-QmlDebugPropertyReference tst_QmlDebug::findProperty(const QList<QmlDebugPropertyReference> &props, const QString &name)
-{
- foreach(const QmlDebugPropertyReference &p, props) {
- if (p.name() == name)
- return p;
- }
- return QmlDebugPropertyReference();
-}
-
-QObject *tst_QmlDebug::findObjectWithId(const QObjectList &objects, int id)
-{
- foreach (QObject *o, objects) {
- if (id == QmlDebugService::idForObject(o))
- return o;
- }
- return 0;
-}
-
-void tst_QmlDebug::waitForQuery(QmlDebugQuery *query)
-{
- QVERIFY(query);
- QCOMPARE(query->parent(), this);
- QEventLoop loop;
- QTimer timer;
- QVERIFY(query->state() == QmlDebugQuery::Waiting);
- connect(query, SIGNAL(stateChanged(State)), &loop, SLOT(quit()));
- connect(&timer, SIGNAL(timeout()), &loop, SLOT(quit()));
- timer.start(5000);
- loop.exec();
- if (!timer.isActive())
- QFAIL("query timed out");
-}
-
-void tst_QmlDebug::recursiveObjectTest(QObject *o, const QmlDebugObjectReference &oref, bool recursive)
-{
- const QMetaObject *meta = o->metaObject();
-
- QmlType *type = QmlMetaType::qmlType(o->metaObject());
- QString className = type ? type->qmlTypeName() : QString();
- className = className.mid(className.lastIndexOf(QLatin1Char('/'))+1);
-
- QCOMPARE(oref.debugId(), QmlDebugService::idForObject(o));
- QCOMPARE(oref.name(), o->objectName());
- QCOMPARE(oref.className(), className);
- QCOMPARE(oref.contextDebugId(), QmlDebugService::idForObject(qmlContext(o)));
-
- foreach (const QmlDebugObjectReference &cref, oref.children()) {
- // ignore children with no context
- if (cref.contextDebugId() < 0)
- continue;
-
- QObject *childObject = findObjectWithId(o->children(), cref.debugId());
- QVERIFY2(childObject, qPrintable(QString("Can't find QObject* for %1").arg(cref.className())));
-
- if (recursive)
- recursiveObjectTest(childObject, cref, true);
- }
-
- foreach (const QmlDebugPropertyReference &p, oref.properties()) {
- QMetaProperty pmeta = meta->property(meta->indexOfProperty(p.name().toUtf8().constData()));
- QVERIFY(pmeta.isValid());
-
- QCOMPARE(p.name(), QString::fromUtf8(pmeta.name()));
-
- if (pmeta.type() < QVariant::UserType) // TODO test complex types
- QCOMPARE(p.value(), pmeta.read(o));
-
- if (p.name() == "parent")
- QVERIFY(p.valueTypeName() == "QGraphicsObject*" || p.valueTypeName() == "QmlGraphicsItem*");
- else
- QCOMPARE(p.valueTypeName(), QString::fromUtf8(pmeta.typeName()));
-
- QmlAbstractBinding *binding = QmlMetaProperty(o, p.name()).binding();
- if (binding)
- QCOMPARE(binding->expression(), p.binding());
-
- QCOMPARE(p.hasNotifySignal(), pmeta.hasNotifySignal());
- }
-}
-
-void tst_QmlDebug::initTestCase()
-{
- m_dbg = new QmlEngineDebug(m_conn, this);
-}
-
-void tst_QmlDebug::watch_property()
-{
- QmlDebugObjectReference obj = findRootObject();
- QmlDebugPropertyReference prop = findProperty(obj.properties(), "width");
-
- QmlDebugPropertyWatch *watch = m_dbg->addWatch(prop, this);
- QCOMPARE(watch->state(), QmlDebugWatch::Waiting);
- QCOMPARE(watch->objectDebugId(), obj.debugId());
- QCOMPARE(watch->name(), prop.name());
-
- QSignalSpy spy(watch, SIGNAL(valueChanged(QByteArray,QVariant)));
- QEventLoop loop;
- QTimer timer;
- connect(watch, SIGNAL(valueChanged(QByteArray,QVariant)), &loop, SLOT(quit()));
- connect(&timer, SIGNAL(timeout()), &loop, SLOT(quit()));
-
- int origWidth = m_rootItem->property("width").toInt();
- timer.start(5000);
- m_rootItem->setProperty("width", origWidth*2);
- loop.exec();
-
- if (!timer.isActive())
- QFAIL("Did not receive valueChanged() for property");
-
- m_dbg->removeWatch(watch);
- delete watch;
-
- // restore original value and verify spy doesn't get a signal since watch has been removed
- m_rootItem->setProperty("width", origWidth);
- QTest::qWait(100);
- QCOMPARE(spy.count(), 1);
-
- QCOMPARE(spy.at(0).at(0).value<QByteArray>(), prop.name().toUtf8());
- QCOMPARE(spy.at(0).at(1).value<QVariant>(), qVariantFromValue(origWidth*2));
-}
-
-void tst_QmlDebug::watch_object()
-{
- QmlDebugEnginesQuery *q_engines = m_dbg->queryAvailableEngines(this);
- waitForQuery(q_engines);
-
- QmlDebugRootContextQuery *q_context = m_dbg->queryRootContexts(q_engines->engines()[0].debugId(), this);
- waitForQuery(q_context);
-
- QmlDebugObjectQuery *q_obj = m_dbg->queryObject(q_context->rootContext().objects()[0], this);
- waitForQuery(q_obj);
-
- QmlDebugObjectReference obj = q_obj->object();
-
- delete q_engines;
- delete q_context;
- delete q_obj;
-
- QmlDebugWatch *watch = m_dbg->addWatch(obj, this);
- QCOMPARE(watch->state(), QmlDebugWatch::Waiting);
- QCOMPARE(watch->objectDebugId(), obj.debugId());
-
- m_savedValueChanges.clear();
- connect(watch, SIGNAL(valueChanged(QByteArray,QVariant)),
- SLOT(saveValueChange(QByteArray,QVariant)));
-
- int origWidth = m_rootItem->property("width").toInt();
- int origHeight = m_rootItem->property("height").toInt();
- m_rootItem->setProperty("width", origWidth*2);
- m_rootItem->setProperty("height", origHeight*2);
-
- QEventLoop loop;
- QTimer timer;
- timer.start(5000);
- while (timer.isActive() &&
- (!m_savedValueChanges.contains("width") || !m_savedValueChanges.contains("height"))) {
- loop.processEvents(QEventLoop::AllEvents, 50);
- }
-
- QVariant newWidth = m_savedValueChanges["width"];
- QVariant newHeight = m_savedValueChanges["height"];
-
- m_dbg->removeWatch(watch);
- delete watch;
-
- // since watch has been removed, restoring the original values should not trigger a valueChanged()
- m_savedValueChanges.clear();
- m_rootItem->setProperty("width", origWidth);
- m_rootItem->setProperty("height", origHeight);
- QTest::qWait(100);
- QCOMPARE(m_savedValueChanges.count(), 0);
-
- if (newWidth.isNull() || newHeight.isNull()) {
- QString s = QString("Did not receive both width and height changes (width=%1, height=%2)")
- .arg(newWidth.toString()).arg(newHeight.toString());
- QFAIL(qPrintable(s));
- }
-
- QCOMPARE(newWidth, qVariantFromValue(origWidth*2));
- QCOMPARE(newHeight, qVariantFromValue(origHeight*2));
-}
-
-void tst_QmlDebug::watch_expression()
-{
- QFETCH(QString, expr);
- QFETCH(int, increment);
- QFETCH(int, incrementCount);
-
- int origWidth = m_rootItem->property("width").toInt();
-
- QmlDebugObjectReference obj = findRootObject();
- QmlDebugPropertyReference prop;
-
- QmlDebugObjectExpressionWatch *watch = m_dbg->addWatch(obj, expr, this);
- QCOMPARE(watch->state(), QmlDebugWatch::Waiting);
- QCOMPARE(watch->objectDebugId(), obj.debugId());
- QCOMPARE(watch->expression(), expr);
-
- QSignalSpy spy(watch, SIGNAL(valueChanged(QByteArray,QVariant)));
- int expectedSpyCount = incrementCount + 1; // should also get signal with expression's initial value
-
- int width = origWidth;
- for (int i=0; i<incrementCount+1; i++) {
- QTimer timer;
- timer.start(5000);
- if (i > 0) {
- width += increment;
- m_rootItem->setProperty("width", width);
- }
- QEventLoop loop;
- connect(&timer, SIGNAL(timeout()), &loop, SLOT(quit()));
- connect(watch, SIGNAL(valueChanged(QByteArray,QVariant)), &loop, SLOT(quit()));
- loop.exec();
- if (!timer.isActive())
- QFAIL("Did not receive valueChanged() signal for expression");
- }
-
- m_dbg->removeWatch(watch);
- delete watch;
-
- // restore original value and verify spy doesn't get a signal since watch has been removed
- m_rootItem->setProperty("width", origWidth);
- QTest::qWait(100);
- QCOMPARE(spy.count(), expectedSpyCount);
-
- width = origWidth + increment;
- for (int i=0; i<spy.count(); i++) {
- QCOMPARE(spy.at(i).at(1).value<QVariant>().toInt(), width);
- width += increment;
- }
-}
-
-void tst_QmlDebug::watch_expression_data()
-{
- QTest::addColumn<QString>("expr");
- QTest::addColumn<int>("increment");
- QTest::addColumn<int>("incrementCount");
-
- QTest::newRow("width") << "width" << 0 << 0;
- QTest::newRow("width+10") << "width + 10" << 10 << 5;
-}
-
-void tst_QmlDebug::queryAvailableEngines()
-{
- QmlDebugEnginesQuery *q_engines = m_dbg->queryAvailableEngines(this);
- waitForQuery(q_engines);
-
- // TODO test multiple engines
- QList<QmlDebugEngineReference> engines = q_engines->engines();
- QCOMPARE(engines.count(), 1);
-
- foreach(const QmlDebugEngineReference &e, engines) {
- QCOMPARE(e.debugId(), QmlDebugService::idForObject(m_engine));
- QCOMPARE(e.name(), m_engine->objectName());
- }
-
- delete q_engines;
-}
-
-void tst_QmlDebug::queryRootContexts()
-{
- QmlDebugEnginesQuery *q_engines = m_dbg->queryAvailableEngines(this);
- waitForQuery(q_engines);
-
- QmlDebugRootContextQuery *q_context = m_dbg->queryRootContexts(q_engines->engines()[0].debugId(), this);
- waitForQuery(q_context);
-
- QmlContext *actualContext = m_engine->rootContext();
- QmlDebugContextReference context = q_context->rootContext();
- QCOMPARE(context.debugId(), QmlDebugService::idForObject(actualContext));
- QCOMPARE(context.name(), actualContext->objectName());
-
- QCOMPARE(context.objects().count(), 2); // 2 objects created for engine in main()
-
- // root context query sends only root object data - it doesn't fill in
- // the children or property info
- QCOMPARE(context.objects()[0].properties().count(), 0);
- QCOMPARE(context.objects()[0].children().count(), 0);
-
- // TODO have multiple contexts
- QCOMPARE(context.contexts().count(), 0);
-
- delete q_engines;
- delete q_context;
-}
-
-void tst_QmlDebug::queryObject()
-{
- QFETCH(bool, recursive);
-
- QmlDebugEnginesQuery *q_engines = m_dbg->queryAvailableEngines(this);
- waitForQuery(q_engines);
-
- QmlDebugRootContextQuery *q_context = m_dbg->queryRootContexts(q_engines->engines()[0].debugId(), this);
- waitForQuery(q_context);
-
- QmlDebugObjectQuery *q_obj = 0;
- if (recursive)
- q_obj = m_dbg->queryObjectRecursive(q_context->rootContext().objects()[0], this);
- else
- q_obj = m_dbg->queryObject(q_context->rootContext().objects()[0], this);
- waitForQuery(q_obj);
-
- QmlDebugObjectReference obj = q_obj->object();
-
- delete q_engines;
- delete q_context;
- delete q_obj;
-
- // check source as defined in main()
- QmlDebugFileReference source = obj.source();
- QCOMPARE(source.url(), QUrl("file://"));
- QCOMPARE(source.lineNumber(), 2);
- QCOMPARE(source.columnNumber(), 1);
-
- // generically test all properties, children and childrens' properties
- recursiveObjectTest(m_rootItem, obj, recursive);
-
- if (recursive) {
- foreach(const QmlDebugObjectReference &child, obj.children())
- QVERIFY(child.properties().count() > 0);
-
- QmlDebugObjectReference rect;
- QmlDebugObjectReference text;
- foreach (const QmlDebugObjectReference &child, obj.children()) {
- if (child.className() == "Rectangle")
- rect = child;
- else if (child.className() == "Text")
- text = child;
- }
-
- // test specific property values
- QCOMPARE(findProperty(rect.properties(), "width").value(), qVariantFromValue(500));
- QCOMPARE(findProperty(rect.properties(), "height").value(), qVariantFromValue(600));
- QCOMPARE(findProperty(rect.properties(), "color").value(), qVariantFromValue(QColor("blue")));
-
- QCOMPARE(findProperty(text.properties(), "color").value(), qVariantFromValue(QColor("blue")));
-
- } else {
- foreach(const QmlDebugObjectReference &child, obj.children())
- QCOMPARE(child.properties().count(), 0);
- }
-}
-
-void tst_QmlDebug::queryObject_data()
-{
- QTest::addColumn<bool>("recursive");
-
- QTest::newRow("non-recursive") << false;
- QTest::newRow("recursive") << true;
-}
-
-void tst_QmlDebug::queryExpressionResult()
-{
- QFETCH(QString, expr);
- QFETCH(QVariant, result);
-
- QmlDebugEnginesQuery *q_engines = m_dbg->queryAvailableEngines(this);
- waitForQuery(q_engines);
-
- QmlDebugRootContextQuery *q_context = m_dbg->queryRootContexts(q_engines->engines()[0].debugId(), this);
- waitForQuery(q_context);
-
- QmlDebugExpressionQuery *q_expr = m_dbg->queryExpressionResult(q_context->rootContext().objects()[0].debugId(), expr, this);
- QCOMPARE(q_expr->expression(), expr);
- waitForQuery(q_expr);
-
- QCOMPARE(q_expr->result(), result);
-
- delete q_engines;
- delete q_context;
- delete q_expr;
-}
-
-void tst_QmlDebug::queryExpressionResult_data()
-{
- QTest::addColumn<QString>("expr");
- QTest::addColumn<QVariant>("result");
-
- QTest::newRow("width + 50") << "width + 50" << qVariantFromValue(60);
- QTest::newRow("blueRect.width") << "blueRect.width" << qVariantFromValue(500);
- QTest::newRow("bad expr") << "aeaef" << qVariantFromValue(QString("<undefined>"));
-}
-
-
-class TestRunnerThread : public QThread
-{
- Q_OBJECT
-public:
- void run() {
- QTest::qWait(1000);
- connectToEngine();
- }
-
- QPointer<QmlEngine> m_engine;
- QPointer<QmlGraphicsItem> m_item;
-
-signals:
- void testsFinished();
-
-public slots:
-
- void connectToEngine()
- {
- QmlDebugConnection conn;
- conn.connectToHost("127.0.0.1", 3768);
- bool ok = conn.waitForConnected(5000);
- Q_ASSERT(ok);
- while (!m_engine && !m_item)
- QTest::qWait(50);
-
- tst_QmlDebug test(&conn, m_engine, m_item);
- QTest::qExec(&test);
- emit testsFinished();
- }
-};
-
-
-int main(int argc, char *argv[])
-{
- QApplication app(argc, argv);
- qputenv("QML_DEBUG_SERVER_PORT", "3768");
-
- TestRunnerThread thread;
- QObject::connect(&thread, SIGNAL(testsFinished()), qApp, SLOT(quit()));
- thread.start();
-
- QmlEngine engine; // blocks until client connects
-
- QmlComponent component(&engine,
- "import Qt 4.6\n"
- "Item {\n"
- "width: 10; height: 20;\n"
- "Rectangle { id: blueRect; width: 500; height: 600; color: \"blue\"; }"
- "Text { color: blueRect.color; }"
- "}\n",
- QUrl("file://"));
- Q_ASSERT(component.isReady());
- QObject *o = component.create();
- QObject::connect(&thread, SIGNAL(testsFinished()), o, SLOT(deleteLater()));
-
- // allows us to test that multiple contexts can be detected
- QObject *o2 = component.create();
- QObject::connect(&thread, SIGNAL(testsFinished()), o2, SLOT(deleteLater()));
-
- // start the test
- thread.m_engine = &engine;
- thread.m_item = qobject_cast<QmlGraphicsItem*>(o);
-
- return app.exec();
-
-}
-
-//QTEST_MAIN(tst_QmlDebug)
-
-#include "tst_qmldebug.moc"
diff --git a/tests/auto/declarative/qmlgraphicsflickable/data/flickable01.qml b/tests/auto/declarative/qmlgraphicsflickable/data/flickable01.qml
new file mode 100644
index 0000000..8a1843c
--- /dev/null
+++ b/tests/auto/declarative/qmlgraphicsflickable/data/flickable01.qml
@@ -0,0 +1,4 @@
+import Qt 4.6
+
+Flickable {
+}
diff --git a/tests/auto/declarative/qmlgraphicsflickable/data/flickable02.qml b/tests/auto/declarative/qmlgraphicsflickable/data/flickable02.qml
new file mode 100644
index 0000000..cf98dd9
--- /dev/null
+++ b/tests/auto/declarative/qmlgraphicsflickable/data/flickable02.qml
@@ -0,0 +1,14 @@
+import Qt 4.6
+
+Flickable {
+ width: 100; height: 100
+ viewportWidth: row.width; viewportHeight: row.height
+
+ Row {
+ id: row
+ Repeater {
+ model: 4
+ Rectangle { width: 200; height: 300; color: dayColor }
+ }
+ }
+}
diff --git a/tests/auto/declarative/qmlgraphicsflickable/data/flickable03.qml b/tests/auto/declarative/qmlgraphicsflickable/data/flickable03.qml
new file mode 100644
index 0000000..001bf2f
--- /dev/null
+++ b/tests/auto/declarative/qmlgraphicsflickable/data/flickable03.qml
@@ -0,0 +1,14 @@
+import Qt 4.6
+
+Flickable {
+ width: 100; height: 100
+ viewportWidth: column.width; viewportHeight: column.height
+
+ Column {
+ id: column
+ Repeater {
+ model: 4
+ Rectangle { width: 200; height: 300; color: dayColor }
+ }
+ }
+}
diff --git a/tests/auto/declarative/qmlgraphicsflickable/data/flickable04.qml b/tests/auto/declarative/qmlgraphicsflickable/data/flickable04.qml
new file mode 100644
index 0000000..5a27869
--- /dev/null
+++ b/tests/auto/declarative/qmlgraphicsflickable/data/flickable04.qml
@@ -0,0 +1,16 @@
+import Qt 4.6
+
+Flickable {
+ width: 100; height: 100
+ viewportWidth: column.width; viewportHeight: column.height
+ pressDelay: 200; overShoot: false; interactive: false
+ maximumFlickVelocity: 2000
+
+ Column {
+ id: column
+ Repeater {
+ model: 4
+ Rectangle { width: 200; height: 300; color: dayColor }
+ }
+ }
+}
diff --git a/tests/auto/declarative/qmlgraphicsflickable/qmlgraphicsflickable.pro b/tests/auto/declarative/qmlgraphicsflickable/qmlgraphicsflickable.pro
new file mode 100644
index 0000000..7c4c959
--- /dev/null
+++ b/tests/auto/declarative/qmlgraphicsflickable/qmlgraphicsflickable.pro
@@ -0,0 +1,8 @@
+load(qttest_p4)
+contains(QT_CONFIG,declarative): QT += declarative gui
+macx:CONFIG -= app_bundle
+
+SOURCES += tst_qmlgraphicsflickable.cpp
+
+# Define SRCDIR equal to test's source directory
+DEFINES += SRCDIR=\\\"$$PWD\\\"
diff --git a/tests/auto/declarative/qmlgraphicsflickable/tst_qmlgraphicsflickable.cpp b/tests/auto/declarative/qmlgraphicsflickable/tst_qmlgraphicsflickable.cpp
new file mode 100644
index 0000000..b11de80
--- /dev/null
+++ b/tests/auto/declarative/qmlgraphicsflickable/tst_qmlgraphicsflickable.cpp
@@ -0,0 +1,145 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** 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 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <qtest.h>
+#include <QtDeclarative/qmlengine.h>
+#include <QtDeclarative/qmlcomponent.h>
+#include <private/qmlgraphicsflickable_p.h>
+#include <private/qmlvaluetype_p.h>
+#include <math.h>
+
+class tst_qmlgraphicsflickable : public QObject
+{
+ Q_OBJECT
+public:
+ tst_qmlgraphicsflickable();
+
+private slots:
+ void create();
+ void horizontalViewportSize();
+ void verticalViewportSize();
+ void properties();
+
+private:
+ QmlEngine engine;
+};
+
+tst_qmlgraphicsflickable::tst_qmlgraphicsflickable()
+{
+}
+
+void tst_qmlgraphicsflickable::create()
+{
+ QmlEngine engine;
+ QmlComponent c(&engine, QUrl("file://" SRCDIR "/data/flickable01.qml"));
+ QmlGraphicsFlickable *obj = qobject_cast<QmlGraphicsFlickable*>(c.create());
+
+ QVERIFY(obj != 0);
+ QCOMPARE(obj->isAtXBeginning(), true);
+ QCOMPARE(obj->isAtXEnd(), false);
+ QCOMPARE(obj->isAtYBeginning(), true);
+ QCOMPARE(obj->isAtYEnd(), false);
+ QCOMPARE(obj->viewportX(), 0.);
+ QCOMPARE(obj->viewportY(), 0.);
+
+ QCOMPARE(obj->horizontalVelocity(), 0.);
+ QCOMPARE(obj->verticalVelocity(), 0.);
+ QCOMPARE(obj->reportedVelocitySmoothing(), 100.);
+
+ QCOMPARE(obj->isInteractive(), true);
+ QCOMPARE(obj->overShoot(), true);
+ QCOMPARE(obj->pressDelay(), 0);
+ QCOMPARE(obj->maximumFlickVelocity(), 5000.);
+
+ delete obj;
+}
+
+void tst_qmlgraphicsflickable::horizontalViewportSize()
+{
+ QmlEngine engine;
+ QmlComponent c(&engine, QUrl("file://" SRCDIR "/data/flickable02.qml"));
+ QmlGraphicsFlickable *obj = qobject_cast<QmlGraphicsFlickable*>(c.create());
+
+ QVERIFY(obj != 0);
+ QCOMPARE(obj->viewportWidth(), 800.);
+ QCOMPARE(obj->viewportHeight(), 300.);
+ QCOMPARE(obj->isAtXBeginning(), true);
+ QCOMPARE(obj->isAtXEnd(), false);
+ QCOMPARE(obj->isAtYBeginning(), true);
+ QCOMPARE(obj->isAtYEnd(), false);
+
+ delete obj;
+}
+
+void tst_qmlgraphicsflickable::verticalViewportSize()
+{
+ QmlEngine engine;
+ QmlComponent c(&engine, QUrl("file://" SRCDIR "/data/flickable03.qml"));
+ QmlGraphicsFlickable *obj = qobject_cast<QmlGraphicsFlickable*>(c.create());
+
+ QVERIFY(obj != 0);
+ QCOMPARE(obj->viewportWidth(), 200.);
+ QCOMPARE(obj->viewportHeight(), 1200.);
+ QCOMPARE(obj->isAtXBeginning(), true);
+ QCOMPARE(obj->isAtXEnd(), false);
+ QCOMPARE(obj->isAtYBeginning(), true);
+ QCOMPARE(obj->isAtYEnd(), false);
+
+ delete obj;
+}
+
+void tst_qmlgraphicsflickable::properties()
+{
+ QmlEngine engine;
+ QmlComponent c(&engine, QUrl("file://" SRCDIR "/data/flickable04.qml"));
+ QmlGraphicsFlickable *obj = qobject_cast<QmlGraphicsFlickable*>(c.create());
+
+ QVERIFY(obj != 0);
+ QCOMPARE(obj->isInteractive(), false);
+ QCOMPARE(obj->overShoot(), false);
+ QCOMPARE(obj->pressDelay(), 200);
+ QCOMPARE(obj->maximumFlickVelocity(), 2000.);
+
+ delete obj;
+}
+
+QTEST_MAIN(tst_qmlgraphicsflickable)
+
+#include "tst_qmlgraphicsflickable.moc"
diff --git a/tests/auto/declarative/qmlgraphicsflipable/data/test-flipable.qml b/tests/auto/declarative/qmlgraphicsflipable/data/test-flipable.qml
new file mode 100644
index 0000000..21d356d
--- /dev/null
+++ b/tests/auto/declarative/qmlgraphicsflipable/data/test-flipable.qml
@@ -0,0 +1,9 @@
+import Qt 4.6
+
+Flipable {
+ id: flipable
+ width: 640; height: 480
+
+ front: Rectangle { anchors.fill: flipable }
+ back: Rectangle { anchors.fill: flipable }
+}
diff --git a/tests/auto/declarative/qmlgraphicsflipable/qmlgraphicsflipable.pro b/tests/auto/declarative/qmlgraphicsflipable/qmlgraphicsflipable.pro
new file mode 100644
index 0000000..b046086
--- /dev/null
+++ b/tests/auto/declarative/qmlgraphicsflipable/qmlgraphicsflipable.pro
@@ -0,0 +1,8 @@
+load(qttest_p4)
+contains(QT_CONFIG,declarative): QT += declarative gui
+macx:CONFIG -= app_bundle
+
+SOURCES += tst_qmlgraphicsflipable.cpp
+
+# Define SRCDIR equal to test's source directory
+DEFINES += SRCDIR=\\\"$$PWD\\\"
diff --git a/tests/auto/declarative/qmlgraphicsflipable/tst_qmlgraphicsflipable.cpp b/tests/auto/declarative/qmlgraphicsflipable/tst_qmlgraphicsflipable.cpp
new file mode 100644
index 0000000..f1a3ec8
--- /dev/null
+++ b/tests/auto/declarative/qmlgraphicsflipable/tst_qmlgraphicsflipable.cpp
@@ -0,0 +1,113 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** 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 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <qtest.h>
+#include <QtDeclarative/qmlengine.h>
+#include <QtDeclarative/qmlcomponent.h>
+#include <private/qmlgraphicsflipable_p.h>
+#include <private/qmlvaluetype_p.h>
+#include <QFontMetrics>
+#include <private/qmlgraphicsrectangle_p.h>
+#include <math.h>
+
+class tst_qmlgraphicsflipable : public QObject
+{
+ Q_OBJECT
+public:
+ tst_qmlgraphicsflipable();
+
+private slots:
+ void create();
+ void checkFrontAndBack();
+ void setFrontAndBack();
+
+private:
+ QmlEngine engine;
+};
+
+tst_qmlgraphicsflipable::tst_qmlgraphicsflipable()
+{
+}
+
+void tst_qmlgraphicsflipable::create()
+{
+ QmlEngine engine;
+ QmlComponent c(&engine, QUrl("file://" SRCDIR "/data/test-flipable.qml"));
+ QmlGraphicsFlipable *obj = qobject_cast<QmlGraphicsFlipable*>(c.create());
+
+ QVERIFY(obj != 0);
+ delete obj;
+}
+
+void tst_qmlgraphicsflipable::checkFrontAndBack()
+{
+ QmlEngine engine;
+ QmlComponent c(&engine, QUrl("file://" SRCDIR "/data/test-flipable.qml"));
+ QmlGraphicsFlipable *obj = qobject_cast<QmlGraphicsFlipable*>(c.create());
+
+ QVERIFY(obj != 0);
+ QVERIFY(obj->front() != 0);
+ QVERIFY(obj->back() != 0);
+ delete obj;
+}
+
+void tst_qmlgraphicsflipable::setFrontAndBack()
+{
+ QmlEngine engine;
+ QmlComponent c(&engine, QUrl("file://" SRCDIR "/data/test-flipable.qml"));
+ QmlGraphicsFlipable *obj = qobject_cast<QmlGraphicsFlipable*>(c.create());
+
+ QVERIFY(obj != 0);
+ QVERIFY(obj->front() != 0);
+ QVERIFY(obj->back() != 0);
+
+ QString message = "QML " + QString(obj->metaObject()->className()) + " (" + c.url().toString() + ":3:1) front is a write-once property";
+ QTest::ignoreMessage(QtWarningMsg, qPrintable(message));
+ obj->setFront(new QmlGraphicsRectangle());
+
+ message = "QML " + QString(obj->metaObject()->className()) + " (" + c.url().toString() + ":3:1) back is a write-once property";
+ QTest::ignoreMessage(QtWarningMsg, qPrintable(message));
+ obj->setBack(new QmlGraphicsRectangle());
+ delete obj;
+}
+
+QTEST_MAIN(tst_qmlgraphicsflipable)
+
+#include "tst_qmlgraphicsflipable.moc"
diff --git a/tests/auto/declarative/qmlgraphicsgridview/data/gridview.qml b/tests/auto/declarative/qmlgraphicsgridview/data/gridview.qml
index 37eb622..344b4b5 100644
--- a/tests/auto/declarative/qmlgraphicsgridview/data/gridview.qml
+++ b/tests/auto/declarative/qmlgraphicsgridview/data/gridview.qml
@@ -43,6 +43,7 @@ Rectangle {
height: 320
cellWidth: 80
cellHeight: 60
+ flow: (testTopToBottom == false) ? "LeftToRight" : "TopToBottom"
model: testModel
delegate: myDelegate
}
diff --git a/tests/auto/declarative/qmlgraphicsgridview/tst_qmlgraphicsgridview.cpp b/tests/auto/declarative/qmlgraphicsgridview/tst_qmlgraphicsgridview.cpp
index 7c32d14..d99b16f 100644
--- a/tests/auto/declarative/qmlgraphicsgridview/tst_qmlgraphicsgridview.cpp
+++ b/tests/auto/declarative/qmlgraphicsgridview/tst_qmlgraphicsgridview.cpp
@@ -53,12 +53,13 @@ public:
tst_QmlGraphicsGridView();
private slots:
- void currentIndex();
void items();
void changed();
void inserted();
void removed();
void moved();
+ void currentIndex();
+ void changeFlow();
private:
QmlView *createView(const QString &filename);
@@ -147,6 +148,7 @@ void tst_QmlGraphicsGridView::items()
QmlContext *ctxt = canvas->rootContext();
ctxt->setContextProperty("testModel", &model);
+ ctxt->setContextProperty("testTopToBottom", QVariant(false));
canvas->execute();
qApp->processEvents();
@@ -194,6 +196,7 @@ void tst_QmlGraphicsGridView::changed()
QmlContext *ctxt = canvas->rootContext();
ctxt->setContextProperty("testModel", &model);
+ ctxt->setContextProperty("testTopToBottom", QVariant(false));
canvas->execute();
qApp->processEvents();
@@ -226,6 +229,7 @@ void tst_QmlGraphicsGridView::inserted()
QmlContext *ctxt = canvas->rootContext();
ctxt->setContextProperty("testModel", &model);
+ ctxt->setContextProperty("testTopToBottom", QVariant(false));
canvas->execute();
qApp->processEvents();
@@ -253,8 +257,8 @@ void tst_QmlGraphicsGridView::inserted()
// Confirm items positioned correctly
for (int i = 0; i < model.count(); ++i) {
QmlGraphicsItem *item = findItem<QmlGraphicsItem>(viewport, "wrapper", i);
- QVERIFY(item->x() == (i%3)*80);
- QVERIFY(item->y() == (i/3)*60);
+ QCOMPARE(item->x(), (i%3)*80.0);
+ QCOMPARE(item->y(), (i/3)*60.0);
}
model.insertItem(0, "Foo", "1111"); // zero index, and current item
@@ -306,6 +310,7 @@ void tst_QmlGraphicsGridView::removed()
QmlContext *ctxt = canvas->rootContext();
ctxt->setContextProperty("testModel", &model);
+ ctxt->setContextProperty("testTopToBottom", QVariant(false));
canvas->execute();
qApp->processEvents();
@@ -420,6 +425,7 @@ void tst_QmlGraphicsGridView::moved()
QmlContext *ctxt = canvas->rootContext();
ctxt->setContextProperty("testModel", &model);
+ ctxt->setContextProperty("testTopToBottom", QVariant(false));
canvas->execute();
qApp->processEvents();
@@ -534,9 +540,12 @@ void tst_QmlGraphicsGridView::currentIndex()
QmlGraphicsItem *viewport = gridview->viewport();
QVERIFY(viewport != 0);
+ QTest::qWait(500);
+
// current item should be third item
QCOMPARE(gridview->currentIndex(), 5);
QCOMPARE(gridview->currentItem(), findItem<QmlGraphicsItem>(viewport, "wrapper", 5));
+ QCOMPARE(gridview->currentItem()->y(), gridview->highlightItem()->y());
gridview->moveCurrentIndexRight();
QCOMPARE(gridview->currentIndex(), 6);
@@ -605,6 +614,79 @@ void tst_QmlGraphicsGridView::currentIndex()
QVERIFY(key.isAccepted());
QCOMPARE(gridview->currentIndex(), 0);
+ // turn off auto highlight
+ gridview->setHighlightFollowsCurrentItem(false);
+ QVERIFY(gridview->highlightFollowsCurrentItem() == false);
+
+ QTest::qWait(500);
+ QVERIFY(gridview->highlightItem());
+ qreal hlPosX = gridview->highlightItem()->x();
+ qreal hlPosY = gridview->highlightItem()->y();
+
+ gridview->setCurrentIndex(5);
+ QTest::qWait(500);
+ QCOMPARE(gridview->highlightItem()->x(), hlPosX);
+ QCOMPARE(gridview->highlightItem()->y(), hlPosY);
+
+ delete canvas;
+}
+
+void tst_QmlGraphicsGridView::changeFlow()
+{
+ QmlView *canvas = createView(SRCDIR "/data/gridview.qml");
+
+ TestModel model;
+ for (int i = 0; i < 30; i++)
+ model.addItem("Item" + QString::number(i), QString::number(i));
+
+ QmlContext *ctxt = canvas->rootContext();
+ ctxt->setContextProperty("testModel", &model);
+ ctxt->setContextProperty("testTopToBottom", QVariant(false));
+
+ canvas->execute();
+ qApp->processEvents();
+
+ QmlGraphicsGridView *gridview = findItem<QmlGraphicsGridView>(canvas->root(), "grid");
+ QVERIFY(gridview != 0);
+
+ QmlGraphicsItem *viewport = gridview->viewport();
+ QVERIFY(viewport != 0);
+
+ // Confirm items positioned correctly and indexes correct
+ int itemCount = findItems<QmlGraphicsItem>(viewport, "wrapper").count();
+ for (int i = 3; i < model.count() && i < itemCount; ++i) {
+ QmlGraphicsItem *item = findItem<QmlGraphicsItem>(viewport, "wrapper", i);
+ if (!item) qWarning() << "Item" << i << "not found";
+ QVERIFY(item);
+ QCOMPARE(item->x(), qreal((i%3)*80));
+ QCOMPARE(item->y(), qreal((i/3)*60));
+ QmlGraphicsText *name = findItem<QmlGraphicsText>(viewport, "textName", i);
+ QVERIFY(name != 0);
+ QCOMPARE(name->text(), model.name(i));
+ QmlGraphicsText *number = findItem<QmlGraphicsText>(viewport, "textNumber", i);
+ QVERIFY(number != 0);
+ QCOMPARE(number->text(), model.number(i));
+ }
+
+ ctxt->setContextProperty("testTopToBottom", QVariant(true));
+ QTest::qWait(500);
+
+ // Confirm items positioned correctly and indexes correct
+ itemCount = findItems<QmlGraphicsItem>(viewport, "wrapper").count();
+ for (int i = 3; i < model.count() && i < itemCount; ++i) {
+ QmlGraphicsItem *item = findItem<QmlGraphicsItem>(viewport, "wrapper", i);
+ if (!item) qWarning() << "Item" << i << "not found";
+ QVERIFY(item);
+ QCOMPARE(item->x(), qreal((i/5)*80));
+ QCOMPARE(item->y(), qreal((i%5)*60));
+ QmlGraphicsText *name = findItem<QmlGraphicsText>(viewport, "textName", i);
+ QVERIFY(name != 0);
+ QCOMPARE(name->text(), model.name(i));
+ QmlGraphicsText *number = findItem<QmlGraphicsText>(viewport, "textNumber", i);
+ QVERIFY(number != 0);
+ QCOMPARE(number->text(), model.number(i));
+ }
+
delete canvas;
}
diff --git a/tests/auto/declarative/qmlgraphicsitem/data/keys.qml b/tests/auto/declarative/qmlgraphicsitem/data/keys.qml
index 7c16559..f3c1f7b 100644
--- a/tests/auto/declarative/qmlgraphicsitem/data/keys.qml
+++ b/tests/auto/declarative/qmlgraphicsitem/data/keys.qml
@@ -5,7 +5,10 @@ Item {
Keys.onPressed: keysTestObject.keyPress(event.key, event.text, event.modifiers)
Keys.onReleased: { keysTestObject.keyRelease(event.key, event.text, event.modifiers); event.accepted = true; }
Keys.onReturnPressed: keysTestObject.keyPress(event.key, "Return", event.modifiers)
+ Keys.onDigit0Pressed: keysTestObject.keyPress(event.key, event.text, event.modifiers)
+ Keys.onDigit9Pressed: { event.accepted = false; keysTestObject.keyPress(event.key, event.text, event.modifiers) }
Keys.forwardTo: [ item2 ]
+ Keys.enabled: enableKeyHanding
Item {
id: item2
diff --git a/tests/auto/declarative/qmlgraphicsitem/tst_qmlgraphicsitem.cpp b/tests/auto/declarative/qmlgraphicsitem/tst_qmlgraphicsitem.cpp
index b4b3eaf..66ef982 100644
--- a/tests/auto/declarative/qmlgraphicsitem/tst_qmlgraphicsitem.cpp
+++ b/tests/auto/declarative/qmlgraphicsitem/tst_qmlgraphicsitem.cpp
@@ -113,6 +113,8 @@ void tst_QmlGraphicsItem::keys()
KeysTestObject *testObject = new KeysTestObject;
canvas->rootContext()->setContextProperty("keysTestObject", testObject);
+ canvas->rootContext()->setContextProperty("enableKeyHanding", QVariant(true));
+
canvas->execute();
canvas->show();
qApp->processEvents();
@@ -150,6 +152,35 @@ void tst_QmlGraphicsItem::keys()
QVERIFY(testObject->mModifiers == Qt::NoModifier);
QVERIFY(key.isAccepted());
+ testObject->reset();
+
+ key = QKeyEvent(QEvent::KeyPress, Qt::Key_0, Qt::NoModifier, "0", false, 1);
+ QApplication::sendEvent(canvas, &key);
+ QCOMPARE(testObject->mKey, int(Qt::Key_0));
+ QCOMPARE(testObject->mForwardedKey, int(Qt::Key_0));
+ QCOMPARE(testObject->mText, QLatin1String("0"));
+ QVERIFY(testObject->mModifiers == Qt::NoModifier);
+ QVERIFY(key.isAccepted());
+
+ testObject->reset();
+
+ key = QKeyEvent(QEvent::KeyPress, Qt::Key_9, Qt::NoModifier, "9", false, 1);
+ QApplication::sendEvent(canvas, &key);
+ QCOMPARE(testObject->mKey, int(Qt::Key_9));
+ QCOMPARE(testObject->mForwardedKey, int(Qt::Key_9));
+ QCOMPARE(testObject->mText, QLatin1String("9"));
+ QVERIFY(testObject->mModifiers == Qt::NoModifier);
+ QVERIFY(!key.isAccepted());
+
+ testObject->reset();
+
+ canvas->rootContext()->setContextProperty("enableKeyHanding", QVariant(false));
+
+ key = QKeyEvent(QEvent::KeyPress, Qt::Key_Return, Qt::NoModifier, "", false, 1);
+ QApplication::sendEvent(canvas, &key);
+ QCOMPARE(testObject->mKey, 0);
+ QVERIFY(!key.isAccepted());
+
delete canvas;
delete testObject;
}
diff --git a/tests/auto/declarative/qmlgraphicslistview/data/listview-initCurrent.qml b/tests/auto/declarative/qmlgraphicslistview/data/listview-initCurrent.qml
index 5b1fee6..65a9d8a 100644
--- a/tests/auto/declarative/qmlgraphicslistview/data/listview-initCurrent.qml
+++ b/tests/auto/declarative/qmlgraphicslistview/data/listview-initCurrent.qml
@@ -42,6 +42,7 @@ Rectangle {
currentIndex: 3
width: 240
height: 320
+ keyNavigationWraps: testWrap
model: testModel
delegate: myDelegate
highlightMoveSpeed: 1000
diff --git a/tests/auto/declarative/qmlgraphicslistview/data/listview.qml b/tests/auto/declarative/qmlgraphicslistview/data/listview.qml
index 075e464..280173b 100644
--- a/tests/auto/declarative/qmlgraphicslistview/data/listview.qml
+++ b/tests/auto/declarative/qmlgraphicslistview/data/listview.qml
@@ -79,7 +79,7 @@ Rectangle {
width: 240
height: 320
model: testModel
- delegate: animate ? myDelegate : animatedDelegate
+ delegate: testAnimate ? myDelegate : animatedDelegate
highlightMoveSpeed: 1000
}
}
diff --git a/tests/auto/declarative/qmlgraphicslistview/tst_qmlgraphicslistview.cpp b/tests/auto/declarative/qmlgraphicslistview/tst_qmlgraphicslistview.cpp
index dc339ea..83b8d79 100644
--- a/tests/auto/declarative/qmlgraphicslistview/tst_qmlgraphicslistview.cpp
+++ b/tests/auto/declarative/qmlgraphicslistview/tst_qmlgraphicslistview.cpp
@@ -242,6 +242,7 @@ void tst_QmlGraphicsListView::items()
QmlContext *ctxt = canvas->rootContext();
ctxt->setContextProperty("testModel", &model);
+ ctxt->setContextProperty("testAnimate", QVariant(false));
canvas->execute();
qApp->processEvents();
@@ -289,6 +290,7 @@ void tst_QmlGraphicsListView::changed()
QmlContext *ctxt = canvas->rootContext();
ctxt->setContextProperty("testModel", &model);
+ ctxt->setContextProperty("testAnimate", QVariant(false));
canvas->execute();
qApp->processEvents();
@@ -322,6 +324,7 @@ void tst_QmlGraphicsListView::inserted()
QmlContext *ctxt = canvas->rootContext();
ctxt->setContextProperty("testModel", &model);
+ ctxt->setContextProperty("testAnimate", QVariant(false));
canvas->execute();
qApp->processEvents();
@@ -408,7 +411,7 @@ void tst_QmlGraphicsListView::removed(bool animated)
QmlContext *ctxt = canvas->rootContext();
ctxt->setContextProperty("testModel", &model);
- ctxt->setContextProperty("animate", QVariant(animated));
+ ctxt->setContextProperty("testAnimate", QVariant(animated));
canvas->execute();
qApp->processEvents();
@@ -519,6 +522,7 @@ void tst_QmlGraphicsListView::moved()
QmlContext *ctxt = canvas->rootContext();
ctxt->setContextProperty("testModel", &model);
+ ctxt->setContextProperty("testAnimate", QVariant(false));
canvas->execute();
qApp->processEvents();
@@ -621,6 +625,7 @@ void tst_QmlGraphicsListView::enforceRange()
QCOMPARE(listview->preferredHighlightBegin(), 100.0);
QCOMPARE(listview->preferredHighlightEnd(), 100.0);
+ QCOMPARE(listview->highlightRangeMode(), QmlGraphicsListView::StrictlyEnforceRange);
QmlGraphicsItem *viewport = listview->viewport();
QVERIFY(viewport != 0);
@@ -656,6 +661,7 @@ void tst_QmlGraphicsListView::spacing()
QmlContext *ctxt = canvas->rootContext();
ctxt->setContextProperty("testModel", &model);
+ ctxt->setContextProperty("testAnimate", QVariant(false));
canvas->execute();
qApp->processEvents();
@@ -778,6 +784,7 @@ void tst_QmlGraphicsListView::currentIndex()
QmlContext *ctxt = canvas->rootContext();
ctxt->setContextProperty("testModel", &model);
+ ctxt->setContextProperty("testWrap", QVariant(false));
QString filename(SRCDIR "/data/listview-initCurrent.qml");
QFile file(filename);
@@ -794,9 +801,12 @@ void tst_QmlGraphicsListView::currentIndex()
QmlGraphicsItem *viewport = listview->viewport();
QVERIFY(viewport != 0);
+ QTest::qWait(500);
+
// current item should be third item
QCOMPARE(listview->currentIndex(), 3);
QCOMPARE(listview->currentItem(), findItem<QmlGraphicsItem>(viewport, "wrapper", 3));
+ QCOMPARE(listview->highlightItem()->y(), listview->currentItem()->y());
// no wrap
listview->setCurrentIndex(0);
@@ -811,7 +821,8 @@ void tst_QmlGraphicsListView::currentIndex()
QCOMPARE(listview->currentIndex(), 0);
// with wrap
- listview->setWrapEnabled(true);
+ ctxt->setContextProperty("testWrap", QVariant(true));
+ QVERIFY(listview->isWrapEnabled());
listview->decrementCurrentIndex();
QCOMPARE(listview->currentIndex(), model.count()-1);
@@ -844,6 +855,18 @@ void tst_QmlGraphicsListView::currentIndex()
QVERIFY(key.isAccepted());
QCOMPARE(listview->currentIndex(), 0);
+ // turn off auto highlight
+ listview->setHighlightFollowsCurrentItem(false);
+ QVERIFY(listview->highlightFollowsCurrentItem() == false);
+
+ QTest::qWait(500);
+ QVERIFY(listview->highlightItem());
+ qreal hlPos = listview->highlightItem()->y();
+
+ listview->setCurrentIndex(4);
+ QTest::qWait(500);
+ QCOMPARE(listview->highlightItem()->y(), hlPos);
+
delete canvas;
}
diff --git a/tests/auto/declarative/qmlgraphicstextedit/tst_qmlgraphicstextedit.cpp b/tests/auto/declarative/qmlgraphicstextedit/tst_qmlgraphicstextedit.cpp
index 2b10df5..4dc036d 100644
--- a/tests/auto/declarative/qmlgraphicstextedit/tst_qmlgraphicstextedit.cpp
+++ b/tests/auto/declarative/qmlgraphicstextedit/tst_qmlgraphicstextedit.cpp
@@ -69,6 +69,9 @@ private slots:
void vAlign();
void font();
void color();
+ void textMargin();
+ void persistentSelection();
+ void focusOnPress();
void selection();
void cursorDelegate();
@@ -433,6 +436,55 @@ void tst_qmlgraphicstextedit::color()
}
}
+void tst_qmlgraphicstextedit::textMargin()
+{
+ for(qreal i=0; i<=10; i+=0.3){
+ QString componentStr = "import Qt 4.6\nTextEdit { textMargin: " + QString::number(i) + "; text: \"Hello World\" }";
+ QmlComponent texteditComponent(&engine, componentStr.toLatin1(), QUrl());
+ QmlGraphicsTextEdit *textEditObject = qobject_cast<QmlGraphicsTextEdit*>(texteditComponent.create());
+ QVERIFY(textEditObject != 0);
+ QCOMPARE(textEditObject->textMargin(), i);
+ }
+}
+
+void tst_qmlgraphicstextedit::persistentSelection()
+{
+ {
+ QString componentStr = "import Qt 4.6\nTextEdit { persistentSelection: true; text: \"Hello World\" }";
+ QmlComponent texteditComponent(&engine, componentStr.toLatin1(), QUrl());
+ QmlGraphicsTextEdit *textEditObject = qobject_cast<QmlGraphicsTextEdit*>(texteditComponent.create());
+ QVERIFY(textEditObject != 0);
+ QCOMPARE(textEditObject->persistentSelection(), true);
+ }
+
+ {
+ QString componentStr = "import Qt 4.6\nTextEdit { persistentSelection: false; text: \"Hello World\" }";
+ QmlComponent texteditComponent(&engine, componentStr.toLatin1(), QUrl());
+ QmlGraphicsTextEdit *textEditObject = qobject_cast<QmlGraphicsTextEdit*>(texteditComponent.create());
+ QVERIFY(textEditObject != 0);
+ QCOMPARE(textEditObject->persistentSelection(), false);
+ }
+}
+
+void tst_qmlgraphicstextedit::focusOnPress()
+{
+ {
+ QString componentStr = "import Qt 4.6\nTextEdit { focusOnPress: true; text: \"Hello World\" }";
+ QmlComponent texteditComponent(&engine, componentStr.toLatin1(), QUrl());
+ QmlGraphicsTextEdit *textEditObject = qobject_cast<QmlGraphicsTextEdit*>(texteditComponent.create());
+ QVERIFY(textEditObject != 0);
+ QCOMPARE(textEditObject->focusOnPress(), true);
+ }
+
+ {
+ QString componentStr = "import Qt 4.6\nTextEdit { focusOnPress: false; text: \"Hello World\" }";
+ QmlComponent texteditComponent(&engine, componentStr.toLatin1(), QUrl());
+ QmlGraphicsTextEdit *textEditObject = qobject_cast<QmlGraphicsTextEdit*>(texteditComponent.create());
+ QVERIFY(textEditObject != 0);
+ QCOMPARE(textEditObject->focusOnPress(), false);
+ }
+}
+
void tst_qmlgraphicstextedit::selection()
{
QString testStr = standard[0];//TODO: What should happen for multiline/rich text?
diff --git a/tests/auto/declarative/qmlgraphicswebview/data/basic.ico b/tests/auto/declarative/qmlgraphicswebview/data/basic.ico
new file mode 100644
index 0000000..8f3d05e
--- /dev/null
+++ b/tests/auto/declarative/qmlgraphicswebview/data/basic.ico
Binary files differ
diff --git a/tests/auto/declarative/qmlgraphicswebview/data/forward.html b/tests/auto/declarative/qmlgraphicswebview/data/forward.html
new file mode 100644
index 0000000..030446a
--- /dev/null
+++ b/tests/auto/declarative/qmlgraphicswebview/data/forward.html
@@ -0,0 +1,12 @@
+<html>
+<head><title>Forward</title>
+<link rel="icon" sizes="48x48" href="basic.png">
+</head>
+<body leftmargin="0" marginwidth="0">
+<table width="123">
+<tbody>
+<tr><td>This is more.</td></tr>
+</tbody>
+</table>
+</body>
+</html>
diff --git a/tests/auto/declarative/qmlgraphicswebview/data/javaScript.html b/tests/auto/declarative/qmlgraphicswebview/data/javaScript.html
new file mode 100644
index 0000000..35270bc
--- /dev/null
+++ b/tests/auto/declarative/qmlgraphicswebview/data/javaScript.html
@@ -0,0 +1,11 @@
+<html>
+<head><title>JavaScript</title>
+<link rel="icon" sizes="48x48" href="basic.png">
+<script type="text/javascript">
+<!--
+window.onload = function(){ window.status = "status here"; }
+// -->
+</script>
+</head>
+<body>
+This is a JS test.
diff --git a/tests/auto/declarative/qmlgraphicswebview/data/loadError.qml b/tests/auto/declarative/qmlgraphicswebview/data/loadError.qml
new file mode 100644
index 0000000..1460f30
--- /dev/null
+++ b/tests/auto/declarative/qmlgraphicswebview/data/loadError.qml
@@ -0,0 +1,5 @@
+import Qt 4.6
+
+WebView {
+ url: "does-not-exist.html"
+}
diff --git a/tests/auto/declarative/visual/ListView/data/itemlist.0.png b/tests/auto/declarative/visual/ListView/data/itemlist.0.png
new file mode 100644
index 0000000..a1947ca
--- /dev/null
+++ b/tests/auto/declarative/visual/ListView/data/itemlist.0.png
Binary files differ
diff --git a/tests/auto/declarative/visual/ListView/data/itemlist.1.png b/tests/auto/declarative/visual/ListView/data/itemlist.1.png
new file mode 100644
index 0000000..d27b7fa
--- /dev/null
+++ b/tests/auto/declarative/visual/ListView/data/itemlist.1.png
Binary files differ
diff --git a/tests/auto/declarative/visual/ListView/data/itemlist.2.png b/tests/auto/declarative/visual/ListView/data/itemlist.2.png
new file mode 100644
index 0000000..fdab8c6
--- /dev/null
+++ b/tests/auto/declarative/visual/ListView/data/itemlist.2.png
Binary files differ
diff --git a/tests/auto/declarative/visual/ListView/data/itemlist.3.png b/tests/auto/declarative/visual/ListView/data/itemlist.3.png
new file mode 100644
index 0000000..dc321a8
--- /dev/null
+++ b/tests/auto/declarative/visual/ListView/data/itemlist.3.png
Binary files differ
diff --git a/tests/auto/declarative/visual/ListView/data/itemlist.4.png b/tests/auto/declarative/visual/ListView/data/itemlist.4.png
new file mode 100644
index 0000000..fdab8c6
--- /dev/null
+++ b/tests/auto/declarative/visual/ListView/data/itemlist.4.png
Binary files differ
diff --git a/tests/auto/declarative/visual/ListView/data/itemlist.5.png b/tests/auto/declarative/visual/ListView/data/itemlist.5.png
new file mode 100644
index 0000000..15b51cb
--- /dev/null
+++ b/tests/auto/declarative/visual/ListView/data/itemlist.5.png
Binary files differ
diff --git a/tests/auto/declarative/visual/ListView/data/itemlist.6.png b/tests/auto/declarative/visual/ListView/data/itemlist.6.png
new file mode 100644
index 0000000..a1947ca
--- /dev/null
+++ b/tests/auto/declarative/visual/ListView/data/itemlist.6.png
Binary files differ
diff --git a/tests/auto/declarative/visual/ListView/data/itemlist.qml b/tests/auto/declarative/visual/ListView/data/itemlist.qml
new file mode 100644
index 0000000..073749f
--- /dev/null
+++ b/tests/auto/declarative/visual/ListView/data/itemlist.qml
@@ -0,0 +1,2203 @@
+import Qt.VisualTest 4.6
+
+VisualTest {
+ Frame {
+ msec: 0
+ }
+ Frame {
+ msec: 16
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 32
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 48
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 64
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 80
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 96
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 112
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 128
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 144
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 160
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 176
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 192
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 208
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 224
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 240
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 256
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 272
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 288
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 304
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 320
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 336
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 352
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 368
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 384
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 400
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 416
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 432
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 448
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 464
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 480
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 496
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 512
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 528
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 544
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 560
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 576
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 592
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 608
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 624
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 640
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 656
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 672
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 688
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 704
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 720
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 736
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 752
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 768
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 784
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 800
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 816
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 832
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 848
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 864
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 880
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 896
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 912
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 928
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 944
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 960
+ image: "itemlist.0.png"
+ }
+ Frame {
+ msec: 976
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 992
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 1008
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 1024
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 1040
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 1056
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 1072
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 1088
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 1104
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 1120
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 1136
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 1152
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 1168
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 1184
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 1200
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 1216
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 1232
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 1248
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 1264
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 1280
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 1296
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 1312
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 1328
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 1344
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 1360
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 1376
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 1392
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 1408
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 1424
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 1440
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 1456
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 1472
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 1488
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 1504
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 1520
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 1536
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 1552
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 1568
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 1584
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 1600
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 1616
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 1632
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 1648
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 192; y: 111
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1664
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 191; y: 111
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1680
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 190; y: 112
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 187; y: 113
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1696
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 184; y: 113
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 180; y: 113
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1712
+ hash: "a68b1bc6c2963ee92c3a45f500667b3b"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 174; y: 114
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 167; y: 115
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1728
+ hash: "7cda93e59466b3348e7ffe3895f89e86"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 160; y: 117
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1744
+ hash: "06e0008c78e919f7270402938d9d764b"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 140; y: 121
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 132; y: 122
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1760
+ hash: "9d8da9199efebb95f56e5d4ebc9a585e"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 114; y: 126
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 98; y: 132
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1776
+ hash: "54a60a4279911ba4a8a5741bcadfa783"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 91; y: 132
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 91; y: 132
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1792
+ hash: "a1a19370a1a8ed78e475f0d0eb12311c"
+ }
+ Frame {
+ msec: 1808
+ hash: "196a3b127cf7065614c34856bf8d8bca"
+ }
+ Frame {
+ msec: 1824
+ hash: "5fbefbd7c7be4374382cc4c8b86ac78a"
+ }
+ Frame {
+ msec: 1840
+ hash: "d6a544c622e504c1b931e1a8a1310a6e"
+ }
+ Frame {
+ msec: 1856
+ hash: "20e76f0eb4ec5f691999faf8ad313370"
+ }
+ Frame {
+ msec: 1872
+ hash: "7f84a3545907c754ae8a6a30ef61c98d"
+ }
+ Frame {
+ msec: 1888
+ hash: "b544901eae32903ad054e8cdfed715eb"
+ }
+ Frame {
+ msec: 1904
+ hash: "a010ed1e3312f4ca9f429b7e32cdcef9"
+ }
+ Frame {
+ msec: 1920
+ image: "itemlist.1.png"
+ }
+ Frame {
+ msec: 1936
+ hash: "93a731dc6f71b6ff5400bf74c87e6c46"
+ }
+ Frame {
+ msec: 1952
+ hash: "c73f63d1a024ba956e693487b3ccc761"
+ }
+ Frame {
+ msec: 1968
+ hash: "539d3d00fce2d0128cd697d86d237fe7"
+ }
+ Frame {
+ msec: 1984
+ hash: "52752d7d6f2d0e085f7132313907b72b"
+ }
+ Frame {
+ msec: 2000
+ hash: "f46dd5803a6075e979e0fc733d503bfb"
+ }
+ Frame {
+ msec: 2016
+ hash: "b8734698a6bad00ecf019f85328c2c21"
+ }
+ Frame {
+ msec: 2032
+ hash: "1cfc499ca756023430cc5b2fa95a599d"
+ }
+ Frame {
+ msec: 2048
+ hash: "63a816548837c19f8f0494c137fc0174"
+ }
+ Frame {
+ msec: 2064
+ hash: "1bce9b85235e9a1a472c079dfec70ec5"
+ }
+ Frame {
+ msec: 2080
+ hash: "6677863e7f74c12648409883f73adbe2"
+ }
+ Frame {
+ msec: 2096
+ hash: "98e707a3e39a5f7bd4a101c2ed83535c"
+ }
+ Frame {
+ msec: 2112
+ hash: "c1f6d8842d14a9394d4b7797314f50e8"
+ }
+ Frame {
+ msec: 2128
+ hash: "579758b477bcd2112b305a5aac7df338"
+ }
+ Frame {
+ msec: 2144
+ hash: "4a7bb81090db246db53e2dbc56f710ea"
+ }
+ Frame {
+ msec: 2160
+ hash: "074995cdd8a70817d1c8a7bb0ad4c542"
+ }
+ Frame {
+ msec: 2176
+ hash: "bd8d7bda4d2e9ad1fba2895d568f36cc"
+ }
+ Frame {
+ msec: 2192
+ hash: "40cce3d2d80ac470af44fc334cec1d5b"
+ }
+ Frame {
+ msec: 2208
+ hash: "15cbc226b032d5a97199735ea7a1408b"
+ }
+ Frame {
+ msec: 2224
+ hash: "12b296aea9b058a5402d0d0a620f8edc"
+ }
+ Frame {
+ msec: 2240
+ hash: "6ffd2b79cf0e941a59e74bc6f9025bcb"
+ }
+ Frame {
+ msec: 2256
+ hash: "589a58ef76ea709dc8d80390c9044f99"
+ }
+ Frame {
+ msec: 2272
+ hash: "c009924bfa30153f22ab168b539494e9"
+ }
+ Frame {
+ msec: 2288
+ hash: "4b83674a7c2daa68d735901ad40be2bd"
+ }
+ Frame {
+ msec: 2304
+ hash: "0525908c0302ada989e28990bac3f2ca"
+ }
+ Frame {
+ msec: 2320
+ hash: "89eb13976ba3ba4413cafeb0cc91c01b"
+ }
+ Frame {
+ msec: 2336
+ hash: "75c1295ef99680784b2e11fb88fa1423"
+ }
+ Frame {
+ msec: 2352
+ hash: "93d89165cf6a97c76ae6e7f75678a3cd"
+ }
+ Frame {
+ msec: 2368
+ hash: "53064c1938f08a55603a99b0db225174"
+ }
+ Frame {
+ msec: 2384
+ hash: "31db5684466c0c32128a9a8c7b1835e1"
+ }
+ Frame {
+ msec: 2400
+ hash: "99d9e58697736198e0a00443d237e85b"
+ }
+ Frame {
+ msec: 2416
+ hash: "6c1e860aef983367365d53f5849ad441"
+ }
+ Frame {
+ msec: 2432
+ hash: "6c1e860aef983367365d53f5849ad441"
+ }
+ Frame {
+ msec: 2448
+ hash: "6c1e860aef983367365d53f5849ad441"
+ }
+ Frame {
+ msec: 2464
+ hash: "99f9988040a389576cb6420b5391f768"
+ }
+ Frame {
+ msec: 2480
+ hash: "99f9988040a389576cb6420b5391f768"
+ }
+ Frame {
+ msec: 2496
+ hash: "99f9988040a389576cb6420b5391f768"
+ }
+ Frame {
+ msec: 2512
+ hash: "99f9988040a389576cb6420b5391f768"
+ }
+ Frame {
+ msec: 2528
+ hash: "99f9988040a389576cb6420b5391f768"
+ }
+ Frame {
+ msec: 2544
+ hash: "99f9988040a389576cb6420b5391f768"
+ }
+ Frame {
+ msec: 2560
+ hash: "99f9988040a389576cb6420b5391f768"
+ }
+ Frame {
+ msec: 2576
+ hash: "99f9988040a389576cb6420b5391f768"
+ }
+ Frame {
+ msec: 2592
+ hash: "99f9988040a389576cb6420b5391f768"
+ }
+ Frame {
+ msec: 2608
+ hash: "99f9988040a389576cb6420b5391f768"
+ }
+ Frame {
+ msec: 2624
+ hash: "99f9988040a389576cb6420b5391f768"
+ }
+ Frame {
+ msec: 2640
+ hash: "99f9988040a389576cb6420b5391f768"
+ }
+ Frame {
+ msec: 2656
+ hash: "99f9988040a389576cb6420b5391f768"
+ }
+ Frame {
+ msec: 2672
+ hash: "99f9988040a389576cb6420b5391f768"
+ }
+ Frame {
+ msec: 2688
+ hash: "99f9988040a389576cb6420b5391f768"
+ }
+ Frame {
+ msec: 2704
+ hash: "99f9988040a389576cb6420b5391f768"
+ }
+ Frame {
+ msec: 2720
+ hash: "99f9988040a389576cb6420b5391f768"
+ }
+ Frame {
+ msec: 2736
+ hash: "99f9988040a389576cb6420b5391f768"
+ }
+ Frame {
+ msec: 2752
+ hash: "99f9988040a389576cb6420b5391f768"
+ }
+ Frame {
+ msec: 2768
+ hash: "99f9988040a389576cb6420b5391f768"
+ }
+ Frame {
+ msec: 2784
+ hash: "99f9988040a389576cb6420b5391f768"
+ }
+ Frame {
+ msec: 2800
+ hash: "99f9988040a389576cb6420b5391f768"
+ }
+ Frame {
+ msec: 2816
+ hash: "99f9988040a389576cb6420b5391f768"
+ }
+ Frame {
+ msec: 2832
+ hash: "99f9988040a389576cb6420b5391f768"
+ }
+ Frame {
+ msec: 2848
+ hash: "99f9988040a389576cb6420b5391f768"
+ }
+ Frame {
+ msec: 2864
+ hash: "99f9988040a389576cb6420b5391f768"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 181; y: 104
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 2880
+ image: "itemlist.2.png"
+ }
+ Frame {
+ msec: 2896
+ hash: "99f9988040a389576cb6420b5391f768"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 179; y: 105
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 177; y: 106
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 2912
+ hash: "99f9988040a389576cb6420b5391f768"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 174; y: 108
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 170; y: 110
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 2928
+ hash: "5bb06b4e74532ba5bc8c7bc38bf77d7f"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 166; y: 112
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 160; y: 115
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 2944
+ hash: "b10a6206830a876017799ef2fcf61b1a"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 154; y: 117
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 140; y: 123
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 2960
+ hash: "b2e24759ba10afd6cff90f4b1e04b496"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 124; y: 127
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 124; y: 127
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 2976
+ hash: "ccbcd6f45cb529c2db71504c0f69d73e"
+ }
+ Frame {
+ msec: 2992
+ hash: "7b31c6d5931677f1aa1e8c7d48a4ff22"
+ }
+ Frame {
+ msec: 3008
+ hash: "c52f691a0a6cf155118bdfea2dfea623"
+ }
+ Frame {
+ msec: 3024
+ hash: "dd639d1df3d4a9b8f06718def63d588f"
+ }
+ Frame {
+ msec: 3040
+ hash: "39d767b09a648ef6295cec2848f9226f"
+ }
+ Frame {
+ msec: 3056
+ hash: "5dd46d5f386431e7b13348ac9a9630ed"
+ }
+ Frame {
+ msec: 3072
+ hash: "0354e5183b0e66e7ba146d292c559df4"
+ }
+ Frame {
+ msec: 3088
+ hash: "984aa6d7075e24de429e05b1b0eda94a"
+ }
+ Frame {
+ msec: 3104
+ hash: "1af58a2f44f1f613712d4df85e38356d"
+ }
+ Frame {
+ msec: 3120
+ hash: "6e4085e7f1fee724d78808753f04b471"
+ }
+ Frame {
+ msec: 3136
+ hash: "73a019ef9057639d631cd99a431b3f3b"
+ }
+ Frame {
+ msec: 3152
+ hash: "c9414a2e655a90dfdcb6fb288b4ba0ca"
+ }
+ Frame {
+ msec: 3168
+ hash: "3f4c24f7ac89da982af22032309637fb"
+ }
+ Frame {
+ msec: 3184
+ hash: "a50e6ada8f73a257657f4348ceaffcfd"
+ }
+ Frame {
+ msec: 3200
+ hash: "a67bf40d09259bbd079c12ae4f49150f"
+ }
+ Frame {
+ msec: 3216
+ hash: "a2fc512b7c234a9d0b2c1a83387a8a46"
+ }
+ Frame {
+ msec: 3232
+ hash: "85090683ce9a3c9833b1cb0b3df076ee"
+ }
+ Frame {
+ msec: 3248
+ hash: "275f3594a0e2cc4b6717f9f336e7e1b6"
+ }
+ Frame {
+ msec: 3264
+ hash: "2473eb11f7b65a784a2b166114026488"
+ }
+ Frame {
+ msec: 3280
+ hash: "4865c30dc45fbf5ca82047b77eca0912"
+ }
+ Frame {
+ msec: 3296
+ hash: "54de88bca395449fbaea2c090c7a5d91"
+ }
+ Frame {
+ msec: 3312
+ hash: "833f9295cf9a34934f001eac48551b59"
+ }
+ Frame {
+ msec: 3328
+ hash: "5bf565f57ababa7380faeee94add91ca"
+ }
+ Frame {
+ msec: 3344
+ hash: "6325578867f1eb3b2d47ed40b017b571"
+ }
+ Frame {
+ msec: 3360
+ hash: "046a6114176b3a3206b7a2acd6e30b41"
+ }
+ Frame {
+ msec: 3376
+ hash: "f8d4120a17f28c2d1d9c4be959098058"
+ }
+ Frame {
+ msec: 3392
+ hash: "71356d2e48aad2900784ea6bc1a3d908"
+ }
+ Frame {
+ msec: 3408
+ hash: "b84ad460fb81fdc4049abe8f3ff180bb"
+ }
+ Frame {
+ msec: 3424
+ hash: "0354239f5eaea23474d9f81385392a8a"
+ }
+ Frame {
+ msec: 3440
+ hash: "8ef0eef3393e07ae7605c865a95edc30"
+ }
+ Frame {
+ msec: 3456
+ hash: "5b8b384cc8e3faf4310015e19b3eb487"
+ }
+ Frame {
+ msec: 3472
+ hash: "77c18ac7dfff2a4e516915e3e3df0717"
+ }
+ Frame {
+ msec: 3488
+ hash: "c1d3264384c26345eb8100de829309ca"
+ }
+ Frame {
+ msec: 3504
+ hash: "6b21f71d0bedef4bbcb445a13f61e7a3"
+ }
+ Frame {
+ msec: 3520
+ hash: "f619097356671f6eb54d3b1c481e709d"
+ }
+ Frame {
+ msec: 3536
+ hash: "e56e3a90da446e0c482cb93717f6aacc"
+ }
+ Frame {
+ msec: 3552
+ hash: "aa94ebdbb4b8423aff28c95daff0baf5"
+ }
+ Frame {
+ msec: 3568
+ hash: "e1744d9cacd1a2c96af4cfdd5c486995"
+ }
+ Frame {
+ msec: 3584
+ hash: "7f19ea52e9e41a3b1bd90bb2a144d305"
+ }
+ Frame {
+ msec: 3600
+ hash: "7f19ea52e9e41a3b1bd90bb2a144d305"
+ }
+ Frame {
+ msec: 3616
+ hash: "7f19ea52e9e41a3b1bd90bb2a144d305"
+ }
+ Frame {
+ msec: 3632
+ hash: "88143ff6c278a5433b314b551b7b8b1d"
+ }
+ Frame {
+ msec: 3648
+ hash: "88143ff6c278a5433b314b551b7b8b1d"
+ }
+ Frame {
+ msec: 3664
+ hash: "88143ff6c278a5433b314b551b7b8b1d"
+ }
+ Frame {
+ msec: 3680
+ hash: "88143ff6c278a5433b314b551b7b8b1d"
+ }
+ Frame {
+ msec: 3696
+ hash: "88143ff6c278a5433b314b551b7b8b1d"
+ }
+ Frame {
+ msec: 3712
+ hash: "88143ff6c278a5433b314b551b7b8b1d"
+ }
+ Frame {
+ msec: 3728
+ hash: "88143ff6c278a5433b314b551b7b8b1d"
+ }
+ Frame {
+ msec: 3744
+ hash: "88143ff6c278a5433b314b551b7b8b1d"
+ }
+ Frame {
+ msec: 3760
+ hash: "88143ff6c278a5433b314b551b7b8b1d"
+ }
+ Frame {
+ msec: 3776
+ hash: "88143ff6c278a5433b314b551b7b8b1d"
+ }
+ Frame {
+ msec: 3792
+ hash: "88143ff6c278a5433b314b551b7b8b1d"
+ }
+ Frame {
+ msec: 3808
+ hash: "88143ff6c278a5433b314b551b7b8b1d"
+ }
+ Frame {
+ msec: 3824
+ hash: "88143ff6c278a5433b314b551b7b8b1d"
+ }
+ Frame {
+ msec: 3840
+ image: "itemlist.3.png"
+ }
+ Frame {
+ msec: 3856
+ hash: "88143ff6c278a5433b314b551b7b8b1d"
+ }
+ Frame {
+ msec: 3872
+ hash: "88143ff6c278a5433b314b551b7b8b1d"
+ }
+ Frame {
+ msec: 3888
+ hash: "88143ff6c278a5433b314b551b7b8b1d"
+ }
+ Frame {
+ msec: 3904
+ hash: "88143ff6c278a5433b314b551b7b8b1d"
+ }
+ Frame {
+ msec: 3920
+ hash: "88143ff6c278a5433b314b551b7b8b1d"
+ }
+ Frame {
+ msec: 3936
+ hash: "88143ff6c278a5433b314b551b7b8b1d"
+ }
+ Frame {
+ msec: 3952
+ hash: "88143ff6c278a5433b314b551b7b8b1d"
+ }
+ Frame {
+ msec: 3968
+ hash: "88143ff6c278a5433b314b551b7b8b1d"
+ }
+ Frame {
+ msec: 3984
+ hash: "88143ff6c278a5433b314b551b7b8b1d"
+ }
+ Frame {
+ msec: 4000
+ hash: "88143ff6c278a5433b314b551b7b8b1d"
+ }
+ Frame {
+ msec: 4016
+ hash: "88143ff6c278a5433b314b551b7b8b1d"
+ }
+ Frame {
+ msec: 4032
+ hash: "88143ff6c278a5433b314b551b7b8b1d"
+ }
+ Frame {
+ msec: 4048
+ hash: "88143ff6c278a5433b314b551b7b8b1d"
+ }
+ Frame {
+ msec: 4064
+ hash: "88143ff6c278a5433b314b551b7b8b1d"
+ }
+ Frame {
+ msec: 4080
+ hash: "88143ff6c278a5433b314b551b7b8b1d"
+ }
+ Frame {
+ msec: 4096
+ hash: "88143ff6c278a5433b314b551b7b8b1d"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 31; y: 137
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 4112
+ hash: "88143ff6c278a5433b314b551b7b8b1d"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 32; y: 137
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 4128
+ hash: "88143ff6c278a5433b314b551b7b8b1d"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 33; y: 136
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 36; y: 135
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 4144
+ hash: "88143ff6c278a5433b314b551b7b8b1d"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 40; y: 134
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 46; y: 132
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 4160
+ hash: "c2c9c284b185a89faf4ddb5a7867f449"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 64; y: 130
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 4176
+ hash: "de1c18aeda5d2fbd6dad4554c78617bd"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 86; y: 126
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 110; y: 118
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 110; y: 118
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 4192
+ hash: "a67bf40d09259bbd079c12ae4f49150f"
+ }
+ Frame {
+ msec: 4208
+ hash: "94514668dafbe41c5890a578efd6dea4"
+ }
+ Frame {
+ msec: 4224
+ hash: "2e97a74eb9ddb1c9613c89e2d78db018"
+ }
+ Frame {
+ msec: 4240
+ hash: "4b5368f0d86bffeb6bd31b58aec88650"
+ }
+ Frame {
+ msec: 4256
+ hash: "b459bde7bb4ce51e6ecdab58f64fcbb9"
+ }
+ Frame {
+ msec: 4272
+ hash: "7bac8cc3ec64c9ad1c0da282e38c953e"
+ }
+ Frame {
+ msec: 4288
+ hash: "a73a58c3d7a757547740a2a161f4c756"
+ }
+ Frame {
+ msec: 4304
+ hash: "b35edcb1fa3568a3e770ab2364b82e75"
+ }
+ Frame {
+ msec: 4320
+ hash: "d6c863ef57c5e5cb04cdac72f920db0b"
+ }
+ Frame {
+ msec: 4336
+ hash: "0db5e4588ff851918b07796f0cf07382"
+ }
+ Frame {
+ msec: 4352
+ hash: "71ec8c363ca6a6f7556afb70faccffe6"
+ }
+ Frame {
+ msec: 4368
+ hash: "18d026e9c965ada1db67c643576d2a80"
+ }
+ Frame {
+ msec: 4384
+ hash: "69f71c22dff981a4da8ec1edcf90e79f"
+ }
+ Frame {
+ msec: 4400
+ hash: "680460f5e4d9e649931601041af046b2"
+ }
+ Frame {
+ msec: 4416
+ hash: "3028763fd15de2607b20b1331b904a4a"
+ }
+ Frame {
+ msec: 4432
+ hash: "333eb60e217fe1ea7469eab52ac461f1"
+ }
+ Frame {
+ msec: 4448
+ hash: "ccbcd6f45cb529c2db71504c0f69d73e"
+ }
+ Frame {
+ msec: 4464
+ hash: "3445df9b41a0a3e74738cbf328ab7d5c"
+ }
+ Frame {
+ msec: 4480
+ hash: "bd2c072558479e9de7a97207e58cc57f"
+ }
+ Frame {
+ msec: 4496
+ hash: "3d34b0b24a30eda93377dcb4585afed8"
+ }
+ Frame {
+ msec: 4512
+ hash: "d3045703863b0c5a327b9355c23d69f2"
+ }
+ Frame {
+ msec: 4528
+ hash: "2f2eb55f693415b840a317211b250e9f"
+ }
+ Frame {
+ msec: 4544
+ hash: "791b9ca7d47a3343474c30a35e336d4b"
+ }
+ Frame {
+ msec: 4560
+ hash: "73a0c02ebad6d3d5f939d9a00dd898bf"
+ }
+ Frame {
+ msec: 4576
+ hash: "d5c11135d586711b12f236430a2c2795"
+ }
+ Frame {
+ msec: 4592
+ hash: "34f9ea214fe714ff4e994f715ea6ea39"
+ }
+ Frame {
+ msec: 4608
+ hash: "8e49afa00983b156b818533923fb6edd"
+ }
+ Frame {
+ msec: 4624
+ hash: "e7e7bef17cee92eca9191fd734d7a577"
+ }
+ Frame {
+ msec: 4640
+ hash: "e407f6ed7cb3c130365ab5515d6308c0"
+ }
+ Frame {
+ msec: 4656
+ hash: "5bb06b4e74532ba5bc8c7bc38bf77d7f"
+ }
+ Frame {
+ msec: 4672
+ hash: "0ad7411316031e22034c14e81ca3a806"
+ }
+ Frame {
+ msec: 4688
+ hash: "dd81d7a9b48c922b4c42cba1b5f2b9d7"
+ }
+ Frame {
+ msec: 4704
+ hash: "32bef6f5005ad94e29ff59165958fbdc"
+ }
+ Frame {
+ msec: 4720
+ hash: "87758dd311f91193bf1e3536c2f58525"
+ }
+ Frame {
+ msec: 4736
+ hash: "015be92a4ff4e735fcc3cbc7a8b9d763"
+ }
+ Frame {
+ msec: 4752
+ hash: "d4c34ed49317c6692d71681fcd9842b6"
+ }
+ Frame {
+ msec: 4768
+ hash: "abaa235bb946a8abaddd52981d632c2d"
+ }
+ Frame {
+ msec: 4784
+ hash: "99f9988040a389576cb6420b5391f768"
+ }
+ Frame {
+ msec: 4800
+ image: "itemlist.4.png"
+ }
+ Frame {
+ msec: 4816
+ hash: "99f9988040a389576cb6420b5391f768"
+ }
+ Frame {
+ msec: 4832
+ hash: "99f9988040a389576cb6420b5391f768"
+ }
+ Frame {
+ msec: 4848
+ hash: "99f9988040a389576cb6420b5391f768"
+ }
+ Frame {
+ msec: 4864
+ hash: "99f9988040a389576cb6420b5391f768"
+ }
+ Frame {
+ msec: 4880
+ hash: "99f9988040a389576cb6420b5391f768"
+ }
+ Frame {
+ msec: 4896
+ hash: "99f9988040a389576cb6420b5391f768"
+ }
+ Frame {
+ msec: 4912
+ hash: "99f9988040a389576cb6420b5391f768"
+ }
+ Frame {
+ msec: 4928
+ hash: "99f9988040a389576cb6420b5391f768"
+ }
+ Frame {
+ msec: 4944
+ hash: "99f9988040a389576cb6420b5391f768"
+ }
+ Frame {
+ msec: 4960
+ hash: "99f9988040a389576cb6420b5391f768"
+ }
+ Frame {
+ msec: 4976
+ hash: "99f9988040a389576cb6420b5391f768"
+ }
+ Frame {
+ msec: 4992
+ hash: "99f9988040a389576cb6420b5391f768"
+ }
+ Frame {
+ msec: 5008
+ hash: "99f9988040a389576cb6420b5391f768"
+ }
+ Frame {
+ msec: 5024
+ hash: "99f9988040a389576cb6420b5391f768"
+ }
+ Frame {
+ msec: 5040
+ hash: "99f9988040a389576cb6420b5391f768"
+ }
+ Frame {
+ msec: 5056
+ hash: "99f9988040a389576cb6420b5391f768"
+ }
+ Frame {
+ msec: 5072
+ hash: "99f9988040a389576cb6420b5391f768"
+ }
+ Frame {
+ msec: 5088
+ hash: "99f9988040a389576cb6420b5391f768"
+ }
+ Frame {
+ msec: 5104
+ hash: "99f9988040a389576cb6420b5391f768"
+ }
+ Frame {
+ msec: 5120
+ hash: "99f9988040a389576cb6420b5391f768"
+ }
+ Frame {
+ msec: 5136
+ hash: "99f9988040a389576cb6420b5391f768"
+ }
+ Frame {
+ msec: 5152
+ hash: "99f9988040a389576cb6420b5391f768"
+ }
+ Frame {
+ msec: 5168
+ hash: "99f9988040a389576cb6420b5391f768"
+ }
+ Frame {
+ msec: 5184
+ hash: "99f9988040a389576cb6420b5391f768"
+ }
+ Frame {
+ msec: 5200
+ hash: "99f9988040a389576cb6420b5391f768"
+ }
+ Frame {
+ msec: 5216
+ hash: "99f9988040a389576cb6420b5391f768"
+ }
+ Frame {
+ msec: 5232
+ hash: "99f9988040a389576cb6420b5391f768"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 17; y: 120
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5248
+ hash: "99f9988040a389576cb6420b5391f768"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 19; y: 120
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 21; y: 120
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5264
+ hash: "99f9988040a389576cb6420b5391f768"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 24; y: 119
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 28; y: 119
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5280
+ hash: "95b380c9ab6f8db7b822faf023d94546"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 35; y: 119
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 44; y: 119
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5296
+ hash: "bb79e53556698c62ec30c75be9f6b7d7"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 119
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 96; y: 117
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 96; y: 117
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5312
+ hash: "285cc2f0df1f59f25a0135560ab6edf2"
+ }
+ Frame {
+ msec: 5328
+ hash: "93a731dc6f71b6ff5400bf74c87e6c46"
+ }
+ Frame {
+ msec: 5344
+ hash: "eb555741ab128a50de5a18a454f2e639"
+ }
+ Frame {
+ msec: 5360
+ hash: "5dbe6cf898c1e37fcaacecfcf57b2194"
+ }
+ Frame {
+ msec: 5376
+ hash: "e7795610115593e78bb32f7bcc0ae2eb"
+ }
+ Frame {
+ msec: 5392
+ hash: "20e76f0eb4ec5f691999faf8ad313370"
+ }
+ Frame {
+ msec: 5408
+ hash: "d6a544c622e504c1b931e1a8a1310a6e"
+ }
+ Frame {
+ msec: 5424
+ hash: "e7a3a21feed244c5b1c710a9254c15f0"
+ }
+ Frame {
+ msec: 5440
+ hash: "5a4b1aca24f121d1373646e9d80b86fd"
+ }
+ Frame {
+ msec: 5456
+ hash: "331d2ec7021655c86aa64e47718a1088"
+ }
+ Frame {
+ msec: 5472
+ hash: "92096bc872e7395aa5b75c44646a0b60"
+ }
+ Frame {
+ msec: 5488
+ hash: "0d9aa6cee4d21488cbb5153f8f3ed593"
+ }
+ Frame {
+ msec: 5504
+ hash: "c1b943d43701605563fffffcb75f9fa7"
+ }
+ Frame {
+ msec: 5520
+ hash: "1b680025d5ad1ddd8f8d5f570ba73e71"
+ }
+ Frame {
+ msec: 5536
+ hash: "5539a3b9f60ea747c10ed8328b467cbf"
+ }
+ Frame {
+ msec: 5552
+ hash: "0a1317bcb606cd3488c5b14ee5d96585"
+ }
+ Frame {
+ msec: 5568
+ hash: "8844af68b11db7d92c69804c7371a746"
+ }
+ Frame {
+ msec: 5584
+ hash: "28d7fd127739c6e3b8488651b725c802"
+ }
+ Frame {
+ msec: 5600
+ hash: "0cf1a7d958a96aa2768995dddc5ccc09"
+ }
+ Frame {
+ msec: 5616
+ hash: "64b902fe7ab4d89ef0c7b760974e3488"
+ }
+ Frame {
+ msec: 5632
+ hash: "aba11c597eba550fc1eaddbf554057f6"
+ }
+ Frame {
+ msec: 5648
+ hash: "1bacaa3bb9dc3cac9ffc7491cb4dc1a5"
+ }
+ Frame {
+ msec: 5664
+ hash: "0ba8b582234d9f0c198c0c9e18e1cb02"
+ }
+ Frame {
+ msec: 5680
+ hash: "f66eaf2b5c3529987c0d9d005351ed73"
+ }
+ Frame {
+ msec: 5696
+ hash: "75b0bb720fa4c77da3783b3ff31c2fae"
+ }
+ Frame {
+ msec: 5712
+ hash: "345b235bb7f13409378e5c0c370f2a41"
+ }
+ Frame {
+ msec: 5728
+ hash: "83b7e902dce4e0fdc4ef5d629188c23c"
+ }
+ Frame {
+ msec: 5744
+ hash: "04b9041c6f10969889d92e94785c7e88"
+ }
+ Frame {
+ msec: 5760
+ image: "itemlist.5.png"
+ }
+ Frame {
+ msec: 5776
+ hash: "4f3a902addc34ecdaf390e2427cc52e7"
+ }
+ Frame {
+ msec: 5792
+ hash: "68d443f16c16821ffc9ca68b17c76034"
+ }
+ Frame {
+ msec: 5808
+ hash: "9d25adc77befa761ee376a9b43595b5e"
+ }
+ Frame {
+ msec: 5824
+ hash: "a68b1bc6c2963ee92c3a45f500667b3b"
+ }
+ Frame {
+ msec: 5840
+ hash: "d5268cd58c222451d48038e715e83802"
+ }
+ Frame {
+ msec: 5856
+ hash: "f37d461541a8ec7a4161b18748de6aea"
+ }
+ Frame {
+ msec: 5872
+ hash: "805319ac7ca842feb3649e92f8b5b72f"
+ }
+ Frame {
+ msec: 5888
+ hash: "73124472a05080891d4948d8ca273f8c"
+ }
+ Frame {
+ msec: 5904
+ hash: "b6e433a23282a50db2e165a2447ba3f6"
+ }
+ Frame {
+ msec: 5920
+ hash: "fd8d3f5688b1806998c6087e18c6c730"
+ }
+ Frame {
+ msec: 5936
+ hash: "f132dd459950ef2d18aa93ca950d0692"
+ }
+ Frame {
+ msec: 5952
+ hash: "ade5beb259b5277c333ca806fc9bdbec"
+ }
+ Frame {
+ msec: 5968
+ hash: "ade5beb259b5277c333ca806fc9bdbec"
+ }
+ Frame {
+ msec: 5984
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 6000
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 6016
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 6032
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 6048
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 6064
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 6080
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 6096
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 6112
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 6128
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 6144
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 6160
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 6176
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 6192
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 6208
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 6224
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 6240
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 6256
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 6272
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 6288
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 6304
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 6320
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 6336
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 6352
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 6368
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 6384
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 6400
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 6416
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 6432
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 6448
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 6464
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 6480
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 6496
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 6512
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 6528
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 6544
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 6560
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 6576
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 6592
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 6608
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 6624
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 6640
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 6656
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 6672
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 6688
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 6704
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 6720
+ image: "itemlist.6.png"
+ }
+ Frame {
+ msec: 6736
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 6752
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 6768
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 6784
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 6800
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 6816
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 6832
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 6848
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 6864
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 6880
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 6896
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 6912
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 6928
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 6944
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 6960
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 6976
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 6992
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 7008
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 7024
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 7040
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 7056
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 7072
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 7088
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 7104
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 7120
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 7136
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 7152
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 7168
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 7184
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 7200
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 7216
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 7232
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 7248
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 7264
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 7280
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 7296
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+ Frame {
+ msec: 7312
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ }
+}
diff --git a/tests/auto/declarative/visual/ListView/itemlist.qml b/tests/auto/declarative/visual/ListView/itemlist.qml
new file mode 100644
index 0000000..8cbbdb0
--- /dev/null
+++ b/tests/auto/declarative/visual/ListView/itemlist.qml
@@ -0,0 +1,40 @@
+// This example demonstrates placing items in a view using
+// a VisualItemModel
+
+import Qt 4.6
+
+Rectangle {
+ color: "lightgray"
+ width: 240
+ height: 320
+
+ VisualItemModel {
+ id: itemModel
+ objectName: "itemModel"
+ Rectangle {
+ objectName: "item1"
+ height: view.height; width: view.width; color: "#FFFEF0"
+ }
+ Rectangle {
+ objectName: "item2"
+ height: view.height; width: view.width; color: "#F0FFF7"
+ }
+ Rectangle {
+ objectName: "item3"
+ height: view.height; width: view.width; color: "#F4F0FF"
+ }
+ }
+
+ ListView {
+ id: view
+ objectName: "view"
+ anchors.fill: parent
+ anchors.bottomMargin: 30
+ model: itemModel
+ preferredHighlightBegin: 0
+ preferredHighlightEnd: 0
+ highlightRangeMode: "StrictlyEnforceRange"
+ orientation: ListView.Horizontal
+ flickDeceleration: 2000
+ }
+}
diff --git a/tests/auto/declarative/visual/flickable/Day.qml b/tests/auto/declarative/visual/flickable/Day.qml
deleted file mode 100644
index 8416724..0000000
--- a/tests/auto/declarative/visual/flickable/Day.qml
+++ /dev/null
@@ -1,26 +0,0 @@
-import Qt 4.6
-
-Rectangle {
- property string day
-
- width: 200
- height: 300
- radius: 7
- border.color: "black"
- id: Page
- Image {
- x: 10
- y: 10
- source: "cork.jpg"
- }
- Text {
- x: 20
- y: 20
- height: 40
- font.pixelSize: 14
- font.bold: true
- text: day
- style: "Outline"
- styleColor: "#dedede"
- }
-}
diff --git a/tests/auto/declarative/visual/flickable/cork.jpg b/tests/auto/declarative/visual/flickable/cork.jpg
deleted file mode 100644
index 6dc3a3f..0000000
--- a/tests/auto/declarative/visual/flickable/cork.jpg
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/visual/flickable/data-X11/flickable.0.png b/tests/auto/declarative/visual/flickable/data-X11/flickable.0.png
deleted file mode 100644
index 5da2f2a..0000000
--- a/tests/auto/declarative/visual/flickable/data-X11/flickable.0.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/visual/flickable/data-X11/flickable.1.png b/tests/auto/declarative/visual/flickable/data-X11/flickable.1.png
deleted file mode 100644
index 1c33ca6..0000000
--- a/tests/auto/declarative/visual/flickable/data-X11/flickable.1.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/visual/flickable/data-X11/flickable.2.png b/tests/auto/declarative/visual/flickable/data-X11/flickable.2.png
deleted file mode 100644
index 67cdf8f..0000000
--- a/tests/auto/declarative/visual/flickable/data-X11/flickable.2.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/visual/flickable/data-X11/flickable.qml b/tests/auto/declarative/visual/flickable/data-X11/flickable.qml
deleted file mode 100644
index 6a60409..0000000
--- a/tests/auto/declarative/visual/flickable/data-X11/flickable.qml
+++ /dev/null
@@ -1,791 +0,0 @@
-import Qt.VisualTest 4.6
-
-VisualTest {
- Frame {
- msec: 0
- }
- Frame {
- msec: 16
- hash: "2a07f4ab51ed6ac07c2efecfd561cdff"
- }
- Frame {
- msec: 32
- hash: "2a07f4ab51ed6ac07c2efecfd561cdff"
- }
- Frame {
- msec: 48
- hash: "2a07f4ab51ed6ac07c2efecfd561cdff"
- }
- Frame {
- msec: 64
- hash: "2a07f4ab51ed6ac07c2efecfd561cdff"
- }
- Frame {
- msec: 80
- hash: "2a07f4ab51ed6ac07c2efecfd561cdff"
- }
- Frame {
- msec: 96
- hash: "2a07f4ab51ed6ac07c2efecfd561cdff"
- }
- Frame {
- msec: 112
- hash: "2a07f4ab51ed6ac07c2efecfd561cdff"
- }
- Frame {
- msec: 128
- hash: "2a07f4ab51ed6ac07c2efecfd561cdff"
- }
- Frame {
- msec: 144
- hash: "2a07f4ab51ed6ac07c2efecfd561cdff"
- }
- Frame {
- msec: 160
- hash: "2a07f4ab51ed6ac07c2efecfd561cdff"
- }
- Frame {
- msec: 176
- hash: "2a07f4ab51ed6ac07c2efecfd561cdff"
- }
- Frame {
- msec: 192
- hash: "2a07f4ab51ed6ac07c2efecfd561cdff"
- }
- Frame {
- msec: 208
- hash: "2a07f4ab51ed6ac07c2efecfd561cdff"
- }
- Frame {
- msec: 224
- hash: "2a07f4ab51ed6ac07c2efecfd561cdff"
- }
- Frame {
- msec: 240
- hash: "2a07f4ab51ed6ac07c2efecfd561cdff"
- }
- Frame {
- msec: 256
- hash: "2a07f4ab51ed6ac07c2efecfd561cdff"
- }
- Frame {
- msec: 272
- hash: "2a07f4ab51ed6ac07c2efecfd561cdff"
- }
- Frame {
- msec: 288
- hash: "2a07f4ab51ed6ac07c2efecfd561cdff"
- }
- Frame {
- msec: 304
- hash: "2a07f4ab51ed6ac07c2efecfd561cdff"
- }
- Frame {
- msec: 320
- hash: "2a07f4ab51ed6ac07c2efecfd561cdff"
- }
- Frame {
- msec: 336
- hash: "2a07f4ab51ed6ac07c2efecfd561cdff"
- }
- Frame {
- msec: 352
- hash: "2a07f4ab51ed6ac07c2efecfd561cdff"
- }
- Frame {
- msec: 368
- hash: "2a07f4ab51ed6ac07c2efecfd561cdff"
- }
- Frame {
- msec: 384
- hash: "2a07f4ab51ed6ac07c2efecfd561cdff"
- }
- Frame {
- msec: 400
- hash: "2a07f4ab51ed6ac07c2efecfd561cdff"
- }
- Frame {
- msec: 416
- hash: "2a07f4ab51ed6ac07c2efecfd561cdff"
- }
- Frame {
- msec: 432
- hash: "2a07f4ab51ed6ac07c2efecfd561cdff"
- }
- Frame {
- msec: 448
- hash: "2a07f4ab51ed6ac07c2efecfd561cdff"
- }
- Frame {
- msec: 464
- hash: "2a07f4ab51ed6ac07c2efecfd561cdff"
- }
- Frame {
- msec: 480
- hash: "2a07f4ab51ed6ac07c2efecfd561cdff"
- }
- Frame {
- msec: 496
- hash: "2a07f4ab51ed6ac07c2efecfd561cdff"
- }
- Frame {
- msec: 512
- hash: "2a07f4ab51ed6ac07c2efecfd561cdff"
- }
- Frame {
- msec: 528
- hash: "2a07f4ab51ed6ac07c2efecfd561cdff"
- }
- Frame {
- msec: 544
- hash: "2a07f4ab51ed6ac07c2efecfd561cdff"
- }
- Frame {
- msec: 560
- hash: "2a07f4ab51ed6ac07c2efecfd561cdff"
- }
- Frame {
- msec: 576
- hash: "2a07f4ab51ed6ac07c2efecfd561cdff"
- }
- Frame {
- msec: 592
- hash: "2a07f4ab51ed6ac07c2efecfd561cdff"
- }
- Frame {
- msec: 608
- hash: "2a07f4ab51ed6ac07c2efecfd561cdff"
- }
- Frame {
- msec: 624
- hash: "2a07f4ab51ed6ac07c2efecfd561cdff"
- }
- Frame {
- msec: 640
- hash: "2a07f4ab51ed6ac07c2efecfd561cdff"
- }
- Frame {
- msec: 656
- hash: "2a07f4ab51ed6ac07c2efecfd561cdff"
- }
- Frame {
- msec: 672
- hash: "2a07f4ab51ed6ac07c2efecfd561cdff"
- }
- Frame {
- msec: 688
- hash: "2a07f4ab51ed6ac07c2efecfd561cdff"
- }
- Frame {
- msec: 704
- hash: "2a07f4ab51ed6ac07c2efecfd561cdff"
- }
- Frame {
- msec: 720
- hash: "2a07f4ab51ed6ac07c2efecfd561cdff"
- }
- Mouse {
- type: 2
- button: 1
- buttons: 1
- x: 517; y: 154
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 736
- hash: "2a07f4ab51ed6ac07c2efecfd561cdff"
- }
- Mouse {
- type: 5
- button: 1
- buttons: 1
- x: 514; y: 154
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 752
- hash: "2a07f4ab51ed6ac07c2efecfd561cdff"
- }
- Mouse {
- type: 5
- button: 1
- buttons: 1
- x: 509; y: 155
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 768
- hash: "2a07f4ab51ed6ac07c2efecfd561cdff"
- }
- Mouse {
- type: 5
- button: 1
- buttons: 1
- x: 497; y: 155
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 784
- hash: "4f30ebc802a38cd4ad05018b6bc429a4"
- }
- Mouse {
- type: 5
- button: 1
- buttons: 1
- x: 480; y: 155
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 800
- hash: "8d2e349b2aad07d98f11a30a33a5b409"
- }
- Mouse {
- type: 5
- button: 1
- buttons: 1
- x: 443; y: 155
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 816
- hash: "09647796906da54345fffa18eb1b1f91"
- }
- Mouse {
- type: 3
- button: 1
- buttons: 0
- x: 443; y: 155
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 832
- hash: "09647796906da54345fffa18eb1b1f91"
- }
- Frame {
- msec: 848
- hash: "4a7dd2931129756437e38b3516474aa1"
- }
- Frame {
- msec: 864
- hash: "bbec3d9d7ca38599b03e44ed3c2b68b6"
- }
- Frame {
- msec: 880
- hash: "07214f888dba9ea84eae306cf92a0f7f"
- }
- Frame {
- msec: 896
- hash: "0feac7c874f8caf11db319c13ed2250e"
- }
- Frame {
- msec: 912
- hash: "7de76db129b4e9d17836d17fff687b99"
- }
- Frame {
- msec: 928
- hash: "7f3414d54148afd7b01ed0fe54b60ba2"
- }
- Frame {
- msec: 944
- hash: "692cde1197a0f37bee5a4e57160bff8b"
- }
- Frame {
- msec: 960
- image: "flickable.0.png"
- }
- Frame {
- msec: 976
- hash: "d0b879cb63d003c0fd00c14160e7d1a4"
- }
- Frame {
- msec: 992
- hash: "9a0879e4e9b23ad3c9340d7c28eb6386"
- }
- Frame {
- msec: 1008
- hash: "2b6f4cb48284a835f77bc6368566c187"
- }
- Frame {
- msec: 1024
- hash: "53c094e3aa4f841195b2ce4e0fa34fae"
- }
- Frame {
- msec: 1040
- hash: "3ef7530199a136d339adf677cf98f035"
- }
- Frame {
- msec: 1056
- hash: "1a707788b43773ffa05d0ad88e6f156d"
- }
- Frame {
- msec: 1072
- hash: "e51dc6702e59c68e6a34f4a8f6c5b5c5"
- }
- Frame {
- msec: 1088
- hash: "1fe6d9b517ad1b9aaf16d005577ab45d"
- }
- Frame {
- msec: 1104
- hash: "fac02bdb63d4aa7749a66f6aa91a7035"
- }
- Frame {
- msec: 1120
- hash: "4bad8d93cee30c76a4b263981adc0c2f"
- }
- Frame {
- msec: 1136
- hash: "8bcee1ab8a1ab66b22d59d975a265906"
- }
- Frame {
- msec: 1152
- hash: "a68fa84e32d4ba44d4d53b476505ff6e"
- }
- Frame {
- msec: 1168
- hash: "d7258071d6673ef22a8836a8fdc6c5a6"
- }
- Frame {
- msec: 1184
- hash: "c708f62342663a4a879c86cd97448b75"
- }
- Frame {
- msec: 1200
- hash: "2e28d213283f4791d051177f468d9246"
- }
- Frame {
- msec: 1216
- hash: "beb36da1d54eedc62b65c47ba7c43f59"
- }
- Frame {
- msec: 1232
- hash: "2cea7b5571c563a709e211fbb5684a9d"
- }
- Frame {
- msec: 1248
- hash: "9ef0bafe8a9d52bc2fb7732c02ea9304"
- }
- Frame {
- msec: 1264
- hash: "7a489611578c9590aaf1b85763d8ae2c"
- }
- Frame {
- msec: 1280
- hash: "31b8e33b788821922d6d437f40c7811c"
- }
- Frame {
- msec: 1296
- hash: "421ae01b4d757996aefb35641f167c2d"
- }
- Frame {
- msec: 1312
- hash: "175c93fde4cb520881802a57bf10be5f"
- }
- Frame {
- msec: 1328
- hash: "11602a6ca746c83c857524eafc4d9570"
- }
- Frame {
- msec: 1344
- hash: "4f10b74a1bb8d65f3d371cc613a1641a"
- }
- Frame {
- msec: 1360
- hash: "d8505ce7ad73683817ed4e3a7f3ab610"
- }
- Frame {
- msec: 1376
- hash: "a800684370e06817e1a2a34ceb2fc651"
- }
- Frame {
- msec: 1392
- hash: "267e184af16c63eefe290c6659917b34"
- }
- Frame {
- msec: 1408
- hash: "354c5b04c0ed2288c23064debb4e261e"
- }
- Frame {
- msec: 1424
- hash: "67d300a0f15f0642c4ba0c8bd7662c01"
- }
- Frame {
- msec: 1440
- hash: "2fe12d1625140c2da1f0af17e1bf548b"
- }
- Frame {
- msec: 1456
- hash: "fef2140a272d78f5c0e93ec3a4c6e6c9"
- }
- Frame {
- msec: 1472
- hash: "b9331a586bad1619e51794bc66bf36fc"
- }
- Frame {
- msec: 1488
- hash: "8ba04c015ca8c150e0bbb09769955b5d"
- }
- Frame {
- msec: 1504
- hash: "09f573e1465533e67fa0d504e5481c8b"
- }
- Frame {
- msec: 1520
- hash: "fe3e919aa08ddd51ee7b81ef405b10f4"
- }
- Frame {
- msec: 1536
- hash: "e5d85427a2e02dd83d2932205e7aa6ac"
- }
- Frame {
- msec: 1552
- hash: "4e97fda26cbb0273dd69e50cf134a147"
- }
- Frame {
- msec: 1568
- hash: "7e13b494b5397b747eb6065f7555acce"
- }
- Frame {
- msec: 1584
- hash: "fe9567c08f776bed903a74c9c21a18bb"
- }
- Frame {
- msec: 1600
- hash: "086dd974228d51513e732c96c69dd07f"
- }
- Frame {
- msec: 1616
- hash: "b43d5b4f44df55b1099c7ba339df1799"
- }
- Frame {
- msec: 1632
- hash: "ce0e82fc42ff0017b40278e323682348"
- }
- Frame {
- msec: 1648
- hash: "e28b9cee2047774d70df6510c83e9dfe"
- }
- Frame {
- msec: 1664
- hash: "568d97ff98ac2d867981eb7330b831b1"
- }
- Frame {
- msec: 1680
- hash: "10f38a5f95a91bc7380a13f5aa30f22f"
- }
- Frame {
- msec: 1696
- hash: "2f9ec9b1843f2970fa8225f313781404"
- }
- Frame {
- msec: 1712
- hash: "bdd8405a889ff9a6e33cce65416bdc43"
- }
- Frame {
- msec: 1728
- hash: "9f57f8460ade9e6ff3db7a0a8d044f07"
- }
- Frame {
- msec: 1744
- hash: "36d1e95a006c00b183b24a05c2acf12f"
- }
- Frame {
- msec: 1760
- hash: "78d7f8b056c0341b442c0eabbf6da90b"
- }
- Frame {
- msec: 1776
- hash: "f5786d9a77a28796908fcb376af2cc1f"
- }
- Frame {
- msec: 1792
- hash: "38cfaf7a356163f8ff9708ba625907b7"
- }
- Frame {
- msec: 1808
- hash: "989922a8c5e3c000811a994bfe183d7f"
- }
- Frame {
- msec: 1824
- hash: "989922a8c5e3c000811a994bfe183d7f"
- }
- Frame {
- msec: 1840
- hash: "989922a8c5e3c000811a994bfe183d7f"
- }
- Frame {
- msec: 1856
- hash: "f5786d9a77a28796908fcb376af2cc1f"
- }
- Frame {
- msec: 1872
- hash: "014cfc6573eb0a89acacd6f154098202"
- }
- Frame {
- msec: 1888
- hash: "247fead2e4139421cb6e5f7a97fa1768"
- }
- Frame {
- msec: 1904
- hash: "bdd8405a889ff9a6e33cce65416bdc43"
- }
- Frame {
- msec: 1920
- image: "flickable.1.png"
- }
- Frame {
- msec: 1936
- hash: "d64f65edf900912158634c88b5c0b5ca"
- }
- Frame {
- msec: 1952
- hash: "d714183774f603269335b0675e0656f8"
- }
- Frame {
- msec: 1968
- hash: "24f9e90f7789a7c5db65d59312d49fe1"
- }
- Frame {
- msec: 1984
- hash: "ce0e82fc42ff0017b40278e323682348"
- }
- Frame {
- msec: 2000
- hash: "f564293ff63ccc952597ac228c6437dc"
- }
- Frame {
- msec: 2016
- hash: "555d97eac7e8b06cb81f4af74098ce65"
- }
- Frame {
- msec: 2032
- hash: "555d97eac7e8b06cb81f4af74098ce65"
- }
- Frame {
- msec: 2048
- hash: "555d97eac7e8b06cb81f4af74098ce65"
- }
- Frame {
- msec: 2064
- hash: "555d97eac7e8b06cb81f4af74098ce65"
- }
- Frame {
- msec: 2080
- hash: "555d97eac7e8b06cb81f4af74098ce65"
- }
- Frame {
- msec: 2096
- hash: "555d97eac7e8b06cb81f4af74098ce65"
- }
- Frame {
- msec: 2112
- hash: "555d97eac7e8b06cb81f4af74098ce65"
- }
- Frame {
- msec: 2128
- hash: "555d97eac7e8b06cb81f4af74098ce65"
- }
- Frame {
- msec: 2144
- hash: "555d97eac7e8b06cb81f4af74098ce65"
- }
- Frame {
- msec: 2160
- hash: "555d97eac7e8b06cb81f4af74098ce65"
- }
- Frame {
- msec: 2176
- hash: "555d97eac7e8b06cb81f4af74098ce65"
- }
- Frame {
- msec: 2192
- hash: "555d97eac7e8b06cb81f4af74098ce65"
- }
- Frame {
- msec: 2208
- hash: "555d97eac7e8b06cb81f4af74098ce65"
- }
- Frame {
- msec: 2224
- hash: "555d97eac7e8b06cb81f4af74098ce65"
- }
- Frame {
- msec: 2240
- hash: "555d97eac7e8b06cb81f4af74098ce65"
- }
- Frame {
- msec: 2256
- hash: "555d97eac7e8b06cb81f4af74098ce65"
- }
- Frame {
- msec: 2272
- hash: "555d97eac7e8b06cb81f4af74098ce65"
- }
- Frame {
- msec: 2288
- hash: "555d97eac7e8b06cb81f4af74098ce65"
- }
- Frame {
- msec: 2304
- hash: "555d97eac7e8b06cb81f4af74098ce65"
- }
- Frame {
- msec: 2320
- hash: "555d97eac7e8b06cb81f4af74098ce65"
- }
- Frame {
- msec: 2336
- hash: "555d97eac7e8b06cb81f4af74098ce65"
- }
- Frame {
- msec: 2352
- hash: "555d97eac7e8b06cb81f4af74098ce65"
- }
- Frame {
- msec: 2368
- hash: "555d97eac7e8b06cb81f4af74098ce65"
- }
- Frame {
- msec: 2384
- hash: "555d97eac7e8b06cb81f4af74098ce65"
- }
- Frame {
- msec: 2400
- hash: "555d97eac7e8b06cb81f4af74098ce65"
- }
- Frame {
- msec: 2416
- hash: "555d97eac7e8b06cb81f4af74098ce65"
- }
- Frame {
- msec: 2432
- hash: "555d97eac7e8b06cb81f4af74098ce65"
- }
- Frame {
- msec: 2448
- hash: "555d97eac7e8b06cb81f4af74098ce65"
- }
- Frame {
- msec: 2464
- hash: "555d97eac7e8b06cb81f4af74098ce65"
- }
- Frame {
- msec: 2480
- hash: "555d97eac7e8b06cb81f4af74098ce65"
- }
- Frame {
- msec: 2496
- hash: "555d97eac7e8b06cb81f4af74098ce65"
- }
- Frame {
- msec: 2512
- hash: "555d97eac7e8b06cb81f4af74098ce65"
- }
- Frame {
- msec: 2528
- hash: "555d97eac7e8b06cb81f4af74098ce65"
- }
- Frame {
- msec: 2544
- hash: "555d97eac7e8b06cb81f4af74098ce65"
- }
- Frame {
- msec: 2560
- hash: "555d97eac7e8b06cb81f4af74098ce65"
- }
- Frame {
- msec: 2576
- hash: "555d97eac7e8b06cb81f4af74098ce65"
- }
- Frame {
- msec: 2592
- hash: "555d97eac7e8b06cb81f4af74098ce65"
- }
- Frame {
- msec: 2608
- hash: "555d97eac7e8b06cb81f4af74098ce65"
- }
- Frame {
- msec: 2624
- hash: "555d97eac7e8b06cb81f4af74098ce65"
- }
- Frame {
- msec: 2640
- hash: "555d97eac7e8b06cb81f4af74098ce65"
- }
- Frame {
- msec: 2656
- hash: "555d97eac7e8b06cb81f4af74098ce65"
- }
- Frame {
- msec: 2672
- hash: "555d97eac7e8b06cb81f4af74098ce65"
- }
- Frame {
- msec: 2688
- hash: "555d97eac7e8b06cb81f4af74098ce65"
- }
- Frame {
- msec: 2704
- hash: "555d97eac7e8b06cb81f4af74098ce65"
- }
- Frame {
- msec: 2720
- hash: "555d97eac7e8b06cb81f4af74098ce65"
- }
- Frame {
- msec: 2736
- hash: "555d97eac7e8b06cb81f4af74098ce65"
- }
- Frame {
- msec: 2752
- hash: "555d97eac7e8b06cb81f4af74098ce65"
- }
- Frame {
- msec: 2768
- hash: "555d97eac7e8b06cb81f4af74098ce65"
- }
- Frame {
- msec: 2784
- hash: "555d97eac7e8b06cb81f4af74098ce65"
- }
- Frame {
- msec: 2800
- hash: "555d97eac7e8b06cb81f4af74098ce65"
- }
- Frame {
- msec: 2816
- hash: "555d97eac7e8b06cb81f4af74098ce65"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 0
- text: ""
- autorep: false
- count: 1
- }
- Frame {
- msec: 2832
- hash: "555d97eac7e8b06cb81f4af74098ce65"
- }
- Frame {
- msec: 2848
- hash: "555d97eac7e8b06cb81f4af74098ce65"
- }
- Frame {
- msec: 2864
- hash: "555d97eac7e8b06cb81f4af74098ce65"
- }
- Frame {
- msec: 2880
- image: "flickable.2.png"
- }
-}
diff --git a/tests/auto/declarative/visual/flickable/data/flickable.0.png b/tests/auto/declarative/visual/flickable/data/flickable.0.png
deleted file mode 100644
index b7ddf5a..0000000
--- a/tests/auto/declarative/visual/flickable/data/flickable.0.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/visual/flickable/data/flickable.1.png b/tests/auto/declarative/visual/flickable/data/flickable.1.png
deleted file mode 100644
index ef48b85..0000000
--- a/tests/auto/declarative/visual/flickable/data/flickable.1.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/visual/flickable/data/flickable.2.png b/tests/auto/declarative/visual/flickable/data/flickable.2.png
deleted file mode 100644
index 60c357b..0000000
--- a/tests/auto/declarative/visual/flickable/data/flickable.2.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/visual/flickable/data/flickable.qml b/tests/auto/declarative/visual/flickable/data/flickable.qml
deleted file mode 100644
index 730c128..0000000
--- a/tests/auto/declarative/visual/flickable/data/flickable.qml
+++ /dev/null
@@ -1,791 +0,0 @@
-import Qt.VisualTest 4.6
-
-VisualTest {
- Frame {
- msec: 0
- }
- Frame {
- msec: 16
- hash: "eceae327c367ccc69c5133d027df77c2"
- }
- Frame {
- msec: 32
- hash: "eceae327c367ccc69c5133d027df77c2"
- }
- Frame {
- msec: 48
- hash: "eceae327c367ccc69c5133d027df77c2"
- }
- Frame {
- msec: 64
- hash: "eceae327c367ccc69c5133d027df77c2"
- }
- Frame {
- msec: 80
- hash: "eceae327c367ccc69c5133d027df77c2"
- }
- Frame {
- msec: 96
- hash: "eceae327c367ccc69c5133d027df77c2"
- }
- Frame {
- msec: 112
- hash: "eceae327c367ccc69c5133d027df77c2"
- }
- Frame {
- msec: 128
- hash: "eceae327c367ccc69c5133d027df77c2"
- }
- Frame {
- msec: 144
- hash: "eceae327c367ccc69c5133d027df77c2"
- }
- Frame {
- msec: 160
- hash: "eceae327c367ccc69c5133d027df77c2"
- }
- Frame {
- msec: 176
- hash: "eceae327c367ccc69c5133d027df77c2"
- }
- Frame {
- msec: 192
- hash: "eceae327c367ccc69c5133d027df77c2"
- }
- Frame {
- msec: 208
- hash: "eceae327c367ccc69c5133d027df77c2"
- }
- Frame {
- msec: 224
- hash: "eceae327c367ccc69c5133d027df77c2"
- }
- Frame {
- msec: 240
- hash: "eceae327c367ccc69c5133d027df77c2"
- }
- Frame {
- msec: 256
- hash: "eceae327c367ccc69c5133d027df77c2"
- }
- Frame {
- msec: 272
- hash: "eceae327c367ccc69c5133d027df77c2"
- }
- Frame {
- msec: 288
- hash: "eceae327c367ccc69c5133d027df77c2"
- }
- Frame {
- msec: 304
- hash: "eceae327c367ccc69c5133d027df77c2"
- }
- Frame {
- msec: 320
- hash: "eceae327c367ccc69c5133d027df77c2"
- }
- Frame {
- msec: 336
- hash: "eceae327c367ccc69c5133d027df77c2"
- }
- Frame {
- msec: 352
- hash: "eceae327c367ccc69c5133d027df77c2"
- }
- Frame {
- msec: 368
- hash: "eceae327c367ccc69c5133d027df77c2"
- }
- Frame {
- msec: 384
- hash: "eceae327c367ccc69c5133d027df77c2"
- }
- Frame {
- msec: 400
- hash: "eceae327c367ccc69c5133d027df77c2"
- }
- Frame {
- msec: 416
- hash: "eceae327c367ccc69c5133d027df77c2"
- }
- Frame {
- msec: 432
- hash: "eceae327c367ccc69c5133d027df77c2"
- }
- Frame {
- msec: 448
- hash: "eceae327c367ccc69c5133d027df77c2"
- }
- Frame {
- msec: 464
- hash: "eceae327c367ccc69c5133d027df77c2"
- }
- Frame {
- msec: 480
- hash: "eceae327c367ccc69c5133d027df77c2"
- }
- Frame {
- msec: 496
- hash: "eceae327c367ccc69c5133d027df77c2"
- }
- Frame {
- msec: 512
- hash: "eceae327c367ccc69c5133d027df77c2"
- }
- Frame {
- msec: 528
- hash: "eceae327c367ccc69c5133d027df77c2"
- }
- Frame {
- msec: 544
- hash: "eceae327c367ccc69c5133d027df77c2"
- }
- Frame {
- msec: 560
- hash: "eceae327c367ccc69c5133d027df77c2"
- }
- Frame {
- msec: 576
- hash: "eceae327c367ccc69c5133d027df77c2"
- }
- Frame {
- msec: 592
- hash: "eceae327c367ccc69c5133d027df77c2"
- }
- Frame {
- msec: 608
- hash: "eceae327c367ccc69c5133d027df77c2"
- }
- Frame {
- msec: 624
- hash: "eceae327c367ccc69c5133d027df77c2"
- }
- Frame {
- msec: 640
- hash: "eceae327c367ccc69c5133d027df77c2"
- }
- Frame {
- msec: 656
- hash: "eceae327c367ccc69c5133d027df77c2"
- }
- Frame {
- msec: 672
- hash: "eceae327c367ccc69c5133d027df77c2"
- }
- Frame {
- msec: 688
- hash: "eceae327c367ccc69c5133d027df77c2"
- }
- Frame {
- msec: 704
- hash: "eceae327c367ccc69c5133d027df77c2"
- }
- Frame {
- msec: 720
- hash: "eceae327c367ccc69c5133d027df77c2"
- }
- Mouse {
- type: 2
- button: 1
- buttons: 1
- x: 517; y: 154
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 736
- hash: "eceae327c367ccc69c5133d027df77c2"
- }
- Mouse {
- type: 5
- button: 1
- buttons: 1
- x: 514; y: 154
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 752
- hash: "eceae327c367ccc69c5133d027df77c2"
- }
- Mouse {
- type: 5
- button: 1
- buttons: 1
- x: 509; y: 155
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 768
- hash: "eceae327c367ccc69c5133d027df77c2"
- }
- Mouse {
- type: 5
- button: 1
- buttons: 1
- x: 497; y: 155
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 784
- hash: "6a0f0d49abe4b5c2f3347bb0912c46bd"
- }
- Mouse {
- type: 5
- button: 1
- buttons: 1
- x: 480; y: 155
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 800
- hash: "c7c13b23ac20eaee2a0fca45a03495d3"
- }
- Mouse {
- type: 5
- button: 1
- buttons: 1
- x: 443; y: 155
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 816
- hash: "50559226ce0e0d94d330f34b0dfdaf48"
- }
- Mouse {
- type: 3
- button: 1
- buttons: 0
- x: 443; y: 155
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 832
- hash: "50559226ce0e0d94d330f34b0dfdaf48"
- }
- Frame {
- msec: 848
- hash: "dda302c698e909c7bf4cffdedf68fffb"
- }
- Frame {
- msec: 864
- hash: "d2ef86c4e840e22f27b9d5806d2685c1"
- }
- Frame {
- msec: 880
- hash: "6a38ab0c8e4e6687b1922d1ab30c5193"
- }
- Frame {
- msec: 896
- hash: "ddec5e9353017ae5d12f3efb9a15327c"
- }
- Frame {
- msec: 912
- hash: "e383591b6ce172ef86e2f1a90c5988db"
- }
- Frame {
- msec: 928
- hash: "3cd848d258775f50cbb668490b7cebf6"
- }
- Frame {
- msec: 944
- hash: "348f9bb0282edbe99947e72f234c0c72"
- }
- Frame {
- msec: 960
- image: "flickable.0.png"
- }
- Frame {
- msec: 976
- hash: "f7744a4f78b6791ce5f5184834f1798e"
- }
- Frame {
- msec: 992
- hash: "c4014a38bf59218e0673519c5bab0f74"
- }
- Frame {
- msec: 1008
- hash: "2a6b3d050b0f854b8f71d77b58dd9d8f"
- }
- Frame {
- msec: 1024
- hash: "30f25f6dcbad9e495d869943a8d83eee"
- }
- Frame {
- msec: 1040
- hash: "b5d6d395c94a19e9776ff1162c64993f"
- }
- Frame {
- msec: 1056
- hash: "2ce75b60f41f4b6b0c421788effd4be8"
- }
- Frame {
- msec: 1072
- hash: "cda31ad2f65d7d6cc1c9974748243904"
- }
- Frame {
- msec: 1088
- hash: "ffa1e5a479e60304570d89465e8898b1"
- }
- Frame {
- msec: 1104
- hash: "d8c984c1e00056cdfd1814f96fc04125"
- }
- Frame {
- msec: 1120
- hash: "0e855b0616b1c837c22ea34bbff76f10"
- }
- Frame {
- msec: 1136
- hash: "d2189d6dc8f635f9df5889e6825d11fc"
- }
- Frame {
- msec: 1152
- hash: "4086f2213831f0c616e7e02f58b17c46"
- }
- Frame {
- msec: 1168
- hash: "40b216eb2b7a0025123fa2374215644a"
- }
- Frame {
- msec: 1184
- hash: "236edf2f7da209cb5bf3efe334977e7f"
- }
- Frame {
- msec: 1200
- hash: "c2a9242b261988b58e58dc764aac7fca"
- }
- Frame {
- msec: 1216
- hash: "a6b707c16d0b72552403a518a27e40c8"
- }
- Frame {
- msec: 1232
- hash: "e0800659c30618417c56e5a8b6de0eeb"
- }
- Frame {
- msec: 1248
- hash: "3006d6af221e50eef60f67cc32d45e30"
- }
- Frame {
- msec: 1264
- hash: "7deab264af55709f25d22a10a83f2595"
- }
- Frame {
- msec: 1280
- hash: "11e2c733f48c02e8b1c66c0e9cc7f4b0"
- }
- Frame {
- msec: 1296
- hash: "a1242c3ea085838371fa1f31e11b4cc4"
- }
- Frame {
- msec: 1312
- hash: "3cba18358c3db55a585095733a914b31"
- }
- Frame {
- msec: 1328
- hash: "45dde70b0436f365f1711005321fbc1a"
- }
- Frame {
- msec: 1344
- hash: "29a9c57bb78c41e89d5db19b54a4f760"
- }
- Frame {
- msec: 1360
- hash: "3ec8e579f2ee49da0bf384f4b688e70e"
- }
- Frame {
- msec: 1376
- hash: "e6b7d3147b213ed2cddc81ee784b275b"
- }
- Frame {
- msec: 1392
- hash: "77a82e5d657b32b6f7f1681139c83b83"
- }
- Frame {
- msec: 1408
- hash: "623bcf513f95f6ca3052dc6f1fb13fb5"
- }
- Frame {
- msec: 1424
- hash: "d10b5fac984040899790273cd9246f71"
- }
- Frame {
- msec: 1440
- hash: "7b48417ae3627fed645b804ea24b376a"
- }
- Frame {
- msec: 1456
- hash: "5e5eb1fdc7fdf34f3df46b187544b9d5"
- }
- Frame {
- msec: 1472
- hash: "e4f08871f3dcb355c267fc27654c5704"
- }
- Frame {
- msec: 1488
- hash: "e8d82fee9fb5b2bb2fd6149a12947ea6"
- }
- Frame {
- msec: 1504
- hash: "a54e845480bed6b16c120a59a2bb07c3"
- }
- Frame {
- msec: 1520
- hash: "a96ae1a5ca2d04d7b330c4e1d5e2594a"
- }
- Frame {
- msec: 1536
- hash: "d1a4c4b1864581bad005392dd3c54d8a"
- }
- Frame {
- msec: 1552
- hash: "5bd3ae538de83151f90a40c800c081a5"
- }
- Frame {
- msec: 1568
- hash: "be5adfb11a6ad52d432fb96c0526d2ee"
- }
- Frame {
- msec: 1584
- hash: "2ea08dda212fa9839e0183d2b742c64f"
- }
- Frame {
- msec: 1600
- hash: "ba0d9014b7e30a49c51196807809368b"
- }
- Frame {
- msec: 1616
- hash: "e6cfdc4688cc7e49842a58bc39a6a1b3"
- }
- Frame {
- msec: 1632
- hash: "3aca4ba1d6bd38cdc278ff5d19e37693"
- }
- Frame {
- msec: 1648
- hash: "41acb4e8cddfa8371446bef580d420b4"
- }
- Frame {
- msec: 1664
- hash: "4860e0bf80bfd01b9e7e1d3b11152ac4"
- }
- Frame {
- msec: 1680
- hash: "85806f7e41725a35cb20b3ca07a2b3be"
- }
- Frame {
- msec: 1696
- hash: "07a0af6f784b91838d1ed23c326c29ce"
- }
- Frame {
- msec: 1712
- hash: "d4d0c0e65861dbce8992d714f5b18f0b"
- }
- Frame {
- msec: 1728
- hash: "ebcc280d376fed1bb45588992ad777e3"
- }
- Frame {
- msec: 1744
- hash: "2d8c183189c0a9234d6ff1e663503853"
- }
- Frame {
- msec: 1760
- hash: "5e3bec7de667175a7bd89aa5eb704003"
- }
- Frame {
- msec: 1776
- hash: "709b890b1939261377537f7bddb45a60"
- }
- Frame {
- msec: 1792
- hash: "c95dfd0259048e27a98b4676957e5183"
- }
- Frame {
- msec: 1808
- hash: "bfff5f9e90e280a3684f46967e8cb73f"
- }
- Frame {
- msec: 1824
- hash: "bfff5f9e90e280a3684f46967e8cb73f"
- }
- Frame {
- msec: 1840
- hash: "bfff5f9e90e280a3684f46967e8cb73f"
- }
- Frame {
- msec: 1856
- hash: "709b890b1939261377537f7bddb45a60"
- }
- Frame {
- msec: 1872
- hash: "a7ca5f1053393486cf48d5a83d89d1a7"
- }
- Frame {
- msec: 1888
- hash: "d9c34a6fe59ed8f9ff7b792301f80f52"
- }
- Frame {
- msec: 1904
- hash: "d4d0c0e65861dbce8992d714f5b18f0b"
- }
- Frame {
- msec: 1920
- image: "flickable.1.png"
- }
- Frame {
- msec: 1936
- hash: "cc7228edac6583cab5b186cd9bbb2233"
- }
- Frame {
- msec: 1952
- hash: "6a6af6de32f68f85c902140bc40071d3"
- }
- Frame {
- msec: 1968
- hash: "43b6b548eb145f79fa655c270abaac32"
- }
- Frame {
- msec: 1984
- hash: "3aca4ba1d6bd38cdc278ff5d19e37693"
- }
- Frame {
- msec: 2000
- hash: "184e42b2bcc0e5cf354dc92acdc23cef"
- }
- Frame {
- msec: 2016
- hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6"
- }
- Frame {
- msec: 2032
- hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6"
- }
- Frame {
- msec: 2048
- hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6"
- }
- Frame {
- msec: 2064
- hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6"
- }
- Frame {
- msec: 2080
- hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6"
- }
- Frame {
- msec: 2096
- hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6"
- }
- Frame {
- msec: 2112
- hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6"
- }
- Frame {
- msec: 2128
- hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6"
- }
- Frame {
- msec: 2144
- hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6"
- }
- Frame {
- msec: 2160
- hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6"
- }
- Frame {
- msec: 2176
- hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6"
- }
- Frame {
- msec: 2192
- hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6"
- }
- Frame {
- msec: 2208
- hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6"
- }
- Frame {
- msec: 2224
- hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6"
- }
- Frame {
- msec: 2240
- hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6"
- }
- Frame {
- msec: 2256
- hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6"
- }
- Frame {
- msec: 2272
- hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6"
- }
- Frame {
- msec: 2288
- hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6"
- }
- Frame {
- msec: 2304
- hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6"
- }
- Frame {
- msec: 2320
- hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6"
- }
- Frame {
- msec: 2336
- hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6"
- }
- Frame {
- msec: 2352
- hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6"
- }
- Frame {
- msec: 2368
- hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6"
- }
- Frame {
- msec: 2384
- hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6"
- }
- Frame {
- msec: 2400
- hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6"
- }
- Frame {
- msec: 2416
- hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6"
- }
- Frame {
- msec: 2432
- hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6"
- }
- Frame {
- msec: 2448
- hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6"
- }
- Frame {
- msec: 2464
- hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6"
- }
- Frame {
- msec: 2480
- hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6"
- }
- Frame {
- msec: 2496
- hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6"
- }
- Frame {
- msec: 2512
- hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6"
- }
- Frame {
- msec: 2528
- hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6"
- }
- Frame {
- msec: 2544
- hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6"
- }
- Frame {
- msec: 2560
- hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6"
- }
- Frame {
- msec: 2576
- hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6"
- }
- Frame {
- msec: 2592
- hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6"
- }
- Frame {
- msec: 2608
- hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6"
- }
- Frame {
- msec: 2624
- hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6"
- }
- Frame {
- msec: 2640
- hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6"
- }
- Frame {
- msec: 2656
- hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6"
- }
- Frame {
- msec: 2672
- hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6"
- }
- Frame {
- msec: 2688
- hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6"
- }
- Frame {
- msec: 2704
- hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6"
- }
- Frame {
- msec: 2720
- hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6"
- }
- Frame {
- msec: 2736
- hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6"
- }
- Frame {
- msec: 2752
- hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6"
- }
- Frame {
- msec: 2768
- hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6"
- }
- Frame {
- msec: 2784
- hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6"
- }
- Frame {
- msec: 2800
- hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6"
- }
- Frame {
- msec: 2816
- hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 67108864
- text: ""
- autorep: false
- count: 1
- }
- Frame {
- msec: 2832
- hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6"
- }
- Frame {
- msec: 2848
- hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6"
- }
- Frame {
- msec: 2864
- hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6"
- }
- Frame {
- msec: 2880
- image: "flickable.2.png"
- }
-}
diff --git a/tests/auto/declarative/visual/flickable/flickable.qml b/tests/auto/declarative/visual/flickable/flickable.qml
deleted file mode 100644
index 42bd5b3..0000000
--- a/tests/auto/declarative/visual/flickable/flickable.qml
+++ /dev/null
@@ -1,55 +0,0 @@
-import Qt 4.6
-
-Rectangle {
- color: "lightSteelBlue"
- width: 600
- height: 300
- ListModel {
- id: List
- ListElement {
- name: "Sunday"
- dayColor: "#808080"
- }
- ListElement {
- name: "Monday"
- dayColor: "blue"
- }
- ListElement {
- name: "Tuesday"
- dayColor: "yellow"
- }
- ListElement {
- name: "Wednesday"
- dayColor: "purple"
- }
- ListElement {
- name: "Thursday"
- dayColor: "blue"
- }
- ListElement {
- name: "Friday"
- dayColor: "green"
- }
- ListElement {
- name: "Saturday"
- dayColor: "orange"
- }
- }
- Flickable {
- id: Flick
- anchors.fill: parent
- viewportWidth: Lay.width
- Row {
- id: Lay
- Repeater {
- model: List
- Component {
- Day {
- day: name
- color: dayColor
- }
- }
- }
- }
- }
-}
diff --git a/tests/auto/declarative/visual/qmlgraphicsflickable/data/flickable-horizontal.0.png b/tests/auto/declarative/visual/qmlgraphicsflickable/data/flickable-horizontal.0.png
new file mode 100644
index 0000000..d58afd8
--- /dev/null
+++ b/tests/auto/declarative/visual/qmlgraphicsflickable/data/flickable-horizontal.0.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qmlgraphicsflickable/data/flickable-horizontal.1.png b/tests/auto/declarative/visual/qmlgraphicsflickable/data/flickable-horizontal.1.png
new file mode 100644
index 0000000..6271bfb
--- /dev/null
+++ b/tests/auto/declarative/visual/qmlgraphicsflickable/data/flickable-horizontal.1.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qmlgraphicsflickable/data/flickable-horizontal.2.png b/tests/auto/declarative/visual/qmlgraphicsflickable/data/flickable-horizontal.2.png
new file mode 100644
index 0000000..b6f0241
--- /dev/null
+++ b/tests/auto/declarative/visual/qmlgraphicsflickable/data/flickable-horizontal.2.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qmlgraphicsflickable/data/flickable-horizontal.3.png b/tests/auto/declarative/visual/qmlgraphicsflickable/data/flickable-horizontal.3.png
new file mode 100644
index 0000000..d58afd8
--- /dev/null
+++ b/tests/auto/declarative/visual/qmlgraphicsflickable/data/flickable-horizontal.3.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qmlgraphicsflickable/data/flickable-horizontal.qml b/tests/auto/declarative/visual/qmlgraphicsflickable/data/flickable-horizontal.qml
new file mode 100644
index 0000000..d5f67bf
--- /dev/null
+++ b/tests/auto/declarative/visual/qmlgraphicsflickable/data/flickable-horizontal.qml
@@ -0,0 +1,1199 @@
+import Qt.VisualTest 4.6
+
+VisualTest {
+ Frame {
+ msec: 0
+ }
+ Frame {
+ msec: 16
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+ Frame {
+ msec: 32
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+ Frame {
+ msec: 48
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+ Frame {
+ msec: 64
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+ Frame {
+ msec: 80
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+ Frame {
+ msec: 96
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+ Frame {
+ msec: 112
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+ Frame {
+ msec: 128
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+ Frame {
+ msec: 144
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+ Frame {
+ msec: 160
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+ Frame {
+ msec: 176
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+ Frame {
+ msec: 192
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+ Frame {
+ msec: 208
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+ Frame {
+ msec: 224
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+ Frame {
+ msec: 240
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+ Frame {
+ msec: 256
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+ Frame {
+ msec: 272
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+ Frame {
+ msec: 288
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+ Frame {
+ msec: 304
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+ Frame {
+ msec: 320
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+ Frame {
+ msec: 336
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+ Frame {
+ msec: 352
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+ Frame {
+ msec: 368
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+ Frame {
+ msec: 384
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+ Frame {
+ msec: 400
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+ Frame {
+ msec: 416
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+ Frame {
+ msec: 432
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+ Frame {
+ msec: 448
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+ Frame {
+ msec: 464
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+ Frame {
+ msec: 480
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+ Frame {
+ msec: 496
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+ Frame {
+ msec: 512
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+ Frame {
+ msec: 528
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+ Frame {
+ msec: 544
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+ Frame {
+ msec: 560
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+ Frame {
+ msec: 576
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+ Frame {
+ msec: 592
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+ Frame {
+ msec: 608
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+ Frame {
+ msec: 624
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+ Frame {
+ msec: 640
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+ Frame {
+ msec: 656
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+ Frame {
+ msec: 672
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+ Frame {
+ msec: 688
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+ Frame {
+ msec: 704
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+ Frame {
+ msec: 720
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+ Frame {
+ msec: 736
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+ Frame {
+ msec: 752
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+ Frame {
+ msec: 768
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+ Frame {
+ msec: 784
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+ Frame {
+ msec: 800
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+ Frame {
+ msec: 816
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+ Frame {
+ msec: 832
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+ Frame {
+ msec: 848
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+ Frame {
+ msec: 864
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+ Frame {
+ msec: 880
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+ Frame {
+ msec: 896
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+ Frame {
+ msec: 912
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+ Frame {
+ msec: 928
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+ Frame {
+ msec: 944
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 477; y: 171
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 960
+ image: "flickable-horizontal.0.png"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 473; y: 171
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 976
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 463; y: 171
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 992
+ hash: "c4d91a9e7f785ccd50db55f697d75cb9"
+ }
+ Frame {
+ msec: 1008
+ hash: "c4d91a9e7f785ccd50db55f697d75cb9"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 449; y: 171
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1024
+ hash: "4f054038668f56cf3fc46dee08504b24"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 425; y: 172
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1040
+ hash: "e6ae6e2a8e5fb7204ae1f559b5dc4a63"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 393; y: 172
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 393; y: 172
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1056
+ hash: "3bfaaef12ca852421ad179d8598a306d"
+ }
+ Frame {
+ msec: 1072
+ hash: "e00ff5e13a9a97bc11e041f89e4782f5"
+ }
+ Frame {
+ msec: 1088
+ hash: "ae10ada837b21365936672e9a4b4b175"
+ }
+ Frame {
+ msec: 1104
+ hash: "63566d7f1707025c9ec37e398d0e69ef"
+ }
+ Frame {
+ msec: 1120
+ hash: "20e9d299cd867d680cf85f99e06cd200"
+ }
+ Frame {
+ msec: 1136
+ hash: "4d3a19b3c50a20ba1d93a8bcd178a424"
+ }
+ Frame {
+ msec: 1152
+ hash: "d373ab5240e438e8234ae05f935c1ef8"
+ }
+ Frame {
+ msec: 1168
+ hash: "2f9c00aa1f8a8cc5d10e6c6a0baee366"
+ }
+ Frame {
+ msec: 1184
+ hash: "0fd8203b0a33fd8243ecd878f04f9b42"
+ }
+ Frame {
+ msec: 1200
+ hash: "24a197df4209c7076d68031e5dd4fd9e"
+ }
+ Frame {
+ msec: 1216
+ hash: "9e4271eacdc875183e3c8e7a1eb098c2"
+ }
+ Frame {
+ msec: 1232
+ hash: "cdf7aac4ff7e5df806977eb38392f5bc"
+ }
+ Frame {
+ msec: 1248
+ hash: "1ace4a1312cad6f173a04c388624a97f"
+ }
+ Frame {
+ msec: 1264
+ hash: "193d6d6838ac1d5ddb941fbb340ec506"
+ }
+ Frame {
+ msec: 1280
+ hash: "ed82807a48f28610ba9bda0c7ab91ce4"
+ }
+ Frame {
+ msec: 1296
+ hash: "e1168bb9a88a972decb0c537d86d7758"
+ }
+ Frame {
+ msec: 1312
+ hash: "828ba428b04826687c6ef19b72318924"
+ }
+ Frame {
+ msec: 1328
+ hash: "7dae52c428253cf44045ffaabaadd2f4"
+ }
+ Frame {
+ msec: 1344
+ hash: "06e2a81e1a2421523642cfcf17ec22e4"
+ }
+ Frame {
+ msec: 1360
+ hash: "283997835a54e80c0ab8a0321bd03ce7"
+ }
+ Frame {
+ msec: 1376
+ hash: "6354f9379b7b25c8fabda4e5bc3cdf6a"
+ }
+ Frame {
+ msec: 1392
+ hash: "6bc87dfd21d59efd3397e3cfb0d00d25"
+ }
+ Frame {
+ msec: 1408
+ hash: "4f97fc9aa1f79a6b007a00459386b9ff"
+ }
+ Frame {
+ msec: 1424
+ hash: "2b5c711ede124c9e97d3ef83a3fdcc8b"
+ }
+ Frame {
+ msec: 1440
+ hash: "5a8cbd4ac3fcd920f2aea6e2cfa96467"
+ }
+ Frame {
+ msec: 1456
+ hash: "5b32961cb36e519f5b1d50386e796d3e"
+ }
+ Frame {
+ msec: 1472
+ hash: "c91f95cccd38cbd1a16ee65abffd40ab"
+ }
+ Frame {
+ msec: 1488
+ hash: "25108050298d3ffc850113971bcf54da"
+ }
+ Frame {
+ msec: 1504
+ hash: "6a236881f2a1cb487ee1945c279e020b"
+ }
+ Frame {
+ msec: 1520
+ hash: "2df1824df1cf20022595f64d26adb4ad"
+ }
+ Frame {
+ msec: 1536
+ hash: "4ca4a0a4b4fd9f9c4846adebcdc8fd67"
+ }
+ Frame {
+ msec: 1552
+ hash: "1696ef0862ff4772f960d203c43fbddf"
+ }
+ Frame {
+ msec: 1568
+ hash: "c5846835b8eb5d98c481ee5811344ea1"
+ }
+ Frame {
+ msec: 1584
+ hash: "fbcb044ee53302de573321b43f068e65"
+ }
+ Frame {
+ msec: 1600
+ hash: "d369e0a6c4a3e63102be29a7362ef9eb"
+ }
+ Frame {
+ msec: 1616
+ hash: "e93131b881805d4aa44949c69f486821"
+ }
+ Frame {
+ msec: 1632
+ hash: "b7aeee9e5065f1d4656e451b542ecf6a"
+ }
+ Frame {
+ msec: 1648
+ hash: "05521ca19960c070d5f3dd72c5ade0e4"
+ }
+ Frame {
+ msec: 1664
+ hash: "2c68cb3291cf1f892c8b8eb28b409e4d"
+ }
+ Frame {
+ msec: 1680
+ hash: "5a0908aea91df2b9e65d222829c2b0ba"
+ }
+ Frame {
+ msec: 1696
+ hash: "0d4ff147517eee8b3dbcd51a708b2aa7"
+ }
+ Frame {
+ msec: 1712
+ hash: "521e1075de1de89c6e25f469d2728ab7"
+ }
+ Frame {
+ msec: 1728
+ hash: "c543447f98ae608058c6c02c8c8665e6"
+ }
+ Frame {
+ msec: 1744
+ hash: "ac259db754b7dfb8cce8548527c72e4b"
+ }
+ Frame {
+ msec: 1760
+ hash: "bc5b68d5ecfb583ae41001e326b7aa9b"
+ }
+ Frame {
+ msec: 1776
+ hash: "e08051cb1ab2d8f979a52dc86411f78f"
+ }
+ Frame {
+ msec: 1792
+ hash: "b1746ad9563359f0d70a1aaee62e9bd8"
+ }
+ Frame {
+ msec: 1808
+ hash: "5d6bc33ff2857fb8db582362bf7c19c7"
+ }
+ Frame {
+ msec: 1824
+ hash: "83f2c3a7124f9be4dbe883a27ca7df8e"
+ }
+ Frame {
+ msec: 1840
+ hash: "189f7cfb5ede1f8380b1a05b7e3d942e"
+ }
+ Frame {
+ msec: 1856
+ hash: "07b1a4e5ca156e6aa1f3e76b825807ce"
+ }
+ Frame {
+ msec: 1872
+ hash: "48b25f0acfe6eb3bc2cb9eb16e6595d0"
+ }
+ Frame {
+ msec: 1888
+ hash: "15ae05f5ed098021073c4593587949ea"
+ }
+ Frame {
+ msec: 1904
+ hash: "b300f2c75f4aebcf84ed37ad424ca9fa"
+ }
+ Frame {
+ msec: 1920
+ image: "flickable-horizontal.1.png"
+ }
+ Frame {
+ msec: 1936
+ hash: "7d8ea492fb1c664502e95e085896c569"
+ }
+ Frame {
+ msec: 1952
+ hash: "7513b077e073d78b387309b56e1fd44c"
+ }
+ Frame {
+ msec: 1968
+ hash: "ed1ac5cf6d4b081983a8e16258f431bf"
+ }
+ Frame {
+ msec: 1984
+ hash: "fbb31f23ba6e5d02011363abfb4b3f18"
+ }
+ Frame {
+ msec: 2000
+ hash: "6f01df424b38036b9921b4ee1491a1c1"
+ }
+ Frame {
+ msec: 2016
+ hash: "11f706dfacbec5c0be0c2f3c5442f717"
+ }
+ Frame {
+ msec: 2032
+ hash: "0a70348986f4987f43db3e55af63fca5"
+ }
+ Frame {
+ msec: 2048
+ hash: "6f8b7aaad846f83c6349836d7af34662"
+ }
+ Frame {
+ msec: 2064
+ hash: "44723b22aad6d2d814e074ff9324f3c4"
+ }
+ Frame {
+ msec: 2080
+ hash: "44723b22aad6d2d814e074ff9324f3c4"
+ }
+ Frame {
+ msec: 2096
+ hash: "44723b22aad6d2d814e074ff9324f3c4"
+ }
+ Frame {
+ msec: 2112
+ hash: "1c12d2c68223324f040b7a693cef2074"
+ }
+ Frame {
+ msec: 2128
+ hash: "0a70348986f4987f43db3e55af63fca5"
+ }
+ Frame {
+ msec: 2144
+ hash: "bf4de7baf2730cdaf83887d50d577986"
+ }
+ Frame {
+ msec: 2160
+ hash: "23ddb2c0793d7161a0d8c5b2a777dceb"
+ }
+ Frame {
+ msec: 2176
+ hash: "7513b077e073d78b387309b56e1fd44c"
+ }
+ Frame {
+ msec: 2192
+ hash: "83fa82362057466dff6a243a95d423db"
+ }
+ Frame {
+ msec: 2208
+ hash: "0e60b632ce511109cb01d2e5ff6945f8"
+ }
+ Frame {
+ msec: 2224
+ hash: "78c25194827c4243a16807491f798cdf"
+ }
+ Frame {
+ msec: 2240
+ hash: "4c9dc46794d4a32e654395bb9d78409e"
+ }
+ Frame {
+ msec: 2256
+ hash: "e996d4f3a0b3a4a4ed29ec23a1ad5615"
+ }
+ Frame {
+ msec: 2272
+ hash: "cd6770afe63f28517a93f0961cf9c26e"
+ }
+ Frame {
+ msec: 2288
+ hash: "cd6770afe63f28517a93f0961cf9c26e"
+ }
+ Frame {
+ msec: 2304
+ hash: "cd6770afe63f28517a93f0961cf9c26e"
+ }
+ Frame {
+ msec: 2320
+ hash: "cd6770afe63f28517a93f0961cf9c26e"
+ }
+ Frame {
+ msec: 2336
+ hash: "cd6770afe63f28517a93f0961cf9c26e"
+ }
+ Frame {
+ msec: 2352
+ hash: "cd6770afe63f28517a93f0961cf9c26e"
+ }
+ Frame {
+ msec: 2368
+ hash: "cd6770afe63f28517a93f0961cf9c26e"
+ }
+ Frame {
+ msec: 2384
+ hash: "cd6770afe63f28517a93f0961cf9c26e"
+ }
+ Frame {
+ msec: 2400
+ hash: "cd6770afe63f28517a93f0961cf9c26e"
+ }
+ Frame {
+ msec: 2416
+ hash: "cd6770afe63f28517a93f0961cf9c26e"
+ }
+ Frame {
+ msec: 2432
+ hash: "cd6770afe63f28517a93f0961cf9c26e"
+ }
+ Frame {
+ msec: 2448
+ hash: "cd6770afe63f28517a93f0961cf9c26e"
+ }
+ Frame {
+ msec: 2464
+ hash: "cd6770afe63f28517a93f0961cf9c26e"
+ }
+ Frame {
+ msec: 2480
+ hash: "cd6770afe63f28517a93f0961cf9c26e"
+ }
+ Frame {
+ msec: 2496
+ hash: "cd6770afe63f28517a93f0961cf9c26e"
+ }
+ Frame {
+ msec: 2512
+ hash: "cd6770afe63f28517a93f0961cf9c26e"
+ }
+ Frame {
+ msec: 2528
+ hash: "cd6770afe63f28517a93f0961cf9c26e"
+ }
+ Frame {
+ msec: 2544
+ hash: "cd6770afe63f28517a93f0961cf9c26e"
+ }
+ Frame {
+ msec: 2560
+ hash: "cd6770afe63f28517a93f0961cf9c26e"
+ }
+ Frame {
+ msec: 2576
+ hash: "cd6770afe63f28517a93f0961cf9c26e"
+ }
+ Frame {
+ msec: 2592
+ hash: "cd6770afe63f28517a93f0961cf9c26e"
+ }
+ Frame {
+ msec: 2608
+ hash: "cd6770afe63f28517a93f0961cf9c26e"
+ }
+ Frame {
+ msec: 2624
+ hash: "cd6770afe63f28517a93f0961cf9c26e"
+ }
+ Frame {
+ msec: 2640
+ hash: "cd6770afe63f28517a93f0961cf9c26e"
+ }
+ Frame {
+ msec: 2656
+ hash: "cd6770afe63f28517a93f0961cf9c26e"
+ }
+ Frame {
+ msec: 2672
+ hash: "cd6770afe63f28517a93f0961cf9c26e"
+ }
+ Frame {
+ msec: 2688
+ hash: "cd6770afe63f28517a93f0961cf9c26e"
+ }
+ Frame {
+ msec: 2704
+ hash: "cd6770afe63f28517a93f0961cf9c26e"
+ }
+ Frame {
+ msec: 2720
+ hash: "cd6770afe63f28517a93f0961cf9c26e"
+ }
+ Frame {
+ msec: 2736
+ hash: "cd6770afe63f28517a93f0961cf9c26e"
+ }
+ Frame {
+ msec: 2752
+ hash: "cd6770afe63f28517a93f0961cf9c26e"
+ }
+ Frame {
+ msec: 2768
+ hash: "cd6770afe63f28517a93f0961cf9c26e"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 152; y: 189
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 2784
+ hash: "cd6770afe63f28517a93f0961cf9c26e"
+ }
+ Frame {
+ msec: 2800
+ hash: "cd6770afe63f28517a93f0961cf9c26e"
+ }
+ Frame {
+ msec: 2816
+ hash: "cd6770afe63f28517a93f0961cf9c26e"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 154; y: 190
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 2832
+ hash: "cd6770afe63f28517a93f0961cf9c26e"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 169; y: 191
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 2848
+ hash: "edd015434d7ead96c03a51a2b1c9e527"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 202; y: 192
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 2864
+ hash: "ea0eda505daea4171e27aac358aa6a4a"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 256; y: 192
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 2880
+ image: "flickable-horizontal.2.png"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 331; y: 192
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 2896
+ hash: "34f70dfe1c226e63300112aa9a4a6968"
+ }
+ Frame {
+ msec: 2912
+ hash: "34f70dfe1c226e63300112aa9a4a6968"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 395; y: 194
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 395; y: 194
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 2928
+ hash: "dd61e0ae58d7a344908a10bb97cfcb39"
+ }
+ Frame {
+ msec: 2944
+ hash: "14a384c4bdd3e89808761d1e86976170"
+ }
+ Frame {
+ msec: 2960
+ hash: "0e82a4920a53239f117448cd0e0b27f2"
+ }
+ Frame {
+ msec: 2976
+ hash: "711e29bf6fbbeb7882064adb0619f4ac"
+ }
+ Frame {
+ msec: 2992
+ hash: "43307cbfe1688daf300fafc8df0082b8"
+ }
+ Frame {
+ msec: 3008
+ hash: "46d788d926c03d85a68b66252e73ae90"
+ }
+ Frame {
+ msec: 3024
+ hash: "a0042935ad2d5557c906050d4a3581c9"
+ }
+ Frame {
+ msec: 3040
+ hash: "b618a40490ca0aea310f08b452fa8c68"
+ }
+ Frame {
+ msec: 3056
+ hash: "e2aaad7f160a6d77dd788c76bb8cb8a7"
+ }
+ Frame {
+ msec: 3072
+ hash: "ab5c27fa790c67a6678db0bbae1ae477"
+ }
+ Frame {
+ msec: 3088
+ hash: "b43ed7af838cd6edd32393fc56cf8fb1"
+ }
+ Frame {
+ msec: 3104
+ hash: "88ac50602c9f27fb5b882ad32d14ff46"
+ }
+ Frame {
+ msec: 3120
+ hash: "259af2e080ed93e16cb633fa940c7c08"
+ }
+ Frame {
+ msec: 3136
+ hash: "d05bec2351068d552b7bbbf47cf82fad"
+ }
+ Frame {
+ msec: 3152
+ hash: "5354b8e07f1ed22950687187ee7a0290"
+ }
+ Frame {
+ msec: 3168
+ hash: "3bfaaef12ca852421ad179d8598a306d"
+ }
+ Frame {
+ msec: 3184
+ hash: "40d3a77fce7a9a9ca7ae6023fc4cfc10"
+ }
+ Frame {
+ msec: 3200
+ hash: "5837c0122aa6b28518f1b7043ead99a9"
+ }
+ Frame {
+ msec: 3216
+ hash: "9514d8530275e4642810ac441e8de353"
+ }
+ Frame {
+ msec: 3232
+ hash: "3b720882f52340549d8e1b9659443461"
+ }
+ Frame {
+ msec: 3248
+ hash: "4de5b95c8f4949a4f1ee9a119940e80a"
+ }
+ Frame {
+ msec: 3264
+ hash: "a35097c00483e0b481222e4ad220c7a4"
+ }
+ Frame {
+ msec: 3280
+ hash: "82ac348a63a4e358a877a2e45d48e2b1"
+ }
+ Frame {
+ msec: 3296
+ hash: "1322108409d1fa87d128f0c44c81ab4b"
+ }
+ Frame {
+ msec: 3312
+ hash: "f6b030effcca891ab20073f106b22d73"
+ }
+ Frame {
+ msec: 3328
+ hash: "a7ccd998ac2ff2777d9423d704ddef48"
+ }
+ Frame {
+ msec: 3344
+ hash: "b6d971a4f3321b7f3632e778ce733589"
+ }
+ Frame {
+ msec: 3360
+ hash: "b6d971a4f3321b7f3632e778ce733589"
+ }
+ Frame {
+ msec: 3376
+ hash: "b6d971a4f3321b7f3632e778ce733589"
+ }
+ Frame {
+ msec: 3392
+ hash: "82ef6700a513e39508fb6de5ef07f1e7"
+ }
+ Frame {
+ msec: 3408
+ hash: "9e4c4d479bc0b1a61566eae12416bea6"
+ }
+ Frame {
+ msec: 3424
+ hash: "f6b030effcca891ab20073f106b22d73"
+ }
+ Frame {
+ msec: 3440
+ hash: "8968acd022a9ba6fcc3ea52bdd7268c4"
+ }
+ Frame {
+ msec: 3456
+ hash: "de8f1a1fd680af475173d5f81e85b26c"
+ }
+ Frame {
+ msec: 3472
+ hash: "82e8c0c7cb7c2b1e8d7a5fc019533e6b"
+ }
+ Frame {
+ msec: 3488
+ hash: "f820d250252cd910af97e5c9be181457"
+ }
+ Frame {
+ msec: 3504
+ hash: "a40558c1fbf328d3c891b473b2454020"
+ }
+ Frame {
+ msec: 3520
+ hash: "0ef9e64bad67670102e1e4d9ef0e96f3"
+ }
+ Frame {
+ msec: 3536
+ hash: "1d8013765ac2d3fe09ccaa6db098a208"
+ }
+ Frame {
+ msec: 3552
+ hash: "1d8013765ac2d3fe09ccaa6db098a208"
+ }
+ Frame {
+ msec: 3568
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+ Frame {
+ msec: 3584
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+ Frame {
+ msec: 3600
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+ Frame {
+ msec: 3616
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+ Frame {
+ msec: 3632
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+ Frame {
+ msec: 3648
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+ Frame {
+ msec: 3664
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+ Frame {
+ msec: 3680
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+ Frame {
+ msec: 3696
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+ Frame {
+ msec: 3712
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+ Frame {
+ msec: 3728
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+ Frame {
+ msec: 3744
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+ Frame {
+ msec: 3760
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+ Frame {
+ msec: 3776
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+ Frame {
+ msec: 3792
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+ Frame {
+ msec: 3808
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+ Frame {
+ msec: 3824
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+ Frame {
+ msec: 3840
+ image: "flickable-horizontal.3.png"
+ }
+ Frame {
+ msec: 3856
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+ Frame {
+ msec: 3872
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+ Frame {
+ msec: 3888
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+ Frame {
+ msec: 3904
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+ Frame {
+ msec: 3920
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+ Frame {
+ msec: 3936
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+ Frame {
+ msec: 3952
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+ Frame {
+ msec: 3968
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+ Frame {
+ msec: 3984
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+ Frame {
+ msec: 4000
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+ Frame {
+ msec: 4016
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+ Frame {
+ msec: 4032
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+ Frame {
+ msec: 4048
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+ Frame {
+ msec: 4064
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+ Frame {
+ msec: 4080
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+ Frame {
+ msec: 4096
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+ Frame {
+ msec: 4112
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+ Frame {
+ msec: 4128
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+ Frame {
+ msec: 4144
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+ Frame {
+ msec: 4160
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+ Key {
+ type: 6
+ key: 16777249
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4176
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+ Frame {
+ msec: 4192
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+ Frame {
+ msec: 4208
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+ Frame {
+ msec: 4224
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+ Frame {
+ msec: 4240
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+ Frame {
+ msec: 4256
+ hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ }
+}
diff --git a/tests/auto/declarative/visual/qmlgraphicsflickable/data/flickable-vertical.0.png b/tests/auto/declarative/visual/qmlgraphicsflickable/data/flickable-vertical.0.png
new file mode 100644
index 0000000..2187f8e
--- /dev/null
+++ b/tests/auto/declarative/visual/qmlgraphicsflickable/data/flickable-vertical.0.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qmlgraphicsflickable/data/flickable-vertical.1.png b/tests/auto/declarative/visual/qmlgraphicsflickable/data/flickable-vertical.1.png
new file mode 100644
index 0000000..cf3e770
--- /dev/null
+++ b/tests/auto/declarative/visual/qmlgraphicsflickable/data/flickable-vertical.1.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qmlgraphicsflickable/data/flickable-vertical.2.png b/tests/auto/declarative/visual/qmlgraphicsflickable/data/flickable-vertical.2.png
new file mode 100644
index 0000000..8a1554a
--- /dev/null
+++ b/tests/auto/declarative/visual/qmlgraphicsflickable/data/flickable-vertical.2.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qmlgraphicsflickable/data/flickable-vertical.qml b/tests/auto/declarative/visual/qmlgraphicsflickable/data/flickable-vertical.qml
new file mode 100644
index 0000000..cb8df62
--- /dev/null
+++ b/tests/auto/declarative/visual/qmlgraphicsflickable/data/flickable-vertical.qml
@@ -0,0 +1,1107 @@
+import Qt.VisualTest 4.6
+
+VisualTest {
+ Frame {
+ msec: 0
+ }
+ Frame {
+ msec: 16
+ hash: "12f8ae38d58e978d78bf83c7c339537d"
+ }
+ Frame {
+ msec: 32
+ hash: "12f8ae38d58e978d78bf83c7c339537d"
+ }
+ Frame {
+ msec: 48
+ hash: "12f8ae38d58e978d78bf83c7c339537d"
+ }
+ Frame {
+ msec: 64
+ hash: "12f8ae38d58e978d78bf83c7c339537d"
+ }
+ Frame {
+ msec: 80
+ hash: "12f8ae38d58e978d78bf83c7c339537d"
+ }
+ Frame {
+ msec: 96
+ hash: "12f8ae38d58e978d78bf83c7c339537d"
+ }
+ Frame {
+ msec: 112
+ hash: "12f8ae38d58e978d78bf83c7c339537d"
+ }
+ Frame {
+ msec: 128
+ hash: "12f8ae38d58e978d78bf83c7c339537d"
+ }
+ Frame {
+ msec: 144
+ hash: "12f8ae38d58e978d78bf83c7c339537d"
+ }
+ Frame {
+ msec: 160
+ hash: "12f8ae38d58e978d78bf83c7c339537d"
+ }
+ Frame {
+ msec: 176
+ hash: "12f8ae38d58e978d78bf83c7c339537d"
+ }
+ Frame {
+ msec: 192
+ hash: "12f8ae38d58e978d78bf83c7c339537d"
+ }
+ Frame {
+ msec: 208
+ hash: "12f8ae38d58e978d78bf83c7c339537d"
+ }
+ Frame {
+ msec: 224
+ hash: "12f8ae38d58e978d78bf83c7c339537d"
+ }
+ Frame {
+ msec: 240
+ hash: "12f8ae38d58e978d78bf83c7c339537d"
+ }
+ Frame {
+ msec: 256
+ hash: "12f8ae38d58e978d78bf83c7c339537d"
+ }
+ Frame {
+ msec: 272
+ hash: "12f8ae38d58e978d78bf83c7c339537d"
+ }
+ Frame {
+ msec: 288
+ hash: "12f8ae38d58e978d78bf83c7c339537d"
+ }
+ Frame {
+ msec: 304
+ hash: "12f8ae38d58e978d78bf83c7c339537d"
+ }
+ Frame {
+ msec: 320
+ hash: "12f8ae38d58e978d78bf83c7c339537d"
+ }
+ Frame {
+ msec: 336
+ hash: "12f8ae38d58e978d78bf83c7c339537d"
+ }
+ Frame {
+ msec: 352
+ hash: "12f8ae38d58e978d78bf83c7c339537d"
+ }
+ Frame {
+ msec: 368
+ hash: "12f8ae38d58e978d78bf83c7c339537d"
+ }
+ Frame {
+ msec: 384
+ hash: "12f8ae38d58e978d78bf83c7c339537d"
+ }
+ Frame {
+ msec: 400
+ hash: "12f8ae38d58e978d78bf83c7c339537d"
+ }
+ Frame {
+ msec: 416
+ hash: "12f8ae38d58e978d78bf83c7c339537d"
+ }
+ Frame {
+ msec: 432
+ hash: "12f8ae38d58e978d78bf83c7c339537d"
+ }
+ Frame {
+ msec: 448
+ hash: "12f8ae38d58e978d78bf83c7c339537d"
+ }
+ Frame {
+ msec: 464
+ hash: "12f8ae38d58e978d78bf83c7c339537d"
+ }
+ Frame {
+ msec: 480
+ hash: "12f8ae38d58e978d78bf83c7c339537d"
+ }
+ Frame {
+ msec: 496
+ hash: "12f8ae38d58e978d78bf83c7c339537d"
+ }
+ Frame {
+ msec: 512
+ hash: "12f8ae38d58e978d78bf83c7c339537d"
+ }
+ Frame {
+ msec: 528
+ hash: "12f8ae38d58e978d78bf83c7c339537d"
+ }
+ Frame {
+ msec: 544
+ hash: "12f8ae38d58e978d78bf83c7c339537d"
+ }
+ Frame {
+ msec: 560
+ hash: "12f8ae38d58e978d78bf83c7c339537d"
+ }
+ Frame {
+ msec: 576
+ hash: "12f8ae38d58e978d78bf83c7c339537d"
+ }
+ Frame {
+ msec: 592
+ hash: "12f8ae38d58e978d78bf83c7c339537d"
+ }
+ Frame {
+ msec: 608
+ hash: "12f8ae38d58e978d78bf83c7c339537d"
+ }
+ Frame {
+ msec: 624
+ hash: "12f8ae38d58e978d78bf83c7c339537d"
+ }
+ Frame {
+ msec: 640
+ hash: "12f8ae38d58e978d78bf83c7c339537d"
+ }
+ Frame {
+ msec: 656
+ hash: "12f8ae38d58e978d78bf83c7c339537d"
+ }
+ Frame {
+ msec: 672
+ hash: "12f8ae38d58e978d78bf83c7c339537d"
+ }
+ Frame {
+ msec: 688
+ hash: "12f8ae38d58e978d78bf83c7c339537d"
+ }
+ Frame {
+ msec: 704
+ hash: "12f8ae38d58e978d78bf83c7c339537d"
+ }
+ Frame {
+ msec: 720
+ hash: "12f8ae38d58e978d78bf83c7c339537d"
+ }
+ Frame {
+ msec: 736
+ hash: "12f8ae38d58e978d78bf83c7c339537d"
+ }
+ Frame {
+ msec: 752
+ hash: "12f8ae38d58e978d78bf83c7c339537d"
+ }
+ Frame {
+ msec: 768
+ hash: "12f8ae38d58e978d78bf83c7c339537d"
+ }
+ Frame {
+ msec: 784
+ hash: "12f8ae38d58e978d78bf83c7c339537d"
+ }
+ Frame {
+ msec: 800
+ hash: "12f8ae38d58e978d78bf83c7c339537d"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 202; y: 486
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 816
+ hash: "12f8ae38d58e978d78bf83c7c339537d"
+ }
+ Frame {
+ msec: 832
+ hash: "12f8ae38d58e978d78bf83c7c339537d"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 202; y: 484
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 848
+ hash: "12f8ae38d58e978d78bf83c7c339537d"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 202; y: 476
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 864
+ hash: "7ee6361319fa538204cece6cfdfd6ec0"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 202; y: 466
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 880
+ hash: "aac822b5bfed36a6574b00e1c2da7768"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 204; y: 448
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 896
+ hash: "356a2162d597298c5295e2d62ee6f185"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 207; y: 420
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 912
+ hash: "cc72b8b9fe2f8f2a14559f3e1ef07b62"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 208; y: 380
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 928
+ hash: "38e6fdcd1ed7d93369a2585172e693a5"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 208; y: 334
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 208; y: 334
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 944
+ hash: "5060aa07416f909ce62debcb7dc41f59"
+ }
+ Frame {
+ msec: 960
+ image: "flickable-vertical.0.png"
+ }
+ Frame {
+ msec: 976
+ hash: "ff2a52636ef08cc1c50017a932d1d7a2"
+ }
+ Frame {
+ msec: 992
+ hash: "951e80e2015f0ea4d3a4a625453df725"
+ }
+ Frame {
+ msec: 1008
+ hash: "9cb54b41349e62192e4f58b458d02114"
+ }
+ Frame {
+ msec: 1024
+ hash: "b2e2bb3805facc5051d1a07d9a2c1148"
+ }
+ Frame {
+ msec: 1040
+ hash: "00e22e1a119d50c111b33473530aed79"
+ }
+ Frame {
+ msec: 1056
+ hash: "1226183cd5118b785ae3dd0d45417434"
+ }
+ Frame {
+ msec: 1072
+ hash: "50d41bff31234d7b3fa5081ae418ffba"
+ }
+ Frame {
+ msec: 1088
+ hash: "8ecc7dc39bd17c6baecd0998fbf6937e"
+ }
+ Frame {
+ msec: 1104
+ hash: "40ae10e92f7bcc791bf433ab8de538b9"
+ }
+ Frame {
+ msec: 1120
+ hash: "6fb7d01b1c9d486100af56121eff60d5"
+ }
+ Frame {
+ msec: 1136
+ hash: "fa5f7adad0a1e5ff06902860aa4f8248"
+ }
+ Frame {
+ msec: 1152
+ hash: "67081124a7f909b9366cce1cbc89b03c"
+ }
+ Frame {
+ msec: 1168
+ hash: "7ccee35625f4daf9b97c0929f9eb14ae"
+ }
+ Frame {
+ msec: 1184
+ hash: "db9b8bab0f2c71be0fb8d10d57199533"
+ }
+ Frame {
+ msec: 1200
+ hash: "81a01620e28817c476fdda383183dc0e"
+ }
+ Frame {
+ msec: 1216
+ hash: "8f99dd630d547c3ffb74048b5e557dab"
+ }
+ Frame {
+ msec: 1232
+ hash: "15b90b0f3f0ecbea02c1c0a096b0375c"
+ }
+ Frame {
+ msec: 1248
+ hash: "411d7b73389bf23019f4db6e4e8aec40"
+ }
+ Frame {
+ msec: 1264
+ hash: "8cb8d626658d5a244be2efceb6cc0caa"
+ }
+ Frame {
+ msec: 1280
+ hash: "a4c09ac39ce6fd73e374fb7830362d28"
+ }
+ Frame {
+ msec: 1296
+ hash: "34f372f9f4edef7eaf806312178b6229"
+ }
+ Frame {
+ msec: 1312
+ hash: "e60a578e183a8b0f650d55f5ae53af47"
+ }
+ Frame {
+ msec: 1328
+ hash: "92ad03e47c3011594cbe9eacea96b567"
+ }
+ Frame {
+ msec: 1344
+ hash: "8c11b1658e99644966586672f0ed795a"
+ }
+ Frame {
+ msec: 1360
+ hash: "ee39e7ef14ac135d893c309395c7325b"
+ }
+ Frame {
+ msec: 1376
+ hash: "f4569fa1ae5d06bcf6a3d7fa07a79d36"
+ }
+ Frame {
+ msec: 1392
+ hash: "5b3a74d2e33848d27bc39ac68b18f1cb"
+ }
+ Frame {
+ msec: 1408
+ hash: "3037e5c910247bfa05664fc4f88b329a"
+ }
+ Frame {
+ msec: 1424
+ hash: "134ff2884f7a4ccb5b0b5022331ac981"
+ }
+ Frame {
+ msec: 1440
+ hash: "8e8335263e26f24bb88df0b86ccdef1e"
+ }
+ Frame {
+ msec: 1456
+ hash: "c976d8abcd6511dc263bada0de531535"
+ }
+ Frame {
+ msec: 1472
+ hash: "8b09b7bffc48df791f8044fa8fd8c810"
+ }
+ Frame {
+ msec: 1488
+ hash: "ff82a1f8070f76e8de314ef8cd800031"
+ }
+ Frame {
+ msec: 1504
+ hash: "98f720a9ab7cc824c0971d6e29954863"
+ }
+ Frame {
+ msec: 1520
+ hash: "98f720a9ab7cc824c0971d6e29954863"
+ }
+ Frame {
+ msec: 1536
+ hash: "98a1cad92ec9d8eeae93eb3894ee65ef"
+ }
+ Frame {
+ msec: 1552
+ hash: "6d0a08623d30aa0bbca1acd6f84db84f"
+ }
+ Frame {
+ msec: 1568
+ hash: "473e40326f5e2059a2bf3d6d03a96aca"
+ }
+ Frame {
+ msec: 1584
+ hash: "c976d8abcd6511dc263bada0de531535"
+ }
+ Frame {
+ msec: 1600
+ hash: "196df7fdcb6ee4cfafb724b72a9dbab5"
+ }
+ Frame {
+ msec: 1616
+ hash: "8cf6ecc49e016f1543529826cad71e20"
+ }
+ Frame {
+ msec: 1632
+ hash: "63ce337f006b71999e9b07f5feacfc3f"
+ }
+ Frame {
+ msec: 1648
+ hash: "3ac7c056389764e33c77df0b08b3fb3d"
+ }
+ Frame {
+ msec: 1664
+ hash: "ef788c78a0e35d70e219af3a46b93a23"
+ }
+ Frame {
+ msec: 1680
+ hash: "0ea550b3f88a925b0293153ce3044fc3"
+ }
+ Frame {
+ msec: 1696
+ hash: "9ca67bbd73fefc521819df517e6a0ecf"
+ }
+ Frame {
+ msec: 1712
+ hash: "9ca67bbd73fefc521819df517e6a0ecf"
+ }
+ Frame {
+ msec: 1728
+ hash: "9ca67bbd73fefc521819df517e6a0ecf"
+ }
+ Frame {
+ msec: 1744
+ hash: "9ca67bbd73fefc521819df517e6a0ecf"
+ }
+ Frame {
+ msec: 1760
+ hash: "9ca67bbd73fefc521819df517e6a0ecf"
+ }
+ Frame {
+ msec: 1776
+ hash: "9ca67bbd73fefc521819df517e6a0ecf"
+ }
+ Frame {
+ msec: 1792
+ hash: "9ca67bbd73fefc521819df517e6a0ecf"
+ }
+ Frame {
+ msec: 1808
+ hash: "9ca67bbd73fefc521819df517e6a0ecf"
+ }
+ Frame {
+ msec: 1824
+ hash: "9ca67bbd73fefc521819df517e6a0ecf"
+ }
+ Frame {
+ msec: 1840
+ hash: "9ca67bbd73fefc521819df517e6a0ecf"
+ }
+ Frame {
+ msec: 1856
+ hash: "9ca67bbd73fefc521819df517e6a0ecf"
+ }
+ Frame {
+ msec: 1872
+ hash: "9ca67bbd73fefc521819df517e6a0ecf"
+ }
+ Frame {
+ msec: 1888
+ hash: "9ca67bbd73fefc521819df517e6a0ecf"
+ }
+ Frame {
+ msec: 1904
+ hash: "9ca67bbd73fefc521819df517e6a0ecf"
+ }
+ Frame {
+ msec: 1920
+ image: "flickable-vertical.1.png"
+ }
+ Frame {
+ msec: 1936
+ hash: "9ca67bbd73fefc521819df517e6a0ecf"
+ }
+ Frame {
+ msec: 1952
+ hash: "9ca67bbd73fefc521819df517e6a0ecf"
+ }
+ Frame {
+ msec: 1968
+ hash: "9ca67bbd73fefc521819df517e6a0ecf"
+ }
+ Frame {
+ msec: 1984
+ hash: "9ca67bbd73fefc521819df517e6a0ecf"
+ }
+ Frame {
+ msec: 2000
+ hash: "9ca67bbd73fefc521819df517e6a0ecf"
+ }
+ Frame {
+ msec: 2016
+ hash: "9ca67bbd73fefc521819df517e6a0ecf"
+ }
+ Frame {
+ msec: 2032
+ hash: "9ca67bbd73fefc521819df517e6a0ecf"
+ }
+ Frame {
+ msec: 2048
+ hash: "9ca67bbd73fefc521819df517e6a0ecf"
+ }
+ Frame {
+ msec: 2064
+ hash: "9ca67bbd73fefc521819df517e6a0ecf"
+ }
+ Frame {
+ msec: 2080
+ hash: "9ca67bbd73fefc521819df517e6a0ecf"
+ }
+ Frame {
+ msec: 2096
+ hash: "9ca67bbd73fefc521819df517e6a0ecf"
+ }
+ Frame {
+ msec: 2112
+ hash: "9ca67bbd73fefc521819df517e6a0ecf"
+ }
+ Frame {
+ msec: 2128
+ hash: "9ca67bbd73fefc521819df517e6a0ecf"
+ }
+ Frame {
+ msec: 2144
+ hash: "9ca67bbd73fefc521819df517e6a0ecf"
+ }
+ Frame {
+ msec: 2160
+ hash: "9ca67bbd73fefc521819df517e6a0ecf"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 209; y: 122
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 208; y: 122
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 2176
+ hash: "9ca67bbd73fefc521819df517e6a0ecf"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 208; y: 124
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 2192
+ hash: "9ca67bbd73fefc521819df517e6a0ecf"
+ }
+ Frame {
+ msec: 2208
+ hash: "9ca67bbd73fefc521819df517e6a0ecf"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 207; y: 130
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 206; y: 141
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 2224
+ hash: "2121160b0cab27b1b5f1d29b463f4c15"
+ }
+ Frame {
+ msec: 2240
+ hash: "2121160b0cab27b1b5f1d29b463f4c15"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 205; y: 160
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 2256
+ hash: "22ea9a42269540113c3f83eb1e8d47af"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 204; y: 188
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 2272
+ hash: "e0534106f487317ed11ce5c0cc41315f"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 204; y: 226
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 2288
+ hash: "fcfca6b84764d04f6750754e3e880703"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 207; y: 272
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 2304
+ hash: "939e7ee0446e39926531e202a1117968"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 210; y: 322
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 210; y: 322
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 2320
+ hash: "301ab8202173c104a5eada9ff98e9972"
+ }
+ Frame {
+ msec: 2336
+ hash: "c8fe58c0ab2afbd7afe0887143b52fc4"
+ }
+ Frame {
+ msec: 2352
+ hash: "8a1d3c0f7e1ad817ba9bfd28272afa08"
+ }
+ Frame {
+ msec: 2368
+ hash: "28f48036d03696abb890fed65adeb4e8"
+ }
+ Frame {
+ msec: 2384
+ hash: "963d9bf16016c191be09a325575e4939"
+ }
+ Frame {
+ msec: 2400
+ hash: "fb69cf91ae5cae41692e97e7dd670ef8"
+ }
+ Frame {
+ msec: 2416
+ hash: "451552f0598cc9ebf7abc682450716bb"
+ }
+ Frame {
+ msec: 2432
+ hash: "ea15dd0b1fd64608d56cd89cf85758cb"
+ }
+ Frame {
+ msec: 2448
+ hash: "f3810b0a2e3bd1965648d2f8aac071e4"
+ }
+ Frame {
+ msec: 2464
+ hash: "2d049055ac110f3fb9889a5aa8c7e40f"
+ }
+ Frame {
+ msec: 2480
+ hash: "58cb05fb96601e068d94839e23fe5d5c"
+ }
+ Frame {
+ msec: 2496
+ hash: "7bf16d64e31f7689852ecd30edde91a5"
+ }
+ Frame {
+ msec: 2512
+ hash: "07f8a7336649e7bd0175033af61e7c13"
+ }
+ Frame {
+ msec: 2528
+ hash: "5f14c8d4d4df78bb980316d5504b18c5"
+ }
+ Frame {
+ msec: 2544
+ hash: "dfd747f34771af04f53509975ad2e55a"
+ }
+ Frame {
+ msec: 2560
+ hash: "b81eb1626f100a52d9da05c79f24d83b"
+ }
+ Frame {
+ msec: 2576
+ hash: "1febbc750e271153a93c61a244723b34"
+ }
+ Frame {
+ msec: 2592
+ hash: "b604470f6621930b3022c7b1d1190ab1"
+ }
+ Frame {
+ msec: 2608
+ hash: "0563d86b925b1f32542efd6c5012df9f"
+ }
+ Frame {
+ msec: 2624
+ hash: "2d92ae71cc424a8d5bd20de4664b37ae"
+ }
+ Frame {
+ msec: 2640
+ hash: "f9122195cd14c767ca373090f2ecec87"
+ }
+ Frame {
+ msec: 2656
+ hash: "74c6e3a107666609054737252df1ad86"
+ }
+ Frame {
+ msec: 2672
+ hash: "8845ca88445b5317863ac50db511b9fb"
+ }
+ Frame {
+ msec: 2688
+ hash: "0fed9f5fe46073fd0cbacdf66e9d8619"
+ }
+ Frame {
+ msec: 2704
+ hash: "caaec9b6f8d17a72224eb14bd7dccc84"
+ }
+ Frame {
+ msec: 2720
+ hash: "e41245a9c1d8ebbf2ebd695e06e5ea09"
+ }
+ Frame {
+ msec: 2736
+ hash: "f0ec12f7a8a5c5f82afbd5db71a22945"
+ }
+ Frame {
+ msec: 2752
+ hash: "286fc5815c3097c88ad5059c88f54ecb"
+ }
+ Frame {
+ msec: 2768
+ hash: "b4ffa4c9aebdcbf9bbf19e0de70142dd"
+ }
+ Frame {
+ msec: 2784
+ hash: "758675faec11cd74517c95255a7f64e2"
+ }
+ Frame {
+ msec: 2800
+ hash: "758675faec11cd74517c95255a7f64e2"
+ }
+ Frame {
+ msec: 2816
+ hash: "8f7cae2c23f1becfde192934db12ba03"
+ }
+ Frame {
+ msec: 2832
+ hash: "286fc5815c3097c88ad5059c88f54ecb"
+ }
+ Frame {
+ msec: 2848
+ hash: "2e3e8e53074ddef149367edffe7b430e"
+ }
+ Frame {
+ msec: 2864
+ hash: "8765816b08838bf96415879faf094830"
+ }
+ Frame {
+ msec: 2880
+ image: "flickable-vertical.2.png"
+ }
+ Frame {
+ msec: 2896
+ hash: "7a55c3562be2471f91268ccf76f0a6d8"
+ }
+ Frame {
+ msec: 2912
+ hash: "1258f71c1c27a2101e600785a19fa305"
+ }
+ Frame {
+ msec: 2928
+ hash: "9a0e0ac06bbe83987ece38124c7ada92"
+ }
+ Frame {
+ msec: 2944
+ hash: "0fed9f5fe46073fd0cbacdf66e9d8619"
+ }
+ Frame {
+ msec: 2960
+ hash: "04cd9d6996e4ce039646d1ce87cb5882"
+ }
+ Frame {
+ msec: 2976
+ hash: "04cd9d6996e4ce039646d1ce87cb5882"
+ }
+ Frame {
+ msec: 2992
+ hash: "12f8ae38d58e978d78bf83c7c339537d"
+ }
+ Frame {
+ msec: 3008
+ hash: "12f8ae38d58e978d78bf83c7c339537d"
+ }
+ Frame {
+ msec: 3024
+ hash: "12f8ae38d58e978d78bf83c7c339537d"
+ }
+ Frame {
+ msec: 3040
+ hash: "12f8ae38d58e978d78bf83c7c339537d"
+ }
+ Frame {
+ msec: 3056
+ hash: "12f8ae38d58e978d78bf83c7c339537d"
+ }
+ Frame {
+ msec: 3072
+ hash: "12f8ae38d58e978d78bf83c7c339537d"
+ }
+ Frame {
+ msec: 3088
+ hash: "12f8ae38d58e978d78bf83c7c339537d"
+ }
+ Frame {
+ msec: 3104
+ hash: "12f8ae38d58e978d78bf83c7c339537d"
+ }
+ Frame {
+ msec: 3120
+ hash: "12f8ae38d58e978d78bf83c7c339537d"
+ }
+ Frame {
+ msec: 3136
+ hash: "12f8ae38d58e978d78bf83c7c339537d"
+ }
+ Frame {
+ msec: 3152
+ hash: "12f8ae38d58e978d78bf83c7c339537d"
+ }
+ Frame {
+ msec: 3168
+ hash: "12f8ae38d58e978d78bf83c7c339537d"
+ }
+ Frame {
+ msec: 3184
+ hash: "12f8ae38d58e978d78bf83c7c339537d"
+ }
+ Frame {
+ msec: 3200
+ hash: "12f8ae38d58e978d78bf83c7c339537d"
+ }
+ Frame {
+ msec: 3216
+ hash: "12f8ae38d58e978d78bf83c7c339537d"
+ }
+ Frame {
+ msec: 3232
+ hash: "12f8ae38d58e978d78bf83c7c339537d"
+ }
+ Frame {
+ msec: 3248
+ hash: "12f8ae38d58e978d78bf83c7c339537d"
+ }
+ Frame {
+ msec: 3264
+ hash: "12f8ae38d58e978d78bf83c7c339537d"
+ }
+ Frame {
+ msec: 3280
+ hash: "12f8ae38d58e978d78bf83c7c339537d"
+ }
+ Frame {
+ msec: 3296
+ hash: "12f8ae38d58e978d78bf83c7c339537d"
+ }
+ Frame {
+ msec: 3312
+ hash: "12f8ae38d58e978d78bf83c7c339537d"
+ }
+ Frame {
+ msec: 3328
+ hash: "12f8ae38d58e978d78bf83c7c339537d"
+ }
+ Frame {
+ msec: 3344
+ hash: "12f8ae38d58e978d78bf83c7c339537d"
+ }
+ Frame {
+ msec: 3360
+ hash: "12f8ae38d58e978d78bf83c7c339537d"
+ }
+ Frame {
+ msec: 3376
+ hash: "12f8ae38d58e978d78bf83c7c339537d"
+ }
+ Frame {
+ msec: 3392
+ hash: "12f8ae38d58e978d78bf83c7c339537d"
+ }
+ Frame {
+ msec: 3408
+ hash: "12f8ae38d58e978d78bf83c7c339537d"
+ }
+ Frame {
+ msec: 3424
+ hash: "12f8ae38d58e978d78bf83c7c339537d"
+ }
+ Frame {
+ msec: 3440
+ hash: "12f8ae38d58e978d78bf83c7c339537d"
+ }
+ Frame {
+ msec: 3456
+ hash: "12f8ae38d58e978d78bf83c7c339537d"
+ }
+ Frame {
+ msec: 3472
+ hash: "12f8ae38d58e978d78bf83c7c339537d"
+ }
+ Frame {
+ msec: 3488
+ hash: "12f8ae38d58e978d78bf83c7c339537d"
+ }
+ Frame {
+ msec: 3504
+ hash: "12f8ae38d58e978d78bf83c7c339537d"
+ }
+ Frame {
+ msec: 3520
+ hash: "12f8ae38d58e978d78bf83c7c339537d"
+ }
+ Frame {
+ msec: 3536
+ hash: "12f8ae38d58e978d78bf83c7c339537d"
+ }
+ Frame {
+ msec: 3552
+ hash: "12f8ae38d58e978d78bf83c7c339537d"
+ }
+ Frame {
+ msec: 3568
+ hash: "12f8ae38d58e978d78bf83c7c339537d"
+ }
+ Frame {
+ msec: 3584
+ hash: "12f8ae38d58e978d78bf83c7c339537d"
+ }
+ Frame {
+ msec: 3600
+ hash: "12f8ae38d58e978d78bf83c7c339537d"
+ }
+ Key {
+ type: 6
+ key: 16777249
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3616
+ hash: "12f8ae38d58e978d78bf83c7c339537d"
+ }
+ Frame {
+ msec: 3632
+ hash: "12f8ae38d58e978d78bf83c7c339537d"
+ }
+ Frame {
+ msec: 3648
+ hash: "12f8ae38d58e978d78bf83c7c339537d"
+ }
+ Frame {
+ msec: 3664
+ hash: "12f8ae38d58e978d78bf83c7c339537d"
+ }
+ Frame {
+ msec: 3680
+ hash: "12f8ae38d58e978d78bf83c7c339537d"
+ }
+ Frame {
+ msec: 3696
+ hash: "12f8ae38d58e978d78bf83c7c339537d"
+ }
+ Frame {
+ msec: 3712
+ hash: "12f8ae38d58e978d78bf83c7c339537d"
+ }
+ Frame {
+ msec: 3728
+ hash: "12f8ae38d58e978d78bf83c7c339537d"
+ }
+}
diff --git a/tests/auto/declarative/visual/qmlgraphicsflickable/flickable-horizontal.qml b/tests/auto/declarative/visual/qmlgraphicsflickable/flickable-horizontal.qml
new file mode 100644
index 0000000..2b4f55d
--- /dev/null
+++ b/tests/auto/declarative/visual/qmlgraphicsflickable/flickable-horizontal.qml
@@ -0,0 +1,37 @@
+import Qt 4.6
+
+Rectangle {
+ color: "lightSteelBlue"
+ width: 600; height: 300
+
+ ListModel {
+ id: List
+ ListElement { dayColor: "steelblue" }
+ ListElement { dayColor: "blue" }
+ ListElement { dayColor: "yellow" }
+ ListElement { dayColor: "purple" }
+ ListElement { dayColor: "red" }
+ ListElement { dayColor: "green" }
+ ListElement { dayColor: "orange" }
+ }
+
+ Flickable {
+ id: Flick
+ anchors.fill: parent; viewportWidth: row.width
+
+ Row {
+ id: row
+ Repeater {
+ model: List
+ Rectangle { width: 200; height: 300; color: dayColor }
+ }
+ }
+ }
+ Rectangle {
+ radius: 3
+ y: Flick.height-8
+ height: 8
+ x: Flick.visibleArea.xPosition * Flick.width
+ width: Flick.visibleArea.widthRatio * Flick.width
+ }
+}
diff --git a/tests/auto/declarative/visual/qmlgraphicsflickable/flickable-vertical.qml b/tests/auto/declarative/visual/qmlgraphicsflickable/flickable-vertical.qml
new file mode 100644
index 0000000..0d6bbed
--- /dev/null
+++ b/tests/auto/declarative/visual/qmlgraphicsflickable/flickable-vertical.qml
@@ -0,0 +1,37 @@
+import Qt 4.6
+
+Rectangle {
+ color: "lightSteelBlue"
+ width: 300; height: 600
+
+ ListModel {
+ id: List
+ ListElement { dayColor: "steelblue" }
+ ListElement { dayColor: "blue" }
+ ListElement { dayColor: "yellow" }
+ ListElement { dayColor: "purple" }
+ ListElement { dayColor: "red" }
+ ListElement { dayColor: "green" }
+ ListElement { dayColor: "orange" }
+ }
+
+ Flickable {
+ id: Flick
+ anchors.fill: parent; viewportHeight: column.height
+
+ Column {
+ id: column
+ Repeater {
+ model: List
+ Rectangle { width: 300; height: 200; color: dayColor }
+ }
+ }
+ }
+ Rectangle {
+ radius: 3
+ x: Flick.width-8
+ width: 8
+ y: Flick.visibleArea.yPosition * Flick.height
+ height: Flick.visibleArea.heightRatio * Flick.height
+ }
+}
diff --git a/tests/auto/declarative/visual/webview/zooming/renderControl.html b/tests/auto/declarative/visual/webview/zooming/renderControl.html
new file mode 100644
index 0000000..1a01a33
--- /dev/null
+++ b/tests/auto/declarative/visual/webview/zooming/renderControl.html
@@ -0,0 +1,7 @@
+<html>
+<body>
+<h1>Render Control</h1>
+<p>
+This test shows how zooming and panning can be
+optimized for speed over quality by delaying rendering.
+<img src="qtlogo.png">
diff --git a/tests/benchmarks/declarative/qmlcomponent/samegame/BoomBlock.qml b/tests/benchmarks/declarative/qmlcomponent/samegame/BoomBlock.qml
index a495cd0..723e62a 100644
--- a/tests/benchmarks/declarative/qmlcomponent/samegame/BoomBlock.qml
+++ b/tests/benchmarks/declarative/qmlcomponent/samegame/BoomBlock.qml
@@ -21,14 +21,16 @@ Item { id:block
}
}
opacity: 0
- opacity: Behavior { NumberAnimation { properties:"opacity"; duration: 200 } }
+ opacity: Behavior { NumberAnimation { duration: 200 } }
anchors.fill: parent
}
Particles { id: particles
- width:1; height:1; anchors.centerIn: parent; opacity: 0
- lifeSpan: 700; lifeSpanDeviation: 600; count:0; streamIn: false
- angle: 0; angleDeviation: 360; velocity: 100; velocityDeviation:30
+ width:1; height:1; anchors.centerIn: parent;
+ emissionRate: 0;
+ lifeSpan: 700; lifeSpanDeviation: 600;
+ angle: 0; angleDeviation: 360;
+ velocity: 100; velocityDeviation:30;
source: {
if(type == 0){
"pics/redStar.png";
@@ -45,10 +47,9 @@ Item { id:block
PropertyChanges { target: img; opacity: 1 }
},
State{ name: "DeathState"; when: dying == true
- PropertyChanges { target: particles; count: 50 }
- PropertyChanges { target: particles; opacity: 1 }
- PropertyChanges { target: particles; emitting: false } // i.e. emit only once
+ StateChangeScript { script: particles.burst(50); }
PropertyChanges { target: img; opacity: 0 }
+ StateChangeScript { script: block.destroy(1000); }
}
]
}