From 67e42ba2eb8ab2115e929791cb67a8e9ba413e80 Mon Sep 17 00:00:00 2001 From: Aaron Kennedy Date: Thu, 12 Nov 2009 18:02:05 +1000 Subject: Qt.md5() method --- doc/src/declarative/globalobject.qdoc | 4 ++++ src/declarative/qml/qmlengine.cpp | 14 ++++++++++++++ src/declarative/qml/qmlengine_p.h | 1 + tests/auto/declarative/qmlqt/tst_qmlqt.cpp | 15 +++++++++++++++ 4 files changed, 34 insertions(+) diff --git a/doc/src/declarative/globalobject.qdoc b/doc/src/declarative/globalobject.qdoc index 06f6bdc..3cf1ca3 100644 --- a/doc/src/declarative/globalobject.qdoc +++ b/doc/src/declarative/globalobject.qdoc @@ -122,6 +122,10 @@ This function plays the audio file located at \c soundLocation. Only .wav files \section3 Qt.openUrlExternally(url target) This function attempts to open the specified \c target url in an external application, based on the user's desktop preferences. It will return true if it succeeds, and false otherwise. + +\section3 Qt.md5(data) +This function returns a hex string of the md5 hash of \c data. + \endlist \section1 Dynamic Object Creation diff --git a/src/declarative/qml/qmlengine.cpp b/src/declarative/qml/qmlengine.cpp index 177818f..53febf5 100644 --- a/src/declarative/qml/qmlengine.cpp +++ b/src/declarative/qml/qmlengine.cpp @@ -88,6 +88,7 @@ #include #include #include +#include #ifdef Q_OS_WIN // for %APPDATA% #include "qt_windows.h" @@ -150,6 +151,7 @@ QmlEnginePrivate::QmlEnginePrivate(QmlEngine *e) qtObject.setProperty(QLatin1String("closestAngle"), scriptEngine.newFunction(QmlEnginePrivate::closestAngle, 2)); qtObject.setProperty(QLatin1String("playSound"), scriptEngine.newFunction(QmlEnginePrivate::playSound, 1)); qtObject.setProperty(QLatin1String("openUrlExternally"),scriptEngine.newFunction(desktopOpenUrl, 1)); + qtObject.setProperty(QLatin1String("md5"),scriptEngine.newFunction(md5, 1)); scriptEngine.globalObject().setProperty(QLatin1String("createQmlObject"), scriptEngine.newFunction(QmlEnginePrivate::createQmlObject, 1)); @@ -816,6 +818,18 @@ QScriptValue QmlEnginePrivate::desktopOpenUrl(QScriptContext *ctxt, QScriptEngin return e->newVariant(QVariant(ret)); } +QScriptValue QmlEnginePrivate::md5(QScriptContext *ctxt, QScriptEngine *e) +{ + QByteArray data; + + if (ctxt->argumentCount() >= 1) + data = ctxt->argument(0).toString().toUtf8(); + + QByteArray result = QCryptographicHash::hash(data, QCryptographicHash::Md5); + + return QScriptValue(QLatin1String(result.toHex())); +} + QScriptValue QmlEnginePrivate::closestAngle(QScriptContext *ctxt, QScriptEngine *e) { if(ctxt->argumentCount() < 2) diff --git a/src/declarative/qml/qmlengine_p.h b/src/declarative/qml/qmlengine_p.h index 3c60b5c..5b4e884 100644 --- a/src/declarative/qml/qmlengine_p.h +++ b/src/declarative/qml/qmlengine_p.h @@ -272,6 +272,7 @@ public: static QScriptValue closestAngle(QScriptContext*, QScriptEngine*); static QScriptValue playSound(QScriptContext*, QScriptEngine*); static QScriptValue desktopOpenUrl(QScriptContext*, QScriptEngine*); + static QScriptValue md5(QScriptContext*, QScriptEngine*); static QScriptEngine *getScriptEngine(QmlEngine *e) { return &e->d_func()->scriptEngine; } static QmlEngine *getEngine(QScriptEngine *e) { return static_cast(e)->p->q_func(); } diff --git a/tests/auto/declarative/qmlqt/tst_qmlqt.cpp b/tests/auto/declarative/qmlqt/tst_qmlqt.cpp index e9c9052..13f4904 100644 --- a/tests/auto/declarative/qmlqt/tst_qmlqt.cpp +++ b/tests/auto/declarative/qmlqt/tst_qmlqt.cpp @@ -46,6 +46,7 @@ #include #include #include +#include class tst_qmlqt : public QObject { @@ -67,6 +68,7 @@ private slots: void closestAngle(); void playSound(); void openUrlExternally(); + void md5(); private: QmlEngine engine; @@ -279,6 +281,19 @@ void tst_qmlqt::openUrlExternally() QVERIFY(false); } +void tst_qmlqt::md5() +{ + QmlComponent component(&engine, TEST_FILE("md5.qml")); + QObject *object = component.create(); + QVERIFY(object != 0); + + QCOMPARE(object->property("test1").toString(), QLatin1String(QCryptographicHash::hash(QByteArray(), QCryptographicHash::Md5).toHex())); + QCOMPARE(object->property("test2").toString(), QLatin1String(QCryptographicHash::hash("Hello World", QCryptographicHash::Md5).toHex())); + + delete object; +} + + QTEST_MAIN(tst_qmlqt) #include "tst_qmlqt.moc" -- cgit v0.12 From 588c7e44bcd724765b620e3b0c64af59d83c8ac5 Mon Sep 17 00:00:00 2001 From: Aaron Kennedy Date: Thu, 12 Nov 2009 18:22:35 +1000 Subject: Compile --- tests/auto/declarative/qmlpropertymap/tst_qmlpropertymap.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/auto/declarative/qmlpropertymap/tst_qmlpropertymap.cpp b/tests/auto/declarative/qmlpropertymap/tst_qmlpropertymap.cpp index ece6030..fe2658c 100644 --- a/tests/auto/declarative/qmlpropertymap/tst_qmlpropertymap.cpp +++ b/tests/auto/declarative/qmlpropertymap/tst_qmlpropertymap.cpp @@ -41,7 +41,7 @@ #include #include #include -#include +#include #include #include #include -- cgit v0.12 From 652e43ddbc4bf32b8c5f634a47a883f7029fd890 Mon Sep 17 00:00:00 2001 From: Aaron Kennedy Date: Fri, 13 Nov 2009 10:44:15 +1000 Subject: XMLHttpRequest tests --- src/declarative/qml/qmlxmlhttprequest.cpp | 11 ++--- .../auto/declarative/xmlhttprequest/data/text.qml | 56 ++++++++++++++++++++++ .../auto/declarative/xmlhttprequest/data/text.xml | 1 + .../xmlhttprequest/tst_xmlhttprequest.cpp | 14 ++++++ 4 files changed, 75 insertions(+), 7 deletions(-) create mode 100644 tests/auto/declarative/xmlhttprequest/data/text.qml create mode 100644 tests/auto/declarative/xmlhttprequest/data/text.xml diff --git a/src/declarative/qml/qmlxmlhttprequest.cpp b/src/declarative/qml/qmlxmlhttprequest.cpp index a6cdfb1..1e9ad50 100644 --- a/src/declarative/qml/qmlxmlhttprequest.cpp +++ b/src/declarative/qml/qmlxmlhttprequest.cpp @@ -465,12 +465,11 @@ QScriptValue Node::create(QScriptEngine *engine, NodeImpl *data) case NodeImpl::Entity: case NodeImpl::EntityReference: case NodeImpl::Notation: + case NodeImpl::ProcessingInstruction: + return QScriptValue(); case NodeImpl::CDATA: instance.setPrototype(CDATA::prototype(engine)); break; - case NodeImpl::ProcessingInstruction: - instance.setPrototype(Node::prototype(engine)); - break; case NodeImpl::Text: instance.setPrototype(Text::prototype(engine)); break; @@ -556,8 +555,7 @@ QScriptValue Text::isElementContentWhitespace(QScriptContext *context, QScriptEn Node node = qscriptvalue_cast(context->thisObject()); if (node.isNull()) return engine->undefinedValue(); - // ### implement - return QScriptValue(false); + return node.d->data.trimmed().isEmpty(); } QScriptValue Text::wholeText(QScriptContext *context, QScriptEngine *engine) @@ -565,8 +563,7 @@ QScriptValue Text::wholeText(QScriptContext *context, QScriptEngine *engine) Node node = qscriptvalue_cast(context->thisObject()); if (node.isNull()) return engine->undefinedValue(); - // ### implement - return QScriptValue(QString()); + return node.d->data; } QScriptValue Text::prototype(QScriptEngine *engine) diff --git a/tests/auto/declarative/xmlhttprequest/data/text.qml b/tests/auto/declarative/xmlhttprequest/data/text.qml new file mode 100644 index 0000000..b64f80b --- /dev/null +++ b/tests/auto/declarative/xmlhttprequest/data/text.qml @@ -0,0 +1,56 @@ +import Qt 4.6 + +Object { + property bool xmlTest: false + property bool dataOK: false + + Script { + function checkText(text, whitespacetext) + { + if (text.wholeText != "Hello world!") + return; + + if (text.isElementContentWhitespace != false) + return; + + if (whitespacetext.wholeText != " ") + return; + + if (whitespacetext.isElementContentWhitespace != true) + return; + + xmlTest = true; + } + + function checkXML(document) + { + checkText(document.documentElement.childNodes[0].childNodes[0], + document.documentElement.childNodes[1].childNodes[0]); + + } + } + + Component.onCompleted: { + var x = new XMLHttpRequest; + + x.open("GET", "text.xml"); + + // Test to the end + x.onreadystatechange = function() { + if (x.readyState == XMLHttpRequest.DONE) { + + dataOK = true; + + if (x.responseXML != null) + checkXML(x.responseXML); + + } + } + + x.send() + } +} + + + + diff --git a/tests/auto/declarative/xmlhttprequest/data/text.xml b/tests/auto/declarative/xmlhttprequest/data/text.xml new file mode 100644 index 0000000..e741688 --- /dev/null +++ b/tests/auto/declarative/xmlhttprequest/data/text.xml @@ -0,0 +1 @@ +Hello world! diff --git a/tests/auto/declarative/xmlhttprequest/tst_xmlhttprequest.cpp b/tests/auto/declarative/xmlhttprequest/tst_xmlhttprequest.cpp index 0af7b18..cf1ffd3 100644 --- a/tests/auto/declarative/xmlhttprequest/tst_xmlhttprequest.cpp +++ b/tests/auto/declarative/xmlhttprequest/tst_xmlhttprequest.cpp @@ -88,6 +88,7 @@ private slots: void document(); void element(); void attr(); + void text(); // Crashes // void outstanding_request_at_shutdown(); @@ -1017,6 +1018,19 @@ void tst_xmlhttprequest::attr() delete object; } +void tst_xmlhttprequest::text() +{ + QmlComponent component(&engine, TEST_FILE("text.qml")); + QObject *object = component.create(); + QVERIFY(object != 0); + + TRY_WAIT(object->property("dataOK").toBool() == true); + + QCOMPARE(object->property("xmlTest").toBool(), true); + + delete object; +} + QTEST_MAIN(tst_xmlhttprequest) #include "tst_xmlhttprequest.moc" -- cgit v0.12 From 17b6a9fbfc9de4dae58653b18c26d1ce509e4c21 Mon Sep 17 00:00:00 2001 From: Warwick Allison Date: Fri, 13 Nov 2009 14:31:52 +1000 Subject: test elementAreaAt --- .../qmlgraphicswebview/tst_qmlgraphicswebview.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/tests/auto/declarative/qmlgraphicswebview/tst_qmlgraphicswebview.cpp b/tests/auto/declarative/qmlgraphicswebview/tst_qmlgraphicswebview.cpp index 9032300..308cdd6 100644 --- a/tests/auto/declarative/qmlgraphicswebview/tst_qmlgraphicswebview.cpp +++ b/tests/auto/declarative/qmlgraphicswebview/tst_qmlgraphicswebview.cpp @@ -59,6 +59,7 @@ private slots: void basicProperties(); void historyNav(); void multipleWindows(); + void elementAreaAt(); void loadError(); void setHtml(); void javaScript(); @@ -258,6 +259,21 @@ void tst_qmlgraphicswebview::setHtml() QCOMPARE(wv->html(),QString("

This is a string set on the WebView

