summaryrefslogtreecommitdiffstats
path: root/tests/auto/declarative
diff options
context:
space:
mode:
authorWarwick Allison <warwick.allison@nokia.com>2009-11-09 03:07:49 (GMT)
committerWarwick Allison <warwick.allison@nokia.com>2009-11-09 03:07:49 (GMT)
commit58e1842aa9703f81c2f55758ba186315524027d8 (patch)
tree617ab67b149e9e35b6dbd19e90f8044f078ca899 /tests/auto/declarative
parentd96ec3cff51b952a2db9dd016ca5b21d9bb21adf (diff)
parent7620586aa79c027e5dfd246d53232826333ce715 (diff)
downloadQt-58e1842aa9703f81c2f55758ba186315524027d8.zip
Qt-58e1842aa9703f81c2f55758ba186315524027d8.tar.gz
Qt-58e1842aa9703f81c2f55758ba186315524027d8.tar.bz2
Merge branch 'kinetic-declarativeui' of git@scm.dev.nokia.troll.no:qt/kinetic into kinetic-declarativeui
Diffstat (limited to 'tests/auto/declarative')
-rw-r--r--tests/auto/declarative/anchors/data/anchors.qml27
-rw-r--r--tests/auto/declarative/anchors/data/crash1.qml11
-rw-r--r--tests/auto/declarative/anchors/tst_anchors.cpp31
-rw-r--r--tests/auto/declarative/animations/data/badproperty1.qml2
-rw-r--r--tests/auto/declarative/animations/data/badtype4.qml4
-rw-r--r--tests/auto/declarative/animations/data/dotproperty.qml4
-rw-r--r--tests/auto/declarative/animations/data/mixedtype1.qml2
-rw-r--r--tests/auto/declarative/animations/data/mixedtype2.qml2
-rw-r--r--tests/auto/declarative/animations/data/properties.qml14
-rw-r--r--tests/auto/declarative/animations/data/properties2.qml14
-rw-r--r--tests/auto/declarative/animations/data/properties3.qml14
-rw-r--r--tests/auto/declarative/animations/data/properties4.qml14
-rw-r--r--tests/auto/declarative/animations/data/properties5.qml14
-rw-r--r--tests/auto/declarative/animations/data/propertiesTransition.qml29
-rw-r--r--tests/auto/declarative/animations/data/propertiesTransition2.qml29
-rw-r--r--tests/auto/declarative/animations/data/propertiesTransition3.qml29
-rw-r--r--tests/auto/declarative/animations/data/propertiesTransition4.qml29
-rw-r--r--tests/auto/declarative/animations/data/propertiesTransition5.qml29
-rw-r--r--tests/auto/declarative/animations/data/propertiesTransition6.qml29
-rw-r--r--tests/auto/declarative/animations/tst_animations.cpp144
-rw-r--r--tests/auto/declarative/behaviors/data/nonSelecting.qml2
-rw-r--r--tests/auto/declarative/behaviors/data/nonSelecting2.qml26
-rw-r--r--tests/auto/declarative/behaviors/tst_behaviors.cpp27
-rw-r--r--tests/auto/declarative/declarative.pro11
-rw-r--r--tests/auto/declarative/layouts/data/grid-animated.qml6
-rw-r--r--tests/auto/declarative/layouts/data/horizontal-animated.qml6
-rw-r--r--tests/auto/declarative/layouts/data/vertical-animated.qml6
-rw-r--r--tests/auto/declarative/parserstress/parserstress.pro7
-rw-r--r--tests/auto/declarative/parserstress/tst_parserstress.cpp141
-rw-r--r--tests/auto/declarative/qmlconnection/data/test-connection.qml10
-rw-r--r--tests/auto/declarative/qmlconnection/qmlconnection.pro (renamed from tests/auto/declarative/qfxtextedit/qfxtextedit.pro)2
-rw-r--r--tests/auto/declarative/qmlconnection/tst_qmlconnection.cpp85
-rw-r--r--tests/auto/declarative/qmlgraphicsitem/data/keynavigation.qml39
-rw-r--r--tests/auto/declarative/qmlgraphicsitem/data/keys.qml15
-rw-r--r--tests/auto/declarative/qmlgraphicsitem/qmlgraphicsitem.pro7
-rw-r--r--tests/auto/declarative/qmlgraphicsitem/tst_qmlgraphicsitem.cpp240
-rw-r--r--tests/auto/declarative/qmlgraphicslistview/data/listview-enforcerange.qml (renamed from tests/auto/declarative/listview/data/listview-enforcerange.qml)0
-rw-r--r--tests/auto/declarative/qmlgraphicslistview/data/listview-initCurrent.qml49
-rw-r--r--tests/auto/declarative/qmlgraphicslistview/data/listview-sections.qml (renamed from tests/auto/declarative/listview/data/listview-sections.qml)2
-rw-r--r--tests/auto/declarative/qmlgraphicslistview/data/listview.qml (renamed from tests/auto/declarative/listview/data/listview.qml)2
-rw-r--r--tests/auto/declarative/qmlgraphicslistview/qmlgraphicslistview.pro (renamed from tests/auto/declarative/listview/listview.pro)2
-rw-r--r--tests/auto/declarative/qmlgraphicslistview/tst_qmlgraphicslistview.cpp (renamed from tests/auto/declarative/listview/tst_listview.cpp)154
-rw-r--r--tests/auto/declarative/qmlgraphicsparticles/tst_qmlgraphicsparticles.cpp3
-rw-r--r--tests/auto/declarative/qmlgraphicstext/tst_qmlgraphicstext.cpp55
-rw-r--r--tests/auto/declarative/qmlgraphicstextedit/data/cursorTest.qml (renamed from tests/auto/declarative/qfxtextedit/data/cursorTest.qml)0
-rw-r--r--tests/auto/declarative/qmlgraphicstextedit/data/navigation.qml (renamed from tests/auto/declarative/qfxtextedit/data/navigation.qml)0
-rw-r--r--tests/auto/declarative/qmlgraphicstextedit/qmlgraphicstextedit.pro (renamed from tests/auto/declarative/qfxtextinput/qfxtextinput.pro)2
-rw-r--r--tests/auto/declarative/qmlgraphicstextedit/tst_qmlgraphicstextedit.cpp (renamed from tests/auto/declarative/qfxtextedit/tst_qfxtextedit.cpp)34
-rw-r--r--tests/auto/declarative/qmlgraphicstextinput/data/cursorTest.qml (renamed from tests/auto/declarative/qfxtextinput/data/cursorTest.qml)0
-rw-r--r--tests/auto/declarative/qmlgraphicstextinput/data/navigation.qml (renamed from tests/auto/declarative/qfxtextinput/data/navigation.qml)0
-rw-r--r--tests/auto/declarative/qmlgraphicstextinput/qmlgraphicstextinput.pro8
-rw-r--r--tests/auto/declarative/qmlgraphicstextinput/tst_qmlgraphicstextinput.cpp (renamed from tests/auto/declarative/qfxtextinput/tst_qfxtextinput.cpp)34
-rw-r--r--tests/auto/declarative/qmllanguage/data/assignBasicTypes.qml1
-rw-r--r--tests/auto/declarative/qmllanguage/data/attachedProperties.qml3
-rw-r--r--tests/auto/declarative/qmllanguage/data/fakeDotProperty.errors.txt2
-rw-r--r--tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.1.errors.txt1
-rw-r--r--tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.1.qml7
-rw-r--r--tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.10.errors.txt1
-rw-r--r--tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.10.qml6
-rw-r--r--tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.11.errors.txt1
-rw-r--r--tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.11.qml7
-rw-r--r--tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.2.errors.txt1
-rw-r--r--tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.2.qml6
-rw-r--r--tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.3.errors.txt1
-rw-r--r--tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.3.qml8
-rw-r--r--tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.4.errors.txt1
-rw-r--r--tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.4.qml7
-rw-r--r--tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.5.errors.txt1
-rw-r--r--tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.5.qml7
-rw-r--r--tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.6.errors.txt1
-rw-r--r--tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.6.qml7
-rw-r--r--tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.7.errors.txt1
-rw-r--r--tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.7.qml6
-rw-r--r--tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.8.errors.txt1
-rw-r--r--tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.8.qml6
-rw-r--r--tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.9.errors.txt1
-rw-r--r--tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.9.qml7
-rw-r--r--tests/auto/declarative/qmllanguage/data/invalidGroupedProperty.1.errors.txt2
-rw-r--r--tests/auto/declarative/qmllanguage/data/invalidGroupedProperty.2.errors.txt2
-rw-r--r--tests/auto/declarative/qmllanguage/data/invalidGroupedProperty.3.errors.txt1
-rw-r--r--tests/auto/declarative/qmllanguage/data/invalidGroupedProperty.3.qml5
-rw-r--r--tests/auto/declarative/qmllanguage/data/invalidGroupedProperty.4.errors.txt1
-rw-r--r--tests/auto/declarative/qmllanguage/data/invalidGroupedProperty.4.qml5
-rw-r--r--tests/auto/declarative/qmllanguage/data/invalidGroupedProperty.5.errors.txt1
-rw-r--r--tests/auto/declarative/qmllanguage/data/invalidGroupedProperty.5.qml5
-rw-r--r--tests/auto/declarative/qmllanguage/data/invalidGroupedProperty.6.errors.txt1
-rw-r--r--tests/auto/declarative/qmllanguage/data/invalidGroupedProperty.6.qml6
-rw-r--r--tests/auto/declarative/qmllanguage/data/invalidGroupedProperty.7.errors.txt1
-rw-r--r--tests/auto/declarative/qmllanguage/data/invalidGroupedProperty.7.qml5
-rw-r--r--tests/auto/declarative/qmllanguage/data/missingValueTypeProperty.errors.txt1
-rw-r--r--tests/auto/declarative/qmllanguage/data/missingValueTypeProperty.qml5
-rw-r--r--tests/auto/declarative/qmllanguage/data/objectValueTypeProperty.errors.txt1
-rw-r--r--tests/auto/declarative/qmllanguage/data/objectValueTypeProperty.qml6
-rw-r--r--tests/auto/declarative/qmllanguage/data/wrongType.15.errors.txt1
-rw-r--r--tests/auto/declarative/qmllanguage/data/wrongType.15.qml4
-rw-r--r--tests/auto/declarative/qmllanguage/testtypes.h19
-rw-r--r--tests/auto/declarative/qmllanguage/tst_qmllanguage.cpp36
-rw-r--r--tests/auto/declarative/qmlsystempalette/tst_qmlsystempalette.cpp27
-rw-r--r--tests/auto/declarative/qmltimer/tst_qmltimer.cpp10
-rw-r--r--tests/auto/declarative/valuetypes/data/bindingVariantCopy.qml13
-rw-r--r--tests/auto/declarative/valuetypes/data/deletedObject.js13
-rw-r--r--tests/auto/declarative/valuetypes/data/deletedObject.qml12
-rw-r--r--tests/auto/declarative/valuetypes/data/scriptVariantCopy.qml14
-rw-r--r--tests/auto/declarative/valuetypes/tst_valuetypes.cpp51
-rw-r--r--tests/auto/declarative/visual/bindinganimation/bindinganimation.qml2
-rw-r--r--tests/auto/declarative/visual/easing/easing.qml2
-rw-r--r--tests/auto/declarative/visual/qfxtext/font/data-MAC/plaintext.qml351
-rw-r--r--tests/auto/declarative/visual/qfxtext/font/data-MAC/richtext.qml359
-rw-r--r--tests/auto/declarative/visual/qmlgraphicsflipable/data/test-flipable.0.pngbin0 -> 1092 bytes
-rw-r--r--tests/auto/declarative/visual/qmlgraphicsflipable/data/test-flipable.1.pngbin0 -> 1134 bytes
-rw-r--r--tests/auto/declarative/visual/qmlgraphicsflipable/data/test-flipable.2.pngbin0 -> 961 bytes
-rw-r--r--tests/auto/declarative/visual/qmlgraphicsflipable/data/test-flipable.3.pngbin0 -> 1074 bytes
-rw-r--r--tests/auto/declarative/visual/qmlgraphicsflipable/data/test-flipable.4.pngbin0 -> 1134 bytes
-rw-r--r--tests/auto/declarative/visual/qmlgraphicsflipable/data/test-flipable.5.pngbin0 -> 969 bytes
-rw-r--r--tests/auto/declarative/visual/qmlgraphicsflipable/data/test-flipable.qml1623
-rw-r--r--tests/auto/declarative/visual/qmlgraphicsflipable/test-flipable.qml83
-rw-r--r--tests/auto/declarative/visual/qmlgraphicsparticles/data/particles.0.pngbin10022 -> 10361 bytes
-rw-r--r--tests/auto/declarative/visual/qmlgraphicsparticles/data/particles.1.pngbin14142 -> 14447 bytes
-rw-r--r--tests/auto/declarative/visual/qmlgraphicsparticles/data/particles.2.pngbin14214 -> 13793 bytes
-rw-r--r--tests/auto/declarative/visual/qmlgraphicsparticles/data/particles.qml384
-rw-r--r--tests/auto/declarative/visual/qmlgraphicsparticles/particles.qml3
-rw-r--r--tests/auto/declarative/visual/qmlgraphicstext/elide/data-X11/elide.0.png (renamed from tests/auto/declarative/visual/qfxtext/elide/data-X11/elide.0.png)bin1002 -> 1002 bytes
-rw-r--r--tests/auto/declarative/visual/qmlgraphicstext/elide/data-X11/elide.qml (renamed from tests/auto/declarative/visual/qfxtext/elide/data-X11/elide.qml)0
-rw-r--r--tests/auto/declarative/visual/qmlgraphicstext/elide/data-X11/multilength.0.png (renamed from tests/auto/declarative/visual/qfxtext/elide/data-X11/multilength.0.png)bin596 -> 596 bytes
-rw-r--r--tests/auto/declarative/visual/qmlgraphicstext/elide/data-X11/multilength.qml (renamed from tests/auto/declarative/visual/qfxtext/elide/data-X11/multilength.qml)0
-rw-r--r--tests/auto/declarative/visual/qmlgraphicstext/elide/data/elide.0.png (renamed from tests/auto/declarative/visual/qfxtext/elide/data/elide.0.png)bin1604 -> 1604 bytes
-rw-r--r--tests/auto/declarative/visual/qmlgraphicstext/elide/data/elide.qml (renamed from tests/auto/declarative/visual/qfxtext/elide/data/elide.qml)0
-rw-r--r--tests/auto/declarative/visual/qmlgraphicstext/elide/elide.qml (renamed from tests/auto/declarative/visual/qfxtext/elide/elide.qml)0
-rw-r--r--tests/auto/declarative/visual/qmlgraphicstext/elide/multilength.qml (renamed from tests/auto/declarative/visual/qfxtext/elide/multilength.qml)0
-rw-r--r--tests/auto/declarative/visual/qmlgraphicstext/font/data-MAC/plaintext.0.png (renamed from tests/auto/declarative/visual/qfxtext/font/data-MAC/plaintext.0.png)bin103016 -> 103018 bytes
-rw-r--r--tests/auto/declarative/visual/qmlgraphicstext/font/data-MAC/plaintext.qml351
-rw-r--r--tests/auto/declarative/visual/qmlgraphicstext/font/data-MAC/richtext.0.png (renamed from tests/auto/declarative/visual/qfxtext/font/data-MAC/richtext.0.png)bin136499 -> 136492 bytes
-rw-r--r--tests/auto/declarative/visual/qmlgraphicstext/font/data-MAC/richtext.qml359
-rw-r--r--tests/auto/declarative/visual/qmlgraphicstext/font/data/plaintext.0.png (renamed from tests/auto/declarative/visual/qfxtext/font/data/plaintext.0.png)bin94120 -> 94120 bytes
-rw-r--r--tests/auto/declarative/visual/qmlgraphicstext/font/data/plaintext.qml (renamed from tests/auto/declarative/visual/qfxtext/font/data/plaintext.qml)0
-rw-r--r--tests/auto/declarative/visual/qmlgraphicstext/font/data/richtext.0.png (renamed from tests/auto/declarative/visual/qfxtext/font/data/richtext.0.png)bin121122 -> 121122 bytes
-rw-r--r--tests/auto/declarative/visual/qmlgraphicstext/font/data/richtext.qml (renamed from tests/auto/declarative/visual/qfxtext/font/data/richtext.qml)0
-rw-r--r--tests/auto/declarative/visual/qmlgraphicstext/font/plaintext.qml (renamed from tests/auto/declarative/visual/qfxtext/font/plaintext.qml)4
-rw-r--r--tests/auto/declarative/visual/qmlgraphicstext/font/richtext.qml (renamed from tests/auto/declarative/visual/qfxtext/font/richtext.qml)4
-rw-r--r--tests/auto/declarative/visual/qmlspringfollow/data-MAC/follow.0.pngbin0 -> 2778 bytes
-rw-r--r--tests/auto/declarative/visual/qmlspringfollow/data-MAC/follow.1.pngbin0 -> 2778 bytes
-rw-r--r--tests/auto/declarative/visual/qmlspringfollow/data-MAC/follow.2.pngbin0 -> 2767 bytes
-rw-r--r--tests/auto/declarative/visual/qmlspringfollow/data-MAC/follow.3.pngbin0 -> 2784 bytes
-rw-r--r--tests/auto/declarative/visual/qmlspringfollow/data-MAC/follow.4.pngbin0 -> 2786 bytes
-rw-r--r--tests/auto/declarative/visual/qmlspringfollow/data-MAC/follow.5.pngbin0 -> 2785 bytes
-rw-r--r--tests/auto/declarative/visual/qmlspringfollow/data-MAC/follow.qml1691
-rw-r--r--tests/auto/declarative/visual/qmlspringfollow/data/follow.0.pngbin0 -> 2776 bytes
-rw-r--r--tests/auto/declarative/visual/qmlspringfollow/data/follow.1.pngbin0 -> 2788 bytes
-rw-r--r--tests/auto/declarative/visual/qmlspringfollow/data/follow.2.pngbin0 -> 2767 bytes
-rw-r--r--tests/auto/declarative/visual/qmlspringfollow/data/follow.3.pngbin0 -> 2784 bytes
-rw-r--r--tests/auto/declarative/visual/qmlspringfollow/data/follow.4.pngbin0 -> 2786 bytes
-rw-r--r--tests/auto/declarative/visual/qmlspringfollow/data/follow.5.pngbin0 -> 2785 bytes
-rw-r--r--tests/auto/declarative/visual/qmlspringfollow/data/follow.qml1691
-rw-r--r--tests/auto/declarative/visual/qmlspringfollow/follow.qml73
-rw-r--r--tests/auto/declarative/visual/tst_visual.cpp19
155 files changed, 7772 insertions, 1012 deletions
diff --git a/tests/auto/declarative/anchors/data/anchors.qml b/tests/auto/declarative/anchors/data/anchors.qml
index 377dd2d..765e5b6 100644
--- a/tests/auto/declarative/anchors/data/anchors.qml
+++ b/tests/auto/declarative/anchors/data/anchors.qml
@@ -114,4 +114,31 @@ Rectangle {
y: 70; width: 10; height: 10
anchors.horizontalCenter: parent.left
}
+ Rectangle {
+ id: Rect22; objectName: "Rect22"
+ width: 10; height: 10
+ anchors.centerIn: MasterRect
+ }
+ Rectangle {
+ id: Rect23; objectName: "Rect23"
+ anchors.left: MasterRect.left
+ anchors.leftMargin: 5
+ anchors.right: MasterRect.right
+ anchors.rightMargin: 5
+ anchors.top: MasterRect.top
+ anchors.topMargin: 5
+ anchors.bottom: MasterRect.bottom
+ anchors.bottomMargin: 5
+ }
+ Text {
+ id: text1; objectName: "text1"
+ y: 200;
+ text: "Hello"
+ }
+ Text {
+ id: text2; objectName: "text2"
+ anchors.baseline: text1.baseline
+ anchors.left: text1.right
+ text: "World"
+ }
}
diff --git a/tests/auto/declarative/anchors/data/crash1.qml b/tests/auto/declarative/anchors/data/crash1.qml
new file mode 100644
index 0000000..fd9dc55
--- /dev/null
+++ b/tests/auto/declarative/anchors/data/crash1.qml
@@ -0,0 +1,11 @@
+import Qt 4.6
+
+Column {
+ Text {
+ text: "foo"
+ anchors.fill: parent
+ }
+ Text {
+ text: "bar"
+ }
+}
diff --git a/tests/auto/declarative/anchors/tst_anchors.cpp b/tests/auto/declarative/anchors/tst_anchors.cpp
index 8abf04f..4c85d2d 100644
--- a/tests/auto/declarative/anchors/tst_anchors.cpp
+++ b/tests/auto/declarative/anchors/tst_anchors.cpp
@@ -43,6 +43,7 @@
#include <QtDeclarative/qmlcomponent.h>
#include <QtDeclarative/qmlview.h>
#include <private/qmlgraphicsrectangle_p.h>
+#include <private/qmlgraphicstext_p.h>
#include <QtDeclarative/private/qmlgraphicsanchors_p_p.h>
@@ -61,6 +62,7 @@ private slots:
void illegalSets();
void reset();
void nullItem();
+ void crash1();
};
/*
@@ -131,6 +133,21 @@ void tst_anchors::basicAnchors()
QCOMPARE(findItem<QmlGraphicsRectangle>(view->root(), QLatin1String("Rect20"))->x(), 235.0);
QCOMPARE(findItem<QmlGraphicsRectangle>(view->root(), QLatin1String("Rect21"))->x(), -5.0);
+ //centerIn
+ QCOMPARE(findItem<QmlGraphicsRectangle>(view->root(), QLatin1String("Rect22"))->x(), 69.0);
+ QCOMPARE(findItem<QmlGraphicsRectangle>(view->root(), QLatin1String("Rect22"))->y(), 5.0);
+
+ //margins
+ QCOMPARE(findItem<QmlGraphicsRectangle>(view->root(), QLatin1String("Rect23"))->x(), 31.0);
+ QCOMPARE(findItem<QmlGraphicsRectangle>(view->root(), QLatin1String("Rect23"))->y(), 5.0);
+ QCOMPARE(findItem<QmlGraphicsRectangle>(view->root(), QLatin1String("Rect23"))->width(), 86.0);
+ QCOMPARE(findItem<QmlGraphicsRectangle>(view->root(), QLatin1String("Rect23"))->height(), 10.0);
+
+ //baseline
+ QmlGraphicsText *text1 = findItem<QmlGraphicsText>(view->root(), QLatin1String("text1"));
+ QmlGraphicsText *text2 = findItem<QmlGraphicsText>(view->root(), QLatin1String("text2"));
+ QCOMPARE(text1->y(), text2->y());
+
delete view;
}
@@ -232,6 +249,20 @@ void tst_anchors::nullItem()
item->anchors()->setBottom(anchor);
}
+void tst_anchors::crash1()
+{
+ QmlView *view = new QmlView;
+
+ view->setUrl(QUrl("file://" SRCDIR "/data/crash1.qml"));
+
+ QString expect = "QML QmlGraphicsText (" + view->url().toString() + ":4:5" + ") Possible anchor loop detected on fill.";
+ QTest::ignoreMessage(QtWarningMsg, expect.toLatin1());
+ view->execute();
+ qApp->processEvents();
+
+ delete view;
+}
+
QTEST_MAIN(tst_anchors)
#include "tst_anchors.moc"
diff --git a/tests/auto/declarative/animations/data/badproperty1.qml b/tests/auto/declarative/animations/data/badproperty1.qml
index 78da34a..df1a98d 100644
--- a/tests/auto/declarative/animations/data/badproperty1.qml
+++ b/tests/auto/declarative/animations/data/badproperty1.qml
@@ -19,6 +19,6 @@ Rectangle {
PropertyChanges { target: MyRect; border.color: "blue" }
}
transitions: Transition {
- ColorAnimation { target: MyRect; to: "red"; properties: "pen.colr"; duration: 1000 }
+ ColorAnimation { target: MyRect; to: "red"; property: "pen.colr"; duration: 1000 }
}
}
diff --git a/tests/auto/declarative/animations/data/badtype4.qml b/tests/auto/declarative/animations/data/badtype4.qml
index 0c0a636..5db6c17 100644
--- a/tests/auto/declarative/animations/data/badtype4.qml
+++ b/tests/auto/declarative/animations/data/badtype4.qml
@@ -20,7 +20,7 @@ Rectangle {
}
transitions: Transition {
//comment out each in turn to make sure each only animates the relevant property
- ColorAnimation { properties: "x,color"; duration: 1000 } //x is real, color is color
- NumberAnimation { properties: "x,color"; duration: 1000 } //x is real, color is color
+ ColorAnimation { matchProperties: "x,color"; duration: 1000 } //x is real, color is color
+ NumberAnimation { matchProperties: "x,color"; duration: 1000 } //x is real, color is color
}
}
diff --git a/tests/auto/declarative/animations/data/dotproperty.qml b/tests/auto/declarative/animations/data/dotproperty.qml
index ee076c2..3ddb002 100644
--- a/tests/auto/declarative/animations/data/dotproperty.qml
+++ b/tests/auto/declarative/animations/data/dotproperty.qml
@@ -16,9 +16,9 @@ Rectangle {
}
states: State {
name: "state1"
- PropertyChanges { target: MyRect; pen.color: "blue" }
+ PropertyChanges { target: MyRect; border.color: "blue" }
}
transitions: Transition {
- ColorAnimation { properties: "pen.color"; duration: 1000 }
+ ColorAnimation { matchProperties: "border.color"; duration: 1000 }
}
}
diff --git a/tests/auto/declarative/animations/data/mixedtype1.qml b/tests/auto/declarative/animations/data/mixedtype1.qml
index ed50582..5ecf14f 100644
--- a/tests/auto/declarative/animations/data/mixedtype1.qml
+++ b/tests/auto/declarative/animations/data/mixedtype1.qml
@@ -19,6 +19,6 @@ Rectangle {
PropertyChanges { target: MyRect; x: 200; border.width: 10 }
}
transitions: Transition {
- PropertyAnimation { properties: "x,border.width"; duration: 1000 } //x is real, border.width is int
+ PropertyAnimation { matchProperties: "x,border.width"; duration: 1000 } //x is real, border.width is int
}
}
diff --git a/tests/auto/declarative/animations/data/mixedtype2.qml b/tests/auto/declarative/animations/data/mixedtype2.qml
index 4854c2e..645f1d0 100644
--- a/tests/auto/declarative/animations/data/mixedtype2.qml
+++ b/tests/auto/declarative/animations/data/mixedtype2.qml
@@ -19,6 +19,6 @@ Rectangle {
PropertyChanges { target: MyRect; x: 200; color: "blue" }
}
transitions: Transition {
- PropertyAnimation { properties: "x,color"; duration: 1000 } //x is real, color is color
+ PropertyAnimation { matchProperties: "x,color"; duration: 1000 } //x is real, color is color
}
}
diff --git a/tests/auto/declarative/animations/data/properties.qml b/tests/auto/declarative/animations/data/properties.qml
new file mode 100644
index 0000000..a8023b4
--- /dev/null
+++ b/tests/auto/declarative/animations/data/properties.qml
@@ -0,0 +1,14 @@
+import Qt 4.6
+
+Rectangle {
+ width: 400
+ height: 400
+ Rectangle {
+ id: theRect
+ objectName: "TheRect"
+ color: "red"
+ width: 50; height: 50
+ x: 100; y: 100
+ x: NumberAnimation { to: 200; running: true; }
+ }
+}
diff --git a/tests/auto/declarative/animations/data/properties2.qml b/tests/auto/declarative/animations/data/properties2.qml
new file mode 100644
index 0000000..aab7661
--- /dev/null
+++ b/tests/auto/declarative/animations/data/properties2.qml
@@ -0,0 +1,14 @@
+import Qt 4.6
+
+Rectangle {
+ width: 400
+ height: 400
+ Rectangle {
+ id: theRect
+ objectName: "TheRect"
+ color: "red"
+ width: 50; height: 50
+ x: 100; y: 100
+ x: NumberAnimation { matchTargets: theRect; matchProperties: "x"; to: 200; running: true }
+ }
+}
diff --git a/tests/auto/declarative/animations/data/properties3.qml b/tests/auto/declarative/animations/data/properties3.qml
new file mode 100644
index 0000000..fd21a85
--- /dev/null
+++ b/tests/auto/declarative/animations/data/properties3.qml
@@ -0,0 +1,14 @@
+import Qt 4.6
+
+Rectangle {
+ width: 400
+ height: 400
+ Rectangle {
+ id: theRect
+ objectName: "TheRect"
+ color: "red"
+ width: 50; height: 50
+ x: 100; y: 100
+ x: NumberAnimation { target: theRect; property: "x"; to: 300; running: true }
+ }
+}
diff --git a/tests/auto/declarative/animations/data/properties4.qml b/tests/auto/declarative/animations/data/properties4.qml
new file mode 100644
index 0000000..e23651c
--- /dev/null
+++ b/tests/auto/declarative/animations/data/properties4.qml
@@ -0,0 +1,14 @@
+import Qt 4.6
+
+Rectangle {
+ width: 400
+ height: 400
+ Rectangle {
+ id: theRect
+ objectName: "TheRect"
+ color: "red"
+ width: 50; height: 50
+ x: 100; y: 100
+ x: NumberAnimation { target: theRect; property: "y"; to: 200; running: true }
+ }
+}
diff --git a/tests/auto/declarative/animations/data/properties5.qml b/tests/auto/declarative/animations/data/properties5.qml
new file mode 100644
index 0000000..25c9866
--- /dev/null
+++ b/tests/auto/declarative/animations/data/properties5.qml
@@ -0,0 +1,14 @@
+import Qt 4.6
+
+Rectangle {
+ width: 400
+ height: 400
+ Rectangle {
+ id: theRect
+ objectName: "TheRect"
+ color: "red"
+ width: 50; height: 50
+ x: 100; y: 100
+ x: NumberAnimation { matchTargets: theRect; matchProperties: "y"; to: 200; running: true }
+ }
+}
diff --git a/tests/auto/declarative/animations/data/propertiesTransition.qml b/tests/auto/declarative/animations/data/propertiesTransition.qml
new file mode 100644
index 0000000..75603b9
--- /dev/null
+++ b/tests/auto/declarative/animations/data/propertiesTransition.qml
@@ -0,0 +1,29 @@
+import Qt 4.6
+
+Rectangle {
+ width: 400
+ height: 400
+ Rectangle {
+ id: theRect
+ objectName: "TheRect"
+ color: "red"
+ width: 50; height: 50
+ x: 100; y: 100
+ }
+
+ states: State {
+ name: "moved"
+ PropertyChanges {
+ target: theRect
+ x: 200
+ }
+ }
+ transitions: Transition {
+ NumberAnimation { matchTargets: theRect; matchProperties: "x" }
+ }
+
+ MouseRegion {
+ anchors.fill: parent
+ onClicked: parent.state = "moved"
+ }
+}
diff --git a/tests/auto/declarative/animations/data/propertiesTransition2.qml b/tests/auto/declarative/animations/data/propertiesTransition2.qml
new file mode 100644
index 0000000..ae59157
--- /dev/null
+++ b/tests/auto/declarative/animations/data/propertiesTransition2.qml
@@ -0,0 +1,29 @@
+import Qt 4.6
+
+Rectangle {
+ width: 400
+ height: 400
+ Rectangle {
+ id: theRect
+ objectName: "TheRect"
+ color: "red"
+ width: 50; height: 50
+ x: 100; y: 100
+ }
+
+ states: State {
+ name: "moved"
+ PropertyChanges {
+ target: theRect
+ x: 200
+ }
+ }
+ transitions: Transition {
+ NumberAnimation { target: theRect; property: "y"; to: 200 }
+ }
+
+ MouseRegion {
+ anchors.fill: parent
+ onClicked: parent.state = "moved"
+ }
+}
diff --git a/tests/auto/declarative/animations/data/propertiesTransition3.qml b/tests/auto/declarative/animations/data/propertiesTransition3.qml
new file mode 100644
index 0000000..eedba7b
--- /dev/null
+++ b/tests/auto/declarative/animations/data/propertiesTransition3.qml
@@ -0,0 +1,29 @@
+import Qt 4.6
+
+Rectangle {
+ width: 400
+ height: 400
+ Rectangle {
+ id: theRect
+ objectName: "TheRect"
+ color: "red"
+ width: 50; height: 50
+ x: 100; y: 100
+ }
+
+ states: State {
+ name: "moved"
+ PropertyChanges {
+ target: theRect
+ x: 200
+ }
+ }
+ transitions: Transition {
+ NumberAnimation { matchTargets: theRect; matchProperties: "y" }
+ }
+
+ MouseRegion {
+ anchors.fill: parent
+ onClicked: parent.state = "moved"
+ }
+}
diff --git a/tests/auto/declarative/animations/data/propertiesTransition4.qml b/tests/auto/declarative/animations/data/propertiesTransition4.qml
new file mode 100644
index 0000000..301f796
--- /dev/null
+++ b/tests/auto/declarative/animations/data/propertiesTransition4.qml
@@ -0,0 +1,29 @@
+import Qt 4.6
+
+Rectangle {
+ width: 400
+ height: 400
+ Rectangle {
+ id: theRect
+ objectName: "TheRect"
+ color: "red"
+ width: 50; height: 50
+ x: 100; y: 100
+ }
+
+ states: State {
+ name: "moved"
+ PropertyChanges {
+ target: theRect
+ x: 200
+ }
+ }
+ transitions: Transition {
+ NumberAnimation { target: theRect; matchProperties: "x" }
+ }
+
+ MouseRegion {
+ anchors.fill: parent
+ onClicked: parent.state = "moved"
+ }
+}
diff --git a/tests/auto/declarative/animations/data/propertiesTransition5.qml b/tests/auto/declarative/animations/data/propertiesTransition5.qml
new file mode 100644
index 0000000..565c519
--- /dev/null
+++ b/tests/auto/declarative/animations/data/propertiesTransition5.qml
@@ -0,0 +1,29 @@
+import Qt 4.6
+
+Rectangle {
+ width: 400
+ height: 400
+ Rectangle {
+ id: theRect
+ objectName: "TheRect"
+ color: "red"
+ width: 50; height: 50
+ x: 100; y: 100
+ }
+
+ states: State {
+ name: "moved"
+ PropertyChanges {
+ target: theRect
+ x: 200
+ }
+ }
+ transitions: Transition {
+ NumberAnimation { matchTargets: theRect; property: "x" }
+ }
+
+ MouseRegion {
+ anchors.fill: parent
+ onClicked: parent.state = "moved"
+ }
+}
diff --git a/tests/auto/declarative/animations/data/propertiesTransition6.qml b/tests/auto/declarative/animations/data/propertiesTransition6.qml
new file mode 100644
index 0000000..b541dab
--- /dev/null
+++ b/tests/auto/declarative/animations/data/propertiesTransition6.qml
@@ -0,0 +1,29 @@
+import Qt 4.6
+
+Rectangle {
+ width: 400
+ height: 400
+ Rectangle {
+ id: theRect
+ objectName: "TheRect"
+ color: "red"
+ width: 50; height: 50
+ x: 100; y: 100
+ }
+
+ states: State {
+ name: "moved"
+ PropertyChanges {
+ target: theRect
+ x: 200
+ }
+ }
+ transitions: Transition {
+ NumberAnimation { matchTargets: theItem; matchProperties: "x" }
+ }
+
+ MouseRegion {
+ anchors.fill: parent
+ onClicked: parent.state = "moved"
+ }
+}
diff --git a/tests/auto/declarative/animations/tst_animations.cpp b/tests/auto/declarative/animations/tst_animations.cpp
index ca383bb..a4402cb 100644
--- a/tests/auto/declarative/animations/tst_animations.cpp
+++ b/tests/auto/declarative/animations/tst_animations.cpp
@@ -59,6 +59,8 @@ private slots:
void badTypes();
void badProperties();
void mixedTypes();
+ void properties();
+ void propertiesTransition();
};
#define QTIMED_COMPARE(lhs, rhs) do { \
@@ -198,11 +200,12 @@ void tst_animations::badProperties()
{
QmlEngine engine;
QmlComponent c(&engine, QUrl("file://" SRCDIR "/data/badproperty1.qml"));
+ QTest::ignoreMessage(QtWarningMsg, "QML QmlColorAnimation (file://" SRCDIR "/data/badproperty1.qml:22:9) Cannot animate non-existant property \"pen.colr\"");
QmlGraphicsRectangle *rect = qobject_cast<QmlGraphicsRectangle*>(c.create());
QVERIFY(rect);
- QTest::ignoreMessage(QtWarningMsg, "QML QmlColorAnimation (file://" SRCDIR "/data/badproperty1.qml:22:9) Cannot animate non-existant property \"pen.colr\"");
- rect->setState("state1");
+ //### should we warn here are well?
+ //rect->setState("state1");
}
}
@@ -244,6 +247,143 @@ void tst_animations::mixedTypes()
}
}
+void tst_animations::properties()
+{
+ const int waitDuration = 300;
+ {
+ QmlEngine engine;
+ QmlComponent c(&engine, QUrl("file://" SRCDIR "/data/properties.qml"));
+ QmlGraphicsRectangle *rect = qobject_cast<QmlGraphicsRectangle*>(c.create());
+ QVERIFY(rect);
+
+ QmlGraphicsRectangle *myRect = rect->findChild<QmlGraphicsRectangle*>("TheRect");
+ QVERIFY(myRect);
+ QTest::qWait(waitDuration);
+ QTIMED_COMPARE(myRect->x(),qreal(200));
+ }
+
+ {
+ QmlEngine engine;
+ QmlComponent c(&engine, QUrl("file://" SRCDIR "/data/properties2.qml"));
+ QmlGraphicsRectangle *rect = qobject_cast<QmlGraphicsRectangle*>(c.create());
+ QVERIFY(rect);
+
+ QmlGraphicsRectangle *myRect = rect->findChild<QmlGraphicsRectangle*>("TheRect");
+ QVERIFY(myRect);
+ QTest::qWait(waitDuration);
+ QTIMED_COMPARE(myRect->x(),qreal(200));
+ }
+
+ {
+ QmlEngine engine;
+ QmlComponent c(&engine, QUrl("file://" SRCDIR "/data/properties3.qml"));
+ QmlGraphicsRectangle *rect = qobject_cast<QmlGraphicsRectangle*>(c.create());
+ QVERIFY(rect);
+
+ QmlGraphicsRectangle *myRect = rect->findChild<QmlGraphicsRectangle*>("TheRect");
+ QVERIFY(myRect);
+ QTest::qWait(waitDuration);
+ QTIMED_COMPARE(myRect->x(),qreal(300));
+ }
+
+ {
+ QmlEngine engine;
+ QmlComponent c(&engine, QUrl("file://" SRCDIR "/data/properties4.qml"));
+ QmlGraphicsRectangle *rect = qobject_cast<QmlGraphicsRectangle*>(c.create());
+ QVERIFY(rect);
+
+ QmlGraphicsRectangle *myRect = rect->findChild<QmlGraphicsRectangle*>("TheRect");
+ QVERIFY(myRect);
+ QTest::qWait(waitDuration);
+ QTIMED_COMPARE(myRect->y(),qreal(200));
+ QTIMED_COMPARE(myRect->x(),qreal(100));
+ }
+
+ {
+ QmlEngine engine;
+ QmlComponent c(&engine, QUrl("file://" SRCDIR "/data/properties5.qml"));
+ QmlGraphicsRectangle *rect = qobject_cast<QmlGraphicsRectangle*>(c.create());
+ QVERIFY(rect);
+
+ QmlGraphicsRectangle *myRect = rect->findChild<QmlGraphicsRectangle*>("TheRect");
+ QVERIFY(myRect);
+ QTest::qWait(waitDuration);
+ QTIMED_COMPARE(myRect->x(),qreal(100));
+ QTIMED_COMPARE(myRect->y(),qreal(100));
+ }
+}
+
+void tst_animations::propertiesTransition()
+{
+ const int waitDuration = 300;
+ {
+ QmlEngine engine;
+ QmlComponent c(&engine, QUrl("file://" SRCDIR "/data/propertiesTransition.qml"));
+ QmlGraphicsRectangle *rect = qobject_cast<QmlGraphicsRectangle*>(c.create());
+ QVERIFY(rect);
+
+ rect->setState("moved");
+ QmlGraphicsRectangle *myRect = rect->findChild<QmlGraphicsRectangle*>("TheRect");
+ QVERIFY(myRect);
+ QTest::qWait(waitDuration);
+ QTIMED_COMPARE(myRect->x(),qreal(200));
+ }
+
+ {
+ QmlEngine engine;
+ QmlComponent c(&engine, QUrl("file://" SRCDIR "/data/propertiesTransition2.qml"));
+ QmlGraphicsRectangle *rect = qobject_cast<QmlGraphicsRectangle*>(c.create());
+ QVERIFY(rect);
+
+ QmlGraphicsRectangle *myRect = rect->findChild<QmlGraphicsRectangle*>("TheRect");
+ QVERIFY(myRect);
+ rect->setState("moved");
+ QCOMPARE(myRect->x(),qreal(200));
+ QCOMPARE(myRect->y(),qreal(100));
+ QTest::qWait(waitDuration);
+ QTIMED_COMPARE(myRect->y(),qreal(200));
+ }
+
+ {
+ QmlEngine engine;
+ QmlComponent c(&engine, QUrl("file://" SRCDIR "/data/propertiesTransition3.qml"));
+ QmlGraphicsRectangle *rect = qobject_cast<QmlGraphicsRectangle*>(c.create());
+ QVERIFY(rect);
+
+ QmlGraphicsRectangle *myRect = rect->findChild<QmlGraphicsRectangle*>("TheRect");
+ QVERIFY(myRect);
+ QTest::ignoreMessage(QtWarningMsg, "QML QmlNumberAnimation (file:///home/brasser/depot/kinetic-declarativeui/qt/tests/auto/declarative/animations/data/propertiesTransition4.qml:22:9) targets/properties/exclude and target/property are mutually exclusive.");
+ rect->setState("moved");
+ QCOMPARE(myRect->x(),qreal(200));
+ }
+
+ {
+ QmlEngine engine;
+ QmlComponent c(&engine, QUrl("file://" SRCDIR "/data/propertiesTransition4.qml"));
+ QmlGraphicsRectangle *rect = qobject_cast<QmlGraphicsRectangle*>(c.create());
+ QVERIFY(rect);
+
+ QmlGraphicsRectangle *myRect = rect->findChild<QmlGraphicsRectangle*>("TheRect");
+ QVERIFY(myRect);
+ QTest::ignoreMessage(QtWarningMsg, "QML QmlNumberAnimation (file:///home/brasser/depot/kinetic-declarativeui/qt/tests/auto/declarative/animations/data/propertiesTransition5.qml:22:9) targets/properties/exclude and target/property are mutually exclusive.");
+ rect->setState("moved");
+ QCOMPARE(myRect->x(),qreal(200));
+ }
+
+ {
+ QmlEngine engine;
+ QmlComponent c(&engine, QUrl("file://" SRCDIR "/data/propertiesTransition5.qml"));
+ QmlGraphicsRectangle *rect = qobject_cast<QmlGraphicsRectangle*>(c.create());
+ QVERIFY(rect);
+
+ //### should output warning at some point -- theItem doesn't exist
+ QmlGraphicsRectangle *myRect = rect->findChild<QmlGraphicsRectangle*>("TheRect");
+ QVERIFY(myRect);
+ rect->setState("moved");
+ QCOMPARE(myRect->x(),qreal(200));
+ }
+}
+
QTEST_MAIN(tst_animations)
#include "tst_animations.moc"
diff --git a/tests/auto/declarative/behaviors/data/nonSelecting.qml b/tests/auto/declarative/behaviors/data/nonSelecting.qml
index ae9a9f5..ba36d93 100644
--- a/tests/auto/declarative/behaviors/data/nonSelecting.qml
+++ b/tests/auto/declarative/behaviors/data/nonSelecting.qml
@@ -8,7 +8,7 @@ Rectangle {
width: 100; height: 100; color: "green"
x: Behavior {
objectName: "MyBehavior";
- NumberAnimation { target: rect; property: "y"; duration: 200; }
+ NumberAnimation { target: rect; property: "x"; duration: 200; }
}
}
MouseRegion {
diff --git a/tests/auto/declarative/behaviors/data/nonSelecting2.qml b/tests/auto/declarative/behaviors/data/nonSelecting2.qml
new file mode 100644
index 0000000..e9849eb
--- /dev/null
+++ b/tests/auto/declarative/behaviors/data/nonSelecting2.qml
@@ -0,0 +1,26 @@
+import Qt 4.6
+Rectangle {
+ width: 400
+ height: 400
+ Rectangle {
+ id: rect
+ objectName: "MyRect"
+ width: 100; height: 100; color: "green"
+ x: Behavior {
+ objectName: "MyBehavior";
+ NumberAnimation { matchTargets: rect; matchProperties: "y"; duration: 200; }
+ }
+ }
+ MouseRegion {
+ id: clicker
+ anchors.fill: parent
+ }
+ states: State {
+ name: "moved"
+ when: clicker.pressed
+ PropertyChanges {
+ target: rect
+ x: 200
+ }
+ }
+}
diff --git a/tests/auto/declarative/behaviors/tst_behaviors.cpp b/tests/auto/declarative/behaviors/tst_behaviors.cpp
index da910d9..6343968 100644
--- a/tests/auto/declarative/behaviors/tst_behaviors.cpp
+++ b/tests/auto/declarative/behaviors/tst_behaviors.cpp
@@ -208,14 +208,27 @@ void tst_behaviors::emptyBehavior()
void tst_behaviors::nonSelectingBehavior()
{
- QmlEngine engine;
- QmlComponent c(&engine, QUrl("file://" SRCDIR "/data/nonSelecting.qml"));
- QmlGraphicsRectangle *rect = qobject_cast<QmlGraphicsRectangle*>(c.create());
- QVERIFY(rect);
+ {
+ QmlEngine engine;
+ QmlComponent c(&engine, QUrl("file://" SRCDIR "/data/nonSelecting.qml"));
+ QmlGraphicsRectangle *rect = qobject_cast<QmlGraphicsRectangle*>(c.create());
+ QVERIFY(rect);
- rect->setState("moved");
- qreal x = qobject_cast<QmlGraphicsRectangle*>(rect->findChild<QmlGraphicsRectangle*>("MyRect"))->x();
- QCOMPARE(x, qreal(200)); //should change immediately
+ rect->setState("moved");
+ qreal x = qobject_cast<QmlGraphicsRectangle*>(rect->findChild<QmlGraphicsRectangle*>("MyRect"))->x();
+ QCOMPARE(x, qreal(200)); //should change immediately
+ }
+
+ {
+ QmlEngine engine;
+ QmlComponent c(&engine, QUrl("file://" SRCDIR "/data/nonSelecting2.qml"));
+ QmlGraphicsRectangle *rect = qobject_cast<QmlGraphicsRectangle*>(c.create());
+ QVERIFY(rect);
+
+ rect->setState("moved");
+ qreal x = qobject_cast<QmlGraphicsRectangle*>(rect->findChild<QmlGraphicsRectangle*>("MyRect"))->x();
+ QCOMPARE(x, qreal(200)); //should change immediately
+ }
}
void tst_behaviors::reassignedAnimation()
diff --git a/tests/auto/declarative/declarative.pro b/tests/auto/declarative/declarative.pro
index a061d56..b6d2241 100644
--- a/tests/auto/declarative/declarative.pro
+++ b/tests/auto/declarative/declarative.pro
@@ -7,24 +7,27 @@ SUBDIRS += \
datetimeformatter \ # Cover
examples \
layouts \ # Cover
- listview \ # Cover
+ qmlgraphicslistview \ # Cover
qmlgraphicsgridview \ # Cover
numberformatter \ # Cover
+ parserstress \ # Cover
pathview \ # Cover
qfxloader \ # Cover
- qfxtextedit \ # Cover
- qfxtextinput \ # Cover
- qfxwebview \ # Cover
qmetaobjectbuilder \ # Cover
qmlbinding \ # Cover
+ qmlconnection \ # Cover
qmlcontext \ # Cover
qmldom \ # Cover
qmlecmascript \ # Cover
qmlerror \ # Cover
qmlfontloader \ # Cover
+ qmlgraphicsitem \ # Cover
qmlgraphicsborderimage \ # Cover
qmlgraphicsparticles \ # Cover
qmlgraphicstext \ # Cover
+ qmlgraphicstextedit \ # Cover
+ qmlgraphicstextinput \ # Cover
+ qmlgraphicswebview \ # Cover
qmlinfo \ # Cover
qmllanguage \ # Cover
qmllist \ # Cover
diff --git a/tests/auto/declarative/layouts/data/grid-animated.qml b/tests/auto/declarative/layouts/data/grid-animated.qml
index 9edccaf..6b128ce 100644
--- a/tests/auto/declarative/layouts/data/grid-animated.qml
+++ b/tests/auto/declarative/layouts/data/grid-animated.qml
@@ -7,17 +7,17 @@ Item {
columns: 3
add: Transition {
NumberAnimation {
- properties: "x,y"; from: -100
+ matchProperties: "x,y"; from: -100
}
}
remove: Transition {
NumberAnimation {
- properties: "x,y"; to: -100
+ matchProperties: "x,y"; to: -100
}
}
move: Transition {
NumberAnimation {
- properties: "x,y";
+ matchProperties: "x,y";
}
}
Rectangle {
diff --git a/tests/auto/declarative/layouts/data/horizontal-animated.qml b/tests/auto/declarative/layouts/data/horizontal-animated.qml
index f757d18..c29d6df 100644
--- a/tests/auto/declarative/layouts/data/horizontal-animated.qml
+++ b/tests/auto/declarative/layouts/data/horizontal-animated.qml
@@ -6,17 +6,17 @@ Item {
Row {
add: Transition {
NumberAnimation {
- properties: "x"; from: -100
+ matchProperties: "x"; from: -100
}
}
remove: Transition {
NumberAnimation {
- properties: "x"; to: -100
+ matchProperties: "x"; to: -100
}
}
move: Transition {
NumberAnimation {
- properties: "x";
+ matchProperties: "x";
}
}
Rectangle {
diff --git a/tests/auto/declarative/layouts/data/vertical-animated.qml b/tests/auto/declarative/layouts/data/vertical-animated.qml
index f52a78a..fcbc5f7 100644
--- a/tests/auto/declarative/layouts/data/vertical-animated.qml
+++ b/tests/auto/declarative/layouts/data/vertical-animated.qml
@@ -6,17 +6,17 @@ Item {
Column {
add: Transition {
NumberAnimation {
- properties: "y"; from: -100
+ matchProperties: "y"; from: -100
}
}
remove: Transition {
NumberAnimation {
- properties: "y"; to: -100
+ matchProperties: "y"; to: -100
}
}
move: Transition {
NumberAnimation {
- properties: "y";
+ matchProperties: "y";
}
}
Rectangle {
diff --git a/tests/auto/declarative/parserstress/parserstress.pro b/tests/auto/declarative/parserstress/parserstress.pro
new file mode 100644
index 0000000..48f147a
--- /dev/null
+++ b/tests/auto/declarative/parserstress/parserstress.pro
@@ -0,0 +1,7 @@
+load(qttest_p4)
+contains(QT_CONFIG,declarative): QT += declarative
+macx:CONFIG -= app_bundle
+
+SOURCES += tst_parserstress.cpp
+
+DEFINES += SRCDIR=\\\"$$PWD\\\"
diff --git a/tests/auto/declarative/parserstress/tst_parserstress.cpp b/tests/auto/declarative/parserstress/tst_parserstress.cpp
new file mode 100644
index 0000000..dd8f347
--- /dev/null
+++ b/tests/auto/declarative/parserstress/tst_parserstress.cpp
@@ -0,0 +1,141 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <qtest.h>
+#include <QmlEngine>
+#include <QmlComponent>
+#include <QDebug>
+#include <QDir>
+#include <QFile>
+
+class tst_parserstress : public QObject
+{
+ Q_OBJECT
+public:
+ tst_parserstress() {}
+
+private slots:
+ void ecmascript_data();
+ void ecmascript();
+
+private:
+ static QStringList findJSFiles(const QDir &);
+ QmlEngine engine;
+};
+
+QStringList tst_parserstress::findJSFiles(const QDir &d)
+{
+ QStringList rv;
+
+ QStringList files = d.entryList(QStringList() << QLatin1String("*.js"),
+ QDir::Files);
+ foreach (const QString &file, files) {
+ if (file == "browser.js")
+ continue;
+ rv << d.absoluteFilePath(file);
+ }
+
+ QStringList dirs = d.entryList(QDir::Dirs | QDir::NoDotAndDotDot |
+ QDir::NoSymLinks);
+ foreach (const QString &dir, dirs) {
+ QDir sub = d;
+ sub.cd(dir);
+ rv << findJSFiles(sub);
+ }
+
+ return rv;
+}
+
+void tst_parserstress::ecmascript_data()
+{
+ QDir dir(SRCDIR);
+ dir.cdUp();
+ dir.cdUp();
+ dir.cd("qscriptjstestsuite");
+ dir.cd("tests");
+
+ QStringList files = findJSFiles(dir);
+
+ QTest::addColumn<QString>("file");
+ foreach (const QString &file, files) {
+ QTest::newRow(qPrintable(file)) << file;
+ }
+}
+
+void tst_parserstress::ecmascript()
+{
+ QFETCH(QString, file);
+
+ QFile f(file);
+ QVERIFY(f.open(QIODevice::ReadOnly));
+
+ QByteArray data = f.readAll();
+
+ QVERIFY(!data.isEmpty());
+
+ QString dataStr = QString::fromUtf8(data);
+
+ QString qml = "import Qt 4.6\n";
+ qml+= "\n";
+ qml+= "Object {\n";
+ qml+= " property int test\n";
+ qml+= " test: {\n";
+ qml+= dataStr + "\n";
+ qml+= " return 1;\n";
+ qml+= " }\n";
+ qml+= " Script {\n";
+ qml+= " function stress() {\n";
+ qml+= dataStr;
+ qml+= " }\n";
+ qml+= " }\n";
+ qml+= "}\n";
+
+ QByteArray qmlData = qml.toUtf8();
+
+ QmlComponent component(&engine, qmlData,
+ QUrl::fromLocalFile(SRCDIR + QString("/dummy.qml")));
+ QVERIFY(!component.isError());
+}
+
+
+QTEST_MAIN(tst_parserstress)
+
+#include "tst_parserstress.moc"
diff --git a/tests/auto/declarative/qmlconnection/data/test-connection.qml b/tests/auto/declarative/qmlconnection/data/test-connection.qml
new file mode 100644
index 0000000..9534621
--- /dev/null
+++ b/tests/auto/declarative/qmlconnection/data/test-connection.qml
@@ -0,0 +1,10 @@
+import Qt 4.6
+
+Item {
+ id: screen; width: 50
+
+ property bool tested: false
+ signal testMe
+
+ Connection { sender: screen; signal: "widthChanged()"; script: screen.tested = true }
+}
diff --git a/tests/auto/declarative/qfxtextedit/qfxtextedit.pro b/tests/auto/declarative/qmlconnection/qmlconnection.pro
index b5e0464..3d46fa6 100644
--- a/tests/auto/declarative/qfxtextedit/qfxtextedit.pro
+++ b/tests/auto/declarative/qmlconnection/qmlconnection.pro
@@ -2,7 +2,7 @@ load(qttest_p4)
contains(QT_CONFIG,declarative): QT += declarative gui
macx:CONFIG -= app_bundle
-SOURCES += tst_qfxtextedit.cpp
+SOURCES += tst_qmlconnection.cpp
# Define SRCDIR equal to test's source directory
DEFINES += SRCDIR=\\\"$$PWD\\\"
diff --git a/tests/auto/declarative/qmlconnection/tst_qmlconnection.cpp b/tests/auto/declarative/qmlconnection/tst_qmlconnection.cpp
new file mode 100644
index 0000000..c6d2cc4
--- /dev/null
+++ b/tests/auto/declarative/qmlconnection/tst_qmlconnection.cpp
@@ -0,0 +1,85 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <qtest.h>
+#include <QtDeclarative/qmlengine.h>
+#include <QtDeclarative/qmlcomponent.h>
+#include <private/qmlconnection_p.h>
+#include <private/qmlgraphicsitem_p.h>
+#include "../../../shared/util.h"
+
+class tst_qmlconnection : public QObject
+
+{
+ Q_OBJECT
+public:
+ tst_qmlconnection();
+
+private slots:
+ void connection();
+
+private:
+ QmlEngine engine;
+};
+
+tst_qmlconnection::tst_qmlconnection()
+{
+}
+
+void tst_qmlconnection::connection()
+{
+ QmlEngine engine;
+ QmlComponent c(&engine, QUrl("file://" SRCDIR "/data/test-connection.qml"));
+ QmlGraphicsItem *item = qobject_cast<QmlGraphicsItem*>(c.create());
+
+ QVERIFY(item != 0);
+
+ QCOMPARE(item->property("tested").toBool(), false);
+ QCOMPARE(item->width(), 50.);
+ emit item->setWidth(100.);
+ QCOMPARE(item->width(), 100.);
+ QCOMPARE(item->property("tested").toBool(), true);
+
+ delete item;
+}
+
+QTEST_MAIN(tst_qmlconnection)
+
+#include "tst_qmlconnection.moc"
diff --git a/tests/auto/declarative/qmlgraphicsitem/data/keynavigation.qml b/tests/auto/declarative/qmlgraphicsitem/data/keynavigation.qml
new file mode 100644
index 0000000..9281a17
--- /dev/null
+++ b/tests/auto/declarative/qmlgraphicsitem/data/keynavigation.qml
@@ -0,0 +1,39 @@
+import Qt 4.6
+
+Grid {
+ columns: 2
+ width: 100; height: 100
+ Rectangle {
+ id: item1
+ objectName: "item1"
+ focus: true
+ width: 50; height: 50
+ color: focus ? "red" : "lightgray"
+ KeyNavigation.right: item2
+ KeyNavigation.down: item3
+ }
+ Rectangle {
+ id: item2
+ objectName: "item2"
+ width: 50; height: 50
+ color: focus ? "red" : "lightgray"
+ KeyNavigation.left: item1
+ KeyNavigation.down: item4
+ }
+ Rectangle {
+ id: item3
+ objectName: "item3"
+ width: 50; height: 50
+ color: focus ? "red" : "lightgray"
+ KeyNavigation.right: item4
+ KeyNavigation.up: item1
+ }
+ Rectangle {
+ id: item4
+ objectName: "item4"
+ width: 50; height: 50
+ color: focus ? "red" : "lightgray"
+ KeyNavigation.left: item3
+ KeyNavigation.up: item2
+ }
+}
diff --git a/tests/auto/declarative/qmlgraphicsitem/data/keys.qml b/tests/auto/declarative/qmlgraphicsitem/data/keys.qml
new file mode 100644
index 0000000..7c16559
--- /dev/null
+++ b/tests/auto/declarative/qmlgraphicsitem/data/keys.qml
@@ -0,0 +1,15 @@
+import Qt 4.6
+
+Item {
+ focus: true
+ Keys.onPressed: keysTestObject.keyPress(event.key, event.text, event.modifiers)
+ Keys.onReleased: { keysTestObject.keyRelease(event.key, event.text, event.modifiers); event.accepted = true; }
+ Keys.onReturnPressed: keysTestObject.keyPress(event.key, "Return", event.modifiers)
+ Keys.forwardTo: [ item2 ]
+
+ Item {
+ id: item2
+ Keys.onPressed: keysTestObject.forwardedKey(event.key)
+ Keys.onReleased: keysTestObject.forwardedKey(event.key)
+ }
+}
diff --git a/tests/auto/declarative/qmlgraphicsitem/qmlgraphicsitem.pro b/tests/auto/declarative/qmlgraphicsitem/qmlgraphicsitem.pro
new file mode 100644
index 0000000..ddabf9a
--- /dev/null
+++ b/tests/auto/declarative/qmlgraphicsitem/qmlgraphicsitem.pro
@@ -0,0 +1,7 @@
+load(qttest_p4)
+contains(QT_CONFIG,declarative): QT += declarative gui
+macx:CONFIG -= app_bundle
+
+SOURCES += tst_qmlgraphicsitem.cpp
+
+DEFINES += SRCDIR=\\\"$$PWD\\\"
diff --git a/tests/auto/declarative/qmlgraphicsitem/tst_qmlgraphicsitem.cpp b/tests/auto/declarative/qmlgraphicsitem/tst_qmlgraphicsitem.cpp
new file mode 100644
index 0000000..b4b3eaf
--- /dev/null
+++ b/tests/auto/declarative/qmlgraphicsitem/tst_qmlgraphicsitem.cpp
@@ -0,0 +1,240 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <qtest.h>
+#include <QtDeclarative/qmlengine.h>
+#include <QtDeclarative/qmlcomponent.h>
+#include <QtDeclarative/qmlcontext.h>
+#include <QtDeclarative/qmlview.h>
+#include <qmlgraphicsitem.h>
+
+class tst_QmlGraphicsItem : public QObject
+
+{
+ Q_OBJECT
+public:
+ tst_QmlGraphicsItem();
+
+private slots:
+ void keys();
+ void keyNavigation();
+
+private:
+ template<typename T>
+ T *findItem(QmlGraphicsItem *parent, const QString &objectName);
+};
+
+class KeysTestObject : public QObject
+{
+ Q_OBJECT
+public:
+ KeysTestObject() : mKey(0), mModifiers(0), mForwardedKey(0) {}
+
+ void reset() {
+ mKey = 0;
+ mText = QString();
+ mModifiers = 0;
+ mForwardedKey = 0;
+ }
+
+public slots:
+ void keyPress(int key, QString text, int modifiers) {
+ mKey = key;
+ mText = text;
+ mModifiers = modifiers;
+ }
+ void keyRelease(int key, QString text, int modifiers) {
+ mKey = key;
+ mText = text;
+ mModifiers = modifiers;
+ }
+ void forwardedKey(int key) {
+ mForwardedKey = key;
+ }
+
+public:
+ int mKey;
+ QString mText;
+ int mModifiers;
+ int mForwardedKey;
+
+private:
+};
+
+
+tst_QmlGraphicsItem::tst_QmlGraphicsItem()
+{
+}
+
+void tst_QmlGraphicsItem::keys()
+{
+ QmlView *canvas = new QmlView(0);
+ canvas->setFixedSize(240,320);
+
+ canvas->setUrl(QUrl("file://" SRCDIR "/data/keys.qml"));
+
+ KeysTestObject *testObject = new KeysTestObject;
+ canvas->rootContext()->setContextProperty("keysTestObject", testObject);
+
+ canvas->execute();
+ canvas->show();
+ qApp->processEvents();
+
+ QEvent wa(QEvent::WindowActivate);
+ QApplication::sendEvent(canvas, &wa);
+ QFocusEvent fe(QEvent::FocusIn);
+ QApplication::sendEvent(canvas, &fe);
+
+ QKeyEvent key(QEvent::KeyPress, Qt::Key_A, Qt::NoModifier, "A", false, 1);
+ QApplication::sendEvent(canvas, &key);
+ QCOMPARE(testObject->mKey, int(Qt::Key_A));
+ QCOMPARE(testObject->mForwardedKey, int(Qt::Key_A));
+ QCOMPARE(testObject->mText, QLatin1String("A"));
+ QVERIFY(testObject->mModifiers == Qt::NoModifier);
+ QVERIFY(!key.isAccepted());
+
+ testObject->reset();
+
+ key = QKeyEvent(QEvent::KeyRelease, Qt::Key_A, Qt::ShiftModifier, "A", false, 1);
+ QApplication::sendEvent(canvas, &key);
+ QCOMPARE(testObject->mKey, int(Qt::Key_A));
+ QCOMPARE(testObject->mForwardedKey, int(Qt::Key_A));
+ QCOMPARE(testObject->mText, QLatin1String("A"));
+ QVERIFY(testObject->mModifiers == Qt::ShiftModifier);
+ QVERIFY(key.isAccepted());
+
+ testObject->reset();
+
+ key = QKeyEvent(QEvent::KeyPress, Qt::Key_Return, Qt::NoModifier, "", false, 1);
+ QApplication::sendEvent(canvas, &key);
+ QCOMPARE(testObject->mKey, int(Qt::Key_Return));
+ QCOMPARE(testObject->mForwardedKey, int(Qt::Key_Return));
+ QCOMPARE(testObject->mText, QLatin1String("Return"));
+ QVERIFY(testObject->mModifiers == Qt::NoModifier);
+ QVERIFY(key.isAccepted());
+
+ delete canvas;
+ delete testObject;
+}
+
+void tst_QmlGraphicsItem::keyNavigation()
+{
+ QmlView *canvas = new QmlView(0);
+ canvas->setFixedSize(240,320);
+
+ canvas->setUrl(QUrl("file://" SRCDIR "/data/keynavigation.qml"));
+ canvas->execute();
+ canvas->show();
+ qApp->processEvents();
+
+ QEvent wa(QEvent::WindowActivate);
+ QApplication::sendEvent(canvas, &wa);
+ QFocusEvent fe(QEvent::FocusIn);
+ QApplication::sendEvent(canvas, &fe);
+
+ QmlGraphicsItem *item = findItem<QmlGraphicsItem>(canvas->root(), "item1");
+ QVERIFY(item);
+ QVERIFY(item->hasFocus());
+
+ // right
+ QKeyEvent key(QEvent::KeyPress, Qt::Key_Right, Qt::NoModifier, "", false, 1);
+ QApplication::sendEvent(canvas, &key);
+ QVERIFY(key.isAccepted());
+
+ item = findItem<QmlGraphicsItem>(canvas->root(), "item2");
+ QVERIFY(item);
+ QVERIFY(item->hasFocus());
+
+ // down
+ key = QKeyEvent(QEvent::KeyPress, Qt::Key_Down, Qt::NoModifier, "", false, 1);
+ QApplication::sendEvent(canvas, &key);
+ QVERIFY(key.isAccepted());
+
+ item = findItem<QmlGraphicsItem>(canvas->root(), "item4");
+ QVERIFY(item);
+ QVERIFY(item->hasFocus());
+
+ // left
+ key = QKeyEvent(QEvent::KeyPress, Qt::Key_Left, Qt::NoModifier, "", false, 1);
+ QApplication::sendEvent(canvas, &key);
+ QVERIFY(key.isAccepted());
+
+ item = findItem<QmlGraphicsItem>(canvas->root(), "item3");
+ QVERIFY(item);
+ QVERIFY(item->hasFocus());
+
+ // up
+ key = QKeyEvent(QEvent::KeyPress, Qt::Key_Up, Qt::NoModifier, "", false, 1);
+ QApplication::sendEvent(canvas, &key);
+ QVERIFY(key.isAccepted());
+
+ item = findItem<QmlGraphicsItem>(canvas->root(), "item1");
+ QVERIFY(item);
+ QVERIFY(item->hasFocus());
+}
+
+template<typename T>
+T *tst_QmlGraphicsItem::findItem(QmlGraphicsItem *parent, const QString &objectName)
+{
+ if (!parent)
+ return 0;
+
+ const QMetaObject &mo = T::staticMetaObject;
+ //qDebug() << parent->QGraphicsObject::children().count() << "children";
+ for (int i = 0; i < parent->QGraphicsObject::children().count(); ++i) {
+ QmlGraphicsItem *item = qobject_cast<QmlGraphicsItem*>(parent->QGraphicsObject::children().at(i));
+ if(!item)
+ continue;
+ //qDebug() << "try" << item;
+ if (mo.cast(item) && (objectName.isEmpty() || item->objectName() == objectName))
+ return static_cast<T*>(item);
+ item = findItem<T>(item, objectName);
+ if (item)
+ return static_cast<T*>(item);
+ }
+
+ return 0;
+}
+
+
+
+QTEST_MAIN(tst_QmlGraphicsItem)
+
+#include "tst_qmlgraphicsitem.moc"
diff --git a/tests/auto/declarative/listview/data/listview-enforcerange.qml b/tests/auto/declarative/qmlgraphicslistview/data/listview-enforcerange.qml
index 46fddae..46fddae 100644
--- a/tests/auto/declarative/listview/data/listview-enforcerange.qml
+++ b/tests/auto/declarative/qmlgraphicslistview/data/listview-enforcerange.qml
diff --git a/tests/auto/declarative/qmlgraphicslistview/data/listview-initCurrent.qml b/tests/auto/declarative/qmlgraphicslistview/data/listview-initCurrent.qml
new file mode 100644
index 0000000..5b1fee6
--- /dev/null
+++ b/tests/auto/declarative/qmlgraphicslistview/data/listview-initCurrent.qml
@@ -0,0 +1,49 @@
+import Qt 4.6
+
+Rectangle {
+ width: 240
+ height: 320
+ color: "#ffffff"
+ resources: [
+ Component {
+ id: myDelegate
+ Rectangle {
+ id: wrapper
+ objectName: "wrapper"
+ height: 20
+ width: 240
+ Text {
+ text: index
+ }
+ Text {
+ x: 30
+ id: textName
+ objectName: "textName"
+ text: name
+ }
+ Text {
+ x: 120
+ id: textNumber
+ objectName: "textNumber"
+ text: number
+ }
+ Text {
+ x: 200
+ text: wrapper.y
+ }
+ color: ListView.isCurrentItem ? "lightsteelblue" : "white"
+ }
+ }
+ ]
+ ListView {
+ id: list
+ objectName: "list"
+ focus: true
+ currentIndex: 3
+ width: 240
+ height: 320
+ model: testModel
+ delegate: myDelegate
+ highlightMoveSpeed: 1000
+ }
+}
diff --git a/tests/auto/declarative/listview/data/listview-sections.qml b/tests/auto/declarative/qmlgraphicslistview/data/listview-sections.qml
index 56700be..2edc0bd 100644
--- a/tests/auto/declarative/listview/data/listview-sections.qml
+++ b/tests/auto/declarative/qmlgraphicslistview/data/listview-sections.qml
@@ -54,6 +54,6 @@ Rectangle {
height: 320
model: testModel
delegate: myDelegate
- sectionExpression: "Math.floor(index/5)"
+ sectionExpression: "Math.floor(number/5)"
}
}
diff --git a/tests/auto/declarative/listview/data/listview.qml b/tests/auto/declarative/qmlgraphicslistview/data/listview.qml
index b7b838b..93a3ae3 100644
--- a/tests/auto/declarative/listview/data/listview.qml
+++ b/tests/auto/declarative/qmlgraphicslistview/data/listview.qml
@@ -38,9 +38,11 @@ Rectangle {
ListView {
id: list
objectName: "list"
+ focus: true
width: 240
height: 320
model: testModel
delegate: myDelegate
+ highlightMoveSpeed: 1000
}
}
diff --git a/tests/auto/declarative/listview/listview.pro b/tests/auto/declarative/qmlgraphicslistview/qmlgraphicslistview.pro
index 23b0706..f00de39 100644
--- a/tests/auto/declarative/listview/listview.pro
+++ b/tests/auto/declarative/qmlgraphicslistview/qmlgraphicslistview.pro
@@ -2,7 +2,7 @@ load(qttest_p4)
contains(QT_CONFIG,declarative): QT += declarative
macx:CONFIG -= app_bundle
-SOURCES += tst_listview.cpp
+SOURCES += tst_qmlgraphicslistview.cpp
# Define SRCDIR equal to test's source directory
DEFINES += SRCDIR=\\\"$$PWD\\\"
diff --git a/tests/auto/declarative/listview/tst_listview.cpp b/tests/auto/declarative/qmlgraphicslistview/tst_qmlgraphicslistview.cpp
index 5575ace..de26635 100644
--- a/tests/auto/declarative/listview/tst_listview.cpp
+++ b/tests/auto/declarative/qmlgraphicslistview/tst_qmlgraphicslistview.cpp
@@ -69,6 +69,7 @@ private slots:
void qListModelInterface_moved();
void qAbstractItemModel_moved();
+ void currentIndex();
void enforceRange();
void spacing();
void sections();
@@ -252,6 +253,9 @@ void tst_QmlGraphicsListView::items()
QCOMPARE(listview->count(), model.count());
QCOMPARE(viewport->childItems().count(), model.count()+1); // assumes all are visible, +1 for the (default) highlight item
+ // current item should be first item
+ QCOMPARE(listview->currentItem(), findItem<QmlGraphicsItem>(viewport, "wrapper", 0));
+
for (int i = 0; i < model.count(); ++i) {
QmlGraphicsText *name = findItem<QmlGraphicsText>(viewport, "textName", i);
QVERIFY(name != 0);
@@ -261,11 +265,6 @@ void tst_QmlGraphicsListView::items()
QCOMPARE(number->text(), model.number(i));
}
- listview->incrementCurrentIndex();
- QCOMPARE(listview->currentIndex(), 1);
- listview->decrementCurrentIndex();
- QCOMPARE(listview->currentIndex(), 0);
-
// set an empty model and confirm that items are destroyed
T model2;
ctxt->setContextProperty("testModel", &model2);
@@ -334,7 +333,7 @@ void tst_QmlGraphicsListView::inserted()
model.insertItem(1, "Will", "9876");
// let transitions settle.
- QTest::qWait(1000);
+ QTest::qWait(500);
QCOMPARE(viewport->childItems().count(), model.count()+1); // assumes all are visible, +1 for the (default) highlight item
@@ -354,7 +353,7 @@ void tst_QmlGraphicsListView::inserted()
model.insertItem(0, "Foo", "1111"); // zero index, and current item
// let transitions settle.
- QTest::qWait(1000);
+ QTest::qWait(500);
QCOMPARE(viewport->childItems().count(), model.count()+1); // assumes all are visible, +1 for the (default) highlight item
@@ -375,14 +374,14 @@ void tst_QmlGraphicsListView::inserted()
for (int i = model.count(); i < 30; ++i)
model.insertItem(i, "Hello", QString::number(i));
- QTest::qWait(1000);
+ QTest::qWait(500);
listview->setViewportY(80);
- QTest::qWait(1000);
+ QTest::qWait(500);
// Insert item outside visible area
model.insertItem(1, "Hello", "1324");
- QTest::qWait(1000);
+ QTest::qWait(500);
QVERIFY(listview->viewportY() == 80);
@@ -420,7 +419,7 @@ void tst_QmlGraphicsListView::removed()
model.removeItem(1);
// let transitions settle.
- QTest::qWait(1000);
+ QTest::qWait(500);
QmlGraphicsText *name = findItem<QmlGraphicsText>(viewport, "textName", 1);
QVERIFY(name != 0);
@@ -442,7 +441,7 @@ void tst_QmlGraphicsListView::removed()
model.removeItem(0); // post: top item starts at 20
// let transitions settle.
- QTest::qWait(1000);
+ QTest::qWait(500);
name = findItem<QmlGraphicsText>(viewport, "textName", 0);
QVERIFY(name != 0);
@@ -463,7 +462,7 @@ void tst_QmlGraphicsListView::removed()
// Remove items not visible
model.removeItem(18);
// let transitions settle.
- QTest::qWait(1000);
+ QTest::qWait(500);
// Confirm items positioned correctly
itemCount = findItems<QmlGraphicsItem>(viewport, "wrapper").count();
@@ -480,7 +479,7 @@ void tst_QmlGraphicsListView::removed()
model.removeItem(1); // post: top item will be at 40
// let transitions settle.
- QTest::qWait(1000);
+ QTest::qWait(500);
// Confirm items positioned correctly
for (int i = 2; i < 18; ++i) {
@@ -492,7 +491,7 @@ void tst_QmlGraphicsListView::removed()
listview->setViewportY(40); // That's the top now
// let transitions settle.
- QTest::qWait(1000);
+ QTest::qWait(500);
// Confirm items positioned correctly
itemCount = findItems<QmlGraphicsItem>(viewport, "wrapper").count();
@@ -530,7 +529,7 @@ void tst_QmlGraphicsListView::moved()
model.moveItem(1, 4);
// let transitions settle.
- QTest::qWait(1000);
+ QTest::qWait(500);
QmlGraphicsText *name = findItem<QmlGraphicsText>(viewport, "textName", 1);
QVERIFY(name != 0);
@@ -561,7 +560,7 @@ void tst_QmlGraphicsListView::moved()
model.moveItem(1, 18);
// let transitions settle.
- QTest::qWait(1000);
+ QTest::qWait(500);
// Confirm items positioned correctly and indexes correct
for (int i = 3; i < model.count() && i < itemCount; ++i) {
@@ -581,7 +580,7 @@ void tst_QmlGraphicsListView::moved()
model.moveItem(20, 4);
// let transitions settle.
- QTest::qWait(1000);
+ QTest::qWait(500);
// Confirm items positioned correctly and indexes correct
for (int i = 3; i < model.count() && i < itemCount; ++i) {
@@ -617,6 +616,9 @@ void tst_QmlGraphicsListView::enforceRange()
QmlGraphicsListView *listview = findItem<QmlGraphicsListView>(canvas->root(), "list");
QVERIFY(listview != 0);
+ QCOMPARE(listview->preferredHighlightBegin(), 100.0);
+ QCOMPARE(listview->preferredHighlightEnd(), 100.0);
+
QmlGraphicsItem *viewport = listview->viewport();
QVERIFY(viewport != 0);
@@ -634,7 +636,7 @@ void tst_QmlGraphicsListView::enforceRange()
// Check currentIndex is updated when viewport moves
listview->setViewportY(20);
- QTest::qWait(1000);
+ QTest::qWait(500);
QCOMPARE(listview->currentIndex(), 6);
@@ -702,7 +704,7 @@ void tst_QmlGraphicsListView::sections()
TestModel model;
for (int i = 0; i < 30; i++)
- model.addItem("Item" + QString::number(i), "");
+ model.addItem("Item" + QString::number(i), QString::number(i));
QmlContext *ctxt = canvas->rootContext();
ctxt->setContextProperty("testModel", &model);
@@ -724,6 +726,36 @@ void tst_QmlGraphicsListView::sections()
QCOMPARE(item->y(), qreal(i*20 + ((i+4)/5) * 20));
}
+ // Remove section boundary
+ model.removeItem(5);
+
+ // New section header created
+ QmlGraphicsItem *item = findItem<QmlGraphicsItem>(viewport, "wrapper", 5);
+ QVERIFY(item);
+ QCOMPARE(item->height(), 40.0);
+
+ model.insertItem(3, "New Item", "3");
+
+ // Section header moved
+ item = findItem<QmlGraphicsItem>(viewport, "wrapper", 5);
+ QVERIFY(item);
+ QCOMPARE(item->height(), 20.0);
+
+ item = findItem<QmlGraphicsItem>(viewport, "wrapper", 6);
+ QVERIFY(item);
+ QCOMPARE(item->height(), 40.0);
+
+ // insert item which will become a section header
+ model.insertItem(6, "Replace header", "5");
+
+ item = findItem<QmlGraphicsItem>(viewport, "wrapper", 6);
+ QVERIFY(item);
+ QCOMPARE(item->height(), 40.0);
+
+ item = findItem<QmlGraphicsItem>(viewport, "wrapper", 7);
+ QVERIFY(item);
+ QCOMPARE(item->height(), 20.0);
+
QVERIFY(listview->currentSection() == "0");
listview->setViewportY(140);
@@ -732,6 +764,86 @@ void tst_QmlGraphicsListView::sections()
delete canvas;
}
+void tst_QmlGraphicsListView::currentIndex()
+{
+ TestModel model;
+ for (int i = 0; i < 30; i++)
+ model.addItem("Item" + QString::number(i), QString::number(i));
+
+ QmlView *canvas = new QmlView(0);
+ canvas->setFixedSize(240,320);
+
+ QmlContext *ctxt = canvas->rootContext();
+ ctxt->setContextProperty("testModel", &model);
+
+ QString filename(SRCDIR "/data/listview-initCurrent.qml");
+ QFile file(filename);
+ file.open(QFile::ReadOnly);
+ QString qml = file.readAll();
+ canvas->setQml(qml, filename);
+
+ canvas->execute();
+ qApp->processEvents();
+
+ QmlGraphicsListView *listview = findItem<QmlGraphicsListView>(canvas->root(), "list");
+ QVERIFY(listview != 0);
+
+ QmlGraphicsItem *viewport = listview->viewport();
+ QVERIFY(viewport != 0);
+
+ // current item should be third item
+ QCOMPARE(listview->currentIndex(), 3);
+ QCOMPARE(listview->currentItem(), findItem<QmlGraphicsItem>(viewport, "wrapper", 3));
+
+ // no wrap
+ listview->setCurrentIndex(0);
+ QCOMPARE(listview->currentIndex(), 0);
+
+ listview->incrementCurrentIndex();
+ QCOMPARE(listview->currentIndex(), 1);
+ listview->decrementCurrentIndex();
+ QCOMPARE(listview->currentIndex(), 0);
+
+ listview->decrementCurrentIndex();
+ QCOMPARE(listview->currentIndex(), 0);
+
+ // with wrap
+ listview->setWrapEnabled(true);
+
+ listview->decrementCurrentIndex();
+ QCOMPARE(listview->currentIndex(), model.count()-1);
+
+ QTest::qWait(1000);
+ QCOMPARE(listview->viewportY(), 279.0);
+
+ listview->incrementCurrentIndex();
+ QCOMPARE(listview->currentIndex(), 0);
+
+ QTest::qWait(1000);
+ QCOMPARE(listview->viewportY(), 0.0);
+
+ // Test keys
+ canvas->show();
+ qApp->processEvents();
+
+ QEvent wa(QEvent::WindowActivate);
+ QApplication::sendEvent(canvas, &wa);
+ QFocusEvent fe(QEvent::FocusIn);
+ QApplication::sendEvent(canvas, &fe);
+
+ QKeyEvent key(QEvent::KeyPress, Qt::Key_Down, Qt::NoModifier, "", false, 1);
+ QApplication::sendEvent(canvas, &key);
+ QVERIFY(key.isAccepted());
+ QCOMPARE(listview->currentIndex(), 1);
+
+ key = QKeyEvent(QEvent::KeyPress, Qt::Key_Up, Qt::NoModifier, "", false, 1);
+ QApplication::sendEvent(canvas, &key);
+ QVERIFY(key.isAccepted());
+ QCOMPARE(listview->currentIndex(), 0);
+
+ delete canvas;
+}
+
void tst_QmlGraphicsListView::qListModelInterface_items()
{
items<TestModel>();
@@ -850,4 +962,4 @@ QList<T*> tst_QmlGraphicsListView::findItems(QmlGraphicsItem *parent, const QStr
QTEST_MAIN(tst_QmlGraphicsListView)
-#include "tst_listview.moc"
+#include "tst_qmlgraphicslistview.moc"
diff --git a/tests/auto/declarative/qmlgraphicsparticles/tst_qmlgraphicsparticles.cpp b/tests/auto/declarative/qmlgraphicsparticles/tst_qmlgraphicsparticles.cpp
index ed68eaf..c8d181b 100644
--- a/tests/auto/declarative/qmlgraphicsparticles/tst_qmlgraphicsparticles.cpp
+++ b/tests/auto/declarative/qmlgraphicsparticles/tst_qmlgraphicsparticles.cpp
@@ -96,6 +96,9 @@ void tst_QmlGraphicsParticles::properties()
particles->setEmissionRate(12);
QCOMPARE(particles->emissionRate(), 12);
+
+ particles->setEmitting(false);
+ QCOMPARE(particles->emitting(), false);
}
void tst_QmlGraphicsParticles::runs()
diff --git a/tests/auto/declarative/qmlgraphicstext/tst_qmlgraphicstext.cpp b/tests/auto/declarative/qmlgraphicstext/tst_qmlgraphicstext.cpp
index 2a3cdde..1e10873 100644
--- a/tests/auto/declarative/qmlgraphicstext/tst_qmlgraphicstext.cpp
+++ b/tests/auto/declarative/qmlgraphicstext/tst_qmlgraphicstext.cpp
@@ -45,6 +45,7 @@
#include <private/qmlgraphicstext_p.h>
#include <private/qmlvaluetype_p.h>
#include <QFontMetrics>
+#include <QGraphicsSceneMouseEvent>
#include <math.h>
class tst_qmlgraphicstext : public QObject
@@ -78,6 +79,8 @@ private slots:
void letterSpacing();
void wordSpacing();
+ void clickLink();
+
private:
QStringList standard;
QStringList richText;
@@ -258,6 +261,10 @@ void tst_qmlgraphicstext::wrap()
QVERIFY(textObject != 0);
QCOMPARE(textObject->width(), 30.);
QVERIFY(textObject->height() > textHeight);
+
+ int oldHeight = textObject->height();
+ textObject->setWidth(100);
+ QVERIFY(textObject->height() < oldHeight);
}
for (int i = 0; i < richText.size(); i++)
@@ -730,6 +737,54 @@ void tst_qmlgraphicstext::wordSpacing()
}
}
+class EventSender : public QGraphicsItem
+{
+public:
+ void sendEvent(QEvent *event) { sceneEvent(event); }
+};
+
+class LinkTest : public QObject
+{
+ Q_OBJECT
+public:
+ LinkTest() {}
+
+ QString link;
+
+public slots:
+ void linkClicked(QString l) { link = l; }
+};
+
+void tst_qmlgraphicstext::clickLink()
+{
+ {
+ QString componentStr = "import Qt 4.6\nText { text: \"<a href=\\\"http://qt.nokia.com\\\">Hello world!</a>\" }";
+ QmlComponent textComponent(&engine, componentStr.toLatin1(), QUrl("file://"));
+ QmlGraphicsText *textObject = qobject_cast<QmlGraphicsText*>(textComponent.create());
+
+ QVERIFY(textObject != 0);
+
+ LinkTest test;
+ QObject::connect(textObject, SIGNAL(linkActivated(QString)), &test, SLOT(linkClicked(QString)));
+
+ {
+ QGraphicsSceneMouseEvent me(QEvent::GraphicsSceneMousePress);
+ me.setPos(QPointF(textObject->x()/2, textObject->y()/2));
+ me.setButton(Qt::LeftButton);
+ static_cast<EventSender*>(static_cast<QGraphicsItem*>(textObject))->sendEvent(&me);
+ }
+
+ {
+ QGraphicsSceneMouseEvent me(QEvent::GraphicsSceneMouseRelease);
+ me.setPos(QPointF(textObject->x()/2, textObject->y()/2));
+ me.setButton(Qt::LeftButton);
+ static_cast<EventSender*>(static_cast<QGraphicsItem*>(textObject))->sendEvent(&me);
+ }
+
+ QCOMPARE(test.link, QLatin1String("http://qt.nokia.com"));
+ }
+}
+
QTEST_MAIN(tst_qmlgraphicstext)
#include "tst_qmlgraphicstext.moc"
diff --git a/tests/auto/declarative/qfxtextedit/data/cursorTest.qml b/tests/auto/declarative/qmlgraphicstextedit/data/cursorTest.qml
index e5df8f1..e5df8f1 100644
--- a/tests/auto/declarative/qfxtextedit/data/cursorTest.qml
+++ b/tests/auto/declarative/qmlgraphicstextedit/data/cursorTest.qml
diff --git a/tests/auto/declarative/qfxtextedit/data/navigation.qml b/tests/auto/declarative/qmlgraphicstextedit/data/navigation.qml
index 5b8613f..5b8613f 100644
--- a/tests/auto/declarative/qfxtextedit/data/navigation.qml
+++ b/tests/auto/declarative/qmlgraphicstextedit/data/navigation.qml
diff --git a/tests/auto/declarative/qfxtextinput/qfxtextinput.pro b/tests/auto/declarative/qmlgraphicstextedit/qmlgraphicstextedit.pro
index fe2e3e3..9e6a71a 100644
--- a/tests/auto/declarative/qfxtextinput/qfxtextinput.pro
+++ b/tests/auto/declarative/qmlgraphicstextedit/qmlgraphicstextedit.pro
@@ -2,7 +2,7 @@ load(qttest_p4)
contains(QT_CONFIG,declarative): QT += declarative gui
macx:CONFIG -= app_bundle
-SOURCES += tst_qfxtextinput.cpp
+SOURCES += tst_qmlgraphicstextedit.cpp
# Define SRCDIR equal to test's source directory
DEFINES += SRCDIR=\\\"$$PWD\\\"
diff --git a/tests/auto/declarative/qfxtextedit/tst_qfxtextedit.cpp b/tests/auto/declarative/qmlgraphicstextedit/tst_qmlgraphicstextedit.cpp
index 19d5998..4287f01 100644
--- a/tests/auto/declarative/qfxtextedit/tst_qfxtextedit.cpp
+++ b/tests/auto/declarative/qmlgraphicstextedit/tst_qmlgraphicstextedit.cpp
@@ -51,12 +51,12 @@
#include <QFontMetrics>
#include <QmlView>
-class tst_qfxtextedit : public QObject
+class tst_qmlgraphicstextedit : public QObject
{
Q_OBJECT
public:
- tst_qfxtextedit();
+ tst_qmlgraphicstextedit();
private slots:
void text();
@@ -91,7 +91,7 @@ private:
QmlEngine engine;
};
-tst_qfxtextedit::tst_qfxtextedit()
+tst_qmlgraphicstextedit::tst_qmlgraphicstextedit()
{
standard << "the quick brown fox jumped over the lazy dog"
<< "the quick brown fox\n jumped over the lazy dog";
@@ -134,7 +134,7 @@ tst_qfxtextedit::tst_qfxtextedit()
//
}
-void tst_qfxtextedit::text()
+void tst_qmlgraphicstextedit::text()
{
{
QmlComponent texteditComponent(&engine, "import Qt 4.6\nTextEdit { text: \"\" }", QUrl());
@@ -170,7 +170,7 @@ void tst_qfxtextedit::text()
}
}
-void tst_qfxtextedit::width()
+void tst_qmlgraphicstextedit::width()
{
// uses Font metrics to find the width for standard and document to find the width for rich
{
@@ -213,7 +213,7 @@ void tst_qfxtextedit::width()
}
}
-void tst_qfxtextedit::wrap()
+void tst_qmlgraphicstextedit::wrap()
{
// for specified width and wrap set true
{
@@ -247,7 +247,7 @@ void tst_qfxtextedit::wrap()
}
//the alignment tests may be trivial o.oa
-void tst_qfxtextedit::hAlign()
+void tst_qmlgraphicstextedit::hAlign()
{
//test one align each, and then test if two align fails.
@@ -279,7 +279,7 @@ void tst_qfxtextedit::hAlign()
}
-void tst_qfxtextedit::vAlign()
+void tst_qmlgraphicstextedit::vAlign()
{
//test one align each, and then test if two align fails.
@@ -311,7 +311,7 @@ void tst_qfxtextedit::vAlign()
}
-void tst_qfxtextedit::font()
+void tst_qmlgraphicstextedit::font()
{
//test size, then bold, then italic, then family
{
@@ -366,7 +366,7 @@ void tst_qfxtextedit::font()
}
}
-void tst_qfxtextedit::color()
+void tst_qmlgraphicstextedit::color()
{
//test style
for (int i = 0; i < colorStrings.size(); i++)
@@ -393,7 +393,7 @@ void tst_qfxtextedit::color()
}
}
-void tst_qfxtextedit::selection()
+void tst_qmlgraphicstextedit::selection()
{
QString testStr = standard[0];//TODO: What should happen for multiline/rich text?
QString componentStr = "import Qt 4.6\nTextEdit { text: \""+ testStr +"\"; }";
@@ -473,7 +473,7 @@ void tst_qfxtextedit::selection()
QVERIFY(textEditObject->selectedText().size() == 10);
}
-void tst_qfxtextedit::cursorDelegate()
+void tst_qmlgraphicstextedit::cursorDelegate()
{
QmlView* view = createView(SRCDIR "/data/cursorTest.qml");
view->execute();
@@ -504,7 +504,7 @@ void tst_qfxtextedit::cursorDelegate()
TextEdit element should only handle left/right keys until the cursor reaches
the extent of the text, then they should ignore the keys.
*/
-void tst_qfxtextedit::navigation()
+void tst_qmlgraphicstextedit::navigation()
{
QmlView *canvas = createView(SRCDIR "/data/navigation.qml");
canvas->execute();
@@ -528,7 +528,7 @@ void tst_qfxtextedit::navigation()
QVERIFY(input->hasFocus() == true);
}
-void tst_qfxtextedit::simulateKey(QmlView *view, int key)
+void tst_qmlgraphicstextedit::simulateKey(QmlView *view, int key)
{
QKeyEvent press(QKeyEvent::KeyPress, key, 0);
QKeyEvent release(QKeyEvent::KeyRelease, key, 0);
@@ -537,7 +537,7 @@ void tst_qfxtextedit::simulateKey(QmlView *view, int key)
QApplication::sendEvent(view, &release);
}
-QmlView *tst_qfxtextedit::createView(const QString &filename)
+QmlView *tst_qmlgraphicstextedit::createView(const QString &filename)
{
QmlView *canvas = new QmlView(0);
@@ -550,6 +550,6 @@ QmlView *tst_qfxtextedit::createView(const QString &filename)
}
-QTEST_MAIN(tst_qfxtextedit)
+QTEST_MAIN(tst_qmlgraphicstextedit)
-#include "tst_qfxtextedit.moc"
+#include "tst_qmlgraphicstextedit.moc"
diff --git a/tests/auto/declarative/qfxtextinput/data/cursorTest.qml b/tests/auto/declarative/qmlgraphicstextinput/data/cursorTest.qml
index ddc98cc..ddc98cc 100644
--- a/tests/auto/declarative/qfxtextinput/data/cursorTest.qml
+++ b/tests/auto/declarative/qmlgraphicstextinput/data/cursorTest.qml
diff --git a/tests/auto/declarative/qfxtextinput/data/navigation.qml b/tests/auto/declarative/qmlgraphicstextinput/data/navigation.qml
index 282c52c..282c52c 100644
--- a/tests/auto/declarative/qfxtextinput/data/navigation.qml
+++ b/tests/auto/declarative/qmlgraphicstextinput/data/navigation.qml
diff --git a/tests/auto/declarative/qmlgraphicstextinput/qmlgraphicstextinput.pro b/tests/auto/declarative/qmlgraphicstextinput/qmlgraphicstextinput.pro
new file mode 100644
index 0000000..fd75fec
--- /dev/null
+++ b/tests/auto/declarative/qmlgraphicstextinput/qmlgraphicstextinput.pro
@@ -0,0 +1,8 @@
+load(qttest_p4)
+contains(QT_CONFIG,declarative): QT += declarative gui
+macx:CONFIG -= app_bundle
+
+SOURCES += tst_qmlgraphicstextinput.cpp
+
+# Define SRCDIR equal to test's source directory
+DEFINES += SRCDIR=\\\"$$PWD\\\"
diff --git a/tests/auto/declarative/qfxtextinput/tst_qfxtextinput.cpp b/tests/auto/declarative/qmlgraphicstextinput/tst_qmlgraphicstextinput.cpp
index 8eeb22d..8e9fa5e 100644
--- a/tests/auto/declarative/qfxtextinput/tst_qfxtextinput.cpp
+++ b/tests/auto/declarative/qmlgraphicstextinput/tst_qmlgraphicstextinput.cpp
@@ -46,12 +46,12 @@
#include <private/qmlgraphicstextinput_p.h>
#include <QDebug>
-class tst_qfxtextinput : public QObject
+class tst_qmlgraphicstextinput : public QObject
{
Q_OBJECT
public:
- tst_qfxtextinput();
+ tst_qmlgraphicstextinput();
private slots:
void text();
@@ -76,7 +76,7 @@ private:
QStringList colorStrings;
};
-tst_qfxtextinput::tst_qfxtextinput()
+tst_qmlgraphicstextinput::tst_qmlgraphicstextinput()
{
standard << "the quick brown fox jumped over the lazy dog"
<< "It's supercalifragisiticexpialidocious!"
@@ -96,7 +96,7 @@ tst_qfxtextinput::tst_qfxtextinput()
<< "#2AC05F";
}
-void tst_qfxtextinput::text()
+void tst_qmlgraphicstextinput::text()
{
{
QmlComponent textinputComponent(&engine, "import Qt 4.6\nTextInput { text: \"\" }", QUrl());
@@ -118,7 +118,7 @@ void tst_qfxtextinput::text()
}
-void tst_qfxtextinput::width()
+void tst_qmlgraphicstextinput::width()
{
// uses Font metrics to find the width for standard
{
@@ -144,7 +144,7 @@ void tst_qfxtextinput::width()
}
}
-void tst_qfxtextinput::font()
+void tst_qmlgraphicstextinput::font()
{
//test size, then bold, then italic, then family
{
@@ -199,7 +199,7 @@ void tst_qfxtextinput::font()
}
}
-void tst_qfxtextinput::color()
+void tst_qmlgraphicstextinput::color()
{
//test style
for (int i = 0; i < colorStrings.size(); i++)
@@ -226,7 +226,7 @@ void tst_qfxtextinput::color()
}
}
-void tst_qfxtextinput::selection()
+void tst_qmlgraphicstextinput::selection()
{
QString testStr = standard[0];
QString componentStr = "import Qt 4.6\nTextInput { text: \""+ testStr +"\"; }";
@@ -306,7 +306,7 @@ void tst_qfxtextinput::selection()
QVERIFY(textinputObject->selectedText().size() == 10);
}
-void tst_qfxtextinput::maxLength()
+void tst_qmlgraphicstextinput::maxLength()
{
QString componentStr = "import Qt 4.6\nTextInput { maximumLength: 10; }";
QmlComponent textinputComponent(&engine, componentStr.toLatin1(), QUrl());
@@ -321,7 +321,7 @@ void tst_qfxtextinput::maxLength()
//TODO: Simulated keypress input adding 11 chars at a time
}
-void tst_qfxtextinput::masks()
+void tst_qmlgraphicstextinput::masks()
{
QString componentStr = "import Qt 4.6\nTextInput { maximumLength: 10; }";
QmlComponent textinputComponent(&engine, componentStr.toLatin1(), QUrl());
@@ -331,7 +331,7 @@ void tst_qfxtextinput::masks()
//TODO: Me
}
-void tst_qfxtextinput::validators()
+void tst_qmlgraphicstextinput::validators()
{
QString componentStr = "import Qt 4.6\nTextInput { maximumLength: 10; }";
QmlComponent textinputComponent(&engine, componentStr.toLatin1(), QUrl());
@@ -345,7 +345,7 @@ void tst_qfxtextinput::validators()
TextInput element should only handle left/right keys until the cursor reaches
the extent of the text, then they should ignore the keys.
*/
-void tst_qfxtextinput::navigation()
+void tst_qmlgraphicstextinput::navigation()
{
QmlView *canvas = createView(SRCDIR "/data/navigation.qml");
canvas->execute();
@@ -368,7 +368,7 @@ void tst_qfxtextinput::navigation()
QVERIFY(input->hasFocus() == true);
}
-void tst_qfxtextinput::cursorDelegate()
+void tst_qmlgraphicstextinput::cursorDelegate()
{
QmlView* view = createView(SRCDIR "/data/cursorTest.qml");
view->execute();
@@ -396,7 +396,7 @@ void tst_qfxtextinput::cursorDelegate()
QVERIFY(!textInputObject->findChild<QmlGraphicsItem*>("cursorInstance"));
}
-void tst_qfxtextinput::simulateKey(QmlView *view, int key)
+void tst_qmlgraphicstextinput::simulateKey(QmlView *view, int key)
{
QKeyEvent press(QKeyEvent::KeyPress, key, 0);
QKeyEvent release(QKeyEvent::KeyRelease, key, 0);
@@ -405,7 +405,7 @@ void tst_qfxtextinput::simulateKey(QmlView *view, int key)
QApplication::sendEvent(view, &release);
}
-QmlView *tst_qfxtextinput::createView(const QString &filename)
+QmlView *tst_qmlgraphicstextinput::createView(const QString &filename)
{
QmlView *canvas = new QmlView(0);
@@ -417,6 +417,6 @@ QmlView *tst_qfxtextinput::createView(const QString &filename)
return canvas;
}
-QTEST_MAIN(tst_qfxtextinput)
+QTEST_MAIN(tst_qmlgraphicstextinput)
-#include "tst_qfxtextinput.moc"
+#include "tst_qmlgraphicstextinput.moc"
diff --git a/tests/auto/declarative/qmllanguage/data/assignBasicTypes.qml b/tests/auto/declarative/qmllanguage/data/assignBasicTypes.qml
index 50723a3..c86c96b 100644
--- a/tests/auto/declarative/qmllanguage/data/assignBasicTypes.qml
+++ b/tests/auto/declarative/qmllanguage/data/assignBasicTypes.qml
@@ -23,6 +23,7 @@ MyTypeObject {
boolProperty: true
variantProperty: "Hello World!"
vectorProperty: "10,1,2.2"
+ urlProperty: "main.qml"
objectProperty: MyTypeObject { intProperty: 8 }
}
diff --git a/tests/auto/declarative/qmllanguage/data/attachedProperties.qml b/tests/auto/declarative/qmllanguage/data/attachedProperties.qml
index 8343754..fec96cc 100644
--- a/tests/auto/declarative/qmllanguage/data/attachedProperties.qml
+++ b/tests/auto/declarative/qmllanguage/data/attachedProperties.qml
@@ -1,5 +1,8 @@
import Test 1.0
+import Test 1.0 as Namespace
import Qt 4.6
+
Object {
MyQmlObject.value: 10
+ Namespace.MyQmlObject.value2: 13
}
diff --git a/tests/auto/declarative/qmllanguage/data/fakeDotProperty.errors.txt b/tests/auto/declarative/qmllanguage/data/fakeDotProperty.errors.txt
index e56ad3a..3074823 100644
--- a/tests/auto/declarative/qmllanguage/data/fakeDotProperty.errors.txt
+++ b/tests/auto/declarative/qmllanguage/data/fakeDotProperty.errors.txt
@@ -1 +1 @@
-3:5:Invalid property access
+3:5:Invalid grouped property access
diff --git a/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.1.errors.txt b/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.1.errors.txt
new file mode 100644
index 0000000..68fe671
--- /dev/null
+++ b/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.1.errors.txt
@@ -0,0 +1 @@
+5:17:Cannot assign to non-existant property "foo"
diff --git a/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.1.qml b/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.1.qml
new file mode 100644
index 0000000..e99c635
--- /dev/null
+++ b/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.1.qml
@@ -0,0 +1,7 @@
+import Test 1.0
+import Qt 4.6
+
+Object {
+ MyQmlObject.foo: 10
+}
+
diff --git a/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.10.errors.txt b/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.10.errors.txt
new file mode 100644
index 0000000..7f630f4
--- /dev/null
+++ b/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.10.errors.txt
@@ -0,0 +1 @@
+5:15:Non-existant attached object
diff --git a/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.10.qml b/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.10.qml
new file mode 100644
index 0000000..8f987ce
--- /dev/null
+++ b/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.10.qml
@@ -0,0 +1,6 @@
+import Test 1.0 as Namespace
+import Qt 4.6
+
+Object {
+ Namespace.MadeUpClass.foo: 10
+}
diff --git a/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.11.errors.txt b/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.11.errors.txt
new file mode 100644
index 0000000..fee5050
--- /dev/null
+++ b/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.11.errors.txt
@@ -0,0 +1 @@
+5:15:Not an attached property name
diff --git a/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.11.qml b/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.11.qml
new file mode 100644
index 0000000..18770fc
--- /dev/null
+++ b/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.11.qml
@@ -0,0 +1,7 @@
+import Test 1.0 as Namespace
+import Qt 4.6
+
+Object {
+ Namespace.madeUpClass.foo: 10
+}
+
diff --git a/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.2.errors.txt b/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.2.errors.txt
new file mode 100644
index 0000000..9f06e07
--- /dev/null
+++ b/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.2.errors.txt
@@ -0,0 +1 @@
+5:27:Cannot assign to non-existant property "foo"
diff --git a/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.2.qml b/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.2.qml
new file mode 100644
index 0000000..3c9ae5b
--- /dev/null
+++ b/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.2.qml
@@ -0,0 +1,6 @@
+import Test 1.0 as Namespace
+import Qt 4.6
+
+Object {
+ Namespace.MyQmlObject.foo: 10
+}
diff --git a/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.3.errors.txt b/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.3.errors.txt
new file mode 100644
index 0000000..05161c4
--- /dev/null
+++ b/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.3.errors.txt
@@ -0,0 +1 @@
+5:5:Invalid attached object assignment
diff --git a/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.3.qml b/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.3.qml
new file mode 100644
index 0000000..e9405a4
--- /dev/null
+++ b/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.3.qml
@@ -0,0 +1,8 @@
+import Test 1.0
+import Qt 4.6
+
+Object {
+ MyQmlObject: 10
+}
+
+
diff --git a/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.4.errors.txt b/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.4.errors.txt
new file mode 100644
index 0000000..a208bcf
--- /dev/null
+++ b/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.4.errors.txt
@@ -0,0 +1 @@
+5:15:Invalid attached object assignment
diff --git a/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.4.qml b/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.4.qml
new file mode 100644
index 0000000..6fbf718
--- /dev/null
+++ b/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.4.qml
@@ -0,0 +1,7 @@
+import Test 1.0 as Namespace
+import Qt 4.6
+
+Object {
+ Namespace.MyQmlObject: 10
+}
+
diff --git a/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.5.errors.txt b/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.5.errors.txt
new file mode 100644
index 0000000..05161c4
--- /dev/null
+++ b/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.5.errors.txt
@@ -0,0 +1 @@
+5:5:Invalid attached object assignment
diff --git a/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.5.qml b/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.5.qml
new file mode 100644
index 0000000..1827a16
--- /dev/null
+++ b/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.5.qml
@@ -0,0 +1,7 @@
+import Test 1.0
+import Qt 4.6
+
+Object {
+ MyQmlObject: Object {}
+}
+
diff --git a/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.6.errors.txt b/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.6.errors.txt
new file mode 100644
index 0000000..e232b23
--- /dev/null
+++ b/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.6.errors.txt
@@ -0,0 +1 @@
+5:5:Non-existant attached object
diff --git a/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.6.qml b/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.6.qml
new file mode 100644
index 0000000..5c7f0ec
--- /dev/null
+++ b/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.6.qml
@@ -0,0 +1,7 @@
+import Test 1.0
+import Qt 4.6
+
+Object {
+ Test.MyQmlObject: Object {}
+}
+
diff --git a/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.7.errors.txt b/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.7.errors.txt
new file mode 100644
index 0000000..e232b23
--- /dev/null
+++ b/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.7.errors.txt
@@ -0,0 +1 @@
+5:5:Non-existant attached object
diff --git a/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.7.qml b/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.7.qml
new file mode 100644
index 0000000..841cc08
--- /dev/null
+++ b/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.7.qml
@@ -0,0 +1,6 @@
+import Test 1.0
+import Qt 4.6
+
+Object {
+ MyTypeObject.foo: 10
+}
diff --git a/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.8.errors.txt b/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.8.errors.txt
new file mode 100644
index 0000000..7f630f4
--- /dev/null
+++ b/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.8.errors.txt
@@ -0,0 +1 @@
+5:15:Non-existant attached object
diff --git a/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.8.qml b/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.8.qml
new file mode 100644
index 0000000..f1b4b96
--- /dev/null
+++ b/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.8.qml
@@ -0,0 +1,6 @@
+import Test 1.0 as Namespace
+import Qt 4.6
+
+Object {
+ Namespace.MyTypeObject.foo: 10
+}
diff --git a/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.9.errors.txt b/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.9.errors.txt
new file mode 100644
index 0000000..e232b23
--- /dev/null
+++ b/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.9.errors.txt
@@ -0,0 +1 @@
+5:5:Non-existant attached object
diff --git a/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.9.qml b/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.9.qml
new file mode 100644
index 0000000..99c4a5c
--- /dev/null
+++ b/tests/auto/declarative/qmllanguage/data/invalidAttachedProperty.9.qml
@@ -0,0 +1,7 @@
+import Test 1.0
+import Qt 4.6
+
+Object {
+ MadeUpClass.foo: 10
+}
+
diff --git a/tests/auto/declarative/qmllanguage/data/invalidGroupedProperty.1.errors.txt b/tests/auto/declarative/qmllanguage/data/invalidGroupedProperty.1.errors.txt
index 7c00ce4..810fd31 100644
--- a/tests/auto/declarative/qmllanguage/data/invalidGroupedProperty.1.errors.txt
+++ b/tests/auto/declarative/qmllanguage/data/invalidGroupedProperty.1.errors.txt
@@ -1 +1 @@
-5:5:Invalid property access
+5:5:Invalid grouped property access
diff --git a/tests/auto/declarative/qmllanguage/data/invalidGroupedProperty.2.errors.txt b/tests/auto/declarative/qmllanguage/data/invalidGroupedProperty.2.errors.txt
index 7c00ce4..810fd31 100644
--- a/tests/auto/declarative/qmllanguage/data/invalidGroupedProperty.2.errors.txt
+++ b/tests/auto/declarative/qmllanguage/data/invalidGroupedProperty.2.errors.txt
@@ -1 +1 @@
-5:5:Invalid property access
+5:5:Invalid grouped property access
diff --git a/tests/auto/declarative/qmllanguage/data/invalidGroupedProperty.3.errors.txt b/tests/auto/declarative/qmllanguage/data/invalidGroupedProperty.3.errors.txt
new file mode 100644
index 0000000..f6d6f29
--- /dev/null
+++ b/tests/auto/declarative/qmllanguage/data/invalidGroupedProperty.3.errors.txt
@@ -0,0 +1 @@
+4:5:Invalid grouped property access
diff --git a/tests/auto/declarative/qmllanguage/data/invalidGroupedProperty.3.qml b/tests/auto/declarative/qmllanguage/data/invalidGroupedProperty.3.qml
new file mode 100644
index 0000000..0bbfc4f
--- /dev/null
+++ b/tests/auto/declarative/qmllanguage/data/invalidGroupedProperty.3.qml
@@ -0,0 +1,5 @@
+import Test 1.0
+
+MyQmlObject {
+ customType.x: 10
+}
diff --git a/tests/auto/declarative/qmllanguage/data/invalidGroupedProperty.4.errors.txt b/tests/auto/declarative/qmllanguage/data/invalidGroupedProperty.4.errors.txt
new file mode 100644
index 0000000..19934fa
--- /dev/null
+++ b/tests/auto/declarative/qmllanguage/data/invalidGroupedProperty.4.errors.txt
@@ -0,0 +1 @@
+4:5:Cannot assign to non-existant property "foo"
diff --git a/tests/auto/declarative/qmllanguage/data/invalidGroupedProperty.4.qml b/tests/auto/declarative/qmllanguage/data/invalidGroupedProperty.4.qml
new file mode 100644
index 0000000..134fef9
--- /dev/null
+++ b/tests/auto/declarative/qmllanguage/data/invalidGroupedProperty.4.qml
@@ -0,0 +1,5 @@
+import Test 1.0
+
+MyQmlObject {
+ foo.x: 10
+}
diff --git a/tests/auto/declarative/qmllanguage/data/invalidGroupedProperty.5.errors.txt b/tests/auto/declarative/qmllanguage/data/invalidGroupedProperty.5.errors.txt
new file mode 100644
index 0000000..2c8a970
--- /dev/null
+++ b/tests/auto/declarative/qmllanguage/data/invalidGroupedProperty.5.errors.txt
@@ -0,0 +1 @@
+4:18:Property assignment expected
diff --git a/tests/auto/declarative/qmllanguage/data/invalidGroupedProperty.5.qml b/tests/auto/declarative/qmllanguage/data/invalidGroupedProperty.5.qml
new file mode 100644
index 0000000..55cefe6
--- /dev/null
+++ b/tests/auto/declarative/qmllanguage/data/invalidGroupedProperty.5.qml
@@ -0,0 +1,5 @@
+import Test 1.0
+
+MyTypeObject {
+ rectProperty.x.foo: 100
+}
diff --git a/tests/auto/declarative/qmllanguage/data/invalidGroupedProperty.6.errors.txt b/tests/auto/declarative/qmllanguage/data/invalidGroupedProperty.6.errors.txt
new file mode 100644
index 0000000..8331725
--- /dev/null
+++ b/tests/auto/declarative/qmllanguage/data/invalidGroupedProperty.6.errors.txt
@@ -0,0 +1 @@
+5:18:Single property assignment expected
diff --git a/tests/auto/declarative/qmllanguage/data/invalidGroupedProperty.6.qml b/tests/auto/declarative/qmllanguage/data/invalidGroupedProperty.6.qml
new file mode 100644
index 0000000..9ec33ab
--- /dev/null
+++ b/tests/auto/declarative/qmllanguage/data/invalidGroupedProperty.6.qml
@@ -0,0 +1,6 @@
+import Test 1.0
+
+MyTypeObject {
+ rectProperty.x: 100
+ rectProperty.x: 101
+}
diff --git a/tests/auto/declarative/qmllanguage/data/invalidGroupedProperty.7.errors.txt b/tests/auto/declarative/qmllanguage/data/invalidGroupedProperty.7.errors.txt
new file mode 100644
index 0000000..4a7e383
--- /dev/null
+++ b/tests/auto/declarative/qmllanguage/data/invalidGroupedProperty.7.errors.txt
@@ -0,0 +1 @@
+4:-1:Cannot set properties on nullGrouped as it is null
diff --git a/tests/auto/declarative/qmllanguage/data/invalidGroupedProperty.7.qml b/tests/auto/declarative/qmllanguage/data/invalidGroupedProperty.7.qml
new file mode 100644
index 0000000..b77fb90
--- /dev/null
+++ b/tests/auto/declarative/qmllanguage/data/invalidGroupedProperty.7.qml
@@ -0,0 +1,5 @@
+import Test 1.0
+
+MyTypeObject {
+ nullGrouped.script: print(1921)
+}
diff --git a/tests/auto/declarative/qmllanguage/data/missingValueTypeProperty.errors.txt b/tests/auto/declarative/qmllanguage/data/missingValueTypeProperty.errors.txt
new file mode 100644
index 0000000..dfaa218
--- /dev/null
+++ b/tests/auto/declarative/qmllanguage/data/missingValueTypeProperty.errors.txt
@@ -0,0 +1 @@
+4:18:Cannot assign to non-existant property "foo"
diff --git a/tests/auto/declarative/qmllanguage/data/missingValueTypeProperty.qml b/tests/auto/declarative/qmllanguage/data/missingValueTypeProperty.qml
new file mode 100644
index 0000000..9a0fa6a
--- /dev/null
+++ b/tests/auto/declarative/qmllanguage/data/missingValueTypeProperty.qml
@@ -0,0 +1,5 @@
+import Test 1.0
+
+MyTypeObject {
+ rectProperty.foo: 9
+}
diff --git a/tests/auto/declarative/qmllanguage/data/objectValueTypeProperty.errors.txt b/tests/auto/declarative/qmllanguage/data/objectValueTypeProperty.errors.txt
new file mode 100644
index 0000000..db7d9c0
--- /dev/null
+++ b/tests/auto/declarative/qmllanguage/data/objectValueTypeProperty.errors.txt
@@ -0,0 +1 @@
+4:18:Unexpected object assignment
diff --git a/tests/auto/declarative/qmllanguage/data/objectValueTypeProperty.qml b/tests/auto/declarative/qmllanguage/data/objectValueTypeProperty.qml
new file mode 100644
index 0000000..9924773
--- /dev/null
+++ b/tests/auto/declarative/qmllanguage/data/objectValueTypeProperty.qml
@@ -0,0 +1,6 @@
+import Test 1.0
+
+MyTypeObject {
+ rectProperty.x: MyTypeObject {}
+}
+
diff --git a/tests/auto/declarative/qmllanguage/data/wrongType.15.errors.txt b/tests/auto/declarative/qmllanguage/data/wrongType.15.errors.txt
new file mode 100644
index 0000000..44768e3
--- /dev/null
+++ b/tests/auto/declarative/qmllanguage/data/wrongType.15.errors.txt
@@ -0,0 +1 @@
+3:18:Invalid property assignment: url expected
diff --git a/tests/auto/declarative/qmllanguage/data/wrongType.15.qml b/tests/auto/declarative/qmllanguage/data/wrongType.15.qml
new file mode 100644
index 0000000..633a5ba
--- /dev/null
+++ b/tests/auto/declarative/qmllanguage/data/wrongType.15.qml
@@ -0,0 +1,4 @@
+import Test 1.0
+MyTypeObject {
+ urlProperty: 12
+}
diff --git a/tests/auto/declarative/qmllanguage/testtypes.h b/tests/auto/declarative/qmllanguage/testtypes.h
index e654faa..b251f87 100644
--- a/tests/auto/declarative/qmllanguage/testtypes.h
+++ b/tests/auto/declarative/qmllanguage/testtypes.h
@@ -80,14 +80,19 @@ class MyAttachedObject : public QObject
{
Q_OBJECT
Q_PROPERTY(int value READ value WRITE setValue)
+ Q_PROPERTY(int value2 READ value2 WRITE setValue2)
public:
- MyAttachedObject(QObject *parent) : QObject(parent), m_value(0) {}
+ MyAttachedObject(QObject *parent) : QObject(parent), m_value(0), m_value2(0) {}
int value() const { return m_value; }
void setValue(int v) { m_value = v; }
+ int value2() const { return m_value2; }
+ void setValue2(int v) { m_value2 = v; }
+
private:
int m_value;
+ int m_value2;
};
class MyQmlObject : public QObject, public MyInterface, public QmlParserStatus
@@ -201,9 +206,11 @@ class MyTypeObject : public QObject
Q_PROPERTY(bool boolProperty READ boolProperty WRITE setBoolProperty);
Q_PROPERTY(QVariant variantProperty READ variantProperty WRITE setVariantProperty);
Q_PROPERTY(QVector3D vectorProperty READ vectorProperty WRITE setVectorProperty);
+ Q_PROPERTY(QUrl urlProperty READ urlProperty WRITE setUrlProperty);
Q_PROPERTY(QmlScriptString scriptProperty READ scriptProperty WRITE setScriptProperty);
Q_PROPERTY(MyGroupedObject *grouped READ grouped CONSTANT);
+ Q_PROPERTY(MyGroupedObject *nullGrouped READ nullGrouped CONSTANT);
public:
MyTypeObject()
@@ -413,6 +420,14 @@ public:
vectorPropertyValue = v;
}
+ QUrl urlPropertyValue;
+ QUrl urlProperty() const {
+ return urlPropertyValue;
+ }
+ void setUrlProperty(const QUrl &v) {
+ urlPropertyValue = v;
+ }
+
QmlScriptString scriptPropertyValue;
QmlScriptString scriptProperty() const {
return scriptPropertyValue;
@@ -424,6 +439,8 @@ public:
MyGroupedObject groupedValue;
MyGroupedObject *grouped() { return &groupedValue; }
+ MyGroupedObject *nullGrouped() { return 0; }
+
void doAction() { emit action(); }
signals:
void action();
diff --git a/tests/auto/declarative/qmllanguage/tst_qmllanguage.cpp b/tests/auto/declarative/qmllanguage/tst_qmllanguage.cpp
index c646583..c23bb2d 100644
--- a/tests/auto/declarative/qmllanguage/tst_qmllanguage.cpp
+++ b/tests/auto/declarative/qmllanguage/tst_qmllanguage.cpp
@@ -141,6 +141,7 @@ private:
QFile file(QLatin1String("data/") + QLatin1String(errorfile)); \
QVERIFY(file.open(QIODevice::ReadOnly)); \
QByteArray data = file.readAll(); \
+ file.close(); \
QList<QByteArray> expected = data.split('\n'); \
expected.removeAll(QByteArray("")); \
QList<QmlError> errors = component.errors(); \
@@ -154,7 +155,16 @@ private:
} \
if (qgetenv("DEBUG") != "" && expected != actual) \
qWarning() << "Expected:" << expected << "Actual:" << actual; \
- QCOMPARE(expected, actual); \
+ if (qgetenv("QMLLANGUAGE_UPDATEERRORS") != "" && expected != actual) {\
+ QFile file(QLatin1String("data/") + QLatin1String(errorfile)); \
+ QVERIFY(file.open(QIODevice::WriteOnly)); \
+ for (int ii = 0; ii < actual.count(); ++ii) { \
+ file.write(actual.at(ii)); file.write("\n"); \
+ } \
+ file.close(); \
+ } else { \
+ QCOMPARE(expected, actual); \
+ } \
}
inline QUrl TEST_FILE(const QString &filename)
@@ -214,6 +224,7 @@ void tst_qmllanguage::errors_data()
QTest::newRow("wrongType (color for size)") << "wrongType.12.qml" << "wrongType.12.errors.txt" << false;
QTest::newRow("wrongType (number string for int)") << "wrongType.13.qml" << "wrongType.13.errors.txt" << false;
QTest::newRow("wrongType (int for string)") << "wrongType.14.qml" << "wrongType.14.errors.txt" << false;
+ QTest::newRow("wrongType (int for url)") << "wrongType.15.qml" << "wrongType.15.errors.txt" << false;
QTest::newRow("readOnly.1") << "readOnly.1.qml" << "readOnly.1.errors.txt" << false;
QTest::newRow("readOnly.2") << "readOnly.2.qml" << "readOnly.2.errors.txt" << false;
@@ -240,8 +251,14 @@ void tst_qmllanguage::errors_data()
QTest::newRow("missingSignal") << "missingSignal.qml" << "missingSignal.errors.txt" << false;
QTest::newRow("finalOverride") << "finalOverride.qml" << "finalOverride.errors.txt" << false;
QTest::newRow("customParserIdNotAllowed") << "customParserIdNotAllowed.qml" << "customParserIdNotAllowed.errors.txt" << false;
+
QTest::newRow("invalidGroupedProperty.1") << "invalidGroupedProperty.1.qml" << "invalidGroupedProperty.1.errors.txt" << false;
QTest::newRow("invalidGroupedProperty.2") << "invalidGroupedProperty.2.qml" << "invalidGroupedProperty.2.errors.txt" << false;
+ QTest::newRow("invalidGroupedProperty.3") << "invalidGroupedProperty.3.qml" << "invalidGroupedProperty.3.errors.txt" << false;
+ QTest::newRow("invalidGroupedProperty.4") << "invalidGroupedProperty.4.qml" << "invalidGroupedProperty.4.errors.txt" << false;
+ QTest::newRow("invalidGroupedProperty.5") << "invalidGroupedProperty.5.qml" << "invalidGroupedProperty.5.errors.txt" << false;
+ QTest::newRow("invalidGroupedProperty.6") << "invalidGroupedProperty.6.qml" << "invalidGroupedProperty.6.errors.txt" << false;
+ QTest::newRow("invalidGroupedProperty.7") << "invalidGroupedProperty.7.qml" << "invalidGroupedProperty.7.errors.txt" << true;
QTest::newRow("importNamespaceConflict") << "importNamespaceConflict.qml" << "importNamespaceConflict.errors.txt" << false;
QTest::newRow("importVersionMissing (builtin)") << "importVersionMissingBuiltIn.qml" << "importVersionMissingBuiltIn.errors.txt" << false;
@@ -278,13 +295,28 @@ void tst_qmllanguage::errors_data()
QTest::newRow("Component.5") << "component.5.qml" << "component.5.errors.txt" << false;
QTest::newRow("Component.6") << "component.6.qml" << "component.6.errors.txt" << false;
+ QTest::newRow("invalidAttachedProperty.1") << "invalidAttachedProperty.1.qml" << "invalidAttachedProperty.1.errors.txt" << false;
+ QTest::newRow("invalidAttachedProperty.2") << "invalidAttachedProperty.2.qml" << "invalidAttachedProperty.2.errors.txt" << false;
+ QTest::newRow("invalidAttachedProperty.3") << "invalidAttachedProperty.3.qml" << "invalidAttachedProperty.3.errors.txt" << false;
+ QTest::newRow("invalidAttachedProperty.4") << "invalidAttachedProperty.4.qml" << "invalidAttachedProperty.4.errors.txt" << false;
+ QTest::newRow("invalidAttachedProperty.5") << "invalidAttachedProperty.5.qml" << "invalidAttachedProperty.5.errors.txt" << false;
+ QTest::newRow("invalidAttachedProperty.6") << "invalidAttachedProperty.6.qml" << "invalidAttachedProperty.6.errors.txt" << false;
+ QTest::newRow("invalidAttachedProperty.7") << "invalidAttachedProperty.7.qml" << "invalidAttachedProperty.7.errors.txt" << false;
+ QTest::newRow("invalidAttachedProperty.8") << "invalidAttachedProperty.8.qml" << "invalidAttachedProperty.8.errors.txt" << false;
+ QTest::newRow("invalidAttachedProperty.9") << "invalidAttachedProperty.9.qml" << "invalidAttachedProperty.9.errors.txt" << false;
+ QTest::newRow("invalidAttachedProperty.10") << "invalidAttachedProperty.10.qml" << "invalidAttachedProperty.10.errors.txt" << false;
+ QTest::newRow("invalidAttachedProperty.11") << "invalidAttachedProperty.11.qml" << "invalidAttachedProperty.11.errors.txt" << false;
+
QTest::newRow("nestedErrors") << "nestedErrors.qml" << "nestedErrors.errors.txt" << false;
QTest::newRow("defaultGrouped") << "defaultGrouped.qml" << "defaultGrouped.errors.txt" << false;
QTest::newRow("emptySignal") << "emptySignal.qml" << "emptySignal.errors.txt" << false;
QTest::newRow("doubleSignal") << "doubleSignal.qml" << "doubleSignal.errors.txt" << false;
QTest::newRow("invalidRoot") << "invalidRoot.qml" << "invalidRoot.errors.txt" << false;
+ QTest::newRow("missingValueTypeProperty") << "missingValueTypeProperty.qml" << "missingValueTypeProperty.errors.txt" << false;
+ QTest::newRow("objectValueTypeProperty") << "objectValueTypeProperty.qml" << "objectValueTypeProperty.errors.txt" << false;
}
+
void tst_qmllanguage::errors()
{
QFETCH(QString, file);
@@ -420,6 +452,7 @@ void tst_qmllanguage::assignBasicTypes()
QCOMPARE(object->boolProperty(), true);
QCOMPARE(object->variantProperty(), QVariant("Hello World!"));
QCOMPARE(object->vectorProperty(), QVector3D(10, 1, 2.2));
+ QCOMPARE(object->urlProperty(), component.url().resolved(QUrl("main.qml")));
QVERIFY(object->objectProperty() != 0);
MyTypeObject *child = qobject_cast<MyTypeObject *>(object->objectProperty());
QVERIFY(child != 0);
@@ -611,6 +644,7 @@ void tst_qmllanguage::attachedProperties()
QObject *attached = qmlAttachedPropertiesObject<MyQmlObject>(object);
QVERIFY(attached != 0);
QCOMPARE(attached->property("value"), QVariant(10));
+ QCOMPARE(attached->property("value2"), QVariant(13));
}
// Tests non-static object properties
diff --git a/tests/auto/declarative/qmlsystempalette/tst_qmlsystempalette.cpp b/tests/auto/declarative/qmlsystempalette/tst_qmlsystempalette.cpp
index 039eaa8..2648463 100644
--- a/tests/auto/declarative/qmlsystempalette/tst_qmlsystempalette.cpp
+++ b/tests/auto/declarative/qmlsystempalette/tst_qmlsystempalette.cpp
@@ -38,7 +38,9 @@
** $QT_END_LICENSE$
**
****************************************************************************/
+
#include <qtest.h>
+#include <QDebug>
#include <QtDeclarative/qmlengine.h>
#include <QtDeclarative/qmlcomponent.h>
#include <private/qmlsystempalette_p.h>
@@ -56,6 +58,7 @@ private slots:
void activePalette();
void inactivePalette();
void disabledPalette();
+ void paletteChanged();
private:
QmlEngine engine;
@@ -149,6 +152,30 @@ void tst_qmlsystempalette::disabledPalette()
delete object;
}
+void tst_qmlsystempalette::paletteChanged()
+{
+ QString componentStr = "import Qt 4.6\nSystemPalette { }";
+ QmlComponent component(&engine, componentStr.toLatin1(), QUrl("file://"));
+ QmlSystemPalette *object = qobject_cast<QmlSystemPalette*>(component.create());
+
+ QVERIFY(object != 0);
+
+ QPalette p;
+ p.setCurrentColorGroup(QPalette::Active);
+ p.setColor(QPalette::Active, QPalette::Text, QColor("red"));
+ p.setColor(QPalette::Active, QPalette::ButtonText, QColor("green"));
+ p.setColor(QPalette::Active, QPalette::WindowText, QColor("blue"));
+
+ qApp->setPalette(p);
+
+ object->setColorGroup(QmlSystemPalette::Active);
+ QTRY_COMPARE(QColor("red"), object->text());
+ QTRY_COMPARE(QColor("green"), object->buttonText());
+ QTRY_COMPARE(QColor("blue"), object->windowText());
+
+ delete object;
+}
+
QTEST_MAIN(tst_qmlsystempalette)
#include "tst_qmlsystempalette.moc"
diff --git a/tests/auto/declarative/qmltimer/tst_qmltimer.cpp b/tests/auto/declarative/qmltimer/tst_qmltimer.cpp
index 9c5dc30..cf54647 100644
--- a/tests/auto/declarative/qmltimer/tst_qmltimer.cpp
+++ b/tests/auto/declarative/qmltimer/tst_qmltimer.cpp
@@ -91,6 +91,9 @@ void tst_qmltimer::notRepeating()
QmlComponent component(&engine, QByteArray("import Qt 4.6\nTimer { interval: 100; running: true }"), QUrl("file://"));
QmlTimer *timer = qobject_cast<QmlTimer*>(component.create());
QVERIFY(timer != 0);
+ QVERIFY(timer->isRunning());
+ QVERIFY(!timer->isRepeating());
+ QCOMPARE(timer->interval(), 100);
TimerHelper helper;
connect(timer, SIGNAL(triggered()), &helper, SLOT(timeout()));
@@ -107,6 +110,7 @@ void tst_qmltimer::notRepeatingStart()
QmlComponent component(&engine, QByteArray("import Qt 4.6\nTimer { interval: 100 }"), QUrl("file://"));
QmlTimer *timer = qobject_cast<QmlTimer*>(component.create());
QVERIFY(timer != 0);
+ QVERIFY(!timer->isRunning());
TimerHelper helper;
connect(timer, SIGNAL(triggered()), &helper, SLOT(timeout()));
@@ -138,6 +142,11 @@ void tst_qmltimer::repeat()
QTest::qWait(TIMEOUT_TIMEOUT);
QVERIFY(helper.count > oldCount);
+
+ oldCount = helper.count;
+ timer->stop();
+ QTest::qWait(TIMEOUT_TIMEOUT);
+ QVERIFY(helper.count == oldCount);
}
void tst_qmltimer::triggeredOnStart()
@@ -146,6 +155,7 @@ void tst_qmltimer::triggeredOnStart()
QmlComponent component(&engine, QByteArray("import Qt 4.6\nTimer { interval: 100; running: true; triggeredOnStart: true }"), QUrl("file://"));
QmlTimer *timer = qobject_cast<QmlTimer*>(component.create());
QVERIFY(timer != 0);
+ QVERIFY(timer->triggeredOnStart());
TimerHelper helper;
connect(timer, SIGNAL(triggered()), &helper, SLOT(timeout()));
diff --git a/tests/auto/declarative/valuetypes/data/bindingVariantCopy.qml b/tests/auto/declarative/valuetypes/data/bindingVariantCopy.qml
new file mode 100644
index 0000000..691a56c
--- /dev/null
+++ b/tests/auto/declarative/valuetypes/data/bindingVariantCopy.qml
@@ -0,0 +1,13 @@
+import Test 1.0
+
+MyTypeObject {
+ property var object
+ object: MyTypeObject {
+ rect.x: 19
+ rect.y: 33
+ rect.width: 5
+ rect.height: 99
+ }
+
+ rect: object.rect
+}
diff --git a/tests/auto/declarative/valuetypes/data/deletedObject.js b/tests/auto/declarative/valuetypes/data/deletedObject.js
new file mode 100644
index 0000000..f554a0f
--- /dev/null
+++ b/tests/auto/declarative/valuetypes/data/deletedObject.js
@@ -0,0 +1,13 @@
+var savedReference;
+
+function startup()
+{
+ savedReference = object.rect;
+ print("Test: " + savedReference.x);
+}
+
+function afterDelete()
+{
+ print("Test: " + savedReference.x);
+}
+
diff --git a/tests/auto/declarative/valuetypes/data/deletedObject.qml b/tests/auto/declarative/valuetypes/data/deletedObject.qml
new file mode 100644
index 0000000..05459f4
--- /dev/null
+++ b/tests/auto/declarative/valuetypes/data/deletedObject.qml
@@ -0,0 +1,12 @@
+import Test 1.0
+import Qt 4.6
+
+MyTypeObject {
+ property var object
+
+ Script { source: "deletedObject.js" }
+
+ object: MyTypeObject {}
+ Component.onCompleted: startup()
+ onRunScript: afterDelete()
+}
diff --git a/tests/auto/declarative/valuetypes/data/scriptVariantCopy.qml b/tests/auto/declarative/valuetypes/data/scriptVariantCopy.qml
new file mode 100644
index 0000000..29157e8
--- /dev/null
+++ b/tests/auto/declarative/valuetypes/data/scriptVariantCopy.qml
@@ -0,0 +1,14 @@
+import Test 1.0
+
+MyTypeObject {
+ property var object
+ object: MyTypeObject {
+ rect.x: 19
+ rect.y: 33
+ rect.width: 5
+ rect.height: 99
+ }
+
+ onRunScript: rect = object.rect
+}
+
diff --git a/tests/auto/declarative/valuetypes/tst_valuetypes.cpp b/tests/auto/declarative/valuetypes/tst_valuetypes.cpp
index d09bdf5..d42bfc5 100644
--- a/tests/auto/declarative/valuetypes/tst_valuetypes.cpp
+++ b/tests/auto/declarative/valuetypes/tst_valuetypes.cpp
@@ -70,6 +70,9 @@ private slots:
void valueSources();
void valueInterceptors();
void bindingConflict();
+ void deletedObject();
+ void bindingVariantCopy();
+ void scriptVariantCopy();
void cppClasses();
private:
@@ -503,6 +506,54 @@ void tst_valuetypes::bindingConflict()
delete t; \
}
+// Test that accessing a reference to a valuetype after the owning object is deleted
+// doesn't crash
+void tst_valuetypes::deletedObject()
+{
+ QmlComponent component(&engine, TEST_FILE("deletedObject.qml"));
+ QTest::ignoreMessage(QtDebugMsg, "Test: 2");
+ MyTypeObject *object = qobject_cast<MyTypeObject *>(component.create());
+ QVERIFY(object != 0);
+
+ QObject *dObject = qvariant_cast<QObject *>(object->property("object"));
+ QVERIFY(dObject != 0);
+ delete dObject;
+
+ QTest::ignoreMessage(QtDebugMsg, "Test: undefined");
+ object->emitRunScript();
+
+ delete object;
+}
+
+// Test that value types can be assigned to another value type property in a binding
+void tst_valuetypes::bindingVariantCopy()
+{
+ QmlComponent component(&engine, TEST_FILE("bindingVariantCopy.qml"));
+ MyTypeObject *object = qobject_cast<MyTypeObject *>(component.create());
+ QVERIFY(object != 0);
+
+ QCOMPARE(object->rect(), QRect(19, 33, 5, 99));
+
+ delete object;
+}
+
+// Test that value types can be assigned to another value type property in script
+void tst_valuetypes::scriptVariantCopy()
+{
+ QmlComponent component(&engine, TEST_FILE("scriptVariantCopy.qml"));
+ MyTypeObject *object = qobject_cast<MyTypeObject *>(component.create());
+ QVERIFY(object != 0);
+
+ QCOMPARE(object->rect(), QRect(2, 3, 109, 102));
+
+ object->emitRunScript();
+
+ QCOMPARE(object->rect(), QRect(19, 33, 5, 99));
+
+ delete object;
+}
+
+
// Test that the value type classes can be used manually
void tst_valuetypes::cppClasses()
{
diff --git a/tests/auto/declarative/visual/bindinganimation/bindinganimation.qml b/tests/auto/declarative/visual/bindinganimation/bindinganimation.qml
index 90ef1e5..efbb1b4 100644
--- a/tests/auto/declarative/visual/bindinganimation/bindinganimation.qml
+++ b/tests/auto/declarative/visual/bindinganimation/bindinganimation.qml
@@ -28,7 +28,7 @@ Rectangle {
transitions: [
Transition {
NumberAnimation {
- properties: "x"
+ matchProperties: "x"
}
}
]
diff --git a/tests/auto/declarative/visual/easing/easing.qml b/tests/auto/declarative/visual/easing/easing.qml
index f81400b..1e8e907 100644
--- a/tests/auto/declarative/visual/easing/easing.qml
+++ b/tests/auto/declarative/visual/easing/easing.qml
@@ -176,7 +176,7 @@ Rectangle {
to: "to"
reversible: true
NumberAnimation {
- properties: "x"
+ matchProperties: "x"
easing: type
duration: 1000
}
diff --git a/tests/auto/declarative/visual/qfxtext/font/data-MAC/plaintext.qml b/tests/auto/declarative/visual/qfxtext/font/data-MAC/plaintext.qml
deleted file mode 100644
index 266c9a3..0000000
--- a/tests/auto/declarative/visual/qfxtext/font/data-MAC/plaintext.qml
+++ /dev/null
@@ -1,351 +0,0 @@
-import Qt.VisualTest 4.6
-
-VisualTest {
- Frame {
- msec: 0
- }
- Frame {
- msec: 16
- hash: "9f3d0a505dec1982d9b405be72c265f8"
- }
- Frame {
- msec: 32
- hash: "9f3d0a505dec1982d9b405be72c265f8"
- }
- Frame {
- msec: 48
- hash: "9f3d0a505dec1982d9b405be72c265f8"
- }
- Frame {
- msec: 64
- hash: "9f3d0a505dec1982d9b405be72c265f8"
- }
- Frame {
- msec: 80
- hash: "9f3d0a505dec1982d9b405be72c265f8"
- }
- Frame {
- msec: 96
- hash: "9f3d0a505dec1982d9b405be72c265f8"
- }
- Frame {
- msec: 112
- hash: "9f3d0a505dec1982d9b405be72c265f8"
- }
- Frame {
- msec: 128
- hash: "9f3d0a505dec1982d9b405be72c265f8"
- }
- Frame {
- msec: 144
- hash: "9f3d0a505dec1982d9b405be72c265f8"
- }
- Frame {
- msec: 160
- hash: "9f3d0a505dec1982d9b405be72c265f8"
- }
- Frame {
- msec: 176
- hash: "9f3d0a505dec1982d9b405be72c265f8"
- }
- Frame {
- msec: 192
- hash: "9f3d0a505dec1982d9b405be72c265f8"
- }
- Frame {
- msec: 208
- hash: "9f3d0a505dec1982d9b405be72c265f8"
- }
- Frame {
- msec: 224
- hash: "9f3d0a505dec1982d9b405be72c265f8"
- }
- Frame {
- msec: 240
- hash: "9f3d0a505dec1982d9b405be72c265f8"
- }
- Frame {
- msec: 256
- hash: "9f3d0a505dec1982d9b405be72c265f8"
- }
- Frame {
- msec: 272
- hash: "9f3d0a505dec1982d9b405be72c265f8"
- }
- Frame {
- msec: 288
- hash: "9f3d0a505dec1982d9b405be72c265f8"
- }
- Frame {
- msec: 304
- hash: "9f3d0a505dec1982d9b405be72c265f8"
- }
- Frame {
- msec: 320
- hash: "9f3d0a505dec1982d9b405be72c265f8"
- }
- Frame {
- msec: 336
- hash: "9f3d0a505dec1982d9b405be72c265f8"
- }
- Frame {
- msec: 352
- hash: "9f3d0a505dec1982d9b405be72c265f8"
- }
- Frame {
- msec: 368
- hash: "9f3d0a505dec1982d9b405be72c265f8"
- }
- Frame {
- msec: 384
- hash: "9f3d0a505dec1982d9b405be72c265f8"
- }
- Frame {
- msec: 400
- hash: "9f3d0a505dec1982d9b405be72c265f8"
- }
- Frame {
- msec: 416
- hash: "9f3d0a505dec1982d9b405be72c265f8"
- }
- Frame {
- msec: 432
- hash: "9f3d0a505dec1982d9b405be72c265f8"
- }
- Frame {
- msec: 448
- hash: "9f3d0a505dec1982d9b405be72c265f8"
- }
- Frame {
- msec: 464
- hash: "9f3d0a505dec1982d9b405be72c265f8"
- }
- Frame {
- msec: 480
- hash: "9f3d0a505dec1982d9b405be72c265f8"
- }
- Frame {
- msec: 496
- hash: "9f3d0a505dec1982d9b405be72c265f8"
- }
- Frame {
- msec: 512
- hash: "9f3d0a505dec1982d9b405be72c265f8"
- }
- Frame {
- msec: 528
- hash: "9f3d0a505dec1982d9b405be72c265f8"
- }
- Frame {
- msec: 544
- hash: "9f3d0a505dec1982d9b405be72c265f8"
- }
- Frame {
- msec: 560
- hash: "9f3d0a505dec1982d9b405be72c265f8"
- }
- Frame {
- msec: 576
- hash: "9f3d0a505dec1982d9b405be72c265f8"
- }
- Frame {
- msec: 592
- hash: "9f3d0a505dec1982d9b405be72c265f8"
- }
- Frame {
- msec: 608
- hash: "9f3d0a505dec1982d9b405be72c265f8"
- }
- Frame {
- msec: 624
- hash: "9f3d0a505dec1982d9b405be72c265f8"
- }
- Frame {
- msec: 640
- hash: "9f3d0a505dec1982d9b405be72c265f8"
- }
- Frame {
- msec: 656
- hash: "9f3d0a505dec1982d9b405be72c265f8"
- }
- Frame {
- msec: 672
- hash: "9f3d0a505dec1982d9b405be72c265f8"
- }
- Frame {
- msec: 688
- hash: "9f3d0a505dec1982d9b405be72c265f8"
- }
- Frame {
- msec: 704
- hash: "9f3d0a505dec1982d9b405be72c265f8"
- }
- Frame {
- msec: 720
- hash: "9f3d0a505dec1982d9b405be72c265f8"
- }
- Frame {
- msec: 736
- hash: "9f3d0a505dec1982d9b405be72c265f8"
- }
- Frame {
- msec: 752
- hash: "9f3d0a505dec1982d9b405be72c265f8"
- }
- Frame {
- msec: 768
- hash: "9f3d0a505dec1982d9b405be72c265f8"
- }
- Frame {
- msec: 784
- hash: "9f3d0a505dec1982d9b405be72c265f8"
- }
- Frame {
- msec: 800
- hash: "9f3d0a505dec1982d9b405be72c265f8"
- }
- Frame {
- msec: 816
- hash: "9f3d0a505dec1982d9b405be72c265f8"
- }
- Frame {
- msec: 832
- hash: "9f3d0a505dec1982d9b405be72c265f8"
- }
- Frame {
- msec: 848
- hash: "9f3d0a505dec1982d9b405be72c265f8"
- }
- Frame {
- msec: 864
- hash: "9f3d0a505dec1982d9b405be72c265f8"
- }
- Frame {
- msec: 880
- hash: "9f3d0a505dec1982d9b405be72c265f8"
- }
- Frame {
- msec: 896
- hash: "9f3d0a505dec1982d9b405be72c265f8"
- }
- Frame {
- msec: 912
- hash: "9f3d0a505dec1982d9b405be72c265f8"
- }
- Frame {
- msec: 928
- hash: "9f3d0a505dec1982d9b405be72c265f8"
- }
- Frame {
- msec: 944
- hash: "9f3d0a505dec1982d9b405be72c265f8"
- }
- Frame {
- msec: 960
- image: "plaintext.0.png"
- }
- Frame {
- msec: 976
- hash: "9f3d0a505dec1982d9b405be72c265f8"
- }
- Frame {
- msec: 992
- hash: "9f3d0a505dec1982d9b405be72c265f8"
- }
- Frame {
- msec: 1008
- hash: "9f3d0a505dec1982d9b405be72c265f8"
- }
- Frame {
- msec: 1024
- hash: "9f3d0a505dec1982d9b405be72c265f8"
- }
- Frame {
- msec: 1040
- hash: "9f3d0a505dec1982d9b405be72c265f8"
- }
- Frame {
- msec: 1056
- hash: "9f3d0a505dec1982d9b405be72c265f8"
- }
- Frame {
- msec: 1072
- hash: "9f3d0a505dec1982d9b405be72c265f8"
- }
- Frame {
- msec: 1088
- hash: "9f3d0a505dec1982d9b405be72c265f8"
- }
- Frame {
- msec: 1104
- hash: "9f3d0a505dec1982d9b405be72c265f8"
- }
- Frame {
- msec: 1120
- hash: "9f3d0a505dec1982d9b405be72c265f8"
- }
- Frame {
- msec: 1136
- hash: "9f3d0a505dec1982d9b405be72c265f8"
- }
- Frame {
- msec: 1152
- hash: "9f3d0a505dec1982d9b405be72c265f8"
- }
- Frame {
- msec: 1168
- hash: "9f3d0a505dec1982d9b405be72c265f8"
- }
- Frame {
- msec: 1184
- hash: "9f3d0a505dec1982d9b405be72c265f8"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 0
- text: ""
- autorep: false
- count: 1
- }
- Frame {
- msec: 1200
- hash: "9f3d0a505dec1982d9b405be72c265f8"
- }
- Frame {
- msec: 1216
- hash: "9f3d0a505dec1982d9b405be72c265f8"
- }
- Frame {
- msec: 1232
- hash: "9f3d0a505dec1982d9b405be72c265f8"
- }
- Frame {
- msec: 1248
- hash: "9f3d0a505dec1982d9b405be72c265f8"
- }
- Frame {
- msec: 1264
- hash: "9f3d0a505dec1982d9b405be72c265f8"
- }
- Frame {
- msec: 1280
- hash: "9f3d0a505dec1982d9b405be72c265f8"
- }
- Frame {
- msec: 1296
- hash: "9f3d0a505dec1982d9b405be72c265f8"
- }
- Frame {
- msec: 1312
- hash: "9f3d0a505dec1982d9b405be72c265f8"
- }
- Frame {
- msec: 1328
- hash: "9f3d0a505dec1982d9b405be72c265f8"
- }
- Frame {
- msec: 1344
- hash: "9f3d0a505dec1982d9b405be72c265f8"
- }
-}
diff --git a/tests/auto/declarative/visual/qfxtext/font/data-MAC/richtext.qml b/tests/auto/declarative/visual/qfxtext/font/data-MAC/richtext.qml
deleted file mode 100644
index e971809..0000000
--- a/tests/auto/declarative/visual/qfxtext/font/data-MAC/richtext.qml
+++ /dev/null
@@ -1,359 +0,0 @@
-import Qt.VisualTest 4.6
-
-VisualTest {
- Frame {
- msec: 0
- }
- Frame {
- msec: 16
- hash: "259cc9829171ea866dac4ffe8ef6b489"
- }
- Frame {
- msec: 32
- hash: "259cc9829171ea866dac4ffe8ef6b489"
- }
- Frame {
- msec: 48
- hash: "259cc9829171ea866dac4ffe8ef6b489"
- }
- Frame {
- msec: 64
- hash: "259cc9829171ea866dac4ffe8ef6b489"
- }
- Frame {
- msec: 80
- hash: "259cc9829171ea866dac4ffe8ef6b489"
- }
- Frame {
- msec: 96
- hash: "259cc9829171ea866dac4ffe8ef6b489"
- }
- Frame {
- msec: 112
- hash: "259cc9829171ea866dac4ffe8ef6b489"
- }
- Frame {
- msec: 128
- hash: "259cc9829171ea866dac4ffe8ef6b489"
- }
- Frame {
- msec: 144
- hash: "259cc9829171ea866dac4ffe8ef6b489"
- }
- Frame {
- msec: 160
- hash: "259cc9829171ea866dac4ffe8ef6b489"
- }
- Frame {
- msec: 176
- hash: "259cc9829171ea866dac4ffe8ef6b489"
- }
- Frame {
- msec: 192
- hash: "259cc9829171ea866dac4ffe8ef6b489"
- }
- Frame {
- msec: 208
- hash: "259cc9829171ea866dac4ffe8ef6b489"
- }
- Frame {
- msec: 224
- hash: "259cc9829171ea866dac4ffe8ef6b489"
- }
- Frame {
- msec: 240
- hash: "259cc9829171ea866dac4ffe8ef6b489"
- }
- Frame {
- msec: 256
- hash: "259cc9829171ea866dac4ffe8ef6b489"
- }
- Frame {
- msec: 272
- hash: "259cc9829171ea866dac4ffe8ef6b489"
- }
- Frame {
- msec: 288
- hash: "259cc9829171ea866dac4ffe8ef6b489"
- }
- Frame {
- msec: 304
- hash: "259cc9829171ea866dac4ffe8ef6b489"
- }
- Frame {
- msec: 320
- hash: "259cc9829171ea866dac4ffe8ef6b489"
- }
- Frame {
- msec: 336
- hash: "259cc9829171ea866dac4ffe8ef6b489"
- }
- Frame {
- msec: 352
- hash: "259cc9829171ea866dac4ffe8ef6b489"
- }
- Frame {
- msec: 368
- hash: "259cc9829171ea866dac4ffe8ef6b489"
- }
- Frame {
- msec: 384
- hash: "259cc9829171ea866dac4ffe8ef6b489"
- }
- Frame {
- msec: 400
- hash: "259cc9829171ea866dac4ffe8ef6b489"
- }
- Frame {
- msec: 416
- hash: "259cc9829171ea866dac4ffe8ef6b489"
- }
- Frame {
- msec: 432
- hash: "259cc9829171ea866dac4ffe8ef6b489"
- }
- Frame {
- msec: 448
- hash: "259cc9829171ea866dac4ffe8ef6b489"
- }
- Frame {
- msec: 464
- hash: "259cc9829171ea866dac4ffe8ef6b489"
- }
- Frame {
- msec: 480
- hash: "259cc9829171ea866dac4ffe8ef6b489"
- }
- Frame {
- msec: 496
- hash: "259cc9829171ea866dac4ffe8ef6b489"
- }
- Frame {
- msec: 512
- hash: "259cc9829171ea866dac4ffe8ef6b489"
- }
- Frame {
- msec: 528
- hash: "259cc9829171ea866dac4ffe8ef6b489"
- }
- Frame {
- msec: 544
- hash: "259cc9829171ea866dac4ffe8ef6b489"
- }
- Frame {
- msec: 560
- hash: "259cc9829171ea866dac4ffe8ef6b489"
- }
- Frame {
- msec: 576
- hash: "259cc9829171ea866dac4ffe8ef6b489"
- }
- Frame {
- msec: 592
- hash: "259cc9829171ea866dac4ffe8ef6b489"
- }
- Frame {
- msec: 608
- hash: "259cc9829171ea866dac4ffe8ef6b489"
- }
- Frame {
- msec: 624
- hash: "259cc9829171ea866dac4ffe8ef6b489"
- }
- Frame {
- msec: 640
- hash: "259cc9829171ea866dac4ffe8ef6b489"
- }
- Frame {
- msec: 656
- hash: "259cc9829171ea866dac4ffe8ef6b489"
- }
- Frame {
- msec: 672
- hash: "259cc9829171ea866dac4ffe8ef6b489"
- }
- Frame {
- msec: 688
- hash: "259cc9829171ea866dac4ffe8ef6b489"
- }
- Frame {
- msec: 704
- hash: "259cc9829171ea866dac4ffe8ef6b489"
- }
- Frame {
- msec: 720
- hash: "259cc9829171ea866dac4ffe8ef6b489"
- }
- Frame {
- msec: 736
- hash: "259cc9829171ea866dac4ffe8ef6b489"
- }
- Frame {
- msec: 752
- hash: "259cc9829171ea866dac4ffe8ef6b489"
- }
- Frame {
- msec: 768
- hash: "259cc9829171ea866dac4ffe8ef6b489"
- }
- Frame {
- msec: 784
- hash: "259cc9829171ea866dac4ffe8ef6b489"
- }
- Frame {
- msec: 800
- hash: "259cc9829171ea866dac4ffe8ef6b489"
- }
- Frame {
- msec: 816
- hash: "259cc9829171ea866dac4ffe8ef6b489"
- }
- Frame {
- msec: 832
- hash: "259cc9829171ea866dac4ffe8ef6b489"
- }
- Frame {
- msec: 848
- hash: "259cc9829171ea866dac4ffe8ef6b489"
- }
- Frame {
- msec: 864
- hash: "259cc9829171ea866dac4ffe8ef6b489"
- }
- Frame {
- msec: 880
- hash: "259cc9829171ea866dac4ffe8ef6b489"
- }
- Frame {
- msec: 896
- hash: "259cc9829171ea866dac4ffe8ef6b489"
- }
- Frame {
- msec: 912
- hash: "259cc9829171ea866dac4ffe8ef6b489"
- }
- Frame {
- msec: 928
- hash: "259cc9829171ea866dac4ffe8ef6b489"
- }
- Frame {
- msec: 944
- hash: "259cc9829171ea866dac4ffe8ef6b489"
- }
- Frame {
- msec: 960
- image: "richtext.0.png"
- }
- Frame {
- msec: 976
- hash: "259cc9829171ea866dac4ffe8ef6b489"
- }
- Frame {
- msec: 992
- hash: "259cc9829171ea866dac4ffe8ef6b489"
- }
- Frame {
- msec: 1008
- hash: "259cc9829171ea866dac4ffe8ef6b489"
- }
- Frame {
- msec: 1024
- hash: "259cc9829171ea866dac4ffe8ef6b489"
- }
- Frame {
- msec: 1040
- hash: "259cc9829171ea866dac4ffe8ef6b489"
- }
- Frame {
- msec: 1056
- hash: "259cc9829171ea866dac4ffe8ef6b489"
- }
- Frame {
- msec: 1072
- hash: "259cc9829171ea866dac4ffe8ef6b489"
- }
- Frame {
- msec: 1088
- hash: "259cc9829171ea866dac4ffe8ef6b489"
- }
- Frame {
- msec: 1104
- hash: "259cc9829171ea866dac4ffe8ef6b489"
- }
- Frame {
- msec: 1120
- hash: "259cc9829171ea866dac4ffe8ef6b489"
- }
- Frame {
- msec: 1136
- hash: "259cc9829171ea866dac4ffe8ef6b489"
- }
- Frame {
- msec: 1152
- hash: "259cc9829171ea866dac4ffe8ef6b489"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 0
- text: ""
- autorep: false
- count: 1
- }
- Frame {
- msec: 1168
- hash: "259cc9829171ea866dac4ffe8ef6b489"
- }
- Frame {
- msec: 1184
- hash: "259cc9829171ea866dac4ffe8ef6b489"
- }
- Frame {
- msec: 1200
- hash: "259cc9829171ea866dac4ffe8ef6b489"
- }
- Frame {
- msec: 1216
- hash: "259cc9829171ea866dac4ffe8ef6b489"
- }
- Frame {
- msec: 1232
- hash: "259cc9829171ea866dac4ffe8ef6b489"
- }
- Frame {
- msec: 1248
- hash: "259cc9829171ea866dac4ffe8ef6b489"
- }
- Frame {
- msec: 1264
- hash: "259cc9829171ea866dac4ffe8ef6b489"
- }
- Frame {
- msec: 1280
- hash: "259cc9829171ea866dac4ffe8ef6b489"
- }
- Frame {
- msec: 1296
- hash: "259cc9829171ea866dac4ffe8ef6b489"
- }
- Frame {
- msec: 1312
- hash: "259cc9829171ea866dac4ffe8ef6b489"
- }
- Frame {
- msec: 1328
- hash: "259cc9829171ea866dac4ffe8ef6b489"
- }
- Frame {
- msec: 1344
- hash: "259cc9829171ea866dac4ffe8ef6b489"
- }
- Frame {
- msec: 1360
- hash: "259cc9829171ea866dac4ffe8ef6b489"
- }
- Frame {
- msec: 1376
- hash: "259cc9829171ea866dac4ffe8ef6b489"
- }
-}
diff --git a/tests/auto/declarative/visual/qmlgraphicsflipable/data/test-flipable.0.png b/tests/auto/declarative/visual/qmlgraphicsflipable/data/test-flipable.0.png
new file mode 100644
index 0000000..3d5acbc
--- /dev/null
+++ b/tests/auto/declarative/visual/qmlgraphicsflipable/data/test-flipable.0.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qmlgraphicsflipable/data/test-flipable.1.png b/tests/auto/declarative/visual/qmlgraphicsflipable/data/test-flipable.1.png
new file mode 100644
index 0000000..bebb1aa
--- /dev/null
+++ b/tests/auto/declarative/visual/qmlgraphicsflipable/data/test-flipable.1.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qmlgraphicsflipable/data/test-flipable.2.png b/tests/auto/declarative/visual/qmlgraphicsflipable/data/test-flipable.2.png
new file mode 100644
index 0000000..d092053
--- /dev/null
+++ b/tests/auto/declarative/visual/qmlgraphicsflipable/data/test-flipable.2.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qmlgraphicsflipable/data/test-flipable.3.png b/tests/auto/declarative/visual/qmlgraphicsflipable/data/test-flipable.3.png
new file mode 100644
index 0000000..aa79f8b
--- /dev/null
+++ b/tests/auto/declarative/visual/qmlgraphicsflipable/data/test-flipable.3.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qmlgraphicsflipable/data/test-flipable.4.png b/tests/auto/declarative/visual/qmlgraphicsflipable/data/test-flipable.4.png
new file mode 100644
index 0000000..98e8817
--- /dev/null
+++ b/tests/auto/declarative/visual/qmlgraphicsflipable/data/test-flipable.4.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qmlgraphicsflipable/data/test-flipable.5.png b/tests/auto/declarative/visual/qmlgraphicsflipable/data/test-flipable.5.png
new file mode 100644
index 0000000..a3f9d8f
--- /dev/null
+++ b/tests/auto/declarative/visual/qmlgraphicsflipable/data/test-flipable.5.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qmlgraphicsflipable/data/test-flipable.qml b/tests/auto/declarative/visual/qmlgraphicsflipable/data/test-flipable.qml
new file mode 100644
index 0000000..5464d01
--- /dev/null
+++ b/tests/auto/declarative/visual/qmlgraphicsflipable/data/test-flipable.qml
@@ -0,0 +1,1623 @@
+import Qt.VisualTest 4.6
+
+VisualTest {
+ Frame {
+ msec: 0
+ }
+ Frame {
+ msec: 16
+ hash: "7e16e6360fc2e9db67dbf11d58042745"
+ }
+ Frame {
+ msec: 32
+ hash: "7e16e6360fc2e9db67dbf11d58042745"
+ }
+ Frame {
+ msec: 48
+ hash: "7e16e6360fc2e9db67dbf11d58042745"
+ }
+ Frame {
+ msec: 64
+ hash: "7e16e6360fc2e9db67dbf11d58042745"
+ }
+ Frame {
+ msec: 80
+ hash: "7e16e6360fc2e9db67dbf11d58042745"
+ }
+ Frame {
+ msec: 96
+ hash: "7e16e6360fc2e9db67dbf11d58042745"
+ }
+ Frame {
+ msec: 112
+ hash: "7e16e6360fc2e9db67dbf11d58042745"
+ }
+ Frame {
+ msec: 128
+ hash: "9becb90d9f8a61f5afacdc53d137ebcb"
+ }
+ Frame {
+ msec: 144
+ hash: "9becb90d9f8a61f5afacdc53d137ebcb"
+ }
+ Frame {
+ msec: 160
+ hash: "9becb90d9f8a61f5afacdc53d137ebcb"
+ }
+ Frame {
+ msec: 176
+ hash: "9becb90d9f8a61f5afacdc53d137ebcb"
+ }
+ Frame {
+ msec: 192
+ hash: "9becb90d9f8a61f5afacdc53d137ebcb"
+ }
+ Frame {
+ msec: 208
+ hash: "9becb90d9f8a61f5afacdc53d137ebcb"
+ }
+ Frame {
+ msec: 224
+ hash: "90fb4e4ba04ac32b52c10b3258431c04"
+ }
+ Frame {
+ msec: 240
+ hash: "90fb4e4ba04ac32b52c10b3258431c04"
+ }
+ Frame {
+ msec: 256
+ hash: "90fb4e4ba04ac32b52c10b3258431c04"
+ }
+ Frame {
+ msec: 272
+ hash: "73c06997014af4e008b546b53fe349fb"
+ }
+ Frame {
+ msec: 288
+ hash: "73c06997014af4e008b546b53fe349fb"
+ }
+ Frame {
+ msec: 304
+ hash: "73c06997014af4e008b546b53fe349fb"
+ }
+ Frame {
+ msec: 320
+ hash: "451a9408b04826ab35749d9120efd6bb"
+ }
+ Frame {
+ msec: 336
+ hash: "451a9408b04826ab35749d9120efd6bb"
+ }
+ Frame {
+ msec: 352
+ hash: "1c25b3d65e8590f8c213afa76b722e97"
+ }
+ Frame {
+ msec: 368
+ hash: "1c25b3d65e8590f8c213afa76b722e97"
+ }
+ Frame {
+ msec: 384
+ hash: "1c25b3d65e8590f8c213afa76b722e97"
+ }
+ Frame {
+ msec: 400
+ hash: "e64fa5eba05f81e6f263dc8543f21b1a"
+ }
+ Frame {
+ msec: 416
+ hash: "e64fa5eba05f81e6f263dc8543f21b1a"
+ }
+ Frame {
+ msec: 432
+ hash: "845581f8d03f4fe9323fc282e84f919b"
+ }
+ Frame {
+ msec: 448
+ hash: "845581f8d03f4fe9323fc282e84f919b"
+ }
+ Frame {
+ msec: 464
+ hash: "136fb272f4d806927b46a1269b18f63d"
+ }
+ Frame {
+ msec: 480
+ hash: "8532ee7ce3488f9e038643e4fa48751d"
+ }
+ Frame {
+ msec: 496
+ hash: "8532ee7ce3488f9e038643e4fa48751d"
+ }
+ Frame {
+ msec: 512
+ hash: "af5f794f73e16a5c3b9e437418c873ee"
+ }
+ Frame {
+ msec: 528
+ hash: "af5f794f73e16a5c3b9e437418c873ee"
+ }
+ Frame {
+ msec: 544
+ hash: "d75e53f2cea8e9b61a5e50f95060552e"
+ }
+ Frame {
+ msec: 560
+ hash: "0374aae76f8cfd75f119ff4b86dba817"
+ }
+ Frame {
+ msec: 576
+ hash: "d36e1a56078d7cfa246b57f886c230b4"
+ }
+ Frame {
+ msec: 592
+ hash: "d36e1a56078d7cfa246b57f886c230b4"
+ }
+ Frame {
+ msec: 608
+ hash: "30692e6658ac730670a489c880fd4485"
+ }
+ Frame {
+ msec: 624
+ hash: "3aace4dc5bc503ed0df1b00b444780f0"
+ }
+ Frame {
+ msec: 640
+ hash: "b6936d72cbaff0c6bb64fc08152e8680"
+ }
+ Frame {
+ msec: 656
+ hash: "b6936d72cbaff0c6bb64fc08152e8680"
+ }
+ Frame {
+ msec: 672
+ hash: "8beee45f26f9f7b94b84a807a0c42217"
+ }
+ Frame {
+ msec: 688
+ hash: "80529f6b8d12838b58c4af73c1985792"
+ }
+ Frame {
+ msec: 704
+ hash: "967f7e4f58a8e29b5d76eac011af643d"
+ }
+ Frame {
+ msec: 720
+ hash: "395863cffd5440b0a4805975b766a3cf"
+ }
+ Frame {
+ msec: 736
+ hash: "f9c919f45316d93d2c8693b62930850f"
+ }
+ Frame {
+ msec: 752
+ hash: "cf8ffc1132935b5df49da90953009fa0"
+ }
+ Frame {
+ msec: 768
+ hash: "8e44d6cf4c29313352ad0118db003958"
+ }
+ Frame {
+ msec: 784
+ hash: "31ca6f5b62fd8c08fa17b1008c4e6a22"
+ }
+ Frame {
+ msec: 800
+ hash: "96773abcace99ba692a5be096df85a54"
+ }
+ Frame {
+ msec: 816
+ hash: "e92daff761c739f231ba2c05785c44fb"
+ }
+ Frame {
+ msec: 832
+ hash: "c1b1056ef06a0454680f2146bb87a56b"
+ }
+ Frame {
+ msec: 848
+ hash: "dc02f4f6b0ff1572a64fd133819fd794"
+ }
+ Frame {
+ msec: 864
+ hash: "9f87d4d33942d32a4048ca2b785a1fed"
+ }
+ Frame {
+ msec: 880
+ hash: "57d989f52d8bee06694166bf8bdffef0"
+ }
+ Frame {
+ msec: 896
+ hash: "09c3602a08d6d3e2afb654c328606871"
+ }
+ Frame {
+ msec: 912
+ hash: "b075ae21dbd3acef5c4d0f11cadce3c9"
+ }
+ Frame {
+ msec: 928
+ hash: "d54b5b295a9ca2bc65131a0775d8d009"
+ }
+ Frame {
+ msec: 944
+ hash: "599b244ff9b4ddceb682a059338f6f97"
+ }
+ Frame {
+ msec: 960
+ image: "test-flipable.0.png"
+ }
+ Frame {
+ msec: 976
+ hash: "9fd5a0f023f89511bdd4b7e429f940ab"
+ }
+ Frame {
+ msec: 992
+ hash: "ad18f401dc07032ffc52b90fd5581319"
+ }
+ Frame {
+ msec: 1008
+ hash: "b12cbf8e97bc48e12d9543ffc1c578a2"
+ }
+ Frame {
+ msec: 1024
+ hash: "7c9895dae776c2a4a6d5e1dd50d86336"
+ }
+ Frame {
+ msec: 1040
+ hash: "ebd8018990ce867c3308121dccbfc1bc"
+ }
+ Frame {
+ msec: 1056
+ hash: "4818f99e2f71c0ec7636aa777f4df875"
+ }
+ Frame {
+ msec: 1072
+ hash: "09371a634d7801742075aadc131b5fb6"
+ }
+ Frame {
+ msec: 1088
+ hash: "e03e96eaa2640cf6d820d9992c0c51f4"
+ }
+ Frame {
+ msec: 1104
+ hash: "daf19227a7e51e437d0a13fdf8b1a26f"
+ }
+ Frame {
+ msec: 1120
+ hash: "539ccebf96da504f0c5dfe5496ed95ce"
+ }
+ Frame {
+ msec: 1136
+ hash: "63d851b3a8758e4cd95624b44cf9e7c9"
+ }
+ Frame {
+ msec: 1152
+ hash: "8ee67f06977858444a775ca8c5109411"
+ }
+ Frame {
+ msec: 1168
+ hash: "44849e7b8cc8d187da234daba784bc6e"
+ }
+ Frame {
+ msec: 1184
+ hash: "ec9892a5602892ba5a2075b61672d91b"
+ }
+ Frame {
+ msec: 1200
+ hash: "b12aec87daa7c09276ae5d4b619276a1"
+ }
+ Frame {
+ msec: 1216
+ hash: "816d9d278fecde0867efadae2c4b5839"
+ }
+ Frame {
+ msec: 1232
+ hash: "65daf0b21f860cb87c28a11c3d947f3b"
+ }
+ Frame {
+ msec: 1248
+ hash: "f3bc5c605ac0cb287e8c1d1cb58d85ca"
+ }
+ Frame {
+ msec: 1264
+ hash: "2988cc8030891abd7493294fc2c6964c"
+ }
+ Frame {
+ msec: 1280
+ hash: "cbfc98561559f3aa8bdec7c40da559c0"
+ }
+ Frame {
+ msec: 1296
+ hash: "636335822b15f32861696439773e1794"
+ }
+ Frame {
+ msec: 1312
+ hash: "3fbb7a8920ff95fce7bfefcb540c6de8"
+ }
+ Frame {
+ msec: 1328
+ hash: "4036080b6aafa72e5310ce33615ff8f8"
+ }
+ Frame {
+ msec: 1344
+ hash: "48fb5685e63e81f1790f5481bc06dac4"
+ }
+ Frame {
+ msec: 1360
+ hash: "f1f58f0eebbffc3b389c6669c5419081"
+ }
+ Frame {
+ msec: 1376
+ hash: "5481248e889fb4fe9f4cf54f69d9f614"
+ }
+ Frame {
+ msec: 1392
+ hash: "efbf81fc1db57a6020fcfe97077233b7"
+ }
+ Frame {
+ msec: 1408
+ hash: "67ff11e6143718c95418f4851265081e"
+ }
+ Frame {
+ msec: 1424
+ hash: "a403ec3d25e73b557ba08aa903cb9006"
+ }
+ Frame {
+ msec: 1440
+ hash: "293b9f1cc31af93f22b4c1369567c4ba"
+ }
+ Frame {
+ msec: 1456
+ hash: "8ff7cee41c6f19eeda417052c1b071d6"
+ }
+ Frame {
+ msec: 1472
+ hash: "cd8d4484158d7dcdc7662ea8c8daea07"
+ }
+ Frame {
+ msec: 1488
+ hash: "b991e62a7d6751bdd3e2d690e690821c"
+ }
+ Frame {
+ msec: 1504
+ hash: "c60aca5007dadc628f242db9d593cf1f"
+ }
+ Frame {
+ msec: 1520
+ hash: "e78af45d2042130a9d34b654157a9ada"
+ }
+ Frame {
+ msec: 1536
+ hash: "cc35b2fcc585191d3f46840fdcacc94f"
+ }
+ Frame {
+ msec: 1552
+ hash: "9e33a9f73e1019e7d694d108fd95f2ad"
+ }
+ Frame {
+ msec: 1568
+ hash: "f08adfe4286703702c9393a905ec01d2"
+ }
+ Frame {
+ msec: 1584
+ hash: "56bdfcb8fbb776b3799676ba7934a354"
+ }
+ Frame {
+ msec: 1600
+ hash: "da3b8e41b9639bb71cf95b671d8a2c63"
+ }
+ Frame {
+ msec: 1616
+ hash: "92855bf2208369f361b677bc66e9c79d"
+ }
+ Frame {
+ msec: 1632
+ hash: "e5403ff384dca3c10b091e166160624f"
+ }
+ Frame {
+ msec: 1648
+ hash: "932b5ebeaa4576575179b04a4c131ef5"
+ }
+ Frame {
+ msec: 1664
+ hash: "37a23d4a895fa83226f66736caa87281"
+ }
+ Frame {
+ msec: 1680
+ hash: "f6926e493dfd7deee613cf9bb7529f5e"
+ }
+ Frame {
+ msec: 1696
+ hash: "338e40ae3e047cf7731377fc1b4d3cb7"
+ }
+ Frame {
+ msec: 1712
+ hash: "0dfdd9a1d83a706a09318c83fd08b6fe"
+ }
+ Frame {
+ msec: 1728
+ hash: "4487366ee7ec1e0fdafc88cfa82e7977"
+ }
+ Frame {
+ msec: 1744
+ hash: "28f0b7824b5bb311d46c94afa7d7bb66"
+ }
+ Frame {
+ msec: 1760
+ hash: "34b15e5a3602fd7bf2f217c308fa5d09"
+ }
+ Frame {
+ msec: 1776
+ hash: "667b9286f32fe43a0cb5d65cdfa965cd"
+ }
+ Frame {
+ msec: 1792
+ hash: "629888aae80ea85db07a383df352214a"
+ }
+ Frame {
+ msec: 1808
+ hash: "9afbd09687efa09eb3b03570bf8be531"
+ }
+ Frame {
+ msec: 1824
+ hash: "0e1dac5b9d2a0acab1516d01a286a0ec"
+ }
+ Frame {
+ msec: 1840
+ hash: "dd058795bd3957d02dc296419c17819c"
+ }
+ Frame {
+ msec: 1856
+ hash: "158618e8529cba8531183b2f72e90340"
+ }
+ Frame {
+ msec: 1872
+ hash: "c9062e6405b3b7fd0b2a794119220b1d"
+ }
+ Frame {
+ msec: 1888
+ hash: "8dadb6da9f12dac689406a43e7e61bea"
+ }
+ Frame {
+ msec: 1904
+ hash: "fd66704ce98410a7b1dd69f7cd6ddd26"
+ }
+ Frame {
+ msec: 1920
+ image: "test-flipable.1.png"
+ }
+ Frame {
+ msec: 1936
+ hash: "d4a21104b4f8044486fbe6516e4ae7b5"
+ }
+ Frame {
+ msec: 1952
+ hash: "20fd373c13d4d06b9105c80ed6f4edb7"
+ }
+ Frame {
+ msec: 1968
+ hash: "ff9bc1aa538b69e72ed1a501ea0d56de"
+ }
+ Frame {
+ msec: 1984
+ hash: "3f3d5f3ca770b84e86fea3188e082493"
+ }
+ Frame {
+ msec: 2000
+ hash: "fe7de3d2083208993e527b13ae7edadd"
+ }
+ Frame {
+ msec: 2016
+ hash: "b5f7c630f6e61c7ddac8493e17a1f53e"
+ }
+ Frame {
+ msec: 2032
+ hash: "c80d37b370a4ada6217c81f5e82ecd6f"
+ }
+ Frame {
+ msec: 2048
+ hash: "84051de621753e12e3e11316d14dfe73"
+ }
+ Frame {
+ msec: 2064
+ hash: "fd238f83a26ed8c2cee3e3d042af903b"
+ }
+ Frame {
+ msec: 2080
+ hash: "949d2ed3e1d1c674e77ef3c8a6b779ba"
+ }
+ Frame {
+ msec: 2096
+ hash: "42f602bcd7b517cf16554a88998d16a8"
+ }
+ Frame {
+ msec: 2112
+ hash: "318bd97d726826398887ff218e61df32"
+ }
+ Frame {
+ msec: 2128
+ hash: "5a0699f422475f0d3f17cddb606b4715"
+ }
+ Frame {
+ msec: 2144
+ hash: "3eb8e765ff9f38fd56a69a8bc2d534c3"
+ }
+ Frame {
+ msec: 2160
+ hash: "dd548f565a0787789ec13e141f808b11"
+ }
+ Frame {
+ msec: 2176
+ hash: "a78a6a9f014b8c2e7a202b80e6c2e09f"
+ }
+ Frame {
+ msec: 2192
+ hash: "3d0ff083b6f1f994caa660016245876d"
+ }
+ Frame {
+ msec: 2208
+ hash: "ce6a7491571ce3d5799791579428b615"
+ }
+ Frame {
+ msec: 2224
+ hash: "67e700035648fd5354ec0806a412be89"
+ }
+ Frame {
+ msec: 2240
+ hash: "b03f1bfe2bdbf52aae0dff6ae4821914"
+ }
+ Frame {
+ msec: 2256
+ hash: "4d75ac3064288c3a56e9fd6ed6022fc6"
+ }
+ Frame {
+ msec: 2272
+ hash: "dc6677725f6bf0bdcab25287a096a0e6"
+ }
+ Frame {
+ msec: 2288
+ hash: "827e5e274fb331c6f9997172894b1f4d"
+ }
+ Frame {
+ msec: 2304
+ hash: "c3cf3b3968441b735684fc6e55ebb1ce"
+ }
+ Frame {
+ msec: 2320
+ hash: "01eebde46aff9d7484cffb0b0d27c415"
+ }
+ Frame {
+ msec: 2336
+ hash: "614ad3481a993b5ff5ec008aa3d4751f"
+ }
+ Frame {
+ msec: 2352
+ hash: "614ad3481a993b5ff5ec008aa3d4751f"
+ }
+ Frame {
+ msec: 2368
+ hash: "2f253dcdbe2fabc768cdd5bfa8004a36"
+ }
+ Frame {
+ msec: 2384
+ hash: "90b130853f8e28a01c90825c412f98b9"
+ }
+ Frame {
+ msec: 2400
+ hash: "567bf7684e4b2f76715bcc588a2b7dfb"
+ }
+ Frame {
+ msec: 2416
+ hash: "63412cfccdd8646530ebdb37eba16ee9"
+ }
+ Frame {
+ msec: 2432
+ hash: "63412cfccdd8646530ebdb37eba16ee9"
+ }
+ Frame {
+ msec: 2448
+ hash: "e1c5381a621dfe50e4b04d881ce2c4b7"
+ }
+ Frame {
+ msec: 2464
+ hash: "553bff0aa031ed1279170c19bf024539"
+ }
+ Frame {
+ msec: 2480
+ hash: "2b8c079d8526ce4d0640014cca38c6b8"
+ }
+ Frame {
+ msec: 2496
+ hash: "2b8c079d8526ce4d0640014cca38c6b8"
+ }
+ Frame {
+ msec: 2512
+ hash: "ac356478635b5d34001a50997eb3c82c"
+ }
+ Frame {
+ msec: 2528
+ hash: "ac356478635b5d34001a50997eb3c82c"
+ }
+ Frame {
+ msec: 2544
+ hash: "93d64e7bec7d9e254066d79c0db41f28"
+ }
+ Frame {
+ msec: 2560
+ hash: "010ec13762826006a1dbf60b8c4660c9"
+ }
+ Frame {
+ msec: 2576
+ hash: "010ec13762826006a1dbf60b8c4660c9"
+ }
+ Frame {
+ msec: 2592
+ hash: "2f882016d4e3e29ec6689cfa1189e00e"
+ }
+ Frame {
+ msec: 2608
+ hash: "2f882016d4e3e29ec6689cfa1189e00e"
+ }
+ Frame {
+ msec: 2624
+ hash: "676f8aba3379c9935b9bd269bd140cf2"
+ }
+ Frame {
+ msec: 2640
+ hash: "676f8aba3379c9935b9bd269bd140cf2"
+ }
+ Frame {
+ msec: 2656
+ hash: "78e0dca60c04d3defbd90457685dbab3"
+ }
+ Frame {
+ msec: 2672
+ hash: "78e0dca60c04d3defbd90457685dbab3"
+ }
+ Frame {
+ msec: 2688
+ hash: "0ff9fd6b09fc14abacb794353b9500f6"
+ }
+ Frame {
+ msec: 2704
+ hash: "0ff9fd6b09fc14abacb794353b9500f6"
+ }
+ Frame {
+ msec: 2720
+ hash: "0ff9fd6b09fc14abacb794353b9500f6"
+ }
+ Frame {
+ msec: 2736
+ hash: "6d813ee777a5900c65aca5939c004d0c"
+ }
+ Frame {
+ msec: 2752
+ hash: "6d813ee777a5900c65aca5939c004d0c"
+ }
+ Frame {
+ msec: 2768
+ hash: "0acaa3ece071ad4461cf4a79d65a0f03"
+ }
+ Frame {
+ msec: 2784
+ hash: "0acaa3ece071ad4461cf4a79d65a0f03"
+ }
+ Frame {
+ msec: 2800
+ hash: "0acaa3ece071ad4461cf4a79d65a0f03"
+ }
+ Frame {
+ msec: 2816
+ hash: "0acaa3ece071ad4461cf4a79d65a0f03"
+ }
+ Frame {
+ msec: 2832
+ hash: "b2ef52b66896649413b3852bcf642e1c"
+ }
+ Frame {
+ msec: 2848
+ hash: "b2ef52b66896649413b3852bcf642e1c"
+ }
+ Frame {
+ msec: 2864
+ hash: "b2ef52b66896649413b3852bcf642e1c"
+ }
+ Frame {
+ msec: 2880
+ image: "test-flipable.2.png"
+ }
+ Frame {
+ msec: 2896
+ hash: "b2ef52b66896649413b3852bcf642e1c"
+ }
+ Frame {
+ msec: 2912
+ hash: "1daeebce8e7eef80b135d2e4f83f780b"
+ }
+ Frame {
+ msec: 2928
+ hash: "1daeebce8e7eef80b135d2e4f83f780b"
+ }
+ Frame {
+ msec: 2944
+ hash: "1daeebce8e7eef80b135d2e4f83f780b"
+ }
+ Frame {
+ msec: 2960
+ hash: "1daeebce8e7eef80b135d2e4f83f780b"
+ }
+ Frame {
+ msec: 2976
+ hash: "1daeebce8e7eef80b135d2e4f83f780b"
+ }
+ Frame {
+ msec: 2992
+ hash: "1daeebce8e7eef80b135d2e4f83f780b"
+ }
+ Frame {
+ msec: 3008
+ hash: "1daeebce8e7eef80b135d2e4f83f780b"
+ }
+ Frame {
+ msec: 3024
+ hash: "1daeebce8e7eef80b135d2e4f83f780b"
+ }
+ Frame {
+ msec: 3040
+ hash: "1daeebce8e7eef80b135d2e4f83f780b"
+ }
+ Frame {
+ msec: 3056
+ hash: "1daeebce8e7eef80b135d2e4f83f780b"
+ }
+ Frame {
+ msec: 3072
+ hash: "1daeebce8e7eef80b135d2e4f83f780b"
+ }
+ Frame {
+ msec: 3088
+ hash: "1daeebce8e7eef80b135d2e4f83f780b"
+ }
+ Frame {
+ msec: 3104
+ hash: "1daeebce8e7eef80b135d2e4f83f780b"
+ }
+ Frame {
+ msec: 3120
+ hash: "1daeebce8e7eef80b135d2e4f83f780b"
+ }
+ Frame {
+ msec: 3136
+ hash: "b2ef52b66896649413b3852bcf642e1c"
+ }
+ Frame {
+ msec: 3152
+ hash: "b2ef52b66896649413b3852bcf642e1c"
+ }
+ Frame {
+ msec: 3168
+ hash: "b2ef52b66896649413b3852bcf642e1c"
+ }
+ Frame {
+ msec: 3184
+ hash: "b2ef52b66896649413b3852bcf642e1c"
+ }
+ Frame {
+ msec: 3200
+ hash: "b2ef52b66896649413b3852bcf642e1c"
+ }
+ Frame {
+ msec: 3216
+ hash: "b2ef52b66896649413b3852bcf642e1c"
+ }
+ Frame {
+ msec: 3232
+ hash: "0acaa3ece071ad4461cf4a79d65a0f03"
+ }
+ Frame {
+ msec: 3248
+ hash: "0acaa3ece071ad4461cf4a79d65a0f03"
+ }
+ Frame {
+ msec: 3264
+ hash: "0acaa3ece071ad4461cf4a79d65a0f03"
+ }
+ Frame {
+ msec: 3280
+ hash: "6d813ee777a5900c65aca5939c004d0c"
+ }
+ Frame {
+ msec: 3296
+ hash: "6d813ee777a5900c65aca5939c004d0c"
+ }
+ Frame {
+ msec: 3312
+ hash: "6d813ee777a5900c65aca5939c004d0c"
+ }
+ Frame {
+ msec: 3328
+ hash: "0ff9fd6b09fc14abacb794353b9500f6"
+ }
+ Frame {
+ msec: 3344
+ hash: "0ff9fd6b09fc14abacb794353b9500f6"
+ }
+ Frame {
+ msec: 3360
+ hash: "78e0dca60c04d3defbd90457685dbab3"
+ }
+ Frame {
+ msec: 3376
+ hash: "78e0dca60c04d3defbd90457685dbab3"
+ }
+ Frame {
+ msec: 3392
+ hash: "78e0dca60c04d3defbd90457685dbab3"
+ }
+ Frame {
+ msec: 3408
+ hash: "676f8aba3379c9935b9bd269bd140cf2"
+ }
+ Frame {
+ msec: 3424
+ hash: "676f8aba3379c9935b9bd269bd140cf2"
+ }
+ Frame {
+ msec: 3440
+ hash: "2f882016d4e3e29ec6689cfa1189e00e"
+ }
+ Frame {
+ msec: 3456
+ hash: "2f882016d4e3e29ec6689cfa1189e00e"
+ }
+ Frame {
+ msec: 3472
+ hash: "010ec13762826006a1dbf60b8c4660c9"
+ }
+ Frame {
+ msec: 3488
+ hash: "93d64e7bec7d9e254066d79c0db41f28"
+ }
+ Frame {
+ msec: 3504
+ hash: "93d64e7bec7d9e254066d79c0db41f28"
+ }
+ Frame {
+ msec: 3520
+ hash: "ac356478635b5d34001a50997eb3c82c"
+ }
+ Frame {
+ msec: 3536
+ hash: "ac356478635b5d34001a50997eb3c82c"
+ }
+ Frame {
+ msec: 3552
+ hash: "2b8c079d8526ce4d0640014cca38c6b8"
+ }
+ Frame {
+ msec: 3568
+ hash: "553bff0aa031ed1279170c19bf024539"
+ }
+ Frame {
+ msec: 3584
+ hash: "e1c5381a621dfe50e4b04d881ce2c4b7"
+ }
+ Frame {
+ msec: 3600
+ hash: "e1c5381a621dfe50e4b04d881ce2c4b7"
+ }
+ Frame {
+ msec: 3616
+ hash: "63412cfccdd8646530ebdb37eba16ee9"
+ }
+ Frame {
+ msec: 3632
+ hash: "567bf7684e4b2f76715bcc588a2b7dfb"
+ }
+ Frame {
+ msec: 3648
+ hash: "90b130853f8e28a01c90825c412f98b9"
+ }
+ Frame {
+ msec: 3664
+ hash: "90b130853f8e28a01c90825c412f98b9"
+ }
+ Frame {
+ msec: 3680
+ hash: "2f253dcdbe2fabc768cdd5bfa8004a36"
+ }
+ Frame {
+ msec: 3696
+ hash: "614ad3481a993b5ff5ec008aa3d4751f"
+ }
+ Frame {
+ msec: 3712
+ hash: "01eebde46aff9d7484cffb0b0d27c415"
+ }
+ Frame {
+ msec: 3728
+ hash: "c3cf3b3968441b735684fc6e55ebb1ce"
+ }
+ Frame {
+ msec: 3744
+ hash: "827e5e274fb331c6f9997172894b1f4d"
+ }
+ Frame {
+ msec: 3760
+ hash: "dc6677725f6bf0bdcab25287a096a0e6"
+ }
+ Frame {
+ msec: 3776
+ hash: "4d75ac3064288c3a56e9fd6ed6022fc6"
+ }
+ Frame {
+ msec: 3792
+ hash: "b03f1bfe2bdbf52aae0dff6ae4821914"
+ }
+ Frame {
+ msec: 3808
+ hash: "67e700035648fd5354ec0806a412be89"
+ }
+ Frame {
+ msec: 3824
+ hash: "ce6a7491571ce3d5799791579428b615"
+ }
+ Frame {
+ msec: 3840
+ image: "test-flipable.3.png"
+ }
+ Frame {
+ msec: 3856
+ hash: "a78a6a9f014b8c2e7a202b80e6c2e09f"
+ }
+ Frame {
+ msec: 3872
+ hash: "dd548f565a0787789ec13e141f808b11"
+ }
+ Frame {
+ msec: 3888
+ hash: "3eb8e765ff9f38fd56a69a8bc2d534c3"
+ }
+ Frame {
+ msec: 3904
+ hash: "9729b36fe9dbabf0c46e78b723885530"
+ }
+ Frame {
+ msec: 3920
+ hash: "5a0699f422475f0d3f17cddb606b4715"
+ }
+ Frame {
+ msec: 3936
+ hash: "318bd97d726826398887ff218e61df32"
+ }
+ Frame {
+ msec: 3952
+ hash: "42f602bcd7b517cf16554a88998d16a8"
+ }
+ Frame {
+ msec: 3968
+ hash: "fd238f83a26ed8c2cee3e3d042af903b"
+ }
+ Frame {
+ msec: 3984
+ hash: "84051de621753e12e3e11316d14dfe73"
+ }
+ Frame {
+ msec: 4000
+ hash: "0c6d27488abbfd4f1ee4570a33a2c89e"
+ }
+ Frame {
+ msec: 4016
+ hash: "c80d37b370a4ada6217c81f5e82ecd6f"
+ }
+ Frame {
+ msec: 4032
+ hash: "fe7de3d2083208993e527b13ae7edadd"
+ }
+ Frame {
+ msec: 4048
+ hash: "e5b616cefec125e8ad714d0c739ff902"
+ }
+ Frame {
+ msec: 4064
+ hash: "3f3d5f3ca770b84e86fea3188e082493"
+ }
+ Frame {
+ msec: 4080
+ hash: "20fd373c13d4d06b9105c80ed6f4edb7"
+ }
+ Frame {
+ msec: 4096
+ hash: "2d6f6cf66bbd50a6546bc54e5aa91fb8"
+ }
+ Frame {
+ msec: 4112
+ hash: "d4a21104b4f8044486fbe6516e4ae7b5"
+ }
+ Frame {
+ msec: 4128
+ hash: "fd66704ce98410a7b1dd69f7cd6ddd26"
+ }
+ Frame {
+ msec: 4144
+ hash: "33dcba73c46fa6513d4241e9cc75c417"
+ }
+ Frame {
+ msec: 4160
+ hash: "c9062e6405b3b7fd0b2a794119220b1d"
+ }
+ Frame {
+ msec: 4176
+ hash: "c1663c9ad895d67981a170f6b67a5331"
+ }
+ Frame {
+ msec: 4192
+ hash: "dd058795bd3957d02dc296419c17819c"
+ }
+ Frame {
+ msec: 4208
+ hash: "7cf357d1eb96e65f30a0cb4b7315b2f7"
+ }
+ Frame {
+ msec: 4224
+ hash: "9afbd09687efa09eb3b03570bf8be531"
+ }
+ Frame {
+ msec: 4240
+ hash: "321d29c57276959e095c5cb9366daf03"
+ }
+ Frame {
+ msec: 4256
+ hash: "238c029a6be60ca4e1909d4f1de5633b"
+ }
+ Frame {
+ msec: 4272
+ hash: "667b9286f32fe43a0cb5d65cdfa965cd"
+ }
+ Frame {
+ msec: 4288
+ hash: "51bcca29caecbd92264f271818c400b8"
+ }
+ Frame {
+ msec: 4304
+ hash: "4487366ee7ec1e0fdafc88cfa82e7977"
+ }
+ Frame {
+ msec: 4320
+ hash: "f3cafcdab8b47c44dcc2222b9021f253"
+ }
+ Frame {
+ msec: 4336
+ hash: "e8d25d1b5ea3f580cb46be911ea73556"
+ }
+ Frame {
+ msec: 4352
+ hash: "f6926e493dfd7deee613cf9bb7529f5e"
+ }
+ Frame {
+ msec: 4368
+ hash: "44e2f675f37feb23b53e58fc356a17aa"
+ }
+ Frame {
+ msec: 4384
+ hash: "384478653302b604590c137d1e7289fe"
+ }
+ Frame {
+ msec: 4400
+ hash: "fccc582ba920db36e797bdd7c4c329e5"
+ }
+ Frame {
+ msec: 4416
+ hash: "92855bf2208369f361b677bc66e9c79d"
+ }
+ Frame {
+ msec: 4432
+ hash: "9fc85a4e179b73bb5e92ed982ee13ee7"
+ }
+ Frame {
+ msec: 4448
+ hash: "46e199e3311bf5643e4da28c1f1c687a"
+ }
+ Frame {
+ msec: 4464
+ hash: "9d8a56893bf62535654fadd8b8a04977"
+ }
+ Frame {
+ msec: 4480
+ hash: "b97e5629f4e9e2617e69361a0ca7f84a"
+ }
+ Frame {
+ msec: 4496
+ hash: "eea82c42aa4eb22b2a3c5f1eb5a78d53"
+ }
+ Frame {
+ msec: 4512
+ hash: "49d9c74894e3f1a5b03c126963296ecb"
+ }
+ Frame {
+ msec: 4528
+ hash: "e78af45d2042130a9d34b654157a9ada"
+ }
+ Frame {
+ msec: 4544
+ hash: "831fbf842a9107100ed7c91d664edaff"
+ }
+ Frame {
+ msec: 4560
+ hash: "d1af7a53eef0b7dcb3da095bba7cdc12"
+ }
+ Frame {
+ msec: 4576
+ hash: "8a02f7d3d53e98384d1f05dc7fc5fd37"
+ }
+ Frame {
+ msec: 4592
+ hash: "6af3a8305b25a9a769b8cf00479c6ab3"
+ }
+ Frame {
+ msec: 4608
+ hash: "f91c42910b17cb19be33a277b03e1cd2"
+ }
+ Frame {
+ msec: 4624
+ hash: "67ff11e6143718c95418f4851265081e"
+ }
+ Frame {
+ msec: 4640
+ hash: "e8dc4593c974902337ea7d58f26bae4c"
+ }
+ Frame {
+ msec: 4656
+ hash: "9176a3f857d73d626bfba01878c5f213"
+ }
+ Frame {
+ msec: 4672
+ hash: "08c7f417093c9e9da70c027ee12b0840"
+ }
+ Frame {
+ msec: 4688
+ hash: "48fb5685e63e81f1790f5481bc06dac4"
+ }
+ Frame {
+ msec: 4704
+ hash: "71e51c2b97140eb7810e489e6d809437"
+ }
+ Frame {
+ msec: 4720
+ hash: "e8de71d4a2a253e366b2edf5d475824d"
+ }
+ Frame {
+ msec: 4736
+ hash: "636335822b15f32861696439773e1794"
+ }
+ Frame {
+ msec: 4752
+ hash: "ebd6d5f535f5356201aae297839777a6"
+ }
+ Frame {
+ msec: 4768
+ hash: "ebc8a639c3ef849d47d79b6a91d940fd"
+ }
+ Frame {
+ msec: 4784
+ hash: "2988cc8030891abd7493294fc2c6964c"
+ }
+ Frame {
+ msec: 4800
+ image: "test-flipable.4.png"
+ }
+ Frame {
+ msec: 4816
+ hash: "816d9d278fecde0867efadae2c4b5839"
+ }
+ Frame {
+ msec: 4832
+ hash: "b40795c967d37d8cb6b73049a30f40cc"
+ }
+ Frame {
+ msec: 4848
+ hash: "ec9892a5602892ba5a2075b61672d91b"
+ }
+ Frame {
+ msec: 4864
+ hash: "38bd188beb6633cfe979f6881820c15d"
+ }
+ Frame {
+ msec: 4880
+ hash: "8ee67f06977858444a775ca8c5109411"
+ }
+ Frame {
+ msec: 4896
+ hash: "d3603c86488b02dc0136cc2588d00d7b"
+ }
+ Frame {
+ msec: 4912
+ hash: "539ccebf96da504f0c5dfe5496ed95ce"
+ }
+ Frame {
+ msec: 4928
+ hash: "b60450e46a2566d1feaf9749e897fa8b"
+ }
+ Frame {
+ msec: 4944
+ hash: "daf19227a7e51e437d0a13fdf8b1a26f"
+ }
+ Frame {
+ msec: 4960
+ hash: "09371a634d7801742075aadc131b5fb6"
+ }
+ Frame {
+ msec: 4976
+ hash: "40b2a59c83f1223025eca6e2e19a87d8"
+ }
+ Frame {
+ msec: 4992
+ hash: "4818f99e2f71c0ec7636aa777f4df875"
+ }
+ Frame {
+ msec: 5008
+ hash: "7c9895dae776c2a4a6d5e1dd50d86336"
+ }
+ Frame {
+ msec: 5024
+ hash: "b69f034a71b53c885cd177da422d5fc7"
+ }
+ Frame {
+ msec: 5040
+ hash: "b12cbf8e97bc48e12d9543ffc1c578a2"
+ }
+ Frame {
+ msec: 5056
+ hash: "9fd5a0f023f89511bdd4b7e429f940ab"
+ }
+ Frame {
+ msec: 5072
+ hash: "39ed52571b12a9cea5409d5efc80c283"
+ }
+ Frame {
+ msec: 5088
+ hash: "2dc05cabc6eb3e73e9946ebafed99fd4"
+ }
+ Frame {
+ msec: 5104
+ hash: "599b244ff9b4ddceb682a059338f6f97"
+ }
+ Frame {
+ msec: 5120
+ hash: "d54b5b295a9ca2bc65131a0775d8d009"
+ }
+ Frame {
+ msec: 5136
+ hash: "b075ae21dbd3acef5c4d0f11cadce3c9"
+ }
+ Frame {
+ msec: 5152
+ hash: "57d989f52d8bee06694166bf8bdffef0"
+ }
+ Frame {
+ msec: 5168
+ hash: "9f87d4d33942d32a4048ca2b785a1fed"
+ }
+ Frame {
+ msec: 5184
+ hash: "dc02f4f6b0ff1572a64fd133819fd794"
+ }
+ Frame {
+ msec: 5200
+ hash: "c1b1056ef06a0454680f2146bb87a56b"
+ }
+ Frame {
+ msec: 5216
+ hash: "e92daff761c739f231ba2c05785c44fb"
+ }
+ Frame {
+ msec: 5232
+ hash: "96773abcace99ba692a5be096df85a54"
+ }
+ Frame {
+ msec: 5248
+ hash: "31ca6f5b62fd8c08fa17b1008c4e6a22"
+ }
+ Frame {
+ msec: 5264
+ hash: "8e44d6cf4c29313352ad0118db003958"
+ }
+ Frame {
+ msec: 5280
+ hash: "cf8ffc1132935b5df49da90953009fa0"
+ }
+ Frame {
+ msec: 5296
+ hash: "f9c919f45316d93d2c8693b62930850f"
+ }
+ Frame {
+ msec: 5312
+ hash: "395863cffd5440b0a4805975b766a3cf"
+ }
+ Frame {
+ msec: 5328
+ hash: "967f7e4f58a8e29b5d76eac011af643d"
+ }
+ Frame {
+ msec: 5344
+ hash: "80529f6b8d12838b58c4af73c1985792"
+ }
+ Frame {
+ msec: 5360
+ hash: "80529f6b8d12838b58c4af73c1985792"
+ }
+ Frame {
+ msec: 5376
+ hash: "8beee45f26f9f7b94b84a807a0c42217"
+ }
+ Frame {
+ msec: 5392
+ hash: "b6936d72cbaff0c6bb64fc08152e8680"
+ }
+ Frame {
+ msec: 5408
+ hash: "3aace4dc5bc503ed0df1b00b444780f0"
+ }
+ Frame {
+ msec: 5424
+ hash: "30692e6658ac730670a489c880fd4485"
+ }
+ Frame {
+ msec: 5440
+ hash: "30692e6658ac730670a489c880fd4485"
+ }
+ Frame {
+ msec: 5456
+ hash: "d36e1a56078d7cfa246b57f886c230b4"
+ }
+ Frame {
+ msec: 5472
+ hash: "0374aae76f8cfd75f119ff4b86dba817"
+ }
+ Frame {
+ msec: 5488
+ hash: "d75e53f2cea8e9b61a5e50f95060552e"
+ }
+ Frame {
+ msec: 5504
+ hash: "d75e53f2cea8e9b61a5e50f95060552e"
+ }
+ Frame {
+ msec: 5520
+ hash: "af5f794f73e16a5c3b9e437418c873ee"
+ }
+ Frame {
+ msec: 5536
+ hash: "af5f794f73e16a5c3b9e437418c873ee"
+ }
+ Frame {
+ msec: 5552
+ hash: "8532ee7ce3488f9e038643e4fa48751d"
+ }
+ Frame {
+ msec: 5568
+ hash: "136fb272f4d806927b46a1269b18f63d"
+ }
+ Frame {
+ msec: 5584
+ hash: "136fb272f4d806927b46a1269b18f63d"
+ }
+ Frame {
+ msec: 5600
+ hash: "845581f8d03f4fe9323fc282e84f919b"
+ }
+ Frame {
+ msec: 5616
+ hash: "845581f8d03f4fe9323fc282e84f919b"
+ }
+ Frame {
+ msec: 5632
+ hash: "e64fa5eba05f81e6f263dc8543f21b1a"
+ }
+ Frame {
+ msec: 5648
+ hash: "e64fa5eba05f81e6f263dc8543f21b1a"
+ }
+ Frame {
+ msec: 5664
+ hash: "1c25b3d65e8590f8c213afa76b722e97"
+ }
+ Frame {
+ msec: 5680
+ hash: "1c25b3d65e8590f8c213afa76b722e97"
+ }
+ Frame {
+ msec: 5696
+ hash: "451a9408b04826ab35749d9120efd6bb"
+ }
+ Frame {
+ msec: 5712
+ hash: "451a9408b04826ab35749d9120efd6bb"
+ }
+ Frame {
+ msec: 5728
+ hash: "451a9408b04826ab35749d9120efd6bb"
+ }
+ Frame {
+ msec: 5744
+ hash: "73c06997014af4e008b546b53fe349fb"
+ }
+ Frame {
+ msec: 5760
+ image: "test-flipable.5.png"
+ }
+ Frame {
+ msec: 5776
+ hash: "90fb4e4ba04ac32b52c10b3258431c04"
+ }
+ Frame {
+ msec: 5792
+ hash: "90fb4e4ba04ac32b52c10b3258431c04"
+ }
+ Frame {
+ msec: 5808
+ hash: "90fb4e4ba04ac32b52c10b3258431c04"
+ }
+ Frame {
+ msec: 5824
+ hash: "90fb4e4ba04ac32b52c10b3258431c04"
+ }
+ Frame {
+ msec: 5840
+ hash: "9becb90d9f8a61f5afacdc53d137ebcb"
+ }
+ Frame {
+ msec: 5856
+ hash: "9becb90d9f8a61f5afacdc53d137ebcb"
+ }
+ Frame {
+ msec: 5872
+ hash: "9becb90d9f8a61f5afacdc53d137ebcb"
+ }
+ Frame {
+ msec: 5888
+ hash: "9becb90d9f8a61f5afacdc53d137ebcb"
+ }
+ Frame {
+ msec: 5904
+ hash: "9becb90d9f8a61f5afacdc53d137ebcb"
+ }
+ Frame {
+ msec: 5920
+ hash: "7e16e6360fc2e9db67dbf11d58042745"
+ }
+ Frame {
+ msec: 5936
+ hash: "7e16e6360fc2e9db67dbf11d58042745"
+ }
+ Frame {
+ msec: 5952
+ hash: "7e16e6360fc2e9db67dbf11d58042745"
+ }
+ Frame {
+ msec: 5968
+ hash: "7e16e6360fc2e9db67dbf11d58042745"
+ }
+ Frame {
+ msec: 5984
+ hash: "7e16e6360fc2e9db67dbf11d58042745"
+ }
+ Frame {
+ msec: 6000
+ hash: "7e16e6360fc2e9db67dbf11d58042745"
+ }
+ Frame {
+ msec: 6016
+ hash: "7e16e6360fc2e9db67dbf11d58042745"
+ }
+ Frame {
+ msec: 6032
+ hash: "7e16e6360fc2e9db67dbf11d58042745"
+ }
+ Frame {
+ msec: 6048
+ hash: "7e16e6360fc2e9db67dbf11d58042745"
+ }
+ Frame {
+ msec: 6064
+ hash: "7e16e6360fc2e9db67dbf11d58042745"
+ }
+ Frame {
+ msec: 6080
+ hash: "7e16e6360fc2e9db67dbf11d58042745"
+ }
+ Frame {
+ msec: 6096
+ hash: "7e16e6360fc2e9db67dbf11d58042745"
+ }
+ Frame {
+ msec: 6112
+ hash: "7e16e6360fc2e9db67dbf11d58042745"
+ }
+ Frame {
+ msec: 6128
+ hash: "9becb90d9f8a61f5afacdc53d137ebcb"
+ }
+ Frame {
+ msec: 6144
+ hash: "9becb90d9f8a61f5afacdc53d137ebcb"
+ }
+ Frame {
+ msec: 6160
+ hash: "9becb90d9f8a61f5afacdc53d137ebcb"
+ }
+ Frame {
+ msec: 6176
+ hash: "9becb90d9f8a61f5afacdc53d137ebcb"
+ }
+ Frame {
+ msec: 6192
+ hash: "9becb90d9f8a61f5afacdc53d137ebcb"
+ }
+ Frame {
+ msec: 6208
+ hash: "9becb90d9f8a61f5afacdc53d137ebcb"
+ }
+ Key {
+ type: 6
+ key: 16777249
+ modifiers: 67108864
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 6224
+ hash: "90fb4e4ba04ac32b52c10b3258431c04"
+ }
+ Frame {
+ msec: 6240
+ hash: "90fb4e4ba04ac32b52c10b3258431c04"
+ }
+ Frame {
+ msec: 6256
+ hash: "90fb4e4ba04ac32b52c10b3258431c04"
+ }
+ Frame {
+ msec: 6272
+ hash: "73c06997014af4e008b546b53fe349fb"
+ }
+ Frame {
+ msec: 6288
+ hash: "73c06997014af4e008b546b53fe349fb"
+ }
+ Frame {
+ msec: 6304
+ hash: "73c06997014af4e008b546b53fe349fb"
+ }
+ Frame {
+ msec: 6320
+ hash: "451a9408b04826ab35749d9120efd6bb"
+ }
+ Frame {
+ msec: 6336
+ hash: "451a9408b04826ab35749d9120efd6bb"
+ }
+ Frame {
+ msec: 6352
+ hash: "1c25b3d65e8590f8c213afa76b722e97"
+ }
+ Frame {
+ msec: 6368
+ hash: "1c25b3d65e8590f8c213afa76b722e97"
+ }
+ Frame {
+ msec: 6384
+ hash: "1c25b3d65e8590f8c213afa76b722e97"
+ }
+ Frame {
+ msec: 6400
+ hash: "e64fa5eba05f81e6f263dc8543f21b1a"
+ }
+ Frame {
+ msec: 6416
+ hash: "e64fa5eba05f81e6f263dc8543f21b1a"
+ }
+ Frame {
+ msec: 6432
+ hash: "845581f8d03f4fe9323fc282e84f919b"
+ }
+}
diff --git a/tests/auto/declarative/visual/qmlgraphicsflipable/test-flipable.qml b/tests/auto/declarative/visual/qmlgraphicsflipable/test-flipable.qml
new file mode 100644
index 0000000..ba2e93f
--- /dev/null
+++ b/tests/auto/declarative/visual/qmlgraphicsflipable/test-flipable.qml
@@ -0,0 +1,83 @@
+import Qt 4.6
+
+Rectangle {
+ width: 400; height: 240
+ color: "white"
+
+ Timer {
+ interval: 3000; running: true; repeat: true; triggeredOnStart: true
+ onTriggered: {
+ if (flipable.state == '') flipable.state = 'back'; else flipable.state = ''
+ if (flipable2.state == '') flipable2.state = 'back'; else flipable2.state = ''
+ }
+ }
+
+ Flipable {
+ id: flipable
+ width: 200; height: 200
+
+ property int angle: 0
+
+ transform: Rotation {
+ origin.x: 100; origin.y: 100
+ axis.x: 0; axis.y: 1; axis.z: 0
+ angle: flipable.angle
+ }
+
+ front: Rectangle {
+ color: "steelblue"; width: 200; height: 200
+ }
+
+ back: Rectangle {
+ color: "deeppink"; width: 200; height: 200
+ }
+
+ states: State {
+ name: "back"
+ PropertyChanges { target: flipable; angle: 180 }
+ }
+
+ transitions: Transition {
+ NumberAnimation { easing: "easeInOutQuad"; matchProperties: "angle"; duration: 3000 }
+ }
+ }
+
+ Flipable {
+ id: flipable2
+ x: 200; width: 200; height: 200
+
+ property int angle: 0
+
+ transform: Rotation {
+ origin.x: 100; origin.y: 100
+ axis.x: 1; axis.z: 0
+ angle: flipable2.angle
+ }
+
+ front: Rectangle {
+ color: "deeppink"; width: 200; height: 200
+ }
+
+ back: Rectangle {
+ color: "steelblue"; width: 200; height: 200
+ }
+
+ states: State {
+ name: "back"
+ PropertyChanges { target: flipable2; angle: 180 }
+ }
+
+ transitions: Transition {
+ NumberAnimation { easing: "easeInOutQuad"; matchProperties: "angle"; duration: 3000 }
+ }
+ }
+
+ Rectangle {
+ x: 25; width: 150; y: 210; height: 20; color: "black"
+ visible: flipable.side == Flipable.Front
+ }
+ Rectangle {
+ x: 225; width: 150; y: 210; height: 20; color: "black"
+ visible: flipable2.side == Flipable.Back
+ }
+}
diff --git a/tests/auto/declarative/visual/qmlgraphicsparticles/data/particles.0.png b/tests/auto/declarative/visual/qmlgraphicsparticles/data/particles.0.png
index 30bdefd..4cc937d 100644
--- a/tests/auto/declarative/visual/qmlgraphicsparticles/data/particles.0.png
+++ b/tests/auto/declarative/visual/qmlgraphicsparticles/data/particles.0.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qmlgraphicsparticles/data/particles.1.png b/tests/auto/declarative/visual/qmlgraphicsparticles/data/particles.1.png
index 799e028..ea04224 100644
--- a/tests/auto/declarative/visual/qmlgraphicsparticles/data/particles.1.png
+++ b/tests/auto/declarative/visual/qmlgraphicsparticles/data/particles.1.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qmlgraphicsparticles/data/particles.2.png b/tests/auto/declarative/visual/qmlgraphicsparticles/data/particles.2.png
index ed267c2..241fd20 100644
--- a/tests/auto/declarative/visual/qmlgraphicsparticles/data/particles.2.png
+++ b/tests/auto/declarative/visual/qmlgraphicsparticles/data/particles.2.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qmlgraphicsparticles/data/particles.qml b/tests/auto/declarative/visual/qmlgraphicsparticles/data/particles.qml
index 3199f31..a4339f8 100644
--- a/tests/auto/declarative/visual/qmlgraphicsparticles/data/particles.qml
+++ b/tests/auto/declarative/visual/qmlgraphicsparticles/data/particles.qml
@@ -10,235 +10,235 @@ VisualTest {
}
Frame {
msec: 32
- hash: "1c129b1c4a39412bed2f23d712f2bc90"
+ hash: "71e690f8339f1829efc113d88d1a9023"
}
Frame {
msec: 48
- hash: "fbcc4bc3fea46a43453aa39b032264c6"
+ hash: "856a757f3e83e1ede00854d2dacd856a"
}
Frame {
msec: 64
- hash: "2cb13275faca414b7c8ba9d70067fd1f"
+ hash: "2a7926b693b9950aabc4e3a1ebe4b2d0"
}
Frame {
msec: 80
- hash: "b017afb05f96085ee3395d62e62e457b"
+ hash: "0564ce95b47a7c3314a56921855b9244"
}
Frame {
msec: 96
- hash: "642851d10c549c8ae72c057563e99e64"
+ hash: "bf207596dd69e7a872a23448621100cc"
}
Frame {
msec: 112
- hash: "494c0942f7410d455a4b113fb908e570"
+ hash: "a0bb920166e777ea96afb811353a3488"
}
Frame {
msec: 128
- hash: "cb0a2f9980f27757c0c1d62ef3dcfde0"
+ hash: "3d6297c684562d099fdb9c413b3e93a3"
}
Frame {
msec: 144
- hash: "2fb9cf782ea106006af8bcd66c62869c"
+ hash: "29139f93cbd55faa0ea18f11db364d56"
}
Frame {
msec: 160
- hash: "bf68518323f03e4f407831e8b34f247b"
+ hash: "f3637e44bf1b6c3fd030898e14a15443"
}
Frame {
msec: 176
- hash: "c99abe9c0384ae339fdfa0c75dc8047d"
+ hash: "d687ef38c1d0e8d12c03a2e7b462a5e5"
}
Frame {
msec: 192
- hash: "96f2eb402633c1aca8a1a2b0d60af5fb"
+ hash: "0f1f227bbce76122d081759752edf47e"
}
Frame {
msec: 208
- hash: "6cba51a856f1ba54ee702761f196b915"
+ hash: "1112e4f9ec18958caa4efadbf8b369bd"
}
Frame {
msec: 224
- hash: "9188926caa6c6ba8cb3aee04de635b96"
+ hash: "5bb7fd7dc06d79aa5ca35fa551753a38"
}
Frame {
msec: 240
- hash: "81132a5e8768de0630311813170f166e"
+ hash: "c59e159877613eb09ba353bc0ef46086"
}
Frame {
msec: 256
- hash: "a638698d7ccb73f20f6eeba3857f417c"
+ hash: "b7c583f85d89c833861324b3d06a6c8b"
}
Frame {
msec: 272
- hash: "4761ba6847f6f0769b916106c5f3245b"
+ hash: "147641f03d92a48f49e0cfb4972bc1c7"
}
Frame {
msec: 288
- hash: "13bc0c681962bada7fcb3b722895ffaa"
+ hash: "1627827cd3733d1177f111c6c347ab49"
}
Frame {
msec: 304
- hash: "505c5824be16d812b7c339f1f9b8a10b"
+ hash: "0edccffd718ef10a0ea476201fc00c39"
}
Frame {
msec: 320
- hash: "d191d502d9c685f8497583669147ee73"
+ hash: "4b7f426aaa31bdabc6c065b298e59c9e"
}
Frame {
msec: 336
- hash: "c17f55cc5d7bf541e235791a157aa8b9"
+ hash: "4814f77f57bbae8d3c20995e37ec95fb"
}
Frame {
msec: 352
- hash: "3ef401f87830c53b9b277d4420a9a742"
+ hash: "030092297087df89ab40e894a01f0ee2"
}
Frame {
msec: 368
- hash: "d04816400e66ebbf797f9985a53f7cfb"
+ hash: "30b0d547b580daee9b1c49f5069570c5"
}
Frame {
msec: 384
- hash: "d7a7df7c2a92449f42d61c0572e7dbac"
+ hash: "eaee106eaa1505e7d79ed21c36f381fd"
}
Frame {
msec: 400
- hash: "f49a3bcf3842f554136ff9bd5bb470ef"
+ hash: "6527d1d44a75015d7eb163a660e15b0b"
}
Frame {
msec: 416
- hash: "27bccc5933d7bfaad6d5f6a10efd283b"
+ hash: "3a3a7b7b36ede4aa1261b5f28c99984c"
}
Frame {
msec: 432
- hash: "3067ac00a4d58c67bb96d813c344871d"
+ hash: "d2349319b0feeceaa7ef9301ae87d348"
}
Frame {
msec: 448
- hash: "d38d7192688feecc38fd63285d37ce49"
+ hash: "f483ae316491e367922f6ef7ebfa0298"
}
Frame {
msec: 464
- hash: "4172d1b74cdd6ea89be718977775a9e0"
+ hash: "3d94b3e9b409a4ca2200df226a25b2d5"
}
Frame {
msec: 480
- hash: "2761a7e58cbfa46fc6d306c8270e4f10"
+ hash: "ce289f478dafd295ba82ef0c9e13ff3d"
}
Frame {
msec: 496
- hash: "58a851b9fbcb98afc7c1bc58c2f45e4a"
+ hash: "6d618658faa9403ff9909f6c6a677cb2"
}
Frame {
msec: 512
- hash: "0f7789f04bf20708d9d6f1e818b6b88a"
+ hash: "9e12eda314483bc5ef5a14a1b1ac26d7"
}
Frame {
msec: 528
- hash: "8d8b8d109dce4c7b05ecb603b4718859"
+ hash: "ed34b0d26a18145028a5ec4c99e9b569"
}
Frame {
msec: 544
- hash: "0fc6fde589932ac41787e8ebfe3fcbe3"
+ hash: "ea91dc7e837fa540af260f75c0f8ba49"
}
Frame {
msec: 560
- hash: "e08bffd5a56795488f090a475513e5db"
+ hash: "a5b277747454ddeda3d66f3702f45a53"
}
Frame {
msec: 576
- hash: "e089ab7c5feefd3d745bb665e2ff49ee"
+ hash: "7601784afb80a79267ade99961122186"
}
Frame {
msec: 592
- hash: "e7b787fb1b21e991c19ec88b3d985b69"
+ hash: "e52696c37cc3a245a555c98038b51e76"
}
Frame {
msec: 608
- hash: "a6f4f32287bd926e0eeff68717b80512"
+ hash: "7d94071d225e0105c794a238eaa8117e"
}
Frame {
msec: 624
- hash: "3344ca9c97473bd922bd8efd5d6ab212"
+ hash: "60ebfb611c6f7515568574aecdfdcb57"
}
Frame {
msec: 640
- hash: "a330510a9f62acb4f2163728939d0bb5"
+ hash: "0ea41ef8a82e97e62ed7507606ab6bf4"
}
Frame {
msec: 656
- hash: "1ec473936f2279f13675b6b5fe2ee392"
+ hash: "009a12491a5f6e4b30942062f93a3f8c"
}
Frame {
msec: 672
- hash: "b193b7d2917ee00c4cb29bf244186bef"
+ hash: "2fa053880413fc76b53b26b733b2168f"
}
Frame {
msec: 688
- hash: "75137e977941e357bad2ad9af2cbc898"
+ hash: "fb53a57559de18a5b6f13f21d1daf098"
}
Frame {
msec: 704
- hash: "31773ba8979a31b1691860b7dafe28dc"
+ hash: "f65a62bf7d5e8fbd996f7151398109a6"
}
Frame {
msec: 720
- hash: "d8922452edbba4f1092b83e87c0330ea"
+ hash: "b0802484661f6fe4606f4ff915c03f81"
}
Frame {
msec: 736
- hash: "982c80305b54236d1259f5672098652d"
+ hash: "b63c61e63cb23147a8377d3428d5a4fa"
}
Frame {
msec: 752
- hash: "d8b23fb0867fb75558960216c8d0f2aa"
+ hash: "a320dcfa3907c85fa983035953b79ba3"
}
Frame {
msec: 768
- hash: "daf7833f93a216d1e025c9129b3a7caa"
+ hash: "6b94696073ab8e1ef6be1f0b5cb22720"
}
Frame {
msec: 784
- hash: "bb08e8fe2ce74018fc702e5dad8927fe"
+ hash: "5ed4ff5011c421e40bd0e1d021974efc"
}
Frame {
msec: 800
- hash: "22a30051c87d4de7e734d9de6ce7eed8"
+ hash: "b183261aca9e8f887f4d489d8c81f583"
}
Frame {
msec: 816
- hash: "d8625628587feace367fc97c1f11aff8"
+ hash: "c4672d92bb4f0e8cb8e10fcef11a36e2"
}
Frame {
msec: 832
- hash: "e9dbbf715fc094cb22ecd5c6df602f95"
+ hash: "beb2c18162ea197b486b217f15f784e7"
}
Frame {
msec: 848
- hash: "ca69b2b9f8e6b16e3bc6d93598b6c75a"
+ hash: "9f5198e08dc16e80f500804ba8ae7afb"
}
Frame {
msec: 864
- hash: "87e09752e39df5042aef163fe4ed0b47"
+ hash: "d892706fd28d55adcdacdf72a2f7ad83"
}
Frame {
msec: 880
- hash: "80adfaf02838c8bd372e53d0483fbac5"
+ hash: "1ed182b5b27ed7ed59c56c450a73975d"
}
Frame {
msec: 896
- hash: "9934a1aece14ba7369b00cf2620cd207"
+ hash: "74756064676c5d5c9eacaea31a7b357d"
}
Frame {
msec: 912
- hash: "954a70a949fdcca4e4412174f30653c3"
+ hash: "64f79b420b38bda6e102163b90be5f4f"
}
Frame {
msec: 928
- hash: "850fa936516f8b145465eac39c9a74a6"
+ hash: "0d1f92cafc507af799953771cee7c265"
}
Frame {
msec: 944
- hash: "1d844e8a7c710ccbf31f47470cc9abf2"
+ hash: "887ef63951fb56fd50f4de9afe8db1a8"
}
Frame {
msec: 960
@@ -246,239 +246,239 @@ VisualTest {
}
Frame {
msec: 976
- hash: "33f4eee3f6e3fb715463254d727ef898"
+ hash: "f09fc1e1ebc8c627c89c741ac263e3f4"
}
Frame {
msec: 992
- hash: "68648a3f75f58b34dd9770a9edc2caea"
+ hash: "30bb26df58c83ff70d767e01f0df5140"
}
Frame {
msec: 1008
- hash: "ad0d431ab7e6cfbb43053050a1cf5e40"
+ hash: "dbd83b1749a42edd6d26097ade1c67ba"
}
Frame {
msec: 1024
- hash: "d1ae74c9bf3826d30fb461ca2fd8e36a"
+ hash: "7fa50f111158dc6a3e245eb23e57a3f3"
}
Frame {
msec: 1040
- hash: "bda9d77c68a30d491abdfbfcf854c5ea"
+ hash: "267ef8b555a62abb44e8b5cf88c83110"
}
Frame {
msec: 1056
- hash: "386ea303f8102339f8cd5ae88fd5f6bc"
+ hash: "78b2d13be078f2e7e94d685994b6488e"
}
Frame {
msec: 1072
- hash: "8c81d3992851ebeb3cb820bc4510af66"
+ hash: "1d47caf40c85bc1e23bf8d22160d333d"
}
Frame {
msec: 1088
- hash: "566813e312ffdde4a7d3af4276bc8cdd"
+ hash: "abeaf0a9bedfd62e56f12fa612bf287f"
}
Frame {
msec: 1104
- hash: "d9c8b391b12ee40aa393f4fb39c12a16"
+ hash: "0f66d12b082398c9f43ef868632529ab"
}
Frame {
msec: 1120
- hash: "f2bf70bda626089437f0ab67ad62d8f6"
+ hash: "957340efea7ce168889c2ae1b867c6d0"
}
Frame {
msec: 1136
- hash: "88b2d1ecd7d51d0bf8c947a3433b7013"
+ hash: "4d83e6160f5d9097a4b73bf4104fa11b"
}
Frame {
msec: 1152
- hash: "e93e0553c5dcc6dcd21dad0932d1e3fa"
+ hash: "d2811de76d3c0cc8ebd67583e50deaae"
}
Frame {
msec: 1168
- hash: "c1ec148772d399ea4934cdfc514f6980"
+ hash: "cb13f2d6985e841b2da453860d7ddd65"
}
Frame {
msec: 1184
- hash: "14f286793de5452f4677e8b6fd5c1e7e"
+ hash: "1e48b355ff1e136bcd982a749ba49089"
}
Frame {
msec: 1200
- hash: "220a7df0af53fc9a2442956128091ad8"
+ hash: "9f9abd7b167a834449510a02d368155b"
}
Frame {
msec: 1216
- hash: "84c49512f5e9f138901b3833a5adbcab"
+ hash: "6a75c81527b3bb85f70c08f669d46139"
}
Frame {
msec: 1232
- hash: "b05410caa120f5a4191a44b84aa17a8c"
+ hash: "eafd6f87fb88f6f51cf27d5dd4faa7c8"
}
Frame {
msec: 1248
- hash: "e1f6db204f62394205c1d4d56bbf9f52"
+ hash: "ba43e681c7f2677b81fa4fe87a5e612c"
}
Frame {
msec: 1264
- hash: "f45033d1350009e09f62e81aeec297a5"
+ hash: "f83f06320c3e7c2352dd8e8839d63063"
}
Frame {
msec: 1280
- hash: "dfd88b1dba38ab8260e00b3810b89318"
+ hash: "713afe22640941e9ea4925158099c514"
}
Frame {
msec: 1296
- hash: "17503276f68e365cde03607d66fe4c8e"
+ hash: "53766caa0ab92bbd2e3d69e6ab9a8fe7"
}
Frame {
msec: 1312
- hash: "28f03c5c0fe5c4647c5b9d3b72a07c76"
+ hash: "af98650b68d48fd3776d0334904b9e75"
}
Frame {
msec: 1328
- hash: "ea2082529b50543fab22497e01938102"
+ hash: "62439fba28fbc0d4a129ccd5edf81b8b"
}
Frame {
msec: 1344
- hash: "a700a2f3721625b1ec68107884d1ce67"
+ hash: "75c67b227f23a3ef5c01aca285f3617c"
}
Frame {
msec: 1360
- hash: "ce717f1f1d98158aeef1cc6a9485dc80"
+ hash: "3a5e1fe4a9454e9636fbebdfb005e3ac"
}
Frame {
msec: 1376
- hash: "7febe7c67e1c159881de72f62800a505"
+ hash: "2e4cdc140a9faedc8fbc9a0ec20b1a4c"
}
Frame {
msec: 1392
- hash: "474931cb44a8e18426b9c2cc9f6df482"
+ hash: "f937d5b14fb0360afb14dbcce1b0ad9a"
}
Frame {
msec: 1408
- hash: "1085b4873b9a4934882a163be72a2710"
+ hash: "20cb9e30c1a89bae3081427328887361"
}
Frame {
msec: 1424
- hash: "59e7911800e915e6f159cb111ce61a54"
+ hash: "67f19061f97630a35b59357dcba9c5f0"
}
Frame {
msec: 1440
- hash: "6d0d780ffc726b04f9885c25b08d1009"
+ hash: "f1b4041797873b7ff9e318542186eaf8"
}
Frame {
msec: 1456
- hash: "bf896d6403dc1ad26536cc1165e71e9e"
+ hash: "ecbdc77e1b58decad29a6dfc654fba20"
}
Frame {
msec: 1472
- hash: "86397c7dcf5ed34edbbaa465ae6eab43"
+ hash: "6d0b821c08b024aa8fc71ec5c0e98c53"
}
Frame {
msec: 1488
- hash: "ed1b4967bf14eead9cb4d2dcfbdb46c2"
+ hash: "5137c7ee6879b98478a4edb1b5a0d79c"
}
Frame {
msec: 1504
- hash: "67b7e59c8f945d1f3bdb1944fa736ecf"
+ hash: "17c80c758e9d0721a3b791dbabe0d34f"
}
Frame {
msec: 1520
- hash: "b5f95e89f39d1c4821ba38547b0f2e3b"
+ hash: "abc1fe8d97b87f891ac53673fe64bf0d"
}
Frame {
msec: 1536
- hash: "5bc91c9e35afa255a2dda28db9802b1e"
+ hash: "fe8c8ce5f0cf676310e4ce85c1755f0f"
}
Frame {
msec: 1552
- hash: "84fab4042e0ff891ca1998cbfbb60e5a"
+ hash: "40eff7ab7370e7a3de28a55e200812ca"
}
Frame {
msec: 1568
- hash: "7c5ef5025a06e990171dac3e8fd93977"
+ hash: "8ff86cc730f4b7877ed7890f62dd8f17"
}
Frame {
msec: 1584
- hash: "ab4cd0e103d71a35250668ad850a5213"
+ hash: "a87e34b8d9e75d03493c94a96ef97c25"
}
Frame {
msec: 1600
- hash: "aa974c4b2290f7febb121344623de86d"
+ hash: "807a4b4652ed228084660bfdf98efd50"
}
Frame {
msec: 1616
- hash: "ff6ee1b50ca356dc98038a459e318b32"
+ hash: "ca245fcf490c3bc17bef1a38d793f573"
}
Frame {
msec: 1632
- hash: "022fe9c391514fdd98bc1c38bc383df2"
+ hash: "6662d0e4e7778f560c8956e9fe4aa079"
}
Frame {
msec: 1648
- hash: "b1a33c9c9cbdcc1c8c9c982eef041ccd"
+ hash: "c47d90df3dbb1656ef425209f1b528b1"
}
Frame {
msec: 1664
- hash: "0945e66ab5aa81beacf662eb82ec39ed"
+ hash: "c9dbf06207cf9b8d03cf20f4e4131979"
}
Frame {
msec: 1680
- hash: "ae293f675dbdd88dec8f924140033cc9"
+ hash: "dfab00fee3cf9f0f76d66f64eed6de84"
}
Frame {
msec: 1696
- hash: "5ace5013e3d51a8db338f65011dd10f8"
+ hash: "b38a29a29bf30c197e5434a942e805cf"
}
Frame {
msec: 1712
- hash: "9466a4e96d647f2bd8845697fce89399"
+ hash: "589496ebac7f7ea699b869291db7ed45"
}
Frame {
msec: 1728
- hash: "73bbbfc57e020c6a0acbd5fdfa711c30"
+ hash: "c7a037e3e755c1c8fecd17db7596a9cd"
}
Frame {
msec: 1744
- hash: "d71d7182107c3d6b004a57a321caee96"
+ hash: "faca2e1e88556ffd1f71bbc5ceae5cb1"
}
Frame {
msec: 1760
- hash: "0902867c89e536cffcde69bde2eb1994"
+ hash: "5837a888d83513fb4c0bce11a34fc3df"
}
Frame {
msec: 1776
- hash: "39fc26943f6077272c36e93b7cbf6994"
+ hash: "07f8fe9ded8271396db503c3927244bb"
}
Frame {
msec: 1792
- hash: "92931d5a6e57fb9df60785a64d3a6f78"
+ hash: "345fffbc210b55a4bd78cb8a4e12d025"
}
Frame {
msec: 1808
- hash: "fffd632552f88f2979ef85de0ce585c2"
+ hash: "7b9aa96eb9a1fe77fbb8b607140885b7"
}
Frame {
msec: 1824
- hash: "9f97bfcffbb5d127c5eee852b30a13c4"
+ hash: "d66748cc52a364231ac8a6a677d9bdc6"
}
Frame {
msec: 1840
- hash: "ea9ee0293fbc45d3467e29c09e42adcd"
+ hash: "40cf9aece08870358aef6c9836013472"
}
Frame {
msec: 1856
- hash: "b5b75c50f8fae3fb3b88efad536c911b"
+ hash: "2015ab3c133862222b1375c775af743b"
}
Frame {
msec: 1872
- hash: "25dcd3fa30c057d1a42c19cee1ce444b"
+ hash: "41e519acb18ed9f7cda2d3cd88fddd2c"
}
Frame {
msec: 1888
- hash: "862d42abe7abd49d4a38e38a8c33a657"
+ hash: "8e583b74b2b90d7f5c78357f66801358"
}
Frame {
msec: 1904
- hash: "a335f3c8c797c1bb5537b57f952c19d1"
+ hash: "3a6755e25045d937743371a98792a546"
}
Frame {
msec: 1920
@@ -486,239 +486,239 @@ VisualTest {
}
Frame {
msec: 1936
- hash: "da1cf98fdfe5acbe30cfbe66389aa240"
+ hash: "f80a8f65def55d556732bfefe3debe72"
}
Frame {
msec: 1952
- hash: "088f3209c0363c06cf0607c58d00ca2d"
+ hash: "308cbe6344b9aea4c6b7ad2ef606de59"
}
Frame {
msec: 1968
- hash: "47ba3bf2604b21f331a2e00f05926aaf"
+ hash: "fd2d31f6f4a3b4ce1aec1e309c48ae94"
}
Frame {
msec: 1984
- hash: "5ff0de383abdefad76380af144bd9d80"
+ hash: "a02ed4aa3783049ffbf7ef6dfb4e8926"
}
Frame {
msec: 2000
- hash: "b972d1c85d3d8777f84b54dc118172fd"
+ hash: "dde64769b3affc776fe0e747a4d621ef"
}
Frame {
msec: 2016
- hash: "37581c3fbef2088b7d14b6c7bbf3cdc3"
+ hash: "3fa830b629939520c071b3e6fe94156e"
}
Frame {
msec: 2032
- hash: "4ad6a06ac6de9dea66e9ce873a6618c1"
+ hash: "ae582350cba12ce47306f2a967e396fd"
}
Frame {
msec: 2048
- hash: "3a0379ad966235044508c144ffbc336b"
+ hash: "a4483eadd2bf3e3e9fae51279b50e18a"
}
Frame {
msec: 2064
- hash: "cb5a9510400943d77c9a296066f037e2"
+ hash: "742fc008fab89087b1bceee33889db19"
}
Frame {
msec: 2080
- hash: "7bd5673a1d2ad8079df2569149e5811e"
+ hash: "5da9546b147737dd671813725cb196f7"
}
Frame {
msec: 2096
- hash: "bd327ff6b8a4081b3a41cb0035403037"
+ hash: "c979bccf2603c400b4c93d1be6f698d1"
}
Frame {
msec: 2112
- hash: "f0f9f559251f7648cd60e66ac745962d"
+ hash: "b7c6391ce59e054ae53e3731788dfc05"
}
Frame {
msec: 2128
- hash: "18827630a859b0ce497f682e33558fae"
+ hash: "0371e17fdaa7be7af0cff132f164d6b4"
}
Frame {
msec: 2144
- hash: "e22d8110cbe34acddba799942872645d"
+ hash: "6973ce2af671f4d500da3c5a37534693"
}
Frame {
msec: 2160
- hash: "11564e7221524cc3655c2c5f1d7e42b6"
+ hash: "f9128da47afa801c6b3670752847a8d1"
}
Frame {
msec: 2176
- hash: "6468721ee38209aaf2c82a320bcd122e"
+ hash: "2e4a7001c3c1bb7153f631da1b273aa1"
}
Frame {
msec: 2192
- hash: "19772d0f422fd206645ae6cf0be30b59"
+ hash: "65d41139c27a4a94a817e1b5c8aa765d"
}
Frame {
msec: 2208
- hash: "48b6c7e1317b9a66238c17afceb5121f"
+ hash: "36652e407957b59bad2e0e9b2fa5a8fe"
}
Frame {
msec: 2224
- hash: "82a1af78709b78cce2d9b4eed7f8477c"
+ hash: "c0fe78ff8fc3119b30a1d9e5b98fafbb"
}
Frame {
msec: 2240
- hash: "36e2366eccbdd2d16c19829c34fbff87"
+ hash: "41b798eac11e696e5e690d13e8ce88b1"
}
Frame {
msec: 2256
- hash: "271db39ca46c59ddc279fb41a9d191af"
+ hash: "20efbef05b6eed5a916e55ba25c10a59"
}
Frame {
msec: 2272
- hash: "ee279a90e86aa89b1c3d745ab030180d"
+ hash: "dc897fb0d232a39215d5d004e322cb2a"
}
Frame {
msec: 2288
- hash: "14e8c72d770644f4cec99e65aeff0d75"
+ hash: "33c1f9bb344a31a1a0973a527c22edac"
}
Frame {
msec: 2304
- hash: "56fa1756eb11a30f07f8f31c22c99973"
+ hash: "0b54b02eedc60e8d7b147092b9bd6bca"
}
Frame {
msec: 2320
- hash: "165af677ff3921f06b89b2c8d76a7924"
+ hash: "02cb9a222c9b109cbff956238a61b31b"
}
Frame {
msec: 2336
- hash: "d64aa248d9b207b87e5ba14bdabf2f6c"
+ hash: "bfb067d4519861b22e20847083447a22"
}
Frame {
msec: 2352
- hash: "33e9716eb9ca62fe5c5cb1b1ee0e9e68"
+ hash: "86f599f6844c2046148c682abfe6c417"
}
Frame {
msec: 2368
- hash: "cff2316820c469b84c3bacabfcf1a551"
+ hash: "fa07ac104183fe94fd3a381595582d76"
}
Frame {
msec: 2384
- hash: "9f1359c4bab95244602254ca3954e2b7"
+ hash: "8ee792f06fa7e877ce0b160bcf170e70"
}
Frame {
msec: 2400
- hash: "d6246d2aaea895755eab4c839c35ca9d"
+ hash: "bb39f4374215e9b4eafbc3320d4144b6"
}
Frame {
msec: 2416
- hash: "d446e1ac91fec10482b0c6d38ce86d17"
+ hash: "d91f778ced58466dd6b79f50cdbfe1a8"
}
Frame {
msec: 2432
- hash: "99f443af76a9e0d2d03638bc9927fda3"
+ hash: "0fd47896c9d9d74e40c38d0f532aa537"
}
Frame {
msec: 2448
- hash: "a9169e293b8154947332d9754fd23af3"
+ hash: "0b7ec227fc884616bd17439bf0d40ac1"
}
Frame {
msec: 2464
- hash: "cc6851cc5864615c000fbc8d552eb593"
+ hash: "e88d4e76d353701c738120e169ccf2a8"
}
Frame {
msec: 2480
- hash: "58a3a6edb5842c88cb73b79a8a187717"
+ hash: "1564432d4aea1826e543f41dfc9a8113"
}
Frame {
msec: 2496
- hash: "42bcf77c98c9a80508446bd8c66e935b"
+ hash: "02825fa9174c0a45e19c564030ba9ad0"
}
Frame {
msec: 2512
- hash: "0f99350ae151591fbda95158c046e072"
+ hash: "c7671a2bb3f0dcb2be48805ef1970dbd"
}
Frame {
msec: 2528
- hash: "9e817e2fd8377b7117f908c4e87d4d57"
+ hash: "2fa407b026edbb8b9e0edc263fd9ecc5"
}
Frame {
msec: 2544
- hash: "72c105bce75feeeb7a86f823945b4ff9"
+ hash: "211f3c82cff939cd1ed324180d40aab2"
}
Frame {
msec: 2560
- hash: "653b858445bdd8afdf8abd27f5e53fb8"
+ hash: "0fb3de6e1865e49ac281ac12e2032f07"
}
Frame {
msec: 2576
- hash: "18bf39154fbf4b42c4d3303e018a2f27"
+ hash: "a08e0127a0b6172715aa6a10d6e0799e"
}
Frame {
msec: 2592
- hash: "5ed5d52ab7da7ae77e97f3ace09b3b8d"
+ hash: "57a3d1530042f0d6a6dbf84059a8d730"
}
Frame {
msec: 2608
- hash: "1d382462e5746ee9b6df980364b1c96b"
+ hash: "9aae6364941f988409b8db63db72fccb"
}
Frame {
msec: 2624
- hash: "2a0a561f38c113a0f177b1c2b99ee5e1"
+ hash: "9e466ce9c8b54dc95960d21b0b41fdd1"
}
Frame {
msec: 2640
- hash: "0605d3e2dd9132d9c1d25b75a870d647"
+ hash: "189e0f3c60cd521a6bf52054fa6039c6"
}
Frame {
msec: 2656
- hash: "a1def1576f386c90bb80d46e254bd384"
+ hash: "1020f18d41a4d83e0b5ae387b486b5ff"
}
Frame {
msec: 2672
- hash: "cf38d4ae577047048d2bd0a4005abfe2"
+ hash: "26fcea12cc2de8c8cb8caf049937d7c6"
}
Frame {
msec: 2688
- hash: "d7cb6715cd89978bbca5ce4c93b488e5"
+ hash: "e5b9e752dc668cd4f6803ea772bbb7b0"
}
Frame {
msec: 2704
- hash: "9a5075ee794af14d4f17a52bdbc47f1e"
+ hash: "a0df9360ed11207076fc77810c1d8605"
}
Frame {
msec: 2720
- hash: "fd3d803a1e5e9e3eeae7d5edcddd0072"
+ hash: "56dea4551a9532e80dfd6c79031ec08b"
}
Frame {
msec: 2736
- hash: "445114e7d10581a475989e469323d83d"
+ hash: "900c62773477b2843464b75f67d50c90"
}
Frame {
msec: 2752
- hash: "58328c1d4c0ee7fca78b684697f1922c"
+ hash: "177de9647549a276256a5e74d5ef7134"
}
Frame {
msec: 2768
- hash: "433df4d872b9565b43af5afce1b42e15"
+ hash: "cb3eb956096de4f6b51ab249d184a6dd"
}
Frame {
msec: 2784
- hash: "3b694f15722a087c2c9a860cad8bb6de"
+ hash: "6671e46d013f72bef5e3d0d95ba70301"
}
Frame {
msec: 2800
- hash: "1986c8036bd548ca06a32aa98ab4fc83"
+ hash: "33910dc69eff13f9c144b7ff84187a59"
}
Frame {
msec: 2816
- hash: "7845dbb0e38145f54a9e4e0bfbd608db"
+ hash: "dfa20711b0821b66cb2bdd2806e34d03"
}
Frame {
msec: 2832
- hash: "caed393910ae7467c307a314bdf459ef"
+ hash: "16e2674c2449bf059aa2a0add077e040"
}
Frame {
msec: 2848
- hash: "f3f6b41b7ed04dbc1693c169bdae3b13"
+ hash: "cdd2a820076cfa9529d93787de61267e"
}
Frame {
msec: 2864
- hash: "b9a87d15d48f951b0a1d6962fb1d5995"
+ hash: "a851a1e017e90877d6d8027633401bcc"
}
Frame {
msec: 2880
@@ -726,58 +726,50 @@ VisualTest {
}
Frame {
msec: 2896
- hash: "954300274b6a5785e03a6cdae67238e9"
+ hash: "f159f17caa8df7ae09141462cd9b75ab"
}
Frame {
msec: 2912
- hash: "5b7f51afad796107289369c7d3494843"
+ hash: "f6a8787008d24bffa6813799042a0d69"
}
Frame {
msec: 2928
- hash: "41164f28cbb94528eda719d590d1cf75"
+ hash: "18e79f454a628098c41ff8882b663a53"
}
Frame {
msec: 2944
- hash: "5953d4c9a4b4c83ba1dfd83a57ec2742"
+ hash: "74676f4f2d8612bc02f72e3bf855c060"
}
Frame {
msec: 2960
- hash: "0be7c6187a26b44f12bf71587372a6c7"
+ hash: "8276c61e080635dd37954837998a14a6"
}
Frame {
msec: 2976
- hash: "a7cab1faf0cdd5649c8ea3c26d2e80d0"
+ hash: "4cceb2274ce5584315109ac45ef8fce7"
}
Frame {
msec: 2992
- hash: "5f91bef1865623030aea20805993319a"
+ hash: "c4e87037c2265f85fef3b681b840c6f9"
}
Frame {
msec: 3008
- hash: "69d34e2a27c471ad44f8aba8d906a961"
+ hash: "aed160bb820dc5cdf1ee320b019436c4"
}
Frame {
msec: 3024
- hash: "5a987879aff30d6c6712c0631bc2f43d"
+ hash: "593acf3e67bc3428f61b723996093d8d"
}
Frame {
msec: 3040
- hash: "62b9132c58cd5fdcfe7f1bc5e64885cf"
+ hash: "694d197caff9144204a82a682d47724c"
}
Frame {
msec: 3056
- hash: "d394ef9b504abf94c1d28a9fb7f3c28b"
+ hash: "12519eda928f8aef0e2a21e9fc0f8756"
}
Frame {
msec: 3072
- hash: "a559cc25af950227fa5fdf70be7fd94c"
- }
- Frame {
- msec: 3088
- hash: "318dde40fc72c5f8ee45b865a68922b1"
- }
- Frame {
- msec: 3104
- hash: "3cbfd55773e52f48f01fe66c28c0b992"
+ hash: "ae8cba17b25e9567211f4cd20080cb09"
}
}
diff --git a/tests/auto/declarative/visual/qmlgraphicsparticles/particles.qml b/tests/auto/declarative/visual/qmlgraphicsparticles/particles.qml
index 8fb793f..a7a8143 100644
--- a/tests/auto/declarative/visual/qmlgraphicsparticles/particles.qml
+++ b/tests/auto/declarative/visual/qmlgraphicsparticles/particles.qml
@@ -3,11 +3,12 @@ import Qt 4.6
Rectangle {
width: 640; height: 480; color: "black"
+ Particles { emitting: false }
Particles { id:particlesA
y:0; width: 260; height:30; source: "star.png";
lifeSpan:1000; count: 50; angle:70; angleDeviation:36;
velocity:30; velocityDeviation:10; emissionRate: 10
- ParticleMotionWander { xvariance:30; pace:100 }
+ ParticleMotionWander { yvariance:5; xvariance:30; pace:100 }
}
Particles { id:particlesB
diff --git a/tests/auto/declarative/visual/qfxtext/elide/data-X11/elide.0.png b/tests/auto/declarative/visual/qmlgraphicstext/elide/data-X11/elide.0.png
index 5631a46..5631a46 100644
--- a/tests/auto/declarative/visual/qfxtext/elide/data-X11/elide.0.png
+++ b/tests/auto/declarative/visual/qmlgraphicstext/elide/data-X11/elide.0.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qfxtext/elide/data-X11/elide.qml b/tests/auto/declarative/visual/qmlgraphicstext/elide/data-X11/elide.qml
index cfd832e..cfd832e 100644
--- a/tests/auto/declarative/visual/qfxtext/elide/data-X11/elide.qml
+++ b/tests/auto/declarative/visual/qmlgraphicstext/elide/data-X11/elide.qml
diff --git a/tests/auto/declarative/visual/qfxtext/elide/data-X11/multilength.0.png b/tests/auto/declarative/visual/qmlgraphicstext/elide/data-X11/multilength.0.png
index 6e2b625..6e2b625 100644
--- a/tests/auto/declarative/visual/qfxtext/elide/data-X11/multilength.0.png
+++ b/tests/auto/declarative/visual/qmlgraphicstext/elide/data-X11/multilength.0.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qfxtext/elide/data-X11/multilength.qml b/tests/auto/declarative/visual/qmlgraphicstext/elide/data-X11/multilength.qml
index 0c06196..0c06196 100644
--- a/tests/auto/declarative/visual/qfxtext/elide/data-X11/multilength.qml
+++ b/tests/auto/declarative/visual/qmlgraphicstext/elide/data-X11/multilength.qml
diff --git a/tests/auto/declarative/visual/qfxtext/elide/data/elide.0.png b/tests/auto/declarative/visual/qmlgraphicstext/elide/data/elide.0.png
index 1a8c89b..1a8c89b 100644
--- a/tests/auto/declarative/visual/qfxtext/elide/data/elide.0.png
+++ b/tests/auto/declarative/visual/qmlgraphicstext/elide/data/elide.0.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qfxtext/elide/data/elide.qml b/tests/auto/declarative/visual/qmlgraphicstext/elide/data/elide.qml
index 59f17f7..59f17f7 100644
--- a/tests/auto/declarative/visual/qfxtext/elide/data/elide.qml
+++ b/tests/auto/declarative/visual/qmlgraphicstext/elide/data/elide.qml
diff --git a/tests/auto/declarative/visual/qfxtext/elide/elide.qml b/tests/auto/declarative/visual/qmlgraphicstext/elide/elide.qml
index 3c9ea5b..3c9ea5b 100644
--- a/tests/auto/declarative/visual/qfxtext/elide/elide.qml
+++ b/tests/auto/declarative/visual/qmlgraphicstext/elide/elide.qml
diff --git a/tests/auto/declarative/visual/qfxtext/elide/multilength.qml b/tests/auto/declarative/visual/qmlgraphicstext/elide/multilength.qml
index fa74cc4..fa74cc4 100644
--- a/tests/auto/declarative/visual/qfxtext/elide/multilength.qml
+++ b/tests/auto/declarative/visual/qmlgraphicstext/elide/multilength.qml
diff --git a/tests/auto/declarative/visual/qfxtext/font/data-MAC/plaintext.0.png b/tests/auto/declarative/visual/qmlgraphicstext/font/data-MAC/plaintext.0.png
index a54a327..05a6e51 100644
--- a/tests/auto/declarative/visual/qfxtext/font/data-MAC/plaintext.0.png
+++ b/tests/auto/declarative/visual/qmlgraphicstext/font/data-MAC/plaintext.0.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qmlgraphicstext/font/data-MAC/plaintext.qml b/tests/auto/declarative/visual/qmlgraphicstext/font/data-MAC/plaintext.qml
new file mode 100644
index 0000000..7e591c8
--- /dev/null
+++ b/tests/auto/declarative/visual/qmlgraphicstext/font/data-MAC/plaintext.qml
@@ -0,0 +1,351 @@
+import Qt.VisualTest 4.6
+
+VisualTest {
+ Frame {
+ msec: 0
+ }
+ Frame {
+ msec: 16
+ hash: "d6479cc04d67055c2fd8f4ed2fca829b"
+ }
+ Frame {
+ msec: 32
+ hash: "d6479cc04d67055c2fd8f4ed2fca829b"
+ }
+ Frame {
+ msec: 48
+ hash: "d6479cc04d67055c2fd8f4ed2fca829b"
+ }
+ Frame {
+ msec: 64
+ hash: "d6479cc04d67055c2fd8f4ed2fca829b"
+ }
+ Frame {
+ msec: 80
+ hash: "d6479cc04d67055c2fd8f4ed2fca829b"
+ }
+ Frame {
+ msec: 96
+ hash: "d6479cc04d67055c2fd8f4ed2fca829b"
+ }
+ Frame {
+ msec: 112
+ hash: "d6479cc04d67055c2fd8f4ed2fca829b"
+ }
+ Frame {
+ msec: 128
+ hash: "d6479cc04d67055c2fd8f4ed2fca829b"
+ }
+ Frame {
+ msec: 144
+ hash: "d6479cc04d67055c2fd8f4ed2fca829b"
+ }
+ Frame {
+ msec: 160
+ hash: "d6479cc04d67055c2fd8f4ed2fca829b"
+ }
+ Frame {
+ msec: 176
+ hash: "d6479cc04d67055c2fd8f4ed2fca829b"
+ }
+ Frame {
+ msec: 192
+ hash: "d6479cc04d67055c2fd8f4ed2fca829b"
+ }
+ Frame {
+ msec: 208
+ hash: "d6479cc04d67055c2fd8f4ed2fca829b"
+ }
+ Frame {
+ msec: 224
+ hash: "d6479cc04d67055c2fd8f4ed2fca829b"
+ }
+ Frame {
+ msec: 240
+ hash: "d6479cc04d67055c2fd8f4ed2fca829b"
+ }
+ Frame {
+ msec: 256
+ hash: "d6479cc04d67055c2fd8f4ed2fca829b"
+ }
+ Frame {
+ msec: 272
+ hash: "d6479cc04d67055c2fd8f4ed2fca829b"
+ }
+ Frame {
+ msec: 288
+ hash: "d6479cc04d67055c2fd8f4ed2fca829b"
+ }
+ Frame {
+ msec: 304
+ hash: "d6479cc04d67055c2fd8f4ed2fca829b"
+ }
+ Frame {
+ msec: 320
+ hash: "d6479cc04d67055c2fd8f4ed2fca829b"
+ }
+ Frame {
+ msec: 336
+ hash: "d6479cc04d67055c2fd8f4ed2fca829b"
+ }
+ Frame {
+ msec: 352
+ hash: "d6479cc04d67055c2fd8f4ed2fca829b"
+ }
+ Frame {
+ msec: 368
+ hash: "d6479cc04d67055c2fd8f4ed2fca829b"
+ }
+ Frame {
+ msec: 384
+ hash: "d6479cc04d67055c2fd8f4ed2fca829b"
+ }
+ Frame {
+ msec: 400
+ hash: "d6479cc04d67055c2fd8f4ed2fca829b"
+ }
+ Frame {
+ msec: 416
+ hash: "d6479cc04d67055c2fd8f4ed2fca829b"
+ }
+ Frame {
+ msec: 432
+ hash: "d6479cc04d67055c2fd8f4ed2fca829b"
+ }
+ Frame {
+ msec: 448
+ hash: "d6479cc04d67055c2fd8f4ed2fca829b"
+ }
+ Frame {
+ msec: 464
+ hash: "d6479cc04d67055c2fd8f4ed2fca829b"
+ }
+ Frame {
+ msec: 480
+ hash: "d6479cc04d67055c2fd8f4ed2fca829b"
+ }
+ Frame {
+ msec: 496
+ hash: "d6479cc04d67055c2fd8f4ed2fca829b"
+ }
+ Frame {
+ msec: 512
+ hash: "d6479cc04d67055c2fd8f4ed2fca829b"
+ }
+ Frame {
+ msec: 528
+ hash: "d6479cc04d67055c2fd8f4ed2fca829b"
+ }
+ Frame {
+ msec: 544
+ hash: "d6479cc04d67055c2fd8f4ed2fca829b"
+ }
+ Frame {
+ msec: 560
+ hash: "d6479cc04d67055c2fd8f4ed2fca829b"
+ }
+ Frame {
+ msec: 576
+ hash: "d6479cc04d67055c2fd8f4ed2fca829b"
+ }
+ Frame {
+ msec: 592
+ hash: "d6479cc04d67055c2fd8f4ed2fca829b"
+ }
+ Frame {
+ msec: 608
+ hash: "d6479cc04d67055c2fd8f4ed2fca829b"
+ }
+ Frame {
+ msec: 624
+ hash: "d6479cc04d67055c2fd8f4ed2fca829b"
+ }
+ Frame {
+ msec: 640
+ hash: "d6479cc04d67055c2fd8f4ed2fca829b"
+ }
+ Frame {
+ msec: 656
+ hash: "d6479cc04d67055c2fd8f4ed2fca829b"
+ }
+ Frame {
+ msec: 672
+ hash: "d6479cc04d67055c2fd8f4ed2fca829b"
+ }
+ Frame {
+ msec: 688
+ hash: "d6479cc04d67055c2fd8f4ed2fca829b"
+ }
+ Frame {
+ msec: 704
+ hash: "d6479cc04d67055c2fd8f4ed2fca829b"
+ }
+ Frame {
+ msec: 720
+ hash: "d6479cc04d67055c2fd8f4ed2fca829b"
+ }
+ Frame {
+ msec: 736
+ hash: "d6479cc04d67055c2fd8f4ed2fca829b"
+ }
+ Frame {
+ msec: 752
+ hash: "d6479cc04d67055c2fd8f4ed2fca829b"
+ }
+ Frame {
+ msec: 768
+ hash: "d6479cc04d67055c2fd8f4ed2fca829b"
+ }
+ Frame {
+ msec: 784
+ hash: "d6479cc04d67055c2fd8f4ed2fca829b"
+ }
+ Frame {
+ msec: 800
+ hash: "d6479cc04d67055c2fd8f4ed2fca829b"
+ }
+ Frame {
+ msec: 816
+ hash: "d6479cc04d67055c2fd8f4ed2fca829b"
+ }
+ Frame {
+ msec: 832
+ hash: "d6479cc04d67055c2fd8f4ed2fca829b"
+ }
+ Frame {
+ msec: 848
+ hash: "d6479cc04d67055c2fd8f4ed2fca829b"
+ }
+ Frame {
+ msec: 864
+ hash: "d6479cc04d67055c2fd8f4ed2fca829b"
+ }
+ Frame {
+ msec: 880
+ hash: "d6479cc04d67055c2fd8f4ed2fca829b"
+ }
+ Frame {
+ msec: 896
+ hash: "d6479cc04d67055c2fd8f4ed2fca829b"
+ }
+ Frame {
+ msec: 912
+ hash: "d6479cc04d67055c2fd8f4ed2fca829b"
+ }
+ Frame {
+ msec: 928
+ hash: "d6479cc04d67055c2fd8f4ed2fca829b"
+ }
+ Frame {
+ msec: 944
+ hash: "d6479cc04d67055c2fd8f4ed2fca829b"
+ }
+ Frame {
+ msec: 960
+ image: "plaintext.0.png"
+ }
+ Frame {
+ msec: 976
+ hash: "d6479cc04d67055c2fd8f4ed2fca829b"
+ }
+ Frame {
+ msec: 992
+ hash: "d6479cc04d67055c2fd8f4ed2fca829b"
+ }
+ Frame {
+ msec: 1008
+ hash: "d6479cc04d67055c2fd8f4ed2fca829b"
+ }
+ Frame {
+ msec: 1024
+ hash: "d6479cc04d67055c2fd8f4ed2fca829b"
+ }
+ Frame {
+ msec: 1040
+ hash: "d6479cc04d67055c2fd8f4ed2fca829b"
+ }
+ Frame {
+ msec: 1056
+ hash: "d6479cc04d67055c2fd8f4ed2fca829b"
+ }
+ Frame {
+ msec: 1072
+ hash: "d6479cc04d67055c2fd8f4ed2fca829b"
+ }
+ Frame {
+ msec: 1088
+ hash: "d6479cc04d67055c2fd8f4ed2fca829b"
+ }
+ Frame {
+ msec: 1104
+ hash: "d6479cc04d67055c2fd8f4ed2fca829b"
+ }
+ Frame {
+ msec: 1120
+ hash: "d6479cc04d67055c2fd8f4ed2fca829b"
+ }
+ Frame {
+ msec: 1136
+ hash: "d6479cc04d67055c2fd8f4ed2fca829b"
+ }
+ Frame {
+ msec: 1152
+ hash: "d6479cc04d67055c2fd8f4ed2fca829b"
+ }
+ Frame {
+ msec: 1168
+ hash: "d6479cc04d67055c2fd8f4ed2fca829b"
+ }
+ Frame {
+ msec: 1184
+ hash: "d6479cc04d67055c2fd8f4ed2fca829b"
+ }
+ Key {
+ type: 6
+ key: 16777249
+ modifiers: 67108864
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1200
+ hash: "d6479cc04d67055c2fd8f4ed2fca829b"
+ }
+ Frame {
+ msec: 1216
+ hash: "d6479cc04d67055c2fd8f4ed2fca829b"
+ }
+ Frame {
+ msec: 1232
+ hash: "d6479cc04d67055c2fd8f4ed2fca829b"
+ }
+ Frame {
+ msec: 1248
+ hash: "d6479cc04d67055c2fd8f4ed2fca829b"
+ }
+ Frame {
+ msec: 1264
+ hash: "d6479cc04d67055c2fd8f4ed2fca829b"
+ }
+ Frame {
+ msec: 1280
+ hash: "d6479cc04d67055c2fd8f4ed2fca829b"
+ }
+ Frame {
+ msec: 1296
+ hash: "d6479cc04d67055c2fd8f4ed2fca829b"
+ }
+ Frame {
+ msec: 1312
+ hash: "d6479cc04d67055c2fd8f4ed2fca829b"
+ }
+ Frame {
+ msec: 1328
+ hash: "d6479cc04d67055c2fd8f4ed2fca829b"
+ }
+ Frame {
+ msec: 1344
+ hash: "d6479cc04d67055c2fd8f4ed2fca829b"
+ }
+}
diff --git a/tests/auto/declarative/visual/qfxtext/font/data-MAC/richtext.0.png b/tests/auto/declarative/visual/qmlgraphicstext/font/data-MAC/richtext.0.png
index c2ddee1..6379942 100644
--- a/tests/auto/declarative/visual/qfxtext/font/data-MAC/richtext.0.png
+++ b/tests/auto/declarative/visual/qmlgraphicstext/font/data-MAC/richtext.0.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qmlgraphicstext/font/data-MAC/richtext.qml b/tests/auto/declarative/visual/qmlgraphicstext/font/data-MAC/richtext.qml
new file mode 100644
index 0000000..4414c1c
--- /dev/null
+++ b/tests/auto/declarative/visual/qmlgraphicstext/font/data-MAC/richtext.qml
@@ -0,0 +1,359 @@
+import Qt.VisualTest 4.6
+
+VisualTest {
+ Frame {
+ msec: 0
+ }
+ Frame {
+ msec: 16
+ hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
+ }
+ Frame {
+ msec: 32
+ hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
+ }
+ Frame {
+ msec: 48
+ hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
+ }
+ Frame {
+ msec: 64
+ hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
+ }
+ Frame {
+ msec: 80
+ hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
+ }
+ Frame {
+ msec: 96
+ hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
+ }
+ Frame {
+ msec: 112
+ hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
+ }
+ Frame {
+ msec: 128
+ hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
+ }
+ Frame {
+ msec: 144
+ hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
+ }
+ Frame {
+ msec: 160
+ hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
+ }
+ Frame {
+ msec: 176
+ hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
+ }
+ Frame {
+ msec: 192
+ hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
+ }
+ Frame {
+ msec: 208
+ hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
+ }
+ Frame {
+ msec: 224
+ hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
+ }
+ Frame {
+ msec: 240
+ hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
+ }
+ Frame {
+ msec: 256
+ hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
+ }
+ Frame {
+ msec: 272
+ hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
+ }
+ Frame {
+ msec: 288
+ hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
+ }
+ Frame {
+ msec: 304
+ hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
+ }
+ Frame {
+ msec: 320
+ hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
+ }
+ Frame {
+ msec: 336
+ hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
+ }
+ Frame {
+ msec: 352
+ hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
+ }
+ Frame {
+ msec: 368
+ hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
+ }
+ Frame {
+ msec: 384
+ hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
+ }
+ Frame {
+ msec: 400
+ hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
+ }
+ Frame {
+ msec: 416
+ hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
+ }
+ Frame {
+ msec: 432
+ hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
+ }
+ Frame {
+ msec: 448
+ hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
+ }
+ Frame {
+ msec: 464
+ hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
+ }
+ Frame {
+ msec: 480
+ hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
+ }
+ Frame {
+ msec: 496
+ hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
+ }
+ Frame {
+ msec: 512
+ hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
+ }
+ Frame {
+ msec: 528
+ hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
+ }
+ Frame {
+ msec: 544
+ hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
+ }
+ Frame {
+ msec: 560
+ hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
+ }
+ Frame {
+ msec: 576
+ hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
+ }
+ Frame {
+ msec: 592
+ hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
+ }
+ Frame {
+ msec: 608
+ hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
+ }
+ Frame {
+ msec: 624
+ hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
+ }
+ Frame {
+ msec: 640
+ hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
+ }
+ Frame {
+ msec: 656
+ hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
+ }
+ Frame {
+ msec: 672
+ hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
+ }
+ Frame {
+ msec: 688
+ hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
+ }
+ Frame {
+ msec: 704
+ hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
+ }
+ Frame {
+ msec: 720
+ hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
+ }
+ Frame {
+ msec: 736
+ hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
+ }
+ Frame {
+ msec: 752
+ hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
+ }
+ Frame {
+ msec: 768
+ hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
+ }
+ Frame {
+ msec: 784
+ hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
+ }
+ Frame {
+ msec: 800
+ hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
+ }
+ Frame {
+ msec: 816
+ hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
+ }
+ Frame {
+ msec: 832
+ hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
+ }
+ Frame {
+ msec: 848
+ hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
+ }
+ Frame {
+ msec: 864
+ hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
+ }
+ Frame {
+ msec: 880
+ hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
+ }
+ Frame {
+ msec: 896
+ hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
+ }
+ Frame {
+ msec: 912
+ hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
+ }
+ Frame {
+ msec: 928
+ hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
+ }
+ Frame {
+ msec: 944
+ hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
+ }
+ Frame {
+ msec: 960
+ image: "richtext.0.png"
+ }
+ Frame {
+ msec: 976
+ hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
+ }
+ Frame {
+ msec: 992
+ hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
+ }
+ Frame {
+ msec: 1008
+ hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
+ }
+ Frame {
+ msec: 1024
+ hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
+ }
+ Frame {
+ msec: 1040
+ hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
+ }
+ Frame {
+ msec: 1056
+ hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
+ }
+ Frame {
+ msec: 1072
+ hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
+ }
+ Frame {
+ msec: 1088
+ hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
+ }
+ Frame {
+ msec: 1104
+ hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
+ }
+ Frame {
+ msec: 1120
+ hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
+ }
+ Frame {
+ msec: 1136
+ hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
+ }
+ Frame {
+ msec: 1152
+ hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
+ }
+ Key {
+ type: 6
+ key: 16777249
+ modifiers: 67108864
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1168
+ hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
+ }
+ Frame {
+ msec: 1184
+ hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
+ }
+ Frame {
+ msec: 1200
+ hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
+ }
+ Frame {
+ msec: 1216
+ hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
+ }
+ Frame {
+ msec: 1232
+ hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
+ }
+ Frame {
+ msec: 1248
+ hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
+ }
+ Frame {
+ msec: 1264
+ hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
+ }
+ Frame {
+ msec: 1280
+ hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
+ }
+ Frame {
+ msec: 1296
+ hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
+ }
+ Frame {
+ msec: 1312
+ hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
+ }
+ Frame {
+ msec: 1328
+ hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
+ }
+ Frame {
+ msec: 1344
+ hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
+ }
+ Frame {
+ msec: 1360
+ hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
+ }
+ Frame {
+ msec: 1376
+ hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
+ }
+}
diff --git a/tests/auto/declarative/visual/qfxtext/font/data/plaintext.0.png b/tests/auto/declarative/visual/qmlgraphicstext/font/data/plaintext.0.png
index 50d56dc..50d56dc 100644
--- a/tests/auto/declarative/visual/qfxtext/font/data/plaintext.0.png
+++ b/tests/auto/declarative/visual/qmlgraphicstext/font/data/plaintext.0.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qfxtext/font/data/plaintext.qml b/tests/auto/declarative/visual/qmlgraphicstext/font/data/plaintext.qml
index f4cbcbd..f4cbcbd 100644
--- a/tests/auto/declarative/visual/qfxtext/font/data/plaintext.qml
+++ b/tests/auto/declarative/visual/qmlgraphicstext/font/data/plaintext.qml
diff --git a/tests/auto/declarative/visual/qfxtext/font/data/richtext.0.png b/tests/auto/declarative/visual/qmlgraphicstext/font/data/richtext.0.png
index 2910670..2910670 100644
--- a/tests/auto/declarative/visual/qfxtext/font/data/richtext.0.png
+++ b/tests/auto/declarative/visual/qmlgraphicstext/font/data/richtext.0.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qfxtext/font/data/richtext.qml b/tests/auto/declarative/visual/qmlgraphicstext/font/data/richtext.qml
index 9f396c2..9f396c2 100644
--- a/tests/auto/declarative/visual/qfxtext/font/data/richtext.qml
+++ b/tests/auto/declarative/visual/qmlgraphicstext/font/data/richtext.qml
diff --git a/tests/auto/declarative/visual/qfxtext/font/plaintext.qml b/tests/auto/declarative/visual/qmlgraphicstext/font/plaintext.qml
index f219e09..a3aa929 100644
--- a/tests/auto/declarative/visual/qfxtext/font/plaintext.qml
+++ b/tests/auto/declarative/visual/qmlgraphicstext/font/plaintext.qml
@@ -55,10 +55,10 @@ Rectangle {
text: s.text; horizontalAlignment: Text.AlignLeft; width: 800
}
Text {
- text: s.text; horizontalAlignment: Text.AlignHCenter; width: 800
+ text: s.text; horizontalAlignment: Text.AlignHCenter; verticalAlignment: Text.AlignVCenter; width: 800; height: 20
}
Text {
- text: s.text; horizontalAlignment: Text.AlignRight; width: 800
+ text: s.text; horizontalAlignment: Text.AlignRight; verticalAlignment: Text.AlignBottom; width: 800; height: 20
}
Text {
text: s.text; font.pixelSize: 18; style: Text.Outline; styleColor: "white"; wrap: true; width: 200
diff --git a/tests/auto/declarative/visual/qfxtext/font/richtext.qml b/tests/auto/declarative/visual/qmlgraphicstext/font/richtext.qml
index 00a9749..35aa232 100644
--- a/tests/auto/declarative/visual/qfxtext/font/richtext.qml
+++ b/tests/auto/declarative/visual/qmlgraphicstext/font/richtext.qml
@@ -55,10 +55,10 @@ Rectangle {
text: s.text; horizontalAlignment: Text.AlignLeft; width: 800
}
Text {
- text: s.text; horizontalAlignment: Text.AlignHCenter; width: 800
+ text: s.text; horizontalAlignment: Text.AlignHCenter; verticalAlignment: Text.AlignVCenter; width: 800; height: 20
}
Text {
- text: s.text; horizontalAlignment: Text.AlignRight; width: 800
+ text: s.text; horizontalAlignment: Text.AlignRight; verticalAlignment: Text.AlignBottom; width: 800; height: 20
}
Text {
text: s.text; font.pixelSize: 18; style: Text.Outline; styleColor: "white"; wrap: true; width: 200
diff --git a/tests/auto/declarative/visual/qmlspringfollow/data-MAC/follow.0.png b/tests/auto/declarative/visual/qmlspringfollow/data-MAC/follow.0.png
new file mode 100644
index 0000000..d753c97
--- /dev/null
+++ b/tests/auto/declarative/visual/qmlspringfollow/data-MAC/follow.0.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qmlspringfollow/data-MAC/follow.1.png b/tests/auto/declarative/visual/qmlspringfollow/data-MAC/follow.1.png
new file mode 100644
index 0000000..98fc111
--- /dev/null
+++ b/tests/auto/declarative/visual/qmlspringfollow/data-MAC/follow.1.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qmlspringfollow/data-MAC/follow.2.png b/tests/auto/declarative/visual/qmlspringfollow/data-MAC/follow.2.png
new file mode 100644
index 0000000..b1d109e
--- /dev/null
+++ b/tests/auto/declarative/visual/qmlspringfollow/data-MAC/follow.2.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qmlspringfollow/data-MAC/follow.3.png b/tests/auto/declarative/visual/qmlspringfollow/data-MAC/follow.3.png
new file mode 100644
index 0000000..595d92e
--- /dev/null
+++ b/tests/auto/declarative/visual/qmlspringfollow/data-MAC/follow.3.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qmlspringfollow/data-MAC/follow.4.png b/tests/auto/declarative/visual/qmlspringfollow/data-MAC/follow.4.png
new file mode 100644
index 0000000..93e1536
--- /dev/null
+++ b/tests/auto/declarative/visual/qmlspringfollow/data-MAC/follow.4.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qmlspringfollow/data-MAC/follow.5.png b/tests/auto/declarative/visual/qmlspringfollow/data-MAC/follow.5.png
new file mode 100644
index 0000000..b27cc9f
--- /dev/null
+++ b/tests/auto/declarative/visual/qmlspringfollow/data-MAC/follow.5.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qmlspringfollow/data-MAC/follow.qml b/tests/auto/declarative/visual/qmlspringfollow/data-MAC/follow.qml
new file mode 100644
index 0000000..3c0dad8
--- /dev/null
+++ b/tests/auto/declarative/visual/qmlspringfollow/data-MAC/follow.qml
@@ -0,0 +1,1691 @@
+import Qt.VisualTest 4.6
+
+VisualTest {
+ Frame {
+ msec: 0
+ }
+ Frame {
+ msec: 16
+ hash: "ea677d128f47343d81a081c438aa2f6c"
+ }
+ Frame {
+ msec: 32
+ hash: "ea677d128f47343d81a081c438aa2f6c"
+ }
+ Frame {
+ msec: 48
+ hash: "403e130b7cf0a41d8348a227293d98d1"
+ }
+ Frame {
+ msec: 64
+ hash: "d2250ca93235b6a087b5e582f7e941d6"
+ }
+ Frame {
+ msec: 80
+ hash: "3e95bdb5546de8ed7bb33de704d2890e"
+ }
+ Frame {
+ msec: 96
+ hash: "438612a44780d6587f99a44c943eb60f"
+ }
+ Frame {
+ msec: 112
+ hash: "057d47c73edcd149c0b1e6274f98deae"
+ }
+ Frame {
+ msec: 128
+ hash: "c15ca80f3efb55d067e38bd92f360b14"
+ }
+ Frame {
+ msec: 144
+ hash: "9f1b15db2eb172d97eef4f7c78d11e4f"
+ }
+ Frame {
+ msec: 160
+ hash: "a81514d058846ae1c60575534ad47b21"
+ }
+ Frame {
+ msec: 176
+ hash: "48d0f3971ed369d6a82b06ca9febc435"
+ }
+ Frame {
+ msec: 192
+ hash: "8277eb954d0ca9293f3d05b979db3fe3"
+ }
+ Frame {
+ msec: 208
+ hash: "edb64bdcb13f67813fcd3cbedb608cf3"
+ }
+ Frame {
+ msec: 224
+ hash: "3a51a89e15b0709fcf6591ce4096c52d"
+ }
+ Frame {
+ msec: 240
+ hash: "ffe486e038988cea3ff2ec6b2fcc516f"
+ }
+ Frame {
+ msec: 256
+ hash: "1267aa3970ac861827e84c5da93523c7"
+ }
+ Frame {
+ msec: 272
+ hash: "c5c0d501f102876a0b06f6d100f19a77"
+ }
+ Frame {
+ msec: 288
+ hash: "b78207cb082771fc608a084c69c38399"
+ }
+ Frame {
+ msec: 304
+ hash: "86cc014a4601ddf84478c8a0f44de7ed"
+ }
+ Frame {
+ msec: 320
+ hash: "fbe34a8c894aa1c1ddb26171069c92f6"
+ }
+ Frame {
+ msec: 336
+ hash: "c916a45687baa73e1023cdb03be42669"
+ }
+ Frame {
+ msec: 352
+ hash: "1157f5c96e49fdc0afeb126453e19260"
+ }
+ Frame {
+ msec: 368
+ hash: "c7528a6f57f4241dc2f5867436c44fd9"
+ }
+ Frame {
+ msec: 384
+ hash: "054ac7e1cd4448fdd12f0175b3bdff90"
+ }
+ Frame {
+ msec: 400
+ hash: "4ccf29d6ce92332683f6b49b89357579"
+ }
+ Frame {
+ msec: 416
+ hash: "c46e42accdeba8b32bd4d6d43894c61c"
+ }
+ Frame {
+ msec: 432
+ hash: "2ab2e8d8a3d58ac1c17932b9485cbc67"
+ }
+ Frame {
+ msec: 448
+ hash: "347092c3876535e41e8368be2cd19aed"
+ }
+ Frame {
+ msec: 464
+ hash: "311b1c44074b0e55a990e971f877c898"
+ }
+ Frame {
+ msec: 480
+ hash: "198908af8468b4500fac85262eb82596"
+ }
+ Frame {
+ msec: 496
+ hash: "202c33e301ad850a888223d3abdd06e6"
+ }
+ Frame {
+ msec: 512
+ hash: "f3e0ce1386571c9e6be2656d402b4960"
+ }
+ Frame {
+ msec: 528
+ hash: "b9c900bfedc7159ee2c0b0af6e66fc92"
+ }
+ Frame {
+ msec: 544
+ hash: "f978850a8977c3c32e4ae9a43b7a3a8b"
+ }
+ Frame {
+ msec: 560
+ hash: "637e5d9580d783864134b403e49cb47b"
+ }
+ Frame {
+ msec: 576
+ hash: "8082c1e1eccb8588ebdbb739e31bda49"
+ }
+ Frame {
+ msec: 592
+ hash: "c513f544df3d94223bb4fbf06befa2d7"
+ }
+ Frame {
+ msec: 608
+ hash: "e7f589e64d3cd054349161971d4ef42e"
+ }
+ Frame {
+ msec: 624
+ hash: "bb375339d4155f13c353bc90eb9b9cbf"
+ }
+ Frame {
+ msec: 640
+ hash: "924368c60be4be048a19af942a8e402c"
+ }
+ Frame {
+ msec: 656
+ hash: "c0142a6872bf5a445302952aaa6daa0d"
+ }
+ Frame {
+ msec: 672
+ hash: "fab2a7e79b235f6432cd4c48740e3020"
+ }
+ Frame {
+ msec: 688
+ hash: "fda751a9b20100007c33669bdb6f7f23"
+ }
+ Frame {
+ msec: 704
+ hash: "d97d2d108dba9aefd36b0f6b2f160f23"
+ }
+ Frame {
+ msec: 720
+ hash: "bf3683eb4308904de61fb3fb59802e37"
+ }
+ Frame {
+ msec: 736
+ hash: "908f34ec52d59027f65c673c17077ca6"
+ }
+ Frame {
+ msec: 752
+ hash: "19ae0ec52c077eff92451c9924be2c23"
+ }
+ Frame {
+ msec: 768
+ hash: "898277481841e4c4f8992fd755784e5a"
+ }
+ Frame {
+ msec: 784
+ hash: "9613da2dcdf470561d20a982777f50f6"
+ }
+ Frame {
+ msec: 800
+ hash: "fdfc54fa3657be02c2ee65d787e8c7a5"
+ }
+ Frame {
+ msec: 816
+ hash: "1d3b6cff6e62890db90213ebab88dca3"
+ }
+ Frame {
+ msec: 832
+ hash: "713e9c0f768f6cc8cc6c78c72b41b47c"
+ }
+ Frame {
+ msec: 848
+ hash: "9068d912a8d3e6e0b5b458c12ddad126"
+ }
+ Frame {
+ msec: 864
+ hash: "e85192393e4911dbaf9c734d2e386bbf"
+ }
+ Frame {
+ msec: 880
+ hash: "4f2374e6c8763e1e5b3b7cebdf5b8ebc"
+ }
+ Frame {
+ msec: 896
+ hash: "986a32decb18065294356fb85953891e"
+ }
+ Frame {
+ msec: 912
+ hash: "faa36d337589c59761814e3065874aa3"
+ }
+ Frame {
+ msec: 928
+ hash: "9c823d92cd71932f0ad1d247fdd8c66e"
+ }
+ Frame {
+ msec: 944
+ hash: "3ebcf592e427bcbc8a92dc1bee903845"
+ }
+ Frame {
+ msec: 960
+ image: "follow.0.png"
+ }
+ Frame {
+ msec: 976
+ hash: "b1a205f75f5ab7b69f4d9bd0582d7896"
+ }
+ Frame {
+ msec: 992
+ hash: "0cf4ce09fd895a174271e3cb37c72de6"
+ }
+ Frame {
+ msec: 1008
+ hash: "e6487b45fc20afc4c1a24c8669919611"
+ }
+ Frame {
+ msec: 1024
+ hash: "fe2a4eb899611495fa5ad88b7c5f4c7e"
+ }
+ Frame {
+ msec: 1040
+ hash: "07b880170d1ba41e4d1a1277e8184089"
+ }
+ Frame {
+ msec: 1056
+ hash: "27afbfb4b961570f8844e05595b11d4f"
+ }
+ Frame {
+ msec: 1072
+ hash: "1b6cfd4c2c2c007837cfb9746f44ec20"
+ }
+ Frame {
+ msec: 1088
+ hash: "8f82c7f1cb2ded469a7cb3a0827e919e"
+ }
+ Frame {
+ msec: 1104
+ hash: "d8581781550c21bc0fa6b75fc6de3f57"
+ }
+ Frame {
+ msec: 1120
+ hash: "104a6c18b4a16732de9dba9bfb92eb5a"
+ }
+ Frame {
+ msec: 1136
+ hash: "ebbdeb2de19644aeb41c03f852d1fc15"
+ }
+ Frame {
+ msec: 1152
+ hash: "a8cc1328eb65fed5ca75d79c6e628ec1"
+ }
+ Frame {
+ msec: 1168
+ hash: "a1192d371ffd3e9f8a23abca6a8b4d98"
+ }
+ Frame {
+ msec: 1184
+ hash: "06b7749eace5d149bd35f668c4df9811"
+ }
+ Frame {
+ msec: 1200
+ hash: "de1f7eb2c3224754a75d0a953ee24a76"
+ }
+ Frame {
+ msec: 1216
+ hash: "1bc3c2cf2058ab5f8d491ad35605c6d7"
+ }
+ Frame {
+ msec: 1232
+ hash: "4c2b7e3f7cad28a424f3fdb574d732b6"
+ }
+ Frame {
+ msec: 1248
+ hash: "ebb9c07b34f4acd9ee2652324c81e5d1"
+ }
+ Frame {
+ msec: 1264
+ hash: "fef63629bdae6f1d744633916c6b0852"
+ }
+ Frame {
+ msec: 1280
+ hash: "aacb966d803ed6986db40e51d2a63dff"
+ }
+ Frame {
+ msec: 1296
+ hash: "796bb7137a909d524b1cec022c1be6ea"
+ }
+ Frame {
+ msec: 1312
+ hash: "d88526b472d9ba58b93f868a150154f3"
+ }
+ Frame {
+ msec: 1328
+ hash: "d6a24e9f446565c0d0d0bf25db80e88e"
+ }
+ Frame {
+ msec: 1344
+ hash: "08902af1f5ba7566f2fef79200ac0362"
+ }
+ Frame {
+ msec: 1360
+ hash: "b655edf8bd25f5e05fcb1cce64aaad89"
+ }
+ Frame {
+ msec: 1376
+ hash: "5f526a0e92c1846ca7099c5640208dd0"
+ }
+ Frame {
+ msec: 1392
+ hash: "c354f31e4e75d6ccf4c284113c54377b"
+ }
+ Frame {
+ msec: 1408
+ hash: "2f8143ead16b7c65c8f43469754c09dd"
+ }
+ Frame {
+ msec: 1424
+ hash: "b486f4056d300e22860fa995b6f09f92"
+ }
+ Frame {
+ msec: 1440
+ hash: "4a24f651b8ad911b04426a07b4663a3d"
+ }
+ Frame {
+ msec: 1456
+ hash: "aad02861a66647d27ea3746d9b455e91"
+ }
+ Frame {
+ msec: 1472
+ hash: "ce4225df7a187919c91cc2dd950e11f0"
+ }
+ Frame {
+ msec: 1488
+ hash: "5479a97041b64406883100567df4b9b7"
+ }
+ Frame {
+ msec: 1504
+ hash: "76e67f9c5b552f1ff47c3c7b23eb1b76"
+ }
+ Frame {
+ msec: 1520
+ hash: "8c3e1d2fd58eaf2a8da16bb0349b1e5e"
+ }
+ Frame {
+ msec: 1536
+ hash: "4642a396f4a4bb3b97845782e1d1ce93"
+ }
+ Frame {
+ msec: 1552
+ hash: "4d3e8c9ea7c8c1407db564a3a6e430ff"
+ }
+ Frame {
+ msec: 1568
+ hash: "e041300f1d2956f35baebed6c7c9c750"
+ }
+ Frame {
+ msec: 1584
+ hash: "b20e241906a2b9e38b03c0991d21160e"
+ }
+ Frame {
+ msec: 1600
+ hash: "cb5c32ad57d1931a69c20328f8f2d060"
+ }
+ Frame {
+ msec: 1616
+ hash: "021ba4fc38e1652afeab73047e126a17"
+ }
+ Frame {
+ msec: 1632
+ hash: "d27728f36491ba432e3655850402ee6b"
+ }
+ Frame {
+ msec: 1648
+ hash: "20a87f4d9afd2039e44c2b5b539d0298"
+ }
+ Frame {
+ msec: 1664
+ hash: "46c4016acfe390495307d3d64b93902d"
+ }
+ Frame {
+ msec: 1680
+ hash: "a356b011266d901d7148e662393e5f72"
+ }
+ Frame {
+ msec: 1696
+ hash: "43b4a8e0d73ab2c6be5db2b48c3e7013"
+ }
+ Frame {
+ msec: 1712
+ hash: "b7a5bfbecabbf0f20b0e2c0959051b66"
+ }
+ Frame {
+ msec: 1728
+ hash: "8eff269aeb6f3bc540dd8cf6491d53b8"
+ }
+ Frame {
+ msec: 1744
+ hash: "9c524c30ef7cd6dbfb911ec1c75d0e32"
+ }
+ Frame {
+ msec: 1760
+ hash: "a064e420983d68f2f2baca9ea9119236"
+ }
+ Frame {
+ msec: 1776
+ hash: "99739628a95e72704e503ed6d1dea712"
+ }
+ Frame {
+ msec: 1792
+ hash: "1f0f916ed7382f10c23eb63052377fe1"
+ }
+ Frame {
+ msec: 1808
+ hash: "d99f731943018a50e8738bf638ca3b31"
+ }
+ Frame {
+ msec: 1824
+ hash: "10182c1206e73d5a59b377f5d6061bef"
+ }
+ Frame {
+ msec: 1840
+ hash: "a272abb9905b17e4bdd717db87514c11"
+ }
+ Frame {
+ msec: 1856
+ hash: "81ffae766d85d829d7e16071ac44fcc1"
+ }
+ Frame {
+ msec: 1872
+ hash: "4e2402d3eafa149d0b8ad9238c3b985d"
+ }
+ Frame {
+ msec: 1888
+ hash: "70ad42fd0824ce00181514bac4b6b0f4"
+ }
+ Frame {
+ msec: 1904
+ hash: "6d1ff46bd1606662fec47f14152bfd4a"
+ }
+ Frame {
+ msec: 1920
+ image: "follow.1.png"
+ }
+ Frame {
+ msec: 1936
+ hash: "9a37d437b9476375b3a34ac293a0789a"
+ }
+ Frame {
+ msec: 1952
+ hash: "0a5fa0cd8bc22d274b00d32383ffc486"
+ }
+ Frame {
+ msec: 1968
+ hash: "1a284b36906f0adcef2ed66c0cfb5a9d"
+ }
+ Frame {
+ msec: 1984
+ hash: "049ca635405f3f88f85629f559919569"
+ }
+ Frame {
+ msec: 2000
+ hash: "d8d3d7b55f2a04dbf187d2296e8da84a"
+ }
+ Frame {
+ msec: 2016
+ hash: "57a04352e211d888d8182449b8f970e0"
+ }
+ Frame {
+ msec: 2032
+ hash: "48229fc62e5ea19c54f961d3b0bb5b26"
+ }
+ Frame {
+ msec: 2048
+ hash: "8c5d645cdbbb343789fc6ac27482b76e"
+ }
+ Frame {
+ msec: 2064
+ hash: "3c4d50a07778ae5105f2e7514bff37ca"
+ }
+ Frame {
+ msec: 2080
+ hash: "ce97d094ede43b3e74e81fa63e04dad7"
+ }
+ Frame {
+ msec: 2096
+ hash: "2b2e4e9681bbc672b51148c10b183ec8"
+ }
+ Frame {
+ msec: 2112
+ hash: "0421ac4f53c050bfffb2c8de16aafd46"
+ }
+ Frame {
+ msec: 2128
+ hash: "953bdaacefe42a841bf1cdd7da3b442a"
+ }
+ Frame {
+ msec: 2144
+ hash: "7209f7d812af5bdbca4b15f303cb5ff7"
+ }
+ Frame {
+ msec: 2160
+ hash: "3f64635e9c43b8b6a402c5d6fe26e648"
+ }
+ Frame {
+ msec: 2176
+ hash: "92926b4cf66b15cd0ddb468f2bd8bd62"
+ }
+ Frame {
+ msec: 2192
+ hash: "ee0810fe7509d2d61d9306908816bba4"
+ }
+ Frame {
+ msec: 2208
+ hash: "55249aae2bb6db6c363ecb4b89f56270"
+ }
+ Frame {
+ msec: 2224
+ hash: "73ea66c3c61e8105ac61d26c8cfdbba3"
+ }
+ Frame {
+ msec: 2240
+ hash: "f75b56ced71167a1bc1800b0d2f0f249"
+ }
+ Frame {
+ msec: 2256
+ hash: "e0d09e7a8007bfbc1efd4bd89f49847a"
+ }
+ Frame {
+ msec: 2272
+ hash: "159e98e8340375c6700015288660cbf8"
+ }
+ Frame {
+ msec: 2288
+ hash: "b7aa76fced5c78eb8e55ce9f36d081e2"
+ }
+ Frame {
+ msec: 2304
+ hash: "ac87e65a58914c1984b2dc95cf6de76d"
+ }
+ Frame {
+ msec: 2320
+ hash: "7a0131b0a9ec395a2286438625881bee"
+ }
+ Frame {
+ msec: 2336
+ hash: "84da8fd2b435b3ac9bad3350cd3a9ec0"
+ }
+ Frame {
+ msec: 2352
+ hash: "1ed376000e60129b4bcf06ea73cb5819"
+ }
+ Frame {
+ msec: 2368
+ hash: "8c713e210143ab5f19bdddd918f86ef3"
+ }
+ Frame {
+ msec: 2384
+ hash: "269b595c5691747b56be58d5b92ae497"
+ }
+ Frame {
+ msec: 2400
+ hash: "486d80316c88da4adc736df72fc86f45"
+ }
+ Frame {
+ msec: 2416
+ hash: "b67cc78a3bfcd026264cfb9b7146c4d5"
+ }
+ Frame {
+ msec: 2432
+ hash: "9d2cdecf3e9f067e68b81b202c8f62b2"
+ }
+ Frame {
+ msec: 2448
+ hash: "02748271316f8382f4788322fda807c1"
+ }
+ Frame {
+ msec: 2464
+ hash: "669986c581c162b8d3160336b92b2479"
+ }
+ Frame {
+ msec: 2480
+ hash: "5dc604aaa95f45eba0dfc7aa3a73bca4"
+ }
+ Frame {
+ msec: 2496
+ hash: "2199d6e809fc1e1879861fbbd63974e8"
+ }
+ Frame {
+ msec: 2512
+ hash: "335a5561620f779a4fd0c1f33da2fc05"
+ }
+ Frame {
+ msec: 2528
+ hash: "3e312b8de56c902ca20aba259c8559b2"
+ }
+ Frame {
+ msec: 2544
+ hash: "37634addfe0cb2efdd9d6a1a134fae1e"
+ }
+ Frame {
+ msec: 2560
+ hash: "a3cdb1d331845e268e393dd493a71613"
+ }
+ Frame {
+ msec: 2576
+ hash: "ccfb90a921e74f4e172ea1fba8c38eb5"
+ }
+ Frame {
+ msec: 2592
+ hash: "370f60a35849b7a8221f9474cbdaa201"
+ }
+ Frame {
+ msec: 2608
+ hash: "e1b8d1d7298a3d3ade82493fb6f99909"
+ }
+ Frame {
+ msec: 2624
+ hash: "e1b8d1d7298a3d3ade82493fb6f99909"
+ }
+ Frame {
+ msec: 2640
+ hash: "74ecfaced66f630d1863c04000fa7f01"
+ }
+ Frame {
+ msec: 2656
+ hash: "74ecfaced66f630d1863c04000fa7f01"
+ }
+ Frame {
+ msec: 2672
+ hash: "c803b3258d0e1d8e6c1292ea2a00f76b"
+ }
+ Frame {
+ msec: 2688
+ hash: "c803b3258d0e1d8e6c1292ea2a00f76b"
+ }
+ Frame {
+ msec: 2704
+ hash: "c803b3258d0e1d8e6c1292ea2a00f76b"
+ }
+ Frame {
+ msec: 2720
+ hash: "9f3f4fe1be7bd4511a0408fd5ab1b11f"
+ }
+ Frame {
+ msec: 2736
+ hash: "9f3f4fe1be7bd4511a0408fd5ab1b11f"
+ }
+ Frame {
+ msec: 2752
+ hash: "cd2c4e1a288d09f46dd557973c22e1be"
+ }
+ Frame {
+ msec: 2768
+ hash: "cd2c4e1a288d09f46dd557973c22e1be"
+ }
+ Frame {
+ msec: 2784
+ hash: "cd2c4e1a288d09f46dd557973c22e1be"
+ }
+ Frame {
+ msec: 2800
+ hash: "8109005d7e21d16b77f88efce2b530e4"
+ }
+ Frame {
+ msec: 2816
+ hash: "8109005d7e21d16b77f88efce2b530e4"
+ }
+ Frame {
+ msec: 2832
+ hash: "8109005d7e21d16b77f88efce2b530e4"
+ }
+ Frame {
+ msec: 2848
+ hash: "8109005d7e21d16b77f88efce2b530e4"
+ }
+ Frame {
+ msec: 2864
+ hash: "8109005d7e21d16b77f88efce2b530e4"
+ }
+ Frame {
+ msec: 2880
+ image: "follow.2.png"
+ }
+ Frame {
+ msec: 2896
+ hash: "e009f65ae035fb8a9c27a1d57f10c35f"
+ }
+ Frame {
+ msec: 2912
+ hash: "e009f65ae035fb8a9c27a1d57f10c35f"
+ }
+ Frame {
+ msec: 2928
+ hash: "e009f65ae035fb8a9c27a1d57f10c35f"
+ }
+ Frame {
+ msec: 2944
+ hash: "e009f65ae035fb8a9c27a1d57f10c35f"
+ }
+ Frame {
+ msec: 2960
+ hash: "31a446fab3c9a92f20fbb065b62d4357"
+ }
+ Frame {
+ msec: 2976
+ hash: "31a446fab3c9a92f20fbb065b62d4357"
+ }
+ Frame {
+ msec: 2992
+ hash: "31a446fab3c9a92f20fbb065b62d4357"
+ }
+ Frame {
+ msec: 3008
+ hash: "31a446fab3c9a92f20fbb065b62d4357"
+ }
+ Frame {
+ msec: 3024
+ hash: "31a446fab3c9a92f20fbb065b62d4357"
+ }
+ Frame {
+ msec: 3040
+ hash: "31a446fab3c9a92f20fbb065b62d4357"
+ }
+ Frame {
+ msec: 3056
+ hash: "31a446fab3c9a92f20fbb065b62d4357"
+ }
+ Frame {
+ msec: 3072
+ hash: "31a446fab3c9a92f20fbb065b62d4357"
+ }
+ Frame {
+ msec: 3088
+ hash: "31a446fab3c9a92f20fbb065b62d4357"
+ }
+ Frame {
+ msec: 3104
+ hash: "31a446fab3c9a92f20fbb065b62d4357"
+ }
+ Frame {
+ msec: 3120
+ hash: "31a446fab3c9a92f20fbb065b62d4357"
+ }
+ Frame {
+ msec: 3136
+ hash: "31a446fab3c9a92f20fbb065b62d4357"
+ }
+ Frame {
+ msec: 3152
+ hash: "31a446fab3c9a92f20fbb065b62d4357"
+ }
+ Frame {
+ msec: 3168
+ hash: "31a446fab3c9a92f20fbb065b62d4357"
+ }
+ Frame {
+ msec: 3184
+ hash: "31a446fab3c9a92f20fbb065b62d4357"
+ }
+ Frame {
+ msec: 3200
+ hash: "20dd4407adca55737dd4231405c38cff"
+ }
+ Frame {
+ msec: 3216
+ hash: "20dd4407adca55737dd4231405c38cff"
+ }
+ Frame {
+ msec: 3232
+ hash: "20dd4407adca55737dd4231405c38cff"
+ }
+ Frame {
+ msec: 3248
+ hash: "20dd4407adca55737dd4231405c38cff"
+ }
+ Frame {
+ msec: 3264
+ hash: "20dd4407adca55737dd4231405c38cff"
+ }
+ Frame {
+ msec: 3280
+ hash: "20dd4407adca55737dd4231405c38cff"
+ }
+ Frame {
+ msec: 3296
+ hash: "20dd4407adca55737dd4231405c38cff"
+ }
+ Frame {
+ msec: 3312
+ hash: "20dd4407adca55737dd4231405c38cff"
+ }
+ Frame {
+ msec: 3328
+ hash: "8109005d7e21d16b77f88efce2b530e4"
+ }
+ Frame {
+ msec: 3344
+ hash: "cd2c4e1a288d09f46dd557973c22e1be"
+ }
+ Frame {
+ msec: 3360
+ hash: "cd2c4e1a288d09f46dd557973c22e1be"
+ }
+ Frame {
+ msec: 3376
+ hash: "cd2c4e1a288d09f46dd557973c22e1be"
+ }
+ Frame {
+ msec: 3392
+ hash: "cd2c4e1a288d09f46dd557973c22e1be"
+ }
+ Frame {
+ msec: 3408
+ hash: "cd2c4e1a288d09f46dd557973c22e1be"
+ }
+ Frame {
+ msec: 3424
+ hash: "cd2c4e1a288d09f46dd557973c22e1be"
+ }
+ Frame {
+ msec: 3440
+ hash: "cd2c4e1a288d09f46dd557973c22e1be"
+ }
+ Frame {
+ msec: 3456
+ hash: "cd2c4e1a288d09f46dd557973c22e1be"
+ }
+ Frame {
+ msec: 3472
+ hash: "cd2c4e1a288d09f46dd557973c22e1be"
+ }
+ Frame {
+ msec: 3488
+ hash: "cd2c4e1a288d09f46dd557973c22e1be"
+ }
+ Frame {
+ msec: 3504
+ hash: "cd2c4e1a288d09f46dd557973c22e1be"
+ }
+ Frame {
+ msec: 3520
+ hash: "9f3f4fe1be7bd4511a0408fd5ab1b11f"
+ }
+ Frame {
+ msec: 3536
+ hash: "9f3f4fe1be7bd4511a0408fd5ab1b11f"
+ }
+ Frame {
+ msec: 3552
+ hash: "60b86cce6d76291148c7c49a5eabcf55"
+ }
+ Frame {
+ msec: 3568
+ hash: "b0dadf051b5b328f56fab390a2c33052"
+ }
+ Frame {
+ msec: 3584
+ hash: "b6b75a9723b46aa072bf7c779dc84e64"
+ }
+ Frame {
+ msec: 3600
+ hash: "ef4e8b36b5afc762e1f8f714eee61240"
+ }
+ Frame {
+ msec: 3616
+ hash: "a322a2446fd3506c243766233ec9303e"
+ }
+ Frame {
+ msec: 3632
+ hash: "5723527da987b29f74502e5abd25a5f7"
+ }
+ Frame {
+ msec: 3648
+ hash: "d9f98fa248099936c6307457c935326f"
+ }
+ Frame {
+ msec: 3664
+ hash: "54224ce16b717d0accb9cca7dc5e94d3"
+ }
+ Frame {
+ msec: 3680
+ hash: "cb036f8c7e3c464d0210fca8b21b2d5f"
+ }
+ Frame {
+ msec: 3696
+ hash: "729ff15f4b129e1bd7a522007c96d49b"
+ }
+ Frame {
+ msec: 3712
+ hash: "6c3791f76fbed468ce6e23938d321874"
+ }
+ Frame {
+ msec: 3728
+ hash: "970eebc8fa4fd8d92db49450ed3474a7"
+ }
+ Frame {
+ msec: 3744
+ hash: "4c97641854bb6997fc5106d7981e4ac9"
+ }
+ Frame {
+ msec: 3760
+ hash: "adb4c29247d0bf785be36ccdf74f4293"
+ }
+ Frame {
+ msec: 3776
+ hash: "5133846ed6886846426495aba011ab6f"
+ }
+ Frame {
+ msec: 3792
+ hash: "010771e4dea5c93de852bead35fc6a1e"
+ }
+ Frame {
+ msec: 3808
+ hash: "6115a50835cbc196ae322ad2727d1b68"
+ }
+ Frame {
+ msec: 3824
+ hash: "4e37fde35f4f577c3b62881fa526e369"
+ }
+ Frame {
+ msec: 3840
+ image: "follow.3.png"
+ }
+ Frame {
+ msec: 3856
+ hash: "1ea7000fd392a0799775b6783ffe332c"
+ }
+ Frame {
+ msec: 3872
+ hash: "40e69b98954b40ce8dc78d60eac882d7"
+ }
+ Frame {
+ msec: 3888
+ hash: "690b93596e7fb7c1f7de4ca81b96ce48"
+ }
+ Frame {
+ msec: 3904
+ hash: "6e8910061829e1111227a9854e18e742"
+ }
+ Frame {
+ msec: 3920
+ hash: "f6f60ef03e3f2829510c325effde9f39"
+ }
+ Frame {
+ msec: 3936
+ hash: "6c3d2d3903cd20969f8f2994f6a22592"
+ }
+ Frame {
+ msec: 3952
+ hash: "10febc71c9120a591510e123955424c1"
+ }
+ Frame {
+ msec: 3968
+ hash: "c06b52a3814791a56fc2cefa1544a693"
+ }
+ Frame {
+ msec: 3984
+ hash: "ca3a6e577490b5e88cf0c3d63bd69b76"
+ }
+ Frame {
+ msec: 4000
+ hash: "a4ebd4f687d38bd803aa61fc247e88e9"
+ }
+ Frame {
+ msec: 4016
+ hash: "099b8d7fea937bba6092a5c8ad1cc395"
+ }
+ Frame {
+ msec: 4032
+ hash: "c04384eb7d5c172a529d682ae7e916bf"
+ }
+ Frame {
+ msec: 4048
+ hash: "d0131c92bd3a2a7fa8cd83e3818370ed"
+ }
+ Frame {
+ msec: 4064
+ hash: "62e721f0344142fb7742675f644748f8"
+ }
+ Frame {
+ msec: 4080
+ hash: "5bddfcb4cb01efa0dc8603f3c4f4f553"
+ }
+ Frame {
+ msec: 4096
+ hash: "d31e44ad6cdfbd4076c66d41bb1d957e"
+ }
+ Frame {
+ msec: 4112
+ hash: "35126d01091d50a41dd073d2a5ae974a"
+ }
+ Frame {
+ msec: 4128
+ hash: "2c876aaf36e4d2a8d94bf3c3f4b934eb"
+ }
+ Frame {
+ msec: 4144
+ hash: "f75683d97c9d1f33a918c68f4651f31b"
+ }
+ Frame {
+ msec: 4160
+ hash: "f372de89a29d19b5c234f39a8ce85ed2"
+ }
+ Frame {
+ msec: 4176
+ hash: "fe2cd973de16bf92c552829d89332048"
+ }
+ Frame {
+ msec: 4192
+ hash: "bbcb60bd8b845e8fd2c885d3f42d9a91"
+ }
+ Frame {
+ msec: 4208
+ hash: "28addd32d7c28198425d41f42f1f7f38"
+ }
+ Frame {
+ msec: 4224
+ hash: "82cee6bac4d343adb86d02836728ccd7"
+ }
+ Frame {
+ msec: 4240
+ hash: "b0eeb40c5f7e7e5bb17566772686c8df"
+ }
+ Frame {
+ msec: 4256
+ hash: "e5372f9fe3dbe6b111da81de6e2088b8"
+ }
+ Frame {
+ msec: 4272
+ hash: "d6e476458ad03a13c7f14bdb2b530394"
+ }
+ Frame {
+ msec: 4288
+ hash: "4a5185a2cf033ca6f9250ab9e995dc7a"
+ }
+ Frame {
+ msec: 4304
+ hash: "6fd086e35b33ca714f31c1a50f64ccba"
+ }
+ Frame {
+ msec: 4320
+ hash: "ae8cae69a702811a897e7d5790c806cc"
+ }
+ Frame {
+ msec: 4336
+ hash: "073e2e1af434447c3000b03e3a89925a"
+ }
+ Frame {
+ msec: 4352
+ hash: "3c75c7586c1dca2fd21266395ccc8ac4"
+ }
+ Frame {
+ msec: 4368
+ hash: "aa36ac379ac9953bd165b5164cd047da"
+ }
+ Frame {
+ msec: 4384
+ hash: "09d6ab311429cfe29a68c428669b5d5a"
+ }
+ Frame {
+ msec: 4400
+ hash: "11ebcb0a744bc3faa746560d9c1a824d"
+ }
+ Frame {
+ msec: 4416
+ hash: "aa01ba99122f89bff8fc45ef88326f6a"
+ }
+ Frame {
+ msec: 4432
+ hash: "6980292ba8a4bf8ead3581e5899f5d78"
+ }
+ Frame {
+ msec: 4448
+ hash: "65fa1a0fe53b9a0580c14e96d42fe993"
+ }
+ Frame {
+ msec: 4464
+ hash: "7837c0a533839f94629be4e64294b89f"
+ }
+ Frame {
+ msec: 4480
+ hash: "5edbf632047ae4130f580e4a0ece8e57"
+ }
+ Frame {
+ msec: 4496
+ hash: "0a5fdc57898cb56f00a76ecaa3a6b9e0"
+ }
+ Frame {
+ msec: 4512
+ hash: "58d1b36e738042af44dab04a8c842259"
+ }
+ Frame {
+ msec: 4528
+ hash: "2efb1f742d7f823d13b9724c1c10ce1a"
+ }
+ Frame {
+ msec: 4544
+ hash: "e0286eb0b3fbb17e422554a8ef25489c"
+ }
+ Frame {
+ msec: 4560
+ hash: "8252caa2841f07d29802a7b822388253"
+ }
+ Frame {
+ msec: 4576
+ hash: "eaabd4b3610c0bcbbdc113f86bc52e6c"
+ }
+ Frame {
+ msec: 4592
+ hash: "55b17d049e1c791d33094f64717bca06"
+ }
+ Frame {
+ msec: 4608
+ hash: "1bd607f6d0658f46b1f0df51e8a9a9fe"
+ }
+ Frame {
+ msec: 4624
+ hash: "4a52ea4de14098978931155f11168f68"
+ }
+ Frame {
+ msec: 4640
+ hash: "343df8fb45e1e70183bb61a1111909a5"
+ }
+ Frame {
+ msec: 4656
+ hash: "bcf1363d9912a3d626ef933387b4e01b"
+ }
+ Frame {
+ msec: 4672
+ hash: "67709ea579481537e532120de35619b2"
+ }
+ Frame {
+ msec: 4688
+ hash: "a7542255a10a120812880b1243bd573d"
+ }
+ Frame {
+ msec: 4704
+ hash: "b4f3e597e489d32a473bb2ad6bb92fc4"
+ }
+ Frame {
+ msec: 4720
+ hash: "f0df46d1b819edda5a616e858ed9171c"
+ }
+ Frame {
+ msec: 4736
+ hash: "2416564198b4b853d9c4f5ad55ee5db5"
+ }
+ Frame {
+ msec: 4752
+ hash: "342e5adcd2fca99c88c33cd8b56b8650"
+ }
+ Frame {
+ msec: 4768
+ hash: "01806799adce1d0069cfdd739f383a7f"
+ }
+ Frame {
+ msec: 4784
+ hash: "c045fdefdd4606d2c68c8cde2a7a40f4"
+ }
+ Frame {
+ msec: 4800
+ image: "follow.4.png"
+ }
+ Frame {
+ msec: 4816
+ hash: "c7371c0594fb9f4de0a7f8a3cdce061a"
+ }
+ Frame {
+ msec: 4832
+ hash: "6df0c2a27c672e36a3d7eb5b4e0c46bf"
+ }
+ Frame {
+ msec: 4848
+ hash: "97fa050a5790b1f722d25dbee9efba95"
+ }
+ Frame {
+ msec: 4864
+ hash: "85c26ed45e79793fc5b7521a8157d3a2"
+ }
+ Frame {
+ msec: 4880
+ hash: "9ff5d272ec8deed3e70164b78bc425c6"
+ }
+ Frame {
+ msec: 4896
+ hash: "d1e3f6d51d6b8e96261b902e6f88576d"
+ }
+ Frame {
+ msec: 4912
+ hash: "02c12e50ed6b7111f301e142a2fbc5db"
+ }
+ Frame {
+ msec: 4928
+ hash: "5177873aa73342ada32d7ebfe3f26e0e"
+ }
+ Frame {
+ msec: 4944
+ hash: "05d0364f67f317ee617f1a64d9543fe2"
+ }
+ Frame {
+ msec: 4960
+ hash: "20e50922d7763c7572776fc98d0e007b"
+ }
+ Frame {
+ msec: 4976
+ hash: "f449eb14e0c0e08a79a220cb13551c4f"
+ }
+ Frame {
+ msec: 4992
+ hash: "defe5fa356688a25ed2b8174d9baf2ce"
+ }
+ Frame {
+ msec: 5008
+ hash: "f1697f95d67a0a15088c3f934dfc466f"
+ }
+ Frame {
+ msec: 5024
+ hash: "7a962dad8227d367b4af7dee6ea09c20"
+ }
+ Frame {
+ msec: 5040
+ hash: "49a806b0bee9e3145395fb68cb85dbaf"
+ }
+ Frame {
+ msec: 5056
+ hash: "d0e4ffd3e12dd4b8e5553e613119ef86"
+ }
+ Frame {
+ msec: 5072
+ hash: "41270d843d00eaabf2f95f051541013e"
+ }
+ Frame {
+ msec: 5088
+ hash: "e8fd158c923d389a2d87db0023522934"
+ }
+ Frame {
+ msec: 5104
+ hash: "9cfa7783d37010c10271d680d205ebc4"
+ }
+ Frame {
+ msec: 5120
+ hash: "5e81c936f9627cf537f96a1674c920be"
+ }
+ Frame {
+ msec: 5136
+ hash: "28679a61a44bf0d81d6a93d8ea301b97"
+ }
+ Frame {
+ msec: 5152
+ hash: "ef41d71b99f078abe8a2a8326ed236c9"
+ }
+ Frame {
+ msec: 5168
+ hash: "b0c77c16e9d13360992d3781d389a773"
+ }
+ Frame {
+ msec: 5184
+ hash: "fe053081bc92e2a16322e6839749c49c"
+ }
+ Frame {
+ msec: 5200
+ hash: "fdde556b8d7b31510b9b07686e3bf81f"
+ }
+ Frame {
+ msec: 5216
+ hash: "f3f9c7ad55f4cabdcc9ff4a515163523"
+ }
+ Frame {
+ msec: 5232
+ hash: "8ae1b429bcb1d7698efaca4abbe91d3f"
+ }
+ Frame {
+ msec: 5248
+ hash: "c741a05290271260b8b916faa480e3aa"
+ }
+ Frame {
+ msec: 5264
+ hash: "eebc4a70e557084577fb93f4b71da41c"
+ }
+ Frame {
+ msec: 5280
+ hash: "4926f2fa2728d80f0799e67f06ae8be3"
+ }
+ Frame {
+ msec: 5296
+ hash: "cf8ea67beade2f31d6ddd257578ef191"
+ }
+ Frame {
+ msec: 5312
+ hash: "d041cad9a659449da739470ce03d6152"
+ }
+ Frame {
+ msec: 5328
+ hash: "eae75c3364a13697c79aec42c221181d"
+ }
+ Frame {
+ msec: 5344
+ hash: "2db70310d6a3b4900e749975e52d5f78"
+ }
+ Frame {
+ msec: 5360
+ hash: "609838796118ab89566fe2fe664dfcb4"
+ }
+ Frame {
+ msec: 5376
+ hash: "ae66ff91af5924e99231a811d0d00549"
+ }
+ Frame {
+ msec: 5392
+ hash: "2b5ba8d8c340a92d4d6ef76dbd88c4b8"
+ }
+ Frame {
+ msec: 5408
+ hash: "6b4ce7512194d65b7c8679822cb58274"
+ }
+ Frame {
+ msec: 5424
+ hash: "36a58e3b3a057969c8a6b1ba4e704ec7"
+ }
+ Frame {
+ msec: 5440
+ hash: "a2164ae8f60b27534392077358e057e2"
+ }
+ Frame {
+ msec: 5456
+ hash: "9ceb838f32b76cc267283ef829a64f95"
+ }
+ Frame {
+ msec: 5472
+ hash: "a372e42839d42e9f7dac83ae3b845be4"
+ }
+ Frame {
+ msec: 5488
+ hash: "9e1226a6cb6585694a0b44b356f0b6d2"
+ }
+ Frame {
+ msec: 5504
+ hash: "7bdfe1d332fdd3b8b241a3fb9dafa584"
+ }
+ Frame {
+ msec: 5520
+ hash: "e7f3ef39c35f7bca75ae049a25790509"
+ }
+ Frame {
+ msec: 5536
+ hash: "5bfcd4c96095d66825df5d94f8936659"
+ }
+ Frame {
+ msec: 5552
+ hash: "d47fc61cedde2748d1c35d65c4278ce9"
+ }
+ Frame {
+ msec: 5568
+ hash: "ee86ff1ea3a447ebf749a5b31ff147c9"
+ }
+ Frame {
+ msec: 5584
+ hash: "05a3b141e33596e88ff3a6a3e09b13b9"
+ }
+ Frame {
+ msec: 5600
+ hash: "2294c4c9f84c4398918524c41fe08317"
+ }
+ Frame {
+ msec: 5616
+ hash: "2e19dc61944aa7671ac18303949e1c9e"
+ }
+ Frame {
+ msec: 5632
+ hash: "37b4864ed528a3be221d7abb4106ec3a"
+ }
+ Frame {
+ msec: 5648
+ hash: "c2bf99e089bc984abea63b8b43270859"
+ }
+ Frame {
+ msec: 5664
+ hash: "c2bf99e089bc984abea63b8b43270859"
+ }
+ Frame {
+ msec: 5680
+ hash: "d8de63e15f1f6e9c0cf0dd43afa03c42"
+ }
+ Frame {
+ msec: 5696
+ hash: "3643a50c30b6d6f9b724155e49db7276"
+ }
+ Frame {
+ msec: 5712
+ hash: "582e871460fe3056f7f3df97d5939d69"
+ }
+ Frame {
+ msec: 5728
+ hash: "e46da1072974efc1c4df89d9c6243609"
+ }
+ Frame {
+ msec: 5744
+ hash: "705ac82bb7a03eb5843aae7292739851"
+ }
+ Frame {
+ msec: 5760
+ image: "follow.5.png"
+ }
+ Frame {
+ msec: 5776
+ hash: "b2949af515524933f740057cae6d8c40"
+ }
+ Frame {
+ msec: 5792
+ hash: "72a3526dbfeb42935a737f7876c86499"
+ }
+ Frame {
+ msec: 5808
+ hash: "43907b91dec1412d0e6c8b53cec8e06f"
+ }
+ Frame {
+ msec: 5824
+ hash: "66db45ca42d42e8a6eb279b892493af9"
+ }
+ Frame {
+ msec: 5840
+ hash: "1f2d69898b90d344f337ac37a000e797"
+ }
+ Frame {
+ msec: 5856
+ hash: "9c09edc9541d69e7565ef05fbe58fadf"
+ }
+ Frame {
+ msec: 5872
+ hash: "0d68b6d05150981eff443cd7437b3d95"
+ }
+ Frame {
+ msec: 5888
+ hash: "85558e393a1e0483ba27844cf409af47"
+ }
+ Frame {
+ msec: 5904
+ hash: "83a73b6b3eb1052a9b1a12fb78326b26"
+ }
+ Frame {
+ msec: 5920
+ hash: "4839882ecc497916b4ac964a5cc71d1b"
+ }
+ Frame {
+ msec: 5936
+ hash: "28d6f5066f186a0d9ab7f4781374d3eb"
+ }
+ Frame {
+ msec: 5952
+ hash: "d89148926c6dd636de953a55082e50f1"
+ }
+ Frame {
+ msec: 5968
+ hash: "dbab902e252561849dba5551fc8f07d3"
+ }
+ Frame {
+ msec: 5984
+ hash: "84a3a891fbbb1a0fca24324a3ea10c6a"
+ }
+ Frame {
+ msec: 6000
+ hash: "64563bb68129f527b1c33c0d9a543f09"
+ }
+ Frame {
+ msec: 6016
+ hash: "64563bb68129f527b1c33c0d9a543f09"
+ }
+ Frame {
+ msec: 6032
+ hash: "7f3ae8ac99bf202414b03e9b33473044"
+ }
+ Frame {
+ msec: 6048
+ hash: "7f3ae8ac99bf202414b03e9b33473044"
+ }
+ Frame {
+ msec: 6064
+ hash: "7fbdf6396050da5b8945f1111c2ca973"
+ }
+ Frame {
+ msec: 6080
+ hash: "5bf4fa18f24fc221685234a92c4cafb6"
+ }
+ Frame {
+ msec: 6096
+ hash: "5bf4fa18f24fc221685234a92c4cafb6"
+ }
+ Frame {
+ msec: 6112
+ hash: "e1b8d1d7298a3d3ade82493fb6f99909"
+ }
+ Frame {
+ msec: 6128
+ hash: "6320b7b0bd1926c625f914d30f1f1fd9"
+ }
+ Frame {
+ msec: 6144
+ hash: "74ecfaced66f630d1863c04000fa7f01"
+ }
+ Frame {
+ msec: 6160
+ hash: "74ecfaced66f630d1863c04000fa7f01"
+ }
+ Frame {
+ msec: 6176
+ hash: "c803b3258d0e1d8e6c1292ea2a00f76b"
+ }
+ Frame {
+ msec: 6192
+ hash: "c803b3258d0e1d8e6c1292ea2a00f76b"
+ }
+ Frame {
+ msec: 6208
+ hash: "8d359f95ee869714bb3972986637642d"
+ }
+ Frame {
+ msec: 6224
+ hash: "9f3f4fe1be7bd4511a0408fd5ab1b11f"
+ }
+ Frame {
+ msec: 6240
+ hash: "9f3f4fe1be7bd4511a0408fd5ab1b11f"
+ }
+ Frame {
+ msec: 6256
+ hash: "cd2c4e1a288d09f46dd557973c22e1be"
+ }
+ Frame {
+ msec: 6272
+ hash: "cd2c4e1a288d09f46dd557973c22e1be"
+ }
+ Frame {
+ msec: 6288
+ hash: "cd2c4e1a288d09f46dd557973c22e1be"
+ }
+ Frame {
+ msec: 6304
+ hash: "8109005d7e21d16b77f88efce2b530e4"
+ }
+ Frame {
+ msec: 6320
+ hash: "8109005d7e21d16b77f88efce2b530e4"
+ }
+ Frame {
+ msec: 6336
+ hash: "8109005d7e21d16b77f88efce2b530e4"
+ }
+ Frame {
+ msec: 6352
+ hash: "8109005d7e21d16b77f88efce2b530e4"
+ }
+ Frame {
+ msec: 6368
+ hash: "8109005d7e21d16b77f88efce2b530e4"
+ }
+ Frame {
+ msec: 6384
+ hash: "e009f65ae035fb8a9c27a1d57f10c35f"
+ }
+ Frame {
+ msec: 6400
+ hash: "e009f65ae035fb8a9c27a1d57f10c35f"
+ }
+ Frame {
+ msec: 6416
+ hash: "e009f65ae035fb8a9c27a1d57f10c35f"
+ }
+ Frame {
+ msec: 6432
+ hash: "e009f65ae035fb8a9c27a1d57f10c35f"
+ }
+ Frame {
+ msec: 6448
+ hash: "e009f65ae035fb8a9c27a1d57f10c35f"
+ }
+ Frame {
+ msec: 6464
+ hash: "31a446fab3c9a92f20fbb065b62d4357"
+ }
+ Frame {
+ msec: 6480
+ hash: "31a446fab3c9a92f20fbb065b62d4357"
+ }
+ Frame {
+ msec: 6496
+ hash: "31a446fab3c9a92f20fbb065b62d4357"
+ }
+ Frame {
+ msec: 6512
+ hash: "31a446fab3c9a92f20fbb065b62d4357"
+ }
+ Frame {
+ msec: 6528
+ hash: "31a446fab3c9a92f20fbb065b62d4357"
+ }
+ Frame {
+ msec: 6544
+ hash: "31a446fab3c9a92f20fbb065b62d4357"
+ }
+ Frame {
+ msec: 6560
+ hash: "31a446fab3c9a92f20fbb065b62d4357"
+ }
+ Key {
+ type: 6
+ key: 16777249
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 6576
+ hash: "31a446fab3c9a92f20fbb065b62d4357"
+ }
+ Frame {
+ msec: 6592
+ hash: "31a446fab3c9a92f20fbb065b62d4357"
+ }
+ Frame {
+ msec: 6608
+ hash: "31a446fab3c9a92f20fbb065b62d4357"
+ }
+ Frame {
+ msec: 6624
+ hash: "31a446fab3c9a92f20fbb065b62d4357"
+ }
+ Frame {
+ msec: 6640
+ hash: "31a446fab3c9a92f20fbb065b62d4357"
+ }
+ Frame {
+ msec: 6656
+ hash: "31a446fab3c9a92f20fbb065b62d4357"
+ }
+ Frame {
+ msec: 6672
+ hash: "31a446fab3c9a92f20fbb065b62d4357"
+ }
+ Frame {
+ msec: 6688
+ hash: "31a446fab3c9a92f20fbb065b62d4357"
+ }
+ Frame {
+ msec: 6704
+ hash: "20dd4407adca55737dd4231405c38cff"
+ }
+}
diff --git a/tests/auto/declarative/visual/qmlspringfollow/data/follow.0.png b/tests/auto/declarative/visual/qmlspringfollow/data/follow.0.png
new file mode 100644
index 0000000..d173ee9
--- /dev/null
+++ b/tests/auto/declarative/visual/qmlspringfollow/data/follow.0.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qmlspringfollow/data/follow.1.png b/tests/auto/declarative/visual/qmlspringfollow/data/follow.1.png
new file mode 100644
index 0000000..09b7bda
--- /dev/null
+++ b/tests/auto/declarative/visual/qmlspringfollow/data/follow.1.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qmlspringfollow/data/follow.2.png b/tests/auto/declarative/visual/qmlspringfollow/data/follow.2.png
new file mode 100644
index 0000000..b1d109e
--- /dev/null
+++ b/tests/auto/declarative/visual/qmlspringfollow/data/follow.2.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qmlspringfollow/data/follow.3.png b/tests/auto/declarative/visual/qmlspringfollow/data/follow.3.png
new file mode 100644
index 0000000..5cdcafb
--- /dev/null
+++ b/tests/auto/declarative/visual/qmlspringfollow/data/follow.3.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qmlspringfollow/data/follow.4.png b/tests/auto/declarative/visual/qmlspringfollow/data/follow.4.png
new file mode 100644
index 0000000..93e1536
--- /dev/null
+++ b/tests/auto/declarative/visual/qmlspringfollow/data/follow.4.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qmlspringfollow/data/follow.5.png b/tests/auto/declarative/visual/qmlspringfollow/data/follow.5.png
new file mode 100644
index 0000000..b27cc9f
--- /dev/null
+++ b/tests/auto/declarative/visual/qmlspringfollow/data/follow.5.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qmlspringfollow/data/follow.qml b/tests/auto/declarative/visual/qmlspringfollow/data/follow.qml
new file mode 100644
index 0000000..f87372a
--- /dev/null
+++ b/tests/auto/declarative/visual/qmlspringfollow/data/follow.qml
@@ -0,0 +1,1691 @@
+import Qt.VisualTest 4.6
+
+VisualTest {
+ Frame {
+ msec: 0
+ }
+ Frame {
+ msec: 16
+ hash: "ea677d128f47343d81a081c438aa2f6c"
+ }
+ Frame {
+ msec: 32
+ hash: "ea677d128f47343d81a081c438aa2f6c"
+ }
+ Frame {
+ msec: 48
+ hash: "403e130b7cf0a41d8348a227293d98d1"
+ }
+ Frame {
+ msec: 64
+ hash: "d2250ca93235b6a087b5e582f7e941d6"
+ }
+ Frame {
+ msec: 80
+ hash: "3e95bdb5546de8ed7bb33de704d2890e"
+ }
+ Frame {
+ msec: 96
+ hash: "438612a44780d6587f99a44c943eb60f"
+ }
+ Frame {
+ msec: 112
+ hash: "6e840f3afd93a11034e128d70f76e642"
+ }
+ Frame {
+ msec: 128
+ hash: "abbb1839aa7989e89d72368c501c5a12"
+ }
+ Frame {
+ msec: 144
+ hash: "eefe846a36bf21929d83241b117d98b5"
+ }
+ Frame {
+ msec: 160
+ hash: "ab39c7386555dc0a0edbd1e021fa3d93"
+ }
+ Frame {
+ msec: 176
+ hash: "8cd9ac8226579bfd1d653ad5b9ff3302"
+ }
+ Frame {
+ msec: 192
+ hash: "976c950140ce9f793884daa8d032c8fb"
+ }
+ Frame {
+ msec: 208
+ hash: "c49ea9cb59a4ced0572a251c1ed53011"
+ }
+ Frame {
+ msec: 224
+ hash: "d84a156021c5f61cb49f60cba5c0b7b7"
+ }
+ Frame {
+ msec: 240
+ hash: "d47f16922533e186844448ad4540cc9d"
+ }
+ Frame {
+ msec: 256
+ hash: "be16f676e94426dedc747de959f41658"
+ }
+ Frame {
+ msec: 272
+ hash: "abe13e483ca63c485f8c66f6edbbc368"
+ }
+ Frame {
+ msec: 288
+ hash: "71294e92418a4a586328a510916942e2"
+ }
+ Frame {
+ msec: 304
+ hash: "2f201846d62d8885c8d4659c9622e711"
+ }
+ Frame {
+ msec: 320
+ hash: "bfeb1da5c3ab5bda2def25682ae7f113"
+ }
+ Frame {
+ msec: 336
+ hash: "00767a8b29a0de270f2485e430332c0b"
+ }
+ Frame {
+ msec: 352
+ hash: "df1bac2a1f24ab2669c156f86ff3949a"
+ }
+ Frame {
+ msec: 368
+ hash: "755a39579c403923c93a4a962e135374"
+ }
+ Frame {
+ msec: 384
+ hash: "e176ba5703d6bd80f0de1a88f02ac678"
+ }
+ Frame {
+ msec: 400
+ hash: "51d44c2913947f44708615b5e38b2bd3"
+ }
+ Frame {
+ msec: 416
+ hash: "72a6d96e70ffd20c12139306103b4f4e"
+ }
+ Frame {
+ msec: 432
+ hash: "96f82039287cbf4b403298436421c778"
+ }
+ Frame {
+ msec: 448
+ hash: "0e86e386afdf7649dfdcd489137ad4ea"
+ }
+ Frame {
+ msec: 464
+ hash: "8e78f10e410638680810c65e5bddd665"
+ }
+ Frame {
+ msec: 480
+ hash: "765d52574fa75873e97f2e9b2a44e7a0"
+ }
+ Frame {
+ msec: 496
+ hash: "a72e4be872da024c8af9b914d8baabc2"
+ }
+ Frame {
+ msec: 512
+ hash: "3689c9af15bb91d4ae5b570ecffecfdd"
+ }
+ Frame {
+ msec: 528
+ hash: "8147683fb527fdb2f71356e85abae6e9"
+ }
+ Frame {
+ msec: 544
+ hash: "853f9220075a3782cf7fcc0bb8715263"
+ }
+ Frame {
+ msec: 560
+ hash: "61b08b1ac4a0f8edcaa9984db4c2ba26"
+ }
+ Frame {
+ msec: 576
+ hash: "9656cb5164be56f449f1f82b1555e6de"
+ }
+ Frame {
+ msec: 592
+ hash: "17290bf0cb6f35ee421286e01bd47e98"
+ }
+ Frame {
+ msec: 608
+ hash: "6f0d0cec511f59ff1e96cdbd9444eaf6"
+ }
+ Frame {
+ msec: 624
+ hash: "d4bcf568361214c0eb8fa3998bbf1480"
+ }
+ Frame {
+ msec: 640
+ hash: "41adf355d26d44b157f59d9fcb2e1c69"
+ }
+ Frame {
+ msec: 656
+ hash: "e5e19a9529a4e7fc1f680fec3505e78f"
+ }
+ Frame {
+ msec: 672
+ hash: "c5340333b27b030404dfb7f84c885f5a"
+ }
+ Frame {
+ msec: 688
+ hash: "0d78d4df108698cbf01f85b543240a23"
+ }
+ Frame {
+ msec: 704
+ hash: "3100a83fa0217e229bfe5b1014c85bd0"
+ }
+ Frame {
+ msec: 720
+ hash: "d48a5e885a7ffe2164561a5e8db49af2"
+ }
+ Frame {
+ msec: 736
+ hash: "f53ff65dde7676e467569cb4046c6151"
+ }
+ Frame {
+ msec: 752
+ hash: "dfe16b338d9afba04ba20fe27e2f3871"
+ }
+ Frame {
+ msec: 768
+ hash: "da60124324209ccb2bd0e025d0484ca5"
+ }
+ Frame {
+ msec: 784
+ hash: "bb7c9e645bead664dfbb3b0b2d6350a5"
+ }
+ Frame {
+ msec: 800
+ hash: "b4229201bd33515da83605b3e8c61f3e"
+ }
+ Frame {
+ msec: 816
+ hash: "65d73e930b2117714e6020f3580b9c5f"
+ }
+ Frame {
+ msec: 832
+ hash: "7635a572c1cedd66c27da128de4596aa"
+ }
+ Frame {
+ msec: 848
+ hash: "9068d912a8d3e6e0b5b458c12ddad126"
+ }
+ Frame {
+ msec: 864
+ hash: "e935bc3503eefd745f0086417322ccd0"
+ }
+ Frame {
+ msec: 880
+ hash: "fad1a3e6f64818638e6d866af9554f72"
+ }
+ Frame {
+ msec: 896
+ hash: "c80cd40121ad2b365a58b919db910fdb"
+ }
+ Frame {
+ msec: 912
+ hash: "e9c7e153a429fc2b7a7afcbe69f48291"
+ }
+ Frame {
+ msec: 928
+ hash: "f848e529d7ed9170c107556ffff2c7da"
+ }
+ Frame {
+ msec: 944
+ hash: "5176b37586cd38607f7324ea5fe4a84e"
+ }
+ Frame {
+ msec: 960
+ image: "follow.0.png"
+ }
+ Frame {
+ msec: 976
+ hash: "13db39c0f6b2d2633fc6e9e25363649c"
+ }
+ Frame {
+ msec: 992
+ hash: "709b27d74b5d63173dcc47315b6a98ad"
+ }
+ Frame {
+ msec: 1008
+ hash: "3f1a3ec8c35f18109b00f596dddb2dee"
+ }
+ Frame {
+ msec: 1024
+ hash: "7b5a87922adf288a3479c5772b87dc05"
+ }
+ Frame {
+ msec: 1040
+ hash: "389a4ceae2a2c2b65d8b8f4a14e302fe"
+ }
+ Frame {
+ msec: 1056
+ hash: "5e734ba84842d9ebacedea131c2cea43"
+ }
+ Frame {
+ msec: 1072
+ hash: "2ca1665bc6e8fcc79fa3ed27d063ef2d"
+ }
+ Frame {
+ msec: 1088
+ hash: "a133bcf3571762dac5ed8093835d0f32"
+ }
+ Frame {
+ msec: 1104
+ hash: "100e33528137240152983158c89831c2"
+ }
+ Frame {
+ msec: 1120
+ hash: "1b327165fcce6d61577e2c1715a77efe"
+ }
+ Frame {
+ msec: 1136
+ hash: "724352ffdfa1a7e8aa0ffaa138706b14"
+ }
+ Frame {
+ msec: 1152
+ hash: "c13dbf3fdd202d6fdb007622e2f3c9ee"
+ }
+ Frame {
+ msec: 1168
+ hash: "50517cf68a3f6f8c84fc6520500ccf00"
+ }
+ Frame {
+ msec: 1184
+ hash: "8fd426597afbc940a3778870118e2541"
+ }
+ Frame {
+ msec: 1200
+ hash: "67434d0c791fc4c2761c1869a6cee081"
+ }
+ Frame {
+ msec: 1216
+ hash: "3397a81fa89f46f55b7716325a722c82"
+ }
+ Frame {
+ msec: 1232
+ hash: "7207230d6be72411aadc3064af25dcc6"
+ }
+ Frame {
+ msec: 1248
+ hash: "709bc2b0d2ca7fa5e8b33e4a17a130bd"
+ }
+ Frame {
+ msec: 1264
+ hash: "0b721aaffded67b507e896c2c2d9c6f2"
+ }
+ Frame {
+ msec: 1280
+ hash: "a473144a3d3af4dfd27dd17eed95e050"
+ }
+ Frame {
+ msec: 1296
+ hash: "264760a5a9ce988ce880084161dbc983"
+ }
+ Frame {
+ msec: 1312
+ hash: "ea1ebaa56e24e0ca23723539ad8a18cf"
+ }
+ Frame {
+ msec: 1328
+ hash: "d85e695424a7883354b9e807d0dca75a"
+ }
+ Frame {
+ msec: 1344
+ hash: "2a5beec661122970528b4589c6a30184"
+ }
+ Frame {
+ msec: 1360
+ hash: "c6b398270707e794cb41ac6dfc413559"
+ }
+ Frame {
+ msec: 1376
+ hash: "5f0496a3db352ac7d68d37d0b40821de"
+ }
+ Frame {
+ msec: 1392
+ hash: "60b6cf54208fe05cad90a5475ba44b6f"
+ }
+ Frame {
+ msec: 1408
+ hash: "b375733a02dba8d856e6a54962701728"
+ }
+ Frame {
+ msec: 1424
+ hash: "dca9a423a2b43c9edf294f707ffeb3e9"
+ }
+ Frame {
+ msec: 1440
+ hash: "43d04fee9d2fbe1807f4d6b599a227fd"
+ }
+ Frame {
+ msec: 1456
+ hash: "169446930a064cabd9dfc8cce5669967"
+ }
+ Frame {
+ msec: 1472
+ hash: "3dc4b0e80ae663022ae9acda781cdb10"
+ }
+ Frame {
+ msec: 1488
+ hash: "fc7b862abfc6f1694cbbe00ede57d883"
+ }
+ Frame {
+ msec: 1504
+ hash: "76e67f9c5b552f1ff47c3c7b23eb1b76"
+ }
+ Frame {
+ msec: 1520
+ hash: "8c3e1d2fd58eaf2a8da16bb0349b1e5e"
+ }
+ Frame {
+ msec: 1536
+ hash: "4642a396f4a4bb3b97845782e1d1ce93"
+ }
+ Frame {
+ msec: 1552
+ hash: "4d3e8c9ea7c8c1407db564a3a6e430ff"
+ }
+ Frame {
+ msec: 1568
+ hash: "e041300f1d2956f35baebed6c7c9c750"
+ }
+ Frame {
+ msec: 1584
+ hash: "a900c3551c5d3bbaf1ce6e0372e69a70"
+ }
+ Frame {
+ msec: 1600
+ hash: "cb5c32ad57d1931a69c20328f8f2d060"
+ }
+ Frame {
+ msec: 1616
+ hash: "021ba4fc38e1652afeab73047e126a17"
+ }
+ Frame {
+ msec: 1632
+ hash: "d27728f36491ba432e3655850402ee6b"
+ }
+ Frame {
+ msec: 1648
+ hash: "20a87f4d9afd2039e44c2b5b539d0298"
+ }
+ Frame {
+ msec: 1664
+ hash: "e03dfc3f89c5e4f6a31bc4b624b249f4"
+ }
+ Frame {
+ msec: 1680
+ hash: "e52c42cbc1c362bd77f72b71dedc34da"
+ }
+ Frame {
+ msec: 1696
+ hash: "b3e15bd0354fa84d13f1f9163be12b73"
+ }
+ Frame {
+ msec: 1712
+ hash: "eb6517d72b7943654215ad46e8b165a9"
+ }
+ Frame {
+ msec: 1728
+ hash: "1be17ea113f704b1a3a1fda63d10c23a"
+ }
+ Frame {
+ msec: 1744
+ hash: "f288d004dd459b90acf9e70045de51bc"
+ }
+ Frame {
+ msec: 1760
+ hash: "750d6c78b8e3e3311935faacfe37c44f"
+ }
+ Frame {
+ msec: 1776
+ hash: "08a12d133eab365b639204e6b327143b"
+ }
+ Frame {
+ msec: 1792
+ hash: "4641237f37091b2aebfb17255999f8e1"
+ }
+ Frame {
+ msec: 1808
+ hash: "389c3a75932dc695f3aa323569cf0ebe"
+ }
+ Frame {
+ msec: 1824
+ hash: "4f03b3b47db131f4604b1f2487303012"
+ }
+ Frame {
+ msec: 1840
+ hash: "b29afbba738730b089f257a133874540"
+ }
+ Frame {
+ msec: 1856
+ hash: "04b3014bf60cc25920724d0c18424830"
+ }
+ Frame {
+ msec: 1872
+ hash: "1f09172690083f6051d4807c287d64a4"
+ }
+ Frame {
+ msec: 1888
+ hash: "fb32eec375d5f1abd7f651f022df8d20"
+ }
+ Frame {
+ msec: 1904
+ hash: "251e61f514db494cb47ae18234abd9a4"
+ }
+ Frame {
+ msec: 1920
+ image: "follow.1.png"
+ }
+ Frame {
+ msec: 1936
+ hash: "8acec26bf4ab5f93ccc5d77d4866826a"
+ }
+ Frame {
+ msec: 1952
+ hash: "2490ddc2c74c525ecc51ffc83357611e"
+ }
+ Frame {
+ msec: 1968
+ hash: "f7f67dc93d3ff7aad6df8917f7f6f285"
+ }
+ Frame {
+ msec: 1984
+ hash: "d034044a9e2f2712aa1f0c10a5e4355f"
+ }
+ Frame {
+ msec: 2000
+ hash: "7760794170cfbb7ca93aebf12874a603"
+ }
+ Frame {
+ msec: 2016
+ hash: "a680699dda95e5a59dcf310cf5671d6e"
+ }
+ Frame {
+ msec: 2032
+ hash: "df3a0ffa7089defb0f3db08f4f34cba6"
+ }
+ Frame {
+ msec: 2048
+ hash: "4e0ce20d81cd4acad3270bfe5a650d18"
+ }
+ Frame {
+ msec: 2064
+ hash: "1f46926406a5f0bb33159bba6ef740f3"
+ }
+ Frame {
+ msec: 2080
+ hash: "321e4cbbb7f4fbe748a2fe45db13d184"
+ }
+ Frame {
+ msec: 2096
+ hash: "185c0357a585aafabe5dbc3573ea135d"
+ }
+ Frame {
+ msec: 2112
+ hash: "0421ac4f53c050bfffb2c8de16aafd46"
+ }
+ Frame {
+ msec: 2128
+ hash: "953bdaacefe42a841bf1cdd7da3b442a"
+ }
+ Frame {
+ msec: 2144
+ hash: "3f64635e9c43b8b6a402c5d6fe26e648"
+ }
+ Frame {
+ msec: 2160
+ hash: "3f64635e9c43b8b6a402c5d6fe26e648"
+ }
+ Frame {
+ msec: 2176
+ hash: "92926b4cf66b15cd0ddb468f2bd8bd62"
+ }
+ Frame {
+ msec: 2192
+ hash: "fe78f7f7ecd3242aa75f3590884e0f44"
+ }
+ Frame {
+ msec: 2208
+ hash: "55249aae2bb6db6c363ecb4b89f56270"
+ }
+ Frame {
+ msec: 2224
+ hash: "73ea66c3c61e8105ac61d26c8cfdbba3"
+ }
+ Frame {
+ msec: 2240
+ hash: "ac77e83366b34b7375ad7c150ccebd01"
+ }
+ Frame {
+ msec: 2256
+ hash: "b0a94b3ab562b469c622c4c7438f2c04"
+ }
+ Frame {
+ msec: 2272
+ hash: "73ab6f0a829f92533bbabef8b8097d5d"
+ }
+ Frame {
+ msec: 2288
+ hash: "0c2301bd28a080f113bd786b6875bf53"
+ }
+ Frame {
+ msec: 2304
+ hash: "026811ab3517257daf6a597d96bf2b20"
+ }
+ Frame {
+ msec: 2320
+ hash: "5740c6aacc1d1a5a402974bb977d9b13"
+ }
+ Frame {
+ msec: 2336
+ hash: "41f0a093fc87c4d519a9b72bac518514"
+ }
+ Frame {
+ msec: 2352
+ hash: "1ed376000e60129b4bcf06ea73cb5819"
+ }
+ Frame {
+ msec: 2368
+ hash: "8c713e210143ab5f19bdddd918f86ef3"
+ }
+ Frame {
+ msec: 2384
+ hash: "269b595c5691747b56be58d5b92ae497"
+ }
+ Frame {
+ msec: 2400
+ hash: "486d80316c88da4adc736df72fc86f45"
+ }
+ Frame {
+ msec: 2416
+ hash: "f76e6c0a9e7957730ac646b73d1373d1"
+ }
+ Frame {
+ msec: 2432
+ hash: "e0a6765306f92e32b7a778f882ba5c15"
+ }
+ Frame {
+ msec: 2448
+ hash: "b01834ca90ee836643083593a558d2ef"
+ }
+ Frame {
+ msec: 2464
+ hash: "02748271316f8382f4788322fda807c1"
+ }
+ Frame {
+ msec: 2480
+ hash: "ce5adbd1a713777476d2468f67e531f3"
+ }
+ Frame {
+ msec: 2496
+ hash: "840be99d6372f9ebf3c580765b71be74"
+ }
+ Frame {
+ msec: 2512
+ hash: "dd1cfa3fcec2fba91b0120a8aab3c137"
+ }
+ Frame {
+ msec: 2528
+ hash: "023843739f78eb77767aa1cacae824e9"
+ }
+ Frame {
+ msec: 2544
+ hash: "3e312b8de56c902ca20aba259c8559b2"
+ }
+ Frame {
+ msec: 2560
+ hash: "23fe7c60751c2e3a57a418ad57d290f1"
+ }
+ Frame {
+ msec: 2576
+ hash: "0cec0db315715c41c4086bdeb72af721"
+ }
+ Frame {
+ msec: 2592
+ hash: "1b633a8efad433e7dbf159d49ebd00e8"
+ }
+ Frame {
+ msec: 2608
+ hash: "35e46ea3f3a46297c403aa177ee66ede"
+ }
+ Frame {
+ msec: 2624
+ hash: "e1b8d1d7298a3d3ade82493fb6f99909"
+ }
+ Frame {
+ msec: 2640
+ hash: "74ecfaced66f630d1863c04000fa7f01"
+ }
+ Frame {
+ msec: 2656
+ hash: "74ecfaced66f630d1863c04000fa7f01"
+ }
+ Frame {
+ msec: 2672
+ hash: "c803b3258d0e1d8e6c1292ea2a00f76b"
+ }
+ Frame {
+ msec: 2688
+ hash: "c803b3258d0e1d8e6c1292ea2a00f76b"
+ }
+ Frame {
+ msec: 2704
+ hash: "c803b3258d0e1d8e6c1292ea2a00f76b"
+ }
+ Frame {
+ msec: 2720
+ hash: "9f3f4fe1be7bd4511a0408fd5ab1b11f"
+ }
+ Frame {
+ msec: 2736
+ hash: "9f3f4fe1be7bd4511a0408fd5ab1b11f"
+ }
+ Frame {
+ msec: 2752
+ hash: "cd2c4e1a288d09f46dd557973c22e1be"
+ }
+ Frame {
+ msec: 2768
+ hash: "cd2c4e1a288d09f46dd557973c22e1be"
+ }
+ Frame {
+ msec: 2784
+ hash: "cd2c4e1a288d09f46dd557973c22e1be"
+ }
+ Frame {
+ msec: 2800
+ hash: "8109005d7e21d16b77f88efce2b530e4"
+ }
+ Frame {
+ msec: 2816
+ hash: "8109005d7e21d16b77f88efce2b530e4"
+ }
+ Frame {
+ msec: 2832
+ hash: "8109005d7e21d16b77f88efce2b530e4"
+ }
+ Frame {
+ msec: 2848
+ hash: "8109005d7e21d16b77f88efce2b530e4"
+ }
+ Frame {
+ msec: 2864
+ hash: "8109005d7e21d16b77f88efce2b530e4"
+ }
+ Frame {
+ msec: 2880
+ image: "follow.2.png"
+ }
+ Frame {
+ msec: 2896
+ hash: "e009f65ae035fb8a9c27a1d57f10c35f"
+ }
+ Frame {
+ msec: 2912
+ hash: "e009f65ae035fb8a9c27a1d57f10c35f"
+ }
+ Frame {
+ msec: 2928
+ hash: "e009f65ae035fb8a9c27a1d57f10c35f"
+ }
+ Frame {
+ msec: 2944
+ hash: "e009f65ae035fb8a9c27a1d57f10c35f"
+ }
+ Frame {
+ msec: 2960
+ hash: "31a446fab3c9a92f20fbb065b62d4357"
+ }
+ Frame {
+ msec: 2976
+ hash: "31a446fab3c9a92f20fbb065b62d4357"
+ }
+ Frame {
+ msec: 2992
+ hash: "31a446fab3c9a92f20fbb065b62d4357"
+ }
+ Frame {
+ msec: 3008
+ hash: "31a446fab3c9a92f20fbb065b62d4357"
+ }
+ Frame {
+ msec: 3024
+ hash: "31a446fab3c9a92f20fbb065b62d4357"
+ }
+ Frame {
+ msec: 3040
+ hash: "31a446fab3c9a92f20fbb065b62d4357"
+ }
+ Frame {
+ msec: 3056
+ hash: "31a446fab3c9a92f20fbb065b62d4357"
+ }
+ Frame {
+ msec: 3072
+ hash: "31a446fab3c9a92f20fbb065b62d4357"
+ }
+ Frame {
+ msec: 3088
+ hash: "31a446fab3c9a92f20fbb065b62d4357"
+ }
+ Frame {
+ msec: 3104
+ hash: "31a446fab3c9a92f20fbb065b62d4357"
+ }
+ Frame {
+ msec: 3120
+ hash: "31a446fab3c9a92f20fbb065b62d4357"
+ }
+ Frame {
+ msec: 3136
+ hash: "31a446fab3c9a92f20fbb065b62d4357"
+ }
+ Frame {
+ msec: 3152
+ hash: "31a446fab3c9a92f20fbb065b62d4357"
+ }
+ Frame {
+ msec: 3168
+ hash: "31a446fab3c9a92f20fbb065b62d4357"
+ }
+ Frame {
+ msec: 3184
+ hash: "31a446fab3c9a92f20fbb065b62d4357"
+ }
+ Frame {
+ msec: 3200
+ hash: "20dd4407adca55737dd4231405c38cff"
+ }
+ Frame {
+ msec: 3216
+ hash: "20dd4407adca55737dd4231405c38cff"
+ }
+ Frame {
+ msec: 3232
+ hash: "20dd4407adca55737dd4231405c38cff"
+ }
+ Frame {
+ msec: 3248
+ hash: "20dd4407adca55737dd4231405c38cff"
+ }
+ Frame {
+ msec: 3264
+ hash: "20dd4407adca55737dd4231405c38cff"
+ }
+ Frame {
+ msec: 3280
+ hash: "20dd4407adca55737dd4231405c38cff"
+ }
+ Frame {
+ msec: 3296
+ hash: "20dd4407adca55737dd4231405c38cff"
+ }
+ Frame {
+ msec: 3312
+ hash: "20dd4407adca55737dd4231405c38cff"
+ }
+ Frame {
+ msec: 3328
+ hash: "8109005d7e21d16b77f88efce2b530e4"
+ }
+ Frame {
+ msec: 3344
+ hash: "cd2c4e1a288d09f46dd557973c22e1be"
+ }
+ Frame {
+ msec: 3360
+ hash: "cd2c4e1a288d09f46dd557973c22e1be"
+ }
+ Frame {
+ msec: 3376
+ hash: "cd2c4e1a288d09f46dd557973c22e1be"
+ }
+ Frame {
+ msec: 3392
+ hash: "cd2c4e1a288d09f46dd557973c22e1be"
+ }
+ Frame {
+ msec: 3408
+ hash: "cd2c4e1a288d09f46dd557973c22e1be"
+ }
+ Frame {
+ msec: 3424
+ hash: "cd2c4e1a288d09f46dd557973c22e1be"
+ }
+ Frame {
+ msec: 3440
+ hash: "cd2c4e1a288d09f46dd557973c22e1be"
+ }
+ Frame {
+ msec: 3456
+ hash: "cd2c4e1a288d09f46dd557973c22e1be"
+ }
+ Frame {
+ msec: 3472
+ hash: "cd2c4e1a288d09f46dd557973c22e1be"
+ }
+ Frame {
+ msec: 3488
+ hash: "cd2c4e1a288d09f46dd557973c22e1be"
+ }
+ Frame {
+ msec: 3504
+ hash: "cd2c4e1a288d09f46dd557973c22e1be"
+ }
+ Frame {
+ msec: 3520
+ hash: "9f3f4fe1be7bd4511a0408fd5ab1b11f"
+ }
+ Frame {
+ msec: 3536
+ hash: "9f3f4fe1be7bd4511a0408fd5ab1b11f"
+ }
+ Frame {
+ msec: 3552
+ hash: "080910b835e134dfd06b83f1e92c92e8"
+ }
+ Frame {
+ msec: 3568
+ hash: "317c01c691f0b46d5d809c3ccc1e78e6"
+ }
+ Frame {
+ msec: 3584
+ hash: "475f4da1be823b57b58aecbb5a853892"
+ }
+ Frame {
+ msec: 3600
+ hash: "b60a6387e955cd8e5e907a6b22a2aecc"
+ }
+ Frame {
+ msec: 3616
+ hash: "4674eae7d8db1bf7eb35c7798948f7c4"
+ }
+ Frame {
+ msec: 3632
+ hash: "7b4a143d0bf44ddf87d3bfd03c143025"
+ }
+ Frame {
+ msec: 3648
+ hash: "e794d7ee32bcec9e0790ee95d89c9e06"
+ }
+ Frame {
+ msec: 3664
+ hash: "0581724e928d25f276dd4ad19a9ffd4e"
+ }
+ Frame {
+ msec: 3680
+ hash: "d8ef5e95454db4fd40fe51bcd9cf57b2"
+ }
+ Frame {
+ msec: 3696
+ hash: "22ca96df911b74025fc771e945850adf"
+ }
+ Frame {
+ msec: 3712
+ hash: "e0a88fb75e9193322fd5f925e89d7828"
+ }
+ Frame {
+ msec: 3728
+ hash: "ee82a5192ea9af94d1a6ab169b438c34"
+ }
+ Frame {
+ msec: 3744
+ hash: "c9d0d8514a783f3a9d0da651439990e2"
+ }
+ Frame {
+ msec: 3760
+ hash: "9378795141098714f3ab5b2f28d219af"
+ }
+ Frame {
+ msec: 3776
+ hash: "d61c4a67039e5a56ccd59df8afa24d38"
+ }
+ Frame {
+ msec: 3792
+ hash: "62be79759a2a15ac73355457fa515b0a"
+ }
+ Frame {
+ msec: 3808
+ hash: "d8f09c05c188fe3d09b8409a62bee29c"
+ }
+ Frame {
+ msec: 3824
+ hash: "0285dead7580a8064116cf32bd31b40d"
+ }
+ Frame {
+ msec: 3840
+ image: "follow.3.png"
+ }
+ Frame {
+ msec: 3856
+ hash: "1921975bdfbe8a9817808919c97d2bac"
+ }
+ Frame {
+ msec: 3872
+ hash: "9c58d55cc025dd022451971ba6735a79"
+ }
+ Frame {
+ msec: 3888
+ hash: "c2163f3ab875bdb5728b16abcb65dfa4"
+ }
+ Frame {
+ msec: 3904
+ hash: "48bd0e85564e411c4ae6d042487cb0d5"
+ }
+ Frame {
+ msec: 3920
+ hash: "2e2c9f62acdc703fff7c28e7b7a59d47"
+ }
+ Frame {
+ msec: 3936
+ hash: "d749acc91c1b271aac00c00a6088e9ac"
+ }
+ Frame {
+ msec: 3952
+ hash: "cfa2c65f6f1a9bf242e073166a6e7b97"
+ }
+ Frame {
+ msec: 3968
+ hash: "bb6f98350cbb89cf96c2f159659b944e"
+ }
+ Frame {
+ msec: 3984
+ hash: "b7f087705eb7e2c7c4bd197aa08c1509"
+ }
+ Frame {
+ msec: 4000
+ hash: "57f217985d1850bfa3d21c2cdd164d99"
+ }
+ Frame {
+ msec: 4016
+ hash: "ded1e29fb83d6ec1d888fbd610c8a875"
+ }
+ Frame {
+ msec: 4032
+ hash: "c2a9f250bca3e1f7906a577c0ae6b724"
+ }
+ Frame {
+ msec: 4048
+ hash: "9cb2ca74308f519da85389ae959980ce"
+ }
+ Frame {
+ msec: 4064
+ hash: "5b0d50ee5f7d077deec51159cebfd767"
+ }
+ Frame {
+ msec: 4080
+ hash: "c41d847a89ece0dc9cfa1d0a0a8a16b1"
+ }
+ Frame {
+ msec: 4096
+ hash: "d372cb387ad3f01614aaaf720f133d6e"
+ }
+ Frame {
+ msec: 4112
+ hash: "9458ad068c95ff80e1dc4b1efd52683e"
+ }
+ Frame {
+ msec: 4128
+ hash: "2e976c4a780503c6a71c4e9f8bd14178"
+ }
+ Frame {
+ msec: 4144
+ hash: "b2f36762c85fcdbb0e1be545a3c49936"
+ }
+ Frame {
+ msec: 4160
+ hash: "c29fdeb241221a29d0ad928f6401a2d4"
+ }
+ Frame {
+ msec: 4176
+ hash: "bdbaaa347e20d21cc02b4c98953255ea"
+ }
+ Frame {
+ msec: 4192
+ hash: "34e9b69f851e1d719467d08962d8a657"
+ }
+ Frame {
+ msec: 4208
+ hash: "140a90804138dadb42e08b75fc1eed67"
+ }
+ Frame {
+ msec: 4224
+ hash: "67418a2069d491022c28232b392b1631"
+ }
+ Frame {
+ msec: 4240
+ hash: "df39748a385186ee0bdffa87485c2746"
+ }
+ Frame {
+ msec: 4256
+ hash: "c3276e48ede008a43baf350a79b3443b"
+ }
+ Frame {
+ msec: 4272
+ hash: "85473441e2560d8000640deecedef3bf"
+ }
+ Frame {
+ msec: 4288
+ hash: "4d3d07ed1acec99052ebf530cb2c20da"
+ }
+ Frame {
+ msec: 4304
+ hash: "3fb8ec07500be6d951f30121bcbcba13"
+ }
+ Frame {
+ msec: 4320
+ hash: "ae8cae69a702811a897e7d5790c806cc"
+ }
+ Frame {
+ msec: 4336
+ hash: "073e2e1af434447c3000b03e3a89925a"
+ }
+ Frame {
+ msec: 4352
+ hash: "3c75c7586c1dca2fd21266395ccc8ac4"
+ }
+ Frame {
+ msec: 4368
+ hash: "aa36ac379ac9953bd165b5164cd047da"
+ }
+ Frame {
+ msec: 4384
+ hash: "09d6ab311429cfe29a68c428669b5d5a"
+ }
+ Frame {
+ msec: 4400
+ hash: "11ebcb0a744bc3faa746560d9c1a824d"
+ }
+ Frame {
+ msec: 4416
+ hash: "aa01ba99122f89bff8fc45ef88326f6a"
+ }
+ Frame {
+ msec: 4432
+ hash: "6980292ba8a4bf8ead3581e5899f5d78"
+ }
+ Frame {
+ msec: 4448
+ hash: "65fa1a0fe53b9a0580c14e96d42fe993"
+ }
+ Frame {
+ msec: 4464
+ hash: "7837c0a533839f94629be4e64294b89f"
+ }
+ Frame {
+ msec: 4480
+ hash: "5edbf632047ae4130f580e4a0ece8e57"
+ }
+ Frame {
+ msec: 4496
+ hash: "0a5fdc57898cb56f00a76ecaa3a6b9e0"
+ }
+ Frame {
+ msec: 4512
+ hash: "58d1b36e738042af44dab04a8c842259"
+ }
+ Frame {
+ msec: 4528
+ hash: "2efb1f742d7f823d13b9724c1c10ce1a"
+ }
+ Frame {
+ msec: 4544
+ hash: "e0286eb0b3fbb17e422554a8ef25489c"
+ }
+ Frame {
+ msec: 4560
+ hash: "8252caa2841f07d29802a7b822388253"
+ }
+ Frame {
+ msec: 4576
+ hash: "eaabd4b3610c0bcbbdc113f86bc52e6c"
+ }
+ Frame {
+ msec: 4592
+ hash: "55b17d049e1c791d33094f64717bca06"
+ }
+ Frame {
+ msec: 4608
+ hash: "1bd607f6d0658f46b1f0df51e8a9a9fe"
+ }
+ Frame {
+ msec: 4624
+ hash: "4a52ea4de14098978931155f11168f68"
+ }
+ Frame {
+ msec: 4640
+ hash: "343df8fb45e1e70183bb61a1111909a5"
+ }
+ Frame {
+ msec: 4656
+ hash: "bcf1363d9912a3d626ef933387b4e01b"
+ }
+ Frame {
+ msec: 4672
+ hash: "67709ea579481537e532120de35619b2"
+ }
+ Frame {
+ msec: 4688
+ hash: "a7542255a10a120812880b1243bd573d"
+ }
+ Frame {
+ msec: 4704
+ hash: "b4f3e597e489d32a473bb2ad6bb92fc4"
+ }
+ Frame {
+ msec: 4720
+ hash: "f0df46d1b819edda5a616e858ed9171c"
+ }
+ Frame {
+ msec: 4736
+ hash: "2416564198b4b853d9c4f5ad55ee5db5"
+ }
+ Frame {
+ msec: 4752
+ hash: "342e5adcd2fca99c88c33cd8b56b8650"
+ }
+ Frame {
+ msec: 4768
+ hash: "01806799adce1d0069cfdd739f383a7f"
+ }
+ Frame {
+ msec: 4784
+ hash: "c045fdefdd4606d2c68c8cde2a7a40f4"
+ }
+ Frame {
+ msec: 4800
+ image: "follow.4.png"
+ }
+ Frame {
+ msec: 4816
+ hash: "c7371c0594fb9f4de0a7f8a3cdce061a"
+ }
+ Frame {
+ msec: 4832
+ hash: "6df0c2a27c672e36a3d7eb5b4e0c46bf"
+ }
+ Frame {
+ msec: 4848
+ hash: "97fa050a5790b1f722d25dbee9efba95"
+ }
+ Frame {
+ msec: 4864
+ hash: "85c26ed45e79793fc5b7521a8157d3a2"
+ }
+ Frame {
+ msec: 4880
+ hash: "9ff5d272ec8deed3e70164b78bc425c6"
+ }
+ Frame {
+ msec: 4896
+ hash: "d1e3f6d51d6b8e96261b902e6f88576d"
+ }
+ Frame {
+ msec: 4912
+ hash: "02c12e50ed6b7111f301e142a2fbc5db"
+ }
+ Frame {
+ msec: 4928
+ hash: "5177873aa73342ada32d7ebfe3f26e0e"
+ }
+ Frame {
+ msec: 4944
+ hash: "05d0364f67f317ee617f1a64d9543fe2"
+ }
+ Frame {
+ msec: 4960
+ hash: "0b93625274bf1e3585664e56aff0197c"
+ }
+ Frame {
+ msec: 4976
+ hash: "988083e19b15662ec09247c381bfaef5"
+ }
+ Frame {
+ msec: 4992
+ hash: "6caa6b74ba935c2c9a6bf75ef94afedf"
+ }
+ Frame {
+ msec: 5008
+ hash: "541ecf2b40931f8009a15c9c981e09aa"
+ }
+ Frame {
+ msec: 5024
+ hash: "7a962dad8227d367b4af7dee6ea09c20"
+ }
+ Frame {
+ msec: 5040
+ hash: "0c175618366090b8f21334e94a865464"
+ }
+ Frame {
+ msec: 5056
+ hash: "f8e32badd5a839892ee4982ca37933db"
+ }
+ Frame {
+ msec: 5072
+ hash: "3a91f3a25b245e79ddeb72778075ba8f"
+ }
+ Frame {
+ msec: 5088
+ hash: "e8fd158c923d389a2d87db0023522934"
+ }
+ Frame {
+ msec: 5104
+ hash: "9cfa7783d37010c10271d680d205ebc4"
+ }
+ Frame {
+ msec: 5120
+ hash: "5e81c936f9627cf537f96a1674c920be"
+ }
+ Frame {
+ msec: 5136
+ hash: "28679a61a44bf0d81d6a93d8ea301b97"
+ }
+ Frame {
+ msec: 5152
+ hash: "ef41d71b99f078abe8a2a8326ed236c9"
+ }
+ Frame {
+ msec: 5168
+ hash: "753da9af5dd15cbb6c9df83460f32631"
+ }
+ Frame {
+ msec: 5184
+ hash: "49bbb9f30cf72a64b64ab19f0c2d5b9e"
+ }
+ Frame {
+ msec: 5200
+ hash: "03d829cdb7da915da606dc1475debae8"
+ }
+ Frame {
+ msec: 5216
+ hash: "1ee5d8c3c868e2f7d7f034f9bdc91c8f"
+ }
+ Frame {
+ msec: 5232
+ hash: "0f497c52a8b4a7bbd9246c466182644c"
+ }
+ Frame {
+ msec: 5248
+ hash: "1574e08a7db9c9a164147ca329d48dbd"
+ }
+ Frame {
+ msec: 5264
+ hash: "bff3837578fd069d2b9000ad60123be3"
+ }
+ Frame {
+ msec: 5280
+ hash: "99ce71c69566b92715a27014548d7346"
+ }
+ Frame {
+ msec: 5296
+ hash: "78a78f00e598405d4e906a930ace9cb5"
+ }
+ Frame {
+ msec: 5312
+ hash: "a0f44f1a8772d4dd8d70795811fdd4ab"
+ }
+ Frame {
+ msec: 5328
+ hash: "3d5fd500d5c771b437a999659ea57dd7"
+ }
+ Frame {
+ msec: 5344
+ hash: "53fbb22689627f55af20b3cb15a7a8cf"
+ }
+ Frame {
+ msec: 5360
+ hash: "609838796118ab89566fe2fe664dfcb4"
+ }
+ Frame {
+ msec: 5376
+ hash: "c2d7d5cb7cf470ed4d84f705c187f768"
+ }
+ Frame {
+ msec: 5392
+ hash: "63c6de2754a0b9c23e5b652aa331716f"
+ }
+ Frame {
+ msec: 5408
+ hash: "8cacae37981ebd8c0a6772f97d8e9342"
+ }
+ Frame {
+ msec: 5424
+ hash: "b8ab40dbd1bb086eae5b80f2e751efe4"
+ }
+ Frame {
+ msec: 5440
+ hash: "fb4211ee009b224b64092d106369f6a0"
+ }
+ Frame {
+ msec: 5456
+ hash: "b59dd1dcbb128b6f7df51bd30ac0af31"
+ }
+ Frame {
+ msec: 5472
+ hash: "075ff90195b6a0d37944aaf32eb560e7"
+ }
+ Frame {
+ msec: 5488
+ hash: "26cb5dda92cfec934e4068322eb0c792"
+ }
+ Frame {
+ msec: 5504
+ hash: "0938c360b6c8911074cda8fd58de5650"
+ }
+ Frame {
+ msec: 5520
+ hash: "6491ba15d6566ab6f17ee6eb9c5472ab"
+ }
+ Frame {
+ msec: 5536
+ hash: "83518cf990f5050d68bf1f09c774ae74"
+ }
+ Frame {
+ msec: 5552
+ hash: "4ce84b0d70bc3ebf970e9161ffb7dc21"
+ }
+ Frame {
+ msec: 5568
+ hash: "57270cebd25e5c6dd7fb204232e18eb3"
+ }
+ Frame {
+ msec: 5584
+ hash: "d93f26948e6deb4bf074139468d12c27"
+ }
+ Frame {
+ msec: 5600
+ hash: "581fe059cd632e242dd308b11ef8288a"
+ }
+ Frame {
+ msec: 5616
+ hash: "2e19dc61944aa7671ac18303949e1c9e"
+ }
+ Frame {
+ msec: 5632
+ hash: "37b4864ed528a3be221d7abb4106ec3a"
+ }
+ Frame {
+ msec: 5648
+ hash: "4261fe6049e5dff81b33e503a4d1825d"
+ }
+ Frame {
+ msec: 5664
+ hash: "c2bf99e089bc984abea63b8b43270859"
+ }
+ Frame {
+ msec: 5680
+ hash: "d8de63e15f1f6e9c0cf0dd43afa03c42"
+ }
+ Frame {
+ msec: 5696
+ hash: "3643a50c30b6d6f9b724155e49db7276"
+ }
+ Frame {
+ msec: 5712
+ hash: "582e871460fe3056f7f3df97d5939d69"
+ }
+ Frame {
+ msec: 5728
+ hash: "e46da1072974efc1c4df89d9c6243609"
+ }
+ Frame {
+ msec: 5744
+ hash: "705ac82bb7a03eb5843aae7292739851"
+ }
+ Frame {
+ msec: 5760
+ image: "follow.5.png"
+ }
+ Frame {
+ msec: 5776
+ hash: "b2949af515524933f740057cae6d8c40"
+ }
+ Frame {
+ msec: 5792
+ hash: "72a3526dbfeb42935a737f7876c86499"
+ }
+ Frame {
+ msec: 5808
+ hash: "43907b91dec1412d0e6c8b53cec8e06f"
+ }
+ Frame {
+ msec: 5824
+ hash: "66db45ca42d42e8a6eb279b892493af9"
+ }
+ Frame {
+ msec: 5840
+ hash: "1f2d69898b90d344f337ac37a000e797"
+ }
+ Frame {
+ msec: 5856
+ hash: "9c09edc9541d69e7565ef05fbe58fadf"
+ }
+ Frame {
+ msec: 5872
+ hash: "0d68b6d05150981eff443cd7437b3d95"
+ }
+ Frame {
+ msec: 5888
+ hash: "85558e393a1e0483ba27844cf409af47"
+ }
+ Frame {
+ msec: 5904
+ hash: "83a73b6b3eb1052a9b1a12fb78326b26"
+ }
+ Frame {
+ msec: 5920
+ hash: "4839882ecc497916b4ac964a5cc71d1b"
+ }
+ Frame {
+ msec: 5936
+ hash: "28d6f5066f186a0d9ab7f4781374d3eb"
+ }
+ Frame {
+ msec: 5952
+ hash: "d89148926c6dd636de953a55082e50f1"
+ }
+ Frame {
+ msec: 5968
+ hash: "dbab902e252561849dba5551fc8f07d3"
+ }
+ Frame {
+ msec: 5984
+ hash: "84a3a891fbbb1a0fca24324a3ea10c6a"
+ }
+ Frame {
+ msec: 6000
+ hash: "64563bb68129f527b1c33c0d9a543f09"
+ }
+ Frame {
+ msec: 6016
+ hash: "64563bb68129f527b1c33c0d9a543f09"
+ }
+ Frame {
+ msec: 6032
+ hash: "7f3ae8ac99bf202414b03e9b33473044"
+ }
+ Frame {
+ msec: 6048
+ hash: "7f3ae8ac99bf202414b03e9b33473044"
+ }
+ Frame {
+ msec: 6064
+ hash: "7fbdf6396050da5b8945f1111c2ca973"
+ }
+ Frame {
+ msec: 6080
+ hash: "5bf4fa18f24fc221685234a92c4cafb6"
+ }
+ Frame {
+ msec: 6096
+ hash: "5bf4fa18f24fc221685234a92c4cafb6"
+ }
+ Frame {
+ msec: 6112
+ hash: "e1b8d1d7298a3d3ade82493fb6f99909"
+ }
+ Frame {
+ msec: 6128
+ hash: "6320b7b0bd1926c625f914d30f1f1fd9"
+ }
+ Frame {
+ msec: 6144
+ hash: "74ecfaced66f630d1863c04000fa7f01"
+ }
+ Frame {
+ msec: 6160
+ hash: "74ecfaced66f630d1863c04000fa7f01"
+ }
+ Frame {
+ msec: 6176
+ hash: "c803b3258d0e1d8e6c1292ea2a00f76b"
+ }
+ Frame {
+ msec: 6192
+ hash: "c803b3258d0e1d8e6c1292ea2a00f76b"
+ }
+ Frame {
+ msec: 6208
+ hash: "8d359f95ee869714bb3972986637642d"
+ }
+ Frame {
+ msec: 6224
+ hash: "9f3f4fe1be7bd4511a0408fd5ab1b11f"
+ }
+ Frame {
+ msec: 6240
+ hash: "9f3f4fe1be7bd4511a0408fd5ab1b11f"
+ }
+ Frame {
+ msec: 6256
+ hash: "cd2c4e1a288d09f46dd557973c22e1be"
+ }
+ Frame {
+ msec: 6272
+ hash: "cd2c4e1a288d09f46dd557973c22e1be"
+ }
+ Frame {
+ msec: 6288
+ hash: "cd2c4e1a288d09f46dd557973c22e1be"
+ }
+ Frame {
+ msec: 6304
+ hash: "8109005d7e21d16b77f88efce2b530e4"
+ }
+ Frame {
+ msec: 6320
+ hash: "8109005d7e21d16b77f88efce2b530e4"
+ }
+ Frame {
+ msec: 6336
+ hash: "8109005d7e21d16b77f88efce2b530e4"
+ }
+ Frame {
+ msec: 6352
+ hash: "8109005d7e21d16b77f88efce2b530e4"
+ }
+ Frame {
+ msec: 6368
+ hash: "8109005d7e21d16b77f88efce2b530e4"
+ }
+ Frame {
+ msec: 6384
+ hash: "e009f65ae035fb8a9c27a1d57f10c35f"
+ }
+ Frame {
+ msec: 6400
+ hash: "e009f65ae035fb8a9c27a1d57f10c35f"
+ }
+ Frame {
+ msec: 6416
+ hash: "e009f65ae035fb8a9c27a1d57f10c35f"
+ }
+ Frame {
+ msec: 6432
+ hash: "e009f65ae035fb8a9c27a1d57f10c35f"
+ }
+ Frame {
+ msec: 6448
+ hash: "e009f65ae035fb8a9c27a1d57f10c35f"
+ }
+ Frame {
+ msec: 6464
+ hash: "31a446fab3c9a92f20fbb065b62d4357"
+ }
+ Frame {
+ msec: 6480
+ hash: "31a446fab3c9a92f20fbb065b62d4357"
+ }
+ Frame {
+ msec: 6496
+ hash: "31a446fab3c9a92f20fbb065b62d4357"
+ }
+ Frame {
+ msec: 6512
+ hash: "31a446fab3c9a92f20fbb065b62d4357"
+ }
+ Frame {
+ msec: 6528
+ hash: "31a446fab3c9a92f20fbb065b62d4357"
+ }
+ Frame {
+ msec: 6544
+ hash: "31a446fab3c9a92f20fbb065b62d4357"
+ }
+ Frame {
+ msec: 6560
+ hash: "31a446fab3c9a92f20fbb065b62d4357"
+ }
+ Key {
+ type: 6
+ key: 16777249
+ modifiers: 67108864
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 6576
+ hash: "31a446fab3c9a92f20fbb065b62d4357"
+ }
+ Frame {
+ msec: 6592
+ hash: "31a446fab3c9a92f20fbb065b62d4357"
+ }
+ Frame {
+ msec: 6608
+ hash: "31a446fab3c9a92f20fbb065b62d4357"
+ }
+ Frame {
+ msec: 6624
+ hash: "31a446fab3c9a92f20fbb065b62d4357"
+ }
+ Frame {
+ msec: 6640
+ hash: "31a446fab3c9a92f20fbb065b62d4357"
+ }
+ Frame {
+ msec: 6656
+ hash: "31a446fab3c9a92f20fbb065b62d4357"
+ }
+ Frame {
+ msec: 6672
+ hash: "31a446fab3c9a92f20fbb065b62d4357"
+ }
+ Frame {
+ msec: 6688
+ hash: "31a446fab3c9a92f20fbb065b62d4357"
+ }
+ Frame {
+ msec: 6704
+ hash: "20dd4407adca55737dd4231405c38cff"
+ }
+}
diff --git a/tests/auto/declarative/visual/qmlspringfollow/follow.qml b/tests/auto/declarative/visual/qmlspringfollow/follow.qml
new file mode 100644
index 0000000..3e164f9
--- /dev/null
+++ b/tests/auto/declarative/visual/qmlspringfollow/follow.qml
@@ -0,0 +1,73 @@
+import Qt 4.6
+
+Rectangle {
+ color: "#ffffff"
+ width: 320; height: 240
+ Rectangle {
+ id: rect
+ color: "#00ff00"
+ y: 200; width: 60; height: 20
+ y: SequentialAnimation {
+ running: true; repeat: true
+ NumberAnimation {
+ to: 20; duration: 500
+ easing: "easeInOutQuad"
+ }
+ NumberAnimation {
+ to: 200; duration: 2000
+ easing: "easeOutBounce"
+ }
+ PauseAnimation { duration: 1000 }
+ }
+ }
+
+ // Velocity
+ Rectangle {
+ color: "#ff0000"
+ x: rect.width; width: rect.width; height: 20
+ y: 200
+ y: SpringFollow { source: rect.y; velocity: 200 }
+ }
+ Text { x: rect.width; y: 220; text: "Velocity" }
+
+ // Spring
+ Rectangle {
+ color: "#ff0000"
+ x: rect.width * 2; width: rect.width/2; height: 20
+ y: 200
+ y: SpringFollow { source: rect.y; spring: 1.0; damping: 0.2 }
+ }
+ Rectangle {
+ color: "#880000"
+ x: rect.width * 2.5; width: rect.width/2; height: 20
+ y: 200
+ y: SpringFollow { source: rect.y; spring: 1.0; damping: 0.2; mass: 3.0 } // "heavier" object
+ }
+ Text { x: rect.width * 2; y: 220; text: "Spring" }
+
+ // Follow mouse
+ MouseRegion {
+ id: mouseRegion
+ anchors.fill: parent
+ Rectangle {
+ id: ball
+ width: 20; height: 20
+ radius: 10
+ color: "#0000ff"
+ x: SpringFollow { id: f1; source: mouseRegion.mouseX-10; spring: 1.0; damping: 0.05; epsilon: 0.25 }
+ y: SpringFollow { id: f2; source: mouseRegion.mouseY-10; spring: 1.0; damping: 0.05; epsilon: 0.25 }
+ states: [
+ State {
+ name: "following"
+ when: !f1.inSync || !f2.inSync
+ PropertyChanges { target: ball; color: "#ff0000" }
+ }
+ ]
+ transitions: [
+ Transition {
+ ColorAnimation { duration: 200 }
+ }
+ ]
+ }
+ }
+}
diff --git a/tests/auto/declarative/visual/tst_visual.cpp b/tests/auto/declarative/visual/tst_visual.cpp
index e40dec7..5a5318a 100644
--- a/tests/auto/declarative/visual/tst_visual.cpp
+++ b/tests/auto/declarative/visual/tst_visual.cpp
@@ -59,13 +59,13 @@ public:
static QString toTestScript(const QString &, Mode=Test);
static QString viewer();
+ static QStringList findQmlFiles(const QDir &d);
private slots:
void visual_data();
void visual();
private:
QString qmlviewer;
- QStringList findQmlFiles(const QDir &d);
};
@@ -257,6 +257,7 @@ void usage()
{
fprintf(stderr, "\n");
fprintf(stderr, "QML related options\n");
+ fprintf(stderr, " -listtests : list all the tests seen by tst_visual, and then exit immediately\n");
fprintf(stderr, " -record file : record new test data for file\n");
fprintf(stderr, " -recordnovisuals file : record new test data for file, but ignore visuals\n");
fprintf(stderr, " -play file : playback test data for file, printing errors\n");
@@ -267,12 +268,12 @@ void usage()
"Visual tests are recordings of manual interactions with a QML test,\n"
"that can then be run automatically. To record a new test, run:\n"
"\n"
- " tst_visuals -record yourtestdir/yourtest # Note, no .qml extension\n"
+ " tst_visual -record yourtestdir/yourtest.qml\n"
"\n"
"This records everything you do (try to keep it short).\n"
"To play back a test, run:\n"
"\n"
- " tst_visuals -play yourtestdir/yourtest\n"
+ " tst_visual -play yourtestdir/yourtest.qml\n"
"\n"
"Your test may include QML code to test itself, reporting any error to an\n"
"'error' property on the root object - the test will fail if this property\n"
@@ -281,7 +282,7 @@ void usage()
"If your test changes slightly but is still correct (check with -play), you\n"
"can update the visuals by running:\n"
"\n"
- " tst_visuals -updatevisuals yourtestdir/yourtest\n"
+ " tst_visual -updatevisuals yourtestdir/yourtest.qml\n"
"\n"
"If your test includes platform-sensitive visuals (eg. text in system fonts),\n"
"you should create platform-specific visuals, using -updateplatformvisuals\n"
@@ -332,10 +333,18 @@ int main(int argc, char **argv)
newArgv[newArgc++] = argv[ii];
}
- if (arg == "-help" || arg == "-?") {
+ if (arg == "-help" || arg == "-?" || arg == "--help") {
atexit(usage);
showHelp = true;
}
+
+ if (arg == "-listtests") {
+ QStringList list = tst_visual::findQmlFiles(QDir(QT_TEST_SOURCE_DIR));
+ foreach (QString test, list) {
+ qWarning() << qPrintable(test);
+ }
+ return 0;
+ }
}
if (mode == Test || showHelp) {