summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYann Bodson <yann.bodson@nokia.com>2009-11-13 06:43:47 (GMT)
committerYann Bodson <yann.bodson@nokia.com>2009-11-13 06:43:47 (GMT)
commit543c9ab8f423297601def9344b2847f283d87169 (patch)
tree7ae09176a376ac9cc67985124bc8b2e27a9b32b3
parentba6180ee3fa07590f0de419ae7f41e20b4a7504e (diff)
parent6ee194e7a032ddf3cc175fc7adc44a43de00371d (diff)
downloadQt-543c9ab8f423297601def9344b2847f283d87169.zip
Qt-543c9ab8f423297601def9344b2847f283d87169.tar.gz
Qt-543c9ab8f423297601def9344b2847f283d87169.tar.bz2
Merge branch 'kinetic-declarativeui' of scm.dev.nokia.troll.no:qt/kinetic into kinetic-declarativeui
-rw-r--r--src/declarative/qml/qmlenginedebug.cpp2
-rw-r--r--tests/auto/declarative/debugger/debugger.pro3
-rw-r--r--tests/auto/declarative/debugger/debuggerutil.cpp103
-rw-r--r--tests/auto/declarative/debugger/debugutil.cpp173
-rw-r--r--tests/auto/declarative/debugger/debugutil_p.h (renamed from tests/auto/declarative/debugger/debuggerutil_p.h)68
-rw-r--r--tests/auto/declarative/debugger/qmldebug/qmldebug.pro4
-rw-r--r--tests/auto/declarative/debugger/qmldebug/tst_qmldebug.cpp171
-rw-r--r--tests/auto/declarative/debugger/qmldebugclient/qmldebugclient.pro4
-rw-r--r--tests/auto/declarative/debugger/qmldebugclient/tst_qmldebugclient.cpp66
-rw-r--r--tests/auto/declarative/debugger/qmldebugservice/qmldebugservice.pro4
-rw-r--r--tests/auto/declarative/debugger/qmldebugservice/tst_qmldebugservice.cpp69
-rw-r--r--tests/auto/declarative/debugger/qpacketprotocol/qpacketprotocol.pro7
-rw-r--r--tests/auto/declarative/debugger/qpacketprotocol/tst_qpacketprotocol.cpp270
-rw-r--r--tests/auto/declarative/qmlgraphicslistview/data/listview.qml1
-rw-r--r--tests/auto/declarative/qmlgraphicslistview/tst_qmlgraphicslistview.cpp59
-rw-r--r--tests/auto/declarative/visual/Package_Views/data/packageviews.11.pngbin755 -> 726 bytes
-rw-r--r--tests/auto/declarative/visual/Package_Views/data/packageviews.12.pngbin711 -> 726 bytes
-rw-r--r--tests/auto/declarative/visual/Package_Views/data/packageviews.13.pngbin718 -> 733 bytes
-rw-r--r--tests/auto/declarative/visual/Package_Views/data/packageviews.14.pngbin718 -> 733 bytes
-rw-r--r--tests/auto/declarative/visual/Package_Views/data/packageviews.qml430
-rw-r--r--tests/auto/declarative/visual/Package_Views/packageviews.qml8
-rw-r--r--tests/auto/declarative/visual/qmlmouseregion/data/mouseregion.0.pngbin0 -> 471 bytes
-rw-r--r--tests/auto/declarative/visual/qmlmouseregion/data/mouseregion.1.pngbin0 -> 471 bytes
-rw-r--r--tests/auto/declarative/visual/qmlmouseregion/data/mouseregion.10.pngbin0 -> 477 bytes
-rw-r--r--tests/auto/declarative/visual/qmlmouseregion/data/mouseregion.11.pngbin0 -> 479 bytes
-rw-r--r--tests/auto/declarative/visual/qmlmouseregion/data/mouseregion.12.pngbin0 -> 479 bytes
-rw-r--r--tests/auto/declarative/visual/qmlmouseregion/data/mouseregion.13.pngbin0 -> 481 bytes
-rw-r--r--tests/auto/declarative/visual/qmlmouseregion/data/mouseregion.14.pngbin0 -> 479 bytes
-rw-r--r--tests/auto/declarative/visual/qmlmouseregion/data/mouseregion.15.pngbin0 -> 479 bytes
-rw-r--r--tests/auto/declarative/visual/qmlmouseregion/data/mouseregion.16.pngbin0 -> 1454 bytes
-rw-r--r--tests/auto/declarative/visual/qmlmouseregion/data/mouseregion.17.pngbin0 -> 1454 bytes
-rw-r--r--tests/auto/declarative/visual/qmlmouseregion/data/mouseregion.18.pngbin0 -> 1454 bytes
-rw-r--r--tests/auto/declarative/visual/qmlmouseregion/data/mouseregion.19.pngbin0 -> 1454 bytes
-rw-r--r--tests/auto/declarative/visual/qmlmouseregion/data/mouseregion.2.pngbin0 -> 471 bytes
-rw-r--r--tests/auto/declarative/visual/qmlmouseregion/data/mouseregion.20.pngbin0 -> 1454 bytes
-rw-r--r--tests/auto/declarative/visual/qmlmouseregion/data/mouseregion.21.pngbin0 -> 1454 bytes
-rw-r--r--tests/auto/declarative/visual/qmlmouseregion/data/mouseregion.22.pngbin0 -> 1454 bytes
-rw-r--r--tests/auto/declarative/visual/qmlmouseregion/data/mouseregion.3.pngbin0 -> 471 bytes
-rw-r--r--tests/auto/declarative/visual/qmlmouseregion/data/mouseregion.4.pngbin0 -> 476 bytes
-rw-r--r--tests/auto/declarative/visual/qmlmouseregion/data/mouseregion.5.pngbin0 -> 476 bytes
-rw-r--r--tests/auto/declarative/visual/qmlmouseregion/data/mouseregion.6.pngbin0 -> 476 bytes
-rw-r--r--tests/auto/declarative/visual/qmlmouseregion/data/mouseregion.7.pngbin0 -> 474 bytes
-rw-r--r--tests/auto/declarative/visual/qmlmouseregion/data/mouseregion.8.pngbin0 -> 474 bytes
-rw-r--r--tests/auto/declarative/visual/qmlmouseregion/data/mouseregion.9.pngbin0 -> 474 bytes
-rw-r--r--tests/auto/declarative/visual/qmlmouseregion/data/mouseregion.qml7207
-rw-r--r--tests/auto/declarative/visual/qmlmouseregion/mouseregion.qml107
46 files changed, 8238 insertions, 518 deletions
diff --git a/src/declarative/qml/qmlenginedebug.cpp b/src/declarative/qml/qmlenginedebug.cpp
index 78b166e..6871236 100644
--- a/src/declarative/qml/qmlenginedebug.cpp
+++ b/src/declarative/qml/qmlenginedebug.cpp
@@ -358,7 +358,7 @@ void QmlEngineDebugServer::messageReceived(const QByteArray &message)
QByteArray reply;
QDataStream rs(&reply, QIODevice::WriteOnly);
- rs << QByteArray("WATCH_OBJECT_R") << queryId << objectId << ok;
+ rs << QByteArray("WATCH_OBJECT_R") << queryId << ok;
sendMessage(reply);
} else if (type == "WATCH_PROPERTY") {
diff --git a/tests/auto/declarative/debugger/debugger.pro b/tests/auto/declarative/debugger/debugger.pro
index f4a4476..a341ca9 100644
--- a/tests/auto/declarative/debugger/debugger.pro
+++ b/tests/auto/declarative/debugger/debugger.pro
@@ -1,4 +1,5 @@
TEMPLATE = subdirs
SUBDIRS += qmldebug \
qmldebugclient \
- qmldebugservice
+ qmldebugservice \
+ qpacketprotocol
diff --git a/tests/auto/declarative/debugger/debuggerutil.cpp b/tests/auto/declarative/debugger/debuggerutil.cpp
deleted file mode 100644
index 761105e..0000000
--- a/tests/auto/declarative/debugger/debuggerutil.cpp
+++ /dev/null
@@ -1,103 +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 <QSignalSpy>
-#include <QEventLoop>
-#include <QTimer>
-
-#include <private/qmldebugclient_p.h>
-#include <private/qmldebugservice_p.h>
-
-#include "debuggerutil_p.h"
-
-namespace QmlDebuggerTest {
-
- bool waitForSignal(QObject *receiver, const char *member, int timeout) {
- QEventLoop loop;
- QTimer timer;
- QObject::connect(&timer, SIGNAL(timeout()), &loop, SLOT(quit()));
- QObject::connect(receiver, member, &loop, SLOT(quit()));
- timer.start(timeout);
- loop.exec();
- return timer.isActive();
- }
-
-}
-
-
-QmlDebuggerTestService::QmlDebuggerTestService(const QString &s, QObject *parent)
- : QmlDebugService(s, parent), enabled(false)
-{
-}
-
-void QmlDebuggerTestService::messageReceived(const QByteArray &ba)
-{
- sendMessage(ba);
-}
-
-void QmlDebuggerTestService::enabledChanged(bool e)
-{
- emit enabledStateChanged();
- enabled = e;
-}
-
-
-QmlDebuggerTestClient::QmlDebuggerTestClient(const QString &s, QmlDebugConnection *c)
- : QmlDebugClient(s, c)
-{
-}
-
-QByteArray QmlDebuggerTestClient::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 QmlDebuggerTestClient::messageReceived(const QByteArray &ba)
-{
- emit serverMessage(ba);
-}
-
-
diff --git a/tests/auto/declarative/debugger/debugutil.cpp b/tests/auto/declarative/debugger/debugutil.cpp
new file mode 100644
index 0000000..7008529
--- /dev/null
+++ b/tests/auto/declarative/debugger/debugutil.cpp
@@ -0,0 +1,173 @@
+/****************************************************************************
+**
+** 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 "debugutil_p.h"
+
+bool QmlDebugTest::waitForSignal(QObject *receiver, const char *member, int timeout) {
+ QEventLoop loop;
+ QTimer timer;
+ QObject::connect(&timer, SIGNAL(timeout()), &loop, SLOT(quit()));
+ QObject::connect(receiver, member, &loop, SLOT(quit()));
+ timer.start(timeout);
+ loop.exec();
+ return timer.isActive();
+}
+
+
+QmlDebugTestData::QmlDebugTestData(QEventLoop *el)
+ : exitCode(-1), loop(el)
+{
+}
+
+QmlDebugTestData::~QmlDebugTestData()
+{
+ qDeleteAll(items);
+}
+
+void QmlDebugTestData::testsFinished(int code)
+{
+ exitCode = code;
+ loop->quit();
+}
+
+
+
+QmlDebugTestService::QmlDebugTestService(const QString &s, QObject *parent)
+ : QmlDebugService(s, parent), enabled(false)
+{
+}
+
+void QmlDebugTestService::messageReceived(const QByteArray &ba)
+{
+ sendMessage(ba);
+}
+
+void QmlDebugTestService::enabledChanged(bool e)
+{
+ emit enabledStateChanged();
+ enabled = e;
+}
+
+
+QmlDebugTestClient::QmlDebugTestClient(const QString &s, QmlDebugConnection *c)
+ : QmlDebugClient(s, c)
+{
+}
+
+QByteArray QmlDebugTestClient::waitForResponse()
+{
+ QSignalSpy spy(this, SIGNAL(serverMessage(QByteArray)));
+ QmlDebugTest::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 QmlDebugTestClient::messageReceived(const QByteArray &ba)
+{
+ emit serverMessage(ba);
+}
+
+
+tst_QmlDebug_Thread::tst_QmlDebug_Thread(QmlDebugTestData *data, QmlTestFactory *factory)
+ : m_ready(false), m_data(data), m_factory(factory)
+{
+}
+
+void tst_QmlDebug_Thread::run()
+{
+ QTest::qWait(1000);
+
+ QmlDebugConnection conn;
+ conn.connectToHost("127.0.0.1", 3768);
+ bool ok = conn.waitForConnected(5000);
+ Q_ASSERT(ok);
+
+ while (!m_ready)
+ QTest::qWait(100);
+
+ m_data->conn = &conn;
+
+ Q_ASSERT(m_factory);
+ QObject *test = m_factory->createTest(m_data);
+ Q_ASSERT(test);
+ int code = QTest::qExec(test);
+ emit testsFinished(code);
+}
+
+
+int QmlDebugTest::runTests(QmlTestFactory *factory, const QList<QByteArray> &qml)
+{
+ qputenv("QML_DEBUG_SERVER_PORT", "3768");
+
+ QEventLoop loop;
+ QmlDebugTestData data(&loop);
+
+ tst_QmlDebug_Thread thread(&data, factory);
+ QObject::connect(&thread, SIGNAL(testsFinished(int)), &data, SLOT(testsFinished(int)));
+ thread.start();
+
+ QmlEngine engine; // blocks until client connects
+
+ foreach (const QByteArray &code, qml) {
+ QmlComponent c(&engine, code, QUrl("file://"));
+ Q_ASSERT(c.isReady()); // fails if bad syntax
+ data.items << qobject_cast<QmlGraphicsItem*>(c.create());
+ }
+
+ // start the test
+ data.engine = &engine;
+ thread.m_ready = true;
+
+ loop.exec();
+
+ return data.exitCode;
+}
+
+
diff --git a/tests/auto/declarative/debugger/debuggerutil_p.h b/tests/auto/declarative/debugger/debugutil_p.h
index 5e27a7a..665aeda 100644
--- a/tests/auto/declarative/debugger/debuggerutil_p.h
+++ b/tests/auto/declarative/debugger/debugutil_p.h
@@ -40,21 +40,61 @@
****************************************************************************/
#include <QSignalSpy>
#include <QEventLoop>
+#include <QPointer>
#include <QTimer>
+#include <QThread>
+#include <QTest>
+
+#include <QtDeclarative/qmlengine.h>
#include <private/qmldebugclient_p.h>
#include <private/qmldebugservice_p.h>
+#include <private/qmlgraphicsitem_p.h>
+
+
+class QmlDebugTestData : public QObject
+{
+ Q_OBJECT
+public:
+ QmlDebugTestData(QEventLoop *el);
+
+ ~QmlDebugTestData();
+
+ QmlEngine *engine;
+ QmlDebugConnection *conn;
+
+ int exitCode;
+ QEventLoop *loop;
+
+ QList<QmlGraphicsItem *> items;
+
+public slots:
+ void testsFinished(int code);
+};
+
+
+class QmlTestFactory
+{
+public:
+ QmlTestFactory() {}
+ virtual ~QmlTestFactory() {}
+
+ virtual QObject *createTest(QmlDebugTestData *data) = 0;
+};
+
-namespace QmlDebuggerTest {
+namespace QmlDebugTest {
bool waitForSignal(QObject *receiver, const char *member, int timeout = 5000);
+
+ int runTests(QmlTestFactory *factory, const QList<QByteArray> &qml = QList<QByteArray>());
}
-class QmlDebuggerTestService : public QmlDebugService
+class QmlDebugTestService : public QmlDebugService
{
Q_OBJECT
public:
- QmlDebuggerTestService(const QString &s, QObject *parent = 0);
+ QmlDebugTestService(const QString &s, QObject *parent = 0);
bool enabled;
signals:
@@ -66,11 +106,11 @@ protected:
virtual void enabledChanged(bool e);
};
-class QmlDebuggerTestClient : public QmlDebugClient
+class QmlDebugTestClient : public QmlDebugClient
{
Q_OBJECT
public:
- QmlDebuggerTestClient(const QString &s, QmlDebugConnection *c);
+ QmlDebugTestClient(const QString &s, QmlDebugConnection *c);
QByteArray waitForResponse();
@@ -81,4 +121,22 @@ protected:
virtual void messageReceived(const QByteArray &ba);
};
+class tst_QmlDebug_Thread : public QThread
+{
+ Q_OBJECT
+public:
+ tst_QmlDebug_Thread(QmlDebugTestData *data, QmlTestFactory *factory);
+
+ void run();
+
+ bool m_ready;
+
+signals:
+ void testsFinished(int);
+
+private:
+ QmlDebugTestData *m_data;
+ QmlTestFactory *m_factory;
+};
+
diff --git a/tests/auto/declarative/debugger/qmldebug/qmldebug.pro b/tests/auto/declarative/debugger/qmldebug/qmldebug.pro
index c1ac125..0af30e1 100644
--- a/tests/auto/declarative/debugger/qmldebug/qmldebug.pro
+++ b/tests/auto/declarative/debugger/qmldebug/qmldebug.pro
@@ -2,6 +2,6 @@ load(qttest_p4)
contains(QT_CONFIG,declarative): QT += network declarative
macx:CONFIG -= app_bundle
-HEADERS += ../debuggerutil_p.h
+HEADERS += ../debugutil_p.h
SOURCES += tst_qmldebug.cpp \
- ../debuggerutil.cpp
+ ../debugutil.cpp
diff --git a/tests/auto/declarative/debugger/qmldebug/tst_qmldebug.cpp b/tests/auto/declarative/debugger/qmldebug/tst_qmldebug.cpp
index bfb8aee..70404f6 100644
--- a/tests/auto/declarative/debugger/qmldebug/tst_qmldebug.cpp
+++ b/tests/auto/declarative/debugger/qmldebug/tst_qmldebug.cpp
@@ -59,7 +59,7 @@
#include <private/qmldebugservice_p.h>
#include <private/qmlgraphicsrectangle_p.h>
-#include "../debuggerutil_p.h"
+#include "../debugutil_p.h"
Q_DECLARE_METATYPE(QmlDebugWatch::State)
@@ -69,13 +69,16 @@ 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) {}
+ tst_QmlDebug(QmlDebugTestData *data)
+ {
+ m_conn = data->conn;
+ m_engine = data->engine;
+ m_rootItem = data->items[0];
+ }
private:
QmlDebugObjectReference findRootObject();
QmlDebugPropertyReference findProperty(const QList<QmlDebugPropertyReference> &props, const QString &name) const;
- QObject *findObjectWithId(const QObjectList &objects, int id) const;
void waitForQuery(QmlDebugQuery *query);
void recursiveObjectTest(QObject *o, const QmlDebugObjectReference &oref, bool recursive) const;
@@ -146,21 +149,12 @@ QmlDebugPropertyReference tst_QmlDebug::findProperty(const QList<QmlDebugPropert
return QmlDebugPropertyReference();
}
-QObject *tst_QmlDebug::findObjectWithId(const QObjectList &objects, int id) const
-{
- 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);
QVERIFY(query->state() == QmlDebugQuery::Waiting);
- if (!QmlDebuggerTest::waitForSignal(query, SIGNAL(stateChanged(QmlDebugQuery::State))))
+ if (!QmlDebugTest::waitForSignal(query, SIGNAL(stateChanged(QmlDebugQuery::State))))
QFAIL("query timed out");
}
@@ -177,21 +171,40 @@ void tst_QmlDebug::recursiveObjectTest(QObject *o, const QmlDebugObjectReference
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)
+ const QObjectList &children = o->children();
+ for (int i=0; i<children.count(); i++) {
+ QObject *child = children[i];
+ if (!qmlContext(child))
continue;
-
- QObject *childObject = findObjectWithId(o->children(), cref.debugId());
- QVERIFY2(childObject, qPrintable(QString("Can't find QObject* for %1").arg(cref.className())));
+ int debugId = QmlDebugService::idForObject(child);
+ QVERIFY(debugId >= 0);
+
+ QmlDebugObjectReference cref;
+ foreach (const QmlDebugObjectReference &ref, oref.children()) {
+ if (ref.debugId() == debugId) {
+ cref = ref;
+ break;
+ }
+ }
+ QVERIFY(cref.debugId() >= 0);
if (recursive)
- recursiveObjectTest(childObject, cref, true);
+ recursiveObjectTest(child, cref, true);
}
foreach (const QmlDebugPropertyReference &p, oref.properties()) {
+ QCOMPARE(p.objectDebugId(), QmlDebugService::idForObject(o));
+
+ // signal properties are fake - they are generated from QmlBoundSignal children
+ if (p.name().startsWith("on") && p.name().length() > 2 && p.name()[2].isUpper()) {
+ QVERIFY(p.value().toString().startsWith('{') && p.value().toString().endsWith('}'));
+ QVERIFY(p.valueTypeName().isEmpty());
+ QVERIFY(p.binding().isEmpty());
+ QVERIFY(!p.hasNotifySignal());
+ continue;
+ }
+
QMetaProperty pmeta = meta->property(meta->indexOfProperty(p.name().toUtf8().constData()));
- QVERIFY(pmeta.isValid());
QCOMPARE(p.name(), QString::fromUtf8(pmeta.name()));
@@ -208,6 +221,8 @@ void tst_QmlDebug::recursiveObjectTest(QObject *o, const QmlDebugObjectReference
QCOMPARE(binding->expression(), p.binding());
QCOMPARE(p.hasNotifySignal(), pmeta.hasNotifySignal());
+
+ QVERIFY(pmeta.isValid());
}
}
@@ -277,6 +292,11 @@ void tst_QmlDebug::watch_property()
watch = unconnected.addWatch(prop, this);
QCOMPARE(watch->state(), QmlDebugWatch::Dead);
delete watch;
+
+ watch = m_dbg->addWatch(QmlDebugPropertyReference(), this);
+ QVERIFY(QmlDebugTest::waitForSignal(watch, SIGNAL(stateChanged(QmlDebugWatch::State))));
+ QCOMPARE(watch->state(), QmlDebugWatch::Inactive);
+ delete watch;
watch = m_dbg->addWatch(prop, this);
QCOMPARE(watch->state(), QmlDebugWatch::Waiting);
@@ -289,7 +309,8 @@ void tst_QmlDebug::watch_property()
m_rootItem->setProperty("width", origWidth*2);
// stateChanged() is received before valueChanged()
- QVERIFY(QmlDebuggerTest::waitForSignal(watch, SIGNAL(stateChanged(QmlDebugWatch::State))));
+ QVERIFY(QmlDebugTest::waitForSignal(watch, SIGNAL(stateChanged(QmlDebugWatch::State))));
+ QCOMPARE(watch->state(), QmlDebugWatch::Active);
QCOMPARE(spy.count(), 1);
m_dbg->removeWatch(watch);
@@ -328,6 +349,11 @@ void tst_QmlDebug::watch_object()
QCOMPARE(watch->state(), QmlDebugWatch::Dead);
delete watch;
+ watch = m_dbg->addWatch(QmlDebugObjectReference(), this);
+ QVERIFY(QmlDebugTest::waitForSignal(watch, SIGNAL(stateChanged(QmlDebugWatch::State))));
+ QCOMPARE(watch->state(), QmlDebugWatch::Inactive);
+ delete watch;
+
watch = m_dbg->addWatch(obj, this);
QCOMPARE(watch->state(), QmlDebugWatch::Waiting);
QCOMPARE(watch->objectDebugId(), obj.debugId());
@@ -340,7 +366,8 @@ void tst_QmlDebug::watch_object()
m_rootItem->setProperty("height", origHeight*2);
// stateChanged() is received before any valueChanged() signals
- QVERIFY(QmlDebuggerTest::waitForSignal(watch, SIGNAL(stateChanged(QmlDebugWatch::State))));
+ QVERIFY(QmlDebugTest::waitForSignal(watch, SIGNAL(stateChanged(QmlDebugWatch::State))));
+ QCOMPARE(watch->state(), QmlDebugWatch::Active);
QVERIFY(spy.count() > 0);
int newWidth = -1;
@@ -385,6 +412,11 @@ void tst_QmlDebug::watch_expression()
QCOMPARE(watch->state(), QmlDebugWatch::Dead);
delete watch;
+ watch = m_dbg->addWatch(QmlDebugObjectReference(), expr, this);
+ QVERIFY(QmlDebugTest::waitForSignal(watch, SIGNAL(stateChanged(QmlDebugWatch::State))));
+ QCOMPARE(watch->state(), QmlDebugWatch::Inactive);
+ delete watch;
+
watch = m_dbg->addWatch(obj, expr, this);
QCOMPARE(watch->state(), QmlDebugWatch::Waiting);
QCOMPARE(watch->objectDebugId(), obj.debugId());
@@ -401,13 +433,14 @@ void tst_QmlDebug::watch_expression()
width += increment;
m_rootItem->setProperty("width", width);
}
- if (!QmlDebuggerTest::waitForSignal(watch, SIGNAL(valueChanged(QByteArray,QVariant))))
+ if (!QmlDebugTest::waitForSignal(watch, SIGNAL(valueChanged(QByteArray,QVariant))))
QFAIL("Did not receive valueChanged() for expression");
}
if (spyState.count() == 0)
- QVERIFY(QmlDebuggerTest::waitForSignal(watch, SIGNAL(stateChanged(QmlDebugWatch::State))));
+ QVERIFY(QmlDebugTest::waitForSignal(watch, SIGNAL(stateChanged(QmlDebugWatch::State))));
QCOMPARE(spyState.count(), 1);
+ QCOMPARE(watch->state(), QmlDebugWatch::Active);
m_dbg->removeWatch(watch);
delete watch;
@@ -500,15 +533,16 @@ void tst_QmlDebug::queryRootContexts()
QCOMPARE(context.debugId(), QmlDebugService::idForObject(actualContext));
QCOMPARE(context.name(), actualContext->objectName());
- QCOMPARE(context.objects().count(), 2); // 2 objects created for engine in main()
+ QCOMPARE(context.objects().count(), 2); // 2 qml component objects created for context 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);
+ QCOMPARE(context.contexts().count(), 1);
+ QVERIFY(context.contexts()[0].debugId() >= 0);
+ QCOMPARE(context.contexts()[0].name(), QString("tst_QmlDebug_childContext"));
delete q_engines;
delete q_context;
@@ -593,7 +627,7 @@ void tst_QmlDebug::queryExpressionResult()
QFETCH(QVariant, result);
QmlDebugEnginesQuery *q_engines = m_dbg->queryAvailableEngines(this);
- waitForQuery(q_engines);
+ waitForQuery(q_engines); // check immediate deletion is ok
QmlDebugRootContextQuery *q_context = m_dbg->queryRootContexts(q_engines->engines()[0].debugId(), this);
waitForQuery(q_context);
@@ -759,72 +793,37 @@ void tst_QmlDebug::tst_QmlDebugPropertyReference()
compareProperties(r, ref);
}
-class TestRunnerThread : public QThread
+
+class tst_QmlDebug_Factory : public QmlTestFactory
{
- Q_OBJECT
public:
- void run() {
- QTest::qWait(1000);
- connectToEngine();
- }
-
- QPointer<QmlEngine> m_engine;
- QPointer<QmlGraphicsItem> m_item;
-
-signals:
- void testsFinished();
-
-public slots:
-
- void connectToEngine()
+ QObject *createTest(QmlDebugTestData *data)
{
- 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();
+ QmlContext *c = new QmlContext(data->engine->rootContext());
+ c->setObjectName("tst_QmlDebug_childContext");
+ return new tst_QmlDebug(data);
}
};
-
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; scale: blueRect.scale;\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();
+ QList<QByteArray> qml;
+ qml << "import Qt 4.6\n"
+ "Item {"
+ "width: 10; height: 20; scale: blueRect.scale;"
+ "Rectangle { id: blueRect; width: 500; height: 600; color: \"blue\"; }"
+ "Text { color: blueRect.color; }"
+ "MouseRegion {"
+ "onEntered: { print('hello') }"
+ "}"
+ "}";
+ // add second component to test multiple root contexts
+ qml << "import Qt 4.6\n"
+ "Item {}";
+ tst_QmlDebug_Factory factory;
+ return QmlDebugTest::runTests(&factory, qml);
}
//QTEST_MAIN(tst_QmlDebug)
diff --git a/tests/auto/declarative/debugger/qmldebugclient/qmldebugclient.pro b/tests/auto/declarative/debugger/qmldebugclient/qmldebugclient.pro
index 6e68cd5..c0aa7b2 100644
--- a/tests/auto/declarative/debugger/qmldebugclient/qmldebugclient.pro
+++ b/tests/auto/declarative/debugger/qmldebugclient/qmldebugclient.pro
@@ -2,6 +2,6 @@ load(qttest_p4)
contains(QT_CONFIG,declarative): QT += network declarative
macx:CONFIG -= app_bundle
-HEADERS += ../debuggerutil_p.h
+HEADERS += ../debugutil_p.h
SOURCES += tst_qmldebugclient.cpp \
- ../debuggerutil.cpp
+ ../debugutil.cpp
diff --git a/tests/auto/declarative/debugger/qmldebugclient/tst_qmldebugclient.cpp b/tests/auto/declarative/debugger/qmldebugclient/tst_qmldebugclient.cpp
index 0a768a5..6c4a1a3 100644
--- a/tests/auto/declarative/debugger/qmldebugclient/tst_qmldebugclient.cpp
+++ b/tests/auto/declarative/debugger/qmldebugclient/tst_qmldebugclient.cpp
@@ -52,15 +52,18 @@
#include <private/qmldebugclient_p.h>
#include <private/qmldebugservice_p.h>
-#include "../debuggerutil_p.h"
+#include "../debugutil_p.h"
class tst_QmlDebugClient : public QObject
{
Q_OBJECT
public:
- tst_QmlDebugClient(QmlDebugConnection *conn, QmlEngine *engine)
- : m_conn(conn), m_engine(engine) {}
+ tst_QmlDebugClient(QmlDebugTestData *data)
+ {
+ m_conn = data->conn;
+ m_engine = data->engine;
+ }
QmlDebugConnection *m_conn;
QmlEngine *m_engine;
@@ -89,19 +92,19 @@ void tst_QmlDebugClient::isEnabled()
void tst_QmlDebugClient::setEnabled()
{
- QmlDebuggerTestService service("tst_QmlDebugClient::setEnabled()");
- QmlDebuggerTestClient client("tst_QmlDebugClient::setEnabled()", m_conn);
+ QmlDebugTestService service("tst_QmlDebugClient::setEnabled()");
+ QmlDebugTestClient client("tst_QmlDebugClient::setEnabled()", m_conn);
QCOMPARE(service.isEnabled(), false);
client.setEnabled(true);
QCOMPARE(client.isEnabled(), true);
- QmlDebuggerTest::waitForSignal(&service, SIGNAL(enabledStateChanged()));
+ QmlDebugTest::waitForSignal(&service, SIGNAL(enabledStateChanged()));
QCOMPARE(service.isEnabled(), true);
client.setEnabled(false);
QCOMPARE(client.isEnabled(), false);
- QmlDebuggerTest::waitForSignal(&service, SIGNAL(enabledStateChanged()));
+ QmlDebugTest::waitForSignal(&service, SIGNAL(enabledStateChanged()));
QCOMPARE(service.isEnabled(), false);
}
@@ -125,8 +128,8 @@ void tst_QmlDebugClient::isConnected()
void tst_QmlDebugClient::sendMessage()
{
- QmlDebuggerTestService service("tst_QmlDebugClient::sendMessage()");
- QmlDebuggerTestClient client("tst_QmlDebugClient::sendMessage()", m_conn);
+ QmlDebugTestService service("tst_QmlDebugClient::sendMessage()");
+ QmlDebugTestClient client("tst_QmlDebugClient::sendMessage()", m_conn);
QByteArray msg = "hello!";
@@ -136,55 +139,18 @@ void tst_QmlDebugClient::sendMessage()
}
-
-class tst_QmlDebugClient_Thread : public QThread
+class tst_QmlDebugClient_Factory : public QmlTestFactory
{
- 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();
- }
+ QObject *createTest(QmlDebugTestData *data) { return new tst_QmlDebugClient(data); }
};
-
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();
+ tst_QmlDebugClient_Factory factory;
+ return QmlDebugTest::runTests(&factory);
}
#include "tst_qmldebugclient.moc"
diff --git a/tests/auto/declarative/debugger/qmldebugservice/qmldebugservice.pro b/tests/auto/declarative/debugger/qmldebugservice/qmldebugservice.pro
index 1b6762c..cce277a 100644
--- a/tests/auto/declarative/debugger/qmldebugservice/qmldebugservice.pro
+++ b/tests/auto/declarative/debugger/qmldebugservice/qmldebugservice.pro
@@ -2,6 +2,6 @@ load(qttest_p4)
contains(QT_CONFIG,declarative): QT += network declarative
macx:CONFIG -= app_bundle
-HEADERS += ../debuggerutil_p.h
+HEADERS += ../debugutil_p.h
SOURCES += tst_qmldebugservice.cpp \
- ../debuggerutil.cpp
+ ../debugutil.cpp
diff --git a/tests/auto/declarative/debugger/qmldebugservice/tst_qmldebugservice.cpp b/tests/auto/declarative/debugger/qmldebugservice/tst_qmldebugservice.cpp
index 2cd8607..0c02929 100644
--- a/tests/auto/declarative/debugger/qmldebugservice/tst_qmldebugservice.cpp
+++ b/tests/auto/declarative/debugger/qmldebugservice/tst_qmldebugservice.cpp
@@ -52,15 +52,18 @@
#include <private/qmldebugclient_p.h>
#include <private/qmldebugservice_p.h>
-#include "../debuggerutil_p.h"
+#include "../debugutil_p.h"
class tst_QmlDebugService : public QObject
{
Q_OBJECT
public:
- tst_QmlDebugService(QmlDebugConnection *conn, QmlEngine *engine)
- : m_conn(conn), m_engine(engine) {}
+ tst_QmlDebugService(QmlDebugTestData *data)
+ {
+ m_conn = data->conn;
+ m_engine = data->engine;
+ }
QmlDebugConnection *m_conn;
QmlEngine *m_engine;
@@ -85,12 +88,12 @@ void tst_QmlDebugService::name()
void tst_QmlDebugService::isEnabled()
{
- QmlDebuggerTestService service("tst_QmlDebugService::isEnabled()", m_conn);
+ QmlDebugTestService service("tst_QmlDebugService::isEnabled()", m_conn);
QCOMPARE(service.isEnabled(), false);
- QmlDebuggerTestClient client("tst_QmlDebugService::isEnabled()", m_conn);
+ QmlDebugTestClient client("tst_QmlDebugService::isEnabled()", m_conn);
client.setEnabled(true);
- QmlDebuggerTest::waitForSignal(&service, SIGNAL(enabledStateChanged()));
+ QmlDebugTest::waitForSignal(&service, SIGNAL(enabledStateChanged()));
QCOMPARE(service.isEnabled(), true);
QTest::ignoreMessage(QtWarningMsg, "QmlDebugService: Conflicting plugin name \"tst_QmlDebugService::isEnabled()\" ");
@@ -100,20 +103,20 @@ void tst_QmlDebugService::isEnabled()
void tst_QmlDebugService::enabledChanged()
{
- QmlDebuggerTestService service("tst_QmlDebugService::enabledChanged()");
- QmlDebuggerTestClient client("tst_QmlDebugService::enabledChanged()", m_conn);
+ QmlDebugTestService service("tst_QmlDebugService::enabledChanged()");
+ QmlDebugTestClient client("tst_QmlDebugService::enabledChanged()", m_conn);
QCOMPARE(service.enabled, false);
client.setEnabled(true);
- QmlDebuggerTest::waitForSignal(&service, SIGNAL(enabledStateChanged()));
+ QmlDebugTest::waitForSignal(&service, SIGNAL(enabledStateChanged()));
QCOMPARE(service.enabled, true);
}
void tst_QmlDebugService::sendMessage()
{
- QmlDebuggerTestService service("tst_QmlDebugService::sendMessage()");
- QmlDebuggerTestClient client("tst_QmlDebugService::sendMessage()", m_conn);
+ QmlDebugTestService service("tst_QmlDebugService::sendMessage()");
+ QmlDebugTestClient client("tst_QmlDebugService::sendMessage()", m_conn);
QByteArray msg = "hello!";
@@ -169,54 +172,18 @@ void tst_QmlDebugService::objectToString()
}
-class tst_QmlDebugService_Thread : public QThread
+class tst_QmlDebugService_Factory : public QmlTestFactory
{
- 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();
- }
+ QObject *createTest(QmlDebugTestData *data) { return new tst_QmlDebugService(data); }
};
-
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();
+ tst_QmlDebugService_Factory factory;
+ return QmlDebugTest::runTests(&factory);
}
#include "tst_qmldebugservice.moc"
diff --git a/tests/auto/declarative/debugger/qpacketprotocol/qpacketprotocol.pro b/tests/auto/declarative/debugger/qpacketprotocol/qpacketprotocol.pro
new file mode 100644
index 0000000..800e5e0
--- /dev/null
+++ b/tests/auto/declarative/debugger/qpacketprotocol/qpacketprotocol.pro
@@ -0,0 +1,7 @@
+load(qttest_p4)
+contains(QT_CONFIG,declarative): QT += network declarative
+macx:CONFIG -= app_bundle
+
+HEADERS += ../debugutil_p.h
+SOURCES += tst_qpacketprotocol.cpp \
+ ../debugutil.cpp
diff --git a/tests/auto/declarative/debugger/qpacketprotocol/tst_qpacketprotocol.cpp b/tests/auto/declarative/debugger/qpacketprotocol/tst_qpacketprotocol.cpp
new file mode 100644
index 0000000..36b6317
--- /dev/null
+++ b/tests/auto/declarative/debugger/qpacketprotocol/tst_qpacketprotocol.cpp
@@ -0,0 +1,270 @@
+/****************************************************************************
+**
+** 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 <QTcpSocket>
+#include <QTcpServer>
+#include <QDebug>
+#include <QBuffer>
+
+#include <private/qpacketprotocol_p.h>
+
+#include "../debugutil_p.h"
+
+class tst_QPacketProtocol : public QObject
+{
+ Q_OBJECT
+
+private:
+ QTcpServer *m_server;
+ QTcpSocket *m_client;
+ QTcpSocket *m_serverConn;
+
+private slots:
+ void init();
+ void cleanup();
+
+ void maximumPacketSize();
+ void setMaximumPacketSize();
+ void setMaximumPacketSize_data();
+ void send();
+ void send_data();
+ void packetsAvailable();
+ void packetsAvailable_data();
+ void clear();
+ void read();
+ void device();
+
+ void tst_QPacket_clear();
+};
+
+void tst_QPacketProtocol::init()
+{
+ m_server = new QTcpServer(this);
+ QVERIFY(m_server->listen());
+
+ m_client = new QTcpSocket(this);
+ m_client->connectToHost(m_server->serverAddress(), m_server->serverPort());
+
+ QVERIFY(m_client->waitForConnected());
+ QVERIFY(m_server->waitForNewConnection());
+ m_serverConn = m_server->nextPendingConnection();
+}
+
+void tst_QPacketProtocol::cleanup()
+{
+ delete m_client;
+ delete m_serverConn;
+ delete m_server;
+}
+
+void tst_QPacketProtocol::maximumPacketSize()
+{
+ QPacketProtocol p(m_client);
+ QCOMPARE(p.maximumPacketSize(), 0x7FFFFFFF);
+}
+
+void tst_QPacketProtocol::setMaximumPacketSize()
+{
+ QFETCH(qint32, size);
+ QFETCH(qint32, expected);
+
+ QPacketProtocol out(m_serverConn);
+ QCOMPARE(out.setMaximumPacketSize(size), expected);
+
+ if (size == expected) {
+ QPacketProtocol in(m_client);
+ QByteArray b;
+ b.fill('a', size + 1);
+ out.send() << b.constData();
+ QVERIFY(QmlDebugTest::waitForSignal(&in, SIGNAL(invalidPacket())));
+ }
+}
+
+void tst_QPacketProtocol::setMaximumPacketSize_data()
+{
+ QTest::addColumn<int>("size");
+ QTest::addColumn<int>("expected");
+
+ QTest::newRow("invalid") << qint32(sizeof(qint32) - 1) << qint32(0x7FFFFFFF);
+ QTest::newRow("still invalid") << qint32(sizeof(qint32)) << qint32(0x7FFFFFFF);
+ QTest::newRow("valid") << qint32(sizeof(qint32) + 1) << qint32(sizeof(qint32) + 1);
+}
+
+void tst_QPacketProtocol::send()
+{
+ QFETCH(bool, useAutoSend);
+
+ QPacketProtocol in(m_client);
+ QPacketProtocol out(m_serverConn);
+
+ QByteArray ba;
+ int num;
+
+ if (useAutoSend) {
+ out.send() << "Hello world" << 123;
+ } else {
+ QPacket packet;
+ packet << "Hello world" << 123;
+ out.send(packet);
+ }
+
+ QVERIFY(QmlDebugTest::waitForSignal(&in, SIGNAL(readyRead())));
+
+ QPacket p = in.read();
+ p >> ba >> num;
+ QCOMPARE(ba, QByteArray("Hello world") + '\0');
+ QCOMPARE(num, 123);
+}
+
+void tst_QPacketProtocol::send_data()
+{
+ QTest::addColumn<bool>("useAutoSend");
+
+ QTest::newRow("auto send") << true;
+ QTest::newRow("no auto send") << false;
+}
+
+void tst_QPacketProtocol::packetsAvailable()
+{
+ QFETCH(int, packetCount);
+
+ QPacketProtocol out(m_client);
+ QPacketProtocol in(m_serverConn);
+
+ QCOMPARE(out.packetsAvailable(), qint64(0));
+ QCOMPARE(in.packetsAvailable(), qint64(0));
+
+ for (int i=0; i<packetCount; i++)
+ out.send() << "Hello";
+
+ QVERIFY(QmlDebugTest::waitForSignal(&in, SIGNAL(readyRead())));
+ QCOMPARE(in.packetsAvailable(), qint64(packetCount));
+}
+
+void tst_QPacketProtocol::packetsAvailable_data()
+{
+ QTest::addColumn<int>("packetCount");
+
+ QTest::newRow("1") << 1;
+ QTest::newRow("2") << 2;
+ QTest::newRow("10") << 10;
+}
+
+void tst_QPacketProtocol::clear()
+{
+ QPacketProtocol in(m_client);
+ QPacketProtocol out(m_serverConn);
+
+ out.send() << 123;
+ out.send() << 456;
+ QVERIFY(QmlDebugTest::waitForSignal(&in, SIGNAL(readyRead())));
+
+ in.clear();
+ QVERIFY(in.read().isEmpty());
+}
+
+void tst_QPacketProtocol::read()
+{
+ QPacketProtocol in(m_client);
+ QPacketProtocol out(m_serverConn);
+
+ QVERIFY(in.read().isEmpty());
+
+ out.send() << 123;
+ out.send() << 456;
+ QVERIFY(QmlDebugTest::waitForSignal(&in, SIGNAL(readyRead())));
+
+ int num;
+
+ QPacket p1 = in.read();
+ QVERIFY(!p1.isEmpty());
+ p1 >> num;
+ QCOMPARE(num, 123);
+
+ QPacket p2 = in.read();
+ QVERIFY(!p2.isEmpty());
+ p2 >> num;
+ QCOMPARE(num, 456);
+
+ QVERIFY(in.read().isEmpty());
+}
+
+void tst_QPacketProtocol::device()
+{
+ QPacketProtocol p(m_client);
+ QCOMPARE(p.device(), m_client);
+}
+
+void tst_QPacketProtocol::tst_QPacket_clear()
+{
+ QPacketProtocol protocol(m_client);
+
+ QPacket packet;
+
+ packet << "Hello world!" << 123;
+ protocol.send(packet);
+
+ packet.clear();
+ QVERIFY(packet.isEmpty());
+ packet << "Goodbyte world!" << 789;
+ protocol.send(packet);
+
+ QByteArray ba;
+ int num;
+ QPacketProtocol in(m_serverConn);
+ QVERIFY(QmlDebugTest::waitForSignal(&in, SIGNAL(readyRead())));
+
+ QPacket p1 = in.read();
+ p1 >> ba >> num;
+ QCOMPARE(ba, QByteArray("Hello world!") + '\0');
+ QCOMPARE(num, 123);
+
+ QPacket p2 = in.read();
+ p2 >> ba >> num;
+ QCOMPARE(ba, QByteArray("Goodbyte world!") + '\0');
+ QCOMPARE(num, 789);
+}
+
+QTEST_MAIN(tst_QPacketProtocol)
+
+#include "tst_qpacketprotocol.moc"
diff --git a/tests/auto/declarative/qmlgraphicslistview/data/listview.qml b/tests/auto/declarative/qmlgraphicslistview/data/listview.qml
index 280173b..ccefeba 100644
--- a/tests/auto/declarative/qmlgraphicslistview/data/listview.qml
+++ b/tests/auto/declarative/qmlgraphicslistview/data/listview.qml
@@ -81,5 +81,6 @@ Rectangle {
model: testModel
delegate: testAnimate ? myDelegate : animatedDelegate
highlightMoveSpeed: 1000
+ highlightResizeSpeed: 1000
}
}
diff --git a/tests/auto/declarative/qmlgraphicslistview/tst_qmlgraphicslistview.cpp b/tests/auto/declarative/qmlgraphicslistview/tst_qmlgraphicslistview.cpp
index 83b8d79..25e6996 100644
--- a/tests/auto/declarative/qmlgraphicslistview/tst_qmlgraphicslistview.cpp
+++ b/tests/auto/declarative/qmlgraphicslistview/tst_qmlgraphicslistview.cpp
@@ -75,6 +75,7 @@ private slots:
void enforceRange();
void spacing();
void sections();
+ void cacheBuffer();
private:
template <class T> void items();
@@ -275,6 +276,9 @@ void tst_QmlGraphicsListView::items()
int itemCount = findItems<QmlGraphicsItem>(viewport, "wrapper").count();
QVERIFY(itemCount == 0);
+ QCOMPARE(listview->highlightResizeSpeed(), 1000.0);
+ QCOMPARE(listview->highlightMoveSpeed(), 1000.0);
+
delete canvas;
}
@@ -727,6 +731,8 @@ void tst_QmlGraphicsListView::sections()
QmlGraphicsItem *viewport = listview->viewport();
QVERIFY(viewport != 0);
+ QCOMPARE(listview->sectionExpression(), QLatin1String("Math.floor(number/5)"));
+
// Confirm items positioned correctly
int itemCount = findItems<QmlGraphicsItem>(viewport, "wrapper").count();
for (int i = 0; i < model.count() && i < itemCount; ++i) {
@@ -770,6 +776,13 @@ void tst_QmlGraphicsListView::sections()
listview->setViewportY(140);
QVERIFY(listview->currentSection() == "1");
+ listview->setViewportY(20);
+ QVERIFY(listview->currentSection() == "0");
+
+ item = findItem<QmlGraphicsItem>(viewport, "wrapper", 1);
+ QVERIFY(item);
+ QCOMPARE(item->height(), 20.0);
+
delete canvas;
}
@@ -903,6 +916,52 @@ void tst_QmlGraphicsListView::itemList()
delete canvas;
}
+void tst_QmlGraphicsListView::cacheBuffer()
+{
+ QmlView *canvas = createView(SRCDIR "/data/listview.qml");
+
+ TestModel model;
+ for (int i = 0; i < 30; i++)
+ model.addItem("Item" + QString::number(i), "");
+
+ QmlContext *ctxt = canvas->rootContext();
+ ctxt->setContextProperty("testModel", &model);
+ ctxt->setContextProperty("testAnimate", QVariant(false));
+
+ canvas->execute();
+ qApp->processEvents();
+
+ QmlGraphicsListView *listview = findItem<QmlGraphicsListView>(canvas->root(), "list");
+ QVERIFY(listview != 0);
+
+ QmlGraphicsItem *viewport = listview->viewport();
+ QVERIFY(viewport != 0);
+
+ // Confirm items positioned correctly
+ int itemCount = findItems<QmlGraphicsItem>(viewport, "wrapper").count();
+ for (int i = 0; i < model.count() && i < itemCount; ++i) {
+ QmlGraphicsItem *item = findItem<QmlGraphicsItem>(viewport, "wrapper", i);
+ if (!item) qWarning() << "Item" << i << "not found";
+ QVERIFY(item);
+ QVERIFY(item->y() == i*20);
+ }
+
+ listview->setCacheBuffer(400);
+
+ int newItemCount = findItems<QmlGraphicsItem>(viewport, "wrapper").count();
+ QVERIFY(newItemCount > itemCount);
+
+ // Confirm items positioned correctly
+ for (int i = 0; i < model.count() && i < newItemCount; ++i) {
+ QmlGraphicsItem *item = findItem<QmlGraphicsItem>(viewport, "wrapper", i);
+ if (!item) qWarning() << "Item" << i << "not found";
+ QVERIFY(item);
+ QVERIFY(item->y() == i*20);
+ }
+
+ delete canvas;
+}
+
void tst_QmlGraphicsListView::qListModelInterface_items()
{
items<TestModel>();
diff --git a/tests/auto/declarative/visual/Package_Views/data/packageviews.11.png b/tests/auto/declarative/visual/Package_Views/data/packageviews.11.png
index 75acd3f..276e6c8 100644
--- a/tests/auto/declarative/visual/Package_Views/data/packageviews.11.png
+++ b/tests/auto/declarative/visual/Package_Views/data/packageviews.11.png
Binary files differ
diff --git a/tests/auto/declarative/visual/Package_Views/data/packageviews.12.png b/tests/auto/declarative/visual/Package_Views/data/packageviews.12.png
index 258c8b3..276e6c8 100644
--- a/tests/auto/declarative/visual/Package_Views/data/packageviews.12.png
+++ b/tests/auto/declarative/visual/Package_Views/data/packageviews.12.png
Binary files differ
diff --git a/tests/auto/declarative/visual/Package_Views/data/packageviews.13.png b/tests/auto/declarative/visual/Package_Views/data/packageviews.13.png
index c6fec5b..1c1f438 100644
--- a/tests/auto/declarative/visual/Package_Views/data/packageviews.13.png
+++ b/tests/auto/declarative/visual/Package_Views/data/packageviews.13.png
Binary files differ
diff --git a/tests/auto/declarative/visual/Package_Views/data/packageviews.14.png b/tests/auto/declarative/visual/Package_Views/data/packageviews.14.png
index c6fec5b..1c1f438 100644
--- a/tests/auto/declarative/visual/Package_Views/data/packageviews.14.png
+++ b/tests/auto/declarative/visual/Package_Views/data/packageviews.14.png
Binary files differ
diff --git a/tests/auto/declarative/visual/Package_Views/data/packageviews.qml b/tests/auto/declarative/visual/Package_Views/data/packageviews.qml
index 45921d9..e2323a6 100644
--- a/tests/auto/declarative/visual/Package_Views/data/packageviews.qml
+++ b/tests/auto/declarative/visual/Package_Views/data/packageviews.qml
@@ -3042,123 +3042,123 @@ VisualTest {
}
Frame {
msec: 11040
- hash: "93ce707a06141bfe27ebd922934f1aed"
+ hash: "27b4322efdced9061d32f476086231c1"
}
Frame {
msec: 11056
- hash: "49e8a33a1955ee8f267eba98532124bc"
+ hash: "8492670b7505eb5c6b9acf39ba2b96e8"
}
Frame {
msec: 11072
- hash: "1f4e4f815c0ad7a5edf01f4dc493ec1d"
+ hash: "9f9578af5ec2d369ffbcb00b8092f816"
}
Frame {
msec: 11088
- hash: "058ad87d035643f027e0469d54e35f2a"
+ hash: "edb2ed0102298e92709e3f675e5d6f8b"
}
Frame {
msec: 11104
- hash: "822cf2c6da969a99f6413a659845a333"
+ hash: "c54b45e02ce8ecc579060f49c5d1b715"
}
Frame {
msec: 11120
- hash: "a4e8d8093c1876af6669d8df92b515b5"
+ hash: "83bbe328ab7d39f413f6fdfc2e0eef81"
}
Frame {
msec: 11136
- hash: "236f7f1a0c3b25ad7f33fa1700f3f947"
+ hash: "17596f573f81638c65da199cc0928bd9"
}
Frame {
msec: 11152
- hash: "dec16d1e0edd3befa2d31972da2b57a6"
+ hash: "53a28dea1aa35151f6c14cf035fb0952"
}
Frame {
msec: 11168
- hash: "ae85e93afa88929f15fc668bab619ab8"
+ hash: "3067ef8ee153feb13003208a8c77418d"
}
Frame {
msec: 11184
- hash: "3f2ef5ecc13e0ef10c72dc3e05305c81"
+ hash: "e799a252b5c293969b4c361e1c63131b"
}
Frame {
msec: 11200
- hash: "0611193af6fc504048a06a7423172768"
+ hash: "348df3e3d388361a10339dd42507b4da"
}
Frame {
msec: 11216
- hash: "82e4e806158be1a812d9b6a175c11b4a"
+ hash: "915373dd891ef82d4c84177e6e7d395b"
}
Frame {
msec: 11232
- hash: "b7e8ae87deffc9ccbacce9b132ceeeed"
+ hash: "426ff6e7e067fc009df9110c703dfcf3"
}
Frame {
msec: 11248
- hash: "ae511e7358aaecc6a368dacd8a3f4b40"
+ hash: "c5aa16682be21fa95a7873f2538d5a86"
}
Frame {
msec: 11264
- hash: "b67b59b182ea950e830b85c393bc2bd1"
+ hash: "53a8b0560be8f94f6ae37f49e8a05d5a"
}
Frame {
msec: 11280
- hash: "cfc6eccff56498ff38e98ff3252de1db"
+ hash: "a867d7a0640771dc72f5c3de2c715f6c"
}
Frame {
msec: 11296
- hash: "542c54779a40b56091e6741c447dc223"
+ hash: "7393b53dfe72a957d98151ab7437fc3b"
}
Frame {
msec: 11312
- hash: "38a4fcbf35f24c9be706f238003a70f4"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 11328
- hash: "38a4fcbf35f24c9be706f238003a70f4"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 11344
- hash: "38a4fcbf35f24c9be706f238003a70f4"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 11360
- hash: "542c54779a40b56091e6741c447dc223"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 11376
- hash: "b67b59b182ea950e830b85c393bc2bd1"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 11392
- hash: "79b8823ac67f6cc612f1b6aea743c413"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 11408
- hash: "3f2ef5ecc13e0ef10c72dc3e05305c81"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 11424
- hash: "dec16d1e0edd3befa2d31972da2b57a6"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 11440
- hash: "cf7217bb1ceea9d3bf9f5ca604c15056"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 11456
- hash: "8ad3c6a174f0876905db889a2d772c8a"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 11472
- hash: "c45588ccc0aa28fc9b3414251c9689e3"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 11488
- hash: "6cc42773631600d1eff92f3ba05a49f3"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 11504
- hash: "51c4ad052c4c74cfc05ccd5de87418aa"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 11520
@@ -3166,239 +3166,239 @@ VisualTest {
}
Frame {
msec: 11536
- hash: "a4fc0dbc0ebe550f5aa3a91350bbbf3f"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 11552
- hash: "a4fc0dbc0ebe550f5aa3a91350bbbf3f"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 11568
- hash: "a4fc0dbc0ebe550f5aa3a91350bbbf3f"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 11584
- hash: "a4fc0dbc0ebe550f5aa3a91350bbbf3f"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 11600
- hash: "a4fc0dbc0ebe550f5aa3a91350bbbf3f"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 11616
- hash: "a4fc0dbc0ebe550f5aa3a91350bbbf3f"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 11632
- hash: "a4fc0dbc0ebe550f5aa3a91350bbbf3f"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 11648
- hash: "a4fc0dbc0ebe550f5aa3a91350bbbf3f"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 11664
- hash: "a4fc0dbc0ebe550f5aa3a91350bbbf3f"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 11680
- hash: "a4fc0dbc0ebe550f5aa3a91350bbbf3f"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 11696
- hash: "a4fc0dbc0ebe550f5aa3a91350bbbf3f"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 11712
- hash: "a4fc0dbc0ebe550f5aa3a91350bbbf3f"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 11728
- hash: "a4fc0dbc0ebe550f5aa3a91350bbbf3f"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 11744
- hash: "a4fc0dbc0ebe550f5aa3a91350bbbf3f"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 11760
- hash: "a4fc0dbc0ebe550f5aa3a91350bbbf3f"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 11776
- hash: "a4fc0dbc0ebe550f5aa3a91350bbbf3f"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 11792
- hash: "a4fc0dbc0ebe550f5aa3a91350bbbf3f"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 11808
- hash: "a4fc0dbc0ebe550f5aa3a91350bbbf3f"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 11824
- hash: "a4fc0dbc0ebe550f5aa3a91350bbbf3f"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 11840
- hash: "a4fc0dbc0ebe550f5aa3a91350bbbf3f"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 11856
- hash: "a4fc0dbc0ebe550f5aa3a91350bbbf3f"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 11872
- hash: "a4fc0dbc0ebe550f5aa3a91350bbbf3f"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 11888
- hash: "a4fc0dbc0ebe550f5aa3a91350bbbf3f"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 11904
- hash: "a4fc0dbc0ebe550f5aa3a91350bbbf3f"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 11920
- hash: "a4fc0dbc0ebe550f5aa3a91350bbbf3f"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 11936
- hash: "a4fc0dbc0ebe550f5aa3a91350bbbf3f"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 11952
- hash: "a4fc0dbc0ebe550f5aa3a91350bbbf3f"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 11968
- hash: "a4fc0dbc0ebe550f5aa3a91350bbbf3f"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 11984
- hash: "a4fc0dbc0ebe550f5aa3a91350bbbf3f"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 12000
- hash: "a4fc0dbc0ebe550f5aa3a91350bbbf3f"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 12016
- hash: "a4fc0dbc0ebe550f5aa3a91350bbbf3f"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 12032
- hash: "a4fc0dbc0ebe550f5aa3a91350bbbf3f"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 12048
- hash: "a4fc0dbc0ebe550f5aa3a91350bbbf3f"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 12064
- hash: "a4fc0dbc0ebe550f5aa3a91350bbbf3f"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 12080
- hash: "a4fc0dbc0ebe550f5aa3a91350bbbf3f"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 12096
- hash: "a4fc0dbc0ebe550f5aa3a91350bbbf3f"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 12112
- hash: "a4fc0dbc0ebe550f5aa3a91350bbbf3f"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 12128
- hash: "a4fc0dbc0ebe550f5aa3a91350bbbf3f"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 12144
- hash: "a4fc0dbc0ebe550f5aa3a91350bbbf3f"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 12160
- hash: "a4fc0dbc0ebe550f5aa3a91350bbbf3f"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 12176
- hash: "a4fc0dbc0ebe550f5aa3a91350bbbf3f"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 12192
- hash: "a4fc0dbc0ebe550f5aa3a91350bbbf3f"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 12208
- hash: "a4fc0dbc0ebe550f5aa3a91350bbbf3f"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 12224
- hash: "a4fc0dbc0ebe550f5aa3a91350bbbf3f"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 12240
- hash: "a4fc0dbc0ebe550f5aa3a91350bbbf3f"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 12256
- hash: "a4fc0dbc0ebe550f5aa3a91350bbbf3f"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 12272
- hash: "a4fc0dbc0ebe550f5aa3a91350bbbf3f"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 12288
- hash: "a4fc0dbc0ebe550f5aa3a91350bbbf3f"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 12304
- hash: "a4fc0dbc0ebe550f5aa3a91350bbbf3f"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 12320
- hash: "a4fc0dbc0ebe550f5aa3a91350bbbf3f"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 12336
- hash: "a4fc0dbc0ebe550f5aa3a91350bbbf3f"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 12352
- hash: "a4fc0dbc0ebe550f5aa3a91350bbbf3f"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 12368
- hash: "a4fc0dbc0ebe550f5aa3a91350bbbf3f"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 12384
- hash: "a4fc0dbc0ebe550f5aa3a91350bbbf3f"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 12400
- hash: "a4fc0dbc0ebe550f5aa3a91350bbbf3f"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 12416
- hash: "a4fc0dbc0ebe550f5aa3a91350bbbf3f"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 12432
- hash: "a4fc0dbc0ebe550f5aa3a91350bbbf3f"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 12448
- hash: "a4fc0dbc0ebe550f5aa3a91350bbbf3f"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 12464
- hash: "a4fc0dbc0ebe550f5aa3a91350bbbf3f"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 12480
@@ -3406,131 +3406,131 @@ VisualTest {
}
Frame {
msec: 12496
- hash: "a4fc0dbc0ebe550f5aa3a91350bbbf3f"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 12512
- hash: "a4fc0dbc0ebe550f5aa3a91350bbbf3f"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 12528
- hash: "a4fc0dbc0ebe550f5aa3a91350bbbf3f"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 12544
- hash: "a4fc0dbc0ebe550f5aa3a91350bbbf3f"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 12560
- hash: "a4fc0dbc0ebe550f5aa3a91350bbbf3f"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 12576
- hash: "a4fc0dbc0ebe550f5aa3a91350bbbf3f"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 12592
- hash: "a4fc0dbc0ebe550f5aa3a91350bbbf3f"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 12608
- hash: "a4fc0dbc0ebe550f5aa3a91350bbbf3f"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 12624
- hash: "a4fc0dbc0ebe550f5aa3a91350bbbf3f"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 12640
- hash: "a4fc0dbc0ebe550f5aa3a91350bbbf3f"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 12656
- hash: "a4fc0dbc0ebe550f5aa3a91350bbbf3f"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 12672
- hash: "a4fc0dbc0ebe550f5aa3a91350bbbf3f"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 12688
- hash: "a4fc0dbc0ebe550f5aa3a91350bbbf3f"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 12704
- hash: "a4fc0dbc0ebe550f5aa3a91350bbbf3f"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 12720
- hash: "a4fc0dbc0ebe550f5aa3a91350bbbf3f"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 12736
- hash: "a4fc0dbc0ebe550f5aa3a91350bbbf3f"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 12752
- hash: "a4fc0dbc0ebe550f5aa3a91350bbbf3f"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 12768
- hash: "a4fc0dbc0ebe550f5aa3a91350bbbf3f"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 12784
- hash: "a4fc0dbc0ebe550f5aa3a91350bbbf3f"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 12800
- hash: "a4fc0dbc0ebe550f5aa3a91350bbbf3f"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 12816
- hash: "a4fc0dbc0ebe550f5aa3a91350bbbf3f"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 12832
- hash: "a4fc0dbc0ebe550f5aa3a91350bbbf3f"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 12848
- hash: "a4fc0dbc0ebe550f5aa3a91350bbbf3f"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 12864
- hash: "a4fc0dbc0ebe550f5aa3a91350bbbf3f"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 12880
- hash: "a4fc0dbc0ebe550f5aa3a91350bbbf3f"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 12896
- hash: "a4fc0dbc0ebe550f5aa3a91350bbbf3f"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 12912
- hash: "a4fc0dbc0ebe550f5aa3a91350bbbf3f"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 12928
- hash: "a4fc0dbc0ebe550f5aa3a91350bbbf3f"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 12944
- hash: "a4fc0dbc0ebe550f5aa3a91350bbbf3f"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 12960
- hash: "a4fc0dbc0ebe550f5aa3a91350bbbf3f"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 12976
- hash: "a4fc0dbc0ebe550f5aa3a91350bbbf3f"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 12992
- hash: "a4fc0dbc0ebe550f5aa3a91350bbbf3f"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Mouse {
type: 2
@@ -3542,23 +3542,23 @@ VisualTest {
}
Frame {
msec: 13008
- hash: "a4fc0dbc0ebe550f5aa3a91350bbbf3f"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 13024
- hash: "a4fc0dbc0ebe550f5aa3a91350bbbf3f"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 13040
- hash: "a4fc0dbc0ebe550f5aa3a91350bbbf3f"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 13056
- hash: "a4fc0dbc0ebe550f5aa3a91350bbbf3f"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Frame {
msec: 13072
- hash: "a4fc0dbc0ebe550f5aa3a91350bbbf3f"
+ hash: "c7379955d31f2585fa4a10e3777f9554"
}
Mouse {
type: 3
@@ -3570,91 +3570,91 @@ VisualTest {
}
Frame {
msec: 13088
- hash: "dbca3bbd626c61d30731f84693bc939b"
+ hash: "4e2bea533c32eb60ce28494b71fa7fea"
}
Frame {
msec: 13104
- hash: "dbca3bbd626c61d30731f84693bc939b"
+ hash: "4e2bea533c32eb60ce28494b71fa7fea"
}
Frame {
msec: 13120
- hash: "dbca3bbd626c61d30731f84693bc939b"
+ hash: "4e2bea533c32eb60ce28494b71fa7fea"
}
Frame {
msec: 13136
- hash: "dbca3bbd626c61d30731f84693bc939b"
+ hash: "4e2bea533c32eb60ce28494b71fa7fea"
}
Frame {
msec: 13152
- hash: "dbca3bbd626c61d30731f84693bc939b"
+ hash: "4e2bea533c32eb60ce28494b71fa7fea"
}
Frame {
msec: 13168
- hash: "dbca3bbd626c61d30731f84693bc939b"
+ hash: "4e2bea533c32eb60ce28494b71fa7fea"
}
Frame {
msec: 13184
- hash: "dbca3bbd626c61d30731f84693bc939b"
+ hash: "4e2bea533c32eb60ce28494b71fa7fea"
}
Frame {
msec: 13200
- hash: "dbca3bbd626c61d30731f84693bc939b"
+ hash: "4e2bea533c32eb60ce28494b71fa7fea"
}
Frame {
msec: 13216
- hash: "dbca3bbd626c61d30731f84693bc939b"
+ hash: "4e2bea533c32eb60ce28494b71fa7fea"
}
Frame {
msec: 13232
- hash: "dbca3bbd626c61d30731f84693bc939b"
+ hash: "4e2bea533c32eb60ce28494b71fa7fea"
}
Frame {
msec: 13248
- hash: "dbca3bbd626c61d30731f84693bc939b"
+ hash: "4e2bea533c32eb60ce28494b71fa7fea"
}
Frame {
msec: 13264
- hash: "dbca3bbd626c61d30731f84693bc939b"
+ hash: "4e2bea533c32eb60ce28494b71fa7fea"
}
Frame {
msec: 13280
- hash: "dbca3bbd626c61d30731f84693bc939b"
+ hash: "4e2bea533c32eb60ce28494b71fa7fea"
}
Frame {
msec: 13296
- hash: "dbca3bbd626c61d30731f84693bc939b"
+ hash: "4e2bea533c32eb60ce28494b71fa7fea"
}
Frame {
msec: 13312
- hash: "dbca3bbd626c61d30731f84693bc939b"
+ hash: "4e2bea533c32eb60ce28494b71fa7fea"
}
Frame {
msec: 13328
- hash: "dbca3bbd626c61d30731f84693bc939b"
+ hash: "4e2bea533c32eb60ce28494b71fa7fea"
}
Frame {
msec: 13344
- hash: "dbca3bbd626c61d30731f84693bc939b"
+ hash: "4e2bea533c32eb60ce28494b71fa7fea"
}
Frame {
msec: 13360
- hash: "dbca3bbd626c61d30731f84693bc939b"
+ hash: "4e2bea533c32eb60ce28494b71fa7fea"
}
Frame {
msec: 13376
- hash: "dbca3bbd626c61d30731f84693bc939b"
+ hash: "4e2bea533c32eb60ce28494b71fa7fea"
}
Frame {
msec: 13392
- hash: "dbca3bbd626c61d30731f84693bc939b"
+ hash: "4e2bea533c32eb60ce28494b71fa7fea"
}
Frame {
msec: 13408
- hash: "dbca3bbd626c61d30731f84693bc939b"
+ hash: "4e2bea533c32eb60ce28494b71fa7fea"
}
Frame {
msec: 13424
- hash: "dbca3bbd626c61d30731f84693bc939b"
+ hash: "4e2bea533c32eb60ce28494b71fa7fea"
}
Frame {
msec: 13440
@@ -3662,239 +3662,239 @@ VisualTest {
}
Frame {
msec: 13456
- hash: "dbca3bbd626c61d30731f84693bc939b"
+ hash: "4e2bea533c32eb60ce28494b71fa7fea"
}
Frame {
msec: 13472
- hash: "dbca3bbd626c61d30731f84693bc939b"
+ hash: "4e2bea533c32eb60ce28494b71fa7fea"
}
Frame {
msec: 13488
- hash: "dbca3bbd626c61d30731f84693bc939b"
+ hash: "4e2bea533c32eb60ce28494b71fa7fea"
}
Frame {
msec: 13504
- hash: "dbca3bbd626c61d30731f84693bc939b"
+ hash: "4e2bea533c32eb60ce28494b71fa7fea"
}
Frame {
msec: 13520
- hash: "dbca3bbd626c61d30731f84693bc939b"
+ hash: "4e2bea533c32eb60ce28494b71fa7fea"
}
Frame {
msec: 13536
- hash: "dbca3bbd626c61d30731f84693bc939b"
+ hash: "4e2bea533c32eb60ce28494b71fa7fea"
}
Frame {
msec: 13552
- hash: "dbca3bbd626c61d30731f84693bc939b"
+ hash: "4e2bea533c32eb60ce28494b71fa7fea"
}
Frame {
msec: 13568
- hash: "dbca3bbd626c61d30731f84693bc939b"
+ hash: "4e2bea533c32eb60ce28494b71fa7fea"
}
Frame {
msec: 13584
- hash: "dbca3bbd626c61d30731f84693bc939b"
+ hash: "4e2bea533c32eb60ce28494b71fa7fea"
}
Frame {
msec: 13600
- hash: "dbca3bbd626c61d30731f84693bc939b"
+ hash: "4e2bea533c32eb60ce28494b71fa7fea"
}
Frame {
msec: 13616
- hash: "dbca3bbd626c61d30731f84693bc939b"
+ hash: "4e2bea533c32eb60ce28494b71fa7fea"
}
Frame {
msec: 13632
- hash: "dbca3bbd626c61d30731f84693bc939b"
+ hash: "4e2bea533c32eb60ce28494b71fa7fea"
}
Frame {
msec: 13648
- hash: "dbca3bbd626c61d30731f84693bc939b"
+ hash: "4e2bea533c32eb60ce28494b71fa7fea"
}
Frame {
msec: 13664
- hash: "dbca3bbd626c61d30731f84693bc939b"
+ hash: "4e2bea533c32eb60ce28494b71fa7fea"
}
Frame {
msec: 13680
- hash: "dbca3bbd626c61d30731f84693bc939b"
+ hash: "4e2bea533c32eb60ce28494b71fa7fea"
}
Frame {
msec: 13696
- hash: "dbca3bbd626c61d30731f84693bc939b"
+ hash: "4e2bea533c32eb60ce28494b71fa7fea"
}
Frame {
msec: 13712
- hash: "dbca3bbd626c61d30731f84693bc939b"
+ hash: "4e2bea533c32eb60ce28494b71fa7fea"
}
Frame {
msec: 13728
- hash: "dbca3bbd626c61d30731f84693bc939b"
+ hash: "4e2bea533c32eb60ce28494b71fa7fea"
}
Frame {
msec: 13744
- hash: "dbca3bbd626c61d30731f84693bc939b"
+ hash: "4e2bea533c32eb60ce28494b71fa7fea"
}
Frame {
msec: 13760
- hash: "dbca3bbd626c61d30731f84693bc939b"
+ hash: "4e2bea533c32eb60ce28494b71fa7fea"
}
Frame {
msec: 13776
- hash: "dbca3bbd626c61d30731f84693bc939b"
+ hash: "4e2bea533c32eb60ce28494b71fa7fea"
}
Frame {
msec: 13792
- hash: "dbca3bbd626c61d30731f84693bc939b"
+ hash: "4e2bea533c32eb60ce28494b71fa7fea"
}
Frame {
msec: 13808
- hash: "dbca3bbd626c61d30731f84693bc939b"
+ hash: "4e2bea533c32eb60ce28494b71fa7fea"
}
Frame {
msec: 13824
- hash: "dbca3bbd626c61d30731f84693bc939b"
+ hash: "4e2bea533c32eb60ce28494b71fa7fea"
}
Frame {
msec: 13840
- hash: "dbca3bbd626c61d30731f84693bc939b"
+ hash: "4e2bea533c32eb60ce28494b71fa7fea"
}
Frame {
msec: 13856
- hash: "dbca3bbd626c61d30731f84693bc939b"
+ hash: "4e2bea533c32eb60ce28494b71fa7fea"
}
Frame {
msec: 13872
- hash: "dbca3bbd626c61d30731f84693bc939b"
+ hash: "4e2bea533c32eb60ce28494b71fa7fea"
}
Frame {
msec: 13888
- hash: "dbca3bbd626c61d30731f84693bc939b"
+ hash: "4e2bea533c32eb60ce28494b71fa7fea"
}
Frame {
msec: 13904
- hash: "dbca3bbd626c61d30731f84693bc939b"
+ hash: "4e2bea533c32eb60ce28494b71fa7fea"
}
Frame {
msec: 13920
- hash: "dbca3bbd626c61d30731f84693bc939b"
+ hash: "4e2bea533c32eb60ce28494b71fa7fea"
}
Frame {
msec: 13936
- hash: "dbca3bbd626c61d30731f84693bc939b"
+ hash: "4e2bea533c32eb60ce28494b71fa7fea"
}
Frame {
msec: 13952
- hash: "dbca3bbd626c61d30731f84693bc939b"
+ hash: "4e2bea533c32eb60ce28494b71fa7fea"
}
Frame {
msec: 13968
- hash: "dbca3bbd626c61d30731f84693bc939b"
+ hash: "4e2bea533c32eb60ce28494b71fa7fea"
}
Frame {
msec: 13984
- hash: "dbca3bbd626c61d30731f84693bc939b"
+ hash: "4e2bea533c32eb60ce28494b71fa7fea"
}
Frame {
msec: 14000
- hash: "dbca3bbd626c61d30731f84693bc939b"
+ hash: "4e2bea533c32eb60ce28494b71fa7fea"
}
Frame {
msec: 14016
- hash: "dbca3bbd626c61d30731f84693bc939b"
+ hash: "4e2bea533c32eb60ce28494b71fa7fea"
}
Frame {
msec: 14032
- hash: "dbca3bbd626c61d30731f84693bc939b"
+ hash: "4e2bea533c32eb60ce28494b71fa7fea"
}
Frame {
msec: 14048
- hash: "dbca3bbd626c61d30731f84693bc939b"
+ hash: "4e2bea533c32eb60ce28494b71fa7fea"
}
Frame {
msec: 14064
- hash: "dbca3bbd626c61d30731f84693bc939b"
+ hash: "4e2bea533c32eb60ce28494b71fa7fea"
}
Frame {
msec: 14080
- hash: "dbca3bbd626c61d30731f84693bc939b"
+ hash: "4e2bea533c32eb60ce28494b71fa7fea"
}
Frame {
msec: 14096
- hash: "dbca3bbd626c61d30731f84693bc939b"
+ hash: "4e2bea533c32eb60ce28494b71fa7fea"
}
Frame {
msec: 14112
- hash: "dbca3bbd626c61d30731f84693bc939b"
+ hash: "4e2bea533c32eb60ce28494b71fa7fea"
}
Frame {
msec: 14128
- hash: "dbca3bbd626c61d30731f84693bc939b"
+ hash: "4e2bea533c32eb60ce28494b71fa7fea"
}
Frame {
msec: 14144
- hash: "dbca3bbd626c61d30731f84693bc939b"
+ hash: "4e2bea533c32eb60ce28494b71fa7fea"
}
Frame {
msec: 14160
- hash: "dbca3bbd626c61d30731f84693bc939b"
+ hash: "4e2bea533c32eb60ce28494b71fa7fea"
}
Frame {
msec: 14176
- hash: "dbca3bbd626c61d30731f84693bc939b"
+ hash: "4e2bea533c32eb60ce28494b71fa7fea"
}
Frame {
msec: 14192
- hash: "dbca3bbd626c61d30731f84693bc939b"
+ hash: "4e2bea533c32eb60ce28494b71fa7fea"
}
Frame {
msec: 14208
- hash: "dbca3bbd626c61d30731f84693bc939b"
+ hash: "4e2bea533c32eb60ce28494b71fa7fea"
}
Frame {
msec: 14224
- hash: "dbca3bbd626c61d30731f84693bc939b"
+ hash: "4e2bea533c32eb60ce28494b71fa7fea"
}
Frame {
msec: 14240
- hash: "dbca3bbd626c61d30731f84693bc939b"
+ hash: "4e2bea533c32eb60ce28494b71fa7fea"
}
Frame {
msec: 14256
- hash: "dbca3bbd626c61d30731f84693bc939b"
+ hash: "4e2bea533c32eb60ce28494b71fa7fea"
}
Frame {
msec: 14272
- hash: "dbca3bbd626c61d30731f84693bc939b"
+ hash: "4e2bea533c32eb60ce28494b71fa7fea"
}
Frame {
msec: 14288
- hash: "dbca3bbd626c61d30731f84693bc939b"
+ hash: "4e2bea533c32eb60ce28494b71fa7fea"
}
Frame {
msec: 14304
- hash: "dbca3bbd626c61d30731f84693bc939b"
+ hash: "4e2bea533c32eb60ce28494b71fa7fea"
}
Frame {
msec: 14320
- hash: "dbca3bbd626c61d30731f84693bc939b"
+ hash: "4e2bea533c32eb60ce28494b71fa7fea"
}
Frame {
msec: 14336
- hash: "dbca3bbd626c61d30731f84693bc939b"
+ hash: "4e2bea533c32eb60ce28494b71fa7fea"
}
Frame {
msec: 14352
- hash: "dbca3bbd626c61d30731f84693bc939b"
+ hash: "4e2bea533c32eb60ce28494b71fa7fea"
}
Frame {
msec: 14368
- hash: "dbca3bbd626c61d30731f84693bc939b"
+ hash: "4e2bea533c32eb60ce28494b71fa7fea"
}
Frame {
msec: 14384
- hash: "dbca3bbd626c61d30731f84693bc939b"
+ hash: "4e2bea533c32eb60ce28494b71fa7fea"
}
Frame {
msec: 14400
@@ -3902,34 +3902,34 @@ VisualTest {
}
Frame {
msec: 14416
- hash: "dbca3bbd626c61d30731f84693bc939b"
+ hash: "4e2bea533c32eb60ce28494b71fa7fea"
}
Frame {
msec: 14432
- hash: "dbca3bbd626c61d30731f84693bc939b"
+ hash: "4e2bea533c32eb60ce28494b71fa7fea"
}
Frame {
msec: 14448
- hash: "dbca3bbd626c61d30731f84693bc939b"
+ hash: "4e2bea533c32eb60ce28494b71fa7fea"
}
Frame {
msec: 14464
- hash: "dbca3bbd626c61d30731f84693bc939b"
+ hash: "4e2bea533c32eb60ce28494b71fa7fea"
}
Frame {
msec: 14480
- hash: "dbca3bbd626c61d30731f84693bc939b"
+ hash: "4e2bea533c32eb60ce28494b71fa7fea"
}
Frame {
msec: 14496
- hash: "dbca3bbd626c61d30731f84693bc939b"
+ hash: "4e2bea533c32eb60ce28494b71fa7fea"
}
Frame {
msec: 14512
- hash: "dbca3bbd626c61d30731f84693bc939b"
+ hash: "4e2bea533c32eb60ce28494b71fa7fea"
}
Frame {
msec: 14528
- hash: "dbca3bbd626c61d30731f84693bc939b"
+ hash: "4e2bea533c32eb60ce28494b71fa7fea"
}
}
diff --git a/tests/auto/declarative/visual/Package_Views/packageviews.qml b/tests/auto/declarative/visual/Package_Views/packageviews.qml
index a9719ca..ece6b88 100644
--- a/tests/auto/declarative/visual/Package_Views/packageviews.qml
+++ b/tests/auto/declarative/visual/Package_Views/packageviews.qml
@@ -17,6 +17,14 @@ Rectangle {
ListElement { itemColor: "yellow" }
ListElement { itemColor: "slategrey" }
ListElement { itemColor: "cyan" }
+ ListElement { itemColor: "red" }
+ ListElement { itemColor: "green" }
+ ListElement { itemColor: "blue" }
+ ListElement { itemColor: "orange" }
+ ListElement { itemColor: "purple" }
+ ListElement { itemColor: "yellow" }
+ ListElement { itemColor: "slategrey" }
+ ListElement { itemColor: "cyan" }
}
delegate: Package {
Rectangle {
diff --git a/tests/auto/declarative/visual/qmlmouseregion/data/mouseregion.0.png b/tests/auto/declarative/visual/qmlmouseregion/data/mouseregion.0.png
new file mode 100644
index 0000000..c249c21
--- /dev/null
+++ b/tests/auto/declarative/visual/qmlmouseregion/data/mouseregion.0.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qmlmouseregion/data/mouseregion.1.png b/tests/auto/declarative/visual/qmlmouseregion/data/mouseregion.1.png
new file mode 100644
index 0000000..c249c21
--- /dev/null
+++ b/tests/auto/declarative/visual/qmlmouseregion/data/mouseregion.1.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qmlmouseregion/data/mouseregion.10.png b/tests/auto/declarative/visual/qmlmouseregion/data/mouseregion.10.png
new file mode 100644
index 0000000..ca98574
--- /dev/null
+++ b/tests/auto/declarative/visual/qmlmouseregion/data/mouseregion.10.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qmlmouseregion/data/mouseregion.11.png b/tests/auto/declarative/visual/qmlmouseregion/data/mouseregion.11.png
new file mode 100644
index 0000000..7420ca7
--- /dev/null
+++ b/tests/auto/declarative/visual/qmlmouseregion/data/mouseregion.11.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qmlmouseregion/data/mouseregion.12.png b/tests/auto/declarative/visual/qmlmouseregion/data/mouseregion.12.png
new file mode 100644
index 0000000..e797cc9
--- /dev/null
+++ b/tests/auto/declarative/visual/qmlmouseregion/data/mouseregion.12.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qmlmouseregion/data/mouseregion.13.png b/tests/auto/declarative/visual/qmlmouseregion/data/mouseregion.13.png
new file mode 100644
index 0000000..96392e3
--- /dev/null
+++ b/tests/auto/declarative/visual/qmlmouseregion/data/mouseregion.13.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qmlmouseregion/data/mouseregion.14.png b/tests/auto/declarative/visual/qmlmouseregion/data/mouseregion.14.png
new file mode 100644
index 0000000..e797cc9
--- /dev/null
+++ b/tests/auto/declarative/visual/qmlmouseregion/data/mouseregion.14.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qmlmouseregion/data/mouseregion.15.png b/tests/auto/declarative/visual/qmlmouseregion/data/mouseregion.15.png
new file mode 100644
index 0000000..e797cc9
--- /dev/null
+++ b/tests/auto/declarative/visual/qmlmouseregion/data/mouseregion.15.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qmlmouseregion/data/mouseregion.16.png b/tests/auto/declarative/visual/qmlmouseregion/data/mouseregion.16.png
new file mode 100644
index 0000000..7951309
--- /dev/null
+++ b/tests/auto/declarative/visual/qmlmouseregion/data/mouseregion.16.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qmlmouseregion/data/mouseregion.17.png b/tests/auto/declarative/visual/qmlmouseregion/data/mouseregion.17.png
new file mode 100644
index 0000000..7951309
--- /dev/null
+++ b/tests/auto/declarative/visual/qmlmouseregion/data/mouseregion.17.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qmlmouseregion/data/mouseregion.18.png b/tests/auto/declarative/visual/qmlmouseregion/data/mouseregion.18.png
new file mode 100644
index 0000000..7951309
--- /dev/null
+++ b/tests/auto/declarative/visual/qmlmouseregion/data/mouseregion.18.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qmlmouseregion/data/mouseregion.19.png b/tests/auto/declarative/visual/qmlmouseregion/data/mouseregion.19.png
new file mode 100644
index 0000000..7951309
--- /dev/null
+++ b/tests/auto/declarative/visual/qmlmouseregion/data/mouseregion.19.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qmlmouseregion/data/mouseregion.2.png b/tests/auto/declarative/visual/qmlmouseregion/data/mouseregion.2.png
new file mode 100644
index 0000000..c249c21
--- /dev/null
+++ b/tests/auto/declarative/visual/qmlmouseregion/data/mouseregion.2.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qmlmouseregion/data/mouseregion.20.png b/tests/auto/declarative/visual/qmlmouseregion/data/mouseregion.20.png
new file mode 100644
index 0000000..7951309
--- /dev/null
+++ b/tests/auto/declarative/visual/qmlmouseregion/data/mouseregion.20.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qmlmouseregion/data/mouseregion.21.png b/tests/auto/declarative/visual/qmlmouseregion/data/mouseregion.21.png
new file mode 100644
index 0000000..7951309
--- /dev/null
+++ b/tests/auto/declarative/visual/qmlmouseregion/data/mouseregion.21.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qmlmouseregion/data/mouseregion.22.png b/tests/auto/declarative/visual/qmlmouseregion/data/mouseregion.22.png
new file mode 100644
index 0000000..7951309
--- /dev/null
+++ b/tests/auto/declarative/visual/qmlmouseregion/data/mouseregion.22.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qmlmouseregion/data/mouseregion.3.png b/tests/auto/declarative/visual/qmlmouseregion/data/mouseregion.3.png
new file mode 100644
index 0000000..c249c21
--- /dev/null
+++ b/tests/auto/declarative/visual/qmlmouseregion/data/mouseregion.3.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qmlmouseregion/data/mouseregion.4.png b/tests/auto/declarative/visual/qmlmouseregion/data/mouseregion.4.png
new file mode 100644
index 0000000..0801e57
--- /dev/null
+++ b/tests/auto/declarative/visual/qmlmouseregion/data/mouseregion.4.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qmlmouseregion/data/mouseregion.5.png b/tests/auto/declarative/visual/qmlmouseregion/data/mouseregion.5.png
new file mode 100644
index 0000000..0801e57
--- /dev/null
+++ b/tests/auto/declarative/visual/qmlmouseregion/data/mouseregion.5.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qmlmouseregion/data/mouseregion.6.png b/tests/auto/declarative/visual/qmlmouseregion/data/mouseregion.6.png
new file mode 100644
index 0000000..0801e57
--- /dev/null
+++ b/tests/auto/declarative/visual/qmlmouseregion/data/mouseregion.6.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qmlmouseregion/data/mouseregion.7.png b/tests/auto/declarative/visual/qmlmouseregion/data/mouseregion.7.png
new file mode 100644
index 0000000..50ae966
--- /dev/null
+++ b/tests/auto/declarative/visual/qmlmouseregion/data/mouseregion.7.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qmlmouseregion/data/mouseregion.8.png b/tests/auto/declarative/visual/qmlmouseregion/data/mouseregion.8.png
new file mode 100644
index 0000000..50ae966
--- /dev/null
+++ b/tests/auto/declarative/visual/qmlmouseregion/data/mouseregion.8.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qmlmouseregion/data/mouseregion.9.png b/tests/auto/declarative/visual/qmlmouseregion/data/mouseregion.9.png
new file mode 100644
index 0000000..50ae966
--- /dev/null
+++ b/tests/auto/declarative/visual/qmlmouseregion/data/mouseregion.9.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qmlmouseregion/data/mouseregion.qml b/tests/auto/declarative/visual/qmlmouseregion/data/mouseregion.qml
new file mode 100644
index 0000000..9b62da2
--- /dev/null
+++ b/tests/auto/declarative/visual/qmlmouseregion/data/mouseregion.qml
@@ -0,0 +1,7207 @@
+import Qt.VisualTest 4.6
+
+VisualTest {
+ Frame {
+ msec: 0
+ }
+ Frame {
+ msec: 16
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 32
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 48
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 64
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 80
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 96
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 112
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 128
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 144
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 160
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 176
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 192
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 208
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 224
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 240
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 256
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 272
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 288
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 304
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 320
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 336
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 352
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 368
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 384
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 400
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 416
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 432
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 448
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 464
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 480
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 496
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 512
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 528
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 544
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 560
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 576
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 592
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 608
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 624
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 640
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 656
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 672
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 688
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 704
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 720
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 736
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 752
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 768
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 784
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 800
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 816
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 832
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 848
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 864
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 880
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 896
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 912
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 928
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 944
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 960
+ image: "mouseregion.0.png"
+ }
+ Frame {
+ msec: 976
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 992
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 1008
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 1024
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 1040
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 1056
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 1072
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 1088
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 1104
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 1120
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 1136
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 1152
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 1168
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 1184
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 1200
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 1216
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 1232
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 1248
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 1264
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 1280
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 1296
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 1312
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 1328
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 1344
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 1360
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 1376
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 1392
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 1408
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 1424
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 1440
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 1456
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 1472
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 1488
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 1504
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 1520
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 1536
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 1552
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 1568
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 1584
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 1600
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 1616
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 52; y: 1
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1632
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 50; y: 3
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1648
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 47; y: 5
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 46; y: 7
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 44; y: 9
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1664
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 43; y: 11
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1680
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 41; y: 13
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 40; y: 14
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1696
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 39; y: 15
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1712
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 38; y: 16
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1728
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 1744
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 1760
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 1776
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 1792
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 1808
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 1824
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 38; y: 16
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1840
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 1856
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 1872
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 1888
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 1904
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 1920
+ image: "mouseregion.1.png"
+ }
+ Frame {
+ msec: 1936
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 1952
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 1968
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 38; y: 16
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1984
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 2000
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 2016
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 2032
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 2048
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 2064
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 2080
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 2096
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 2112
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 2128
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 2144
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 2160
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 2176
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 2192
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 2208
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 2224
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 2240
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 2256
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 2272
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 2288
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 2304
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 2320
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 2336
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Mouse {
+ type: 2
+ button: 2
+ buttons: 2
+ x: 38; y: 16
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 2352
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 2368
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 2384
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 2400
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 2416
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 2432
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 2448
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 2464
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 2480
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 2496
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Mouse {
+ type: 3
+ button: 2
+ buttons: 0
+ x: 38; y: 16
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 2512
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 2528
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 2544
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 2560
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 2576
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 2592
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 2608
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 2624
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 2640
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 2656
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 2672
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 2688
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 2704
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 38; y: 16
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 2720
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 2736
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 2752
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 2768
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 2784
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 2800
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 2816
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 2832
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 38; y: 16
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 2848
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 2864
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 2880
+ image: "mouseregion.2.png"
+ }
+ Frame {
+ msec: 2896
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 2912
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 2928
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 2944
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 2960
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 2976
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 2992
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 3008
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 3024
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 3040
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 41; y: 15
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 42; y: 15
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3056
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 44; y: 14
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 46; y: 14
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3072
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 49; y: 13
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3088
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 52; y: 13
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 55; y: 13
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3104
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 59; y: 12
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 65; y: 11
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3120
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 70; y: 11
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 76; y: 11
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3136
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 81; y: 11
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 86; y: 11
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3152
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 91; y: 11
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3168
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 95; y: 11
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 99; y: 12
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3184
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 103; y: 12
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 106; y: 12
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3200
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 110; y: 12
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3216
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 112; y: 12
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 116; y: 12
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 119; y: 12
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3232
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 121; y: 12
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 122; y: 12
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3248
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 123; y: 12
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3264
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 3280
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 3296
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 3312
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 124; y: 12
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3328
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 125; y: 12
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 128; y: 13
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3344
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 130; y: 13
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3360
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 133; y: 14
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 136; y: 14
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 138; y: 15
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3376
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 140; y: 15
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3392
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 141; y: 15
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3408
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 3424
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 3440
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 3456
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 3472
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 3488
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 3504
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 3520
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 3536
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 3552
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 3568
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 3584
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 3600
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 3616
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 3632
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 3648
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 3664
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 3680
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 3696
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 3712
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 141; y: 15
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3728
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 3744
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 3760
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 3776
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 3792
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 3808
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 141; y: 15
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3824
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 3840
+ image: "mouseregion.3.png"
+ }
+ Frame {
+ msec: 3856
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 3872
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 3888
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 3904
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 3920
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 3936
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 3952
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 3968
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 3984
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 4000
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 4016
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 4032
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 4048
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 4064
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 4080
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 4096
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 4112
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 4128
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 4144
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 4160
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 4176
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 4192
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 4208
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 4224
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 4240
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 4256
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 4272
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 4288
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 4304
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 4320
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 4336
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 4352
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 4368
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 4384
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 4400
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 4416
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 4432
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 4448
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 4464
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 4480
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 4496
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Mouse {
+ type: 2
+ button: 2
+ buttons: 2
+ x: 141; y: 15
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 4512
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 4528
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 4544
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 4560
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 4576
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Frame {
+ msec: 4592
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ }
+ Mouse {
+ type: 3
+ button: 2
+ buttons: 0
+ x: 141; y: 15
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 4608
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 4624
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 4640
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 4656
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 4672
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 4688
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 4704
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 4720
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 4736
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 4752
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 4768
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 4784
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 4800
+ image: "mouseregion.4.png"
+ }
+ Frame {
+ msec: 4816
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 4832
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 4848
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 4864
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 4880
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 4896
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 4912
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 4928
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 4944
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 4960
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 4976
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 4992
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 5008
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 5024
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 142; y: 15
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5040
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 145; y: 15
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 146; y: 15
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5056
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 148; y: 15
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 150; y: 15
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5072
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 153; y: 15
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 157; y: 15
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5088
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 160; y: 16
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 162; y: 16
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5104
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 165; y: 16
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 167; y: 16
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5120
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 170; y: 16
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5136
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 172; y: 16
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 174; y: 16
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5152
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 177; y: 16
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 179; y: 16
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5168
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 183; y: 16
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 185; y: 16
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5184
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 188; y: 16
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 190; y: 16
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5200
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 192; y: 16
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 194; y: 16
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5216
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 195; y: 15
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5232
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 196; y: 15
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 197; y: 15
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5248
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 198; y: 15
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 199; y: 15
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5264
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 201; y: 15
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 203; y: 14
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5280
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 205; y: 14
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 207; y: 14
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5296
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 209; y: 14
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5312
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 212; y: 14
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 215; y: 14
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 219; y: 14
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5328
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 222; y: 14
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5344
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 225; y: 14
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 228; y: 14
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5360
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 231; y: 14
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 232; y: 14
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5376
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 234; y: 15
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 235; y: 15
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5392
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 236; y: 15
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5408
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 237; y: 15
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5424
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 5440
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 5456
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 5472
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 5488
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 5504
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 238; y: 15
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5520
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 239; y: 15
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 239; y: 16
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5536
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 240; y: 16
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5552
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 5568
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 5584
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 5600
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 5616
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 5632
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 5648
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 5664
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 5680
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 5696
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 5712
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 5728
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 5744
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 5760
+ image: "mouseregion.5.png"
+ }
+ Frame {
+ msec: 5776
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 5792
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 5808
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 5824
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 240; y: 16
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5840
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 5856
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 5872
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 5888
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 5904
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 240; y: 16
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5920
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 5936
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 5952
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 5968
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 5984
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 6000
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 6016
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 6032
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 6048
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 6064
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 6080
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 6096
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 6112
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 6128
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 6144
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 6160
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 6176
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 6192
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 6208
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 6224
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 6240
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 6256
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 6272
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 6288
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 6304
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 6320
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 6336
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 6352
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 240; y: 16
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6368
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 6384
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 6400
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 6416
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 6432
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 6448
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 6464
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 6480
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 6496
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 6512
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 6528
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 6544
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 6560
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 6576
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 6592
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 6608
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 6624
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 6640
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 6656
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 6672
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 6688
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 6704
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 6720
+ image: "mouseregion.6.png"
+ }
+ Frame {
+ msec: 6736
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 6752
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 6768
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 6784
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 6800
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 6816
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 6832
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 6848
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 6864
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 6880
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 6896
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 6912
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 6928
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 6944
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 6960
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 6976
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 6992
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 7008
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 7024
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 7040
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 7056
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 7072
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 7088
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 7104
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 7120
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 7136
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 7152
+ hash: "601dffcd1937164bd33eec3bcc09c5f6"
+ }
+ Frame {
+ msec: 7168
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Frame {
+ msec: 7184
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Frame {
+ msec: 7200
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Frame {
+ msec: 7216
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Frame {
+ msec: 7232
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Frame {
+ msec: 7248
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Frame {
+ msec: 7264
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Frame {
+ msec: 7280
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Frame {
+ msec: 7296
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Frame {
+ msec: 7312
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Frame {
+ msec: 7328
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Frame {
+ msec: 7344
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Frame {
+ msec: 7360
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Frame {
+ msec: 7376
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Frame {
+ msec: 7392
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Frame {
+ msec: 7408
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Frame {
+ msec: 7424
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Frame {
+ msec: 7440
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Frame {
+ msec: 7456
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Frame {
+ msec: 7472
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Frame {
+ msec: 7488
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 240; y: 16
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 7504
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Frame {
+ msec: 7520
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Frame {
+ msec: 7536
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Frame {
+ msec: 7552
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Frame {
+ msec: 7568
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Frame {
+ msec: 7584
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Frame {
+ msec: 7600
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Frame {
+ msec: 7616
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Frame {
+ msec: 7632
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Frame {
+ msec: 7648
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Frame {
+ msec: 7664
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Frame {
+ msec: 7680
+ image: "mouseregion.7.png"
+ }
+ Frame {
+ msec: 7696
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Frame {
+ msec: 7712
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Frame {
+ msec: 7728
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Frame {
+ msec: 7744
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Frame {
+ msec: 7760
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Frame {
+ msec: 7776
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Frame {
+ msec: 7792
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Frame {
+ msec: 7808
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Frame {
+ msec: 7824
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 240; y: 17
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 242; y: 19
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 7840
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 246; y: 19
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 7856
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 250; y: 19
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 252; y: 19
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 7872
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 255; y: 19
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 257; y: 19
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 7888
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 259; y: 19
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 261; y: 19
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 7904
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 263; y: 19
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 265; y: 19
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 7920
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 268; y: 19
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 270; y: 19
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 7936
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 272; y: 19
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 7952
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 275; y: 19
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 277; y: 19
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 7968
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 280; y: 19
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 282; y: 19
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 7984
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 284; y: 19
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 286; y: 19
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 8000
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 289; y: 19
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 292; y: 19
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 8016
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 295; y: 19
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 298; y: 19
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 8032
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 303; y: 19
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 8048
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 307; y: 19
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 311; y: 19
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 314; y: 19
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 8064
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 317; y: 19
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 8080
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 320; y: 19
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 322; y: 19
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 8096
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 324; y: 19
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 326; y: 19
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 8112
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 327; y: 19
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 328; y: 20
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 8128
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 330; y: 20
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 8144
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 332; y: 20
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 335; y: 20
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 8160
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 337; y: 20
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 338; y: 20
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 8176
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 339; y: 20
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 8192
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Frame {
+ msec: 8208
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Frame {
+ msec: 8224
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Frame {
+ msec: 8240
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Frame {
+ msec: 8256
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Frame {
+ msec: 8272
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Frame {
+ msec: 8288
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Frame {
+ msec: 8304
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Frame {
+ msec: 8320
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Frame {
+ msec: 8336
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Frame {
+ msec: 8352
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Frame {
+ msec: 8368
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Frame {
+ msec: 8384
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Frame {
+ msec: 8400
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Frame {
+ msec: 8416
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Frame {
+ msec: 8432
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 339; y: 20
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 8448
+ hash: "28c4b317215bd47c7bb52be8bd36de2e"
+ }
+ Frame {
+ msec: 8464
+ hash: "28c4b317215bd47c7bb52be8bd36de2e"
+ }
+ Frame {
+ msec: 8480
+ hash: "28c4b317215bd47c7bb52be8bd36de2e"
+ }
+ Frame {
+ msec: 8496
+ hash: "28c4b317215bd47c7bb52be8bd36de2e"
+ }
+ Frame {
+ msec: 8512
+ hash: "28c4b317215bd47c7bb52be8bd36de2e"
+ }
+ Frame {
+ msec: 8528
+ hash: "28c4b317215bd47c7bb52be8bd36de2e"
+ }
+ Frame {
+ msec: 8544
+ hash: "28c4b317215bd47c7bb52be8bd36de2e"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 339; y: 20
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 8560
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Frame {
+ msec: 8576
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Frame {
+ msec: 8592
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Frame {
+ msec: 8608
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Frame {
+ msec: 8624
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Frame {
+ msec: 8640
+ image: "mouseregion.8.png"
+ }
+ Frame {
+ msec: 8656
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Frame {
+ msec: 8672
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Frame {
+ msec: 8688
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Frame {
+ msec: 8704
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Frame {
+ msec: 8720
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Frame {
+ msec: 8736
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Frame {
+ msec: 8752
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Frame {
+ msec: 8768
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Frame {
+ msec: 8784
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Frame {
+ msec: 8800
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Frame {
+ msec: 8816
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Frame {
+ msec: 8832
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Frame {
+ msec: 8848
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Frame {
+ msec: 8864
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Frame {
+ msec: 8880
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Frame {
+ msec: 8896
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Frame {
+ msec: 8912
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Frame {
+ msec: 8928
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Frame {
+ msec: 8944
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Frame {
+ msec: 8960
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Frame {
+ msec: 8976
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Frame {
+ msec: 8992
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Frame {
+ msec: 9008
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Frame {
+ msec: 9024
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Frame {
+ msec: 9040
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Frame {
+ msec: 9056
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Frame {
+ msec: 9072
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Frame {
+ msec: 9088
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Frame {
+ msec: 9104
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Frame {
+ msec: 9120
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Frame {
+ msec: 9136
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Frame {
+ msec: 9152
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Frame {
+ msec: 9168
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Frame {
+ msec: 9184
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Frame {
+ msec: 9200
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Frame {
+ msec: 9216
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Frame {
+ msec: 9232
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Frame {
+ msec: 9248
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 343; y: 20
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 341; y: 20
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9264
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 338; y: 20
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 332; y: 20
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9280
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 326; y: 20
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 319; y: 19
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9296
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 311; y: 19
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 304; y: 19
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9312
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 297; y: 19
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9328
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 292; y: 19
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 286; y: 19
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9344
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 281; y: 19
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 276; y: 19
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9360
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 272; y: 19
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9376
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 267; y: 19
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 264; y: 19
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 260; y: 19
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9392
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 256; y: 19
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9408
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 253; y: 19
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 251; y: 20
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9424
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 249; y: 20
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9440
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 247; y: 21
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 245; y: 21
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 242; y: 21
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9456
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 240; y: 22
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9472
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 237; y: 22
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 233; y: 23
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9488
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 230; y: 23
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 226; y: 24
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9504
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 222; y: 24
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 219; y: 24
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9520
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 215; y: 24
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 212; y: 24
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9536
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 208; y: 24
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9552
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 204; y: 24
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 200; y: 23
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9568
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 197; y: 23
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 194; y: 23
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9584
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 191; y: 23
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 188; y: 23
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9600
+ image: "mouseregion.9.png"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 184; y: 23
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9616
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 181; y: 23
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 177; y: 23
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9632
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 173; y: 23
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 170; y: 23
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9648
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 168; y: 23
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 166; y: 23
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9664
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 165; y: 23
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9680
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 163; y: 23
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 161; y: 23
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9696
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 160; y: 23
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9712
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 158; y: 23
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 156; y: 23
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9728
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 154; y: 23
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 152; y: 23
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9744
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 149; y: 24
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 146; y: 24
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9760
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 144; y: 26
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 142; y: 26
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9776
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 140; y: 27
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9792
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 138; y: 28
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 136; y: 30
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9808
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 134; y: 31
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9824
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 133; y: 32
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 132; y: 33
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 131; y: 34
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9840
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 130; y: 35
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9856
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 128; y: 36
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 126; y: 37
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9872
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 124; y: 37
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 122; y: 38
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9888
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 119; y: 38
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 117; y: 39
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9904
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 114; y: 40
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9920
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 112; y: 41
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 109; y: 42
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9936
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 107; y: 43
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 104; y: 44
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9952
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 102; y: 44
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 99; y: 45
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9968
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 97; y: 46
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 95; y: 46
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9984
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 93; y: 47
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 10000
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 92; y: 47
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 91; y: 47
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 10016
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 90; y: 47
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 10032
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 88; y: 48
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 87; y: 48
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 86; y: 48
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 10048
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 85; y: 49
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 10064
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 84; y: 49
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 82; y: 49
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 10080
+ hash: "8f117fb26412886b9b6e37b152dd05b2"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 82; y: 50
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 81; y: 50
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 10096
+ hash: "6627c7a1a4da7e642f4b4b24ca5e8e7a"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 79; y: 51
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 77; y: 51
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 10112
+ hash: "6627c7a1a4da7e642f4b4b24ca5e8e7a"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 76; y: 52
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 10128
+ hash: "6627c7a1a4da7e642f4b4b24ca5e8e7a"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 74; y: 53
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 73; y: 54
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 10144
+ hash: "6627c7a1a4da7e642f4b4b24ca5e8e7a"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 72; y: 54
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 71; y: 55
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 10160
+ hash: "6627c7a1a4da7e642f4b4b24ca5e8e7a"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 70; y: 55
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 69; y: 56
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 10176
+ hash: "6627c7a1a4da7e642f4b4b24ca5e8e7a"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 68; y: 57
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 10192
+ hash: "6627c7a1a4da7e642f4b4b24ca5e8e7a"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 67; y: 58
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 66; y: 58
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 10208
+ hash: "6627c7a1a4da7e642f4b4b24ca5e8e7a"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 65; y: 59
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 64; y: 60
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 10224
+ hash: "6627c7a1a4da7e642f4b4b24ca5e8e7a"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 63; y: 60
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 10240
+ hash: "6627c7a1a4da7e642f4b4b24ca5e8e7a"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 62; y: 61
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 60; y: 62
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 10256
+ hash: "6627c7a1a4da7e642f4b4b24ca5e8e7a"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 59; y: 63
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 10272
+ hash: "6627c7a1a4da7e642f4b4b24ca5e8e7a"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 58; y: 64
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 57; y: 64
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 57; y: 65
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 10288
+ hash: "6627c7a1a4da7e642f4b4b24ca5e8e7a"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 56; y: 66
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 10304
+ hash: "6627c7a1a4da7e642f4b4b24ca5e8e7a"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 55; y: 66
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 54; y: 67
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 10320
+ hash: "6627c7a1a4da7e642f4b4b24ca5e8e7a"
+ }
+ Frame {
+ msec: 10336
+ hash: "6627c7a1a4da7e642f4b4b24ca5e8e7a"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 53; y: 68
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 52; y: 69
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 10352
+ hash: "6627c7a1a4da7e642f4b4b24ca5e8e7a"
+ }
+ Frame {
+ msec: 10368
+ hash: "6627c7a1a4da7e642f4b4b24ca5e8e7a"
+ }
+ Frame {
+ msec: 10384
+ hash: "6627c7a1a4da7e642f4b4b24ca5e8e7a"
+ }
+ Frame {
+ msec: 10400
+ hash: "6627c7a1a4da7e642f4b4b24ca5e8e7a"
+ }
+ Frame {
+ msec: 10416
+ hash: "6627c7a1a4da7e642f4b4b24ca5e8e7a"
+ }
+ Frame {
+ msec: 10432
+ hash: "6627c7a1a4da7e642f4b4b24ca5e8e7a"
+ }
+ Frame {
+ msec: 10448
+ hash: "6627c7a1a4da7e642f4b4b24ca5e8e7a"
+ }
+ Frame {
+ msec: 10464
+ hash: "6627c7a1a4da7e642f4b4b24ca5e8e7a"
+ }
+ Frame {
+ msec: 10480
+ hash: "6627c7a1a4da7e642f4b4b24ca5e8e7a"
+ }
+ Frame {
+ msec: 10496
+ hash: "6627c7a1a4da7e642f4b4b24ca5e8e7a"
+ }
+ Frame {
+ msec: 10512
+ hash: "6627c7a1a4da7e642f4b4b24ca5e8e7a"
+ }
+ Frame {
+ msec: 10528
+ hash: "6627c7a1a4da7e642f4b4b24ca5e8e7a"
+ }
+ Frame {
+ msec: 10544
+ hash: "6627c7a1a4da7e642f4b4b24ca5e8e7a"
+ }
+ Frame {
+ msec: 10560
+ image: "mouseregion.10.png"
+ }
+ Frame {
+ msec: 10576
+ hash: "6627c7a1a4da7e642f4b4b24ca5e8e7a"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 51; y: 69
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 51; y: 68
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 10592
+ hash: "6627c7a1a4da7e642f4b4b24ca5e8e7a"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 51; y: 67
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 10608
+ hash: "6627c7a1a4da7e642f4b4b24ca5e8e7a"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 51; y: 66
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 51; y: 65
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 10624
+ hash: "6627c7a1a4da7e642f4b4b24ca5e8e7a"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 51; y: 64
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 51; y: 62
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 10640
+ hash: "6627c7a1a4da7e642f4b4b24ca5e8e7a"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 51; y: 60
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 51; y: 59
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 10656
+ hash: "6627c7a1a4da7e642f4b4b24ca5e8e7a"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 51; y: 57
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 51; y: 55
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 10672
+ hash: "6627c7a1a4da7e642f4b4b24ca5e8e7a"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 51; y: 54
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 10688
+ hash: "6627c7a1a4da7e642f4b4b24ca5e8e7a"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 51; y: 53
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 51; y: 51
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 10704
+ hash: "6627c7a1a4da7e642f4b4b24ca5e8e7a"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 51; y: 50
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 51; y: 48
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 10720
+ hash: "194ebac4ae7d95bf427f8161885a13e1"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 51; y: 46
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 51; y: 44
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 10736
+ hash: "194ebac4ae7d95bf427f8161885a13e1"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 51; y: 43
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 51; y: 42
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 10752
+ hash: "194ebac4ae7d95bf427f8161885a13e1"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 51; y: 40
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 10768
+ hash: "194ebac4ae7d95bf427f8161885a13e1"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 51; y: 39
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 10784
+ hash: "194ebac4ae7d95bf427f8161885a13e1"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 51; y: 38
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 10800
+ hash: "194ebac4ae7d95bf427f8161885a13e1"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 51; y: 37
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 10816
+ hash: "194ebac4ae7d95bf427f8161885a13e1"
+ }
+ Frame {
+ msec: 10832
+ hash: "194ebac4ae7d95bf427f8161885a13e1"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 51; y: 36
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 51; y: 35
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 10848
+ hash: "194ebac4ae7d95bf427f8161885a13e1"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 51; y: 34
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 10864
+ hash: "194ebac4ae7d95bf427f8161885a13e1"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 51; y: 33
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 10880
+ hash: "194ebac4ae7d95bf427f8161885a13e1"
+ }
+ Frame {
+ msec: 10896
+ hash: "194ebac4ae7d95bf427f8161885a13e1"
+ }
+ Frame {
+ msec: 10912
+ hash: "194ebac4ae7d95bf427f8161885a13e1"
+ }
+ Frame {
+ msec: 10928
+ hash: "194ebac4ae7d95bf427f8161885a13e1"
+ }
+ Frame {
+ msec: 10944
+ hash: "194ebac4ae7d95bf427f8161885a13e1"
+ }
+ Frame {
+ msec: 10960
+ hash: "194ebac4ae7d95bf427f8161885a13e1"
+ }
+ Frame {
+ msec: 10976
+ hash: "194ebac4ae7d95bf427f8161885a13e1"
+ }
+ Frame {
+ msec: 10992
+ hash: "194ebac4ae7d95bf427f8161885a13e1"
+ }
+ Frame {
+ msec: 11008
+ hash: "194ebac4ae7d95bf427f8161885a13e1"
+ }
+ Frame {
+ msec: 11024
+ hash: "194ebac4ae7d95bf427f8161885a13e1"
+ }
+ Frame {
+ msec: 11040
+ hash: "194ebac4ae7d95bf427f8161885a13e1"
+ }
+ Frame {
+ msec: 11056
+ hash: "194ebac4ae7d95bf427f8161885a13e1"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 51; y: 32
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 11072
+ hash: "194ebac4ae7d95bf427f8161885a13e1"
+ }
+ Frame {
+ msec: 11088
+ hash: "194ebac4ae7d95bf427f8161885a13e1"
+ }
+ Frame {
+ msec: 11104
+ hash: "194ebac4ae7d95bf427f8161885a13e1"
+ }
+ Frame {
+ msec: 11120
+ hash: "194ebac4ae7d95bf427f8161885a13e1"
+ }
+ Frame {
+ msec: 11136
+ hash: "194ebac4ae7d95bf427f8161885a13e1"
+ }
+ Frame {
+ msec: 11152
+ hash: "194ebac4ae7d95bf427f8161885a13e1"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 52; y: 32
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 53; y: 31
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 11168
+ hash: "194ebac4ae7d95bf427f8161885a13e1"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 55; y: 31
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 11184
+ hash: "194ebac4ae7d95bf427f8161885a13e1"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 57; y: 31
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 59; y: 31
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 11200
+ hash: "194ebac4ae7d95bf427f8161885a13e1"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 62; y: 31
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 66; y: 31
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 11216
+ hash: "194ebac4ae7d95bf427f8161885a13e1"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 70; y: 31
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 74; y: 31
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 11232
+ hash: "194ebac4ae7d95bf427f8161885a13e1"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 78; y: 31
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 11248
+ hash: "194ebac4ae7d95bf427f8161885a13e1"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 80; y: 31
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 83; y: 31
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 85; y: 31
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 11264
+ hash: "194ebac4ae7d95bf427f8161885a13e1"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 87; y: 31
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 88; y: 31
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 11280
+ hash: "194ebac4ae7d95bf427f8161885a13e1"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 90; y: 31
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 11296
+ hash: "194ebac4ae7d95bf427f8161885a13e1"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 92; y: 31
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 94; y: 31
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 11312
+ hash: "194ebac4ae7d95bf427f8161885a13e1"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 97; y: 31
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 100; y: 31
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 11328
+ hash: "194ebac4ae7d95bf427f8161885a13e1"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 104; y: 31
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 108; y: 31
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 11344
+ hash: "194ebac4ae7d95bf427f8161885a13e1"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 111; y: 31
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 115; y: 31
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 11360
+ hash: "194ebac4ae7d95bf427f8161885a13e1"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 117; y: 32
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 11376
+ hash: "194ebac4ae7d95bf427f8161885a13e1"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 120; y: 33
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 122; y: 33
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 11392
+ hash: "194ebac4ae7d95bf427f8161885a13e1"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 124; y: 34
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 125; y: 34
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 11408
+ hash: "194ebac4ae7d95bf427f8161885a13e1"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 126; y: 34
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 11424
+ hash: "194ebac4ae7d95bf427f8161885a13e1"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 128; y: 34
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 128; y: 35
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 129; y: 35
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 11440
+ hash: "194ebac4ae7d95bf427f8161885a13e1"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 130; y: 36
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 11456
+ hash: "194ebac4ae7d95bf427f8161885a13e1"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 132; y: 36
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 134; y: 37
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 11472
+ hash: "194ebac4ae7d95bf427f8161885a13e1"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 135; y: 38
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 11488
+ hash: "194ebac4ae7d95bf427f8161885a13e1"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 136; y: 39
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 138; y: 40
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 139; y: 41
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 11504
+ hash: "194ebac4ae7d95bf427f8161885a13e1"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 141; y: 43
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 11520
+ image: "mouseregion.11.png"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 142; y: 44
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 143; y: 46
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 11536
+ hash: "194ebac4ae7d95bf427f8161885a13e1"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 144; y: 48
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 146; y: 49
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 11552
+ hash: "194ebac4ae7d95bf427f8161885a13e1"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 147; y: 52
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 148; y: 54
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 11568
+ hash: "194ebac4ae7d95bf427f8161885a13e1"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 149; y: 57
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 149; y: 59
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 11584
+ hash: "194ebac4ae7d95bf427f8161885a13e1"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 150; y: 61
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 11600
+ hash: "194ebac4ae7d95bf427f8161885a13e1"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 151; y: 62
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 151; y: 64
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 11616
+ hash: "194ebac4ae7d95bf427f8161885a13e1"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 151; y: 65
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 11632
+ hash: "194ebac4ae7d95bf427f8161885a13e1"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 151; y: 66
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 11648
+ hash: "194ebac4ae7d95bf427f8161885a13e1"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 151; y: 67
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 11664
+ hash: "194ebac4ae7d95bf427f8161885a13e1"
+ }
+ Frame {
+ msec: 11680
+ hash: "194ebac4ae7d95bf427f8161885a13e1"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 151; y: 68
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 11696
+ hash: "194ebac4ae7d95bf427f8161885a13e1"
+ }
+ Frame {
+ msec: 11712
+ hash: "194ebac4ae7d95bf427f8161885a13e1"
+ }
+ Frame {
+ msec: 11728
+ hash: "194ebac4ae7d95bf427f8161885a13e1"
+ }
+ Frame {
+ msec: 11744
+ hash: "194ebac4ae7d95bf427f8161885a13e1"
+ }
+ Frame {
+ msec: 11760
+ hash: "194ebac4ae7d95bf427f8161885a13e1"
+ }
+ Frame {
+ msec: 11776
+ hash: "194ebac4ae7d95bf427f8161885a13e1"
+ }
+ Frame {
+ msec: 11792
+ hash: "194ebac4ae7d95bf427f8161885a13e1"
+ }
+ Frame {
+ msec: 11808
+ hash: "194ebac4ae7d95bf427f8161885a13e1"
+ }
+ Frame {
+ msec: 11824
+ hash: "194ebac4ae7d95bf427f8161885a13e1"
+ }
+ Frame {
+ msec: 11840
+ hash: "194ebac4ae7d95bf427f8161885a13e1"
+ }
+ Frame {
+ msec: 11856
+ hash: "194ebac4ae7d95bf427f8161885a13e1"
+ }
+ Frame {
+ msec: 11872
+ hash: "194ebac4ae7d95bf427f8161885a13e1"
+ }
+ Frame {
+ msec: 11888
+ hash: "194ebac4ae7d95bf427f8161885a13e1"
+ }
+ Frame {
+ msec: 11904
+ hash: "194ebac4ae7d95bf427f8161885a13e1"
+ }
+ Frame {
+ msec: 11920
+ hash: "194ebac4ae7d95bf427f8161885a13e1"
+ }
+ Frame {
+ msec: 11936
+ hash: "194ebac4ae7d95bf427f8161885a13e1"
+ }
+ Frame {
+ msec: 11952
+ hash: "194ebac4ae7d95bf427f8161885a13e1"
+ }
+ Frame {
+ msec: 11968
+ hash: "194ebac4ae7d95bf427f8161885a13e1"
+ }
+ Frame {
+ msec: 11984
+ hash: "194ebac4ae7d95bf427f8161885a13e1"
+ }
+ Frame {
+ msec: 12000
+ hash: "194ebac4ae7d95bf427f8161885a13e1"
+ }
+ Frame {
+ msec: 12016
+ hash: "194ebac4ae7d95bf427f8161885a13e1"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 151; y: 68
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 12032
+ hash: "194ebac4ae7d95bf427f8161885a13e1"
+ }
+ Frame {
+ msec: 12048
+ hash: "194ebac4ae7d95bf427f8161885a13e1"
+ }
+ Frame {
+ msec: 12064
+ hash: "194ebac4ae7d95bf427f8161885a13e1"
+ }
+ Frame {
+ msec: 12080
+ hash: "194ebac4ae7d95bf427f8161885a13e1"
+ }
+ Frame {
+ msec: 12096
+ hash: "194ebac4ae7d95bf427f8161885a13e1"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 151; y: 68
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 12112
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 12128
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 12144
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 12160
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 12176
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 12192
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 12208
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 12224
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 12240
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 12256
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 12272
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 12288
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 12304
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 12320
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 12336
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 12352
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 12368
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 12384
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 12400
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 12416
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 12432
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 12448
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 12464
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 12480
+ image: "mouseregion.12.png"
+ }
+ Frame {
+ msec: 12496
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 12512
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 12528
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 12544
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 12560
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 12576
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 12592
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 12608
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 12624
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 12640
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 12656
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 12672
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 12688
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 12704
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 12720
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 12736
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 12752
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 12768
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 12784
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 12800
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 12816
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 12832
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 12848
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 12864
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 12880
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 12896
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 12912
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 12928
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 12944
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 12960
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 12976
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 12992
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 13008
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 13024
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 13040
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 13056
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 13072
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 13088
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 13104
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 13120
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 13136
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 13152
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 13168
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 13184
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 13200
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 13216
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 13232
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 151; y: 68
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 13248
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 13264
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 13280
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 151; y: 68
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 13296
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 13312
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 13328
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 13344
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 13360
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 13376
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Mouse {
+ type: 4
+ button: 1
+ buttons: 1
+ x: 151; y: 68
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 13392
+ hash: "484e280fc550de3c4de0a5f664031e21"
+ }
+ Frame {
+ msec: 13408
+ hash: "484e280fc550de3c4de0a5f664031e21"
+ }
+ Frame {
+ msec: 13424
+ hash: "484e280fc550de3c4de0a5f664031e21"
+ }
+ Frame {
+ msec: 13440
+ image: "mouseregion.13.png"
+ }
+ Frame {
+ msec: 13456
+ hash: "484e280fc550de3c4de0a5f664031e21"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 151; y: 68
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 13472
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 13488
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 13504
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 13520
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 13536
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 13552
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 13568
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 13584
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 13600
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 13616
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 13632
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 13648
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 13664
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 13680
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 13696
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 13712
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 13728
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 13744
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 13760
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 13776
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 13792
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 13808
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 13824
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 13840
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 13856
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 13872
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 13888
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 13904
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 13920
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 13936
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 13952
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 13968
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 13984
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 14000
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 14016
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 14032
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 14048
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 14064
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 14080
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 14096
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 14112
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 14128
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 14144
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 14160
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 14176
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 14192
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 14208
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 14224
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 14240
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 14256
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 14272
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 14288
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 14304
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 14320
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 14336
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 14352
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 152; y: 68
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 14368
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 155; y: 67
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 158; y: 66
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 14384
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 162; y: 64
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 166; y: 63
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 14400
+ image: "mouseregion.14.png"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 171; y: 61
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 177; y: 59
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 14416
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 182; y: 58
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 186; y: 58
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 14432
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 191; y: 57
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 197; y: 56
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 14448
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 202; y: 55
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 14464
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 206; y: 54
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 211; y: 53
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 14480
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 215; y: 52
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 14496
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 218; y: 51
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 222; y: 50
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 226; y: 48
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 14512
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 229; y: 47
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 14528
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 233; y: 45
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 237; y: 44
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 14544
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 242; y: 42
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 247; y: 40
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 14560
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 252; y: 39
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 14576
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 257; y: 37
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 261; y: 35
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 265; y: 34
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 14592
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 269; y: 32
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 272; y: 31
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 14608
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 275; y: 30
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 279; y: 29
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 14624
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 281; y: 28
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 14640
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 285; y: 28
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 287; y: 27
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 14656
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 291; y: 27
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 294; y: 26
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 14672
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 299; y: 25
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 14688
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 303; y: 25
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 306; y: 24
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 14704
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 310; y: 23
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 314; y: 21
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 14720
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 318; y: 19
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 321; y: 17
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 14736
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 323; y: 15
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 326; y: 14
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 14752
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 328; y: 12
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 331; y: 11
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 14768
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 334; y: 10
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 14784
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 337; y: 9
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 340; y: 8
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 14800
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 342; y: 7
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 345; y: 5
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 14816
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 348; y: 3
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 351; y: 0
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 14832
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 14848
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 14864
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 14880
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 14896
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 14912
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 14928
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 14944
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 14960
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 14976
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 14992
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 15008
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 15024
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 15040
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 15056
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 15072
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 15088
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 15104
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 15120
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 15136
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 15152
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 15168
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 15184
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 15200
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 15216
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 15232
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 15248
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 15264
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 15280
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 15296
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 15312
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 15328
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 15344
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 15360
+ image: "mouseregion.15.png"
+ }
+ Frame {
+ msec: 15376
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 15392
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 15408
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 15424
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 15440
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 15456
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 15472
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 15488
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 15504
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 15520
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 15536
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+ Frame {
+ msec: 15552
+ hash: "32b1a05d3c6a7c219cc36bbf0c7d3da8"
+ }
+}
diff --git a/tests/auto/declarative/visual/qmlmouseregion/mouseregion.qml b/tests/auto/declarative/visual/qmlmouseregion/mouseregion.qml
new file mode 100644
index 0000000..3bd1812
--- /dev/null
+++ b/tests/auto/declarative/visual/qmlmouseregion/mouseregion.qml
@@ -0,0 +1,107 @@
+import Qt 4.6
+
+Rectangle {
+ id: root
+ width: 400
+ height: 100
+
+ // Left click on me
+ Rectangle {
+ width: 98; height: 48
+ color: "red"
+ MouseRegion {
+ id: mr1
+ anchors.fill: parent
+ enabled: false
+ onClicked: { parent.color = "blue"; root.error = "mr1 should ignore presses"; }
+ }
+ }
+
+ // Left click, then right click
+ Rectangle {
+ x: 100
+ width: 98; height: 48
+ color: "red"
+ MouseRegion {
+ id: mr2
+ anchors.fill: parent
+ acceptedButtons: Qt.RightButton
+ onClicked: {
+ if (mouse.button == Qt.RightButton) {
+ parent.color = "blue";
+ } else {
+ parent.color = "green";
+ root.error = "mr1 should ignore presses";
+ }
+ }
+ }
+ }
+
+ // press and hold me
+ Rectangle {
+ x: 200
+ width: 98; height: 48
+ color: "red"
+ MouseRegion {
+ id: mr3
+ anchors.fill: parent
+ onPressAndHold: {
+ parent.color = "blue";
+ }
+ }
+ }
+
+ // click me
+ Rectangle {
+ x: 300
+ width: 98; height: 48
+ color: "red"
+ MouseRegion {
+ id: mr4
+ anchors.fill: parent
+ onPressed: {
+ parent.color = "blue";
+ }
+ onReleased: {
+ parent.color = "red";
+ }
+ }
+ }
+
+ // move into and out of me
+ Rectangle {
+ x: 0
+ y: 50
+ width: 98; height: 48
+ color: "red"
+ MouseRegion {
+ id: mr5
+ anchors.fill: parent
+ hoverEnabled: true
+ onEntered: {
+ parent.color = "blue";
+ }
+ onExited: {
+ parent.color = "green";
+ }
+ }
+ }
+
+ // click, then double click me
+ Rectangle {
+ x: 100
+ y: 50
+ width: 98; height: 48
+ color: "red"
+ MouseRegion {
+ id: mr6
+ anchors.fill: parent
+ onClicked: {
+ parent.color = "blue";
+ }
+ onDoubleClicked: {
+ parent.color = "green";
+ }
+ }
+ }
+}