")); } +void tst_qmlgraphicswebview::elementAreaAt() +{ + QmlComponent component(&engine, QUrl::fromLocalFile(SRCDIR "/data/elements.qml")); + checkNoErrors(component); + QmlGraphicsWebView *wv = qobject_cast(component.create()); + QVERIFY(wv != 0); + QTRY_COMPARE(wv->progress(), 1.0); + + QCOMPARE(wv->elementAreaAt(40,30,100,100),QRect(1,1,75,54)); // Area A in data/elements.html + QCOMPARE(wv->elementAreaAt(130,30,200,100),QRect(78,3,110,50)); // Area B + QCOMPARE(wv->elementAreaAt(40,30,400,400),QRect(0,0,310,100)); // Whole view + QCOMPARE(wv->elementAreaAt(130,30,280,280),QRect(76,1,223,54)); // Area BC + QCOMPARE(wv->elementAreaAt(130,30,400,400),QRect(0,0,310,100)); // Whole view +} + void tst_qmlgraphicswebview::javaScript() { QmlComponent component(&engine, QUrl::fromLocalFile(SRCDIR "/data/javaScript.qml")); -- cgit v0.12 From 08405d50115aaf787f09c7c8151bd10f8b4d02ce Mon Sep 17 00:00:00 2001 From: Warwick Allison Date: Fri, 13 Nov 2009 14:32:14 +1000 Subject: Make 'public' (testable) --- src/declarative/graphicsitems/qmlgraphicswebview_p.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/declarative/graphicsitems/qmlgraphicswebview_p.h b/src/declarative/graphicsitems/qmlgraphicswebview_p.h index 7c9faf4..1d55830 100644 --- a/src/declarative/graphicsitems/qmlgraphicswebview_p.h +++ b/src/declarative/graphicsitems/qmlgraphicswebview_p.h @@ -128,6 +128,7 @@ public: qreal zoomFactor() const; void setZoomFactor(qreal); Q_INVOKABLE bool heuristicZoom(int clickX, int clickY, qreal maxzoom); + QRect elementAreaAt(int x, int y, int minwidth, int minheight) const; int preferredWidth() const; void setPreferredWidth(int); @@ -223,7 +224,6 @@ protected: virtual void focusChanged(bool); virtual bool sceneEvent(QEvent *event); QmlGraphicsWebView *createWindow(QWebPage::WebWindowType type); - QRect elementAreaAt(int x, int y, int minwidth, int minheight) const; private: void init(); -- cgit v0.12 From 2e1ad8b5d2b1927e80a3bd08209a75199e241b3c Mon Sep 17 00:00:00 2001 From: Aaron Kennedy Date: Fri, 13 Nov 2009 14:47:54 +1000 Subject: XMLHttpRequest tests --- src/declarative/qml/qmlxmlhttprequest.cpp | 153 +++++---------------- .../auto/declarative/xmlhttprequest/data/cdata.qml | 135 ++++++++++++++++++ .../auto/declarative/xmlhttprequest/data/cdata.xml | 2 + .../declarative/xmlhttprequest/data/document.qml | 6 + .../declarative/xmlhttprequest/data/document.xml | 2 +- .../declarative/xmlhttprequest/data/element.qml | 28 +++- .../auto/declarative/xmlhttprequest/data/text.qml | 75 ++++++++++ .../xmlhttprequest/tst_xmlhttprequest.cpp | 22 +++ 8 files changed, 303 insertions(+), 120 deletions(-) create mode 100644 tests/auto/declarative/xmlhttprequest/data/cdata.qml create mode 100644 tests/auto/declarative/xmlhttprequest/data/cdata.xml diff --git a/src/declarative/qml/qmlxmlhttprequest.cpp b/src/declarative/qml/qmlxmlhttprequest.cpp index 0a774e6..848533c 100644 --- a/src/declarative/qml/qmlxmlhttprequest.cpp +++ b/src/declarative/qml/qmlxmlhttprequest.cpp @@ -131,10 +131,10 @@ public: QList attributes; }; -class DocumentImpl : public QmlRefCount +class DocumentImpl : public NodeImpl { public: - DocumentImpl() : root(0) { } + DocumentImpl() : root(0) { type = Document; } virtual ~DocumentImpl() { if (root) D(root); } @@ -158,12 +158,13 @@ public: NamedNodeMap(); NamedNodeMap(const NamedNodeMap &); - NamedNodeMap &operator=(const NamedNodeMap &); ~NamedNodeMap(); bool isNull(); NodeImpl *d; QList *list; +private: + NamedNodeMap &operator=(const NamedNodeMap &); }; class NamedNodeMapClass : public QScriptClass @@ -180,7 +181,6 @@ class NodeList public: // JS API static QScriptValue length(QScriptContext *context, QScriptEngine *engine); - static QScriptValue item(QScriptContext *context, QScriptEngine *engine); // C++ API static QScriptValue prototype(QScriptEngine *); @@ -188,11 +188,12 @@ public: NodeList(); NodeList(const NodeList &); - NodeList &operator=(const NodeList &); ~NodeList(); bool isNull(); NodeImpl *d; +private: + NodeList &operator=(const NodeList &); }; class NodeListClass : public QScriptClass @@ -232,11 +233,13 @@ public: Node(); Node(const Node &o); - Node &operator=(const Node &); ~Node(); bool isNull() const; NodeImpl *d; + +private: + Node &operator=(const Node &); }; class Element : public Node @@ -301,31 +304,29 @@ public: // C++ API static QScriptValue prototype(QScriptEngine *); static QScriptValue load(QScriptEngine *engine, const QString &data); - - Document(); - Document(const Document &); - Document &operator=(const Document &); - ~Document(); - bool isNull() const; - - DocumentImpl *d; -private: - Document(DocumentImpl *); }; -}; +}; // namespace Q_DECLARE_METATYPE(Node); Q_DECLARE_METATYPE(NodeList); Q_DECLARE_METATYPE(NamedNodeMap); -Q_DECLARE_METATYPE(Document); QScriptValue Node::nodeName(QScriptContext *context, QScriptEngine *engine) { Node node = qscriptvalue_cast(context->thisObject()); if (node.isNull()) return engine->undefinedValue(); - return QScriptValue(node.d->name); + switch (node.d->type) { + case NodeImpl::Document: + return QScriptValue(QLatin1String("#document")); + case NodeImpl::CDATA: + return QScriptValue(QLatin1String("#cdata-section")); + case NodeImpl::Text: + return QScriptValue(QLatin1String("#text")); + default: + return QScriptValue(node.d->name); + } } QScriptValue Node::nodeValue(QScriptContext *context, QScriptEngine *engine) @@ -643,6 +644,7 @@ QScriptValue Document::load(QScriptEngine *engine, const QString &data) attr->name = a.name().toString(); attr->data = a.value().toString(); attr->parent = node; + A(attr->parent); node->attributes.append(attr); } } @@ -678,7 +680,9 @@ QScriptValue Document::load(QScriptEngine *engine, const QString &data) QScriptValue instance = engine->newObject(); instance.setPrototype(Document::prototype(engine)); - return engine->newVariant(instance, qVariantFromValue(Document(document))); + Node documentNode; + documentNode.d = document; + return engine->newVariant(instance, qVariantFromValue(documentNode)); } Node::Node() @@ -692,14 +696,6 @@ Node::Node(const Node &o) if (d) A(d); } -Node &Node::operator=(const Node &o) -{ - if (o.d) A(o.d); - if (d) D(d); - d = o.d; - return *this; -} - Node::~Node() { if (d) D(d); @@ -758,15 +754,6 @@ NamedNodeMap::NamedNodeMap(const NamedNodeMap &o) if (d) A(d); } -NamedNodeMap &NamedNodeMap::operator=(const NamedNodeMap &o) -{ - if (o.d) A(o.d); - if (d) D(d); - d = o.d; - list = o.list; - return *this; -} - NamedNodeMap::~NamedNodeMap() { if (d) D(d); @@ -777,20 +764,6 @@ bool NamedNodeMap::isNull() return d == 0; } -QScriptValue NodeList::item(QScriptContext *context, QScriptEngine *engine) -{ - NodeList list = qscriptvalue_cast(context->thisObject().data()); - if (list.isNull() || context->argumentCount() != 1) - return engine->undefinedValue(); - - qint32 index = context->argument(0).toInt32(); - - if (index >= list.d->children.count()) - return engine->undefinedValue(); // ### Exception - else - return Node::create(engine, list.d->children.at(index)); -} - QScriptValue NodeList::length(QScriptContext *context, QScriptEngine *engine) { NodeList list = qscriptvalue_cast(context->thisObject().data()); @@ -804,7 +777,6 @@ QScriptValue NodeList::prototype(QScriptEngine *engine) QScriptValue proto = engine->newObject(); proto.setProperty(QLatin1String("length"), engine->newFunction(length), QScriptValue::ReadOnly | QScriptValue::PropertyGetter); - proto.setProperty(QLatin1String("item"), engine->newFunction(item, 1), QScriptValue::ReadOnly); return proto; } @@ -839,14 +811,6 @@ NodeList::NodeList(const NodeList &o) if (d) A(d); } -NodeList &NodeList::operator=(const NodeList &o) -{ - if (o.d) A(o.d); - if (d) D(d); - d = o.d; - return *this; -} - NodeList::~NodeList() { if (d) D(d); @@ -917,81 +881,36 @@ QScriptValue NodeListClass::property(const QScriptValue &object, const QScriptSt return Node::create(engine(), list.d->children.at(id)); } -Document::Document() -: d(0) -{ -} - -Document::Document(DocumentImpl *data) -: d(data) -{ -} - -Document::Document(const Document &o) -: Node(o), d(o.d) -{ - if (d) A(d); -} - -Document &Document::operator=(const Document &o) -{ - if (o.d) A(o.d); - if (d) D(d); - d = o.d; - return *this; -} - -Document::~Document() -{ - if (d) D(d); -} - -bool Document::isNull() const -{ - return d == 0; -} - QScriptValue Document::documentElement(QScriptContext *context, QScriptEngine *engine) { - Document document = qscriptvalue_cast(context->thisObject()); - if (document.isNull()) return engine->undefinedValue(); - - if (!document.d->root) return engine->nullValue(); + Node document = qscriptvalue_cast(context->thisObject()); + if (document.isNull() || document.d->type != NodeImpl::Document) return engine->undefinedValue(); - return Node::create(engine, document.d->root); + return Node::create(engine, static_cast(document.d)->root); } QScriptValue Document::xmlStandalone(QScriptContext *context, QScriptEngine *engine) { - Document document = qscriptvalue_cast(context->thisObject()); - if (document.isNull()) return engine->undefinedValue(); - - if (context->argumentCount()) - document.d->isStandalone = context->argument(0).toBool(); + Node document = qscriptvalue_cast(context->thisObject()); + if (document.isNull() || document.d->type != NodeImpl::Document) return engine->undefinedValue(); - return QScriptValue(document.d->isStandalone); + return QScriptValue(static_cast(document.d)->isStandalone); } QScriptValue Document::xmlVersion(QScriptContext *context, QScriptEngine *engine) { - Document document = qscriptvalue_cast(context->thisObject()); - if (document.isNull()) return engine->undefinedValue(); + Node document = qscriptvalue_cast(context->thisObject()); + if (document.isNull() || document.d->type != NodeImpl::Document) return engine->undefinedValue(); - if (context->argumentCount()) - document.d->version = context->argument(0).toString(); - - return QScriptValue(document.d->version); + return QScriptValue(static_cast(document.d)->version); } QScriptValue Document::xmlEncoding(QScriptContext *context, QScriptEngine *engine) { - Document document = qscriptvalue_cast(context->thisObject()); - if (document.isNull()) return engine->undefinedValue(); - - if (context->argumentCount()) - document.d->encoding = context->argument(0).toString(); + Node document = qscriptvalue_cast(context->thisObject()); + if (document.isNull() || document.d->type != NodeImpl::Document) return engine->undefinedValue(); - return QScriptValue(document.d->encoding); + return QScriptValue(static_cast(document.d)->encoding); } class QmlXMLHttpRequest : public QObject diff --git a/tests/auto/declarative/xmlhttprequest/data/cdata.qml b/tests/auto/declarative/xmlhttprequest/data/cdata.qml new file mode 100644 index 0000000..5faa359 --- /dev/null +++ b/tests/auto/declarative/xmlhttprequest/data/cdata.qml @@ -0,0 +1,135 @@ +import Qt 4.6 + +Object { + property bool xmlTest: false + property bool dataOK: false + + Script { + function checkCData(text, whitespacetext) + { + // This is essentially a copy of text.qml/checkText() + + if (text == null) + return; + + if (text.nodeName != "#cdata-section") + return; + + if (text.nodeValue != "Hello world!") + return; + + if (text.nodeType != 4) + return; + + if (text.parentNode.nodeName != "item") + return; + + if (text.childNodes.length != 0) + return; + + if (text.firstChild != null) + return; + + if (text.lastChild != null) + return; + + if (text.previousSibling != null) + return; + + if (text.nextSibling != null) + return; + + if (text.attributes != null) + return; + + if (text.wholeText != "Hello world!") + return; + + if (text.data != "Hello world!") + return; + + if (text.length != 12) + return; + + if (text.isElementContentWhitespace != false) + return; + + if (whitespacetext.nodeName != "#cdata-section") + return; + + if (whitespacetext.nodeValue != " ") + return; + + if (whitespacetext.nodeType != 4) + return; + + if (whitespacetext.parentNode.nodeName != "item") + return; + + if (whitespacetext.childNodes.length != 0) + return; + + if (whitespacetext.firstChild != null) + return; + + if (whitespacetext.lastChild != null) + return; + + if (whitespacetext.previousSibling != null) + return; + + if (whitespacetext.nextSibling != null) + return; + + if (whitespacetext.attributes != null) + return; + + if (whitespacetext.wholeText != " ") + return; + + if (whitespacetext.data != " ") + return; + + if (whitespacetext.length != 3) + return; + + if (whitespacetext.isElementContentWhitespace != true) + return; + + + xmlTest = true; + } + + function checkXML(document) + { + checkCData(document.documentElement.childNodes[0].childNodes[0], + document.documentElement.childNodes[1].childNodes[0]); + + } + } + + Component.onCompleted: { + var x = new XMLHttpRequest; + + x.open("GET", "cdata.xml"); + + // Test to the end + x.onreadystatechange = function() { + if (x.readyState == XMLHttpRequest.DONE) { + + dataOK = true; + + if (x.responseXML != null) + checkXML(x.responseXML); + + } + } + + x.send() + } +} + + + + + diff --git a/tests/auto/declarative/xmlhttprequest/data/cdata.xml b/tests/auto/declarative/xmlhttprequest/data/cdata.xml new file mode 100644 index 0000000..061d37c --- /dev/null +++ b/tests/auto/declarative/xmlhttprequest/data/cdata.xml @@ -0,0 +1,2 @@ + + diff --git a/tests/auto/declarative/xmlhttprequest/data/document.qml b/tests/auto/declarative/xmlhttprequest/data/document.qml index fe78e31..7601a10 100644 --- a/tests/auto/declarative/xmlhttprequest/data/document.qml +++ b/tests/auto/declarative/xmlhttprequest/data/document.qml @@ -10,12 +10,18 @@ Object { if (document.xmlVersion != "1.0") return; + if (document.xmlEncoding != "UTF-8") + return; + if (document.xmlStandalone != true) return; if (document.documentElement == null) return; + if (document.nodeName != "#document") + return; + if (document.nodeValue != null) return; diff --git a/tests/auto/declarative/xmlhttprequest/data/document.xml b/tests/auto/declarative/xmlhttprequest/data/document.xml index b5fbe31..fb693ea 100644 --- a/tests/auto/declarative/xmlhttprequest/data/document.xml +++ b/tests/auto/declarative/xmlhttprequest/data/document.xml @@ -1,3 +1,3 @@ - + diff --git a/tests/auto/declarative/xmlhttprequest/data/element.qml b/tests/auto/declarative/xmlhttprequest/data/element.qml index a1ae2ab..79620bf 100644 --- a/tests/auto/declarative/xmlhttprequest/data/element.qml +++ b/tests/auto/declarative/xmlhttprequest/data/element.qml @@ -5,7 +5,7 @@ Object { property bool dataOK: false Script { - function checkElement(e) + function checkElement(e, person, fruit) { if (e.tagName != "root") return; @@ -47,6 +47,9 @@ Object { if (e.attributes == null) return; + if (e.attributes.length != 2) + return; + var attr1 = e.attributes["attr"]; if (attr1.nodeValue != "value") return; @@ -67,12 +70,33 @@ Object { if (attrIdx2 != null) return; + // Check person and fruit sub elements + if (person.parentNode.nodeName != "root") + return; + + if (person.previousSibling != null) + return; + + if (person.nextSibling.nodeName != "fruit") + return; + + if (fruit.parentNode.nodeName != "root") + return; + + if (fruit.previousSibling.nodeName != "person") + return; + + if (fruit.nextSibling != null) + return; + xmlTest = true; } function checkXML(document) { - checkElement(document.documentElement); + checkElement(document.documentElement, + document.documentElement.childNodes[0], + document.documentElement.childNodes[1]); } } diff --git a/tests/auto/declarative/xmlhttprequest/data/text.qml b/tests/auto/declarative/xmlhttprequest/data/text.qml index b64f80b..8c97504 100644 --- a/tests/auto/declarative/xmlhttprequest/data/text.qml +++ b/tests/auto/declarative/xmlhttprequest/data/text.qml @@ -7,15 +7,90 @@ Object { Script { function checkText(text, whitespacetext) { + if (text == null) + return; + + if (text.nodeName != "#text") + return; + + if (text.nodeValue != "Hello world!") + return; + + if (text.nodeType != 3) + return; + + if (text.parentNode.nodeName != "item") + return; + + if (text.childNodes.length != 0) + return; + + if (text.firstChild != null) + return; + + if (text.lastChild != null) + return; + + if (text.previousSibling != null) + return; + + if (text.nextSibling != null) + return; + + if (text.attributes != null) + return; + if (text.wholeText != "Hello world!") return; + if (text.data != "Hello world!") + return; + + if (text.length != 12) + return; + if (text.isElementContentWhitespace != false) return; + if (whitespacetext.nodeName != "#text") + return; + + if (whitespacetext.nodeValue != " ") + return; + + if (whitespacetext.nodeType != 3) + return; + + if (whitespacetext.parentNode.nodeName != "item") + return; + + if (whitespacetext.childNodes.length != 0) + return; + + if (whitespacetext.firstChild != null) + return; + + if (whitespacetext.lastChild != null) + return; + + if (whitespacetext.previousSibling != null) + return; + + if (whitespacetext.nextSibling != null) + return; + + if (whitespacetext.attributes != null) + return; + if (whitespacetext.wholeText != " ") return; + if (whitespacetext.data != " ") + return; + + if (whitespacetext.length != 3) + return; + if (whitespacetext.isElementContentWhitespace != true) return; diff --git a/tests/auto/declarative/xmlhttprequest/tst_xmlhttprequest.cpp b/tests/auto/declarative/xmlhttprequest/tst_xmlhttprequest.cpp index cf1ffd3..100a11b 100644 --- a/tests/auto/declarative/xmlhttprequest/tst_xmlhttprequest.cpp +++ b/tests/auto/declarative/xmlhttprequest/tst_xmlhttprequest.cpp @@ -84,11 +84,14 @@ private slots: void statusText(); void responseText(); void responseXML_invalid(); + void invalidMethodUsage(); + // Attributes void document(); void element(); void attr(); void text(); + void cdata(); // Crashes // void outstanding_request_at_shutdown(); @@ -963,6 +966,10 @@ void tst_xmlhttprequest::responseText() } } +void tst_xmlhttprequest::invalidMethodUsage() +{ +} + void tst_xmlhttprequest::responseXML_invalid() { QmlComponent component(&engine, TEST_FILE("responseXML_invalid.qml")); @@ -1018,6 +1025,7 @@ void tst_xmlhttprequest::attr() delete object; } +// Test the Text DOM element void tst_xmlhttprequest::text() { QmlComponent component(&engine, TEST_FILE("text.qml")); @@ -1031,6 +1039,20 @@ void tst_xmlhttprequest::text() delete object; } +// Test the CDataSection DOM element +void tst_xmlhttprequest::cdata() +{ + QmlComponent component(&engine, TEST_FILE("cdata.qml")); + QObject *object = component.create(); + QVERIFY(object != 0); + + TRY_WAIT(object->property("dataOK").toBool() == true); + + QCOMPARE(object->property("xmlTest").toBool(), true); + + delete object; +} + QTEST_MAIN(tst_xmlhttprequest) #include "tst_xmlhttprequest.moc" -- cgit v0.12 From f2d9bdb36061b4b419e777075027f609bf9890b2 Mon Sep 17 00:00:00 2001 From: Aaron Kennedy Date: Fri, 13 Nov 2009 14:48:33 +1000 Subject: Better gcov compile flags --- src/declarative/declarative.pro | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/declarative/declarative.pro b/src/declarative/declarative.pro index e4901bf..da8434f 100644 --- a/src/declarative/declarative.pro +++ b/src/declarative/declarative.pro @@ -9,7 +9,7 @@ solaris-cc*:QMAKE_CXXFLAGS_RELEASE -= -O2 unix:QMAKE_PKGCONFIG_REQUIRES = QtCore QtGui QtXml -# QMAKE_CXXFLAGS = -fprofile-arcs -ftest-coverage +# QMAKE_CXXFLAGS = -fprofile-arcs -ftest-coverage -fno-elide-constructors # LIBS += -lgcov INCLUDEPATH += ../../include/QtDeclarative -- cgit v0.12 From b143576a735b6ec67058d5c6b6cf369b1002756d Mon Sep 17 00:00:00 2001 From: Aaron Kennedy Date: Fri, 13 Nov 2009 14:53:49 +1000 Subject: Missing files --- tests/auto/declarative/qmllanguage/data/cppnamespace.2.qml | 5 +++++ tests/auto/declarative/qmlqt/data/md5.qml | 6 ++++++ 2 files changed, 11 insertions(+) create mode 100644 tests/auto/declarative/qmllanguage/data/cppnamespace.2.qml create mode 100644 tests/auto/declarative/qmlqt/data/md5.qml diff --git a/tests/auto/declarative/qmllanguage/data/cppnamespace.2.qml b/tests/auto/declarative/qmllanguage/data/cppnamespace.2.qml new file mode 100644 index 0000000..e3b32ca --- /dev/null +++ b/tests/auto/declarative/qmllanguage/data/cppnamespace.2.qml @@ -0,0 +1,5 @@ +import Test 1.0 + +MySecondNamespacedType { + list: [ MyNamespacedType {} ] +} diff --git a/tests/auto/declarative/qmlqt/data/md5.qml b/tests/auto/declarative/qmlqt/data/md5.qml new file mode 100644 index 0000000..3c96a6b --- /dev/null +++ b/tests/auto/declarative/qmlqt/data/md5.qml @@ -0,0 +1,6 @@ +import Qt 4.6 + +Object { + property string test1: Qt.md5() + property string test2: Qt.md5("Hello World") +} -- cgit v0.12 From 2c393c60f0d309edab31cd1998a0baf6d5749d9d Mon Sep 17 00:00:00 2001 From: Yann Bodson Date: Fri, 13 Nov 2009 15:06:52 +1000 Subject: More GridView autotests --- .../qmlgraphicsgridview/data/gridview2.qml | 26 +++++++++++ .../qmlgraphicsgridview/data/gridview3.qml | 6 +++ .../tst_qmlgraphicsgridview.cpp | 51 ++++++++++++++++++++++ 3 files changed, 83 insertions(+) create mode 100644 tests/auto/declarative/qmlgraphicsgridview/data/gridview2.qml create mode 100644 tests/auto/declarative/qmlgraphicsgridview/data/gridview3.qml diff --git a/tests/auto/declarative/qmlgraphicsgridview/data/gridview2.qml b/tests/auto/declarative/qmlgraphicsgridview/data/gridview2.qml new file mode 100644 index 0000000..62b5bd3 --- /dev/null +++ b/tests/auto/declarative/qmlgraphicsgridview/data/gridview2.qml @@ -0,0 +1,26 @@ +import Qt 4.6 + +GridView { + anchors.fill: parent + width: 320; height: 200 + cellWidth: 100; cellHeight: 100; cacheBuffer: 200; focus: true + keyNavigationWraps: true; highlightFollowsCurrentItem: false + + model: ListModel { + id: appModel + ListElement { lColor: "red" } + ListElement { lColor: "yellow" } + ListElement { lColor: "green" } + ListElement { lColor: "blue" } + } + + delegate: Item { + width: 100; height: 100 + Rectangle { + color: lColor; x: 4; y: 4 + width: 92; height: 92 + } + } + + highlight: Rectangle { width: 100; height: 100; color: "black" } +} diff --git a/tests/auto/declarative/qmlgraphicsgridview/data/gridview3.qml b/tests/auto/declarative/qmlgraphicsgridview/data/gridview3.qml new file mode 100644 index 0000000..b133d55 --- /dev/null +++ b/tests/auto/declarative/qmlgraphicsgridview/data/gridview3.qml @@ -0,0 +1,6 @@ +import Qt 4.6 + +GridView { + anchors.fill: parent + width: 320; height: 200 +} diff --git a/tests/auto/declarative/qmlgraphicsgridview/tst_qmlgraphicsgridview.cpp b/tests/auto/declarative/qmlgraphicsgridview/tst_qmlgraphicsgridview.cpp index d99b16f..d09aad7 100644 --- a/tests/auto/declarative/qmlgraphicsgridview/tst_qmlgraphicsgridview.cpp +++ b/tests/auto/declarative/qmlgraphicsgridview/tst_qmlgraphicsgridview.cpp @@ -38,6 +38,9 @@ ** $QT_END_LICENSE$ ** ****************************************************************************/ + +#include +#include #include #include #include @@ -60,6 +63,8 @@ private slots: void moved(); void currentIndex(); void changeFlow(); + void defaultValues(); + void properties(); private: QmlView *createView(const QString &filename); @@ -690,6 +695,52 @@ void tst_QmlGraphicsGridView::changeFlow() delete canvas; } +void tst_QmlGraphicsGridView::defaultValues() +{ + QmlEngine engine; + QmlComponent c(&engine, QUrl("file://" SRCDIR "/data/gridview3.qml")); + QmlGraphicsGridView *obj = qobject_cast(c.create()); + + QVERIFY(obj != 0); + QVERIFY(obj->model() == QVariant()); + QVERIFY(obj->delegate() == 0); + QCOMPARE(obj->currentIndex(), -1); + QVERIFY(obj->currentItem() == 0); + QCOMPARE(obj->count(), 0); + QVERIFY(obj->highlight() == 0); + QVERIFY(obj->highlightItem() == 0); + QCOMPARE(obj->highlightFollowsCurrentItem(), true); + QVERIFY(obj->flow() == 0); + QCOMPARE(obj->isWrapEnabled(), false); + QCOMPARE(obj->cacheBuffer(), 0); + QCOMPARE(obj->cellWidth(), 100); //### Should 100 be the default? + QCOMPARE(obj->cellHeight(), 100); + delete obj; +} + +void tst_QmlGraphicsGridView::properties() +{ + QmlEngine engine; + QmlComponent c(&engine, QUrl("file://" SRCDIR "/data/gridview2.qml")); + QmlGraphicsGridView *obj = qobject_cast(c.create()); + + QVERIFY(obj != 0); + QVERIFY(obj->model() != QVariant()); + QVERIFY(obj->delegate() != 0); + QCOMPARE(obj->currentIndex(), 0); + QVERIFY(obj->currentItem() != 0); + QCOMPARE(obj->count(), 4); + QVERIFY(obj->highlight() != 0); + QVERIFY(obj->highlightItem() != 0); + QCOMPARE(obj->highlightFollowsCurrentItem(), false); + QVERIFY(obj->flow() == 0); + QCOMPARE(obj->isWrapEnabled(), true); + QCOMPARE(obj->cacheBuffer(), 200); + QCOMPARE(obj->cellWidth(), 100); + QCOMPARE(obj->cellHeight(), 100); + delete obj; +} + QmlView *tst_QmlGraphicsGridView::createView(const QString &filename) { QmlView *canvas = new QmlView(0); -- cgit v0.12 From 1ace19bb2b913a23c083cd938e1e63fa1f0679e2 Mon Sep 17 00:00:00 2001 From: Yann Bodson Date: Fri, 13 Nov 2009 15:18:44 +1000 Subject: update visual test --- .../qmlgraphicsgridview/data/gridview2.0.png | Bin 1310 -> 1310 bytes .../qmlgraphicsgridview/data/gridview2.1.png | Bin 1335 -> 1322 bytes .../qmlgraphicsgridview/data/gridview2.2.png | Bin 1319 -> 1341 bytes .../qmlgraphicsgridview/data/gridview2.3.png | Bin 1335 -> 1368 bytes .../qmlgraphicsgridview/data/gridview2.4.png | Bin 1375 -> 1319 bytes .../qmlgraphicsgridview/data/gridview2.5.png | Bin 1335 -> 1352 bytes .../qmlgraphicsgridview/data/gridview2.6.png | Bin 1348 -> 1309 bytes .../qmlgraphicsgridview/data/gridview2.7.png | Bin 1311 -> 1347 bytes .../qmlgraphicsgridview/data/gridview2.8.png | Bin 1352 -> 1310 bytes .../visual/qmlgraphicsgridview/data/gridview2.qml | 2060 +++++++------------- .../visual/qmlgraphicsgridview/gridview2.qml | 1 + 11 files changed, 735 insertions(+), 1326 deletions(-) diff --git a/tests/auto/declarative/visual/qmlgraphicsgridview/data/gridview2.0.png b/tests/auto/declarative/visual/qmlgraphicsgridview/data/gridview2.0.png index fe81eef..3021d58 100644 Binary files a/tests/auto/declarative/visual/qmlgraphicsgridview/data/gridview2.0.png and b/tests/auto/declarative/visual/qmlgraphicsgridview/data/gridview2.0.png differ diff --git a/tests/auto/declarative/visual/qmlgraphicsgridview/data/gridview2.1.png b/tests/auto/declarative/visual/qmlgraphicsgridview/data/gridview2.1.png index 9670674..baeb1a6 100644 Binary files a/tests/auto/declarative/visual/qmlgraphicsgridview/data/gridview2.1.png and b/tests/auto/declarative/visual/qmlgraphicsgridview/data/gridview2.1.png differ diff --git a/tests/auto/declarative/visual/qmlgraphicsgridview/data/gridview2.2.png b/tests/auto/declarative/visual/qmlgraphicsgridview/data/gridview2.2.png index e44eba1..2d0c731 100644 Binary files a/tests/auto/declarative/visual/qmlgraphicsgridview/data/gridview2.2.png and b/tests/auto/declarative/visual/qmlgraphicsgridview/data/gridview2.2.png differ diff --git a/tests/auto/declarative/visual/qmlgraphicsgridview/data/gridview2.3.png b/tests/auto/declarative/visual/qmlgraphicsgridview/data/gridview2.3.png index 78fce9d..af9ed05 100644 Binary files a/tests/auto/declarative/visual/qmlgraphicsgridview/data/gridview2.3.png and b/tests/auto/declarative/visual/qmlgraphicsgridview/data/gridview2.3.png differ diff --git a/tests/auto/declarative/visual/qmlgraphicsgridview/data/gridview2.4.png b/tests/auto/declarative/visual/qmlgraphicsgridview/data/gridview2.4.png index c86fdbb..0b0945d 100644 Binary files a/tests/auto/declarative/visual/qmlgraphicsgridview/data/gridview2.4.png and b/tests/auto/declarative/visual/qmlgraphicsgridview/data/gridview2.4.png differ diff --git a/tests/auto/declarative/visual/qmlgraphicsgridview/data/gridview2.5.png b/tests/auto/declarative/visual/qmlgraphicsgridview/data/gridview2.5.png index 96ef090..618ae0c 100644 Binary files a/tests/auto/declarative/visual/qmlgraphicsgridview/data/gridview2.5.png and b/tests/auto/declarative/visual/qmlgraphicsgridview/data/gridview2.5.png differ diff --git a/tests/auto/declarative/visual/qmlgraphicsgridview/data/gridview2.6.png b/tests/auto/declarative/visual/qmlgraphicsgridview/data/gridview2.6.png index e0aab58..fc31262 100644 Binary files a/tests/auto/declarative/visual/qmlgraphicsgridview/data/gridview2.6.png and b/tests/auto/declarative/visual/qmlgraphicsgridview/data/gridview2.6.png differ diff --git a/tests/auto/declarative/visual/qmlgraphicsgridview/data/gridview2.7.png b/tests/auto/declarative/visual/qmlgraphicsgridview/data/gridview2.7.png index b36ea46..22291ac 100644 Binary files a/tests/auto/declarative/visual/qmlgraphicsgridview/data/gridview2.7.png and b/tests/auto/declarative/visual/qmlgraphicsgridview/data/gridview2.7.png differ diff --git a/tests/auto/declarative/visual/qmlgraphicsgridview/data/gridview2.8.png b/tests/auto/declarative/visual/qmlgraphicsgridview/data/gridview2.8.png index 366cf46..3021d58 100644 Binary files a/tests/auto/declarative/visual/qmlgraphicsgridview/data/gridview2.8.png and b/tests/auto/declarative/visual/qmlgraphicsgridview/data/gridview2.8.png differ diff --git a/tests/auto/declarative/visual/qmlgraphicsgridview/data/gridview2.qml b/tests/auto/declarative/visual/qmlgraphicsgridview/data/gridview2.qml index e3a04ee..fb5f1fb 100644 --- a/tests/auto/declarative/visual/qmlgraphicsgridview/data/gridview2.qml +++ b/tests/auto/declarative/visual/qmlgraphicsgridview/data/gridview2.qml @@ -84,193 +84,161 @@ VisualTest { msec: 320 hash: "33d81c39d16c6a326012499796e50e03" } - Key { - type: 6 - key: 16777236 - modifiers: 536870912 - text: "1d" - autorep: false - count: 1 - } Frame { msec: 336 hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 352 - hash: "aaec7184a27e6700d96ffff376b8fa53" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 368 - hash: "3fa3a890a4ff4a59336a9a2d478d0dde" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 384 - hash: "3711c6c2f4f9aba7f2c72bd1f1d85016" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 400 - hash: "23da2f9a800b805ce7b77ff08218907d" - } - Key { - type: 7 - key: 16777236 - modifiers: 536870912 - text: "1d" - autorep: false - count: 1 + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 416 - hash: "12e4bc953b06cdaad0720f87fb96a37e" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 432 - hash: "46e69658bda69bab202a2790a76ba1cd" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 448 - hash: "44608e67c69b92ccbb45e119e1158fe3" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 464 - hash: "97a309b47017d38294644a486a7ce68e" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 480 - hash: "41f42b50b22e0496c8aca5019b24b9cb" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 496 - hash: "8603ea1cb60c804563f50bc41c0180fe" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 512 - hash: "e29777fa70daafe9640c6e9bb7bd63d6" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 528 - hash: "2c4c360320f527e99fee799e68c2c0aa" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 544 - hash: "0d30916c7e05ff8609af5894f47a89bb" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 560 - hash: "0d30916c7e05ff8609af5894f47a89bb" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 576 - hash: "0d30916c7e05ff8609af5894f47a89bb" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 592 - hash: "0d30916c7e05ff8609af5894f47a89bb" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 608 - hash: "0d30916c7e05ff8609af5894f47a89bb" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 624 - hash: "0d30916c7e05ff8609af5894f47a89bb" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 640 - hash: "0d30916c7e05ff8609af5894f47a89bb" - } - Key { - type: 6 - key: 16777236 - modifiers: 536870912 - text: "1d" - autorep: false - count: 1 + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 656 - hash: "0d30916c7e05ff8609af5894f47a89bb" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 672 - hash: "7c2ab6be73f21b82ca99503464ec214b" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 688 - hash: "d481669ee8d30716aff5321dbc2199bb" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 704 - hash: "11cc48f29948e054af9c61e02c1a77c8" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 720 - hash: "26f3f27f601739090c260cf3674b726a" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 736 - hash: "bb676e48336cf88fb785b8d2d3f92886" - } - Key { - type: 7 - key: 16777236 - modifiers: 536870912 - text: "1d" - autorep: false - count: 1 + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 752 - hash: "2a220616f82b393c106567c2dbd8fdae" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 768 - hash: "12c16f3219a0c2c0955038e748706a58" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 784 - hash: "e2a522b7362bfc75744912cb27438017" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 800 - hash: "b2826fa90fe5a64f53135f542a1f11b8" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 816 - hash: "046d8f44e9b3c982788ff016f61c919b" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 832 - hash: "b30c2fa8698819cb6c48b447a35dd0bc" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 848 - hash: "02b39d806f6f11738e00d51c2918d2e5" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 864 - hash: "0199fee9ba18ebe4288415daf0900962" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 880 - hash: "0199fee9ba18ebe4288415daf0900962" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 896 - hash: "0199fee9ba18ebe4288415daf0900962" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 912 - hash: "0199fee9ba18ebe4288415daf0900962" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 928 - hash: "0199fee9ba18ebe4288415daf0900962" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 944 - hash: "0199fee9ba18ebe4288415daf0900962" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 960 @@ -278,243 +246,243 @@ VisualTest { } Frame { msec: 976 - hash: "0199fee9ba18ebe4288415daf0900962" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 992 - hash: "0199fee9ba18ebe4288415daf0900962" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 1008 - hash: "0199fee9ba18ebe4288415daf0900962" - } - Key { - type: 6 - key: 16777236 - modifiers: 536870912 - text: "1d" - autorep: false - count: 1 + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 1024 - hash: "0199fee9ba18ebe4288415daf0900962" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 1040 - hash: "8109dd7307290cf1322ee3a36759b491" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 1056 - hash: "035225d5881b29d9ccd97a24997b760b" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 1072 - hash: "a312bc0741af4eea147a4fe6453907df" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 1088 - hash: "bb4228997710bae15708bd9cd78358de" - } - Key { - type: 7 - key: 16777236 - modifiers: 536870912 - text: "1d" - autorep: false - count: 1 + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 1104 - hash: "08116c8357f93cb6074cebd5a811cf1d" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 1120 - hash: "a1cb30e98ab2e805d05b904f765bb844" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 1136 - hash: "547502f1c738cf0cbfaff2c64a3a5c55" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 1152 - hash: "019ce6a2812563842d98aa3f67a0562a" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 1168 - hash: "d8809cd87b068cc6b22e34c82eced2e1" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 1184 - hash: "7b14f17ed6bc8adf291f1a02df6d7868" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 1200 - hash: "17bd866b076c37218fd34502bd1ba533" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 1216 - hash: "515987a2a440977d54e766253a251788" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 1232 - hash: "592f34925c9505c5bd6d30e194bdb732" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 1248 - hash: "f85950afce4786c22392cd53cbfc0a21" + hash: "33d81c39d16c6a326012499796e50e03" + } + Key { + type: 6 + key: 16777236 + modifiers: 536870912 + text: "1d" + autorep: false + count: 1 } Frame { msec: 1264 - hash: "e1d64ba993fc788ed99869e167578c3c" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 1280 - hash: "7b83968aa2f9526df3d69fa8cf2307e3" + hash: "aaec7184a27e6700d96ffff376b8fa53" } Frame { msec: 1296 - hash: "19b9d0493823862f52b9a1dd4ee4ebed" + hash: "3fa3a890a4ff4a59336a9a2d478d0dde" } Frame { msec: 1312 - hash: "f7a2ec0ee9ad8a2ee4c621b42b3dc068" + hash: "3711c6c2f4f9aba7f2c72bd1f1d85016" } Frame { msec: 1328 - hash: "aaea6fba5aa361b5aa40ee5cb6c98bb1" + hash: "23da2f9a800b805ce7b77ff08218907d" } Frame { msec: 1344 - hash: "e263be3561491c41fe62ef94a760d305" + hash: "12e4bc953b06cdaad0720f87fb96a37e" } Frame { msec: 1360 - hash: "d9650a680ac028679ec2d347a2f679cb" + hash: "46e69658bda69bab202a2790a76ba1cd" + } + Key { + type: 7 + key: 16777236 + modifiers: 536870912 + text: "1d" + autorep: false + count: 1 } Frame { msec: 1376 - hash: "28a049b2e7077a6276a6924854c34f1e" + hash: "44608e67c69b92ccbb45e119e1158fe3" } Frame { msec: 1392 - hash: "6761dfcf62280d8f77e22f48e83f2779" + hash: "97a309b47017d38294644a486a7ce68e" } Frame { msec: 1408 - hash: "724feb5f2a577b25e53ea504deca5255" + hash: "41f42b50b22e0496c8aca5019b24b9cb" } Frame { msec: 1424 - hash: "1829f839426920fbd34ebc1af92a44f5" + hash: "8603ea1cb60c804563f50bc41c0180fe" } Frame { msec: 1440 - hash: "1829f839426920fbd34ebc1af92a44f5" + hash: "e29777fa70daafe9640c6e9bb7bd63d6" } Frame { msec: 1456 - hash: "1829f839426920fbd34ebc1af92a44f5" + hash: "2c4c360320f527e99fee799e68c2c0aa" } Frame { msec: 1472 - hash: "1829f839426920fbd34ebc1af92a44f5" + hash: "0d30916c7e05ff8609af5894f47a89bb" } Frame { msec: 1488 - hash: "1829f839426920fbd34ebc1af92a44f5" + hash: "0d30916c7e05ff8609af5894f47a89bb" } Frame { msec: 1504 - hash: "1829f839426920fbd34ebc1af92a44f5" + hash: "0d30916c7e05ff8609af5894f47a89bb" } Frame { msec: 1520 - hash: "1829f839426920fbd34ebc1af92a44f5" + hash: "0d30916c7e05ff8609af5894f47a89bb" } Frame { msec: 1536 - hash: "1829f839426920fbd34ebc1af92a44f5" - } - Key { - type: 6 - key: 16777236 - modifiers: 536870912 - text: "1d" - autorep: false - count: 1 + hash: "0d30916c7e05ff8609af5894f47a89bb" } Frame { msec: 1552 - hash: "1829f839426920fbd34ebc1af92a44f5" + hash: "0d30916c7e05ff8609af5894f47a89bb" } Frame { msec: 1568 - hash: "724feb5f2a577b25e53ea504deca5255" + hash: "0d30916c7e05ff8609af5894f47a89bb" } Frame { msec: 1584 - hash: "6761dfcf62280d8f77e22f48e83f2779" + hash: "0d30916c7e05ff8609af5894f47a89bb" + } + Key { + type: 6 + key: 16777237 + modifiers: 536870912 + text: "1f" + autorep: false + count: 1 } Frame { msec: 1600 - hash: "28a049b2e7077a6276a6924854c34f1e" + hash: "0d30916c7e05ff8609af5894f47a89bb" } Frame { msec: 1616 - hash: "d9650a680ac028679ec2d347a2f679cb" + hash: "17027b7c099b11cb5382f30dbbd1e647" } Frame { msec: 1632 - hash: "e263be3561491c41fe62ef94a760d305" - } - Key { - type: 7 - key: 16777236 - modifiers: 536870912 - text: "1d" - autorep: false - count: 1 + hash: "0e17461a4ca843f9903b7f03e99a0b00" } Frame { msec: 1648 - hash: "aaea6fba5aa361b5aa40ee5cb6c98bb1" + hash: "a5e61901920553e59892fa405beea15a" } Frame { msec: 1664 - hash: "f7a2ec0ee9ad8a2ee4c621b42b3dc068" + hash: "310eaf71fe8d3807606e58a666c65ccd" } Frame { msec: 1680 - hash: "19b9d0493823862f52b9a1dd4ee4ebed" + hash: "76f556d05fb77082f33eb1836c10587a" + } + Key { + type: 7 + key: 16777237 + modifiers: 536870912 + text: "1f" + autorep: false + count: 1 } Frame { msec: 1696 - hash: "7b83968aa2f9526df3d69fa8cf2307e3" + hash: "4e7e4b7790a96396e7ea3533b5c32ed9" } Frame { msec: 1712 - hash: "e1d64ba993fc788ed99869e167578c3c" + hash: "b065287b6490f58ca6f0e9eb2027cf20" } Frame { msec: 1728 - hash: "f85950afce4786c22392cd53cbfc0a21" + hash: "907cd9dbdffa1d395caaabd466dc8e86" } Frame { msec: 1744 - hash: "592f34925c9505c5bd6d30e194bdb732" + hash: "3b144e5b4867328beafa3020ce931480" } Frame { msec: 1760 - hash: "77d5193bc5f53fe5cb98a236c55f841e" + hash: "b59b2b60b7d55424b61b1b0ed3e227b8" } Frame { msec: 1776 - hash: "77d5193bc5f53fe5cb98a236c55f841e" + hash: "4032e934871b315b68c7c2abea42efee" } Frame { msec: 1792 - hash: "77d5193bc5f53fe5cb98a236c55f841e" + hash: "8f80127b2f8d6fc10aa84062544cc381" } Frame { msec: 1808 @@ -540,14 +508,6 @@ VisualTest { msec: 1888 hash: "77d5193bc5f53fe5cb98a236c55f841e" } - Key { - type: 6 - key: 16777236 - modifiers: 536870912 - text: "1d" - autorep: false - count: 1 - } Frame { msec: 1904 hash: "77d5193bc5f53fe5cb98a236c55f841e" @@ -558,22 +518,30 @@ VisualTest { } Frame { msec: 1936 - hash: "714711d7382ef8bba5fb39e2e44bd59c" + hash: "77d5193bc5f53fe5cb98a236c55f841e" } Frame { msec: 1952 - hash: "63deed0356e761f94f88be18a7d10053" + hash: "77d5193bc5f53fe5cb98a236c55f841e" } Frame { msec: 1968 - hash: "d5b4fc1b568a4a1b63a91b422272c704" + hash: "77d5193bc5f53fe5cb98a236c55f841e" } Frame { msec: 1984 - hash: "b6d2c80925cc6b4b7b297bd6ee903c7c" + hash: "77d5193bc5f53fe5cb98a236c55f841e" + } + Frame { + msec: 2000 + hash: "77d5193bc5f53fe5cb98a236c55f841e" + } + Frame { + msec: 2016 + hash: "77d5193bc5f53fe5cb98a236c55f841e" } Key { - type: 7 + type: 6 key: 16777236 modifiers: 536870912 text: "1d" @@ -581,72 +549,64 @@ VisualTest { count: 1 } Frame { - msec: 2000 - hash: "38117482196360353586cb7ace593894" - } - Frame { - msec: 2016 - hash: "2301f3a148bf4e311cc8ce011ddf65f8" - } - Frame { msec: 2032 - hash: "2a4982a0961f89a15618f8d4c2081f5a" + hash: "77d5193bc5f53fe5cb98a236c55f841e" } Frame { msec: 2048 - hash: "acf8666d6a8a29925f3895aa8e93f713" + hash: "a45d2630872a14541f39b862e15ff461" } Frame { msec: 2064 - hash: "967ed026bc92a6d2747c5227105543a6" + hash: "714711d7382ef8bba5fb39e2e44bd59c" } Frame { msec: 2080 - hash: "ff72f3fb95f25990c99c1c14cfef57da" + hash: "63deed0356e761f94f88be18a7d10053" } Frame { msec: 2096 - hash: "0874a4f863596c3860dcf5b1f7f6ceb2" + hash: "d5b4fc1b568a4a1b63a91b422272c704" } Frame { msec: 2112 - hash: "520445d8619ad9bdde0db0e61f17567c" + hash: "b6d2c80925cc6b4b7b297bd6ee903c7c" + } + Key { + type: 7 + key: 16777236 + modifiers: 536870912 + text: "1d" + autorep: false + count: 1 } Frame { msec: 2128 - hash: "520445d8619ad9bdde0db0e61f17567c" + hash: "38117482196360353586cb7ace593894" } Frame { msec: 2144 - hash: "520445d8619ad9bdde0db0e61f17567c" + hash: "2301f3a148bf4e311cc8ce011ddf65f8" } Frame { msec: 2160 - hash: "520445d8619ad9bdde0db0e61f17567c" + hash: "2a4982a0961f89a15618f8d4c2081f5a" } Frame { msec: 2176 - hash: "520445d8619ad9bdde0db0e61f17567c" + hash: "acf8666d6a8a29925f3895aa8e93f713" } Frame { msec: 2192 - hash: "520445d8619ad9bdde0db0e61f17567c" + hash: "967ed026bc92a6d2747c5227105543a6" } Frame { msec: 2208 - hash: "520445d8619ad9bdde0db0e61f17567c" + hash: "ff72f3fb95f25990c99c1c14cfef57da" } Frame { msec: 2224 - hash: "520445d8619ad9bdde0db0e61f17567c" - } - Key { - type: 6 - key: 16777236 - modifiers: 536870912 - text: "1d" - autorep: false - count: 1 + hash: "0874a4f863596c3860dcf5b1f7f6ceb2" } Frame { msec: 2240 @@ -654,175 +614,191 @@ VisualTest { } Frame { msec: 2256 - hash: "38e916aaa015643c8aa1a6b38b2ded11" + hash: "520445d8619ad9bdde0db0e61f17567c" } Frame { msec: 2272 - hash: "306e0c5da54956ae86664631254abaff" + hash: "520445d8619ad9bdde0db0e61f17567c" } Frame { msec: 2288 - hash: "6eb41a7488b2170ce804a323d04ee3ac" + hash: "520445d8619ad9bdde0db0e61f17567c" } Frame { msec: 2304 - hash: "53504cdfe0329c75167018d20aac4802" + hash: "520445d8619ad9bdde0db0e61f17567c" } Frame { msec: 2320 - hash: "04e2d7df00e043ee8420c12666e74cc3" - } - Key { - type: 7 - key: 16777236 - modifiers: 536870912 - text: "1d" - autorep: false - count: 1 + hash: "520445d8619ad9bdde0db0e61f17567c" } Frame { msec: 2336 - hash: "504baf54d9ea564beaa38dd1721d0d7f" + hash: "520445d8619ad9bdde0db0e61f17567c" } Frame { msec: 2352 - hash: "f1a159ad7d290ddd9aeb2a82c8daa005" + hash: "520445d8619ad9bdde0db0e61f17567c" } Frame { msec: 2368 - hash: "c2f8cdd35514a15eab07b58e95a42595" + hash: "520445d8619ad9bdde0db0e61f17567c" + } + Key { + type: 6 + key: 16777237 + modifiers: 536870912 + text: "1f" + autorep: false + count: 1 } Frame { msec: 2384 - hash: "d81105c661d57fefac2719c3f2e72195" + hash: "520445d8619ad9bdde0db0e61f17567c" } Frame { msec: 2400 - hash: "50c9cf40900cb5cca541b2f4f5c6f49d" + hash: "7c4bbf0423d63d7642d218cac56a6215" } Frame { msec: 2416 - hash: "83ee765caeb775cf858735f2aab5712b" + hash: "e8c77dbc89721b51549f8d46453fe09d" } Frame { msec: 2432 - hash: "3098d35f80f8c7a87b470b9dea86b8e5" + hash: "7953503590b639872ac12215695e8cea" } Frame { msec: 2448 - hash: "95419b34afde55f67e48686327be2bff" + hash: "edaee946a2e25fed6de9acfda0d44a14" } Frame { msec: 2464 - hash: "fcc551cb390b8727147b5e8cdca4d589" + hash: "4996ef39bb0122c10d65f8dd8674b386" } Frame { msec: 2480 - hash: "c49cc92b98904e7d27d45ac0ae3cc4a2" + hash: "ede7c6ca9d6deb7819c3715e98755d6e" } Frame { msec: 2496 - hash: "336c908463796547dbf5a6459c56b62e" + hash: "e703fad2fcf9244ec9865200c7d17ce3" + } + Key { + type: 7 + key: 16777237 + modifiers: 536870912 + text: "1f" + autorep: false + count: 1 } Frame { msec: 2512 - hash: "94887e3dd76236972643db277943ea53" + hash: "e2bfc16fd893bb3eb0e5df89a0169af3" } Frame { msec: 2528 - hash: "fad61012614f65bc48e87a60cc50d31e" + hash: "cfd0eb2bc378bd46644f3f7820150685" } Frame { msec: 2544 - hash: "40e6032e6352e62bf7ceea8c75f5d2ff" + hash: "442b05b04762c2bcda291aaa0341398e" } Frame { msec: 2560 - hash: "9f382f5b18fe7ae619e6a6ec0634541b" + hash: "55842a6503057eea98e2075ef160873e" } Frame { msec: 2576 - hash: "9ccda1ba0f636e6abee5ca4a005a9117" + hash: "730f80233dacf1119660a76d2a34c5fc" } Frame { msec: 2592 - hash: "b10afc5bf160b01d5567f7de26275460" + hash: "d4a48ee79a18cc5c0bc123fbb40c3efd" } Frame { msec: 2608 - hash: "6e67fdc1773c6db11ca2827db4e12c64" + hash: "d4a48ee79a18cc5c0bc123fbb40c3efd" } Frame { msec: 2624 - hash: "fc2bd8e7b3446c6c2da2f4ead51e4318" + hash: "d4a48ee79a18cc5c0bc123fbb40c3efd" } Frame { msec: 2640 - hash: "ac0295495345987d1e000f6bb2436927" + hash: "d4a48ee79a18cc5c0bc123fbb40c3efd" } Frame { msec: 2656 - hash: "ac0295495345987d1e000f6bb2436927" + hash: "d4a48ee79a18cc5c0bc123fbb40c3efd" } Frame { msec: 2672 - hash: "ac0295495345987d1e000f6bb2436927" + hash: "d4a48ee79a18cc5c0bc123fbb40c3efd" } Frame { msec: 2688 - hash: "ac0295495345987d1e000f6bb2436927" + hash: "d4a48ee79a18cc5c0bc123fbb40c3efd" } Frame { msec: 2704 - hash: "ac0295495345987d1e000f6bb2436927" + hash: "d4a48ee79a18cc5c0bc123fbb40c3efd" } Frame { msec: 2720 - hash: "ac0295495345987d1e000f6bb2436927" + hash: "d4a48ee79a18cc5c0bc123fbb40c3efd" } Frame { msec: 2736 - hash: "ac0295495345987d1e000f6bb2436927" + hash: "d4a48ee79a18cc5c0bc123fbb40c3efd" + } + Key { + type: 6 + key: 16777234 + modifiers: 536870912 + text: "1c" + autorep: false + count: 1 } Frame { msec: 2752 - hash: "ac0295495345987d1e000f6bb2436927" + hash: "d4a48ee79a18cc5c0bc123fbb40c3efd" } Frame { msec: 2768 - hash: "ac0295495345987d1e000f6bb2436927" + hash: "4d04c12bc7fab0b22df3135bf3a87a22" } Frame { msec: 2784 - hash: "ac0295495345987d1e000f6bb2436927" + hash: "fdca5a3f8312452feba7f37b1caa6419" } Frame { msec: 2800 - hash: "ac0295495345987d1e000f6bb2436927" + hash: "97b955e0f8cde30299b238d9ac0eb308" } Frame { msec: 2816 - hash: "ac0295495345987d1e000f6bb2436927" + hash: "19664de1a738458810896959ba4087ad" } Frame { msec: 2832 - hash: "ac0295495345987d1e000f6bb2436927" + hash: "4f9a4b6de6a2969e4639076a8f7c258e" + } + Key { + type: 7 + key: 16777234 + modifiers: 536870912 + text: "1c" + autorep: false + count: 1 } Frame { msec: 2848 - hash: "ac0295495345987d1e000f6bb2436927" + hash: "a10f18aa686be2681a48082ec9f01df7" } Frame { msec: 2864 - hash: "ac0295495345987d1e000f6bb2436927" - } - Key { - type: 6 - key: 16777236 - modifiers: 536870912 - text: "1d" - autorep: false - count: 1 + hash: "b8f39a6cca377dd573429d879286dd63" } Frame { msec: 2880 @@ -830,279 +806,279 @@ VisualTest { } Frame { msec: 2896 - hash: "fc2bd8e7b3446c6c2da2f4ead51e4318" + hash: "3301e52a46efbc49882401c77853ffde" } Frame { msec: 2912 - hash: "6e67fdc1773c6db11ca2827db4e12c64" + hash: "0c614597f17496ebc701efe7b0c1fbb6" } Frame { msec: 2928 - hash: "b10afc5bf160b01d5567f7de26275460" + hash: "6dda2d6b034c932e279cf216c9b3e6ad" } Frame { msec: 2944 - hash: "9ccda1ba0f636e6abee5ca4a005a9117" + hash: "7bf08cd5fe3ad3f83bbef28f452e0545" } Frame { msec: 2960 - hash: "9f382f5b18fe7ae619e6a6ec0634541b" - } - Key { - type: 7 - key: 16777236 - modifiers: 536870912 - text: "1d" - autorep: false - count: 1 + hash: "1b7ebcf0e3d68e429cb04966120985e5" } Frame { msec: 2976 - hash: "40e6032e6352e62bf7ceea8c75f5d2ff" + hash: "1b7ebcf0e3d68e429cb04966120985e5" } Frame { msec: 2992 - hash: "fad61012614f65bc48e87a60cc50d31e" + hash: "1b7ebcf0e3d68e429cb04966120985e5" } Frame { msec: 3008 - hash: "94887e3dd76236972643db277943ea53" + hash: "1b7ebcf0e3d68e429cb04966120985e5" } Frame { msec: 3024 - hash: "336c908463796547dbf5a6459c56b62e" + hash: "1b7ebcf0e3d68e429cb04966120985e5" + } + Key { + type: 6 + key: 16777237 + modifiers: 536870912 + text: "1f" + autorep: false + count: 1 } Frame { msec: 3040 - hash: "c49cc92b98904e7d27d45ac0ae3cc4a2" + hash: "1b7ebcf0e3d68e429cb04966120985e5" } Frame { msec: 3056 - hash: "fcc551cb390b8727147b5e8cdca4d589" + hash: "0fe7d46e7c18ce7bb5a098c5c662d557" } Frame { msec: 3072 - hash: "95419b34afde55f67e48686327be2bff" + hash: "cd5df541cc1ed545bc27da9e4a937261" } Frame { msec: 3088 - hash: "1b7ebcf0e3d68e429cb04966120985e5" + hash: "35762467b83fee1870cff9b0436994d3" } Frame { msec: 3104 - hash: "1b7ebcf0e3d68e429cb04966120985e5" + hash: "75a620b42caabf5b1576041dbd4c2808" } Frame { msec: 3120 - hash: "1b7ebcf0e3d68e429cb04966120985e5" + hash: "f1b06290a6cbd48b8d3d4ce1e42ed754" } Frame { msec: 3136 - hash: "1b7ebcf0e3d68e429cb04966120985e5" - } - Key { - type: 6 - key: 16777236 - modifiers: 536870912 - text: "1d" - autorep: false - count: 1 + hash: "8e1a50dc082828587a4656117760a852" } Frame { msec: 3152 - hash: "1b7ebcf0e3d68e429cb04966120985e5" + hash: "aae8e5f166e736040138d8e222a844dd" } Frame { msec: 3168 - hash: "9d5ee2458abc5dfd56abfd42c906270f" + hash: "f69e5cf2bcb26fe49126776695b0b7e0" + } + Key { + type: 7 + key: 16777237 + modifiers: 536870912 + text: "1f" + autorep: false + count: 1 } Frame { msec: 3184 - hash: "c88c120d64171197e4050cb73b56a766" + hash: "7b482fece0255ea07496ef0545b008a2" } Frame { msec: 3200 - hash: "2ce6de97a8dac08b338e1ce9f20d55f4" + hash: "3f96eaebfebe8d4eeb347b201b59ab11" } Frame { msec: 3216 - hash: "99b2d2edbcacd660776ea62e1556043c" + hash: "9943626d2226c3be711c8213906133f0" } Frame { msec: 3232 - hash: "1b60b4f0350304899d4dc787a9dc7450" + hash: "fd5fd8177b3957c27f1de0d95621351a" } Frame { msec: 3248 - hash: "c037da8bc97ba8c391e616ff2b3aadd3" - } - Key { - type: 7 - key: 16777236 - modifiers: 536870912 - text: "1d" - autorep: false - count: 1 + hash: "506283ccfe9670633ce0bf60b437b37b" } Frame { msec: 3264 - hash: "cbb9a6cc0df3e76f46adca01e1ad2099" + hash: "506283ccfe9670633ce0bf60b437b37b" } Frame { msec: 3280 - hash: "9e2cc9298333f65cbc020c20665e01a9" + hash: "506283ccfe9670633ce0bf60b437b37b" } Frame { msec: 3296 - hash: "df31529d31b9f81aeeda0c249d0e0f2b" + hash: "506283ccfe9670633ce0bf60b437b37b" } Frame { msec: 3312 - hash: "c7034a0e8956c9f483c128a934d68fa7" + hash: "506283ccfe9670633ce0bf60b437b37b" } Frame { msec: 3328 - hash: "f0161b0d27757137bcb7fd3e6db2280c" + hash: "506283ccfe9670633ce0bf60b437b37b" } Frame { msec: 3344 - hash: "90dcbe13ea318bf970629bfd2d580a8d" + hash: "506283ccfe9670633ce0bf60b437b37b" } Frame { msec: 3360 - hash: "d4a48ee79a18cc5c0bc123fbb40c3efd" + hash: "506283ccfe9670633ce0bf60b437b37b" } Frame { msec: 3376 - hash: "d4a48ee79a18cc5c0bc123fbb40c3efd" + hash: "506283ccfe9670633ce0bf60b437b37b" + } + Key { + type: 6 + key: 16777236 + modifiers: 536870912 + text: "1d" + autorep: false + count: 1 } Frame { msec: 3392 - hash: "d4a48ee79a18cc5c0bc123fbb40c3efd" + hash: "506283ccfe9670633ce0bf60b437b37b" } Frame { msec: 3408 - hash: "d4a48ee79a18cc5c0bc123fbb40c3efd" + hash: "fb437f6c23561092a124e498f1604ff2" } Frame { msec: 3424 - hash: "d4a48ee79a18cc5c0bc123fbb40c3efd" + hash: "402ba144bbb7260eec4553e68eb35cda" } Frame { msec: 3440 - hash: "d4a48ee79a18cc5c0bc123fbb40c3efd" + hash: "76a983de9e85e0c81dfb8908252bd6c9" } Frame { msec: 3456 - hash: "d4a48ee79a18cc5c0bc123fbb40c3efd" - } - Key { - type: 6 - key: 16777236 - modifiers: 536870912 - text: "1d" - autorep: false - count: 1 + hash: "09219f55fae47a0afed887ebf68a36bc" } Frame { msec: 3472 - hash: "d4a48ee79a18cc5c0bc123fbb40c3efd" + hash: "344e81cc262093facef2f6a235a734dc" } Frame { msec: 3488 - hash: "55050bc52a955a427e6d845f4c7adea3" + hash: "8f1c5544eb537555b1c59a377b15e31d" } Frame { msec: 3504 - hash: "4a333ddc220f8da4f0fd8dfc7c0395a4" + hash: "606b9bb549fe2e4bbd09d67b7dea0d1a" + } + Key { + type: 7 + key: 16777236 + modifiers: 536870912 + text: "1d" + autorep: false + count: 1 } Frame { msec: 3520 - hash: "7ee451bcd930dac49246b50831f236ea" + hash: "63e239c97bd01a61cb31ef2869e7f47c" } Frame { msec: 3536 - hash: "c04a389510e141185f72e9362a268794" + hash: "f7c176550c39f8a1ad64590cf33a60a4" } Frame { msec: 3552 - hash: "d57af1c1048a517c629761dca1879101" + hash: "8581cb14ed81efdf9abb638b5e542cc3" } Frame { msec: 3568 - hash: "0303941402e587a7a46c6ee76c93b33e" - } - Key { - type: 7 - key: 16777236 - modifiers: 536870912 - text: "1d" - autorep: false - count: 1 + hash: "7a1e9354ecc49d8bc27d303c7bdc81f9" } Frame { msec: 3584 - hash: "ed13f12e4f3f2e80126ce921b213e9ba" + hash: "610288b97276ee03702ed8a814ef333d" } Frame { msec: 3600 - hash: "86b3cfd06900fb446c09748f41176dbe" + hash: "8d36bc2f3ab614d19f3ec8821f3e81ed" } Frame { msec: 3616 - hash: "50b1cfef8e5c0e134c0825ab7a94a45f" + hash: "8d36bc2f3ab614d19f3ec8821f3e81ed" } Frame { msec: 3632 - hash: "c84e56751463bc69b9ad7729bf5895e4" + hash: "8d36bc2f3ab614d19f3ec8821f3e81ed" } Frame { msec: 3648 - hash: "fa846e78b01651191def27deab9665ea" + hash: "8d36bc2f3ab614d19f3ec8821f3e81ed" } Frame { msec: 3664 - hash: "e9ad89402275acbe4f504ab65bba0e4a" + hash: "8d36bc2f3ab614d19f3ec8821f3e81ed" } Frame { msec: 3680 - hash: "c7c4d839f5791578eda5a65b823e4d49" + hash: "8d36bc2f3ab614d19f3ec8821f3e81ed" } Frame { msec: 3696 - hash: "8dde1718ff572566322d845e7167522d" + hash: "8d36bc2f3ab614d19f3ec8821f3e81ed" } Frame { msec: 3712 - hash: "8fd9942e967d012e357a3dc5f83837a6" + hash: "8d36bc2f3ab614d19f3ec8821f3e81ed" } Frame { msec: 3728 - hash: "c4da9fd821add0816d6d0a1aac4b4736" + hash: "8d36bc2f3ab614d19f3ec8821f3e81ed" } Frame { msec: 3744 - hash: "119e88b3f87362b43d7b8c422dc87b7d" + hash: "8d36bc2f3ab614d19f3ec8821f3e81ed" } Frame { msec: 3760 - hash: "942e48d515c3982c73739b3a270e6521" + hash: "8d36bc2f3ab614d19f3ec8821f3e81ed" } Frame { msec: 3776 - hash: "623d099d333e663ff398566299f2287b" + hash: "8d36bc2f3ab614d19f3ec8821f3e81ed" + } + Key { + type: 6 + key: 16777236 + modifiers: 536870912 + text: "1d" + autorep: false + count: 1 } Frame { msec: 3792 - hash: "cb23f7866992cfc44d240f4969b2f201" + hash: "8d36bc2f3ab614d19f3ec8821f3e81ed" } Frame { msec: 3808 - hash: "e8d400b1c3f298817597c2602b2d8be6" + hash: "9713c6b9aff051dd0cc45c545d34b688" } Frame { msec: 3824 - hash: "184587e1c69062c2324e5f001eb92a6b" + hash: "1f8fd4d759e343720a8681b6ad126b72" } Frame { msec: 3840 @@ -1110,182 +1086,158 @@ VisualTest { } Frame { msec: 3856 - hash: "66ba6777a409b055b9cbe94e80480e07" + hash: "8550d916d91a40b0c3a886b962e07ffc" + } + Key { + type: 7 + key: 16777236 + modifiers: 536870912 + text: "1d" + autorep: false + count: 1 } Frame { msec: 3872 - hash: "cc3020c9b243b08f409a58d12b84dcb2" + hash: "df0c2e474139e79429bfc19c79a65ef8" } Frame { msec: 3888 - hash: "cc3020c9b243b08f409a58d12b84dcb2" + hash: "acfb99d081d754276e5ed59bd590aeab" } Frame { msec: 3904 - hash: "cc3020c9b243b08f409a58d12b84dcb2" + hash: "2b34cd101b442f7a3de2893fd5514c16" } Frame { msec: 3920 - hash: "cc3020c9b243b08f409a58d12b84dcb2" + hash: "df92ced66faa1d59354d8010278438ec" } Frame { msec: 3936 - hash: "cc3020c9b243b08f409a58d12b84dcb2" + hash: "dd39a8e6fa3784453461193a6da416cd" } Frame { msec: 3952 - hash: "cc3020c9b243b08f409a58d12b84dcb2" + hash: "5670e8f91ea2df451f0974a51cd77d7d" } Frame { msec: 3968 - hash: "cc3020c9b243b08f409a58d12b84dcb2" + hash: "74b97a09bfe7400872a2c6214e04a5ac" } Frame { msec: 3984 - hash: "cc3020c9b243b08f409a58d12b84dcb2" + hash: "cfd55b963506ab54cf09a7311e84bcc9" } Frame { msec: 4000 - hash: "cc3020c9b243b08f409a58d12b84dcb2" + hash: "59657ee9293c03f064d62de826931435" } Frame { msec: 4016 - hash: "cc3020c9b243b08f409a58d12b84dcb2" + hash: "31f6a4adf31be5ed0af0ea4097e3acee" } Frame { msec: 4032 - hash: "cc3020c9b243b08f409a58d12b84dcb2" + hash: "8f5bfc40c8cdb2f8ce69adb72e7efe76" } Frame { msec: 4048 - hash: "cc3020c9b243b08f409a58d12b84dcb2" + hash: "9dc38985113124130e2ca7950e0bd144" } Frame { msec: 4064 - hash: "cc3020c9b243b08f409a58d12b84dcb2" + hash: "786e6e8b9e74876a6f393d61a78b8fc7" } Frame { msec: 4080 - hash: "cc3020c9b243b08f409a58d12b84dcb2" - } - Key { - type: 6 - key: 16777236 - modifiers: 536870912 - text: "1d" - autorep: false - count: 1 + hash: "1f4d59a4e4684aab309363a711b30006" } Frame { msec: 4096 - hash: "cc3020c9b243b08f409a58d12b84dcb2" + hash: "a11e332de151b43051796e16dbcf75c3" } Frame { msec: 4112 - hash: "66ba6777a409b055b9cbe94e80480e07" + hash: "1a0e82029ae107cb2a018786752433ff" } Frame { msec: 4128 - hash: "398a769979b6adfbe42bd4ae61ffc9d5" + hash: "b14c51977c7fbf51f9cf6fec309bff6a" } Frame { msec: 4144 - hash: "184587e1c69062c2324e5f001eb92a6b" + hash: "2b418f811992399c3f87c268db745632" } Frame { msec: 4160 - hash: "e8d400b1c3f298817597c2602b2d8be6" + hash: "0e9a056207053ca98c4e9f42de244c62" } Frame { msec: 4176 - hash: "cb23f7866992cfc44d240f4969b2f201" - } - Key { - type: 7 - key: 16777236 - modifiers: 536870912 - text: "1d" - autorep: false - count: 1 + hash: "1945c3f9e3a1337e7d111e15adea345f" } Frame { msec: 4192 - hash: "623d099d333e663ff398566299f2287b" + hash: "d8cf36b6cc15a01ead815d814ae81cb4" } Frame { msec: 4208 - hash: "942e48d515c3982c73739b3a270e6521" + hash: "d8cf36b6cc15a01ead815d814ae81cb4" } Frame { msec: 4224 - hash: "119e88b3f87362b43d7b8c422dc87b7d" + hash: "d8cf36b6cc15a01ead815d814ae81cb4" } Frame { msec: 4240 - hash: "c4da9fd821add0816d6d0a1aac4b4736" + hash: "d8cf36b6cc15a01ead815d814ae81cb4" } Frame { msec: 4256 - hash: "8fd9942e967d012e357a3dc5f83837a6" + hash: "d8cf36b6cc15a01ead815d814ae81cb4" } Frame { msec: 4272 - hash: "8dde1718ff572566322d845e7167522d" + hash: "d8cf36b6cc15a01ead815d814ae81cb4" } Frame { msec: 4288 - hash: "c7c4d839f5791578eda5a65b823e4d49" + hash: "d8cf36b6cc15a01ead815d814ae81cb4" } Frame { msec: 4304 - hash: "506283ccfe9670633ce0bf60b437b37b" + hash: "d8cf36b6cc15a01ead815d814ae81cb4" } Frame { msec: 4320 - hash: "506283ccfe9670633ce0bf60b437b37b" + hash: "d8cf36b6cc15a01ead815d814ae81cb4" } Frame { msec: 4336 - hash: "506283ccfe9670633ce0bf60b437b37b" + hash: "d8cf36b6cc15a01ead815d814ae81cb4" } Frame { msec: 4352 - hash: "506283ccfe9670633ce0bf60b437b37b" - } - Key { - type: 6 - key: 16777236 - modifiers: 536870912 - text: "1d" - autorep: false - count: 1 + hash: "d8cf36b6cc15a01ead815d814ae81cb4" } Frame { msec: 4368 - hash: "506283ccfe9670633ce0bf60b437b37b" + hash: "d8cf36b6cc15a01ead815d814ae81cb4" } Frame { msec: 4384 - hash: "fb437f6c23561092a124e498f1604ff2" + hash: "d8cf36b6cc15a01ead815d814ae81cb4" } Frame { msec: 4400 - hash: "402ba144bbb7260eec4553e68eb35cda" + hash: "d8cf36b6cc15a01ead815d814ae81cb4" } Frame { msec: 4416 - hash: "76a983de9e85e0c81dfb8908252bd6c9" - } - Frame { - msec: 4432 - hash: "09219f55fae47a0afed887ebf68a36bc" - } - Frame { - msec: 4448 - hash: "344e81cc262093facef2f6a235a734dc" + hash: "d8cf36b6cc15a01ead815d814ae81cb4" } Key { - type: 7 + type: 6 key: 16777236 modifiers: 536870912 text: "1d" @@ -1293,104 +1245,104 @@ VisualTest { count: 1 } Frame { + msec: 4432 + hash: "d8cf36b6cc15a01ead815d814ae81cb4" + } + Frame { + msec: 4448 + hash: "1945c3f9e3a1337e7d111e15adea345f" + } + Frame { msec: 4464 - hash: "8f1c5544eb537555b1c59a377b15e31d" + hash: "0e9a056207053ca98c4e9f42de244c62" } Frame { msec: 4480 - hash: "606b9bb549fe2e4bbd09d67b7dea0d1a" + hash: "2b418f811992399c3f87c268db745632" } Frame { msec: 4496 - hash: "63e239c97bd01a61cb31ef2869e7f47c" + hash: "b14c51977c7fbf51f9cf6fec309bff6a" } Frame { msec: 4512 - hash: "f7c176550c39f8a1ad64590cf33a60a4" + hash: "1a0e82029ae107cb2a018786752433ff" } Frame { msec: 4528 - hash: "8581cb14ed81efdf9abb638b5e542cc3" + hash: "a11e332de151b43051796e16dbcf75c3" + } + Key { + type: 7 + key: 16777236 + modifiers: 536870912 + text: "1d" + autorep: false + count: 1 } Frame { msec: 4544 - hash: "7a1e9354ecc49d8bc27d303c7bdc81f9" + hash: "1f4d59a4e4684aab309363a711b30006" } Frame { msec: 4560 - hash: "610288b97276ee03702ed8a814ef333d" + hash: "786e6e8b9e74876a6f393d61a78b8fc7" } Frame { msec: 4576 - hash: "8d36bc2f3ab614d19f3ec8821f3e81ed" + hash: "9dc38985113124130e2ca7950e0bd144" } Frame { msec: 4592 - hash: "8d36bc2f3ab614d19f3ec8821f3e81ed" + hash: "8f5bfc40c8cdb2f8ce69adb72e7efe76" } Frame { msec: 4608 - hash: "8d36bc2f3ab614d19f3ec8821f3e81ed" + hash: "31f6a4adf31be5ed0af0ea4097e3acee" } Frame { msec: 4624 - hash: "8d36bc2f3ab614d19f3ec8821f3e81ed" + hash: "59657ee9293c03f064d62de826931435" } Frame { msec: 4640 - hash: "8d36bc2f3ab614d19f3ec8821f3e81ed" + hash: "23aa652a0de7fced4a780d72f0940a1b" } Frame { msec: 4656 - hash: "8d36bc2f3ab614d19f3ec8821f3e81ed" - } - Key { - type: 6 - key: 16777236 - modifiers: 536870912 - text: "1d" - autorep: false - count: 1 + hash: "23aa652a0de7fced4a780d72f0940a1b" } Frame { msec: 4672 - hash: "8d36bc2f3ab614d19f3ec8821f3e81ed" + hash: "23aa652a0de7fced4a780d72f0940a1b" } Frame { msec: 4688 - hash: "9713c6b9aff051dd0cc45c545d34b688" + hash: "23aa652a0de7fced4a780d72f0940a1b" } Frame { msec: 4704 - hash: "1f8fd4d759e343720a8681b6ad126b72" + hash: "23aa652a0de7fced4a780d72f0940a1b" } Frame { msec: 4720 - hash: "2d7c0164278a8a07117315f790224688" + hash: "23aa652a0de7fced4a780d72f0940a1b" } Frame { msec: 4736 - hash: "8550d916d91a40b0c3a886b962e07ffc" + hash: "23aa652a0de7fced4a780d72f0940a1b" } Frame { msec: 4752 - hash: "df0c2e474139e79429bfc19c79a65ef8" + hash: "23aa652a0de7fced4a780d72f0940a1b" } Frame { msec: 4768 - hash: "acfb99d081d754276e5ed59bd590aeab" - } - Key { - type: 7 - key: 16777236 - modifiers: 536870912 - text: "1d" - autorep: false - count: 1 + hash: "23aa652a0de7fced4a780d72f0940a1b" } Frame { msec: 4784 - hash: "2b34cd101b442f7a3de2893fd5514c16" + hash: "23aa652a0de7fced4a780d72f0940a1b" } Frame { msec: 4800 @@ -1398,271 +1350,271 @@ VisualTest { } Frame { msec: 4816 - hash: "dd39a8e6fa3784453461193a6da416cd" + hash: "23aa652a0de7fced4a780d72f0940a1b" + } + Key { + type: 6 + key: 16777236 + modifiers: 536870912 + text: "1d" + autorep: false + count: 1 } Frame { msec: 4832 - hash: "5670e8f91ea2df451f0974a51cd77d7d" + hash: "23aa652a0de7fced4a780d72f0940a1b" } Frame { msec: 4848 - hash: "74b97a09bfe7400872a2c6214e04a5ac" + hash: "d46eea049d6156a5e85d9c6811d9d367" } Frame { msec: 4864 - hash: "cfd55b963506ab54cf09a7311e84bcc9" + hash: "d5796ae85247cb8502f92f0d044e4e1f" } Frame { msec: 4880 - hash: "59657ee9293c03f064d62de826931435" + hash: "90987ac49c1a4e6b668436e3ff631e6c" } Frame { msec: 4896 - hash: "31f6a4adf31be5ed0af0ea4097e3acee" + hash: "c38d69759ad80242b1fe83ba191cd421" } Frame { msec: 4912 - hash: "8f5bfc40c8cdb2f8ce69adb72e7efe76" + hash: "09d08aed76a04e492d8a39cc4dd2b8f5" + } + Key { + type: 7 + key: 16777236 + modifiers: 536870912 + text: "1d" + autorep: false + count: 1 } Frame { msec: 4928 - hash: "9dc38985113124130e2ca7950e0bd144" + hash: "9671d2ff9a2ef46ce3c750a1965404a4" } Frame { msec: 4944 - hash: "786e6e8b9e74876a6f393d61a78b8fc7" + hash: "f55857816d666ece4a7987a70883b3d1" } Frame { msec: 4960 - hash: "1f4d59a4e4684aab309363a711b30006" + hash: "a2d80527b30316d9120b057bbfcfa666" } Frame { msec: 4976 - hash: "a11e332de151b43051796e16dbcf75c3" + hash: "87ca69287c1469cbc7e65d1673016de7" } Frame { msec: 4992 - hash: "1a0e82029ae107cb2a018786752433ff" + hash: "51588c7ebbe2dcd87a3c9bebf028aee3" } Frame { msec: 5008 - hash: "b14c51977c7fbf51f9cf6fec309bff6a" + hash: "917a9a171273fe9fd4c450eeed6f58ed" } Frame { msec: 5024 - hash: "2b418f811992399c3f87c268db745632" + hash: "6e7ade250a9a9692caee2a220dd2ac53" } Frame { msec: 5040 - hash: "0e9a056207053ca98c4e9f42de244c62" + hash: "ca2dcb16d553889a3a57b48700c2a595" } Frame { msec: 5056 - hash: "1945c3f9e3a1337e7d111e15adea345f" + hash: "ca2dcb16d553889a3a57b48700c2a595" } Frame { msec: 5072 - hash: "d8cf36b6cc15a01ead815d814ae81cb4" + hash: "ca2dcb16d553889a3a57b48700c2a595" } Frame { msec: 5088 - hash: "d8cf36b6cc15a01ead815d814ae81cb4" + hash: "ca2dcb16d553889a3a57b48700c2a595" } Frame { msec: 5104 - hash: "d8cf36b6cc15a01ead815d814ae81cb4" + hash: "ca2dcb16d553889a3a57b48700c2a595" } Frame { msec: 5120 - hash: "d8cf36b6cc15a01ead815d814ae81cb4" + hash: "ca2dcb16d553889a3a57b48700c2a595" } Frame { msec: 5136 - hash: "d8cf36b6cc15a01ead815d814ae81cb4" + hash: "ca2dcb16d553889a3a57b48700c2a595" } Frame { msec: 5152 - hash: "d8cf36b6cc15a01ead815d814ae81cb4" + hash: "ca2dcb16d553889a3a57b48700c2a595" } Frame { msec: 5168 - hash: "d8cf36b6cc15a01ead815d814ae81cb4" + hash: "ca2dcb16d553889a3a57b48700c2a595" } Frame { msec: 5184 - hash: "d8cf36b6cc15a01ead815d814ae81cb4" + hash: "ca2dcb16d553889a3a57b48700c2a595" } Frame { msec: 5200 - hash: "d8cf36b6cc15a01ead815d814ae81cb4" + hash: "ca2dcb16d553889a3a57b48700c2a595" } Frame { msec: 5216 - hash: "d8cf36b6cc15a01ead815d814ae81cb4" + hash: "ca2dcb16d553889a3a57b48700c2a595" } Frame { msec: 5232 - hash: "d8cf36b6cc15a01ead815d814ae81cb4" + hash: "ca2dcb16d553889a3a57b48700c2a595" } Frame { msec: 5248 - hash: "d8cf36b6cc15a01ead815d814ae81cb4" + hash: "ca2dcb16d553889a3a57b48700c2a595" } Frame { msec: 5264 - hash: "d8cf36b6cc15a01ead815d814ae81cb4" + hash: "ca2dcb16d553889a3a57b48700c2a595" } Frame { msec: 5280 - hash: "d8cf36b6cc15a01ead815d814ae81cb4" + hash: "ca2dcb16d553889a3a57b48700c2a595" } Frame { msec: 5296 - hash: "d8cf36b6cc15a01ead815d814ae81cb4" + hash: "ca2dcb16d553889a3a57b48700c2a595" } Frame { msec: 5312 - hash: "d8cf36b6cc15a01ead815d814ae81cb4" + hash: "ca2dcb16d553889a3a57b48700c2a595" } Frame { msec: 5328 - hash: "d8cf36b6cc15a01ead815d814ae81cb4" - } - Key { - type: 6 - key: 16777236 - modifiers: 536870912 - text: "1d" - autorep: false - count: 1 + hash: "ca2dcb16d553889a3a57b48700c2a595" } Frame { msec: 5344 - hash: "d8cf36b6cc15a01ead815d814ae81cb4" + hash: "ca2dcb16d553889a3a57b48700c2a595" } Frame { msec: 5360 - hash: "1945c3f9e3a1337e7d111e15adea345f" + hash: "ca2dcb16d553889a3a57b48700c2a595" } Frame { msec: 5376 - hash: "0e9a056207053ca98c4e9f42de244c62" + hash: "ca2dcb16d553889a3a57b48700c2a595" } Frame { msec: 5392 - hash: "2b418f811992399c3f87c268db745632" + hash: "ca2dcb16d553889a3a57b48700c2a595" } Frame { msec: 5408 - hash: "b14c51977c7fbf51f9cf6fec309bff6a" + hash: "ca2dcb16d553889a3a57b48700c2a595" } Frame { msec: 5424 - hash: "1a0e82029ae107cb2a018786752433ff" - } - Key { - type: 7 - key: 16777236 - modifiers: 536870912 - text: "1d" - autorep: false - count: 1 + hash: "ca2dcb16d553889a3a57b48700c2a595" } Frame { msec: 5440 - hash: "a11e332de151b43051796e16dbcf75c3" + hash: "ca2dcb16d553889a3a57b48700c2a595" } Frame { msec: 5456 - hash: "1f4d59a4e4684aab309363a711b30006" + hash: "ca2dcb16d553889a3a57b48700c2a595" } Frame { msec: 5472 - hash: "786e6e8b9e74876a6f393d61a78b8fc7" + hash: "ca2dcb16d553889a3a57b48700c2a595" } Frame { msec: 5488 - hash: "9dc38985113124130e2ca7950e0bd144" + hash: "ca2dcb16d553889a3a57b48700c2a595" } Frame { msec: 5504 - hash: "8f5bfc40c8cdb2f8ce69adb72e7efe76" + hash: "ca2dcb16d553889a3a57b48700c2a595" } Frame { msec: 5520 - hash: "31f6a4adf31be5ed0af0ea4097e3acee" + hash: "ca2dcb16d553889a3a57b48700c2a595" } Frame { msec: 5536 - hash: "59657ee9293c03f064d62de826931435" + hash: "ca2dcb16d553889a3a57b48700c2a595" } Frame { msec: 5552 - hash: "23aa652a0de7fced4a780d72f0940a1b" + hash: "ca2dcb16d553889a3a57b48700c2a595" } Frame { msec: 5568 - hash: "23aa652a0de7fced4a780d72f0940a1b" + hash: "ca2dcb16d553889a3a57b48700c2a595" } Frame { msec: 5584 - hash: "23aa652a0de7fced4a780d72f0940a1b" + hash: "ca2dcb16d553889a3a57b48700c2a595" + } + Frame { + msec: 5600 + hash: "ca2dcb16d553889a3a57b48700c2a595" } Key { type: 6 - key: 16777236 + key: 16777237 modifiers: 536870912 - text: "1d" + text: "1f" autorep: false count: 1 } Frame { - msec: 5600 - hash: "23aa652a0de7fced4a780d72f0940a1b" - } - Frame { msec: 5616 - hash: "d46eea049d6156a5e85d9c6811d9d367" + hash: "ca2dcb16d553889a3a57b48700c2a595" } Frame { msec: 5632 - hash: "d5796ae85247cb8502f92f0d044e4e1f" + hash: "c5c9aab9bea757f1c451e89df72bd836" } Frame { msec: 5648 - hash: "90987ac49c1a4e6b668436e3ff631e6c" + hash: "a8cf3085f8c3b743f3f15db1ad7b8801" } Frame { msec: 5664 - hash: "c38d69759ad80242b1fe83ba191cd421" + hash: "c25a92050eced1c304506572723273a3" } Frame { msec: 5680 - hash: "09d08aed76a04e492d8a39cc4dd2b8f5" + hash: "cff981039c1a3eb6c3c1a20f142fbae2" } Frame { msec: 5696 - hash: "9671d2ff9a2ef46ce3c750a1965404a4" + hash: "930765587fe3355873bbdff66b812b74" + } + Frame { + msec: 5712 + hash: "6a60f97c7b39add465e1bd366e9c644b" } Key { type: 7 - key: 16777236 + key: 16777237 modifiers: 536870912 - text: "1d" + text: "1f" autorep: false count: 1 } Frame { - msec: 5712 - hash: "f55857816d666ece4a7987a70883b3d1" - } - Frame { msec: 5728 - hash: "a2d80527b30316d9120b057bbfcfa666" + hash: "7a1fd3c488d1064a75dc598c9a773291" } Frame { msec: 5744 - hash: "87ca69287c1469cbc7e65d1673016de7" + hash: "e2ecd7e68e27eb3d2dcb5e368d3ee5a0" } Frame { msec: 5760 @@ -1670,271 +1622,255 @@ VisualTest { } Frame { msec: 5776 - hash: "917a9a171273fe9fd4c450eeed6f58ed" + hash: "20f3aaca2efc3066076e73d1d95e5363" } Frame { msec: 5792 - hash: "6e7ade250a9a9692caee2a220dd2ac53" + hash: "b18d476cadc36e22dddc3185f595c123" } Frame { msec: 5808 - hash: "ca2dcb16d553889a3a57b48700c2a595" + hash: "8cbc47555178c8ee355774eab17b4b19" } Frame { msec: 5824 - hash: "ca2dcb16d553889a3a57b48700c2a595" + hash: "e488fb76fb550fba51b95bee3fee80d5" } Frame { msec: 5840 - hash: "ca2dcb16d553889a3a57b48700c2a595" + hash: "e488fb76fb550fba51b95bee3fee80d5" } Frame { msec: 5856 - hash: "ca2dcb16d553889a3a57b48700c2a595" + hash: "e488fb76fb550fba51b95bee3fee80d5" } Frame { msec: 5872 - hash: "ca2dcb16d553889a3a57b48700c2a595" + hash: "e488fb76fb550fba51b95bee3fee80d5" } Frame { msec: 5888 - hash: "ca2dcb16d553889a3a57b48700c2a595" + hash: "e488fb76fb550fba51b95bee3fee80d5" } Frame { msec: 5904 - hash: "ca2dcb16d553889a3a57b48700c2a595" - } - Key { - type: 6 - key: 16777236 - modifiers: 536870912 - text: "1d" - autorep: false - count: 1 + hash: "e488fb76fb550fba51b95bee3fee80d5" } Frame { msec: 5920 - hash: "ca2dcb16d553889a3a57b48700c2a595" + hash: "e488fb76fb550fba51b95bee3fee80d5" } Frame { msec: 5936 - hash: "024ee59c130eca0a6e935f4715510bba" + hash: "e488fb76fb550fba51b95bee3fee80d5" } Frame { msec: 5952 - hash: "d478be3737e00319cc90e9c53fc8cdca" + hash: "e488fb76fb550fba51b95bee3fee80d5" } Frame { msec: 5968 - hash: "4d392f0852a197d5875cad45427092c4" + hash: "e488fb76fb550fba51b95bee3fee80d5" } Frame { msec: 5984 - hash: "b2a9d598fb16a331b1ae609839b02164" + hash: "e488fb76fb550fba51b95bee3fee80d5" } Frame { msec: 6000 - hash: "c0db11e439225dc4b725a7f1d7ae9840" - } - Key { - type: 7 - key: 16777236 - modifiers: 536870912 - text: "1d" - autorep: false - count: 1 + hash: "e488fb76fb550fba51b95bee3fee80d5" } Frame { msec: 6016 - hash: "9f5e1ef8af0aaf44c755f35304f5179b" + hash: "e488fb76fb550fba51b95bee3fee80d5" } Frame { msec: 6032 - hash: "dee750b713080dd6c6191a82d7422161" + hash: "e488fb76fb550fba51b95bee3fee80d5" } Frame { msec: 6048 - hash: "4f76165ee19bbcb8da190f206eb90c90" + hash: "e488fb76fb550fba51b95bee3fee80d5" } Frame { msec: 6064 - hash: "3bc9e612703a5462b43aef4e7160b0ae" + hash: "e488fb76fb550fba51b95bee3fee80d5" } Frame { msec: 6080 - hash: "8223bec3511bffcebdd6be81e2966767" + hash: "e488fb76fb550fba51b95bee3fee80d5" } Frame { msec: 6096 - hash: "db636385d0e73fcb56bd7c0f0c0d7e10" + hash: "e488fb76fb550fba51b95bee3fee80d5" + } + Key { + type: 6 + key: 16777237 + modifiers: 536870912 + text: "1f" + autorep: false + count: 1 } Frame { msec: 6112 - hash: "eeb33d29d7cf77b59372774ee795dd78" + hash: "e488fb76fb550fba51b95bee3fee80d5" } Frame { msec: 6128 - hash: "7c1d76b6b3c9c9c39cb6f26cbfa7b5ff" + hash: "8c2fab0c73d1cfbeeb0ec937085d6b3b" } Frame { msec: 6144 - hash: "8efc144cfcc12e97db3d0359c57707eb" + hash: "5d9353517177ef7c6314d8a65cb009ec" } Frame { msec: 6160 - hash: "7e8ea890b8ab2ed2a736a2fd108a24a6" + hash: "ed8de504f7e2028cd369c1555314fd81" } Frame { msec: 6176 - hash: "9886d9ebe7fe17ad487cf449882a0780" + hash: "8fe84d8badbe5bd08d097ba6bda10611" } Frame { msec: 6192 - hash: "2e62826b1fa6e0bdec3a93a6964ae501" + hash: "d77419a55a3cf933505e793bb258e6af" } Frame { msec: 6208 - hash: "47c505867f2194100f4952a9548d7b44" + hash: "457ac82be02e2f5e08e51ccc78c94781" } Frame { msec: 6224 - hash: "4326125610d9da145999e11c2417bf9e" + hash: "e57e2852f065afff9c24c5bc9f29edee" } Frame { msec: 6240 - hash: "dcdb1a8765c16ba563421e36b30e6d33" + hash: "f72cd6ad3324936c3a18c264e23e05a9" + } + Key { + type: 7 + key: 16777237 + modifiers: 536870912 + text: "1f" + autorep: false + count: 1 } Frame { msec: 6256 - hash: "6d1486fd8d72564de5d936d66f177dd5" + hash: "a4bf7eae6fc7a05239d09421ae95304a" } Frame { msec: 6272 - hash: "e277649cde67f64b0e9b1a76d7878c8d" + hash: "423f3bd07df8bee25818644c07201a3c" } Frame { msec: 6288 - hash: "54307b1f3b8ce30ea4f49e6c2b01a6c3" + hash: "225e9c698424f287b9458b7839b4479b" } Frame { msec: 6304 - hash: "853a09f007d7046f0d12b7a829029861" + hash: "0f463db7e4acc184a4efb7b5e5c0d397" } Frame { msec: 6320 - hash: "d80a513529cb80658a7696c34c33a7dd" + hash: "b92ad1c3be35c46c0d12bf7701c56f23" } Frame { msec: 6336 - hash: "d80a513529cb80658a7696c34c33a7dd" + hash: "b92ad1c3be35c46c0d12bf7701c56f23" } Frame { msec: 6352 - hash: "d80a513529cb80658a7696c34c33a7dd" + hash: "b92ad1c3be35c46c0d12bf7701c56f23" } Frame { msec: 6368 - hash: "d80a513529cb80658a7696c34c33a7dd" + hash: "b92ad1c3be35c46c0d12bf7701c56f23" } Frame { msec: 6384 - hash: "d80a513529cb80658a7696c34c33a7dd" + hash: "b92ad1c3be35c46c0d12bf7701c56f23" } Frame { msec: 6400 - hash: "d80a513529cb80658a7696c34c33a7dd" + hash: "b92ad1c3be35c46c0d12bf7701c56f23" } Frame { msec: 6416 - hash: "d80a513529cb80658a7696c34c33a7dd" + hash: "b92ad1c3be35c46c0d12bf7701c56f23" } Frame { msec: 6432 - hash: "d80a513529cb80658a7696c34c33a7dd" + hash: "b92ad1c3be35c46c0d12bf7701c56f23" } Frame { msec: 6448 - hash: "d80a513529cb80658a7696c34c33a7dd" + hash: "b92ad1c3be35c46c0d12bf7701c56f23" } Frame { msec: 6464 - hash: "d80a513529cb80658a7696c34c33a7dd" + hash: "b92ad1c3be35c46c0d12bf7701c56f23" } Frame { msec: 6480 - hash: "d80a513529cb80658a7696c34c33a7dd" + hash: "b92ad1c3be35c46c0d12bf7701c56f23" } Frame { msec: 6496 - hash: "d80a513529cb80658a7696c34c33a7dd" + hash: "b92ad1c3be35c46c0d12bf7701c56f23" } Frame { msec: 6512 - hash: "d80a513529cb80658a7696c34c33a7dd" + hash: "b92ad1c3be35c46c0d12bf7701c56f23" } Frame { msec: 6528 - hash: "d80a513529cb80658a7696c34c33a7dd" + hash: "b92ad1c3be35c46c0d12bf7701c56f23" } Frame { msec: 6544 - hash: "d80a513529cb80658a7696c34c33a7dd" + hash: "b92ad1c3be35c46c0d12bf7701c56f23" } Frame { msec: 6560 - hash: "d80a513529cb80658a7696c34c33a7dd" + hash: "b92ad1c3be35c46c0d12bf7701c56f23" } Frame { msec: 6576 - hash: "d80a513529cb80658a7696c34c33a7dd" - } - Key { - type: 6 - key: 16777236 - modifiers: 536870912 - text: "1d" - autorep: false - count: 1 + hash: "b92ad1c3be35c46c0d12bf7701c56f23" } Frame { msec: 6592 - hash: "d80a513529cb80658a7696c34c33a7dd" + hash: "b92ad1c3be35c46c0d12bf7701c56f23" } Frame { msec: 6608 - hash: "853a09f007d7046f0d12b7a829029861" + hash: "b92ad1c3be35c46c0d12bf7701c56f23" } Frame { msec: 6624 - hash: "54307b1f3b8ce30ea4f49e6c2b01a6c3" + hash: "b92ad1c3be35c46c0d12bf7701c56f23" } Frame { msec: 6640 - hash: "e277649cde67f64b0e9b1a76d7878c8d" + hash: "b92ad1c3be35c46c0d12bf7701c56f23" } Frame { msec: 6656 - hash: "6d1486fd8d72564de5d936d66f177dd5" + hash: "b92ad1c3be35c46c0d12bf7701c56f23" } Frame { msec: 6672 - hash: "dcdb1a8765c16ba563421e36b30e6d33" - } - Key { - type: 7 - key: 16777236 - modifiers: 536870912 - text: "1d" - autorep: false - count: 1 + hash: "b92ad1c3be35c46c0d12bf7701c56f23" } Frame { msec: 6688 - hash: "4326125610d9da145999e11c2417bf9e" + hash: "b92ad1c3be35c46c0d12bf7701c56f23" } Frame { msec: 6704 - hash: "47c505867f2194100f4952a9548d7b44" + hash: "b92ad1c3be35c46c0d12bf7701c56f23" } Frame { msec: 6720 @@ -1942,271 +1878,255 @@ VisualTest { } Frame { msec: 6736 - hash: "9886d9ebe7fe17ad487cf449882a0780" + hash: "b92ad1c3be35c46c0d12bf7701c56f23" + } + Key { + type: 6 + key: 16777237 + modifiers: 536870912 + text: "1f" + autorep: false + count: 1 } Frame { msec: 6752 - hash: "7e8ea890b8ab2ed2a736a2fd108a24a6" + hash: "b92ad1c3be35c46c0d12bf7701c56f23" } Frame { msec: 6768 - hash: "8efc144cfcc12e97db3d0359c57707eb" + hash: "738f6bcc043d221488285c7e529b1d1c" } Frame { msec: 6784 - hash: "7c1d76b6b3c9c9c39cb6f26cbfa7b5ff" + hash: "cb0a4e8e79372dd67e8ecfea2143a47c" } Frame { msec: 6800 - hash: "8033aa34452963bf474c32357d657291" + hash: "544d1825b36f4e7950c1a62b26c1fd9b" } Frame { msec: 6816 - hash: "8033aa34452963bf474c32357d657291" + hash: "df99396622342b4f092b0db34a224c3d" } Frame { msec: 6832 - hash: "8033aa34452963bf474c32357d657291" + hash: "47391f51e5df2249a6ca1f1f6e8e80e0" + } + Key { + type: 7 + key: 16777237 + modifiers: 536870912 + text: "1f" + autorep: false + count: 1 } Frame { msec: 6848 - hash: "8033aa34452963bf474c32357d657291" + hash: "d8079a874ca18d00aeeb611effcbeb8b" } Frame { msec: 6864 - hash: "8033aa34452963bf474c32357d657291" - } - Key { - type: 6 - key: 16777236 - modifiers: 536870912 - text: "1d" - autorep: false - count: 1 + hash: "4cfd9264af6935aca425da75ebb2d7cc" } Frame { msec: 6880 - hash: "8033aa34452963bf474c32357d657291" + hash: "aee6547cb653cd2d56d07285d836149d" } Frame { msec: 6896 - hash: "85281bb31dd2a4a02dccc8ecab2c7d05" + hash: "969720f17eae51258e2e143e14bfa737" } Frame { msec: 6912 - hash: "83b05ae44a1e20426652ac75899492cb" + hash: "b6a0ee0b24737bc0045ff3fb68cfe3ad" } Frame { msec: 6928 - hash: "60ef7f46a0a2c9172f2bab8380f893fd" + hash: "b6a0ee0b24737bc0045ff3fb68cfe3ad" } Frame { msec: 6944 - hash: "278eb628024c7b8f4c101ae0c7ed6149" + hash: "b6a0ee0b24737bc0045ff3fb68cfe3ad" } Frame { msec: 6960 - hash: "92c830a5f89cf662413b127a06c605a3" - } - Key { - type: 7 - key: 16777236 - modifiers: 536870912 - text: "1d" - autorep: false - count: 1 + hash: "b6a0ee0b24737bc0045ff3fb68cfe3ad" } Frame { msec: 6976 - hash: "cee562140d9f2a3702fa6fd059f06473" + hash: "b6a0ee0b24737bc0045ff3fb68cfe3ad" } Frame { msec: 6992 - hash: "bd2c954c86c647d1e7d318ac8aa82127" + hash: "b6a0ee0b24737bc0045ff3fb68cfe3ad" } Frame { msec: 7008 - hash: "c5eaf6e4c8e1b43c87d9831e151acee4" + hash: "b6a0ee0b24737bc0045ff3fb68cfe3ad" } Frame { msec: 7024 - hash: "6e429382a6475cf10afcdb41bc2ceef7" + hash: "b6a0ee0b24737bc0045ff3fb68cfe3ad" } Frame { msec: 7040 - hash: "671a251d2e66a9f227006a2833df496e" + hash: "b6a0ee0b24737bc0045ff3fb68cfe3ad" } Frame { msec: 7056 - hash: "7d938be743cd72ffea5d0a4980e6edc6" + hash: "b6a0ee0b24737bc0045ff3fb68cfe3ad" } Frame { msec: 7072 - hash: "352193740b77a712e2c2ad330bf09d1d" + hash: "b6a0ee0b24737bc0045ff3fb68cfe3ad" } Frame { msec: 7088 - hash: "e488fb76fb550fba51b95bee3fee80d5" + hash: "b6a0ee0b24737bc0045ff3fb68cfe3ad" } Frame { msec: 7104 - hash: "e488fb76fb550fba51b95bee3fee80d5" + hash: "b6a0ee0b24737bc0045ff3fb68cfe3ad" } Frame { msec: 7120 - hash: "e488fb76fb550fba51b95bee3fee80d5" + hash: "b6a0ee0b24737bc0045ff3fb68cfe3ad" } Frame { msec: 7136 - hash: "e488fb76fb550fba51b95bee3fee80d5" + hash: "b6a0ee0b24737bc0045ff3fb68cfe3ad" } Frame { msec: 7152 - hash: "e488fb76fb550fba51b95bee3fee80d5" + hash: "beeaec4b983c970ae448e33047dfdfea" } Frame { msec: 7168 - hash: "e488fb76fb550fba51b95bee3fee80d5" + hash: "7c415ab1b7d8e25b71af75d3eec8ee4a" } Frame { msec: 7184 - hash: "e488fb76fb550fba51b95bee3fee80d5" - } - Key { - type: 6 - key: 16777236 - modifiers: 536870912 - text: "1d" - autorep: false - count: 1 + hash: "8913037e57b9a6a58b68f2d6e69b1bd1" } Frame { msec: 7200 - hash: "e488fb76fb550fba51b95bee3fee80d5" + hash: "19e59e9409fdaf90ccf75606b58688b7" } Frame { msec: 7216 - hash: "d32ef62f1983fb803c899298e3c77b17" + hash: "1ae71ef5b1006f637bd8df0769af65a6" } Frame { msec: 7232 - hash: "9f3596e95a7ba704c76948f1ecfc66fc" + hash: "1f0aa8b368b2dbccafd54b923d8cce95" } Frame { msec: 7248 - hash: "48a9c4e774d10e1e88dda294adc5ab69" + hash: "c5079fb25a8c80a995d7aa5fbbd91428" } Frame { msec: 7264 - hash: "18ec616a58098fec721e20b17e929b42" + hash: "59f41220fa5d23db298c9e94f115c17b" } Frame { msec: 7280 - hash: "a59607660cc32a4241f5af03eef49db6" + hash: "48259dfe8b266d9e7f50b187be98c3cb" } Frame { msec: 7296 - hash: "7eef7bbace7c9b73457cffdd3c45349e" - } - Key { - type: 7 - key: 16777236 - modifiers: 536870912 - text: "1d" - autorep: false - count: 1 + hash: "f7554552598351c3b8dfcbe3ebc32b3b" } Frame { msec: 7312 - hash: "d9e460e54ed750f89e161b82f7c37526" + hash: "219e9cd84d7e5c5c0e6cb80100aa3ab5" } Frame { msec: 7328 - hash: "129d9c9ec225f142ac6e8fe523fd1aae" + hash: "5578e870ee8ce00bce5a59bb25e3d0a9" } Frame { msec: 7344 - hash: "44b0cb0a4167d8f5e826a361a1f223f8" + hash: "4d9cebbf750c03380694245e0e22ab94" } Frame { msec: 7360 - hash: "7f0e4ece9195f7f06175b299b10d3482" + hash: "a60a8032e97ed0a3caa05012c1283de5" } Frame { msec: 7376 - hash: "822f4aac06674acbc8609d95c4fefe21" + hash: "3bee20b349a7e9d67f7770ede6da8673" } Frame { msec: 7392 - hash: "9898ec32f6b9e11ff24d92473530694f" + hash: "d8c34576c25fb8b5e4fa12680ac32e99" } Frame { msec: 7408 - hash: "4a530e8bfc58fbee76303b7d8a4ea62d" + hash: "cd1360aa7db7c3b2f2012dfc44de2198" } Frame { msec: 7424 - hash: "3d1895d6a5d08ca3ceac1c7ef7b530a8" + hash: "cd82782f63c9a7d21d51b3440c2f038b" } Frame { msec: 7440 - hash: "e958eb57c09645e6f4b4f6a2a24be774" + hash: "e59061967a841aa45607c0828b687527" } Frame { msec: 7456 - hash: "8821380e50148c5b488918e8f75a986f" + hash: "01962406c9aaf1aa8bf3ab49e30ddf5f" } Frame { msec: 7472 - hash: "42b500e9848f9989fe367d45a0523eaa" + hash: "5a5732a568189e598c7985ee806bc67e" } Frame { msec: 7488 - hash: "d93ebd971e82a36d85c289cc564331ce" + hash: "54775aed3a6283c1fa330d65de5bc70c" } Frame { msec: 7504 - hash: "4753d6c2a6b280b450176b3d3ba13c39" + hash: "66640b4a5c1e68924b25de24e3c3f008" } Frame { msec: 7520 - hash: "24693e3a86aa8ebe8598ddad8aeb01d1" + hash: "76999d3125f20ba47dbdff38ee722a8a" } Frame { msec: 7536 - hash: "14a2bd17a7b30bab0dfbf5f31cf31414" + hash: "5159c81533bee8825cff11910bcb90dc" } Frame { msec: 7552 - hash: "0052b5abfd354a315ac2b43c6c3e3ef1" + hash: "ac0295495345987d1e000f6bb2436927" } Frame { msec: 7568 - hash: "dfd0060290351b57b0fd0221ed57384b" + hash: "d56b4a04f1d2835a0852ea20e8e2f451" } Frame { msec: 7584 - hash: "921d73b58776bc9abafabdef0898bfc0" + hash: "ae41fe23e2ab508d7642973c0d9d35b0" } Frame { msec: 7600 - hash: "b1d77d0f292de883cec9862e0b7a04e2" + hash: "730ca01fbee6ec4928715ec52773c06c" } Frame { msec: 7616 - hash: "b1d77d0f292de883cec9862e0b7a04e2" + hash: "ad1fa52c617a2b119d61eb9fb7d58a82" } Frame { msec: 7632 - hash: "b1d77d0f292de883cec9862e0b7a04e2" + hash: "c74321a822b515a393e8e218bd45e8e3" } Frame { msec: 7648 - hash: "b1d77d0f292de883cec9862e0b7a04e2" + hash: "a9e2f3bee1d47166204c74bdf90cd8c8" } Frame { msec: 7664 - hash: "b1d77d0f292de883cec9862e0b7a04e2" + hash: "e10d4bf08980ea7d079a2f359ee62b95" } Frame { msec: 7680 @@ -2214,287 +2134,239 @@ VisualTest { } Frame { msec: 7696 - hash: "b1d77d0f292de883cec9862e0b7a04e2" + hash: "9f0ba6051e684e54ff4e36d980a7e600" } Frame { msec: 7712 - hash: "b1d77d0f292de883cec9862e0b7a04e2" + hash: "aa6268d8d7fb3d2b91db3e225e8c818a" } Frame { msec: 7728 - hash: "b1d77d0f292de883cec9862e0b7a04e2" + hash: "8e547e55279b1929f42bf51e753f142e" } Frame { msec: 7744 - hash: "b1d77d0f292de883cec9862e0b7a04e2" + hash: "5386c71f8d6701379e177f161d714da2" } Frame { msec: 7760 - hash: "b1d77d0f292de883cec9862e0b7a04e2" + hash: "a184e9e6012c72fc1aeaed9f98b0fb1e" } Frame { msec: 7776 - hash: "b1d77d0f292de883cec9862e0b7a04e2" - } - Key { - type: 6 - key: 16777236 - modifiers: 536870912 - text: "1d" - autorep: false - count: 1 + hash: "777a6b70ca77c45e2e5e3914cc328dcb" } Frame { msec: 7792 - hash: "b1d77d0f292de883cec9862e0b7a04e2" + hash: "424f73f25a1e91126f951838d45adc3b" } Frame { msec: 7808 - hash: "921d73b58776bc9abafabdef0898bfc0" + hash: "3f7f2eb6b9a5d19fbfcd700baf566dfb" } Frame { msec: 7824 - hash: "dfd0060290351b57b0fd0221ed57384b" + hash: "c3c4c72b25c2295b82a5fd7454942f77" } Frame { msec: 7840 - hash: "0052b5abfd354a315ac2b43c6c3e3ef1" + hash: "3b35e93d3eb9d28c5c03d6d353f805d2" } Frame { msec: 7856 - hash: "14a2bd17a7b30bab0dfbf5f31cf31414" + hash: "5dcad019a1c0eaaab381a7602e1914ff" } Frame { msec: 7872 - hash: "24693e3a86aa8ebe8598ddad8aeb01d1" + hash: "602a5c569555767413bf445af44c744f" } Frame { msec: 7888 - hash: "4753d6c2a6b280b450176b3d3ba13c39" - } - Key { - type: 7 - key: 16777236 - modifiers: 536870912 - text: "1d" - autorep: false - count: 1 + hash: "3e9facab95dae772f695b6f7c5175063" } Frame { msec: 7904 - hash: "d93ebd971e82a36d85c289cc564331ce" + hash: "0921220ec36ca7b25eaae699872a2006" } Frame { msec: 7920 - hash: "42b500e9848f9989fe367d45a0523eaa" + hash: "1d5fa7fd630af62bcc805bdc6686df37" } Frame { msec: 7936 - hash: "8821380e50148c5b488918e8f75a986f" + hash: "165c02de63604aa118d9f8995e6b45af" } Frame { msec: 7952 - hash: "e958eb57c09645e6f4b4f6a2a24be774" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 7968 - hash: "3d1895d6a5d08ca3ceac1c7ef7b530a8" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 7984 - hash: "4a530e8bfc58fbee76303b7d8a4ea62d" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 8000 - hash: "916eaaf52ffde2b176a3e4a02c447409" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 8016 - hash: "916eaaf52ffde2b176a3e4a02c447409" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 8032 - hash: "916eaaf52ffde2b176a3e4a02c447409" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 8048 - hash: "916eaaf52ffde2b176a3e4a02c447409" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 8064 - hash: "916eaaf52ffde2b176a3e4a02c447409" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 8080 - hash: "916eaaf52ffde2b176a3e4a02c447409" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 8096 - hash: "916eaaf52ffde2b176a3e4a02c447409" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 8112 - hash: "916eaaf52ffde2b176a3e4a02c447409" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 8128 - hash: "916eaaf52ffde2b176a3e4a02c447409" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 8144 - hash: "916eaaf52ffde2b176a3e4a02c447409" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 8160 - hash: "916eaaf52ffde2b176a3e4a02c447409" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 8176 - hash: "916eaaf52ffde2b176a3e4a02c447409" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 8192 - hash: "916eaaf52ffde2b176a3e4a02c447409" - } - Key { - type: 6 - key: 16777235 - modifiers: 536870912 - text: "1e" - autorep: false - count: 1 + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 8208 - hash: "916eaaf52ffde2b176a3e4a02c447409" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 8224 - hash: "754ab9d39b63a37fff9438192b922dca" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 8240 - hash: "57c269040d25924ac208692c687fcc9e" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 8256 - hash: "78062136ee9f2ddae9c34e2ae66bfc49" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 8272 - hash: "995fb06a454ce29db5d3c4433c2a93ec" - } - Key { - type: 7 - key: 16777235 - modifiers: 536870912 - text: "1e" - autorep: false - count: 1 + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 8288 - hash: "ca89d735d9315377908c6e268eaff16b" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 8304 - hash: "76bbf3fc1f0261fcaed5e0a245e99c56" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 8320 - hash: "6c6cdb20b617ec634370efca554367b1" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 8336 - hash: "f979473bd94f44db812795cdfee11bbe" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 8352 - hash: "900faba9568c2d31df8773b872f13dbe" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 8368 - hash: "d70076d643952efdeb1fce506623c33a" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 8384 - hash: "2dbe655931825dd8af1d8b75a46a1d2d" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 8400 - hash: "0162a9b00b9b7b69d487f9a1e85f6407" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 8416 - hash: "7240727aedaf9f3d72c33a95175255a4" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 8432 - hash: "7240727aedaf9f3d72c33a95175255a4" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 8448 - hash: "7240727aedaf9f3d72c33a95175255a4" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 8464 - hash: "7240727aedaf9f3d72c33a95175255a4" - } - Key { - type: 6 - key: 16777235 - modifiers: 536870912 - text: "1e" - autorep: false - count: 1 + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 8480 - hash: "7240727aedaf9f3d72c33a95175255a4" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 8496 - hash: "0cf200b277d35697e1dd785b051ee0d1" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 8512 - hash: "a5d3f2ce5649466fa81073821d58b4c2" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 8528 - hash: "c7ff1e80b4bffcb4e42e83e96f7b1231" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 8544 - hash: "1d1358126ed02a890344d881a5e59fd5" - } - Key { - type: 7 - key: 16777235 - modifiers: 536870912 - text: "1e" - autorep: false - count: 1 + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 8560 - hash: "371d29e0160a9060a1b84b36fdfc6178" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 8576 - hash: "94a0b0b69d4891b6cea345225105b0f4" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 8592 - hash: "8cb68d6d214044ee58dae2641bcab4d4" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 8608 - hash: "93813fc46675f13d1d85a139710c0760" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 8624 - hash: "d5da634c1e30ae7898699eaec638e205" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 8640 @@ -2502,570 +2374,106 @@ VisualTest { } Frame { msec: 8656 - hash: "e5a3c5a92e640e66c554f52469f47b31" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 8672 - hash: "561a894707b154acf5a6beee16e014e5" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 8688 - hash: "aacc636aa3658958a2d5046130ca422c" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 8704 - hash: "aacc636aa3658958a2d5046130ca422c" + hash: "33d81c39d16c6a326012499796e50e03" + } + Key { + type: 6 + key: 16777249 + modifiers: 67108864 + text: "" + autorep: false + count: 1 } Frame { msec: 8720 - hash: "aacc636aa3658958a2d5046130ca422c" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 8736 - hash: "aacc636aa3658958a2d5046130ca422c" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 8752 - hash: "aacc636aa3658958a2d5046130ca422c" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 8768 - hash: "aacc636aa3658958a2d5046130ca422c" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 8784 - hash: "aacc636aa3658958a2d5046130ca422c" - } - Key { - type: 6 - key: 16777235 - modifiers: 536870912 - text: "1e" - autorep: false - count: 1 + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 8800 - hash: "aacc636aa3658958a2d5046130ca422c" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 8816 - hash: "cdceca4bc7b3a05fc8d0e1d90bd7c84e" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 8832 - hash: "54758c6d678ab6fa000282e7c34dba81" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 8848 - hash: "0b64560a1c0c5eb6f41eecf863581185" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 8864 - hash: "d205b1421f61c09c4a380f1b71758fa9" - } - Key { - type: 7 - key: 16777235 - modifiers: 536870912 - text: "1e" - autorep: false - count: 1 + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 8880 - hash: "87117d124480f50452451990d1e1f967" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 8896 - hash: "4e2892234cbcd10cc6c3369bcd5a83c3" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 8912 - hash: "81abd23f89029d33804f89dc65096994" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 8928 - hash: "c516e9a6d29939b8be171e104e732f57" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 8944 - hash: "64f6f8e3e952219542af56c71ca8456c" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 8960 - hash: "258d650a1f92064f5f37eba5f36097e1" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 8976 - hash: "66d06f8aa8a2783585be7589580acb22" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 8992 - hash: "2b80eef9fafd5aa77b64144602a26ca5" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 9008 - hash: "88e47e6aab5c39bde5bb088b4290ade7" + hash: "33d81c39d16c6a326012499796e50e03" } Frame { msec: 9024 - hash: "88e47e6aab5c39bde5bb088b4290ade7" - } - Frame { - msec: 9040 - hash: "88e47e6aab5c39bde5bb088b4290ade7" - } - Frame { - msec: 9056 - hash: "88e47e6aab5c39bde5bb088b4290ade7" - } - Frame { - msec: 9072 - hash: "88e47e6aab5c39bde5bb088b4290ade7" - } - Frame { - msec: 9088 - hash: "88e47e6aab5c39bde5bb088b4290ade7" - } - Key { - type: 6 - key: 16777235 - modifiers: 536870912 - text: "1e" - autorep: false - count: 1 - } - Frame { - msec: 9104 - hash: "88e47e6aab5c39bde5bb088b4290ade7" - } - Frame { - msec: 9120 - hash: "c9856dbc374a487054e9930443617b51" - } - Frame { - msec: 9136 - hash: "863f8a4336b9487fa6050920b5c5445f" - } - Frame { - msec: 9152 - hash: "15966d5c44aad8d231d3b08fd879d06d" - } - Frame { - msec: 9168 - hash: "294e1360ba8551963a873b4216a22268" - } - Key { - type: 7 - key: 16777235 - modifiers: 536870912 - text: "1e" - autorep: false - count: 1 - } - Frame { - msec: 9184 - hash: "6a051090b04631480cb4e61d5197495b" - } - Frame { - msec: 9200 - hash: "6cec62afc9eaf4157553207b5de3186a" - } - Frame { - msec: 9216 - hash: "5a75c18bf80d99901872cabac4c75c59" - } - Frame { - msec: 9232 - hash: "caa915713b3996bc4f38faed7ef9692f" - } - Frame { - msec: 9248 - hash: "95f561f70fa88bb9cc65ba8495361ffe" - } - Frame { - msec: 9264 - hash: "902524e1adbbfa154f80938a731720d1" - } - Frame { - msec: 9280 - hash: "618e53106212d428e891de289c6a09c9" - } - Frame { - msec: 9296 - hash: "70ca177e13273b79da870072848616ce" - } - Frame { - msec: 9312 - hash: "fad7be058489838a16234c13771da043" - } - Frame { - msec: 9328 - hash: "fad7be058489838a16234c13771da043" - } - Frame { - msec: 9344 - hash: "fad7be058489838a16234c13771da043" - } - Frame { - msec: 9360 - hash: "fad7be058489838a16234c13771da043" - } - Frame { - msec: 9376 - hash: "fad7be058489838a16234c13771da043" - } - Frame { - msec: 9392 - hash: "fad7be058489838a16234c13771da043" - } - Frame { - msec: 9408 - hash: "fad7be058489838a16234c13771da043" - } - Key { - type: 6 - key: 16777235 - modifiers: 536870912 - text: "1e" - autorep: false - count: 1 - } - Frame { - msec: 9424 - hash: "fad7be058489838a16234c13771da043" - } - Frame { - msec: 9440 - hash: "6935dc4b1e3ec8cb994e424aa79be008" - } - Frame { - msec: 9456 - hash: "2f303654e651ec5efd93e5d67ccf2bb0" - } - Frame { - msec: 9472 - hash: "6f4134bceaef09336413634a90064df9" - } - Frame { - msec: 9488 - hash: "6bcf0084c86f5b3643b858e5506d7541" - } - Key { - type: 7 - key: 16777235 - modifiers: 536870912 - text: "1e" - autorep: false - count: 1 - } - Frame { - msec: 9504 - hash: "cd4003c9c35971f0992140407ee4c1dc" - } - Frame { - msec: 9520 - hash: "513809beb2d08ceb6e3dddc741c91ea6" - } - Frame { - msec: 9536 - hash: "bb172a6667414a6152ea7be9ee001537" - } - Frame { - msec: 9552 - hash: "5a90ce27ac85ea34120a2f4f44b71449" - } - Frame { - msec: 9568 - hash: "344993181b11737f8fe95483dffeef4e" - } - Frame { - msec: 9584 - hash: "4ca8d732a4922bb1d1a460ed561e90a8" - } - Frame { - msec: 9600 - image: "gridview2.9.png" - } - Frame { - msec: 9616 - hash: "5e510910df3236fe0f616276f1d30246" - } - Frame { - msec: 9632 - hash: "9bd4d01ff09c0615af59ef664240bc9f" - } - Frame { - msec: 9648 - hash: "9bd4d01ff09c0615af59ef664240bc9f" - } - Frame { - msec: 9664 - hash: "9bd4d01ff09c0615af59ef664240bc9f" - } - Frame { - msec: 9680 - hash: "9bd4d01ff09c0615af59ef664240bc9f" - } - Frame { - msec: 9696 - hash: "9bd4d01ff09c0615af59ef664240bc9f" - } - Frame { - msec: 9712 - hash: "9bd4d01ff09c0615af59ef664240bc9f" - } - Frame { - msec: 9728 - hash: "9bd4d01ff09c0615af59ef664240bc9f" - } - Frame { - msec: 9744 - hash: "9bd4d01ff09c0615af59ef664240bc9f" - } - Frame { - msec: 9760 - hash: "9bd4d01ff09c0615af59ef664240bc9f" - } - Frame { - msec: 9776 - hash: "9bd4d01ff09c0615af59ef664240bc9f" - } - Key { - type: 6 - key: 16777235 - modifiers: 536870912 - text: "1e" - autorep: false - count: 1 - } - Frame { - msec: 9792 - hash: "9bd4d01ff09c0615af59ef664240bc9f" - } - Frame { - msec: 9808 - hash: "ed2f5376944bd2b113ca8a658f7e039a" - } - Frame { - msec: 9824 - hash: "d0f89a274132600dd5080199a59d987d" - } - Frame { - msec: 9840 - hash: "e4a48a016105d700ee77ee3b9a72915a" - } - Frame { - msec: 9856 - hash: "738ac20b239f5adfc9a537e0ce2f422e" - } - Frame { - msec: 9872 - hash: "422ce76c5ba7c0edb485436e3ad7bd8b" - } - Key { - type: 7 - key: 16777235 - modifiers: 536870912 - text: "1e" - autorep: false - count: 1 - } - Frame { - msec: 9888 - hash: "a24b4fee45a5c1cadd51dd5eeec4d785" - } - Frame { - msec: 9904 - hash: "d183b814bed2b1324fdf673f9dde3c98" - } - Frame { - msec: 9920 - hash: "ceb6626e581b7eb5560829768b9be444" - } - Frame { - msec: 9936 - hash: "6384040fb8815701604e2c68ed5f19fe" - } - Frame { - msec: 9952 - hash: "a80d8cbf0c6fe8383badbb2badb361ad" - } - Frame { - msec: 9968 - hash: "c1a568599592a3f455ad550c2e4878a8" - } - Frame { - msec: 9984 - hash: "1087cd3d8d5afbe101cabfc9ec3cd055" - } - Frame { - msec: 10000 - hash: "0d30916c7e05ff8609af5894f47a89bb" - } - Frame { - msec: 10016 - hash: "0d30916c7e05ff8609af5894f47a89bb" - } - Frame { - msec: 10032 - hash: "0d30916c7e05ff8609af5894f47a89bb" - } - Frame { - msec: 10048 - hash: "0d30916c7e05ff8609af5894f47a89bb" - } - Frame { - msec: 10064 - hash: "0d30916c7e05ff8609af5894f47a89bb" - } - Frame { - msec: 10080 - hash: "0d30916c7e05ff8609af5894f47a89bb" - } - Frame { - msec: 10096 - hash: "0d30916c7e05ff8609af5894f47a89bb" - } - Frame { - msec: 10112 - hash: "0d30916c7e05ff8609af5894f47a89bb" - } - Frame { - msec: 10128 - hash: "0d30916c7e05ff8609af5894f47a89bb" - } - Key { - type: 6 - key: 16777235 - modifiers: 536870912 - text: "1e" - autorep: false - count: 1 - } - Frame { - msec: 10144 - hash: "0d30916c7e05ff8609af5894f47a89bb" - } - Frame { - msec: 10160 - hash: "0d30916c7e05ff8609af5894f47a89bb" - } - Frame { - msec: 10176 - hash: "0d30916c7e05ff8609af5894f47a89bb" - } - Frame { - msec: 10192 - hash: "0d30916c7e05ff8609af5894f47a89bb" - } - Frame { - msec: 10208 - hash: "0d30916c7e05ff8609af5894f47a89bb" - } - Frame { - msec: 10224 - hash: "0d30916c7e05ff8609af5894f47a89bb" - } - Frame { - msec: 10240 - hash: "0d30916c7e05ff8609af5894f47a89bb" - } - Key { - type: 7 - key: 16777235 - modifiers: 536870912 - text: "1e" - autorep: false - count: 1 - } - Frame { - msec: 10256 - hash: "0d30916c7e05ff8609af5894f47a89bb" - } - Frame { - msec: 10272 - hash: "0d30916c7e05ff8609af5894f47a89bb" - } - Frame { - msec: 10288 - hash: "0d30916c7e05ff8609af5894f47a89bb" - } - Frame { - msec: 10304 - hash: "0d30916c7e05ff8609af5894f47a89bb" - } - Frame { - msec: 10320 - hash: "0d30916c7e05ff8609af5894f47a89bb" - } - Frame { - msec: 10336 - hash: "0d30916c7e05ff8609af5894f47a89bb" - } - Frame { - msec: 10352 - hash: "0d30916c7e05ff8609af5894f47a89bb" - } - Frame { - msec: 10368 - hash: "0d30916c7e05ff8609af5894f47a89bb" - } - Frame { - msec: 10384 - hash: "0d30916c7e05ff8609af5894f47a89bb" - } - Frame { - msec: 10400 - hash: "0d30916c7e05ff8609af5894f47a89bb" - } - Frame { - msec: 10416 - hash: "0d30916c7e05ff8609af5894f47a89bb" - } - Frame { - msec: 10432 - hash: "0d30916c7e05ff8609af5894f47a89bb" - } - Frame { - msec: 10448 - hash: "0d30916c7e05ff8609af5894f47a89bb" - } - Frame { - msec: 10464 - hash: "0d30916c7e05ff8609af5894f47a89bb" - } - Key { - type: 6 - key: 16777249 - modifiers: 67108864 - text: "" - autorep: false - count: 1 - } - Frame { - msec: 10480 - hash: "0d30916c7e05ff8609af5894f47a89bb" - } - Frame { - msec: 10496 - hash: "0d30916c7e05ff8609af5894f47a89bb" - } - Frame { - msec: 10512 - hash: "0d30916c7e05ff8609af5894f47a89bb" - } - Frame { - msec: 10528 - hash: "0d30916c7e05ff8609af5894f47a89bb" - } - Frame { - msec: 10544 - hash: "0d30916c7e05ff8609af5894f47a89bb" - } - Frame { - msec: 10560 - image: "gridview2.10.png" + hash: "33d81c39d16c6a326012499796e50e03" } } diff --git a/tests/auto/declarative/visual/qmlgraphicsgridview/gridview2.qml b/tests/auto/declarative/visual/qmlgraphicsgridview/gridview2.qml index b30e693..81d06cf 100644 --- a/tests/auto/declarative/visual/qmlgraphicsgridview/gridview2.qml +++ b/tests/auto/declarative/visual/qmlgraphicsgridview/gridview2.qml @@ -43,6 +43,7 @@ Rectangle { id: gridView; anchors.fill: parent cellWidth: 100; cellHeight: 100; cacheBuffer: 200 model: appModel; delegate: appDelegate; focus: true + keyNavigationWraps: true flickableData: [ Rectangle { -- cgit v0.12 From 4aa6a63f0f77a86f1af7c2e25b92b4d0ed92a267 Mon Sep 17 00:00:00 2001 From: Warwick Allison Date: Fri, 13 Nov 2009 15:20:33 +1000 Subject: WebView tests and testability. --- src/declarative/graphicsitems/graphicsitems.pri | 1 + .../graphicsitems/qmlgraphicswebview.cpp | 96 +- .../graphicsitems/qmlgraphicswebview_p_p.h | 150 ++ .../qmlgraphicswebview/data/elements.html | 14 + .../qmlgraphicswebview/data/elements.qml | 7 + .../qmlgraphicswebview/tst_qmlgraphicswebview.cpp | 67 + .../visual/webview/zooming/data/zooming.0.png | Bin 0 -> 735 bytes .../visual/webview/zooming/data/zooming.1.png | Bin 0 -> 735 bytes .../visual/webview/zooming/data/zooming.2.png | Bin 0 -> 735 bytes .../visual/webview/zooming/data/zooming.3.png | Bin 0 -> 735 bytes .../visual/webview/zooming/data/zooming.qml | 2115 ++++++++++++++++++++ .../visual/webview/zooming/zooming.html | 6 + .../declarative/visual/webview/zooming/zooming.qml | 17 + 13 files changed, 2380 insertions(+), 93 deletions(-) create mode 100644 src/declarative/graphicsitems/qmlgraphicswebview_p_p.h create mode 100644 tests/auto/declarative/qmlgraphicswebview/data/elements.html create mode 100644 tests/auto/declarative/qmlgraphicswebview/data/elements.qml create mode 100644 tests/auto/declarative/visual/webview/zooming/data/zooming.0.png create mode 100644 tests/auto/declarative/visual/webview/zooming/data/zooming.1.png create mode 100644 tests/auto/declarative/visual/webview/zooming/data/zooming.2.png create mode 100644 tests/auto/declarative/visual/webview/zooming/data/zooming.3.png create mode 100644 tests/auto/declarative/visual/webview/zooming/data/zooming.qml create mode 100644 tests/auto/declarative/visual/webview/zooming/zooming.html create mode 100644 tests/auto/declarative/visual/webview/zooming/zooming.qml diff --git a/src/declarative/graphicsitems/graphicsitems.pri b/src/declarative/graphicsitems/graphicsitems.pri index ef10e51..da3a0d4 100644 --- a/src/declarative/graphicsitems/graphicsitems.pri +++ b/src/declarative/graphicsitems/graphicsitems.pri @@ -83,5 +83,6 @@ contains(QT_CONFIG, webkit) { QT+=webkit SOURCES += graphicsitems/qmlgraphicswebview.cpp HEADERS += graphicsitems/qmlgraphicswebview_p.h + HEADERS += graphicsitems/qmlgraphicswebview_p_p.h } diff --git a/src/declarative/graphicsitems/qmlgraphicswebview.cpp b/src/declarative/graphicsitems/qmlgraphicswebview.cpp index 6dbf053..00fdd6d 100644 --- a/src/declarative/graphicsitems/qmlgraphicswebview.cpp +++ b/src/declarative/graphicsitems/qmlgraphicswebview.cpp @@ -59,6 +59,7 @@ #include #include "qmlgraphicswebview_p.h" +#include "qmlgraphicswebview_p_p.h" #include QT_BEGIN_NAMESPACE @@ -67,97 +68,6 @@ QML_DEFINE_NOCREATE_TYPE(QAction) static const int MAX_DOUBLECLICK_TIME=500; // XXX need better gesture system -class QmlGraphicsWebSettings : public QObject { - Q_OBJECT - - Q_PROPERTY(QString standardFontFamily READ standardFontFamily WRITE setStandardFontFamily) - Q_PROPERTY(QString fixedFontFamily READ fixedFontFamily WRITE setFixedFontFamily) - Q_PROPERTY(QString serifFontFamily READ serifFontFamily WRITE setSerifFontFamily) - Q_PROPERTY(QString sansSerifFontFamily READ sansSerifFontFamily WRITE setSansSerifFontFamily) - Q_PROPERTY(QString cursiveFontFamily READ cursiveFontFamily WRITE setCursiveFontFamily) - Q_PROPERTY(QString fantasyFontFamily READ fantasyFontFamily WRITE setFantasyFontFamily) - - Q_PROPERTY(int minimumFontSize READ minimumFontSize WRITE setMinimumFontSize) - Q_PROPERTY(int minimumLogicalFontSize READ minimumLogicalFontSize WRITE setMinimumLogicalFontSize) - Q_PROPERTY(int defaultFontSize READ defaultFontSize WRITE setDefaultFontSize) - Q_PROPERTY(int defaultFixedFontSize READ defaultFixedFontSize WRITE setDefaultFixedFontSize) - - Q_PROPERTY(bool autoLoadImages READ autoLoadImages WRITE setAutoLoadImages) - Q_PROPERTY(bool javascriptEnabled READ javascriptEnabled WRITE setJavascriptEnabled) - Q_PROPERTY(bool javaEnabled READ javaEnabled WRITE setJavaEnabled) - Q_PROPERTY(bool pluginsEnabled READ pluginsEnabled WRITE setPluginsEnabled) - Q_PROPERTY(bool privateBrowsingEnabled READ privateBrowsingEnabled WRITE setPrivateBrowsingEnabled) - Q_PROPERTY(bool javascriptCanOpenWindows READ javascriptCanOpenWindows WRITE setJavascriptCanOpenWindows) - Q_PROPERTY(bool javascriptCanAccessClipboard READ javascriptCanAccessClipboard WRITE setJavascriptCanAccessClipboard) - Q_PROPERTY(bool developerExtrasEnabled READ developerExtrasEnabled WRITE setDeveloperExtrasEnabled) - Q_PROPERTY(bool linksIncludedInFocusChain READ linksIncludedInFocusChain WRITE setLinksIncludedInFocusChain) - Q_PROPERTY(bool zoomTextOnly READ zoomTextOnly WRITE setZoomTextOnly) - Q_PROPERTY(bool printElementBackgrounds READ printElementBackgrounds WRITE setPrintElementBackgrounds) - Q_PROPERTY(bool offlineStorageDatabaseEnabled READ offlineStorageDatabaseEnabled WRITE setOfflineStorageDatabaseEnabled) - Q_PROPERTY(bool offlineWebApplicationCacheEnabled READ offlineWebApplicationCacheEnabled WRITE setOfflineWebApplicationCacheEnabled) - Q_PROPERTY(bool localStorageDatabaseEnabled READ localStorageDatabaseEnabled WRITE setLocalStorageDatabaseEnabled) - Q_PROPERTY(bool localContentCanAccessRemoteUrls READ localContentCanAccessRemoteUrls WRITE setLocalContentCanAccessRemoteUrls) - -public: - QmlGraphicsWebSettings() {} - - QString standardFontFamily() const { return s->fontFamily(QWebSettings::StandardFont); } - void setStandardFontFamily(const QString& f) { s->setFontFamily(QWebSettings::StandardFont,f); } - QString fixedFontFamily() const { return s->fontFamily(QWebSettings::FixedFont); } - void setFixedFontFamily(const QString& f) { s->setFontFamily(QWebSettings::FixedFont,f); } - QString serifFontFamily() const { return s->fontFamily(QWebSettings::SerifFont); } - void setSerifFontFamily(const QString& f) { s->setFontFamily(QWebSettings::SerifFont,f); } - QString sansSerifFontFamily() const { return s->fontFamily(QWebSettings::SansSerifFont); } - void setSansSerifFontFamily(const QString& f) { s->setFontFamily(QWebSettings::SansSerifFont,f); } - QString cursiveFontFamily() const { return s->fontFamily(QWebSettings::CursiveFont); } - void setCursiveFontFamily(const QString& f) { s->setFontFamily(QWebSettings::CursiveFont,f); } - QString fantasyFontFamily() const { return s->fontFamily(QWebSettings::FantasyFont); } - void setFantasyFontFamily(const QString& f) { s->setFontFamily(QWebSettings::FantasyFont,f); } - - int minimumFontSize() const { return s->fontSize(QWebSettings::MinimumFontSize); } - void setMinimumFontSize(int size) { s->setFontSize(QWebSettings::MinimumFontSize,size); } - int minimumLogicalFontSize() const { return s->fontSize(QWebSettings::MinimumLogicalFontSize); } - void setMinimumLogicalFontSize(int size) { s->setFontSize(QWebSettings::MinimumLogicalFontSize,size); } - int defaultFontSize() const { return s->fontSize(QWebSettings::DefaultFontSize); } - void setDefaultFontSize(int size) { s->setFontSize(QWebSettings::DefaultFontSize,size); } - int defaultFixedFontSize() const { return s->fontSize(QWebSettings::DefaultFixedFontSize); } - void setDefaultFixedFontSize(int size) { s->setFontSize(QWebSettings::DefaultFixedFontSize,size); } - - bool autoLoadImages() const { return s->testAttribute(QWebSettings::AutoLoadImages); } - void setAutoLoadImages(bool on) { s->setAttribute(QWebSettings::AutoLoadImages, on); } - bool javascriptEnabled() const { return s->testAttribute(QWebSettings::JavascriptEnabled); } - void setJavascriptEnabled(bool on) { s->setAttribute(QWebSettings::JavascriptEnabled, on); } - bool javaEnabled() const { return s->testAttribute(QWebSettings::JavaEnabled); } - void setJavaEnabled(bool on) { s->setAttribute(QWebSettings::JavaEnabled, on); } - bool pluginsEnabled() const { return s->testAttribute(QWebSettings::PluginsEnabled); } - void setPluginsEnabled(bool on) { s->setAttribute(QWebSettings::PluginsEnabled, on); } - bool privateBrowsingEnabled() const { return s->testAttribute(QWebSettings::PrivateBrowsingEnabled); } - void setPrivateBrowsingEnabled(bool on) { s->setAttribute(QWebSettings::PrivateBrowsingEnabled, on); } - bool javascriptCanOpenWindows() const { return s->testAttribute(QWebSettings::JavascriptCanOpenWindows); } - void setJavascriptCanOpenWindows(bool on) { s->setAttribute(QWebSettings::JavascriptCanOpenWindows, on); } - bool javascriptCanAccessClipboard() const { return s->testAttribute(QWebSettings::JavascriptCanAccessClipboard); } - void setJavascriptCanAccessClipboard(bool on) { s->setAttribute(QWebSettings::JavascriptCanAccessClipboard, on); } - bool developerExtrasEnabled() const { return s->testAttribute(QWebSettings::DeveloperExtrasEnabled); } - void setDeveloperExtrasEnabled(bool on) { s->setAttribute(QWebSettings::DeveloperExtrasEnabled, on); } - bool linksIncludedInFocusChain() const { return s->testAttribute(QWebSettings::LinksIncludedInFocusChain); } - void setLinksIncludedInFocusChain(bool on) { s->setAttribute(QWebSettings::LinksIncludedInFocusChain, on); } - bool zoomTextOnly() const { return s->testAttribute(QWebSettings::ZoomTextOnly); } - void setZoomTextOnly(bool on) { s->setAttribute(QWebSettings::ZoomTextOnly, on); } - bool printElementBackgrounds() const { return s->testAttribute(QWebSettings::PrintElementBackgrounds); } - void setPrintElementBackgrounds(bool on) { s->setAttribute(QWebSettings::PrintElementBackgrounds, on); } - bool offlineStorageDatabaseEnabled() const { return s->testAttribute(QWebSettings::OfflineStorageDatabaseEnabled); } - void setOfflineStorageDatabaseEnabled(bool on) { s->setAttribute(QWebSettings::OfflineStorageDatabaseEnabled, on); } - bool offlineWebApplicationCacheEnabled() const { return s->testAttribute(QWebSettings::OfflineWebApplicationCacheEnabled); } - void setOfflineWebApplicationCacheEnabled(bool on) { s->setAttribute(QWebSettings::OfflineWebApplicationCacheEnabled, on); } - bool localStorageDatabaseEnabled() const { return s->testAttribute(QWebSettings::LocalStorageDatabaseEnabled); } - void setLocalStorageDatabaseEnabled(bool on) { s->setAttribute(QWebSettings::LocalStorageDatabaseEnabled, on); } - bool localContentCanAccessRemoteUrls() const { return s->testAttribute(QWebSettings::LocalContentCanAccessRemoteUrls); } - void setLocalContentCanAccessRemoteUrls(bool on) { s->setAttribute(QWebSettings::LocalContentCanAccessRemoteUrls, on); } - - QWebSettings *s; -}; - -QML_DECLARE_TYPE(QmlGraphicsWebSettings) QML_DEFINE_NOCREATE_TYPE(QmlGraphicsWebSettings) class QmlGraphicsWebViewPrivate : public QmlGraphicsPaintedItemPrivate @@ -706,7 +616,7 @@ void QmlGraphicsWebView::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event) \i includes (\a clickX, \a clickY) \i fits into the preferredWidth and preferredHeight \i zooms by no more than \a maxzoom - \i is more than 20% above the current zoom + \i is more than 10% above the current zoom \endlist If such a zoom exists, emits zoomTo(zoom,centerX,centerY) and returns true; otherwise, @@ -722,7 +632,7 @@ bool QmlGraphicsWebView::heuristicZoom(int clickX, int clickY, qreal maxzoom) qreal z = qMin(qreal(d->preferredwidth)*ozf/showarea.width(),qreal(d->preferredheight)*ozf/showarea.height()); if (z > maxzoom) z = maxzoom; - if (z/ozf > 1.2) { + if (z/ozf > 1.1) { QRectF r(showarea.left()/ozf*z, showarea.top()/ozf*z, showarea.width()/ozf*z, showarea.height()/ozf*z); emit zoomTo(z,r.x()+r.width()/2, r.y()+r.height()/2); return true; diff --git a/src/declarative/graphicsitems/qmlgraphicswebview_p_p.h b/src/declarative/graphicsitems/qmlgraphicswebview_p_p.h new file mode 100644 index 0000000..5063669 --- /dev/null +++ b/src/declarative/graphicsitems/qmlgraphicswebview_p_p.h @@ -0,0 +1,150 @@ +/**************************************************************************** +** +** 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 QtDeclarative module 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$ +** +****************************************************************************/ + +#ifndef QMLGRAPHICSWEBVIEW_P_H +#define QMLGRAPHICSWEBVIEW_P_H + +#include +#include + +QT_BEGIN_HEADER + +QT_BEGIN_NAMESPACE + +QT_MODULE(Declarative) + +class QmlGraphicsWebSettings : public QObject { + Q_OBJECT + + Q_PROPERTY(QString standardFontFamily READ standardFontFamily WRITE setStandardFontFamily) + Q_PROPERTY(QString fixedFontFamily READ fixedFontFamily WRITE setFixedFontFamily) + Q_PROPERTY(QString serifFontFamily READ serifFontFamily WRITE setSerifFontFamily) + Q_PROPERTY(QString sansSerifFontFamily READ sansSerifFontFamily WRITE setSansSerifFontFamily) + Q_PROPERTY(QString cursiveFontFamily READ cursiveFontFamily WRITE setCursiveFontFamily) + Q_PROPERTY(QString fantasyFontFamily READ fantasyFontFamily WRITE setFantasyFontFamily) + + Q_PROPERTY(int minimumFontSize READ minimumFontSize WRITE setMinimumFontSize) + Q_PROPERTY(int minimumLogicalFontSize READ minimumLogicalFontSize WRITE setMinimumLogicalFontSize) + Q_PROPERTY(int defaultFontSize READ defaultFontSize WRITE setDefaultFontSize) + Q_PROPERTY(int defaultFixedFontSize READ defaultFixedFontSize WRITE setDefaultFixedFontSize) + + Q_PROPERTY(bool autoLoadImages READ autoLoadImages WRITE setAutoLoadImages) + Q_PROPERTY(bool javascriptEnabled READ javascriptEnabled WRITE setJavascriptEnabled) + Q_PROPERTY(bool javaEnabled READ javaEnabled WRITE setJavaEnabled) + Q_PROPERTY(bool pluginsEnabled READ pluginsEnabled WRITE setPluginsEnabled) + Q_PROPERTY(bool privateBrowsingEnabled READ privateBrowsingEnabled WRITE setPrivateBrowsingEnabled) + Q_PROPERTY(bool javascriptCanOpenWindows READ javascriptCanOpenWindows WRITE setJavascriptCanOpenWindows) + Q_PROPERTY(bool javascriptCanAccessClipboard READ javascriptCanAccessClipboard WRITE setJavascriptCanAccessClipboard) + Q_PROPERTY(bool developerExtrasEnabled READ developerExtrasEnabled WRITE setDeveloperExtrasEnabled) + Q_PROPERTY(bool linksIncludedInFocusChain READ linksIncludedInFocusChain WRITE setLinksIncludedInFocusChain) + Q_PROPERTY(bool zoomTextOnly READ zoomTextOnly WRITE setZoomTextOnly) + Q_PROPERTY(bool printElementBackgrounds READ printElementBackgrounds WRITE setPrintElementBackgrounds) + Q_PROPERTY(bool offlineStorageDatabaseEnabled READ offlineStorageDatabaseEnabled WRITE setOfflineStorageDatabaseEnabled) + Q_PROPERTY(bool offlineWebApplicationCacheEnabled READ offlineWebApplicationCacheEnabled WRITE setOfflineWebApplicationCacheEnabled) + Q_PROPERTY(bool localStorageDatabaseEnabled READ localStorageDatabaseEnabled WRITE setLocalStorageDatabaseEnabled) + Q_PROPERTY(bool localContentCanAccessRemoteUrls READ localContentCanAccessRemoteUrls WRITE setLocalContentCanAccessRemoteUrls) + +public: + QmlGraphicsWebSettings() {} + + QString standardFontFamily() const { return s->fontFamily(QWebSettings::StandardFont); } + void setStandardFontFamily(const QString& f) { s->setFontFamily(QWebSettings::StandardFont,f); } + QString fixedFontFamily() const { return s->fontFamily(QWebSettings::FixedFont); } + void setFixedFontFamily(const QString& f) { s->setFontFamily(QWebSettings::FixedFont,f); } + QString serifFontFamily() const { return s->fontFamily(QWebSettings::SerifFont); } + void setSerifFontFamily(const QString& f) { s->setFontFamily(QWebSettings::SerifFont,f); } + QString sansSerifFontFamily() const { return s->fontFamily(QWebSettings::SansSerifFont); } + void setSansSerifFontFamily(const QString& f) { s->setFontFamily(QWebSettings::SansSerifFont,f); } + QString cursiveFontFamily() const { return s->fontFamily(QWebSettings::CursiveFont); } + void setCursiveFontFamily(const QString& f) { s->setFontFamily(QWebSettings::CursiveFont,f); } + QString fantasyFontFamily() const { return s->fontFamily(QWebSettings::FantasyFont); } + void setFantasyFontFamily(const QString& f) { s->setFontFamily(QWebSettings::FantasyFont,f); } + + int minimumFontSize() const { return s->fontSize(QWebSettings::MinimumFontSize); } + void setMinimumFontSize(int size) { s->setFontSize(QWebSettings::MinimumFontSize,size); } + int minimumLogicalFontSize() const { return s->fontSize(QWebSettings::MinimumLogicalFontSize); } + void setMinimumLogicalFontSize(int size) { s->setFontSize(QWebSettings::MinimumLogicalFontSize,size); } + int defaultFontSize() const { return s->fontSize(QWebSettings::DefaultFontSize); } + void setDefaultFontSize(int size) { s->setFontSize(QWebSettings::DefaultFontSize,size); } + int defaultFixedFontSize() const { return s->fontSize(QWebSettings::DefaultFixedFontSize); } + void setDefaultFixedFontSize(int size) { s->setFontSize(QWebSettings::DefaultFixedFontSize,size); } + + bool autoLoadImages() const { return s->testAttribute(QWebSettings::AutoLoadImages); } + void setAutoLoadImages(bool on) { s->setAttribute(QWebSettings::AutoLoadImages, on); } + bool javascriptEnabled() const { return s->testAttribute(QWebSettings::JavascriptEnabled); } + void setJavascriptEnabled(bool on) { s->setAttribute(QWebSettings::JavascriptEnabled, on); } + bool javaEnabled() const { return s->testAttribute(QWebSettings::JavaEnabled); } + void setJavaEnabled(bool on) { s->setAttribute(QWebSettings::JavaEnabled, on); } + bool pluginsEnabled() const { return s->testAttribute(QWebSettings::PluginsEnabled); } + void setPluginsEnabled(bool on) { s->setAttribute(QWebSettings::PluginsEnabled, on); } + bool privateBrowsingEnabled() const { return s->testAttribute(QWebSettings::PrivateBrowsingEnabled); } + void setPrivateBrowsingEnabled(bool on) { s->setAttribute(QWebSettings::PrivateBrowsingEnabled, on); } + bool javascriptCanOpenWindows() const { return s->testAttribute(QWebSettings::JavascriptCanOpenWindows); } + void setJavascriptCanOpenWindows(bool on) { s->setAttribute(QWebSettings::JavascriptCanOpenWindows, on); } + bool javascriptCanAccessClipboard() const { return s->testAttribute(QWebSettings::JavascriptCanAccessClipboard); } + void setJavascriptCanAccessClipboard(bool on) { s->setAttribute(QWebSettings::JavascriptCanAccessClipboard, on); } + bool developerExtrasEnabled() const { return s->testAttribute(QWebSettings::DeveloperExtrasEnabled); } + void setDeveloperExtrasEnabled(bool on) { s->setAttribute(QWebSettings::DeveloperExtrasEnabled, on); } + bool linksIncludedInFocusChain() const { return s->testAttribute(QWebSettings::LinksIncludedInFocusChain); } + void setLinksIncludedInFocusChain(bool on) { s->setAttribute(QWebSettings::LinksIncludedInFocusChain, on); } + bool zoomTextOnly() const { return s->testAttribute(QWebSettings::ZoomTextOnly); } + void setZoomTextOnly(bool on) { s->setAttribute(QWebSettings::ZoomTextOnly, on); } + bool printElementBackgrounds() const { return s->testAttribute(QWebSettings::PrintElementBackgrounds); } + void setPrintElementBackgrounds(bool on) { s->setAttribute(QWebSettings::PrintElementBackgrounds, on); } + bool offlineStorageDatabaseEnabled() const { return s->testAttribute(QWebSettings::OfflineStorageDatabaseEnabled); } + void setOfflineStorageDatabaseEnabled(bool on) { s->setAttribute(QWebSettings::OfflineStorageDatabaseEnabled, on); } + bool offlineWebApplicationCacheEnabled() const { return s->testAttribute(QWebSettings::OfflineWebApplicationCacheEnabled); } + void setOfflineWebApplicationCacheEnabled(bool on) { s->setAttribute(QWebSettings::OfflineWebApplicationCacheEnabled, on); } + bool localStorageDatabaseEnabled() const { return s->testAttribute(QWebSettings::LocalStorageDatabaseEnabled); } + void setLocalStorageDatabaseEnabled(bool on) { s->setAttribute(QWebSettings::LocalStorageDatabaseEnabled, on); } + bool localContentCanAccessRemoteUrls() const { return s->testAttribute(QWebSettings::LocalContentCanAccessRemoteUrls); } + void setLocalContentCanAccessRemoteUrls(bool on) { s->setAttribute(QWebSettings::LocalContentCanAccessRemoteUrls, on); } + + QWebSettings *s; +}; + +QT_END_NAMESPACE + +QML_DECLARE_TYPE(QmlGraphicsWebSettings) + +QT_END_HEADER + +#endif diff --git a/tests/auto/declarative/qmlgraphicswebview/data/elements.html b/tests/auto/declarative/qmlgraphicswebview/data/elements.html new file mode 100644 index 0000000..9236867 --- /dev/null +++ b/tests/auto/declarative/qmlgraphicswebview/data/elements.html @@ -0,0 +1,14 @@ + + + + + + +

A

+ + + + + +

B

C

+
diff --git a/tests/auto/declarative/qmlgraphicswebview/data/elements.qml b/tests/auto/declarative/qmlgraphicswebview/data/elements.qml new file mode 100644 index 0000000..7c030e6 --- /dev/null +++ b/tests/auto/declarative/qmlgraphicswebview/data/elements.qml @@ -0,0 +1,7 @@ +import Qt 4.6 + +WebView { + url: "elements.html" + width: 310 + height: 100 +} diff --git a/tests/auto/declarative/qmlgraphicswebview/tst_qmlgraphicswebview.cpp b/tests/auto/declarative/qmlgraphicswebview/tst_qmlgraphicswebview.cpp index 308cdd6..da43e68 100644 --- a/tests/auto/declarative/qmlgraphicswebview/tst_qmlgraphicswebview.cpp +++ b/tests/auto/declarative/qmlgraphicswebview/tst_qmlgraphicswebview.cpp @@ -43,6 +43,7 @@ #include #include #include +#include #include #include #include @@ -57,6 +58,7 @@ public: private slots: void basicProperties(); + void settings(); void historyNav(); void multipleWindows(); void elementAreaAt(); @@ -156,6 +158,71 @@ void tst_qmlgraphicswebview::basicProperties() QTRY_COMPARE(wv->progress(), 1.0); } +void tst_qmlgraphicswebview::settings() +{ + QmlComponent component(&engine, QUrl::fromLocalFile(SRCDIR "/data/basic.qml")); + checkNoErrors(component); + QmlGraphicsWebView *wv = qobject_cast(component.create()); + QVERIFY(wv != 0); + QTRY_COMPARE(wv->progress(), 1.0); + + QmlGraphicsWebSettings *s = wv->settingsObject(); + + // merely tests that setting gets stored (in QWebSettings) + // behavioural tests are in WebKit. + for (int b=0; b<=1; ++b) { + bool on = !!b; + + s->setAutoLoadImages(on); + s->setDeveloperExtrasEnabled(on); + s->setJavaEnabled(on); + s->setJavascriptCanAccessClipboard(on); + s->setJavascriptCanOpenWindows(on); + s->setJavascriptEnabled(on); + s->setLinksIncludedInFocusChain(on); + s->setLocalContentCanAccessRemoteUrls(on); + s->setLocalStorageDatabaseEnabled(on); + s->setOfflineStorageDatabaseEnabled(on); + s->setOfflineWebApplicationCacheEnabled(on); + s->setPluginsEnabled(on); + s->setPrintElementBackgrounds(on); + s->setPrivateBrowsingEnabled(on); + s->setZoomTextOnly(on); + + QVERIFY(s->autoLoadImages() == on); + QVERIFY(s->developerExtrasEnabled() == on); + QVERIFY(s->javaEnabled() == on); + QVERIFY(s->javascriptCanAccessClipboard() == on); + QVERIFY(s->javascriptCanOpenWindows() == on); + QVERIFY(s->javascriptEnabled() == on); + QVERIFY(s->linksIncludedInFocusChain() == on); + QVERIFY(s->localContentCanAccessRemoteUrls() == on); + QVERIFY(s->localStorageDatabaseEnabled() == on); + QVERIFY(s->offlineStorageDatabaseEnabled() == on); + QVERIFY(s->offlineWebApplicationCacheEnabled() == on); + QVERIFY(s->pluginsEnabled() == on); + QVERIFY(s->printElementBackgrounds() == on); + QVERIFY(s->privateBrowsingEnabled() == on); + QVERIFY(s->zoomTextOnly() == on); + + QVERIFY(s->property("autoLoadImages") == on); + QVERIFY(s->property("developerExtrasEnabled") == on); + QVERIFY(s->property("javaEnabled") == on); + QVERIFY(s->property("javascriptCanAccessClipboard") == on); + QVERIFY(s->property("javascriptCanOpenWindows") == on); + QVERIFY(s->property("javascriptEnabled") == on); + QVERIFY(s->property("linksIncludedInFocusChain") == on); + QVERIFY(s->property("localContentCanAccessRemoteUrls") == on); + QVERIFY(s->property("localStorageDatabaseEnabled") == on); + QVERIFY(s->property("offlineStorageDatabaseEnabled") == on); + QVERIFY(s->property("offlineWebApplicationCacheEnabled") == on); + QVERIFY(s->property("pluginsEnabled") == on); + QVERIFY(s->property("printElementBackgrounds") == on); + QVERIFY(s->property("privateBrowsingEnabled") == on); + QVERIFY(s->property("zoomTextOnly") == on); + } +} + void tst_qmlgraphicswebview::historyNav() { QmlComponent component(&engine, QUrl::fromLocalFile(SRCDIR "/data/basic.qml")); diff --git a/tests/auto/declarative/visual/webview/zooming/data/zooming.0.png b/tests/auto/declarative/visual/webview/zooming/data/zooming.0.png new file mode 100644 index 0000000..aaab35d Binary files /dev/null and b/tests/auto/declarative/visual/webview/zooming/data/zooming.0.png differ diff --git a/tests/auto/declarative/visual/webview/zooming/data/zooming.1.png b/tests/auto/declarative/visual/webview/zooming/data/zooming.1.png new file mode 100644 index 0000000..aaab35d Binary files /dev/null and b/tests/auto/declarative/visual/webview/zooming/data/zooming.1.png differ diff --git a/tests/auto/declarative/visual/webview/zooming/data/zooming.2.png b/tests/auto/declarative/visual/webview/zooming/data/zooming.2.png new file mode 100644 index 0000000..aaab35d Binary files /dev/null and b/tests/auto/declarative/visual/webview/zooming/data/zooming.2.png differ diff --git a/tests/auto/declarative/visual/webview/zooming/data/zooming.3.png b/tests/auto/declarative/visual/webview/zooming/data/zooming.3.png new file mode 100644 index 0000000..aaab35d Binary files /dev/null and b/tests/auto/declarative/visual/webview/zooming/data/zooming.3.png differ diff --git a/tests/auto/declarative/visual/webview/zooming/data/zooming.qml b/tests/auto/declarative/visual/webview/zooming/data/zooming.qml new file mode 100644 index 0000000..ad83800 --- /dev/null +++ b/tests/auto/declarative/visual/webview/zooming/data/zooming.qml @@ -0,0 +1,2115 @@ +import Qt.VisualTest 4.6 + +VisualTest { + Frame { + msec: 0 + } + Frame { + msec: 16 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 32 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 48 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 64 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 80 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 96 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 112 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 128 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 144 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 160 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 176 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 192 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 208 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 224 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 240 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 256 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 272 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 288 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 304 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 320 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 336 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 352 + hash: "c98df558c41f1837398eead42392b780" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 197; y: 34 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 185; y: 34 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 368 + hash: "c98df558c41f1837398eead42392b780" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 169; y: 38 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 384 + hash: "c98df558c41f1837398eead42392b780" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 161; y: 40 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 400 + hash: "c98df558c41f1837398eead42392b780" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 155; y: 44 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 147; y: 46 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 416 + hash: "c98df558c41f1837398eead42392b780" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 141; y: 48 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 138; y: 48 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 432 + hash: "c98df558c41f1837398eead42392b780" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 130; y: 48 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 127; y: 48 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 448 + hash: "c98df558c41f1837398eead42392b780" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 125; y: 48 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 123; y: 48 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 464 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 480 + hash: "c98df558c41f1837398eead42392b780" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 121; y: 49 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 496 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 512 + hash: "c98df558c41f1837398eead42392b780" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 117; y: 53 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 116; y: 53 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 528 + hash: "c98df558c41f1837398eead42392b780" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 115; y: 54 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 544 + hash: "c98df558c41f1837398eead42392b780" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 113; y: 54 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 560 + hash: "c98df558c41f1837398eead42392b780" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 111; y: 53 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 111; y: 52 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 576 + hash: "c98df558c41f1837398eead42392b780" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 110; y: 50 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 592 + hash: "c98df558c41f1837398eead42392b780" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 109; y: 48 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 608 + hash: "c98df558c41f1837398eead42392b780" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 108; y: 46 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 624 + hash: "c98df558c41f1837398eead42392b780" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 108; y: 45 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 107; y: 44 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 640 + hash: "c98df558c41f1837398eead42392b780" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 106; y: 43 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 656 + hash: "c98df558c41f1837398eead42392b780" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 105; y: 42 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 672 + hash: "c98df558c41f1837398eead42392b780" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 105; y: 41 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 688 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 704 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 720 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 736 + hash: "c98df558c41f1837398eead42392b780" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 105; y: 40 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 752 + hash: "c98df558c41f1837398eead42392b780" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 105; y: 39 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 768 + hash: "c98df558c41f1837398eead42392b780" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 105; y: 37 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 105; y: 36 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 784 + hash: "c98df558c41f1837398eead42392b780" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 105; y: 35 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 105; y: 34 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 800 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 816 + hash: "c98df558c41f1837398eead42392b780" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 106; y: 33 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 832 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 848 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 864 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 880 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 896 + hash: "c98df558c41f1837398eead42392b780" + } + Mouse { + type: 2 + button: 1 + buttons: 1 + x: 106; y: 33 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 912 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 928 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 944 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 960 + image: "zooming.0.png" + } + Frame { + msec: 976 + hash: "c98df558c41f1837398eead42392b780" + } + Mouse { + type: 3 + button: 1 + buttons: 0 + x: 106; y: 33 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 992 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 1008 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 1024 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 1040 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 1056 + hash: "c98df558c41f1837398eead42392b780" + } + Mouse { + type: 4 + button: 1 + buttons: 1 + x: 106; y: 33 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1072 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 1088 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 1104 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 1120 + hash: "c98df558c41f1837398eead42392b780" + } + Mouse { + type: 3 + button: 1 + buttons: 0 + x: 106; y: 33 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1136 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 1152 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 1168 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 1184 + hash: "c98df558c41f1837398eead42392b780" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 106; y: 34 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 106; y: 36 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1200 + hash: "c98df558c41f1837398eead42392b780" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 105; y: 38 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1216 + hash: "c98df558c41f1837398eead42392b780" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 103; y: 44 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1232 + hash: "c98df558c41f1837398eead42392b780" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 102; y: 46 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 98; y: 50 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1248 + hash: "c98df558c41f1837398eead42392b780" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 94; y: 56 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 90; y: 62 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1264 + hash: "c98df558c41f1837398eead42392b780" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 88; y: 70 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 84; y: 78 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1280 + hash: "c98df558c41f1837398eead42392b780" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 84; y: 86 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 84; y: 94 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1296 + hash: "c98df558c41f1837398eead42392b780" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 84; y: 104 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 86; y: 114 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1312 + hash: "c98df558c41f1837398eead42392b780" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 88; y: 124 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 92; y: 136 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1328 + hash: "c98df558c41f1837398eead42392b780" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 94; y: 146 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 96; y: 156 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1344 + hash: "c98df558c41f1837398eead42392b780" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 96; y: 164 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 96; y: 172 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1360 + hash: "c98df558c41f1837398eead42392b780" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 96; y: 180 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 96; y: 188 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1376 + hash: "c98df558c41f1837398eead42392b780" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 96; y: 190 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 96; y: 193 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1392 + hash: "c98df558c41f1837398eead42392b780" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 95; y: 195 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 95; y: 197 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1408 + hash: "c98df558c41f1837398eead42392b780" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 95; y: 198 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 95; y: 200 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1424 + hash: "c98df558c41f1837398eead42392b780" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 94; y: 201 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 94; y: 202 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1440 + hash: "c98df558c41f1837398eead42392b780" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 94; y: 204 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1456 + hash: "c98df558c41f1837398eead42392b780" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 93; y: 205 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1472 + hash: "c98df558c41f1837398eead42392b780" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 92; y: 206 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1488 + hash: "c98df558c41f1837398eead42392b780" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 92; y: 208 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1504 + hash: "c98df558c41f1837398eead42392b780" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 92; y: 210 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1520 + hash: "c98df558c41f1837398eead42392b780" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 92; y: 211 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 91; y: 212 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1536 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 1552 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 1568 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 1584 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 1600 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 1616 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 1632 + hash: "c98df558c41f1837398eead42392b780" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 91; y: 213 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1648 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 1664 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 1680 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 1696 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 1712 + hash: "c98df558c41f1837398eead42392b780" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 91; y: 214 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 2 + button: 1 + buttons: 1 + x: 91; y: 214 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1728 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 1744 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 1760 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 1776 + hash: "c98df558c41f1837398eead42392b780" + } + Mouse { + type: 3 + button: 1 + buttons: 0 + x: 91; y: 214 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1792 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 1808 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 1824 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 1840 + hash: "c98df558c41f1837398eead42392b780" + } + Mouse { + type: 4 + button: 1 + buttons: 1 + x: 91; y: 214 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1856 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 1872 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 1888 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 1904 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 1920 + image: "zooming.1.png" + } + Frame { + msec: 1936 + hash: "c98df558c41f1837398eead42392b780" + } + Mouse { + type: 3 + button: 1 + buttons: 0 + x: 91; y: 214 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1952 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 1968 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 1984 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 2000 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 2016 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 2032 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 2048 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 2064 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 2080 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 2096 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 2112 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 2128 + hash: "c98df558c41f1837398eead42392b780" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 91; y: 212 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2144 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 2160 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 2176 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 2192 + hash: "c98df558c41f1837398eead42392b780" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 89; y: 211 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2208 + hash: "c98df558c41f1837398eead42392b780" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 88; y: 211 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2224 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 2240 + hash: "c98df558c41f1837398eead42392b780" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 86; y: 211 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2256 + hash: "c98df558c41f1837398eead42392b780" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 85; y: 211 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 84; y: 211 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2272 + hash: "c98df558c41f1837398eead42392b780" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 82; y: 211 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 80; y: 211 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2288 + hash: "c98df558c41f1837398eead42392b780" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 77; y: 211 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 75; y: 211 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2304 + hash: "c98df558c41f1837398eead42392b780" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 69; y: 213 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 66; y: 213 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2320 + hash: "c98df558c41f1837398eead42392b780" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 64; y: 213 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 62; y: 213 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2336 + hash: "c98df558c41f1837398eead42392b780" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 60; y: 213 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 58; y: 213 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2352 + hash: "c98df558c41f1837398eead42392b780" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 56; y: 213 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 55; y: 212 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2368 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 2384 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 2400 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 2416 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 2432 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 2448 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 2464 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 2480 + hash: "c98df558c41f1837398eead42392b780" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 56; y: 213 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2496 + hash: "c98df558c41f1837398eead42392b780" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 58; y: 214 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 59; y: 214 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2512 + hash: "c98df558c41f1837398eead42392b780" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 61; y: 215 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 62; y: 216 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2528 + hash: "c98df558c41f1837398eead42392b780" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 63; y: 216 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2544 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 2560 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 2576 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 2592 + hash: "c98df558c41f1837398eead42392b780" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 64; y: 216 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 2 + button: 1 + buttons: 1 + x: 64; y: 216 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2608 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 2624 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 2640 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 2656 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 2672 + hash: "c98df558c41f1837398eead42392b780" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 63; y: 216 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 3 + button: 1 + buttons: 0 + x: 63; y: 216 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2688 + hash: "c98df558c41f1837398eead42392b780" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 62; y: 216 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2704 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 2720 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 2736 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 2752 + hash: "c98df558c41f1837398eead42392b780" + } + Mouse { + type: 4 + button: 1 + buttons: 1 + x: 62; y: 216 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2768 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 2784 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 2800 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 2816 + hash: "c98df558c41f1837398eead42392b780" + } + Mouse { + type: 3 + button: 1 + buttons: 0 + x: 62; y: 216 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2832 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 2848 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 2864 + hash: "c98df558c41f1837398eead42392b780" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 62; y: 215 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2880 + image: "zooming.2.png" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 62; y: 214 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2896 + hash: "c98df558c41f1837398eead42392b780" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 62; y: 213 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2912 + hash: "c98df558c41f1837398eead42392b780" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 62; y: 212 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 63; y: 211 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2928 + hash: "c98df558c41f1837398eead42392b780" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 63; y: 209 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 64; y: 208 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2944 + hash: "c98df558c41f1837398eead42392b780" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 66; y: 202 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 70; y: 198 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2960 + hash: "c98df558c41f1837398eead42392b780" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 72; y: 192 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 74; y: 186 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2976 + hash: "c98df558c41f1837398eead42392b780" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 76; y: 180 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 80; y: 170 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2992 + hash: "c98df558c41f1837398eead42392b780" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 84; y: 162 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 88; y: 152 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3008 + hash: "c98df558c41f1837398eead42392b780" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 94; y: 142 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 98; y: 130 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3024 + hash: "c98df558c41f1837398eead42392b780" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 102; y: 118 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 108; y: 108 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3040 + hash: "c98df558c41f1837398eead42392b780" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 112; y: 98 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 114; y: 90 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3056 + hash: "c98df558c41f1837398eead42392b780" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 120; y: 80 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 122; y: 72 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3072 + hash: "c98df558c41f1837398eead42392b780" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 126; y: 66 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 128; y: 58 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3088 + hash: "c98df558c41f1837398eead42392b780" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 132; y: 52 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 134; y: 46 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3104 + hash: "c98df558c41f1837398eead42392b780" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 136; y: 40 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 140; y: 32 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3120 + hash: "c98df558c41f1837398eead42392b780" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 144; y: 24 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 150; y: 18 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3136 + hash: "c98df558c41f1837398eead42392b780" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 154; y: 10 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 160; y: 4 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3152 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 3168 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 3184 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 3200 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 3216 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 3232 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 3248 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 3264 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 3280 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 3296 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 3312 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 3328 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 3344 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 3360 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 3376 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 3392 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 3408 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 3424 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 3440 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 3456 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 3472 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 3488 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 3504 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 3520 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 3536 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 3552 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 3568 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 3584 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 3600 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 3616 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 3632 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 3648 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 3664 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 3680 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 3696 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 3712 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 3728 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 3744 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 3760 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 3776 + hash: "c98df558c41f1837398eead42392b780" + } + Frame { + msec: 3792 + hash: "c98df558c41f1837398eead42392b780" + } +} diff --git a/tests/auto/declarative/visual/webview/zooming/zooming.html b/tests/auto/declarative/visual/webview/zooming/zooming.html new file mode 100644 index 0000000..4e91035 --- /dev/null +++ b/tests/auto/declarative/visual/webview/zooming/zooming.html @@ -0,0 +1,6 @@ + + +

Zooming

+

+This test shows how zooming can be to HTML elements.

+ diff --git a/tests/auto/declarative/visual/webview/zooming/zooming.qml b/tests/auto/declarative/visual/webview/zooming/zooming.qml new file mode 100644 index 0000000..3ac57f6 --- /dev/null +++ b/tests/auto/declarative/visual/webview/zooming/zooming.qml @@ -0,0 +1,17 @@ +import Qt 4.6 + +// Note that zooming is better done using zoomFactor and careful +// control of rendering to avoid excessive re-rendering during +// zoom animations. This test is written for simplicity. +WebView { + width: 200 + height: 250 + x: Behavior { NumberAnimation { } } + y: Behavior { NumberAnimation { } } + scale: Behavior { NumberAnimation { } } + url: "zooming.html" + preferredWidth: width + preferredHeight: height + onDoubleClick: {print(clickX,clickY);heuristicZoom(clickX,clickY,2)} + onZoomTo: {print(zoom);scale=zoom;x=width/2-centerX;y=height/2-centerY} +} -- cgit v0.12 From 6b641dde82a42fb6a0ed63335022ab390aa72014 Mon Sep 17 00:00:00 2001 From: Warwick Allison Date: Fri, 13 Nov 2009 15:35:51 +1000 Subject: Quietness option. --- bin/syncqt | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/bin/syncqt b/bin/syncqt index a14a82d..7c3be72 100755 --- a/bin/syncqt +++ b/bin/syncqt @@ -56,6 +56,7 @@ my %moduleheaders = ( # restrict the module headers to those found in relative p # global variables (modified by options) my $module = 0; my $showonly = 0; +my $quiet = 0; my $remove_stale = 1; my $force_win = 0; my $force_relative = 0; @@ -84,6 +85,7 @@ sub showUsage print " -windows Force platform to Windows (default: " . ($force_win ? "yes" : "no") . ")\n"; print " -showonly Show action but not perform (default: " . ($showonly ? "yes" : "no") . ")\n"; print " -outdir Specify output directory for sync (default: $out_basedir)\n"; + print " -quiet Only report problems, not activity (default: " . ($quiet ? "yes" : "no") . ")\n"; print " -help This help\n"; exit 0; } @@ -488,7 +490,7 @@ sub symlinkFile my ($file,$ifile) = @_; if ($isunix) { - print "symlink created for $file "; + print "symlink created for $file " unless $quiet; if ( $force_relative && ($ifile =~ /^$basedir/)) { my $t = getcwd(); my $c = -1; @@ -496,9 +498,9 @@ sub symlinkFile $t =~ s-^$basedir/--; $p .= "../" while( ($c = index( $t, "/", $c + 1)) != -1 ); $file =~ s-^$basedir/-$p-; - print " ($file)\n"; + print " ($file)\n" unless $quiet; } - print "\n"; + print "\n" unless $quiet; return symlink($file, $ifile); } return copyFile($file, $ifile); @@ -625,7 +627,7 @@ while ( @ARGV ) { $force_relative--; } } elsif ("$var" eq "module") { - print "module :$val:\n"; + print "module :$val:\n" unless $quiet; die "No such module: $val" unless(defined $modules{$val}); push @modules_to_sync, $val; } elsif ("$var" eq "output") { @@ -835,7 +837,7 @@ foreach (@modules_to_sync) { } } } - print "header created for $iheader ($header_copies)\n" if($header_copies > 0); + print "header created for $iheader ($header_copies)\n" if($header_copies > 0 && !$quiet); } } } @@ -867,7 +869,7 @@ foreach (@modules_to_sync) { if($master_include && $master_contents) { my $master_dir = dirname($master_include); mkpath $master_dir, 0777; - print "header (master) created for $lib\n"; + print "header (master) created for $lib\n" unless $quiet; open MASTERINCLUDE, ">$master_include"; print MASTERINCLUDE "$master_contents"; close MASTERINCLUDE; @@ -891,7 +893,7 @@ foreach (@modules_to_sync) { if($headers_pri_file && $master_contents) { my $headers_pri_dir = dirname($headers_pri_file); mkpath $headers_pri_dir, 0777; - print "headers.pri file created for $lib\n"; + print "headers.pri file created for $lib\n" unless $quiet; open HEADERS_PRI_FILE, ">$headers_pri_file"; print HEADERS_PRI_FILE "$headers_pri_contents"; close HEADERS_PRI_FILE; -- cgit v0.12