diff options
author | Martin Jones <martin.jones@nokia.com> | 2010-12-01 07:36:41 (GMT) |
---|---|---|
committer | Martin Jones <martin.jones@nokia.com> | 2010-12-01 07:36:41 (GMT) |
commit | a305814f8f59f634943d8d5f8d87d2fd49891cb3 (patch) | |
tree | 42ed4e6afecbf36af2750e2eeaed87117ab942a6 /tests | |
parent | 6258fc281f5b66b2634b81a2633b117165cea7ef (diff) | |
parent | 1337a3e031477aa4d628d01252557dee622629ff (diff) | |
download | Qt-a305814f8f59f634943d8d5f8d87d2fd49891cb3.zip Qt-a305814f8f59f634943d8d5f8d87d2fd49891cb3.tar.gz Qt-a305814f8f59f634943d8d5f8d87d2fd49891cb3.tar.bz2 |
Merge branch '4.7' of scm.dev.nokia.troll.no:qt/qt-qml into qtquick11
Diffstat (limited to 'tests')
97 files changed, 6822 insertions, 788 deletions
diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/AliasBindingsAssignCorrectlyType.qml b/tests/auto/declarative/qdeclarativeecmascript/data/AliasBindingsAssignCorrectlyType.qml new file mode 100644 index 0000000..0eda67d --- /dev/null +++ b/tests/auto/declarative/qdeclarativeecmascript/data/AliasBindingsAssignCorrectlyType.qml @@ -0,0 +1,9 @@ +import QtQuick 1.0 + +QtObject { + id: root + + property real realProperty + property alias aliasProperty: root.realProperty +} + diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/AliasBindingsOverrideTargetType.qml b/tests/auto/declarative/qdeclarativeecmascript/data/AliasBindingsOverrideTargetType.qml new file mode 100644 index 0000000..f539fb6 --- /dev/null +++ b/tests/auto/declarative/qdeclarativeecmascript/data/AliasBindingsOverrideTargetType.qml @@ -0,0 +1,14 @@ +import QtQuick 1.0 +import Qt.test 1.0 + +MyTypeObject { + id: root + + property int data: 7 + + property int targetProperty: root.data * 43 - root.data + property alias aliasProperty: root.targetProperty + + pointProperty: Qt.point(data, data); + property alias pointAliasProperty: root.pointProperty +} diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/AliasBindingsOverrideTargetType3.qml b/tests/auto/declarative/qdeclarativeecmascript/data/AliasBindingsOverrideTargetType3.qml new file mode 100644 index 0000000..a4b0527 --- /dev/null +++ b/tests/auto/declarative/qdeclarativeecmascript/data/AliasBindingsOverrideTargetType3.qml @@ -0,0 +1,9 @@ +import QtQuick 1.0 + +QtObject { + id: root + + property int testProperty + property alias aliasProperty: root.testProperty +} + diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/aliasBindingsAssignCorrectly.qml b/tests/auto/declarative/qdeclarativeecmascript/data/aliasBindingsAssignCorrectly.qml new file mode 100644 index 0000000..f0808c4 --- /dev/null +++ b/tests/auto/declarative/qdeclarativeecmascript/data/aliasBindingsAssignCorrectly.qml @@ -0,0 +1,59 @@ +import QtQuick 1.0 + +Item { + id: root + + property bool test: false + + property real testData: 9 + property real testData2: 9 + + states: State { + name: "change" + PropertyChanges { + target: myType + realProperty: if (testData2 > 3) 9; else 11; + } + } + + AliasBindingsAssignCorrectlyType { + id: myType + + aliasProperty: if (testData > 3) 14; else 12; + } + + Component.onCompleted: { + // Check original binding works + if (myType.aliasProperty != 14) return; + + testData = 2; + if (myType.aliasProperty != 12) return; + + // Change binding indirectly by modifying the "realProperty" + root.state = "change"; + if (myType.aliasProperty != 9) return; + + // Check the new binding works + testData2 = 1; + if (myType.aliasProperty != 11) return; + + // Try and trigger the old binding (that should have been removed) + testData = 6; + if (myType.aliasProperty != 11) return; + + // Restore the original binding + root.state = ""; + if (myType.aliasProperty != 14) return; + + // Test the restored binding works + testData = 0; + if (myType.aliasProperty != 12) return; + + // Test the old binding isn't somehow hanging around and still in effect + testData2 = 13; + if (myType.aliasProperty != 12) return; + + test = true; + } +} + diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/aliasBindingsOverrideTarget.2.qml b/tests/auto/declarative/qdeclarativeecmascript/data/aliasBindingsOverrideTarget.2.qml new file mode 100644 index 0000000..4f07cbf --- /dev/null +++ b/tests/auto/declarative/qdeclarativeecmascript/data/aliasBindingsOverrideTarget.2.qml @@ -0,0 +1,29 @@ +import QtQuick 1.0 + +Item { + id: me + property bool test: false + + property int value: 9 + + AliasBindingsOverrideTargetType { + id: aliasType + pointAliasProperty.x: me.value + } + + Component.onCompleted: { + if (aliasType.pointAliasProperty.x != 9) return; + + me.value = 11; + if (aliasType.pointAliasProperty.x != 11) return; + + aliasType.data = 8; + if (aliasType.pointAliasProperty.x != 11) return; + + me.value = 4; + if (aliasType.pointAliasProperty.x != 4) return; + + test = true; + } +} + diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/aliasBindingsOverrideTarget.3.qml b/tests/auto/declarative/qdeclarativeecmascript/data/aliasBindingsOverrideTarget.3.qml new file mode 100644 index 0000000..937ae91 --- /dev/null +++ b/tests/auto/declarative/qdeclarativeecmascript/data/aliasBindingsOverrideTarget.3.qml @@ -0,0 +1,24 @@ +import QtQuick 1.0 + +Item { + id: root + property bool test: false; + + property int value1: 10 + property int value2: 11 + + AliasBindingsOverrideTargetType3 { + id: obj + + testProperty: root.value1 * 9 + aliasProperty: root.value2 * 10 + } + + Component.onCompleted: { + if (obj.testProperty != 110) return; + if (obj.aliasProperty != 110) return; + + test = true; + } +} + diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/aliasBindingsOverrideTarget.qml b/tests/auto/declarative/qdeclarativeecmascript/data/aliasBindingsOverrideTarget.qml new file mode 100644 index 0000000..a01dc5b --- /dev/null +++ b/tests/auto/declarative/qdeclarativeecmascript/data/aliasBindingsOverrideTarget.qml @@ -0,0 +1,28 @@ +import QtQuick 1.0 + +Item { + id: me + property bool test: false + + property int value: 9 + + AliasBindingsOverrideTargetType { + id: aliasType + aliasProperty: me.value + } + + Component.onCompleted: { + if (aliasType.aliasProperty != 9) return; + + me.value = 11; + if (aliasType.aliasProperty != 11) return; + + aliasType.data = 8; + if (aliasType.aliasProperty != 11) return; + + me.value = 4; + if (aliasType.aliasProperty != 4) return; + + test = true; + } +} diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/aliasWritesOverrideBindings.2.qml b/tests/auto/declarative/qdeclarativeecmascript/data/aliasWritesOverrideBindings.2.qml new file mode 100644 index 0000000..5bf9f6a --- /dev/null +++ b/tests/auto/declarative/qdeclarativeecmascript/data/aliasWritesOverrideBindings.2.qml @@ -0,0 +1,29 @@ +import QtQuick 1.0 + +Item { + id: me + property bool test: false + + property int value: 9 + + AliasBindingsOverrideTargetType { + id: aliasType + } + + Component.onCompleted: { + if (aliasType.aliasProperty != 294) return; + + aliasType.data = 8; + if (aliasType.aliasProperty != 336) return; + + aliasType.aliasProperty = 4; + if (aliasType.aliasProperty != 4) return; + + aliasType.data = 7; + if (aliasType.aliasProperty != 4) return; + + test = true; + } +} + + diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/aliasWritesOverrideBindings.3.qml b/tests/auto/declarative/qdeclarativeecmascript/data/aliasWritesOverrideBindings.3.qml new file mode 100644 index 0000000..a23ad4a --- /dev/null +++ b/tests/auto/declarative/qdeclarativeecmascript/data/aliasWritesOverrideBindings.3.qml @@ -0,0 +1,23 @@ +import QtQuick 1.0 + +Item { + id: me + property bool test: false + + property int value: 9 + + AliasBindingsOverrideTargetType { + id: aliasType + pointAliasProperty.x: 9 + } + + Component.onCompleted: { + if (aliasType.pointAliasProperty.x != 9) return; + + aliasType.data = 8; + if (aliasType.pointAliasProperty.x != 9) return; + + test = true; + } +} + diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/aliasWritesOverrideBindings.qml b/tests/auto/declarative/qdeclarativeecmascript/data/aliasWritesOverrideBindings.qml new file mode 100644 index 0000000..ac20371 --- /dev/null +++ b/tests/auto/declarative/qdeclarativeecmascript/data/aliasWritesOverrideBindings.qml @@ -0,0 +1,23 @@ +import QtQuick 1.0 + +Item { + id: me + property bool test: false + + property int value: 9 + + AliasBindingsOverrideTargetType { + id: aliasType + aliasProperty: 11 + } + + Component.onCompleted: { + if (aliasType.aliasProperty != 11) return; + + aliasType.data = 8; + if (aliasType.aliasProperty != 11) return; + + test = true; + } +} + diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/writeRemovesBinding.qml b/tests/auto/declarative/qdeclarativeecmascript/data/writeRemovesBinding.qml new file mode 100644 index 0000000..035f037 --- /dev/null +++ b/tests/auto/declarative/qdeclarativeecmascript/data/writeRemovesBinding.qml @@ -0,0 +1,46 @@ +import QtQuick 1.0 + +QtObject { + id: root + + property bool test: false + + property real data: 9 + property real binding: data + + property alias aliasProperty: root.aliasBinding + property real aliasBinding: data + + Component.onCompleted: { + // Non-aliased properties + if (binding != 9) return; + + data = 11; + if (binding != 11) return; + + binding = 6; + if (binding != 6) return; + + data = 3; + if (binding != 6) return; + + + // Writing through an aliased property + if (aliasProperty != 3) return; + if (aliasBinding != 3) return; + + data = 4; + if (aliasProperty != 4) return; + if (aliasBinding != 4) return; + + aliasProperty = 19; + if (aliasProperty != 19) return; + if (aliasBinding != 19) return; + + data = 5; + if (aliasProperty != 19) return; + if (aliasBinding != 19) return; + + test = true; + } +} diff --git a/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp b/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp index 652404c..77fab91 100644 --- a/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp +++ b/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp @@ -135,6 +135,8 @@ private slots: void scriptConnect(); void scriptDisconnect(); void ownership(); + void cppOwnershipReturnValue(); + void ownershipCustomReturnValue(); void qlistqobjectMethods(); void strictlyEquals(); void compiled(); @@ -164,6 +166,10 @@ private slots: void in(); void sharedAttachedObject(); void objectName(); + void writeRemovesBinding(); + void aliasBindingsAssignCorrectly(); + void aliasBindingsOverrideTarget(); + void aliasWritesOverrideBindings(); void include(); @@ -741,11 +747,9 @@ void tst_qdeclarativeecmascript::constantsOverrideBindings() QVERIFY(object != 0); QCOMPARE(object->property("c1").toInt(), 0); - QEXPECT_FAIL("", "QTBUG-13719", Continue); QCOMPARE(object->property("c3").toInt(), 10); object->setProperty("c1", QVariant(9)); QCOMPARE(object->property("c1").toInt(), 9); - QEXPECT_FAIL("", "QTBUG-13719", Continue); QCOMPARE(object->property("c3").toInt(), 10); } } @@ -2098,6 +2102,87 @@ void tst_qdeclarativeecmascript::ownership() } } +class CppOwnershipReturnValue : public QObject +{ + Q_OBJECT +public: + CppOwnershipReturnValue() : value(0) {} + ~CppOwnershipReturnValue() { delete value; } + + Q_INVOKABLE QObject *create() { + Q_ASSERT(value == 0); + + value = new QObject; + QDeclarativeEngine::setObjectOwnership(value, QDeclarativeEngine::CppOwnership); + return value; + } + + Q_INVOKABLE MyQmlObject *createQmlObject() { + Q_ASSERT(value == 0); + + MyQmlObject *rv = new MyQmlObject; + value = rv; + return rv; + } + + QPointer<QObject> value; +}; + +// QTBUG-15695. +// Test setObjectOwnership(CppOwnership) works even when there is no QDeclarativeData +void tst_qdeclarativeecmascript::cppOwnershipReturnValue() +{ + CppOwnershipReturnValue source; + + { + QDeclarativeEngine engine; + engine.rootContext()->setContextProperty("source", &source); + + QVERIFY(source.value == 0); + + QDeclarativeComponent component(&engine); + component.setData("import QtQuick 1.0\nQtObject {\nComponent.onCompleted: { var a = source.create(); }\n}\n", QUrl()); + + QObject *object = component.create(); + + QVERIFY(object != 0); + QVERIFY(source.value != 0); + + delete object; + } + + QCoreApplication::instance()->processEvents(QEventLoop::DeferredDeletion); + + QVERIFY(source.value != 0); +} + +// QTBUG-15697 +void tst_qdeclarativeecmascript::ownershipCustomReturnValue() +{ + CppOwnershipReturnValue source; + + { + QDeclarativeEngine engine; + engine.rootContext()->setContextProperty("source", &source); + + QVERIFY(source.value == 0); + + QDeclarativeComponent component(&engine); + component.setData("import QtQuick 1.0\nQtObject {\nComponent.onCompleted: { var a = source.createQmlObject(); }\n}\n", QUrl()); + + QObject *object = component.create(); + + QVERIFY(object != 0); + QVERIFY(source.value != 0); + + delete object; + } + + QCoreApplication::instance()->processEvents(QEventLoop::DeferredDeletion); + + QVERIFY(source.value == 0); +} + class QListQObjectMethodsObject : public QObject { Q_OBJECT @@ -2671,6 +2756,97 @@ void tst_qdeclarativeecmascript::objectName() delete o; } +void tst_qdeclarativeecmascript::writeRemovesBinding() +{ + QDeclarativeComponent component(&engine, TEST_FILE("writeRemovesBinding.qml")); + QObject *o = component.create(); + QVERIFY(o != 0); + + QCOMPARE(o->property("test").toBool(), true); + + delete o; +} + +// Test bindings assigned to alias properties actually assign to the alias' target +void tst_qdeclarativeecmascript::aliasBindingsAssignCorrectly() +{ + QDeclarativeComponent component(&engine, TEST_FILE("aliasBindingsAssignCorrectly.qml")); + QObject *o = component.create(); + QVERIFY(o != 0); + + QCOMPARE(o->property("test").toBool(), true); + + delete o; +} + +// Test bindings assigned to alias properties override a binding on the target (QTBUG-13719) +void tst_qdeclarativeecmascript::aliasBindingsOverrideTarget() +{ + { + QDeclarativeComponent component(&engine, TEST_FILE("aliasBindingsOverrideTarget.qml")); + QObject *o = component.create(); + QVERIFY(o != 0); + + QCOMPARE(o->property("test").toBool(), true); + + delete o; + } + + { + QDeclarativeComponent component(&engine, TEST_FILE("aliasBindingsOverrideTarget.2.qml")); + QObject *o = component.create(); + QVERIFY(o != 0); + + QCOMPARE(o->property("test").toBool(), true); + + delete o; + } + + { + QDeclarativeComponent component(&engine, TEST_FILE("aliasBindingsOverrideTarget.3.qml")); + QObject *o = component.create(); + QVERIFY(o != 0); + + QCOMPARE(o->property("test").toBool(), true); + + delete o; + } +} + +// Test that writes to alias properties override bindings on the alias target (QTBUG-13719) +void tst_qdeclarativeecmascript::aliasWritesOverrideBindings() +{ + { + QDeclarativeComponent component(&engine, TEST_FILE("aliasWritesOverrideBindings.qml")); + QObject *o = component.create(); + QVERIFY(o != 0); + + QCOMPARE(o->property("test").toBool(), true); + + delete o; + } + + { + QDeclarativeComponent component(&engine, TEST_FILE("aliasWritesOverrideBindings.2.qml")); + QObject *o = component.create(); + QVERIFY(o != 0); + + QCOMPARE(o->property("test").toBool(), true); + + delete o; + } + + { + QDeclarativeComponent component(&engine, TEST_FILE("aliasWritesOverrideBindings.3.qml")); + QObject *o = component.create(); + QVERIFY(o != 0); + + QCOMPARE(o->property("test").toBool(), true); + + delete o; + } +} + QTEST_MAIN(tst_qdeclarativeecmascript) #include "tst_qdeclarativeecmascript.moc" diff --git a/tests/auto/declarative/qdeclarativegridview/tst_qdeclarativegridview.cpp b/tests/auto/declarative/qdeclarativegridview/tst_qdeclarativegridview.cpp index 327bba2..7998e30 100644 --- a/tests/auto/declarative/qdeclarativegridview/tst_qdeclarativegridview.cpp +++ b/tests/auto/declarative/qdeclarativegridview/tst_qdeclarativegridview.cpp @@ -1263,7 +1263,7 @@ void tst_QDeclarativeGridView::header() QDeclarativeView *canvas = createView(); TestModel model; - for (int i = 0; i < 7; i++) + for (int i = 0; i < 30; i++) model.addItem("Item" + QString::number(i), ""); QDeclarativeContext *ctxt = canvas->rootContext(); diff --git a/tests/auto/declarative/qdeclarativeimage/tst_qdeclarativeimage.cpp b/tests/auto/declarative/qdeclarativeimage/tst_qdeclarativeimage.cpp index 3cee976..c811f62 100644 --- a/tests/auto/declarative/qdeclarativeimage/tst_qdeclarativeimage.cpp +++ b/tests/auto/declarative/qdeclarativeimage/tst_qdeclarativeimage.cpp @@ -87,6 +87,7 @@ private slots: void noLoading(); void paintedWidthHeight(); void sourceSize_QTBUG_14303(); + void nullPixmapPaint(); private: template<typename T> @@ -551,6 +552,35 @@ void tst_qdeclarativeimage::sourceSize_QTBUG_14303() QTRY_COMPARE(sourceSizeSpy.count(), 2); } +static int numberOfWarnings = 0; +static void checkWarnings(QtMsgType, const char *) +{ + numberOfWarnings++; +} + +// QTBUG-15690 +void tst_qdeclarativeimage::nullPixmapPaint() +{ + QString componentStr = QString("import QtQuick 1.0\nImage { width: 10; height:10; fillMode: Image.PreserveAspectFit; source: \"") + + SERVER_ADDR + QString("/no-such-file.png\" }"); + QDeclarativeComponent component(&engine); + component.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); + QDeclarativeImage *image = qobject_cast<QDeclarativeImage*>(component.create()); + + QTRY_VERIFY(image != 0); + + QtMsgHandler previousMsgHandler = qInstallMsgHandler(checkWarnings); + + QPixmap pm(100, 100); + QPainter p(&pm); + + // used to print "QTransform::translate with NaN called" + image->paint(&p, 0, 0); + qInstallMsgHandler(previousMsgHandler); + QVERIFY(numberOfWarnings == 0); + delete image; +} + /* Find an item with the specified objectName. If index is supplied then the item must also evaluate the {index} expression equal to index diff --git a/tests/auto/declarative/qdeclarativeinstruction/tst_qdeclarativeinstruction.cpp b/tests/auto/declarative/qdeclarativeinstruction/tst_qdeclarativeinstruction.cpp index db1f191..4470d65 100644 --- a/tests/auto/declarative/qdeclarativeinstruction/tst_qdeclarativeinstruction.cpp +++ b/tests/auto/declarative/qdeclarativeinstruction/tst_qdeclarativeinstruction.cpp @@ -458,6 +458,7 @@ void tst_qdeclarativeinstruction::dump() i.type = QDeclarativeInstruction::FetchValueType; i.fetchValue.property = 34; i.fetchValue.type = 6; + i.fetchValue.bindingSkipList = 7; data->bytecode << i; } @@ -538,7 +539,7 @@ void tst_qdeclarativeinstruction::dump() << "Index\tLine\tOperation\t\tData1\tData2\tData3\tComments" << "-------------------------------------------------------------------------------" << "0\t\t0\tINIT\t\t\t0\t3\t-1\t-1" - << "1\t\t1\tCREATE\t\t\t0\t\t\t\"Test\"" + << "1\t\t1\tCREATE\t\t\t0\t-1\t\t\"Test\"" << "2\t\t2\tSETID\t\t\t0\t\t\t\"testId\"" << "3\t\t3\tSET_DEFAULT" << "4\t\t4\tCREATE_COMPONENT\t3" @@ -578,7 +579,7 @@ void tst_qdeclarativeinstruction::dump() << "38\t\t40\tFETCH_ATTACHED\t\t23" << "39\t\t42\tFETCH_QLIST\t\t32" << "40\t\t43\tFETCH\t\t\t33" - << "41\t\t44\tFETCH_VALUE\t\t34\t6" + << "41\t\t44\tFETCH_VALUE\t\t34\t6\t7" << "42\t\t45\tPOP" << "43\t\t46\tPOP_QLIST" << "44\t\t47\tPOP_VALUE\t\t35\t8" diff --git a/tests/auto/declarative/qdeclarativelistview/data/header.qml b/tests/auto/declarative/qdeclarativelistview/data/header.qml new file mode 100644 index 0000000..6da996e --- /dev/null +++ b/tests/auto/declarative/qdeclarativelistview/data/header.qml @@ -0,0 +1,31 @@ +import QtQuick 1.0 + +Rectangle { + width: 240 + height: 320 + color: "#ffffff" + Component { + id: myDelegate + Rectangle { + id: wrapper + objectName: "wrapper" + height: 30 + width: 240 + Text { + text: index + } + color: ListView.isCurrentItem ? "lightsteelblue" : "white" + } + } + ListView { + id: list + objectName: "list" + focus: true + width: 240 + height: 320 + snapMode: ListView.SnapToItem + model: testModel + delegate: myDelegate + header: Text { objectName: "header"; text: "Header"; height: 10 } + } +} diff --git a/tests/auto/declarative/qdeclarativelistview/data/header1.qml b/tests/auto/declarative/qdeclarativelistview/data/header1.qml new file mode 100644 index 0000000..f2ab4c1 --- /dev/null +++ b/tests/auto/declarative/qdeclarativelistview/data/header1.qml @@ -0,0 +1,33 @@ +import QtQuick 1.0 + +Rectangle { + width: 240 + height: 320 + color: "#ffffff" + + ListModel { id: testModel } + + ListView { + id: list + objectName: "list" + width: parent.width + anchors.top: parent.top + anchors.bottom: parent.bottom + model: testModel + delegate: Text { + objectName: "wrapper" + font.pointSize: 20 + text: index + } + footer: Rectangle { + width: parent.width + height: 40 + color: "green" + } + header: Text { objectName: "header"; text: "Header" } + } + + Component.onCompleted: { + for (var i=0; i<30; i++) testModel.append({"name" : i, "val": i}) + } +} diff --git a/tests/auto/declarative/qdeclarativelistview/tst_qdeclarativelistview.cpp b/tests/auto/declarative/qdeclarativelistview/tst_qdeclarativelistview.cpp index 37d836d..759caf2 100644 --- a/tests/auto/declarative/qdeclarativelistview/tst_qdeclarativelistview.cpp +++ b/tests/auto/declarative/qdeclarativelistview/tst_qdeclarativelistview.cpp @@ -98,6 +98,7 @@ private slots: void QTBUG_9791(); void manualHighlight(); void QTBUG_11105(); + void header(); void footer(); void resizeView(); void sizeLessThan1(); @@ -1661,6 +1662,67 @@ void tst_QDeclarativeListView::QTBUG_11105() delete canvas; } +void tst_QDeclarativeListView::header() +{ + { + QDeclarativeView *canvas = createView(); + + TestModel model; + for (int i = 0; i < 30; i++) + model.addItem("Item" + QString::number(i), ""); + + QDeclarativeContext *ctxt = canvas->rootContext(); + ctxt->setContextProperty("testModel", &model); + + canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/header.qml")); + qApp->processEvents(); + + QDeclarativeListView *listview = findItem<QDeclarativeListView>(canvas->rootObject(), "list"); + QTRY_VERIFY(listview != 0); + + QDeclarativeItem *contentItem = listview->contentItem(); + QTRY_VERIFY(contentItem != 0); + + QDeclarativeText *header = findItem<QDeclarativeText>(contentItem, "header"); + QVERIFY(header); + QCOMPARE(header->y(), 0.0); + + QCOMPARE(listview->contentY(), 0.0); + + model.clear(); + QTRY_COMPARE(header->y(), 0.0); + + delete canvas; + } + { + QDeclarativeView *canvas = createView(); + + TestModel model; + + QDeclarativeContext *ctxt = canvas->rootContext(); + + canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/header1.qml")); + qApp->processEvents(); + + QDeclarativeListView *listview = findItem<QDeclarativeListView>(canvas->rootObject(), "list"); + QTRY_VERIFY(listview != 0); + + QDeclarativeItem *contentItem = listview->contentItem(); + QTRY_VERIFY(contentItem != 0); + + QDeclarativeText *header = findItem<QDeclarativeText>(contentItem, "header"); + QVERIFY(header); + QCOMPARE(header->y(), 0.0); + + QCOMPARE(listview->contentY(), 0.0); + + model.clear(); + QTRY_COMPARE(header->y(), 0.0); + + delete canvas; + } +} + void tst_QDeclarativeListView::footer() { QDeclarativeView *canvas = createView(); diff --git a/tests/auto/declarative/qdeclarativeproperty/data/aliasPropertyBindings.qml b/tests/auto/declarative/qdeclarativeproperty/data/aliasPropertyBindings.qml new file mode 100644 index 0000000..a253a58 --- /dev/null +++ b/tests/auto/declarative/qdeclarativeproperty/data/aliasPropertyBindings.qml @@ -0,0 +1,19 @@ +import QtQuick 1.0 + +Item { + id: root + + property real test: 9 + property real test2: 3 + + property real realProperty: test * test + test + property alias aliasProperty: root.realProperty + + states: State { + name: "switch" + PropertyChanges { + target: root + aliasProperty: 32 * test2 + } + } +} diff --git a/tests/auto/declarative/qdeclarativeproperty/tst_qdeclarativeproperty.cpp b/tests/auto/declarative/qdeclarativeproperty/tst_qdeclarativeproperty.cpp index 0ca0e03..3cc71bb 100644 --- a/tests/auto/declarative/qdeclarativeproperty/tst_qdeclarativeproperty.cpp +++ b/tests/auto/declarative/qdeclarativeproperty/tst_qdeclarativeproperty.cpp @@ -132,6 +132,7 @@ private slots: // Bugs void crashOnValueProperty(); + void aliasPropertyBindings(); void copy(); private: @@ -1308,6 +1309,74 @@ void tst_qdeclarativeproperty::crashOnValueProperty() QCOMPARE(p.read(), QVariant(20)); } +// QTBUG-13719 +void tst_qdeclarativeproperty::aliasPropertyBindings() +{ + QDeclarativeComponent component(&engine, TEST_FILE("aliasPropertyBindings.qml")); + + QObject *object = component.create(); + QVERIFY(object != 0); + + QCOMPARE(object->property("realProperty").toReal(), 90.); + QCOMPARE(object->property("aliasProperty").toReal(), 90.); + + object->setProperty("test", 10); + + QCOMPARE(object->property("realProperty").toReal(), 110.); + QCOMPARE(object->property("aliasProperty").toReal(), 110.); + + QDeclarativeProperty realProperty(object, QLatin1String("realProperty")); + QDeclarativeProperty aliasProperty(object, QLatin1String("aliasProperty")); + + // Check there is a binding on these two properties + QVERIFY(QDeclarativePropertyPrivate::binding(realProperty) != 0); + QVERIFY(QDeclarativePropertyPrivate::binding(aliasProperty) != 0); + + // Check that its the same binding on these two properties + QCOMPARE(QDeclarativePropertyPrivate::binding(realProperty), + QDeclarativePropertyPrivate::binding(aliasProperty)); + + // Change the binding + object->setProperty("state", QString("switch")); + + QVERIFY(QDeclarativePropertyPrivate::binding(realProperty) != 0); + QVERIFY(QDeclarativePropertyPrivate::binding(aliasProperty) != 0); + QCOMPARE(QDeclarativePropertyPrivate::binding(realProperty), + QDeclarativePropertyPrivate::binding(aliasProperty)); + + QCOMPARE(object->property("realProperty").toReal(), 96.); + QCOMPARE(object->property("aliasProperty").toReal(), 96.); + + // Check the old binding really has not effect any more + object->setProperty("test", 4); + + QCOMPARE(object->property("realProperty").toReal(), 96.); + QCOMPARE(object->property("aliasProperty").toReal(), 96.); + + object->setProperty("test2", 9); + + QCOMPARE(object->property("realProperty").toReal(), 288.); + QCOMPARE(object->property("aliasProperty").toReal(), 288.); + + // Revert + object->setProperty("state", QString("")); + + QVERIFY(QDeclarativePropertyPrivate::binding(realProperty) != 0); + QVERIFY(QDeclarativePropertyPrivate::binding(aliasProperty) != 0); + QCOMPARE(QDeclarativePropertyPrivate::binding(realProperty), + QDeclarativePropertyPrivate::binding(aliasProperty)); + + QCOMPARE(object->property("realProperty").toReal(), 20.); + QCOMPARE(object->property("aliasProperty").toReal(), 20.); + + object->setProperty("test2", 3); + + QCOMPARE(object->property("realProperty").toReal(), 20.); + QCOMPARE(object->property("aliasProperty").toReal(), 20.); + + delete object; +} + void tst_qdeclarativeproperty::copy() { PropertyObject object; diff --git a/tests/auto/declarative/qdeclarativevaluetypes/data/BindingsSpliceCorrectlyType.qml b/tests/auto/declarative/qdeclarativevaluetypes/data/BindingsSpliceCorrectlyType.qml new file mode 100644 index 0000000..f625d08 --- /dev/null +++ b/tests/auto/declarative/qdeclarativevaluetypes/data/BindingsSpliceCorrectlyType.qml @@ -0,0 +1,7 @@ +import Test 1.0 + +MyTypeObject { + property bool boldProperty: false + + font.bold: boldProperty +} diff --git a/tests/auto/declarative/qdeclarativevaluetypes/data/BindingsSpliceCorrectlyType4.qml b/tests/auto/declarative/qdeclarativevaluetypes/data/BindingsSpliceCorrectlyType4.qml new file mode 100644 index 0000000..0bdccce --- /dev/null +++ b/tests/auto/declarative/qdeclarativevaluetypes/data/BindingsSpliceCorrectlyType4.qml @@ -0,0 +1,7 @@ +import Test 1.0 + +MyTypeObject { + property int dataProperty: 7 + + point: Qt.point(dataProperty, dataProperty) +} diff --git a/tests/auto/declarative/qdeclarativevaluetypes/data/BindingsSpliceCorrectlyType5.qml b/tests/auto/declarative/qdeclarativevaluetypes/data/BindingsSpliceCorrectlyType5.qml new file mode 100644 index 0000000..151c499 --- /dev/null +++ b/tests/auto/declarative/qdeclarativevaluetypes/data/BindingsSpliceCorrectlyType5.qml @@ -0,0 +1,7 @@ +import Test 1.0 + +MyTypeObject { + property int dataProperty: 7 + + point.x: dataProperty +} diff --git a/tests/auto/declarative/qdeclarativevaluetypes/data/bindingsSpliceCorrectly.1.qml b/tests/auto/declarative/qdeclarativevaluetypes/data/bindingsSpliceCorrectly.1.qml new file mode 100644 index 0000000..7012143 --- /dev/null +++ b/tests/auto/declarative/qdeclarativevaluetypes/data/bindingsSpliceCorrectly.1.qml @@ -0,0 +1,29 @@ +import Test 1.0 +import QtQuick 1.0 + +BindingsSpliceCorrectlyType { + property bool test: false + + property bool italicProperty: false + + font.italic: italicProperty + + Component.onCompleted: { + // Test initial state + if (font.italic != false) return; + if (font.bold != false) return; + + // Test italic binding worked + italicProperty = true; + + if (font.italic != true) return; + if (font.bold != false) return; + + // Test bold binding worked + boldProperty = true; + if (font.italic != true) return; + if (font.bold != true) return; + + test = true; + } +} diff --git a/tests/auto/declarative/qdeclarativevaluetypes/data/bindingsSpliceCorrectly.2.qml b/tests/auto/declarative/qdeclarativevaluetypes/data/bindingsSpliceCorrectly.2.qml new file mode 100644 index 0000000..69dbcab --- /dev/null +++ b/tests/auto/declarative/qdeclarativevaluetypes/data/bindingsSpliceCorrectly.2.qml @@ -0,0 +1,31 @@ +import Test 1.0 +import QtQuick 1.0 + +BindingsSpliceCorrectlyType { + property bool test: false + + property bool italicProperty: false + + font.italic: italicProperty + font.bold: false + + Component.onCompleted: { + // Test initial state + if (font.italic != false) return; + if (font.bold != false) return; + + // Test italic binding worked + italicProperty = true; + + if (font.italic != true) return; + if (font.bold != false) return; + + // Test bold binding was removed by constant write + boldProperty = true; + if (font.italic != true) return; + if (font.bold != false) return; + + test = true; + } +} + diff --git a/tests/auto/declarative/qdeclarativevaluetypes/data/bindingsSpliceCorrectly.3.qml b/tests/auto/declarative/qdeclarativevaluetypes/data/bindingsSpliceCorrectly.3.qml new file mode 100644 index 0000000..669feb9 --- /dev/null +++ b/tests/auto/declarative/qdeclarativevaluetypes/data/bindingsSpliceCorrectly.3.qml @@ -0,0 +1,36 @@ +import Test 1.0 +import QtQuick 1.0 + +BindingsSpliceCorrectlyType { + property bool test: false + + property bool italicProperty: false + property bool boldProperty2: false + + font.italic: italicProperty + font.bold: boldProperty2 + + Component.onCompleted: { + // Test initial state + if (font.italic != false) return; + if (font.bold != false) return; + + // Test italic binding worked + italicProperty = true; + + if (font.italic != true) return; + if (font.bold != false) return; + + // Test bold binding was overridden + boldProperty = true; + if (font.italic != true) return; + if (font.bold != false) return; + + boldProperty2 = true; + if (font.italic != true) return; + if (font.bold != true) return; + + test = true; + } +} + diff --git a/tests/auto/declarative/qdeclarativevaluetypes/data/bindingsSpliceCorrectly.4.qml b/tests/auto/declarative/qdeclarativevaluetypes/data/bindingsSpliceCorrectly.4.qml new file mode 100644 index 0000000..f28584f --- /dev/null +++ b/tests/auto/declarative/qdeclarativevaluetypes/data/bindingsSpliceCorrectly.4.qml @@ -0,0 +1,27 @@ +import Test 1.0 +import QtQuick 1.0 + +BindingsSpliceCorrectlyType4 { + property bool test: false + + property int dataProperty2: 8 + + point.x: dataProperty2 + + Component.onCompleted: { + if (point.x != 8) return; + if (point.y != 4) return; + + dataProperty = 9; + + if (point.x != 8) return; + if (point.y != 4) return; + + dataProperty2 = 13; + + if (point.x != 13) return; + if (point.y != 4) return; + + test = true; + } +} diff --git a/tests/auto/declarative/qdeclarativevaluetypes/data/bindingsSpliceCorrectly.5.qml b/tests/auto/declarative/qdeclarativevaluetypes/data/bindingsSpliceCorrectly.5.qml new file mode 100644 index 0000000..1214c83 --- /dev/null +++ b/tests/auto/declarative/qdeclarativevaluetypes/data/bindingsSpliceCorrectly.5.qml @@ -0,0 +1,27 @@ +import Test 1.0 +import QtQuick 1.0 + +BindingsSpliceCorrectlyType5 { + property bool test: false + + property int dataProperty2: 8 + + point: Qt.point(dataProperty2, dataProperty2); + + Component.onCompleted: { + if (point.x != 8) return; + if (point.y != 8) return; + + dataProperty = 9; + + if (point.x != 8) return; + if (point.y != 8) return; + + dataProperty2 = 13; + + if (point.x != 13) return; + if (point.y != 13) return; + + test = true; + } +} diff --git a/tests/auto/declarative/qdeclarativevaluetypes/tst_qdeclarativevaluetypes.cpp b/tests/auto/declarative/qdeclarativevaluetypes/tst_qdeclarativevaluetypes.cpp index a4819f3..c243a75 100644 --- a/tests/auto/declarative/qdeclarativevaluetypes/tst_qdeclarativevaluetypes.cpp +++ b/tests/auto/declarative/qdeclarativevaluetypes/tst_qdeclarativevaluetypes.cpp @@ -94,6 +94,7 @@ private slots: void conflictingBindings(); void returnValues(); void varAssignment(); + void bindingsSpliceCorrectly(); private: QDeclarativeEngine engine; @@ -942,6 +943,61 @@ void tst_qdeclarativevaluetypes::varAssignment() delete object; } +// Test bindings splice together correctly +void tst_qdeclarativevaluetypes::bindingsSpliceCorrectly() +{ + { + QDeclarativeComponent component(&engine, TEST_FILE("bindingsSpliceCorrectly.1.qml")); + QObject *object = component.create(); + QVERIFY(object != 0); + + QCOMPARE(object->property("test").toBool(), true); + + delete object; + } + + { + QDeclarativeComponent component(&engine, TEST_FILE("bindingsSpliceCorrectly.2.qml")); + QObject *object = component.create(); + QVERIFY(object != 0); + + QCOMPARE(object->property("test").toBool(), true); + + delete object; + } + + + { + QDeclarativeComponent component(&engine, TEST_FILE("bindingsSpliceCorrectly.3.qml")); + QObject *object = component.create(); + QVERIFY(object != 0); + + QCOMPARE(object->property("test").toBool(), true); + + delete object; + } + + { + QDeclarativeComponent component(&engine, TEST_FILE("bindingsSpliceCorrectly.4.qml")); + QObject *object = component.create(); + QVERIFY(object != 0); + + QCOMPARE(object->property("test").toBool(), true); + + delete object; + } + + { + QDeclarativeComponent component(&engine, TEST_FILE("bindingsSpliceCorrectly.5.qml")); + QObject *object = component.create(); + QVERIFY(object != 0); + + QCOMPARE(object->property("test").toBool(), true); + + delete object; + } +} + QTEST_MAIN(tst_qdeclarativevaluetypes) #include "tst_qdeclarativevaluetypes.moc" diff --git a/tests/auto/declarative/qdeclarativeviewer/tst_qdeclarativeviewer.cpp b/tests/auto/declarative/qdeclarativeviewer/tst_qdeclarativeviewer.cpp index 21c7197..f19eb03 100644 --- a/tests/auto/declarative/qdeclarativeviewer/tst_qdeclarativeviewer.cpp +++ b/tests/auto/declarative/qdeclarativeviewer/tst_qdeclarativeviewer.cpp @@ -238,13 +238,25 @@ void tst_QDeclarativeViewer::loading() delete viewer; } +static int numberOfWarnings = 0; +static void checkWarnings(QtMsgType, const char *) +{ + numberOfWarnings++; +} + void tst_QDeclarativeViewer::fileBrowser() { + QtMsgHandler previousMsgHandler = qInstallMsgHandler(checkWarnings); QDeclarativeViewer *viewer = new QDeclarativeViewer(); QVERIFY(viewer); viewer->setUseNativeFileBrowser(false); viewer->openFile(); viewer->show(); + QCoreApplication::processEvents(); + qInstallMsgHandler(previousMsgHandler); + + // QTBUG-15720 + QVERIFY(numberOfWarnings == 0); QApplication::setActiveWindow(viewer); QTest::qWaitForWindowShown(viewer); diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data-MAC/flickable-horizontal.0.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data-MAC/flickable-horizontal.0.png Binary files differnew file mode 100644 index 0000000..9a81b29 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data-MAC/flickable-horizontal.0.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data-MAC/flickable-horizontal.1.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data-MAC/flickable-horizontal.1.png Binary files differnew file mode 100644 index 0000000..2d9c4fd --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data-MAC/flickable-horizontal.1.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data-MAC/flickable-horizontal.2.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data-MAC/flickable-horizontal.2.png Binary files differnew file mode 100644 index 0000000..2bb0cb0 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data-MAC/flickable-horizontal.2.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data-MAC/flickable-horizontal.3.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data-MAC/flickable-horizontal.3.png Binary files differnew file mode 100644 index 0000000..8260a65 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data-MAC/flickable-horizontal.3.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data-MAC/flickable-horizontal.4.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data-MAC/flickable-horizontal.4.png Binary files differnew file mode 100644 index 0000000..0abcbc2 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data-MAC/flickable-horizontal.4.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data-MAC/flickable-horizontal.qml b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data-MAC/flickable-horizontal.qml new file mode 100644 index 0000000..f1bb428 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data-MAC/flickable-horizontal.qml @@ -0,0 +1,1575 @@ +import Qt.VisualTest 4.7 + +VisualTest { + Frame { + msec: 0 + } + Frame { + msec: 16 + image: "flickable-horizontal.0.png" + } + Frame { + msec: 32 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 48 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 64 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 80 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 96 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 112 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 128 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 144 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 160 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 176 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 192 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 208 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 224 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 240 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 256 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 272 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 288 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 304 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 320 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 336 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 352 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 368 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 384 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 400 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 416 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 432 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 448 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 464 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 480 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 496 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 512 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 528 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 544 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 560 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 576 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 592 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 608 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 624 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 640 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 656 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 672 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 688 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 704 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 720 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Mouse { + type: 2 + button: 1 + buttons: 1 + x: 447; y: 145 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 736 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 752 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 768 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 446; y: 145 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 784 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 440; y: 146 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 800 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 425; y: 151 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 407; y: 157 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 816 + hash: "c92e345e4ffdb30c28d9d5aa5400bd30" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 359; y: 169 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 832 + hash: "90f94986ab44ab59618e9a5da17b8cc9" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 309; y: 181 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 848 + hash: "0154a65f8693b98576101ac1c2fc8761" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 282; y: 187 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 3 + button: 1 + buttons: 0 + x: 282; y: 187 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 864 + hash: "792c1b5267f14c891dae2348a8188a92" + } + Frame { + msec: 880 + hash: "15ce9e88d4ad2e698bf167d1432c0b8a" + } + Frame { + msec: 896 + hash: "8f4109ef4c24d286d73f689565a0d056" + } + Frame { + msec: 912 + hash: "f5728190bf5c94742686f063b4a4b09b" + } + Frame { + msec: 928 + hash: "a38c7527a9a818b7bc25466b0e4939f9" + } + Frame { + msec: 944 + hash: "ed3902455fc31a4e3232308b815a4daa" + } + Frame { + msec: 960 + hash: "a2093589363ac2d50491412e99e0193a" + } + Frame { + msec: 976 + image: "flickable-horizontal.1.png" + } + Frame { + msec: 992 + hash: "c32349580e3a9586cc1133c935607cf0" + } + Frame { + msec: 1008 + hash: "cd2068492e346eb20d50aee69e3a3559" + } + Frame { + msec: 1024 + hash: "f43a1a38894b8ffad009ba995d84b0ee" + } + Frame { + msec: 1040 + hash: "2d5c4a73df2a054801571f1ce119e31f" + } + Frame { + msec: 1056 + hash: "b8825cc6bdca8102a655d797ea41b5b1" + } + Frame { + msec: 1072 + hash: "3f0be15b85220743d004f2d54b6e137c" + } + Frame { + msec: 1088 + hash: "4b0952d33149b44ffa0a06723a4116c7" + } + Frame { + msec: 1104 + hash: "9056bda43259e92cfe56fdf394e2ca54" + } + Frame { + msec: 1120 + hash: "82ec9f09d2303e5b0b9c05b9a10a84db" + } + Frame { + msec: 1136 + hash: "751a9b3054c09d900364d7c9cac8bc2b" + } + Frame { + msec: 1152 + hash: "17dfdfef20f9da7e8b6f16df974baea9" + } + Frame { + msec: 1168 + hash: "108e6d9a5a81df32823bfd7a90a000a7" + } + Frame { + msec: 1184 + hash: "71dd0d55a3e837d3a8e4b4e318579ade" + } + Frame { + msec: 1200 + hash: "8013cdb2615bca89134ea040409af509" + } + Frame { + msec: 1216 + hash: "4b2826ad4c755690bd837994133f5fac" + } + Frame { + msec: 1232 + hash: "52d0da7f138bd37ac587a448d6402aca" + } + Frame { + msec: 1248 + hash: "e634724c5bb294d338210845bf64d2cf" + } + Frame { + msec: 1264 + hash: "59bc5f0d057ee431f289806377f19213" + } + Frame { + msec: 1280 + hash: "6ef2c5f7766c2cc77b30d636bfaa4422" + } + Frame { + msec: 1296 + hash: "578d056c3db094420dbaa51bd08ced20" + } + Frame { + msec: 1312 + hash: "14c6f7a04a52caffefa07af556ccb262" + } + Frame { + msec: 1328 + hash: "7cb63d56fec144d0509ce219fc6fe459" + } + Frame { + msec: 1344 + hash: "462dafa7f6427aecf6c28a5dcf5a10cc" + } + Frame { + msec: 1360 + hash: "45360814f985ed780a443568a91fc170" + } + Frame { + msec: 1376 + hash: "0d18ceb2436e4f7eb56a3443fab706e6" + } + Frame { + msec: 1392 + hash: "1d83f367ba9f7f1d4496208271e925ed" + } + Frame { + msec: 1408 + hash: "fdbd00ee4c122aef779df42ea53f403a" + } + Frame { + msec: 1424 + hash: "bedd1cb304efd4851813b39a746198a4" + } + Frame { + msec: 1440 + hash: "9aa7bed86efa9634466736f20ee0ab5b" + } + Frame { + msec: 1456 + hash: "00fc8186a7ae44e10195a7b13defa0d2" + } + Frame { + msec: 1472 + hash: "42d6e8e0bbed879ed63644c83e61e7bd" + } + Frame { + msec: 1488 + hash: "df074f8c210249e5ef652349479b6325" + } + Frame { + msec: 1504 + hash: "4f94020437e35cf44dd3576997990ab7" + } + Frame { + msec: 1520 + hash: "8ca6c3b4fa3be73ac35073356b680a35" + } + Frame { + msec: 1536 + hash: "c25eee1c5791383ebc59974e7754eacb" + } + Frame { + msec: 1552 + hash: "f4917ada78942428cc6b9aa5e56c013d" + } + Frame { + msec: 1568 + hash: "23e1e607101fc7260a4ac841344f5fe0" + } + Frame { + msec: 1584 + hash: "2dcc7d187d8e0493e5766efbf09ef37c" + } + Frame { + msec: 1600 + hash: "c1e5602753e80cf44d7b330140c6912e" + } + Frame { + msec: 1616 + hash: "febaf72d01a3763461b4b7d2ddd7a23e" + } + Frame { + msec: 1632 + hash: "071262b911b61576f451be25691a57cf" + } + Frame { + msec: 1648 + hash: "44705db9289fd8753b9d63e8bc963b38" + } + Frame { + msec: 1664 + hash: "0c41d7b7d36bd083abfc0b83b862cad9" + } + Frame { + msec: 1680 + hash: "0c41d7b7d36bd083abfc0b83b862cad9" + } + Frame { + msec: 1696 + hash: "071262b911b61576f451be25691a57cf" + } + Frame { + msec: 1712 + hash: "a00aa90e894b48203b0446ca287ee712" + } + Frame { + msec: 1728 + hash: "26c9ca53ee4b084c6595ad65bf4880df" + } + Frame { + msec: 1744 + hash: "f4917ada78942428cc6b9aa5e56c013d" + } + Frame { + msec: 1760 + hash: "ffedee7bf2d8099e361b8b1706b03f88" + } + Frame { + msec: 1776 + hash: "1778ef1629ce977015b641448b46634f" + } + Frame { + msec: 1792 + hash: "42d6e8e0bbed879ed63644c83e61e7bd" + } + Frame { + msec: 1808 + hash: "99e843ec69b79b79b0792e0a2f28cd1b" + } + Frame { + msec: 1824 + hash: "8b3ebca70b50a6a93823e015ea80f0f9" + } + Frame { + msec: 1840 + hash: "8eaa7f076064ce55051237b04861e408" + } + Frame { + msec: 1856 + hash: "6acc0ca5e5808d911287edfa78c8ac02" + } + Frame { + msec: 1872 + hash: "e9f05899e0b53c21f6efe834095a3ea4" + } + Mouse { + type: 2 + button: 1 + buttons: 1 + x: 91; y: 208 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 93; y: 209 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1888 + hash: "e9f05899e0b53c21f6efe834095a3ea4" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 99; y: 210 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 108; y: 210 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1904 + hash: "d2dece405f5f6ed1de2acb6615a931de" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 142; y: 214 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1920 + hash: "21e0f21edc77424e8327c9a3350ecc1d" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 198; y: 216 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1936 + image: "flickable-horizontal.2.png" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 229; y: 218 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 266; y: 220 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1952 + hash: "c10c8b0c94f899414d8b3ef0b7c97646" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 322; y: 223 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 3 + button: 1 + buttons: 0 + x: 322; y: 223 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1968 + hash: "807aff4e6c96a9d0de7fa55e233446b1" + } + Frame { + msec: 1984 + hash: "dbd02848cefacbb26f4bcb7d8f073d6c" + } + Frame { + msec: 2000 + hash: "9a60608d8ea1b39fa2d3851873f2f08e" + } + Frame { + msec: 2016 + hash: "e7b3e3a40281f63889808211d6746374" + } + Frame { + msec: 2032 + hash: "188c225c46ec00105df230bfeea09974" + } + Frame { + msec: 2048 + hash: "e2e977b42e91d8c5dee57fd8245692eb" + } + Frame { + msec: 2064 + hash: "ca2f12fb173c405f95e608858ab982ad" + } + Frame { + msec: 2080 + hash: "fa86ee5f25fa425cf2569c8ef570b9d8" + } + Frame { + msec: 2096 + hash: "9b74656866fb8c7394bbbecec6414aca" + } + Frame { + msec: 2112 + hash: "87147326d1baab174c0f9a5ccdc2cb84" + } + Frame { + msec: 2128 + hash: "c0d00f98c71bf3f8e5954b45fbab95a8" + } + Frame { + msec: 2144 + hash: "c087d1d62e56e573b55c1d8599bba8a6" + } + Frame { + msec: 2160 + hash: "dd5a94c6febdee58e8f115cb75131aaa" + } + Frame { + msec: 2176 + hash: "a7465d6137f865f512ce65ceb29533b4" + } + Frame { + msec: 2192 + hash: "409086f6bb661aab8b548fea56d7e6b1" + } + Frame { + msec: 2208 + hash: "6a22911e0fb58df31271baa463ff599d" + } + Frame { + msec: 2224 + hash: "c4f6dd30d5fdfcf91a8b29cf5c622423" + } + Frame { + msec: 2240 + hash: "5a95b83f237c7243a198a43e9a587179" + } + Frame { + msec: 2256 + hash: "d79ed290efc6dbd976d574bf0b14a6a3" + } + Frame { + msec: 2272 + hash: "a7bcb436e96d7c981852239462573495" + } + Frame { + msec: 2288 + hash: "f63cc82e351daab503e316f8b516990f" + } + Frame { + msec: 2304 + hash: "4ea63cd25a1424042ffc60549a78563c" + } + Frame { + msec: 2320 + hash: "ef0fb776012575b3b0dbf6e5f4dee571" + } + Frame { + msec: 2336 + hash: "e2508faec7737be2666d87ad715b5f74" + } + Frame { + msec: 2352 + hash: "9fe4e897c6b853f774d11817a0eb53bf" + } + Frame { + msec: 2368 + hash: "c122ce2e73cbfedcc99d649c21d91f9d" + } + Frame { + msec: 2384 + hash: "883b8b180853f1f432ae98ddfe1b6ce3" + } + Frame { + msec: 2400 + hash: "d0808284e431da60f61d571c257a3011" + } + Frame { + msec: 2416 + hash: "df90f19450bf4d9496aab987a89e3a02" + } + Frame { + msec: 2432 + hash: "5640c1e64556b90e7fbd4448fa9db462" + } + Frame { + msec: 2448 + hash: "6d9b5c2f7d0dedbbc444e69bb39fed08" + } + Frame { + msec: 2464 + hash: "485c4a8049068cf73bf22db5fd3618be" + } + Frame { + msec: 2480 + hash: "9e25da59c9e7e4cf7796902e8e2ff92a" + } + Frame { + msec: 2496 + hash: "bd45e8f2442d7c1a1b16a762bc29e7cf" + } + Frame { + msec: 2512 + hash: "ec1013d23e581dbb39b1549d2e1b3b32" + } + Frame { + msec: 2528 + hash: "1ea3c2fde8ee3a14406e027f2124d793" + } + Frame { + msec: 2544 + hash: "3c3f31a05fb2f32538872c9fa158aaab" + } + Frame { + msec: 2560 + hash: "05a84d9c55e634ec01edd2a63e13613b" + } + Frame { + msec: 2576 + hash: "0f7ccd2da58e2e73b0ab18bb681dafd5" + } + Frame { + msec: 2592 + hash: "e481ff78029f8bc4bf7c697db6824f6a" + } + Frame { + msec: 2608 + hash: "efb92b8b7a90acabeb4a8d5cae52fe3c" + } + Frame { + msec: 2624 + hash: "4728dd0fac4edf40cfd5ef5a422b4ed9" + } + Frame { + msec: 2640 + hash: "27641dcd772c979ae22d12bfbadbb67f" + } + Frame { + msec: 2656 + hash: "26268714105bc4832d336a38a859fc50" + } + Frame { + msec: 2672 + hash: "caf0d351d3b6914ca52853a30643ea48" + } + Frame { + msec: 2688 + hash: "319824b1143925162f04aaddcfaa65d9" + } + Frame { + msec: 2704 + hash: "73aa36815f34bf5e005000e7da38555e" + } + Frame { + msec: 2720 + hash: "73aa36815f34bf5e005000e7da38555e" + } + Frame { + msec: 2736 + hash: "319824b1143925162f04aaddcfaa65d9" + } + Frame { + msec: 2752 + hash: "caf0d351d3b6914ca52853a30643ea48" + } + Frame { + msec: 2768 + hash: "6608412ee80d14e13a1a05fb4716e719" + } + Frame { + msec: 2784 + hash: "f4f6f002fb76407a5120329972285dc4" + } + Frame { + msec: 2800 + hash: "474d8b566b9e4ef7dc125a8df30ccbb1" + } + Frame { + msec: 2816 + hash: "0133138f30be4ffc7f3af3d9f477c4b4" + } + Frame { + msec: 2832 + hash: "e9ee9d7d0ab9dcea3f28ae71ee19270f" + } + Frame { + msec: 2848 + hash: "9fd9eb665a42b48583bc28c6c0118799" + } + Frame { + msec: 2864 + hash: "94231107bc4a7e900fe5f4eb823bd9bf" + } + Frame { + msec: 2880 + hash: "6011b10728fb1c83f10d3c27366ea3a5" + } + Frame { + msec: 2896 + image: "flickable-horizontal.3.png" + } + Frame { + msec: 2912 + hash: "e456c5fddb5fbcb02662716f19755622" + } + Frame { + msec: 2928 + hash: "88cef15940302e2b8b43e73234fd7b9c" + } + Frame { + msec: 2944 + hash: "041aecec2b0b0d59a56e1dd26b45cab1" + } + Frame { + msec: 2960 + hash: "0d519463c713f3da46ecacd155e1a0f3" + } + Frame { + msec: 2976 + hash: "5dd0c855b97d298244fb599c9f781651" + } + Frame { + msec: 2992 + hash: "8677cec5e559e51095d89abfeda8e542" + } + Frame { + msec: 3008 + hash: "b05fb6e798ab3fed940b5ac4d88ca378" + } + Frame { + msec: 3024 + hash: "6bc9cc0d3b11ea91856296b0ec934a8b" + } + Frame { + msec: 3040 + hash: "f4e63f3af69dacbf2d1d719d4d03a266" + } + Frame { + msec: 3056 + hash: "31ab08997eb86fab062a3128aecbccb5" + } + Frame { + msec: 3072 + hash: "90736b240ba1e634bd0ea86423908e16" + } + Frame { + msec: 3088 + hash: "90736b240ba1e634bd0ea86423908e16" + } + Frame { + msec: 3104 + hash: "e74982557dc06aac572078840c7e889a" + } + Frame { + msec: 3120 + hash: "e74982557dc06aac572078840c7e889a" + } + Frame { + msec: 3136 + hash: "ca30c14c7344d1711a35c707f8804f6e" + } + Frame { + msec: 3152 + hash: "e616110d39009f0d636b816828cc0ccb" + } + Frame { + msec: 3168 + hash: "e616110d39009f0d636b816828cc0ccb" + } + Frame { + msec: 3184 + hash: "e616110d39009f0d636b816828cc0ccb" + } + Frame { + msec: 3200 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Mouse { + type: 2 + button: 1 + buttons: 1 + x: 412; y: 214 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3216 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 3232 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 3248 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 408; y: 214 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 407; y: 214 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3264 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 403; y: 214 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3280 + hash: "1991cbb0fb053937f922731d5716032c" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 398; y: 214 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3296 + hash: "df447575a4734bb5bd9badc6e27d98e4" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 391; y: 214 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3312 + hash: "0fbfe1e0d7fb54450188398aa40690cd" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 383; y: 214 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3328 + hash: "cb62e60296046c73d301d7186e14faed" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 369; y: 213 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3344 + hash: "909cbd1292476584554e22232cb43639" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 352; y: 211 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3360 + hash: "e63b7e502dfb2834c06a969b683b9bd3" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 331; y: 210 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3376 + hash: "4ea63cd25a1424042ffc60549a78563c" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 314; y: 210 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3392 + hash: "77e39d2d4bfcacecdae4f014e4506d71" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 300; y: 210 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3408 + hash: "db576eca8bad67cb8b994f12fc448969" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 288; y: 210 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3424 + hash: "efeb3f616da9d78505c3c82fc34ee31c" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 278; y: 210 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3440 + hash: "e4f8bb02f8ac6bc40e1801cc8f360078" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 266; y: 210 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3456 + hash: "82118ef71809e3867717232c4d9c5518" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 252; y: 208 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3472 + hash: "5363451c696f6c6eb792b23d086243d7" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 238; y: 208 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3488 + hash: "fe6afe8ae8a7c216a1cffc5515f273d5" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 227; y: 206 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3504 + hash: "9b165741d86c70380c15e15cff3fabb6" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 224; y: 206 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3520 + hash: "f5e176355468f4fa224d4dfcdd7525a3" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 222; y: 206 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3536 + hash: "8c5a14a76e052cc6503a3e78245d1da3" + } + Frame { + msec: 3552 + hash: "8c5a14a76e052cc6503a3e78245d1da3" + } + Frame { + msec: 3568 + hash: "8c5a14a76e052cc6503a3e78245d1da3" + } + Frame { + msec: 3584 + hash: "8c5a14a76e052cc6503a3e78245d1da3" + } + Frame { + msec: 3600 + hash: "8c5a14a76e052cc6503a3e78245d1da3" + } + Frame { + msec: 3616 + hash: "8c5a14a76e052cc6503a3e78245d1da3" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 224; y: 206 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3632 + hash: "f5e176355468f4fa224d4dfcdd7525a3" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 232; y: 204 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3648 + hash: "acf538fce5f1b90b83474d9898b7cdd7" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 246; y: 203 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3664 + hash: "5a0ee016b8732fbc36064e8a35d91215" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 265; y: 203 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3680 + hash: "8fd06a14c1de175813845ce8f07db6ec" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 292; y: 201 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3696 + hash: "26b0ff6ffda0725e0800f7ea3af510ef" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 310; y: 201 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3712 + hash: "80443f134511be0356a687c9b542b3e7" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 321; y: 199 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3728 + hash: "3eeb98a829d29b3dc52f3d145ac49d58" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 323; y: 199 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3744 + hash: "f4d43069b16f41a30e5549aae911d4cd" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 324; y: 199 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3760 + hash: "661c89fa832f0abdcf4ae0c9e8e2d18f" + } + Mouse { + type: 3 + button: 1 + buttons: 0 + x: 324; y: 199 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3776 + hash: "661c89fa832f0abdcf4ae0c9e8e2d18f" + } + Frame { + msec: 3792 + hash: "1520f54b6c8606b9e8372c5c06180453" + } + Frame { + msec: 3808 + hash: "0fcf5e2ce47348cbb5bb485f101fe5ac" + } + Frame { + msec: 3824 + hash: "2eb070e69de07c89830543e0475fc110" + } + Frame { + msec: 3840 + hash: "d73c1059219c0655968af268d22e2c18" + } + Frame { + msec: 3856 + image: "flickable-horizontal.4.png" + } + Frame { + msec: 3872 + hash: "cc969b2c64839ca6d3b5069c0ed938d0" + } + Frame { + msec: 3888 + hash: "1f819e18d1297a1c7eeebb7b040bdef8" + } + Frame { + msec: 3904 + hash: "3643b99afbd8af0953cb39b2c8c04b9f" + } + Frame { + msec: 3920 + hash: "713fd2e2fa38ab27604cb9cae59f1777" + } + Frame { + msec: 3936 + hash: "e2508faec7737be2666d87ad715b5f74" + } + Frame { + msec: 3952 + hash: "fc33b1c7479caeff676ffd885a18d618" + } + Frame { + msec: 3968 + hash: "aca01143db4f870a56bb7546e84cbc5e" + } + Frame { + msec: 3984 + hash: "442b58c39fd3745c61a1eb5043fcbb53" + } + Frame { + msec: 4000 + hash: "7983d7183cc11d6819fa0a006c2d67b4" + } + Frame { + msec: 4016 + hash: "9fe4e897c6b853f774d11817a0eb53bf" + } + Frame { + msec: 4032 + hash: "43f528c81ccfa5b9921dfa3564a24c68" + } + Frame { + msec: 4048 + hash: "dfe04ff0b3ccf205bb38beeab58a4411" + } + Frame { + msec: 4064 + hash: "32ff30b50b500e9feb51e8eef205783c" + } + Frame { + msec: 4080 + hash: "7d83ab4c336b05bcf2cde4e7d8031f6c" + } + Frame { + msec: 4096 + hash: "c92e345e4ffdb30c28d9d5aa5400bd30" + } + Frame { + msec: 4112 + hash: "02eec604d0c00965aae4ac61b91bdc22" + } + Frame { + msec: 4128 + hash: "df447575a4734bb5bd9badc6e27d98e4" + } + Frame { + msec: 4144 + hash: "bac10d8f94a39573313b3b8b2f871c49" + } + Frame { + msec: 4160 + hash: "e5944c5dc6dec8f0c28b7ec3cd58723d" + } + Frame { + msec: 4176 + hash: "1991cbb0fb053937f922731d5716032c" + } + Frame { + msec: 4192 + hash: "50d6538bcaffc343f6626635a3e5899c" + } + Frame { + msec: 4208 + hash: "f3613f57cdb9ed38d8e3fa636962aa99" + } + Frame { + msec: 4224 + hash: "10a89da9887cb4bbd812c090a8a56797" + } + Frame { + msec: 4240 + hash: "89ba74d46970ad2edff701475c059ec8" + } + Frame { + msec: 4256 + hash: "6e8b84c70e81578a2216e9e975b35434" + } + Frame { + msec: 4272 + hash: "6e8b84c70e81578a2216e9e975b35434" + } + Frame { + msec: 4288 + hash: "883b8b180853f1f432ae98ddfe1b6ce3" + } + Frame { + msec: 4304 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 4320 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 4336 + hash: "e616110d39009f0d636b816828cc0ccb" + } + Frame { + msec: 4352 + hash: "e616110d39009f0d636b816828cc0ccb" + } + Frame { + msec: 4368 + hash: "e616110d39009f0d636b816828cc0ccb" + } + Frame { + msec: 4384 + hash: "e616110d39009f0d636b816828cc0ccb" + } + Frame { + msec: 4400 + hash: "e616110d39009f0d636b816828cc0ccb" + } + Frame { + msec: 4416 + hash: "e616110d39009f0d636b816828cc0ccb" + } + Frame { + msec: 4432 + hash: "e616110d39009f0d636b816828cc0ccb" + } + Frame { + msec: 4448 + hash: "e616110d39009f0d636b816828cc0ccb" + } + Frame { + msec: 4464 + hash: "e616110d39009f0d636b816828cc0ccb" + } + Frame { + msec: 4480 + hash: "e616110d39009f0d636b816828cc0ccb" + } + Frame { + msec: 4496 + hash: "e616110d39009f0d636b816828cc0ccb" + } + Frame { + msec: 4512 + hash: "e616110d39009f0d636b816828cc0ccb" + } + Frame { + msec: 4528 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 4544 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 4560 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 4576 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 4592 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 4608 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 4624 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 4640 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 4656 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 4672 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 4688 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 4704 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } +} diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-horizontal.qml b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-horizontal.qml index 5cb4f78..a94aca8 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-horizontal.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-horizontal.qml @@ -994,7 +994,7 @@ VisualTest { } Frame { msec: 3264 - hash: "10a89da9887cb4bbd812c090a8a56797" + hash: "244c12e82ee0b2528a0dbb02a8b8134a" } Mouse { type: 5 diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.qml b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.qml index 8c746bf..920a48f 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.qml @@ -1922,7 +1922,7 @@ VisualTest { } Frame { msec: 4480 - hash: "155a834ddaa7128b6f5a2a406b340315" + hash: "16b99c9cf5297a5251869a3935084cf7" } Mouse { type: 5 @@ -2106,7 +2106,7 @@ VisualTest { } Frame { msec: 4768 - hash: "155a834ddaa7128b6f5a2a406b340315" + hash: "d315f82e175361fed83193ce550cb6e9" } Mouse { type: 5 diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.0.png b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.0.png Binary files differnew file mode 100644 index 0000000..8714f58 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.0.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.1.png b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.1.png Binary files differnew file mode 100644 index 0000000..05e4a98 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.1.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.2.png b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.2.png Binary files differnew file mode 100644 index 0000000..29df073 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.2.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.3.png b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.3.png Binary files differnew file mode 100644 index 0000000..b38486e --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.3.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.4.png b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.4.png Binary files differnew file mode 100644 index 0000000..4de915b --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.4.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.5.png b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.5.png Binary files differnew file mode 100644 index 0000000..61a4684 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.5.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.6.png b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.6.png Binary files differnew file mode 100644 index 0000000..4ce5e30 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.6.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.7.png b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.7.png Binary files differnew file mode 100644 index 0000000..2376b13 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.7.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.qml b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.qml new file mode 100644 index 0000000..893355b --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.qml @@ -0,0 +1,1763 @@ +import Qt.VisualTest 4.7 + +VisualTest { + Frame { + msec: 0 + } + Frame { + msec: 16 + image: "follow.0.png" + } + Frame { + msec: 32 + hash: "e94ba580322887dbbbf9cb6309e39c23" + } + Frame { + msec: 48 + hash: "787a59cda2c0b27d8959026e6d1b9427" + } + Frame { + msec: 64 + hash: "9ca724d4b31aa16015b5cbb50eea0c3a" + } + Frame { + msec: 80 + hash: "8a2c62a0190da1b7c1bade243baea6b8" + } + Frame { + msec: 96 + hash: "e129bebca7ad348c3134569d8eee4efc" + } + Frame { + msec: 112 + hash: "fd6387415e1c02fe6d17d9c3aa1d1ed8" + } + Frame { + msec: 128 + hash: "a82a4042fdca7c30facd2c4740c455f7" + } + Frame { + msec: 144 + hash: "62195722eb3acbfbad137ec71fd50bfe" + } + Frame { + msec: 160 + hash: "449819cdc880d59650732b5447ec6237" + } + Frame { + msec: 176 + hash: "552a838ebcacc0e08fa93b64a2433831" + } + Frame { + msec: 192 + hash: "3984992606d54f05eb31dd0974af2183" + } + Frame { + msec: 208 + hash: "3fd7225bbb0215ca8b6397580f2352a5" + } + Frame { + msec: 224 + hash: "0fd8f26f40a9049de1cf2a9493d579d1" + } + Frame { + msec: 240 + hash: "d08f0c57f071dc42e79fc5e0e3c32eeb" + } + Frame { + msec: 256 + hash: "084c2db330ee82cd032df248ecc9629d" + } + Frame { + msec: 272 + hash: "98da0d7f280d7fc4579c970c9a173b51" + } + Frame { + msec: 288 + hash: "4c819c54ced1b6ef0574417a7e11f2e7" + } + Frame { + msec: 304 + hash: "3dc5f7b412cb176c3b23d37cda3ef87c" + } + Frame { + msec: 320 + hash: "c368a01b43d94205c03f9c750c37f330" + } + Frame { + msec: 336 + hash: "8842bd0c8b17cac4fc9df84835999174" + } + Frame { + msec: 352 + hash: "26829e9c7ca44dfcb0c03852f4158a18" + } + Frame { + msec: 368 + hash: "ecffdb0888f1721e27b163e1f29a1950" + } + Frame { + msec: 384 + hash: "eaead96f2683c464a12df8aadba20691" + } + Frame { + msec: 400 + hash: "1e931963925bd208dce1ec9011372a3b" + } + Frame { + msec: 416 + hash: "1c3fd049001c1e883f21d0d1e0e32cba" + } + Frame { + msec: 432 + hash: "e8c3422ca637750ac52565594737d092" + } + Frame { + msec: 448 + hash: "b1c36322cf89e15a80af7c43f2aebca1" + } + Frame { + msec: 464 + hash: "f676c3171495f7bb2cb1812cfebaa17a" + } + Frame { + msec: 480 + hash: "255119e2efa99c8e31fee611aaaa5137" + } + Frame { + msec: 496 + hash: "e0bd32e3d44cfc2351db105f4595f18a" + } + Frame { + msec: 512 + hash: "b7f23b8f3769f929b42491efda7ebe19" + } + Frame { + msec: 528 + hash: "718cee11d869a8a8c5191cc0c09f2d30" + } + Frame { + msec: 544 + hash: "fbdbf92f8c5f507605ff50abc594682b" + } + Frame { + msec: 560 + hash: "c07fdc69c72b40d3c8dd1cc499008888" + } + Frame { + msec: 576 + hash: "38e17ecd537dc0f51211ad672a2ebb21" + } + Frame { + msec: 592 + hash: "2cbdc8728ef779c62f9938672986658a" + } + Frame { + msec: 608 + hash: "7fb66509d5d1df34861e9c70f9a579f0" + } + Frame { + msec: 624 + hash: "410b89392e859058718a08b79ec3d8fa" + } + Frame { + msec: 640 + hash: "9bd90f80700217d08dafed93b81ee9cf" + } + Frame { + msec: 656 + hash: "6d83671504a4274887b4e0d9bd2b24e7" + } + Frame { + msec: 672 + hash: "51ff7bd3fd4a776af33fce7b935b145c" + } + Frame { + msec: 688 + hash: "20f27392368b63b248bcd455cf3c9106" + } + Frame { + msec: 704 + hash: "1a5ab296bd55aa215c9b04a7ff6c73a1" + } + Frame { + msec: 720 + hash: "020fd7b14e8662fc006b0c39adca7c6a" + } + Frame { + msec: 736 + hash: "2619120bdb25a153963bdf05c4a16d44" + } + Frame { + msec: 752 + hash: "fd321314031efeb9ce71146764289d9f" + } + Frame { + msec: 768 + hash: "378a71f09445dfff284db919787cbf87" + } + Frame { + msec: 784 + hash: "d59eefe82ab8a00c903141dd9ea767ef" + } + Frame { + msec: 800 + hash: "0a65004d69a4567f2a5c7e84dab3a905" + } + Frame { + msec: 816 + hash: "92a4631716a51ff484ca14d9cfe05b2e" + } + Frame { + msec: 832 + hash: "87203f627cf410cad56d6ba38a140efa" + } + Frame { + msec: 848 + hash: "054cc085998cc059a6b7b4a7300dd36b" + } + Frame { + msec: 864 + hash: "af3fefeb908a0485c723d36f61eff0a4" + } + Frame { + msec: 880 + hash: "3f905d1e1ea79858b5a9bbfeab4eb255" + } + Frame { + msec: 896 + hash: "f935f1fc5f26a201098d894fca9a4d1f" + } + Frame { + msec: 912 + hash: "42b003dbb531da514716b9c32bdd3614" + } + Frame { + msec: 928 + hash: "a82fed83ee4efee7896b639c7691b13a" + } + Frame { + msec: 944 + hash: "31ad8cbf875233ea495330b0d3d4d2dd" + } + Frame { + msec: 960 + hash: "00586f2f1d49fa81f90f7b06614311b4" + } + Frame { + msec: 976 + image: "follow.1.png" + } + Frame { + msec: 992 + hash: "5d71ff48b865ad4266eb8292f981b04e" + } + Frame { + msec: 1008 + hash: "df599d934d131c92b209284277009efb" + } + Frame { + msec: 1024 + hash: "5aaf33d11eb70ffdfe89246c637caed7" + } + Frame { + msec: 1040 + hash: "9648cf623a66ded145c4fd23a42917b3" + } + Frame { + msec: 1056 + hash: "9d33c2cc44ceac5a527ddcf809a51df6" + } + Frame { + msec: 1072 + hash: "6d0ad2e0d012e53a03e246e6d5e49e13" + } + Frame { + msec: 1088 + hash: "d33fa68796e38b19f44571d11c1bcd33" + } + Frame { + msec: 1104 + hash: "636680f49bbf30b0fac31a6c581f18dd" + } + Frame { + msec: 1120 + hash: "66801dbc39301e6b46b244fe502e0340" + } + Frame { + msec: 1136 + hash: "f8fa6a033483279e78636f26493b10ac" + } + Frame { + msec: 1152 + hash: "11b46611550173df42986dee4339d907" + } + Frame { + msec: 1168 + hash: "5c9afdb519006079ee8d28b2b60d0b76" + } + Frame { + msec: 1184 + hash: "9a55c38b2cd8abf25fbe448c7ef80971" + } + Frame { + msec: 1200 + hash: "27ebdf1424e892b35c93ec009d942407" + } + Frame { + msec: 1216 + hash: "2d9e3f0ae56f7337012b51c4dd173108" + } + Frame { + msec: 1232 + hash: "e6f89ca892131d68ff1f4ca95c95d807" + } + Frame { + msec: 1248 + hash: "f75791f1b12a217d37acb09bdb114cc5" + } + Frame { + msec: 1264 + hash: "94c5ab1460fb1b0f957a9718b45bca36" + } + Frame { + msec: 1280 + hash: "e246c8a0ec3d01ea20258b24a5673fe1" + } + Frame { + msec: 1296 + hash: "529de7735e73409dff266d8c1275215c" + } + Frame { + msec: 1312 + hash: "330400763a670580570cb62241ebec62" + } + Frame { + msec: 1328 + hash: "ae444d1de9c509fc6f74136ca90f927a" + } + Frame { + msec: 1344 + hash: "c43631ca8ee90ea5dc7664be5bc45429" + } + Frame { + msec: 1360 + hash: "b366ac4a5b66c331a7667e9df0fc4eda" + } + Frame { + msec: 1376 + hash: "1c7f4c47a9c57a34787cc9703e99bff1" + } + Frame { + msec: 1392 + hash: "5555535609d512e8d34549b6624f74b8" + } + Frame { + msec: 1408 + hash: "be59df714541923494b59f31f57e310e" + } + Frame { + msec: 1424 + hash: "63e434f053032e54298f6e61c8d4da7d" + } + Frame { + msec: 1440 + hash: "b0bb838637eceb6f8993ebc5b887afed" + } + Frame { + msec: 1456 + hash: "fc39f33add4ebcaf578558ecd4aea281" + } + Frame { + msec: 1472 + hash: "3f36faa7cc1e5898d4d5890c47633ff3" + } + Frame { + msec: 1488 + hash: "4b328002b4461869b1f7de48e7291902" + } + Frame { + msec: 1504 + hash: "26252c63924d2abcaebea2c7caf1d7aa" + } + Frame { + msec: 1520 + hash: "a9a6023484ae439be86b2c2ff59dc40b" + } + Frame { + msec: 1536 + hash: "620dab11bd4aab84cc0d949c48dd9a5d" + } + Frame { + msec: 1552 + hash: "3b45ef80ee3e6fbbd3533bfa0d666e2f" + } + Frame { + msec: 1568 + hash: "b33306abcb6a8402e491b7216495c778" + } + Frame { + msec: 1584 + hash: "3cc52e8649a02e87785f1dc63f5c1efd" + } + Frame { + msec: 1600 + hash: "fe21141f48da685213ed9d7641b2e7a0" + } + Frame { + msec: 1616 + hash: "205aac4e822e20bd32f637256250f3c8" + } + Frame { + msec: 1632 + hash: "124df0948f36aaf6151556d301f4b930" + } + Frame { + msec: 1648 + hash: "c1701edd5eaf143fd1dbdc4a5324b48a" + } + Frame { + msec: 1664 + hash: "117402df55367c918a3835958f4ab1d6" + } + Mouse { + type: 2 + button: 1 + buttons: 1 + x: 195; y: 95 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1680 + hash: "73e3b86a1da28490cae4b03fdceefe19" + } + Frame { + msec: 1696 + hash: "172e329fb47d6db0180242990a84fe3b" + } + Frame { + msec: 1712 + hash: "82cf704cdfd406bab22689bc888ddc8d" + } + Frame { + msec: 1728 + hash: "4c288f198a06d1b2815d34c3c8f97051" + } + Frame { + msec: 1744 + hash: "6404d81456bb95a6b1c1ae55a181e40e" + } + Frame { + msec: 1760 + hash: "6c11b9f079936ea08d11aa1172bfd954" + } + Frame { + msec: 1776 + hash: "95388037c1f79a9dab951031f1d7c307" + } + Frame { + msec: 1792 + hash: "c4ee57d9bffbb5f0ff173db48eadf2e3" + } + Frame { + msec: 1808 + hash: "703ac9672a9c55cf08e6381ef76ac13c" + } + Frame { + msec: 1824 + hash: "ea7726d2a2923290398262c8f70d511e" + } + Frame { + msec: 1840 + hash: "9897c12603326a30c62381015c9adae3" + } + Frame { + msec: 1856 + hash: "a52aa37b10a05382f1b136896b7e00e8" + } + Frame { + msec: 1872 + hash: "a5acc1a45c95a67725e5e15084b7be18" + } + Frame { + msec: 1888 + hash: "c9fac8b5a4110493958d49b073ea96ed" + } + Frame { + msec: 1904 + hash: "6fca3a5c6d1cfbf1b905aca25b7785c5" + } + Frame { + msec: 1920 + hash: "a40e5e2744d1d84c8b9a45525801a745" + } + Frame { + msec: 1936 + image: "follow.2.png" + } + Frame { + msec: 1952 + hash: "b2f980ab19d44ee98ab3e82a19adfe2d" + } + Frame { + msec: 1968 + hash: "e01732623930aebefd76ab62c81dc722" + } + Frame { + msec: 1984 + hash: "3a59c6851bc89eb31100092b1ceddbd9" + } + Frame { + msec: 2000 + hash: "2949de19eacb9f35816aa7ba69614f2c" + } + Frame { + msec: 2016 + hash: "f2c4c1f4429cbb6bd10f2318b2cb6904" + } + Frame { + msec: 2032 + hash: "2c48af64162e7e028cd536dba03eab71" + } + Frame { + msec: 2048 + hash: "7fe13b8f9253f720b6591b396cfba2d1" + } + Frame { + msec: 2064 + hash: "559947a03e650575a764801366cc504b" + } + Frame { + msec: 2080 + hash: "a8d09f6c862fd5ec2dcf34f06d1ef744" + } + Frame { + msec: 2096 + hash: "e3bb4b62209631ff84134f2243bfdb42" + } + Frame { + msec: 2112 + hash: "a1956a9d1939bc154ea0c88d596948cc" + } + Frame { + msec: 2128 + hash: "c98a375727860da1e827d4dd74af8f63" + } + Frame { + msec: 2144 + hash: "df4edcbb2ef5348341ff55c808609b6c" + } + Frame { + msec: 2160 + hash: "6287564be85b7cbadc6bb6f0232bc837" + } + Frame { + msec: 2176 + hash: "9826fdb48f7ea770fa5f198ec49d7cb7" + } + Frame { + msec: 2192 + hash: "56f82641a5591df9bb929cc0d32eb95d" + } + Frame { + msec: 2208 + hash: "526c55e555fb2e58796561efa3568c50" + } + Frame { + msec: 2224 + hash: "6b4b74613421c1841a17c369cb316754" + } + Frame { + msec: 2240 + hash: "37f785c30947d5eec113dcf6af649abf" + } + Frame { + msec: 2256 + hash: "5ff2c975dd9e261c764537c836627c4d" + } + Frame { + msec: 2272 + hash: "efe554981583749c3d09988bce7fed02" + } + Frame { + msec: 2288 + hash: "0f7204b4afb0ea5d58e49650e8027c0c" + } + Frame { + msec: 2304 + hash: "817291f91f4b309710ad3aed53a7d47a" + } + Frame { + msec: 2320 + hash: "c15c9cd03089090cf8a777c1f0d88de7" + } + Frame { + msec: 2336 + hash: "05f45cb8d0856dcc81091351615e35d6" + } + Frame { + msec: 2352 + hash: "99785a16fed6d6409b4b47ec55afb56b" + } + Frame { + msec: 2368 + hash: "39032cb4432ee9536af500673fccf526" + } + Frame { + msec: 2384 + hash: "9057653e3cd6042831037d3590e7595b" + } + Frame { + msec: 2400 + hash: "76c772eb2ab8f117c260c9c96bc99e1d" + } + Frame { + msec: 2416 + hash: "b6474665b8f8bcdd76d1a38efecad889" + } + Frame { + msec: 2432 + hash: "106c2d2efafad0181e3ded3a6805f2c6" + } + Frame { + msec: 2448 + hash: "5275fa4ffef6c1909f9d03bb1e7b9cae" + } + Frame { + msec: 2464 + hash: "0c1043c0087d60000dc7259d4ac03618" + } + Frame { + msec: 2480 + hash: "645748569b4f5cb9b206b0808bb7d23d" + } + Frame { + msec: 2496 + hash: "dd95dfa80e1b3ff511e7c75efd0d87ce" + } + Frame { + msec: 2512 + hash: "86b3dd03b04d7610837cdc67cad07e0a" + } + Frame { + msec: 2528 + hash: "8264f67ac92e4ebcfe4cc8e954f8c5d2" + } + Frame { + msec: 2544 + hash: "6bf52377d822b09eb28a1ec36d3a36a9" + } + Frame { + msec: 2560 + hash: "7ae1d65cdaf7fa71eb4ec318b37bb0aa" + } + Frame { + msec: 2576 + hash: "860f5ce9844c90cf9e6a6d383ff0972f" + } + Frame { + msec: 2592 + hash: "5502229c038dfc59d966f69ae6ed8957" + } + Frame { + msec: 2608 + hash: "21843c027bc1434ae60b3bb0fced2c54" + } + Frame { + msec: 2624 + hash: "962df45680949c3eb6c968f98cd76b20" + } + Frame { + msec: 2640 + hash: "f313c26fa76a0edce61244bdf92528e4" + } + Frame { + msec: 2656 + hash: "b7bbde239e98cbd66b1e51b54b747f51" + } + Frame { + msec: 2672 + hash: "62340707fbc832fcb805c8f80ab353d1" + } + Frame { + msec: 2688 + hash: "d008a3f7af1810ff70b68b38a4cd0f0d" + } + Frame { + msec: 2704 + hash: "e651dd628af24faf34d716beb392b052" + } + Frame { + msec: 2720 + hash: "a97733963c7a7616b25741545b07ffba" + } + Frame { + msec: 2736 + hash: "3e017cc1db720cf16521bd17308e4f44" + } + Frame { + msec: 2752 + hash: "13652ebaa610cca71486517e2eed21a5" + } + Frame { + msec: 2768 + hash: "09f0f500c6f7d11be39c31f9e589b38a" + } + Frame { + msec: 2784 + hash: "b87968cbc60ddc6a5f5699e830410eab" + } + Frame { + msec: 2800 + hash: "50e65b043d1f07a321a08ee4c25204f6" + } + Frame { + msec: 2816 + hash: "122d1ffa1510468e8c4067e0f511588f" + } + Frame { + msec: 2832 + hash: "585f6c25caaafb99a22a23d8a998d202" + } + Frame { + msec: 2848 + hash: "9b245a00ad576666c10f509d8a80a61e" + } + Frame { + msec: 2864 + hash: "9b245a00ad576666c10f509d8a80a61e" + } + Frame { + msec: 2880 + hash: "3c5d3d10bacc093afc6a9c0b5aa4cddc" + } + Frame { + msec: 2896 + image: "follow.3.png" + } + Frame { + msec: 2912 + hash: "31926d69c2309fdf13fbd7f0e9868c3d" + } + Frame { + msec: 2928 + hash: "eb3acacce5dd31b0e94b59b9e546ccae" + } + Frame { + msec: 2944 + hash: "9a51cff3276d75803a0a6e480f7ecb70" + } + Frame { + msec: 2960 + hash: "fbbd8b9d519993a699815d935bcd2b9f" + } + Frame { + msec: 2976 + hash: "0314190c6de73f9f374a4eaed0709645" + } + Frame { + msec: 2992 + hash: "8ca1a203bdb5446094eb948aeb0a333e" + } + Frame { + msec: 3008 + hash: "301e1b86ce38e11ad9d0d7aba0909985" + } + Frame { + msec: 3024 + hash: "922095867d0a91b73ab7a63df2041279" + } + Frame { + msec: 3040 + hash: "ba8275f3ba4633bf64a1f81f630c90f1" + } + Frame { + msec: 3056 + hash: "efe39545279a7bd015d2de75d2b9d8b1" + } + Frame { + msec: 3072 + hash: "78926c3c0c6fcf89b9291f9902710964" + } + Frame { + msec: 3088 + hash: "ea63dcb7f00d3ddede0d8be59ad9d6bc" + } + Frame { + msec: 3104 + hash: "286ad493301b713a49e378f123482a53" + } + Frame { + msec: 3120 + hash: "a4bbbb8bb88188d3e99996502e3eebd1" + } + Frame { + msec: 3136 + hash: "a6100e79f3dc5af594e86ab6cd8dfb76" + } + Frame { + msec: 3152 + hash: "d9e3f777dc89bcf1b7f712206db768e2" + } + Frame { + msec: 3168 + hash: "768045c600c0aa0b1e9e6f012733c600" + } + Frame { + msec: 3184 + hash: "d8b4caa641ddee786f7898359efe9d07" + } + Frame { + msec: 3200 + hash: "f7c3b76d5bb7c263ac9447eaad685158" + } + Frame { + msec: 3216 + hash: "f7f97db815d653ec29fa31b87f72af2a" + } + Frame { + msec: 3232 + hash: "18524623762487b60943312cd8bd4388" + } + Frame { + msec: 3248 + hash: "5823dee5dd56e9f7515601f9629ccbae" + } + Frame { + msec: 3264 + hash: "5823dee5dd56e9f7515601f9629ccbae" + } + Frame { + msec: 3280 + hash: "5823dee5dd56e9f7515601f9629ccbae" + } + Frame { + msec: 3296 + hash: "5823dee5dd56e9f7515601f9629ccbae" + } + Frame { + msec: 3312 + hash: "18524623762487b60943312cd8bd4388" + } + Frame { + msec: 3328 + hash: "430995770b655054aaeda383df8e27f7" + } + Frame { + msec: 3344 + hash: "16a3a00f2b89aed676f80d63c4933ec3" + } + Frame { + msec: 3360 + hash: "6c55aa62079ec546522edbf69c37b270" + } + Frame { + msec: 3376 + hash: "0d68ca3ccecdd831013950cc7405e46e" + } + Frame { + msec: 3392 + hash: "9da2511bc8b434218695fa74ed543439" + } + Frame { + msec: 3408 + hash: "05afdd0b99dab81a500cdc2b2f0786fe" + } + Frame { + msec: 3424 + hash: "e6f8882d146ae60bcc6ea47ff41a637b" + } + Frame { + msec: 3440 + hash: "154542ed0e88321294f382501819aefc" + } + Frame { + msec: 3456 + hash: "8f47b6980c387c5020145bf04645fd2d" + } + Frame { + msec: 3472 + hash: "b34b055c7602f1f4e1cde875b258120c" + } + Frame { + msec: 3488 + hash: "5a697f675575f05e297d4877604b9a47" + } + Frame { + msec: 3504 + hash: "729dff1d1b357d19fc81804ec8940d0e" + } + Frame { + msec: 3520 + hash: "c6f3fee46baa94a6139d2ee40254b160" + } + Frame { + msec: 3536 + hash: "af0e700bb8ae34834510830f8b44afdb" + } + Frame { + msec: 3552 + hash: "9c87bb54c2dfe58c2da9194dae6f7502" + } + Frame { + msec: 3568 + hash: "2132356a92c75d725f9feafb8201b142" + } + Frame { + msec: 3584 + hash: "50d855d2595eeae2bfd6aaa8c2fa0454" + } + Frame { + msec: 3600 + hash: "5fde3c62d6e53a9056e3586f9dcda59e" + } + Frame { + msec: 3616 + hash: "8f04460254a1e9fb949d5165894cd92a" + } + Frame { + msec: 3632 + hash: "2b514c5e3b20d30f9c7e71092c69f081" + } + Frame { + msec: 3648 + hash: "2c1ba6224037790e15f5c0f2864ace4d" + } + Frame { + msec: 3664 + hash: "0d5b8e7bd5f560888aacaf2b3c6827a8" + } + Frame { + msec: 3680 + hash: "ae25004530e7df134414018e4a34780e" + } + Frame { + msec: 3696 + hash: "1a8fd9eaf9a91f1b42924f8986fbed9a" + } + Frame { + msec: 3712 + hash: "2ea6de2025d40ed5beeff12a5b70ccc9" + } + Frame { + msec: 3728 + hash: "624e417718d3cac1e4b7e4ce258ce6ea" + } + Frame { + msec: 3744 + hash: "8b56d29391257c7be8966af6be26ea9f" + } + Mouse { + type: 3 + button: 1 + buttons: 0 + x: 195; y: 95 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3760 + hash: "5c0d977d8b446d9191bde57335cf1062" + } + Frame { + msec: 3776 + hash: "100be2b21d069e3a5dbb694a90da4d4f" + } + Frame { + msec: 3792 + hash: "caab03f6c81080dd8fdbedb4e94ae4a5" + } + Frame { + msec: 3808 + hash: "3328a4d06f2f80a7e9ccf2ff21522fca" + } + Frame { + msec: 3824 + hash: "a534e6cc28daf3eff6a9cf8379bd6375" + } + Frame { + msec: 3840 + hash: "6686f9c1a814c6a6b785b70f94937b68" + } + Frame { + msec: 3856 + image: "follow.4.png" + } + Frame { + msec: 3872 + hash: "d3f1c3593375ca5c022a1361a7ec70bd" + } + Frame { + msec: 3888 + hash: "67843e6192e2ecaa3820c37dc2f93106" + } + Frame { + msec: 3904 + hash: "19a022f678e5b8f4ebdff936162323dc" + } + Frame { + msec: 3920 + hash: "34e55ae70c9e156db339ae15642359c3" + } + Frame { + msec: 3936 + hash: "3784778c817f9d9bb73d990cfe12685a" + } + Frame { + msec: 3952 + hash: "0403fdf79e3ba339c7e3786db0c9c0f0" + } + Frame { + msec: 3968 + hash: "93e4a0d5645d1cfc916f1e8422655555" + } + Frame { + msec: 3984 + hash: "29080bfabb87160b7c51385fb36b474b" + } + Frame { + msec: 4000 + hash: "9da2d83edc9d35f00fb8a159e79de4d9" + } + Frame { + msec: 4016 + hash: "5505a42d4788f00cfc7499fbfda851ce" + } + Frame { + msec: 4032 + hash: "bdd3040ab16fa9ffdd2fbc66b06699f8" + } + Frame { + msec: 4048 + hash: "2a347e30a20c693a9440caa60ade0a0f" + } + Frame { + msec: 4064 + hash: "0307f1857c091a639d47f112ce1a2f5a" + } + Frame { + msec: 4080 + hash: "778d18e539bbd562ebe39283a6315df1" + } + Frame { + msec: 4096 + hash: "0369cf6c3d1f5db2e92ee1f7c5d3b8ed" + } + Frame { + msec: 4112 + hash: "9f7413587ab50f1abf776bf180ec2d6f" + } + Frame { + msec: 4128 + hash: "7d04a27236485808e571e8a39f23ea17" + } + Frame { + msec: 4144 + hash: "a1dff63b723473d5a4c9c59975a2fb81" + } + Frame { + msec: 4160 + hash: "9795ea70a3b9d3b7805221a58c19e5da" + } + Frame { + msec: 4176 + hash: "f1392c489e21107136eb8e0d1e8b427e" + } + Frame { + msec: 4192 + hash: "95c225ef07171a96335e99078195b06a" + } + Frame { + msec: 4208 + hash: "d46ef3e7f9cec06e8c18afc0d07be4f3" + } + Frame { + msec: 4224 + hash: "b017f5b51d423bb0fca0d6df3aaded8b" + } + Frame { + msec: 4240 + hash: "60584d085b0cd6fbc436773be678597e" + } + Frame { + msec: 4256 + hash: "117951465dfd5c386826b295560d2dec" + } + Frame { + msec: 4272 + hash: "1b70137da5f4e024593999e93121fe8b" + } + Frame { + msec: 4288 + hash: "bd50dffd41941fef127f39b55c4748e0" + } + Frame { + msec: 4304 + hash: "8eec34d8e1d2e22d11b85a671cd4d3aa" + } + Frame { + msec: 4320 + hash: "9e3c97cfad5002ef5f3fcc365aeb7bd0" + } + Frame { + msec: 4336 + hash: "28e1cf1ee033915ea2ee39c9ab00a73d" + } + Frame { + msec: 4352 + hash: "99101a156a553f441f00221f6facbf1f" + } + Frame { + msec: 4368 + hash: "419023e5d59d16c26b35bee7d3cea559" + } + Frame { + msec: 4384 + hash: "485d23519293975b04031fe4baa5c276" + } + Frame { + msec: 4400 + hash: "c8bc60735e0ede26dbaf228294853f9a" + } + Frame { + msec: 4416 + hash: "ada3680b807d59843e3adf6640704066" + } + Frame { + msec: 4432 + hash: "3e28f3adf9241512cd0d6918d81ffffb" + } + Frame { + msec: 4448 + hash: "8f339acc33cbc89ae1c62391ce021bb3" + } + Frame { + msec: 4464 + hash: "d303960c0853a90557d64a04b8283c94" + } + Frame { + msec: 4480 + hash: "f907dbdacf2cfa9fdf8f9c8dead5b4c4" + } + Frame { + msec: 4496 + hash: "30c6e6f283f4a3f538cdda9c2e92de8c" + } + Frame { + msec: 4512 + hash: "04d2ac55774b43107a43a7d33764199b" + } + Frame { + msec: 4528 + hash: "cddf3e111cbc59e721725daa1d8a0c31" + } + Frame { + msec: 4544 + hash: "15b1b63cd1695207ebf9f04387be0739" + } + Frame { + msec: 4560 + hash: "690769b9bbe86a3c5b1fbdee39615fbd" + } + Frame { + msec: 4576 + hash: "2bd640d8ddbf878d808f22656fef1ed9" + } + Frame { + msec: 4592 + hash: "a654f1e4519bf883d554276ebbe96323" + } + Frame { + msec: 4608 + hash: "68f0313cfc3f51a0bb9b47c5407c19b6" + } + Frame { + msec: 4624 + hash: "77f29806b084de4cabf7ab9bf1a93d5e" + } + Frame { + msec: 4640 + hash: "f9991189e3282d107b98fb0ae5f5ef00" + } + Frame { + msec: 4656 + hash: "0cd1f2f6e347d48feea1b26a4968dec7" + } + Frame { + msec: 4672 + hash: "e75a6f6a088e2289042572a161ffb0e9" + } + Frame { + msec: 4688 + hash: "5a541081444c0a71128223a4c4c3144c" + } + Frame { + msec: 4704 + hash: "6813d442cc610f346a5441ed0cd723e5" + } + Frame { + msec: 4720 + hash: "24ec539bc57899819915f833f26deacd" + } + Frame { + msec: 4736 + hash: "3a7ed1b4b533b817674aa141c420cd61" + } + Frame { + msec: 4752 + hash: "d0a643fae97bb152e97ca60e96299003" + } + Frame { + msec: 4768 + hash: "c84093931520f4661eff6645091a294b" + } + Frame { + msec: 4784 + hash: "81e7ceaece82505a4a16ead195a66162" + } + Frame { + msec: 4800 + hash: "315764d20b647f6ab1ba30239a69bf72" + } + Frame { + msec: 4816 + image: "follow.5.png" + } + Frame { + msec: 4832 + hash: "d1824ced8af34ad9edb36a58ae9aa7f5" + } + Frame { + msec: 4848 + hash: "167b9a49fbb94908e09e7e9c9147cd8b" + } + Frame { + msec: 4864 + hash: "442d5f0906840de526d59a80ada322c0" + } + Frame { + msec: 4880 + hash: "78206c4d4d23c7c1ba888b9062b09432" + } + Frame { + msec: 4896 + hash: "e898202cfebbff1952efc6e01254d855" + } + Frame { + msec: 4912 + hash: "ab31dc7bbad2b0552359866bb8d92f0c" + } + Frame { + msec: 4928 + hash: "f093304e88964376baf9721d53d4fb49" + } + Frame { + msec: 4944 + hash: "3ef76f3e1c44d13c3a469bd192ff7b5d" + } + Frame { + msec: 4960 + hash: "5d3b6d0d91f8cc5b89e39407bc3b5a15" + } + Frame { + msec: 4976 + hash: "3c73573f12f49b34e1d990a55ad913fa" + } + Frame { + msec: 4992 + hash: "d1bac071b01a1c6fddab90cdc435fad4" + } + Frame { + msec: 5008 + hash: "36a219aadec910f1dbef616c641e1d2b" + } + Frame { + msec: 5024 + hash: "5871fc67d361cc988551592ee21dfb23" + } + Frame { + msec: 5040 + hash: "6e65ee6c814b9a9da205c36925e663bf" + } + Frame { + msec: 5056 + hash: "290b20fa8e91d34000d7c2d81745f6d2" + } + Frame { + msec: 5072 + hash: "19e7405a9083a8143f7bb040f8837b29" + } + Frame { + msec: 5088 + hash: "c0a0fa2b4c1ceb6c70594994a1ac8713" + } + Frame { + msec: 5104 + hash: "c236224c16743fb606deb78bcb8afc8d" + } + Frame { + msec: 5120 + hash: "7d44db15eb300b4338ffc26e9bcfce20" + } + Frame { + msec: 5136 + hash: "067a79148a194c45c6f32d85316a1e11" + } + Frame { + msec: 5152 + hash: "9075c379044476994a87f0fdcce8e332" + } + Frame { + msec: 5168 + hash: "b2316988fbd51096a4f512e71fe7d0a2" + } + Frame { + msec: 5184 + hash: "280f70877d93af5f84e178aad6a102d8" + } + Frame { + msec: 5200 + hash: "3eef4ae7e43a8cf1cd9dd562237296f8" + } + Frame { + msec: 5216 + hash: "e3184f77ce3a47ca4dca6386f42d7fec" + } + Frame { + msec: 5232 + hash: "a2a5df66fe4808ea8d466cac84ba910c" + } + Frame { + msec: 5248 + hash: "9f8a0e54788112d6c30482e840504f35" + } + Frame { + msec: 5264 + hash: "ae69cf84798844f9f360c86790feaecd" + } + Frame { + msec: 5280 + hash: "0244526572acb6266db5b7eb9d29c6fc" + } + Frame { + msec: 5296 + hash: "8fb53d60b95ddb5aef27442934ea9983" + } + Frame { + msec: 5312 + hash: "930fcfde491b4f5681e3861764003895" + } + Frame { + msec: 5328 + hash: "bcdcd0a637112d113ebe11dc18823237" + } + Frame { + msec: 5344 + hash: "65a564d5a5afbc14c0cdad4d52753507" + } + Frame { + msec: 5360 + hash: "0c5056d438d2d54938f31ef5f996673a" + } + Frame { + msec: 5376 + hash: "11c157ad2236fc390ffbdf339366cbc1" + } + Frame { + msec: 5392 + hash: "6cb341b1f281a97a35c2e41bfd4c4d9d" + } + Frame { + msec: 5408 + hash: "553a945f7f19f70ddae4ebe88e52a79b" + } + Frame { + msec: 5424 + hash: "d10b42b4095a2474e66a5a322f72e936" + } + Frame { + msec: 5440 + hash: "0f943d61e8072d70eddee8aa1ba0de5a" + } + Frame { + msec: 5456 + hash: "3df18e237b666e78d57857739b759e6d" + } + Frame { + msec: 5472 + hash: "1ddc0bfdb2ca7b6dee63f1024e62f26e" + } + Frame { + msec: 5488 + hash: "aaa397714528f41238059e3a88833abc" + } + Frame { + msec: 5504 + hash: "c94bd69f925c782656afc5f9618180a6" + } + Frame { + msec: 5520 + hash: "824ff8c0e1ab43e3c0eaa79b7cc19b9c" + } + Frame { + msec: 5536 + hash: "6c440a0b2293811335bdbf2c4f25f47d" + } + Frame { + msec: 5552 + hash: "bfc7936cdf833d5b720ec9baca740112" + } + Frame { + msec: 5568 + hash: "375fa305dbae2872dc9b20e59381cc0c" + } + Frame { + msec: 5584 + hash: "fffd6173aa49e74164dc17a238bcd830" + } + Frame { + msec: 5600 + hash: "44d9007e00fab161fd393b653255d7f4" + } + Frame { + msec: 5616 + hash: "f669ee25c58b4fa20a01705d334f0065" + } + Frame { + msec: 5632 + hash: "2dbb7d57711b67d5d9e1b81f70e22d34" + } + Frame { + msec: 5648 + hash: "19351b91448265cb95c1670ee283c611" + } + Frame { + msec: 5664 + hash: "19351b91448265cb95c1670ee283c611" + } + Frame { + msec: 5680 + hash: "3a24b99d048348a21f4e4bd69393de89" + } + Frame { + msec: 5696 + hash: "35a6fe955a52950bbfa954a453e4008e" + } + Frame { + msec: 5712 + hash: "896f4ec28c976237b34fb2725a44460e" + } + Frame { + msec: 5728 + hash: "ed3008ea950ec84c57518e573ea36d15" + } + Frame { + msec: 5744 + hash: "3447c7be992759f772c1db2033eead99" + } + Frame { + msec: 5760 + hash: "b7133225daa03563d3f5b1dac5f56a23" + } + Frame { + msec: 5776 + image: "follow.6.png" + } + Frame { + msec: 5792 + hash: "adc55f2fcf312a90b025a75fa80aa079" + } + Frame { + msec: 5808 + hash: "3ac85cad400d2b8e4f33798f4f6b7b42" + } + Frame { + msec: 5824 + hash: "1c115efd84ccbe489d24c3c521c4a61c" + } + Frame { + msec: 5840 + hash: "39518f1bbc0c4aba6ff517bc3dc7c279" + } + Frame { + msec: 5856 + hash: "7bd28d32996f4de61c415d3217da16d0" + } + Frame { + msec: 5872 + hash: "f5d06e25d775bf8db07e95625a712733" + } + Frame { + msec: 5888 + hash: "4820ea6ea3be88af2f86111c547a19d7" + } + Frame { + msec: 5904 + hash: "fa6e681c368118b7f135a47ae8fc12ff" + } + Frame { + msec: 5920 + hash: "f6b30e618aeeb837d2b3eca270b0a060" + } + Frame { + msec: 5936 + hash: "ac8504bde8d3063a8bf02b9d4b69d755" + } + Frame { + msec: 5952 + hash: "9670537bb77caa8e23fda7bbfa96ca60" + } + Frame { + msec: 5968 + hash: "8cd292865ce5c1d240e9ddc93881a0ed" + } + Frame { + msec: 5984 + hash: "de112013e526203d151c46e6cfba9f92" + } + Frame { + msec: 6000 + hash: "cd61066e697de8c055aaa168791c2d8c" + } + Frame { + msec: 6016 + hash: "cd61066e697de8c055aaa168791c2d8c" + } + Frame { + msec: 6032 + hash: "e68b27ff14aac03c827fd43ac488d23e" + } + Frame { + msec: 6048 + hash: "e68b27ff14aac03c827fd43ac488d23e" + } + Frame { + msec: 6064 + hash: "1f61d857a8c26587fbda5895c603441a" + } + Frame { + msec: 6080 + hash: "1e0dffdd02e05ade1ae444427d4aa345" + } + Frame { + msec: 6096 + hash: "9a416ee7a1de9ac45ab2d609233c9520" + } + Frame { + msec: 6112 + hash: "dfa35bf1cd908011c3214a506bcbdcb8" + } + Frame { + msec: 6128 + hash: "bd502dc72dce4af3036f7af9ed7cf9e9" + } + Frame { + msec: 6144 + hash: "c77280527612408daa3037aab45da59d" + } + Frame { + msec: 6160 + hash: "a38ed1532a40210ad7da4c0d4d1a7195" + } + Frame { + msec: 6176 + hash: "8ac8a8df937da526bbffb9a3590d89ac" + } + Frame { + msec: 6192 + hash: "07527cb9a4494e11f4c9f99eb72598b9" + } + Frame { + msec: 6208 + hash: "655b0327ef0f8711810714ba50f2f8cc" + } + Frame { + msec: 6224 + hash: "549fd25292012a2be1f78118998ca892" + } + Frame { + msec: 6240 + hash: "7a382ae4e6a48826eaa2c83ee7a73fb2" + } + Frame { + msec: 6256 + hash: "5acd5f250c5b32d9006ed68dfecbfa1c" + } + Frame { + msec: 6272 + hash: "3189e5a89d7b2ba1e6a06f6e3070e8c1" + } + Frame { + msec: 6288 + hash: "3189e5a89d7b2ba1e6a06f6e3070e8c1" + } + Frame { + msec: 6304 + hash: "07e5f1277558bfe7638b00cf9d967baf" + } + Frame { + msec: 6320 + hash: "07e5f1277558bfe7638b00cf9d967baf" + } + Frame { + msec: 6336 + hash: "07e5f1277558bfe7638b00cf9d967baf" + } + Frame { + msec: 6352 + hash: "07e5f1277558bfe7638b00cf9d967baf" + } + Frame { + msec: 6368 + hash: "07e5f1277558bfe7638b00cf9d967baf" + } + Frame { + msec: 6384 + hash: "877aca1c64e588845329ca8a38222604" + } + Frame { + msec: 6400 + hash: "877aca1c64e588845329ca8a38222604" + } + Frame { + msec: 6416 + hash: "877aca1c64e588845329ca8a38222604" + } + Frame { + msec: 6432 + hash: "877aca1c64e588845329ca8a38222604" + } + Frame { + msec: 6448 + hash: "877aca1c64e588845329ca8a38222604" + } + Frame { + msec: 6464 + hash: "b0f28e923f93dcdcea8460ca9d8cd674" + } + Frame { + msec: 6480 + hash: "b0f28e923f93dcdcea8460ca9d8cd674" + } + Frame { + msec: 6496 + hash: "b0f28e923f93dcdcea8460ca9d8cd674" + } + Frame { + msec: 6512 + hash: "b0f28e923f93dcdcea8460ca9d8cd674" + } + Frame { + msec: 6528 + hash: "b0f28e923f93dcdcea8460ca9d8cd674" + } + Frame { + msec: 6544 + hash: "b0f28e923f93dcdcea8460ca9d8cd674" + } + Frame { + msec: 6560 + hash: "b0f28e923f93dcdcea8460ca9d8cd674" + } + Frame { + msec: 6576 + hash: "b0f28e923f93dcdcea8460ca9d8cd674" + } + Frame { + msec: 6592 + hash: "b0f28e923f93dcdcea8460ca9d8cd674" + } + Frame { + msec: 6608 + hash: "b0f28e923f93dcdcea8460ca9d8cd674" + } + Frame { + msec: 6624 + hash: "b0f28e923f93dcdcea8460ca9d8cd674" + } + Frame { + msec: 6640 + hash: "b0f28e923f93dcdcea8460ca9d8cd674" + } + Frame { + msec: 6656 + hash: "b0f28e923f93dcdcea8460ca9d8cd674" + } + Frame { + msec: 6672 + hash: "b0f28e923f93dcdcea8460ca9d8cd674" + } + Frame { + msec: 6688 + hash: "b0f28e923f93dcdcea8460ca9d8cd674" + } + Frame { + msec: 6704 + hash: "228920e994ebf71d542c71ce8263614e" + } + Frame { + msec: 6720 + hash: "228920e994ebf71d542c71ce8263614e" + } + Frame { + msec: 6736 + image: "follow.7.png" + } + Frame { + msec: 6752 + hash: "228920e994ebf71d542c71ce8263614e" + } + Frame { + msec: 6768 + hash: "228920e994ebf71d542c71ce8263614e" + } + Frame { + msec: 6784 + hash: "228920e994ebf71d542c71ce8263614e" + } + Frame { + msec: 6800 + hash: "228920e994ebf71d542c71ce8263614e" + } + Frame { + msec: 6816 + hash: "228920e994ebf71d542c71ce8263614e" + } + Frame { + msec: 6832 + hash: "07e5f1277558bfe7638b00cf9d967baf" + } + Key { + type: 6 + key: 16777249 + modifiers: 0 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 6848 + hash: "3189e5a89d7b2ba1e6a06f6e3070e8c1" + } + Frame { + msec: 6864 + hash: "3189e5a89d7b2ba1e6a06f6e3070e8c1" + } + Frame { + msec: 6880 + hash: "3189e5a89d7b2ba1e6a06f6e3070e8c1" + } + Frame { + msec: 6896 + hash: "3189e5a89d7b2ba1e6a06f6e3070e8c1" + } + Frame { + msec: 6912 + hash: "3189e5a89d7b2ba1e6a06f6e3070e8c1" + } + Frame { + msec: 6928 + hash: "3189e5a89d7b2ba1e6a06f6e3070e8c1" + } +} diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/align/data-MAC/multilineAlign.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/align/data-MAC/multilineAlign.0.png Binary files differindex 87bc640..1b808ef 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetext/align/data-MAC/multilineAlign.0.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/align/data-MAC/multilineAlign.0.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/align/data-MAC/multilineAlign.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/align/data-MAC/multilineAlign.qml index f56f498..5485174 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetext/align/data-MAC/multilineAlign.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/align/data-MAC/multilineAlign.qml @@ -10,238 +10,238 @@ VisualTest { } Frame { msec: 32 - hash: "7fb2062f5786da9323db4286688682a0" + hash: "3fc7ab44f913d350f7aef342b958e56d" } Frame { msec: 48 - hash: "7fb2062f5786da9323db4286688682a0" + hash: "3fc7ab44f913d350f7aef342b958e56d" } Frame { msec: 64 - hash: "7fb2062f5786da9323db4286688682a0" + hash: "3fc7ab44f913d350f7aef342b958e56d" } Frame { msec: 80 - hash: "7fb2062f5786da9323db4286688682a0" + hash: "3fc7ab44f913d350f7aef342b958e56d" } Frame { msec: 96 - hash: "7fb2062f5786da9323db4286688682a0" + hash: "3fc7ab44f913d350f7aef342b958e56d" } Frame { msec: 112 - hash: "7fb2062f5786da9323db4286688682a0" + hash: "3fc7ab44f913d350f7aef342b958e56d" } Frame { msec: 128 - hash: "7fb2062f5786da9323db4286688682a0" + hash: "3fc7ab44f913d350f7aef342b958e56d" } Frame { msec: 144 - hash: "7fb2062f5786da9323db4286688682a0" + hash: "3fc7ab44f913d350f7aef342b958e56d" } Frame { msec: 160 - hash: "7fb2062f5786da9323db4286688682a0" + hash: "3fc7ab44f913d350f7aef342b958e56d" } Frame { msec: 176 - hash: "c67a5ae840827487ab618ff2d4e9a056" + hash: "a495a8a95c8aa82ac437c2f2970bd42d" } Frame { msec: 192 - hash: "c67a5ae840827487ab618ff2d4e9a056" + hash: "a495a8a95c8aa82ac437c2f2970bd42d" } Frame { msec: 208 - hash: "c67a5ae840827487ab618ff2d4e9a056" + hash: "a495a8a95c8aa82ac437c2f2970bd42d" } Frame { msec: 224 - hash: "c67a5ae840827487ab618ff2d4e9a056" + hash: "a495a8a95c8aa82ac437c2f2970bd42d" } Frame { msec: 240 - hash: "c67a5ae840827487ab618ff2d4e9a056" + hash: "a495a8a95c8aa82ac437c2f2970bd42d" } Frame { msec: 256 - hash: "c67a5ae840827487ab618ff2d4e9a056" + hash: "a495a8a95c8aa82ac437c2f2970bd42d" } Frame { msec: 272 - hash: "c67a5ae840827487ab618ff2d4e9a056" + hash: "a495a8a95c8aa82ac437c2f2970bd42d" } Frame { msec: 288 - hash: "c67a5ae840827487ab618ff2d4e9a056" + hash: "a495a8a95c8aa82ac437c2f2970bd42d" } Frame { msec: 304 - hash: "c67a5ae840827487ab618ff2d4e9a056" + hash: "a495a8a95c8aa82ac437c2f2970bd42d" } Frame { msec: 320 - hash: "c67a5ae840827487ab618ff2d4e9a056" + hash: "a495a8a95c8aa82ac437c2f2970bd42d" } Frame { msec: 336 - hash: "c7986aca05835e238ee95be063bdd032" + hash: "e2d2a6e60537b9a434d0029ef5ff26dc" } Frame { msec: 352 - hash: "c7986aca05835e238ee95be063bdd032" + hash: "e2d2a6e60537b9a434d0029ef5ff26dc" } Frame { msec: 368 - hash: "c7986aca05835e238ee95be063bdd032" + hash: "e2d2a6e60537b9a434d0029ef5ff26dc" } Frame { msec: 384 - hash: "c7986aca05835e238ee95be063bdd032" + hash: "e2d2a6e60537b9a434d0029ef5ff26dc" } Frame { msec: 400 - hash: "c7986aca05835e238ee95be063bdd032" + hash: "e2d2a6e60537b9a434d0029ef5ff26dc" } Frame { msec: 416 - hash: "c7986aca05835e238ee95be063bdd032" + hash: "e2d2a6e60537b9a434d0029ef5ff26dc" } Frame { msec: 432 - hash: "c7986aca05835e238ee95be063bdd032" + hash: "e2d2a6e60537b9a434d0029ef5ff26dc" } Frame { msec: 448 - hash: "c7986aca05835e238ee95be063bdd032" + hash: "e2d2a6e60537b9a434d0029ef5ff26dc" } Frame { msec: 464 - hash: "c7986aca05835e238ee95be063bdd032" + hash: "e2d2a6e60537b9a434d0029ef5ff26dc" } Frame { msec: 480 - hash: "c7986aca05835e238ee95be063bdd032" + hash: "e2d2a6e60537b9a434d0029ef5ff26dc" } Frame { msec: 496 - hash: "dd8ee9c060450beef6cc2494fa463e0a" + hash: "00cba961e67c2124ace75dddb657cd6c" } Frame { msec: 512 - hash: "dd8ee9c060450beef6cc2494fa463e0a" + hash: "00cba961e67c2124ace75dddb657cd6c" } Frame { msec: 528 - hash: "dd8ee9c060450beef6cc2494fa463e0a" + hash: "00cba961e67c2124ace75dddb657cd6c" } Frame { msec: 544 - hash: "dd8ee9c060450beef6cc2494fa463e0a" + hash: "00cba961e67c2124ace75dddb657cd6c" } Frame { msec: 560 - hash: "dd8ee9c060450beef6cc2494fa463e0a" + hash: "00cba961e67c2124ace75dddb657cd6c" } Frame { msec: 576 - hash: "dd8ee9c060450beef6cc2494fa463e0a" + hash: "00cba961e67c2124ace75dddb657cd6c" } Frame { msec: 592 - hash: "dd8ee9c060450beef6cc2494fa463e0a" + hash: "00cba961e67c2124ace75dddb657cd6c" } Frame { msec: 608 - hash: "dd8ee9c060450beef6cc2494fa463e0a" + hash: "00cba961e67c2124ace75dddb657cd6c" } Frame { msec: 624 - hash: "dd8ee9c060450beef6cc2494fa463e0a" + hash: "00cba961e67c2124ace75dddb657cd6c" } Frame { msec: 640 - hash: "dd8ee9c060450beef6cc2494fa463e0a" + hash: "00cba961e67c2124ace75dddb657cd6c" } Frame { msec: 656 - hash: "f55ebe08f1b538d085cda157f566859e" + hash: "31d518de83e195def2d957b7d86b98e5" } Frame { msec: 672 - hash: "f55ebe08f1b538d085cda157f566859e" + hash: "31d518de83e195def2d957b7d86b98e5" } Frame { msec: 688 - hash: "f55ebe08f1b538d085cda157f566859e" + hash: "31d518de83e195def2d957b7d86b98e5" } Frame { msec: 704 - hash: "f55ebe08f1b538d085cda157f566859e" + hash: "31d518de83e195def2d957b7d86b98e5" } Frame { msec: 720 - hash: "f55ebe08f1b538d085cda157f566859e" + hash: "31d518de83e195def2d957b7d86b98e5" } Frame { msec: 736 - hash: "f55ebe08f1b538d085cda157f566859e" + hash: "31d518de83e195def2d957b7d86b98e5" } Frame { msec: 752 - hash: "f55ebe08f1b538d085cda157f566859e" + hash: "31d518de83e195def2d957b7d86b98e5" } Frame { msec: 768 - hash: "f55ebe08f1b538d085cda157f566859e" + hash: "31d518de83e195def2d957b7d86b98e5" } Frame { msec: 784 - hash: "f55ebe08f1b538d085cda157f566859e" + hash: "31d518de83e195def2d957b7d86b98e5" } Frame { msec: 800 - hash: "f55ebe08f1b538d085cda157f566859e" + hash: "31d518de83e195def2d957b7d86b98e5" } Frame { msec: 816 - hash: "f55ebe08f1b538d085cda157f566859e" + hash: "31d518de83e195def2d957b7d86b98e5" } Frame { msec: 832 - hash: "f55ebe08f1b538d085cda157f566859e" + hash: "31d518de83e195def2d957b7d86b98e5" } Frame { msec: 848 - hash: "f55ebe08f1b538d085cda157f566859e" + hash: "31d518de83e195def2d957b7d86b98e5" } Frame { msec: 864 - hash: "f55ebe08f1b538d085cda157f566859e" + hash: "31d518de83e195def2d957b7d86b98e5" } Frame { msec: 880 - hash: "f55ebe08f1b538d085cda157f566859e" + hash: "31d518de83e195def2d957b7d86b98e5" } Frame { msec: 896 - hash: "f55ebe08f1b538d085cda157f566859e" + hash: "31d518de83e195def2d957b7d86b98e5" } Frame { msec: 912 - hash: "f55ebe08f1b538d085cda157f566859e" + hash: "31d518de83e195def2d957b7d86b98e5" } Frame { msec: 928 - hash: "f55ebe08f1b538d085cda157f566859e" + hash: "31d518de83e195def2d957b7d86b98e5" } Frame { msec: 944 - hash: "f55ebe08f1b538d085cda157f566859e" + hash: "31d518de83e195def2d957b7d86b98e5" } Frame { msec: 960 - hash: "f55ebe08f1b538d085cda157f566859e" + hash: "31d518de83e195def2d957b7d86b98e5" } } diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/baseline/data-MAC/parentanchor.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/baseline/data-MAC/parentanchor.0.png Binary files differindex 4b78165..1fd0213 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetext/baseline/data-MAC/parentanchor.0.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/baseline/data-MAC/parentanchor.0.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/baseline/data-MAC/parentanchor.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/baseline/data-MAC/parentanchor.qml index 7c557e0..c5a5a76 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetext/baseline/data-MAC/parentanchor.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/baseline/data-MAC/parentanchor.qml @@ -10,122 +10,122 @@ VisualTest { } Frame { msec: 32 - hash: "455caf06270992e3367c2a5a4371b6ac" + hash: "f45eda9414f7db5ed1f97a8275459abd" } Frame { msec: 48 - hash: "455caf06270992e3367c2a5a4371b6ac" + hash: "f45eda9414f7db5ed1f97a8275459abd" } Frame { msec: 64 - hash: "455caf06270992e3367c2a5a4371b6ac" + hash: "f45eda9414f7db5ed1f97a8275459abd" } Frame { msec: 80 - hash: "455caf06270992e3367c2a5a4371b6ac" + hash: "f45eda9414f7db5ed1f97a8275459abd" } Frame { msec: 96 - hash: "455caf06270992e3367c2a5a4371b6ac" + hash: "f45eda9414f7db5ed1f97a8275459abd" } Frame { msec: 112 - hash: "455caf06270992e3367c2a5a4371b6ac" + hash: "f45eda9414f7db5ed1f97a8275459abd" } Frame { msec: 128 - hash: "455caf06270992e3367c2a5a4371b6ac" + hash: "f45eda9414f7db5ed1f97a8275459abd" } Frame { msec: 144 - hash: "455caf06270992e3367c2a5a4371b6ac" + hash: "f45eda9414f7db5ed1f97a8275459abd" } Frame { msec: 160 - hash: "455caf06270992e3367c2a5a4371b6ac" + hash: "f45eda9414f7db5ed1f97a8275459abd" } Frame { msec: 176 - hash: "455caf06270992e3367c2a5a4371b6ac" + hash: "f45eda9414f7db5ed1f97a8275459abd" } Frame { msec: 192 - hash: "455caf06270992e3367c2a5a4371b6ac" + hash: "f45eda9414f7db5ed1f97a8275459abd" } Frame { msec: 208 - hash: "455caf06270992e3367c2a5a4371b6ac" + hash: "f45eda9414f7db5ed1f97a8275459abd" } Frame { msec: 224 - hash: "455caf06270992e3367c2a5a4371b6ac" + hash: "f45eda9414f7db5ed1f97a8275459abd" } Frame { msec: 240 - hash: "455caf06270992e3367c2a5a4371b6ac" + hash: "f45eda9414f7db5ed1f97a8275459abd" } Frame { msec: 256 - hash: "455caf06270992e3367c2a5a4371b6ac" + hash: "f45eda9414f7db5ed1f97a8275459abd" } Frame { msec: 272 - hash: "455caf06270992e3367c2a5a4371b6ac" + hash: "f45eda9414f7db5ed1f97a8275459abd" } Frame { msec: 288 - hash: "455caf06270992e3367c2a5a4371b6ac" + hash: "f45eda9414f7db5ed1f97a8275459abd" } Frame { msec: 304 - hash: "455caf06270992e3367c2a5a4371b6ac" + hash: "f45eda9414f7db5ed1f97a8275459abd" } Frame { msec: 320 - hash: "455caf06270992e3367c2a5a4371b6ac" + hash: "f45eda9414f7db5ed1f97a8275459abd" } Frame { msec: 336 - hash: "455caf06270992e3367c2a5a4371b6ac" + hash: "f45eda9414f7db5ed1f97a8275459abd" } Frame { msec: 352 - hash: "455caf06270992e3367c2a5a4371b6ac" + hash: "f45eda9414f7db5ed1f97a8275459abd" } Frame { msec: 368 - hash: "455caf06270992e3367c2a5a4371b6ac" + hash: "f45eda9414f7db5ed1f97a8275459abd" } Frame { msec: 384 - hash: "455caf06270992e3367c2a5a4371b6ac" + hash: "f45eda9414f7db5ed1f97a8275459abd" } Frame { msec: 400 - hash: "455caf06270992e3367c2a5a4371b6ac" + hash: "f45eda9414f7db5ed1f97a8275459abd" } Frame { msec: 416 - hash: "455caf06270992e3367c2a5a4371b6ac" + hash: "f45eda9414f7db5ed1f97a8275459abd" } Frame { msec: 432 - hash: "455caf06270992e3367c2a5a4371b6ac" + hash: "f45eda9414f7db5ed1f97a8275459abd" } Frame { msec: 448 - hash: "455caf06270992e3367c2a5a4371b6ac" + hash: "f45eda9414f7db5ed1f97a8275459abd" } Frame { msec: 464 - hash: "455caf06270992e3367c2a5a4371b6ac" + hash: "f45eda9414f7db5ed1f97a8275459abd" } Frame { msec: 480 - hash: "455caf06270992e3367c2a5a4371b6ac" + hash: "f45eda9414f7db5ed1f97a8275459abd" } Frame { msec: 496 - hash: "455caf06270992e3367c2a5a4371b6ac" + hash: "f45eda9414f7db5ed1f97a8275459abd" } } diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/bugs/data-MAC/QTBUG-14469.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/bugs/data-MAC/QTBUG-14469.0.png Binary files differnew file mode 100644 index 0000000..4d6bf55 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/bugs/data-MAC/QTBUG-14469.0.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/bugs/data-MAC/QTBUG-14469.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/bugs/data-MAC/QTBUG-14469.1.png Binary files differnew file mode 100644 index 0000000..a75da16 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/bugs/data-MAC/QTBUG-14469.1.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/bugs/data-MAC/QTBUG-14469.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/bugs/data-MAC/QTBUG-14469.qml new file mode 100644 index 0000000..002e1c8 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/bugs/data-MAC/QTBUG-14469.qml @@ -0,0 +1,475 @@ +import Qt.VisualTest 4.7 + +VisualTest { + Frame { + msec: 0 + } + Frame { + msec: 16 + image: "QTBUG-14469.0.png" + } + Frame { + msec: 32 + hash: "fab978e1e0ee5140d8131320ff2322e9" + } + Frame { + msec: 48 + hash: "fab978e1e0ee5140d8131320ff2322e9" + } + Frame { + msec: 64 + hash: "fab978e1e0ee5140d8131320ff2322e9" + } + Frame { + msec: 80 + hash: "fab978e1e0ee5140d8131320ff2322e9" + } + Frame { + msec: 96 + hash: "fab978e1e0ee5140d8131320ff2322e9" + } + Frame { + msec: 112 + hash: "fab978e1e0ee5140d8131320ff2322e9" + } + Frame { + msec: 128 + hash: "cf74324c2a0c8f45c728d42390aac1e0" + } + Frame { + msec: 144 + hash: "cf74324c2a0c8f45c728d42390aac1e0" + } + Frame { + msec: 160 + hash: "cf74324c2a0c8f45c728d42390aac1e0" + } + Frame { + msec: 176 + hash: "cf74324c2a0c8f45c728d42390aac1e0" + } + Frame { + msec: 192 + hash: "cf74324c2a0c8f45c728d42390aac1e0" + } + Frame { + msec: 208 + hash: "cf74324c2a0c8f45c728d42390aac1e0" + } + Frame { + msec: 224 + hash: "07c938ac9ff9f591e84fc553291c7c49" + } + Frame { + msec: 240 + hash: "07c938ac9ff9f591e84fc553291c7c49" + } + Frame { + msec: 256 + hash: "07c938ac9ff9f591e84fc553291c7c49" + } + Frame { + msec: 272 + hash: "07c938ac9ff9f591e84fc553291c7c49" + } + Frame { + msec: 288 + hash: "07c938ac9ff9f591e84fc553291c7c49" + } + Frame { + msec: 304 + hash: "07c938ac9ff9f591e84fc553291c7c49" + } + Frame { + msec: 320 + hash: "7b585eb6226e6ce2de355f9730dba377" + } + Frame { + msec: 336 + hash: "7b585eb6226e6ce2de355f9730dba377" + } + Frame { + msec: 352 + hash: "7b585eb6226e6ce2de355f9730dba377" + } + Frame { + msec: 368 + hash: "7b585eb6226e6ce2de355f9730dba377" + } + Frame { + msec: 384 + hash: "7b585eb6226e6ce2de355f9730dba377" + } + Frame { + msec: 400 + hash: "7b585eb6226e6ce2de355f9730dba377" + } + Frame { + msec: 416 + hash: "a7817a7d902ab2fe2875183feb6513dd" + } + Frame { + msec: 432 + hash: "a7817a7d902ab2fe2875183feb6513dd" + } + Frame { + msec: 448 + hash: "a7817a7d902ab2fe2875183feb6513dd" + } + Frame { + msec: 464 + hash: "a7817a7d902ab2fe2875183feb6513dd" + } + Frame { + msec: 480 + hash: "a7817a7d902ab2fe2875183feb6513dd" + } + Frame { + msec: 496 + hash: "a7817a7d902ab2fe2875183feb6513dd" + } + Frame { + msec: 512 + hash: "a7817a7d902ab2fe2875183feb6513dd" + } + Frame { + msec: 528 + hash: "067dfe70eca44e2157b723858897c90e" + } + Frame { + msec: 544 + hash: "067dfe70eca44e2157b723858897c90e" + } + Frame { + msec: 560 + hash: "067dfe70eca44e2157b723858897c90e" + } + Frame { + msec: 576 + hash: "067dfe70eca44e2157b723858897c90e" + } + Frame { + msec: 592 + hash: "067dfe70eca44e2157b723858897c90e" + } + Frame { + msec: 608 + hash: "067dfe70eca44e2157b723858897c90e" + } + Frame { + msec: 624 + hash: "b1ac0015f173bf5789daa5d45d04dadd" + } + Frame { + msec: 640 + hash: "b1ac0015f173bf5789daa5d45d04dadd" + } + Frame { + msec: 656 + hash: "b1ac0015f173bf5789daa5d45d04dadd" + } + Frame { + msec: 672 + hash: "b1ac0015f173bf5789daa5d45d04dadd" + } + Frame { + msec: 688 + hash: "b1ac0015f173bf5789daa5d45d04dadd" + } + Frame { + msec: 704 + hash: "b1ac0015f173bf5789daa5d45d04dadd" + } + Frame { + msec: 720 + hash: "431cb09ccdcfab7c3ff7d498aa1f0816" + } + Frame { + msec: 736 + hash: "431cb09ccdcfab7c3ff7d498aa1f0816" + } + Frame { + msec: 752 + hash: "431cb09ccdcfab7c3ff7d498aa1f0816" + } + Frame { + msec: 768 + hash: "431cb09ccdcfab7c3ff7d498aa1f0816" + } + Frame { + msec: 784 + hash: "431cb09ccdcfab7c3ff7d498aa1f0816" + } + Frame { + msec: 800 + hash: "431cb09ccdcfab7c3ff7d498aa1f0816" + } + Frame { + msec: 816 + hash: "533b23f29fe5f9dc85a6ca390c6dd023" + } + Frame { + msec: 832 + hash: "533b23f29fe5f9dc85a6ca390c6dd023" + } + Frame { + msec: 848 + hash: "533b23f29fe5f9dc85a6ca390c6dd023" + } + Frame { + msec: 864 + hash: "533b23f29fe5f9dc85a6ca390c6dd023" + } + Frame { + msec: 880 + hash: "533b23f29fe5f9dc85a6ca390c6dd023" + } + Frame { + msec: 896 + hash: "533b23f29fe5f9dc85a6ca390c6dd023" + } + Frame { + msec: 912 + hash: "533b23f29fe5f9dc85a6ca390c6dd023" + } + Frame { + msec: 928 + hash: "cd397908009ddf16ec3101efb0d7468e" + } + Frame { + msec: 944 + hash: "cd397908009ddf16ec3101efb0d7468e" + } + Frame { + msec: 960 + hash: "cd397908009ddf16ec3101efb0d7468e" + } + Frame { + msec: 976 + image: "QTBUG-14469.1.png" + } + Frame { + msec: 992 + hash: "cd397908009ddf16ec3101efb0d7468e" + } + Frame { + msec: 1008 + hash: "cd397908009ddf16ec3101efb0d7468e" + } + Frame { + msec: 1024 + hash: "a1eebf1a97314851b5154802f05abe8d" + } + Frame { + msec: 1040 + hash: "a1eebf1a97314851b5154802f05abe8d" + } + Frame { + msec: 1056 + hash: "a1eebf1a97314851b5154802f05abe8d" + } + Frame { + msec: 1072 + hash: "a1eebf1a97314851b5154802f05abe8d" + } + Frame { + msec: 1088 + hash: "a1eebf1a97314851b5154802f05abe8d" + } + Frame { + msec: 1104 + hash: "a1eebf1a97314851b5154802f05abe8d" + } + Frame { + msec: 1120 + hash: "71d91d85b9c555eb9b39dac79b35dd46" + } + Frame { + msec: 1136 + hash: "71d91d85b9c555eb9b39dac79b35dd46" + } + Frame { + msec: 1152 + hash: "71d91d85b9c555eb9b39dac79b35dd46" + } + Frame { + msec: 1168 + hash: "71d91d85b9c555eb9b39dac79b35dd46" + } + Frame { + msec: 1184 + hash: "71d91d85b9c555eb9b39dac79b35dd46" + } + Frame { + msec: 1200 + hash: "71d91d85b9c555eb9b39dac79b35dd46" + } + Frame { + msec: 1216 + hash: "b1da2d1f4aad2a197a80788607bd867d" + } + Frame { + msec: 1232 + hash: "b1da2d1f4aad2a197a80788607bd867d" + } + Frame { + msec: 1248 + hash: "b1da2d1f4aad2a197a80788607bd867d" + } + Frame { + msec: 1264 + hash: "b1da2d1f4aad2a197a80788607bd867d" + } + Frame { + msec: 1280 + hash: "b1da2d1f4aad2a197a80788607bd867d" + } + Frame { + msec: 1296 + hash: "b1da2d1f4aad2a197a80788607bd867d" + } + Frame { + msec: 1312 + hash: "b1da2d1f4aad2a197a80788607bd867d" + } + Frame { + msec: 1328 + hash: "df14e9cfeba3850bae7cad111fdbc8df" + } + Frame { + msec: 1344 + hash: "df14e9cfeba3850bae7cad111fdbc8df" + } + Frame { + msec: 1360 + hash: "df14e9cfeba3850bae7cad111fdbc8df" + } + Frame { + msec: 1376 + hash: "df14e9cfeba3850bae7cad111fdbc8df" + } + Frame { + msec: 1392 + hash: "df14e9cfeba3850bae7cad111fdbc8df" + } + Frame { + msec: 1408 + hash: "df14e9cfeba3850bae7cad111fdbc8df" + } + Frame { + msec: 1424 + hash: "fab978e1e0ee5140d8131320ff2322e9" + } + Frame { + msec: 1440 + hash: "fab978e1e0ee5140d8131320ff2322e9" + } + Frame { + msec: 1456 + hash: "fab978e1e0ee5140d8131320ff2322e9" + } + Frame { + msec: 1472 + hash: "fab978e1e0ee5140d8131320ff2322e9" + } + Frame { + msec: 1488 + hash: "fab978e1e0ee5140d8131320ff2322e9" + } + Frame { + msec: 1504 + hash: "fab978e1e0ee5140d8131320ff2322e9" + } + Frame { + msec: 1520 + hash: "cf74324c2a0c8f45c728d42390aac1e0" + } + Frame { + msec: 1536 + hash: "cf74324c2a0c8f45c728d42390aac1e0" + } + Frame { + msec: 1552 + hash: "cf74324c2a0c8f45c728d42390aac1e0" + } + Frame { + msec: 1568 + hash: "cf74324c2a0c8f45c728d42390aac1e0" + } + Frame { + msec: 1584 + hash: "cf74324c2a0c8f45c728d42390aac1e0" + } + Frame { + msec: 1600 + hash: "cf74324c2a0c8f45c728d42390aac1e0" + } + Frame { + msec: 1616 + hash: "07c938ac9ff9f591e84fc553291c7c49" + } + Frame { + msec: 1632 + hash: "07c938ac9ff9f591e84fc553291c7c49" + } + Frame { + msec: 1648 + hash: "07c938ac9ff9f591e84fc553291c7c49" + } + Frame { + msec: 1664 + hash: "07c938ac9ff9f591e84fc553291c7c49" + } + Frame { + msec: 1680 + hash: "07c938ac9ff9f591e84fc553291c7c49" + } + Frame { + msec: 1696 + hash: "07c938ac9ff9f591e84fc553291c7c49" + } + Frame { + msec: 1712 + hash: "07c938ac9ff9f591e84fc553291c7c49" + } + Frame { + msec: 1728 + hash: "7b585eb6226e6ce2de355f9730dba377" + } + Frame { + msec: 1744 + hash: "7b585eb6226e6ce2de355f9730dba377" + } + Frame { + msec: 1760 + hash: "7b585eb6226e6ce2de355f9730dba377" + } + Frame { + msec: 1776 + hash: "7b585eb6226e6ce2de355f9730dba377" + } + Frame { + msec: 1792 + hash: "7b585eb6226e6ce2de355f9730dba377" + } + Frame { + msec: 1808 + hash: "7b585eb6226e6ce2de355f9730dba377" + } + Frame { + msec: 1824 + hash: "a7817a7d902ab2fe2875183feb6513dd" + } + Frame { + msec: 1840 + hash: "a7817a7d902ab2fe2875183feb6513dd" + } + Frame { + msec: 1856 + hash: "a7817a7d902ab2fe2875183feb6513dd" + } + Frame { + msec: 1872 + hash: "a7817a7d902ab2fe2875183feb6513dd" + } +} diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/data-MAC/qtbug_14865.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/data-MAC/qtbug_14865.0.png Binary files differindex 804a443..7e84164 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetext/data-MAC/qtbug_14865.0.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/data-MAC/qtbug_14865.0.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/data-MAC/qtbug_14865.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/data-MAC/qtbug_14865.1.png Binary files differindex 804a443..7e84164 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetext/data-MAC/qtbug_14865.1.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/data-MAC/qtbug_14865.1.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/data-MAC/qtbug_14865.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/data-MAC/qtbug_14865.qml index efdb916..d6d8c2a 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetext/data-MAC/qtbug_14865.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/data-MAC/qtbug_14865.qml @@ -10,239 +10,239 @@ VisualTest { } Frame { msec: 32 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 48 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 64 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 80 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 96 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 112 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 128 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 144 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 160 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 176 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 192 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 208 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 224 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 240 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 256 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 272 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 288 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 304 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 320 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 336 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 352 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 368 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 384 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 400 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 416 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 432 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 448 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 464 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 480 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 496 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 512 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 528 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 544 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 560 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 576 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 592 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 608 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 624 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 640 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 656 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 672 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 688 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 704 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 720 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 736 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 752 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 768 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 784 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 800 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 816 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 832 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 848 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 864 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 880 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 896 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 912 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 928 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 944 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 960 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 976 @@ -250,11 +250,11 @@ VisualTest { } Frame { msec: 992 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 1008 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 1024 diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide.0.png Binary files differindex 99f0eb7..749a9c5 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide.0.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide.0.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide.1.png Binary files differindex 99f0eb7..749a9c5 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide.1.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide.1.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide.qml index 6dc7f4f..fbb542e 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide.qml @@ -10,239 +10,239 @@ VisualTest { } Frame { msec: 32 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 48 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 64 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 80 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 96 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 112 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 128 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 144 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 160 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 176 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 192 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 208 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 224 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 240 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 256 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 272 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 288 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 304 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 320 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 336 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 352 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 368 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 384 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 400 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 416 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 432 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 448 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 464 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 480 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 496 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 512 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 528 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 544 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 560 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 576 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 592 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 608 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 624 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 640 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 656 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 672 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 688 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 704 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 720 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 736 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 752 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 768 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 784 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 800 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 816 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 832 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 848 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 864 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 880 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 896 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 912 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 928 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 944 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 960 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 976 @@ -251,29 +251,29 @@ VisualTest { Key { type: 6 key: 16777249 - modifiers: 67108864 + modifiers: 0 text: "" autorep: false count: 1 } Frame { msec: 992 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 1008 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 1024 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 1040 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 1056 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } } diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.0.png Binary files differindex 0b08fba..b84b8a9 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.0.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.0.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.1.png Binary files differindex dbf8cd3..dbae0ce 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.1.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.1.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.2.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.2.png Binary files differindex 09646f8..bf56c80 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.2.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.2.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.3.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.3.png Binary files differindex b6734b4..c4f6e18 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.3.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.3.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.4.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.4.png Binary files differindex 861f6b0..ea86925 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.4.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.4.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.qml index 026f880..e780ea6 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.qml @@ -10,239 +10,239 @@ VisualTest { } Frame { msec: 32 - hash: "d482dd54c0f3876a11d80979ada91fa9" + hash: "1c45bbf4494aeb017d7ad53c5e29cbc0" } Frame { msec: 48 - hash: "d482dd54c0f3876a11d80979ada91fa9" + hash: "1c45bbf4494aeb017d7ad53c5e29cbc0" } Frame { msec: 64 - hash: "d482dd54c0f3876a11d80979ada91fa9" + hash: "1c45bbf4494aeb017d7ad53c5e29cbc0" } Frame { msec: 80 - hash: "d482dd54c0f3876a11d80979ada91fa9" + hash: "1c45bbf4494aeb017d7ad53c5e29cbc0" } Frame { msec: 96 - hash: "d482dd54c0f3876a11d80979ada91fa9" + hash: "1c45bbf4494aeb017d7ad53c5e29cbc0" } Frame { msec: 112 - hash: "3eb1cc8fa11ae88a3bf5004263805264" + hash: "452d8e4da326413e4961f20a0d24d0f0" } Frame { msec: 128 - hash: "3eb1cc8fa11ae88a3bf5004263805264" + hash: "452d8e4da326413e4961f20a0d24d0f0" } Frame { msec: 144 - hash: "3eb1cc8fa11ae88a3bf5004263805264" + hash: "452d8e4da326413e4961f20a0d24d0f0" } Frame { msec: 160 - hash: "3eb1cc8fa11ae88a3bf5004263805264" + hash: "452d8e4da326413e4961f20a0d24d0f0" } Frame { msec: 176 - hash: "3eb1cc8fa11ae88a3bf5004263805264" + hash: "452d8e4da326413e4961f20a0d24d0f0" } Frame { msec: 192 - hash: "b169f3828fafa79245bd5886d94a33b2" + hash: "8dc43f316fd36a877c773c10c23b5703" } Frame { msec: 208 - hash: "b169f3828fafa79245bd5886d94a33b2" + hash: "8dc43f316fd36a877c773c10c23b5703" } Frame { msec: 224 - hash: "b169f3828fafa79245bd5886d94a33b2" + hash: "8dc43f316fd36a877c773c10c23b5703" } Frame { msec: 240 - hash: "b169f3828fafa79245bd5886d94a33b2" + hash: "8dc43f316fd36a877c773c10c23b5703" } Frame { msec: 256 - hash: "c9a22f77cce333ea041730bc76d9bb96" + hash: "b7e055ce8d510c5ec66e71fa5a78fddf" } Frame { msec: 272 - hash: "c9a22f77cce333ea041730bc76d9bb96" + hash: "b7e055ce8d510c5ec66e71fa5a78fddf" } Frame { msec: 288 - hash: "c9a22f77cce333ea041730bc76d9bb96" + hash: "b7e055ce8d510c5ec66e71fa5a78fddf" } Frame { msec: 304 - hash: "c9a22f77cce333ea041730bc76d9bb96" + hash: "b7e055ce8d510c5ec66e71fa5a78fddf" } Frame { msec: 320 - hash: "958e5805b2bc2ffeaf8a6c8c24721dd5" + hash: "e9b0abe5719027348cd267eb4823fc5f" } Frame { msec: 336 - hash: "958e5805b2bc2ffeaf8a6c8c24721dd5" + hash: "e9b0abe5719027348cd267eb4823fc5f" } Frame { msec: 352 - hash: "958e5805b2bc2ffeaf8a6c8c24721dd5" + hash: "e9b0abe5719027348cd267eb4823fc5f" } Frame { msec: 368 - hash: "958e5805b2bc2ffeaf8a6c8c24721dd5" + hash: "e9b0abe5719027348cd267eb4823fc5f" } Frame { msec: 384 - hash: "958e5805b2bc2ffeaf8a6c8c24721dd5" + hash: "e9b0abe5719027348cd267eb4823fc5f" } Frame { msec: 400 - hash: "ed14c796dc2980f7a1bdedb15698ae01" + hash: "441102f2f69e9f4e10335c1746d47bd3" } Frame { msec: 416 - hash: "ed14c796dc2980f7a1bdedb15698ae01" + hash: "441102f2f69e9f4e10335c1746d47bd3" } Frame { msec: 432 - hash: "ed14c796dc2980f7a1bdedb15698ae01" + hash: "441102f2f69e9f4e10335c1746d47bd3" } Frame { msec: 448 - hash: "ed14c796dc2980f7a1bdedb15698ae01" + hash: "441102f2f69e9f4e10335c1746d47bd3" } Frame { msec: 464 - hash: "ed14c796dc2980f7a1bdedb15698ae01" + hash: "441102f2f69e9f4e10335c1746d47bd3" } Frame { msec: 480 - hash: "24d811c9b98b0cb140e7e82090e793ab" + hash: "95668288170720989adde2a0b41d5ee8" } Frame { msec: 496 - hash: "24d811c9b98b0cb140e7e82090e793ab" + hash: "95668288170720989adde2a0b41d5ee8" } Frame { msec: 512 - hash: "24d811c9b98b0cb140e7e82090e793ab" + hash: "95668288170720989adde2a0b41d5ee8" } Frame { msec: 528 - hash: "24d811c9b98b0cb140e7e82090e793ab" + hash: "95668288170720989adde2a0b41d5ee8" } Frame { msec: 544 - hash: "afa28a6a682128b1b44df31c78b63b04" + hash: "16bba6b72993e474b4c302af3f682834" } Frame { msec: 560 - hash: "afa28a6a682128b1b44df31c78b63b04" + hash: "16bba6b72993e474b4c302af3f682834" } Frame { msec: 576 - hash: "afa28a6a682128b1b44df31c78b63b04" + hash: "16bba6b72993e474b4c302af3f682834" } Frame { msec: 592 - hash: "afa28a6a682128b1b44df31c78b63b04" + hash: "16bba6b72993e474b4c302af3f682834" } Frame { msec: 608 - hash: "c43bba2d3406fabdafac344102d7d72c" + hash: "86c4d8bd1b19116411b6a6e450547425" } Frame { msec: 624 - hash: "c43bba2d3406fabdafac344102d7d72c" + hash: "86c4d8bd1b19116411b6a6e450547425" } Frame { msec: 640 - hash: "c43bba2d3406fabdafac344102d7d72c" + hash: "86c4d8bd1b19116411b6a6e450547425" } Frame { msec: 656 - hash: "c43bba2d3406fabdafac344102d7d72c" + hash: "86c4d8bd1b19116411b6a6e450547425" } Frame { msec: 672 - hash: "c43bba2d3406fabdafac344102d7d72c" + hash: "86c4d8bd1b19116411b6a6e450547425" } Frame { msec: 688 - hash: "0e1fb18acb72ca1da6fd619e31dd2c86" + hash: "d0d3cfa922ebca20c590ab7e59985268" } Frame { msec: 704 - hash: "0e1fb18acb72ca1da6fd619e31dd2c86" + hash: "d0d3cfa922ebca20c590ab7e59985268" } Frame { msec: 720 - hash: "0e1fb18acb72ca1da6fd619e31dd2c86" + hash: "d0d3cfa922ebca20c590ab7e59985268" } Frame { msec: 736 - hash: "0e1fb18acb72ca1da6fd619e31dd2c86" + hash: "d0d3cfa922ebca20c590ab7e59985268" } Frame { msec: 752 - hash: "0e1fb18acb72ca1da6fd619e31dd2c86" + hash: "d0d3cfa922ebca20c590ab7e59985268" } Frame { msec: 768 - hash: "d5780e5b30828f33d18c1f4e32ba8c3f" + hash: "397d72a090171090f897283729b19bc8" } Frame { msec: 784 - hash: "d5780e5b30828f33d18c1f4e32ba8c3f" + hash: "397d72a090171090f897283729b19bc8" } Frame { msec: 800 - hash: "d5780e5b30828f33d18c1f4e32ba8c3f" + hash: "397d72a090171090f897283729b19bc8" } Frame { msec: 816 - hash: "d5780e5b30828f33d18c1f4e32ba8c3f" + hash: "397d72a090171090f897283729b19bc8" } Frame { msec: 832 - hash: "28bdd1ab1c1af1b39a2f9d11be456682" + hash: "2b038e59289d2e3cef02245d2d128271" } Frame { msec: 848 - hash: "28bdd1ab1c1af1b39a2f9d11be456682" + hash: "2b038e59289d2e3cef02245d2d128271" } Frame { msec: 864 - hash: "28bdd1ab1c1af1b39a2f9d11be456682" + hash: "2b038e59289d2e3cef02245d2d128271" } Frame { msec: 880 - hash: "28bdd1ab1c1af1b39a2f9d11be456682" + hash: "2b038e59289d2e3cef02245d2d128271" } Frame { msec: 896 - hash: "28bdd1ab1c1af1b39a2f9d11be456682" + hash: "2b038e59289d2e3cef02245d2d128271" } Frame { msec: 912 - hash: "e34a9080716cebc0260e682960cc7c6e" + hash: "5f64aa763acdd8f5d6cc249be36e226a" } Frame { msec: 928 - hash: "e34a9080716cebc0260e682960cc7c6e" + hash: "5f64aa763acdd8f5d6cc249be36e226a" } Frame { msec: 944 - hash: "e34a9080716cebc0260e682960cc7c6e" + hash: "5f64aa763acdd8f5d6cc249be36e226a" } Frame { msec: 960 - hash: "e34a9080716cebc0260e682960cc7c6e" + hash: "5f64aa763acdd8f5d6cc249be36e226a" } Frame { msec: 976 @@ -250,247 +250,247 @@ VisualTest { } Frame { msec: 992 - hash: "61959fc3d6f84a9fe88ec1a2979da9af" + hash: "4f8c81adc72fce17c7e54f4d45ec08e4" } Frame { msec: 1008 - hash: "61959fc3d6f84a9fe88ec1a2979da9af" + hash: "4f8c81adc72fce17c7e54f4d45ec08e4" } Frame { msec: 1024 - hash: "61959fc3d6f84a9fe88ec1a2979da9af" + hash: "4f8c81adc72fce17c7e54f4d45ec08e4" } Frame { msec: 1040 - hash: "47794b18771d6d558ebbca881de92377" + hash: "91a7a0c0f686975d0087ee0e066911eb" } Frame { msec: 1056 - hash: "47794b18771d6d558ebbca881de92377" + hash: "91a7a0c0f686975d0087ee0e066911eb" } Frame { msec: 1072 - hash: "47794b18771d6d558ebbca881de92377" + hash: "91a7a0c0f686975d0087ee0e066911eb" } Frame { msec: 1088 - hash: "47794b18771d6d558ebbca881de92377" + hash: "91a7a0c0f686975d0087ee0e066911eb" } Frame { msec: 1104 - hash: "47794b18771d6d558ebbca881de92377" + hash: "91a7a0c0f686975d0087ee0e066911eb" } Frame { msec: 1120 - hash: "ba34b024ddb4e701d1d7f0c19e24d6cf" + hash: "b19f6b8b4dc9d2a2d9aba82983e41889" } Frame { msec: 1136 - hash: "ba34b024ddb4e701d1d7f0c19e24d6cf" + hash: "b19f6b8b4dc9d2a2d9aba82983e41889" } Frame { msec: 1152 - hash: "ba34b024ddb4e701d1d7f0c19e24d6cf" + hash: "b19f6b8b4dc9d2a2d9aba82983e41889" } Frame { msec: 1168 - hash: "ba34b024ddb4e701d1d7f0c19e24d6cf" + hash: "b19f6b8b4dc9d2a2d9aba82983e41889" } Frame { msec: 1184 - hash: "ba34b024ddb4e701d1d7f0c19e24d6cf" + hash: "b19f6b8b4dc9d2a2d9aba82983e41889" } Frame { msec: 1200 - hash: "e94344268d2a118053ecc3aef278d91d" + hash: "456542b672303ddae500b96e9b66a558" } Frame { msec: 1216 - hash: "e94344268d2a118053ecc3aef278d91d" + hash: "456542b672303ddae500b96e9b66a558" } Frame { msec: 1232 - hash: "e94344268d2a118053ecc3aef278d91d" + hash: "456542b672303ddae500b96e9b66a558" } Frame { msec: 1248 - hash: "e94344268d2a118053ecc3aef278d91d" + hash: "456542b672303ddae500b96e9b66a558" } Frame { msec: 1264 - hash: "df1959605d3bd74e84e51cbd4d322235" + hash: "8ec69f05d929c3b397dc721198ccacd4" } Frame { msec: 1280 - hash: "df1959605d3bd74e84e51cbd4d322235" + hash: "8ec69f05d929c3b397dc721198ccacd4" } Frame { msec: 1296 - hash: "df1959605d3bd74e84e51cbd4d322235" + hash: "8ec69f05d929c3b397dc721198ccacd4" } Frame { msec: 1312 - hash: "df1959605d3bd74e84e51cbd4d322235" + hash: "8ec69f05d929c3b397dc721198ccacd4" } Frame { msec: 1328 - hash: "26e1c8d13f0dd3713dce24211a8d26c1" + hash: "2d63fd91f4b01f6b178c795838e78990" } Frame { msec: 1344 - hash: "26e1c8d13f0dd3713dce24211a8d26c1" + hash: "2d63fd91f4b01f6b178c795838e78990" } Frame { msec: 1360 - hash: "26e1c8d13f0dd3713dce24211a8d26c1" + hash: "2d63fd91f4b01f6b178c795838e78990" } Frame { msec: 1376 - hash: "26e1c8d13f0dd3713dce24211a8d26c1" + hash: "2d63fd91f4b01f6b178c795838e78990" } Frame { msec: 1392 - hash: "26e1c8d13f0dd3713dce24211a8d26c1" + hash: "2d63fd91f4b01f6b178c795838e78990" } Frame { msec: 1408 - hash: "fd1344db48093182eb2c2872ceb887df" + hash: "c7c1d2c288653b414fe534ff6fab3381" } Frame { msec: 1424 - hash: "fd1344db48093182eb2c2872ceb887df" + hash: "c7c1d2c288653b414fe534ff6fab3381" } Frame { msec: 1440 - hash: "fd1344db48093182eb2c2872ceb887df" + hash: "c7c1d2c288653b414fe534ff6fab3381" } Frame { msec: 1456 - hash: "fd1344db48093182eb2c2872ceb887df" + hash: "c7c1d2c288653b414fe534ff6fab3381" } Frame { msec: 1472 - hash: "fd1344db48093182eb2c2872ceb887df" + hash: "c7c1d2c288653b414fe534ff6fab3381" } Frame { msec: 1488 - hash: "a4bf54bbb5bcbf54de6a7a2be9b73b81" + hash: "23188e926a855a7a06211783ee51d22a" } Frame { msec: 1504 - hash: "a4bf54bbb5bcbf54de6a7a2be9b73b81" + hash: "23188e926a855a7a06211783ee51d22a" } Frame { msec: 1520 - hash: "a4bf54bbb5bcbf54de6a7a2be9b73b81" + hash: "23188e926a855a7a06211783ee51d22a" } Frame { msec: 1536 - hash: "a4bf54bbb5bcbf54de6a7a2be9b73b81" + hash: "23188e926a855a7a06211783ee51d22a" } Frame { msec: 1552 - hash: "072a6c0e64853f57487845f2ff376c12" + hash: "cfc64d8876d59e0d75f079c2e08cea5f" } Frame { msec: 1568 - hash: "072a6c0e64853f57487845f2ff376c12" + hash: "cfc64d8876d59e0d75f079c2e08cea5f" } Frame { msec: 1584 - hash: "072a6c0e64853f57487845f2ff376c12" + hash: "cfc64d8876d59e0d75f079c2e08cea5f" } Frame { msec: 1600 - hash: "072a6c0e64853f57487845f2ff376c12" + hash: "cfc64d8876d59e0d75f079c2e08cea5f" } Frame { msec: 1616 - hash: "072a6c0e64853f57487845f2ff376c12" + hash: "cfc64d8876d59e0d75f079c2e08cea5f" } Frame { msec: 1632 - hash: "d4183aba9cd5607ea1ff1572c78d33cc" + hash: "766c679eaec4bd28dc92cb3642d5be83" } Frame { msec: 1648 - hash: "d4183aba9cd5607ea1ff1572c78d33cc" + hash: "766c679eaec4bd28dc92cb3642d5be83" } Frame { msec: 1664 - hash: "d4183aba9cd5607ea1ff1572c78d33cc" + hash: "766c679eaec4bd28dc92cb3642d5be83" } Frame { msec: 1680 - hash: "d4183aba9cd5607ea1ff1572c78d33cc" + hash: "766c679eaec4bd28dc92cb3642d5be83" } Frame { msec: 1696 - hash: "31cb8e151b34187f712b269b38a317a7" + hash: "a86ba05a854fde208e6cf7849327d5d0" } Frame { msec: 1712 - hash: "31cb8e151b34187f712b269b38a317a7" + hash: "a86ba05a854fde208e6cf7849327d5d0" } Frame { msec: 1728 - hash: "31cb8e151b34187f712b269b38a317a7" + hash: "a86ba05a854fde208e6cf7849327d5d0" } Frame { msec: 1744 - hash: "31cb8e151b34187f712b269b38a317a7" + hash: "a86ba05a854fde208e6cf7849327d5d0" } Key { type: 6 key: 16777249 - modifiers: 67108864 + modifiers: 0 text: "" autorep: false count: 1 } Frame { msec: 1760 - hash: "31cb8e151b34187f712b269b38a317a7" + hash: "a86ba05a854fde208e6cf7849327d5d0" } Frame { msec: 1776 - hash: "e24ad0aed6a071d6da9f51af00c69300" + hash: "23b60817be2a741cada2af663b0d7f54" } Frame { msec: 1792 - hash: "e24ad0aed6a071d6da9f51af00c69300" + hash: "23b60817be2a741cada2af663b0d7f54" } Frame { msec: 1808 - hash: "e24ad0aed6a071d6da9f51af00c69300" + hash: "23b60817be2a741cada2af663b0d7f54" } Frame { msec: 1824 - hash: "e24ad0aed6a071d6da9f51af00c69300" + hash: "23b60817be2a741cada2af663b0d7f54" } Frame { msec: 1840 - hash: "760eea420a5eb52ccd1f6a29d6701338" + hash: "c098c1c0d5239c59735a5c9450e9d531" } Frame { msec: 1856 - hash: "760eea420a5eb52ccd1f6a29d6701338" + hash: "c098c1c0d5239c59735a5c9450e9d531" } Frame { msec: 1872 - hash: "760eea420a5eb52ccd1f6a29d6701338" + hash: "c098c1c0d5239c59735a5c9450e9d531" } Frame { msec: 1888 - hash: "760eea420a5eb52ccd1f6a29d6701338" + hash: "c098c1c0d5239c59735a5c9450e9d531" } Frame { msec: 1904 - hash: "760eea420a5eb52ccd1f6a29d6701338" + hash: "c098c1c0d5239c59735a5c9450e9d531" } Frame { msec: 1920 - hash: "07cdcdb9b551750c4a742ee6dff9f3f9" + hash: "09f6ee218d314d3a405ae43e32588c07" } Frame { msec: 1936 @@ -498,239 +498,239 @@ VisualTest { } Frame { msec: 1952 - hash: "07cdcdb9b551750c4a742ee6dff9f3f9" + hash: "09f6ee218d314d3a405ae43e32588c07" } Frame { msec: 1968 - hash: "07cdcdb9b551750c4a742ee6dff9f3f9" + hash: "09f6ee218d314d3a405ae43e32588c07" } Frame { msec: 1984 - hash: "ec4dada16fb19fb4cf24367c9f25f161" + hash: "6ee480e7d8b0abe295ae12a660119102" } Frame { msec: 2000 - hash: "ec4dada16fb19fb4cf24367c9f25f161" + hash: "6ee480e7d8b0abe295ae12a660119102" } Frame { msec: 2016 - hash: "ec4dada16fb19fb4cf24367c9f25f161" + hash: "6ee480e7d8b0abe295ae12a660119102" } Frame { msec: 2032 - hash: "ec4dada16fb19fb4cf24367c9f25f161" + hash: "6ee480e7d8b0abe295ae12a660119102" } Frame { msec: 2048 - hash: "ec4dada16fb19fb4cf24367c9f25f161" + hash: "6ee480e7d8b0abe295ae12a660119102" } Frame { msec: 2064 - hash: "f5ef19dc69f8b6060056f7005f613ca3" + hash: "b43ca0ea75f4c17c09248f78170d3839" } Frame { msec: 2080 - hash: "f5ef19dc69f8b6060056f7005f613ca3" + hash: "b43ca0ea75f4c17c09248f78170d3839" } Frame { msec: 2096 - hash: "f5ef19dc69f8b6060056f7005f613ca3" + hash: "b43ca0ea75f4c17c09248f78170d3839" } Frame { msec: 2112 - hash: "f5ef19dc69f8b6060056f7005f613ca3" + hash: "b43ca0ea75f4c17c09248f78170d3839" } Frame { msec: 2128 - hash: "6bd00519ea14f0dd34d45de4deaaa65e" + hash: "92e0ee1174ffcb710403bb831aeec353" } Frame { msec: 2144 - hash: "6bd00519ea14f0dd34d45de4deaaa65e" + hash: "92e0ee1174ffcb710403bb831aeec353" } Frame { msec: 2160 - hash: "6bd00519ea14f0dd34d45de4deaaa65e" + hash: "92e0ee1174ffcb710403bb831aeec353" } Frame { msec: 2176 - hash: "6bd00519ea14f0dd34d45de4deaaa65e" + hash: "92e0ee1174ffcb710403bb831aeec353" } Frame { msec: 2192 - hash: "6bd00519ea14f0dd34d45de4deaaa65e" + hash: "92e0ee1174ffcb710403bb831aeec353" } Frame { msec: 2208 - hash: "1c3e491e889e408f705477f060103243" + hash: "bba79ad6f3630b7aa382541cc2d3a2cd" } Frame { msec: 2224 - hash: "1c3e491e889e408f705477f060103243" + hash: "bba79ad6f3630b7aa382541cc2d3a2cd" } Frame { msec: 2240 - hash: "1c3e491e889e408f705477f060103243" + hash: "bba79ad6f3630b7aa382541cc2d3a2cd" } Frame { msec: 2256 - hash: "1c3e491e889e408f705477f060103243" + hash: "bba79ad6f3630b7aa382541cc2d3a2cd" } Frame { msec: 2272 - hash: "80bc59211ffab64820e306e6eb13d2fc" + hash: "7efeb1565125f25252ce3f03dadc3bea" } Frame { msec: 2288 - hash: "80bc59211ffab64820e306e6eb13d2fc" + hash: "7efeb1565125f25252ce3f03dadc3bea" } Frame { msec: 2304 - hash: "80bc59211ffab64820e306e6eb13d2fc" + hash: "7efeb1565125f25252ce3f03dadc3bea" } Frame { msec: 2320 - hash: "80bc59211ffab64820e306e6eb13d2fc" + hash: "7efeb1565125f25252ce3f03dadc3bea" } Frame { msec: 2336 - hash: "80bc59211ffab64820e306e6eb13d2fc" + hash: "7efeb1565125f25252ce3f03dadc3bea" } Frame { msec: 2352 - hash: "7765c76dd2ef99e4d7286fcb3a172a07" + hash: "9086d24dff90f8c9e4543c6b14c99bf6" } Frame { msec: 2368 - hash: "7765c76dd2ef99e4d7286fcb3a172a07" + hash: "9086d24dff90f8c9e4543c6b14c99bf6" } Frame { msec: 2384 - hash: "7765c76dd2ef99e4d7286fcb3a172a07" + hash: "9086d24dff90f8c9e4543c6b14c99bf6" } Frame { msec: 2400 - hash: "7765c76dd2ef99e4d7286fcb3a172a07" + hash: "9086d24dff90f8c9e4543c6b14c99bf6" } Frame { msec: 2416 - hash: "7765c76dd2ef99e4d7286fcb3a172a07" + hash: "9086d24dff90f8c9e4543c6b14c99bf6" } Frame { msec: 2432 - hash: "8fedc4d5d4161922c1d9d50adcf67e4a" + hash: "15d8e99a0676e0a1588dfddc00ab0d16" } Frame { msec: 2448 - hash: "8fedc4d5d4161922c1d9d50adcf67e4a" + hash: "15d8e99a0676e0a1588dfddc00ab0d16" } Frame { msec: 2464 - hash: "8fedc4d5d4161922c1d9d50adcf67e4a" + hash: "15d8e99a0676e0a1588dfddc00ab0d16" } Frame { msec: 2480 - hash: "8fedc4d5d4161922c1d9d50adcf67e4a" + hash: "15d8e99a0676e0a1588dfddc00ab0d16" } Frame { msec: 2496 - hash: "4f26d7ab05e6d39a869be1259e33c739" + hash: "ecc25b88c29dc9d6c70df6e36a91f95c" } Frame { msec: 2512 - hash: "4f26d7ab05e6d39a869be1259e33c739" + hash: "ecc25b88c29dc9d6c70df6e36a91f95c" } Frame { msec: 2528 - hash: "4f26d7ab05e6d39a869be1259e33c739" + hash: "ecc25b88c29dc9d6c70df6e36a91f95c" } Frame { msec: 2544 - hash: "4f26d7ab05e6d39a869be1259e33c739" + hash: "ecc25b88c29dc9d6c70df6e36a91f95c" } Frame { msec: 2560 - hash: "d4ead42bcc2e283e513f1ab4f8a89f27" + hash: "905c81686d8d2ecdde513622c35c0ea6" } Frame { msec: 2576 - hash: "d4ead42bcc2e283e513f1ab4f8a89f27" + hash: "905c81686d8d2ecdde513622c35c0ea6" } Frame { msec: 2592 - hash: "d4ead42bcc2e283e513f1ab4f8a89f27" + hash: "905c81686d8d2ecdde513622c35c0ea6" } Frame { msec: 2608 - hash: "d4ead42bcc2e283e513f1ab4f8a89f27" + hash: "905c81686d8d2ecdde513622c35c0ea6" } Frame { msec: 2624 - hash: "d4ead42bcc2e283e513f1ab4f8a89f27" + hash: "905c81686d8d2ecdde513622c35c0ea6" } Frame { msec: 2640 - hash: "6d91b100f369381b24052e5a4466e24d" + hash: "537a2cf41a5e15220d2ca2218ac49a5a" } Frame { msec: 2656 - hash: "6d91b100f369381b24052e5a4466e24d" + hash: "537a2cf41a5e15220d2ca2218ac49a5a" } Frame { msec: 2672 - hash: "6d91b100f369381b24052e5a4466e24d" + hash: "537a2cf41a5e15220d2ca2218ac49a5a" } Frame { msec: 2688 - hash: "6d91b100f369381b24052e5a4466e24d" + hash: "537a2cf41a5e15220d2ca2218ac49a5a" } Frame { msec: 2704 - hash: "2d6082b41e3cfdc3be9c130311ac854a" + hash: "53325ce7d011eeb72369463721f15e87" } Frame { msec: 2720 - hash: "2d6082b41e3cfdc3be9c130311ac854a" + hash: "53325ce7d011eeb72369463721f15e87" } Frame { msec: 2736 - hash: "2d6082b41e3cfdc3be9c130311ac854a" + hash: "53325ce7d011eeb72369463721f15e87" } Frame { msec: 2752 - hash: "2d6082b41e3cfdc3be9c130311ac854a" + hash: "53325ce7d011eeb72369463721f15e87" } Frame { msec: 2768 - hash: "2d6082b41e3cfdc3be9c130311ac854a" + hash: "53325ce7d011eeb72369463721f15e87" } Frame { msec: 2784 - hash: "78732b58812f202768fa224aefce187d" + hash: "9ad2565cc95647a83d3ce3acc106485a" } Frame { msec: 2800 - hash: "78732b58812f202768fa224aefce187d" + hash: "9ad2565cc95647a83d3ce3acc106485a" } Frame { msec: 2816 - hash: "78732b58812f202768fa224aefce187d" + hash: "9ad2565cc95647a83d3ce3acc106485a" } Frame { msec: 2832 - hash: "78732b58812f202768fa224aefce187d" + hash: "9ad2565cc95647a83d3ce3acc106485a" } Frame { msec: 2848 - hash: "54d728d677cf3a07c4da7727a75e6c59" + hash: "de7b66581e0743385a984f76c993b01b" } Frame { msec: 2864 - hash: "54d728d677cf3a07c4da7727a75e6c59" + hash: "de7b66581e0743385a984f76c993b01b" } Frame { msec: 2880 - hash: "54d728d677cf3a07c4da7727a75e6c59" + hash: "de7b66581e0743385a984f76c993b01b" } Frame { msec: 2896 @@ -738,239 +738,239 @@ VisualTest { } Frame { msec: 2912 - hash: "54d728d677cf3a07c4da7727a75e6c59" + hash: "de7b66581e0743385a984f76c993b01b" } Frame { msec: 2928 - hash: "45ec3534077f6fa66d7710010cceb332" + hash: "f66852df1738e4fe29ac1f6938d814c2" } Frame { msec: 2944 - hash: "45ec3534077f6fa66d7710010cceb332" + hash: "f66852df1738e4fe29ac1f6938d814c2" } Frame { msec: 2960 - hash: "45ec3534077f6fa66d7710010cceb332" + hash: "f66852df1738e4fe29ac1f6938d814c2" } Frame { msec: 2976 - hash: "45ec3534077f6fa66d7710010cceb332" + hash: "f66852df1738e4fe29ac1f6938d814c2" } Frame { msec: 2992 - hash: "ef909728fa59292ffed1d047835439d6" + hash: "cf6dde6c590879a9e905a0f559f089ca" } Frame { msec: 3008 - hash: "ef909728fa59292ffed1d047835439d6" + hash: "cf6dde6c590879a9e905a0f559f089ca" } Frame { msec: 3024 - hash: "ef909728fa59292ffed1d047835439d6" + hash: "cf6dde6c590879a9e905a0f559f089ca" } Frame { msec: 3040 - hash: "ef909728fa59292ffed1d047835439d6" + hash: "cf6dde6c590879a9e905a0f559f089ca" } Frame { msec: 3056 - hash: "ef909728fa59292ffed1d047835439d6" + hash: "cf6dde6c590879a9e905a0f559f089ca" } Frame { msec: 3072 - hash: "454741313d087e5d13ddeaf02663746f" + hash: "bd63e4df280010ed9f67fc7976b86cb5" } Frame { msec: 3088 - hash: "454741313d087e5d13ddeaf02663746f" + hash: "bd63e4df280010ed9f67fc7976b86cb5" } Frame { msec: 3104 - hash: "454741313d087e5d13ddeaf02663746f" + hash: "bd63e4df280010ed9f67fc7976b86cb5" } Frame { msec: 3120 - hash: "454741313d087e5d13ddeaf02663746f" + hash: "bd63e4df280010ed9f67fc7976b86cb5" } Frame { msec: 3136 - hash: "454741313d087e5d13ddeaf02663746f" + hash: "bd63e4df280010ed9f67fc7976b86cb5" } Frame { msec: 3152 - hash: "02928f0a8f8f1011028114487b8dccf8" + hash: "065d3d370faa58aed9899cae0f86f032" } Frame { msec: 3168 - hash: "02928f0a8f8f1011028114487b8dccf8" + hash: "065d3d370faa58aed9899cae0f86f032" } Frame { msec: 3184 - hash: "02928f0a8f8f1011028114487b8dccf8" + hash: "065d3d370faa58aed9899cae0f86f032" } Frame { msec: 3200 - hash: "02928f0a8f8f1011028114487b8dccf8" + hash: "065d3d370faa58aed9899cae0f86f032" } Frame { msec: 3216 - hash: "e0fca67bb095c9891831cd9355b4880d" + hash: "b5623d05c578a6f09bcfacd4d3163b09" } Frame { msec: 3232 - hash: "e0fca67bb095c9891831cd9355b4880d" + hash: "b5623d05c578a6f09bcfacd4d3163b09" } Frame { msec: 3248 - hash: "e0fca67bb095c9891831cd9355b4880d" + hash: "b5623d05c578a6f09bcfacd4d3163b09" } Frame { msec: 3264 - hash: "e0fca67bb095c9891831cd9355b4880d" + hash: "b5623d05c578a6f09bcfacd4d3163b09" } Frame { msec: 3280 - hash: "f5ae54931d953fc95cfbdbde1993bebe" + hash: "83c70529d05911ea26a5cbbab5aa20f2" } Frame { msec: 3296 - hash: "f5ae54931d953fc95cfbdbde1993bebe" + hash: "83c70529d05911ea26a5cbbab5aa20f2" } Frame { msec: 3312 - hash: "f5ae54931d953fc95cfbdbde1993bebe" + hash: "83c70529d05911ea26a5cbbab5aa20f2" } Frame { msec: 3328 - hash: "f5ae54931d953fc95cfbdbde1993bebe" + hash: "83c70529d05911ea26a5cbbab5aa20f2" } Frame { msec: 3344 - hash: "f5ae54931d953fc95cfbdbde1993bebe" + hash: "83c70529d05911ea26a5cbbab5aa20f2" } Frame { msec: 3360 - hash: "9afb0b2a185e2f825e9fad1c3644f6cb" + hash: "17927c706da1bc222ba5462af66a9d2f" } Frame { msec: 3376 - hash: "9afb0b2a185e2f825e9fad1c3644f6cb" + hash: "17927c706da1bc222ba5462af66a9d2f" } Frame { msec: 3392 - hash: "9afb0b2a185e2f825e9fad1c3644f6cb" + hash: "17927c706da1bc222ba5462af66a9d2f" } Frame { msec: 3408 - hash: "9afb0b2a185e2f825e9fad1c3644f6cb" + hash: "17927c706da1bc222ba5462af66a9d2f" } Frame { msec: 3424 - hash: "9afb0b2a185e2f825e9fad1c3644f6cb" + hash: "17927c706da1bc222ba5462af66a9d2f" } Frame { msec: 3440 - hash: "f3f5a81d3b5f644a00cea6203f38994c" + hash: "f49627ba8d3e257e0e94404da24d12dc" } Frame { msec: 3456 - hash: "f3f5a81d3b5f644a00cea6203f38994c" + hash: "f49627ba8d3e257e0e94404da24d12dc" } Frame { msec: 3472 - hash: "f3f5a81d3b5f644a00cea6203f38994c" + hash: "f49627ba8d3e257e0e94404da24d12dc" } Frame { msec: 3488 - hash: "f3f5a81d3b5f644a00cea6203f38994c" + hash: "f49627ba8d3e257e0e94404da24d12dc" } Frame { msec: 3504 - hash: "bd9884712fd5afe67a3622c809bf4e76" + hash: "37a0c9dc20431c8398409d4522a0fdd3" } Frame { msec: 3520 - hash: "bd9884712fd5afe67a3622c809bf4e76" + hash: "37a0c9dc20431c8398409d4522a0fdd3" } Frame { msec: 3536 - hash: "bd9884712fd5afe67a3622c809bf4e76" + hash: "37a0c9dc20431c8398409d4522a0fdd3" } Frame { msec: 3552 - hash: "bd9884712fd5afe67a3622c809bf4e76" + hash: "37a0c9dc20431c8398409d4522a0fdd3" } Frame { msec: 3568 - hash: "c9324386954380a72ef4084d13e623b5" + hash: "67bebfe9fb5ac745f40040ff8083e999" } Frame { msec: 3584 - hash: "c9324386954380a72ef4084d13e623b5" + hash: "67bebfe9fb5ac745f40040ff8083e999" } Frame { msec: 3600 - hash: "c9324386954380a72ef4084d13e623b5" + hash: "67bebfe9fb5ac745f40040ff8083e999" } Frame { msec: 3616 - hash: "c9324386954380a72ef4084d13e623b5" + hash: "67bebfe9fb5ac745f40040ff8083e999" } Frame { msec: 3632 - hash: "c9324386954380a72ef4084d13e623b5" + hash: "67bebfe9fb5ac745f40040ff8083e999" } Frame { msec: 3648 - hash: "6d05fd8e8690e44293af1809f359aa72" + hash: "84f8b27b83b566c99e65ea39b29772c1" } Frame { msec: 3664 - hash: "6d05fd8e8690e44293af1809f359aa72" + hash: "84f8b27b83b566c99e65ea39b29772c1" } Frame { msec: 3680 - hash: "6d05fd8e8690e44293af1809f359aa72" + hash: "84f8b27b83b566c99e65ea39b29772c1" } Frame { msec: 3696 - hash: "6d05fd8e8690e44293af1809f359aa72" + hash: "84f8b27b83b566c99e65ea39b29772c1" } Frame { msec: 3712 - hash: "6d05fd8e8690e44293af1809f359aa72" + hash: "84f8b27b83b566c99e65ea39b29772c1" } Frame { msec: 3728 - hash: "2d7350a79f5a68d3e3dfc994c6e002ed" + hash: "c6ba663536f19b9f291ef35b7a70e490" } Frame { msec: 3744 - hash: "2d7350a79f5a68d3e3dfc994c6e002ed" + hash: "c6ba663536f19b9f291ef35b7a70e490" } Frame { msec: 3760 - hash: "2d7350a79f5a68d3e3dfc994c6e002ed" + hash: "c6ba663536f19b9f291ef35b7a70e490" } Frame { msec: 3776 - hash: "2d7350a79f5a68d3e3dfc994c6e002ed" + hash: "c6ba663536f19b9f291ef35b7a70e490" } Frame { msec: 3792 - hash: "edb5d50f23a293a7791122fc159aaaa0" + hash: "65f22784730aa27b2628d015a1cc4abe" } Frame { msec: 3808 - hash: "edb5d50f23a293a7791122fc159aaaa0" + hash: "65f22784730aa27b2628d015a1cc4abe" } Frame { msec: 3824 - hash: "edb5d50f23a293a7791122fc159aaaa0" + hash: "65f22784730aa27b2628d015a1cc4abe" } Frame { msec: 3840 - hash: "edb5d50f23a293a7791122fc159aaaa0" + hash: "65f22784730aa27b2628d015a1cc4abe" } Frame { msec: 3856 @@ -978,14 +978,14 @@ VisualTest { } Frame { msec: 3872 - hash: "a863480fec9abf817752c5eb62a2ddf4" + hash: "b11a511d80de87329501b9c11aebbc58" } Frame { msec: 3888 - hash: "a863480fec9abf817752c5eb62a2ddf4" + hash: "b11a511d80de87329501b9c11aebbc58" } Frame { msec: 3904 - hash: "a863480fec9abf817752c5eb62a2ddf4" + hash: "b11a511d80de87329501b9c11aebbc58" } } diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/multilength.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/multilength.0.png Binary files differindex e1d3b75..3861b4f 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/multilength.0.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/multilength.0.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/multilength.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/multilength.1.png Binary files differindex 8013dc9..ce166f1 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/multilength.1.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/multilength.1.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/multilength.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/multilength.qml index 77a7b2f..84778ac 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/multilength.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/multilength.qml @@ -10,239 +10,239 @@ VisualTest { } Frame { msec: 32 - hash: "ef2b4cc93e5bf5e64d3338921fe36336" + hash: "58d757783e6d57c5ac2596219dfd37be" } Frame { msec: 48 - hash: "3ddbd1a53a36b0f8b36d87e742f3b1bd" + hash: "e76b3b98f447b706c59ba0c175e1829d" } Frame { msec: 64 - hash: "f7acfdaf29a3d7bd179b30db784ca01b" + hash: "f0dbb0b55d1d27bf7c0260db5b5782a2" } Frame { msec: 80 - hash: "b5277d02ed63180e845c60e1dd4da7d0" + hash: "00845517336befd7ead0141312ea38ce" } Frame { msec: 96 - hash: "a7964577d77943d5a62c02ea1e689eb7" + hash: "99723ae092407e5291ed3a13f5a7be61" } Frame { msec: 112 - hash: "fc597a07209bfea49227ec491b033af1" + hash: "2d531f1dd1545a4e2f8ca4c65338e0c3" } Frame { msec: 128 - hash: "429a7dd5a23a5012f1985bcddd27ba0c" + hash: "9f273323f48a70be279302b194203a36" } Frame { msec: 144 - hash: "fbf845e137e0b389babdcd71a95c3060" + hash: "7de4bd5f82369953c2a4a990ddaf4339" } Frame { msec: 160 - hash: "1d1272df3a53cb9860d23be3343a143e" + hash: "96c5f74c01723a15a57db161604bc245" } Frame { msec: 176 - hash: "cef05f6564b21fd2cbd02f6def604c0b" + hash: "df2eac6300919044cfe2a2f591c3bd99" } Frame { msec: 192 - hash: "be0ca54bc7aa23c2b9c56e3a0444197a" + hash: "a153904cdfa0be697a25bebc4ce1fbca" } Frame { msec: 208 - hash: "5372a7052d10b8c6c2204efdc88c2f48" + hash: "de243731b92ac1cac05e194aed0acd1e" } Frame { msec: 224 - hash: "43b775c558843c1334e86ca4fcf07ae2" + hash: "f6ccc0f127bfc6212885c3c6470639ed" } Frame { msec: 240 - hash: "10daf71511454ef4db3692a19ecbcbaa" + hash: "a2d56227aebedb9590a1124e44fe8e84" } Frame { msec: 256 - hash: "5c545ecb0ddfaa5d6cde266be6fae35c" + hash: "5f8c0a42a231580dcfff6a534e77bef8" } Frame { msec: 272 - hash: "1a3c05b189c3adf87710eeb03296aec2" + hash: "e631663ac692ab097cb28095b45e8563" } Frame { msec: 288 - hash: "de2c6f4d3bf4d245e45e47a743808f5d" + hash: "2a03f6ba3c67a9e9732cc1f5cdc42c23" } Frame { msec: 304 - hash: "7c71dcbd8e2be19ac2d090ab3e012a62" + hash: "26b85080d624b232e5209aa082fc11b1" } Frame { msec: 320 - hash: "3bd42257fe4a5d941a8755e66db94870" + hash: "1c027f4a0114bb9050a3a8d9de2b8a56" } Frame { msec: 336 - hash: "d52f57a1f289d2c697fd1db2086a4df3" + hash: "788e6ad3cb5f6e120e40fd3dc6ac8483" } Frame { msec: 352 - hash: "5d9e22ca6b6f8e4805a49fcf9c6a4dd6" + hash: "7e1b0fb71528dfa17a87950c0ff86111" } Frame { msec: 368 - hash: "cbafada44b434ac7fe64fdebef7a816e" + hash: "e1878e6e8ba14d8945e1f71ac8d42c1e" } Frame { msec: 384 - hash: "4ac900c005cfedb9e3367a4612334cc1" + hash: "556f42297eb1e57d6a8af0946651a75e" } Frame { msec: 400 - hash: "3dbe30edac497ca316bf39e55ff9580a" + hash: "73df08e7e3391b339cea9f5f082fd83a" } Frame { msec: 416 - hash: "e892891c063172d513f4f8c0a0b2644f" + hash: "de3bd8a12c2a448738ce77036b97bda7" } Frame { msec: 432 - hash: "7c214a442c8f37d22f74343fdb7f7faa" + hash: "0ab187aa7a478dbf005f35416a93c456" } Frame { msec: 448 - hash: "c4461c6c26eb9689e640149b7755bf14" + hash: "e5baf64ccafa6a4d2bf74aacf52019c6" } Frame { msec: 464 - hash: "e7be611f007716a80698558d0600f5b6" + hash: "0ed2ee4a773ade712ef207549006aa7b" } Frame { msec: 480 - hash: "5a3abaa7b36fcd7e2279318671597386" + hash: "b23dd49bdfe8fb155e2055262e6a1478" } Frame { msec: 496 - hash: "2dba1fcba5bdce948fa56ffc02a7f80c" + hash: "871f82636a03d6fa8cbfb580038bd0b7" } Frame { msec: 512 - hash: "55043bcce83e4f8899b1a692fe30fa67" + hash: "463cdc2cbde034d7d7a5061338b319c7" } Frame { msec: 528 - hash: "f92df1fb28a7da39ed907dd2bc177ab8" + hash: "22ff8e25136877fd6f5dce1b01e65c08" } Frame { msec: 544 - hash: "7dcf90cd5f81999359ed389c7050d934" + hash: "97d4e49622d877e9e1e0102786e1ee55" } Frame { msec: 560 - hash: "021014366809103b76bd5d472c43b062" + hash: "ebf5304185abe4bc33be44c3df09a93a" } Frame { msec: 576 - hash: "fff5b2c8d63083d132c0f106fad84fa1" + hash: "307887d9973e807c52b2143cdfe438ad" } Frame { msec: 592 - hash: "ab3a6a6c646d31be97884484a6647330" + hash: "d89547539741f387fdd6aa80ef239fbd" } Frame { msec: 608 - hash: "d46a168f89d94a32496b75ee5d3794e4" + hash: "b818215b4cdd6e811057f1a0f5eb1a5a" } Frame { msec: 624 - hash: "f7b62e86595a4d2c7f5a2cd52e0938b9" + hash: "84f7e523c0f21236ff8aad1333470d11" } Frame { msec: 640 - hash: "df95a29a101889c50537cfb1b027f9a6" + hash: "7f974663c7add6d10ebdd401794e087a" } Frame { msec: 656 - hash: "4c6691ef37222260dce72868ae809d68" + hash: "4c824dc01e8fead2706608ca68293d11" } Frame { msec: 672 - hash: "ad816534dcf446a1456894ff2b1afa33" + hash: "86b0f617eb3bfff944c3b670b3b51c71" } Frame { msec: 688 - hash: "bfa9f9f833f38aedf766e061f3a18c48" + hash: "86c5660c22003099cc4121381c11de85" } Frame { msec: 704 - hash: "f4a6786e9db58cf3fd3f3b896d3cf84f" + hash: "3c2bd08ea17aaa920949239f06b255cf" } Frame { msec: 720 - hash: "e51e8b766e5d4a0f061dc6885fcf8eb3" + hash: "2380278cc065a3ac5355127d9873796c" } Frame { msec: 736 - hash: "eab6d261429c36c4e37005f37b7823d5" + hash: "e5d8624e841476926b3e2a5ebca8c65f" } Frame { msec: 752 - hash: "3cc5db209a98daef06127bae53b1929d" + hash: "eab70f5005a6b39e3ead6e4452df1a54" } Frame { msec: 768 - hash: "230cd6e6ca18a921a21379dd85e24822" + hash: "46acef023d154bad3f91e0267996421b" } Frame { msec: 784 - hash: "e3a877e8f01bf17fe6ea8b9fbb780f14" + hash: "26ba9f30a4bfd72c9b6dae2a25660ea9" } Frame { msec: 800 - hash: "a19f504a81409dea775481f21f992ba6" + hash: "9fabdd5cf1190fb34bdc7834eba01cd3" } Frame { msec: 816 - hash: "e77cc3ab14551638e704a1493189d5d1" + hash: "b1e7af47d4ee706374365fdd4b4d52be" } Frame { msec: 832 - hash: "613bdf9d32358ab0db310ae1e2246d52" + hash: "86fa2e142e75d9d2a074a5376992f139" } Frame { msec: 848 - hash: "d4fab0193f567cce4ad1e1cf6b156ce5" + hash: "a3dea2bf8f84743d35070e82ec585c9a" } Frame { msec: 864 - hash: "03ce3083411d10b14ac0bb85b22bfbd1" + hash: "ab649fbbe0ca508812de9839d14b3f8c" } Frame { msec: 880 - hash: "4be10fb14abf82705d8071cf75956ece" + hash: "08f8a334e121d4edb0ca1617353bfebc" } Frame { msec: 896 - hash: "4c1f150fb5ba1194ad198eb32f705af6" + hash: "bb7997c1e18b90cfaad4c3e4ec44356e" } Frame { msec: 912 - hash: "5ddfd98c8a49eefe08ae33d0c0ea52ff" + hash: "31a7e5d71c28eebfcd29e9ea4950ad17" } Frame { msec: 928 - hash: "f2018d16f38e113c9477c19431e3d1e4" + hash: "2b759276e03c2884bff7ed863c032dfc" } Frame { msec: 944 - hash: "9fe6406d65978dba74716f1ba02bdf76" + hash: "aa0868f006097a435c46368ea9e3ba36" } Frame { msec: 960 - hash: "265d92edca113f465e624079c266b213" + hash: "6454753699c21589d2523a83da0aaa34" } Frame { msec: 976 @@ -250,54 +250,54 @@ VisualTest { } Frame { msec: 992 - hash: "6beb60f7645be5f1d07449610b5e13b0" + hash: "ac26abff68fbc1cf89dc5efc4a714a04" } Frame { msec: 1008 - hash: "55c34cb290732a1fa94b5037477fd882" + hash: "d3f9dc8cb653d996fb57652f85abcbc1" } Frame { msec: 1024 - hash: "4d6ed8044e3ac5da61cf61f4d08c5a19" + hash: "002a94f067eef532f63b6ef916977c2c" } Frame { msec: 1040 - hash: "83657cfa447060a01d5fbdb890ad3fb9" + hash: "f7935d01ee9b497034cc1d8f007a0fdf" } Frame { msec: 1056 - hash: "b04b6cb7e5e464ecee15a2c9803a857f" + hash: "4a1bfdcc85e5444c1bd836399e86ee05" } Frame { msec: 1072 - hash: "ea4f1707e49527f6cae0a3df1b75137b" + hash: "1b86514f3c85a8438ef183cc4772e997" } Frame { msec: 1088 - hash: "ae4893aca919be2d89f1107185b5fe9a" + hash: "7bf4c1ca946288e9d1a7ad055d8cacaa" } Frame { msec: 1104 - hash: "d991c469947a94ffcfb63716226fa912" + hash: "b3a00861967157786a80c80030d5495b" } Frame { msec: 1120 - hash: "df63c1dba0399d1fe5e7b9c9c794b598" + hash: "b9c6195d3336d7519cc72b16e75d00f6" } Frame { msec: 1136 - hash: "305d263f68b4ccd78bffccd887870f97" + hash: "6dba6d030a5ff6a92a57f0bdcf0fe781" } Frame { msec: 1152 - hash: "f4d1f7245b519d623defdc12e76285d2" + hash: "cc97a2721f4339094819c8b7aec6d74c" } Frame { msec: 1168 - hash: "5a47e6498ddf8a02cb1df7a3510bac37" + hash: "190f67abce51f58fdd1591651633d67e" } Frame { msec: 1184 - hash: "358b9b6be7f8379815d8ee828eed3e43" + hash: "b255f75cfc4918663b8bd47c887cfb3c" } } diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/plaintext.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/plaintext.0.png Binary files differindex 591c1ef..cfa61a9 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/plaintext.0.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/plaintext.0.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/plaintext2.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/plaintext2.0.png Binary files differindex dc90e0d..be676c0 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/plaintext2.0.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/plaintext2.0.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/plaintext3.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/plaintext3.0.png Binary files differindex c787029..df2fe2f 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/plaintext3.0.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/plaintext3.0.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/richtext.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/richtext.0.png Binary files differindex fdd64ac..76e5b9f 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/richtext.0.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/richtext.0.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/richtext2.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/richtext2.0.png Binary files differindex 1286e54..bb65ade 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/richtext2.0.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/richtext2.0.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.1.png Binary files differindex 05dd690..060be22 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.1.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.1.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.2.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.2.png Binary files differindex eb74cc5..d373aef 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.2.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.2.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.3.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.3.png Binary files differindex 3aed06c..5dad108 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.3.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.3.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.qml index 2de4a10..6081aaf 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.qml @@ -110,23 +110,23 @@ VisualTest { } Frame { msec: 368 - hash: "bc06530170cf26690a09ed9f6c4014fd" + hash: "593867b082681c362d7dffda12615284" } Frame { msec: 384 - hash: "bc06530170cf26690a09ed9f6c4014fd" + hash: "593867b082681c362d7dffda12615284" } Frame { msec: 400 - hash: "bc06530170cf26690a09ed9f6c4014fd" + hash: "593867b082681c362d7dffda12615284" } Frame { msec: 416 - hash: "bc06530170cf26690a09ed9f6c4014fd" + hash: "593867b082681c362d7dffda12615284" } Frame { msec: 432 - hash: "bc06530170cf26690a09ed9f6c4014fd" + hash: "593867b082681c362d7dffda12615284" } Key { type: 7 @@ -138,27 +138,27 @@ VisualTest { } Frame { msec: 448 - hash: "bc06530170cf26690a09ed9f6c4014fd" + hash: "593867b082681c362d7dffda12615284" } Frame { msec: 464 - hash: "bc06530170cf26690a09ed9f6c4014fd" + hash: "593867b082681c362d7dffda12615284" } Frame { msec: 480 - hash: "bc06530170cf26690a09ed9f6c4014fd" + hash: "593867b082681c362d7dffda12615284" } Frame { msec: 496 - hash: "bc06530170cf26690a09ed9f6c4014fd" + hash: "593867b082681c362d7dffda12615284" } Frame { msec: 512 - hash: "bc06530170cf26690a09ed9f6c4014fd" + hash: "593867b082681c362d7dffda12615284" } Frame { msec: 528 - hash: "bc06530170cf26690a09ed9f6c4014fd" + hash: "593867b082681c362d7dffda12615284" } Key { type: 7 @@ -170,43 +170,43 @@ VisualTest { } Frame { msec: 544 - hash: "bc06530170cf26690a09ed9f6c4014fd" + hash: "593867b082681c362d7dffda12615284" } Frame { msec: 560 - hash: "bc06530170cf26690a09ed9f6c4014fd" + hash: "593867b082681c362d7dffda12615284" } Frame { msec: 576 - hash: "bc06530170cf26690a09ed9f6c4014fd" + hash: "593867b082681c362d7dffda12615284" } Frame { msec: 592 - hash: "bc06530170cf26690a09ed9f6c4014fd" + hash: "593867b082681c362d7dffda12615284" } Frame { msec: 608 - hash: "bc06530170cf26690a09ed9f6c4014fd" + hash: "593867b082681c362d7dffda12615284" } Frame { msec: 624 - hash: "bc06530170cf26690a09ed9f6c4014fd" + hash: "593867b082681c362d7dffda12615284" } Frame { msec: 640 - hash: "bc06530170cf26690a09ed9f6c4014fd" + hash: "593867b082681c362d7dffda12615284" } Frame { msec: 656 - hash: "bc06530170cf26690a09ed9f6c4014fd" + hash: "593867b082681c362d7dffda12615284" } Frame { msec: 672 - hash: "bc06530170cf26690a09ed9f6c4014fd" + hash: "593867b082681c362d7dffda12615284" } Frame { msec: 688 - hash: "bc06530170cf26690a09ed9f6c4014fd" + hash: "593867b082681c362d7dffda12615284" } Key { type: 6 @@ -218,23 +218,23 @@ VisualTest { } Frame { msec: 704 - hash: "8c64a986ce7bd19dcc88785309456f4e" + hash: "8d4a4baca932c318fba437b05962a635" } Frame { msec: 720 - hash: "8c64a986ce7bd19dcc88785309456f4e" + hash: "8d4a4baca932c318fba437b05962a635" } Frame { msec: 736 - hash: "8c64a986ce7bd19dcc88785309456f4e" + hash: "8d4a4baca932c318fba437b05962a635" } Frame { msec: 752 - hash: "8c64a986ce7bd19dcc88785309456f4e" + hash: "8d4a4baca932c318fba437b05962a635" } Frame { msec: 768 - hash: "8c64a986ce7bd19dcc88785309456f4e" + hash: "8d4a4baca932c318fba437b05962a635" } Key { type: 7 @@ -246,23 +246,23 @@ VisualTest { } Frame { msec: 784 - hash: "8c64a986ce7bd19dcc88785309456f4e" + hash: "8d4a4baca932c318fba437b05962a635" } Frame { msec: 800 - hash: "8c64a986ce7bd19dcc88785309456f4e" + hash: "8d4a4baca932c318fba437b05962a635" } Frame { msec: 816 - hash: "8c64a986ce7bd19dcc88785309456f4e" + hash: "8d4a4baca932c318fba437b05962a635" } Frame { msec: 832 - hash: "8c64a986ce7bd19dcc88785309456f4e" + hash: "8d4a4baca932c318fba437b05962a635" } Frame { msec: 848 - hash: "8c64a986ce7bd19dcc88785309456f4e" + hash: "8d4a4baca932c318fba437b05962a635" } Key { type: 6 @@ -274,15 +274,15 @@ VisualTest { } Frame { msec: 864 - hash: "4cfca8edcb96b1d9986db4ee491bf857" + hash: "b2698dba3a5ebe80e26f273b32857506" } Frame { msec: 880 - hash: "4cfca8edcb96b1d9986db4ee491bf857" + hash: "b2698dba3a5ebe80e26f273b32857506" } Frame { msec: 896 - hash: "4cfca8edcb96b1d9986db4ee491bf857" + hash: "b2698dba3a5ebe80e26f273b32857506" } Key { type: 7 @@ -294,19 +294,19 @@ VisualTest { } Frame { msec: 912 - hash: "4cfca8edcb96b1d9986db4ee491bf857" + hash: "b2698dba3a5ebe80e26f273b32857506" } Frame { msec: 928 - hash: "4cfca8edcb96b1d9986db4ee491bf857" + hash: "b2698dba3a5ebe80e26f273b32857506" } Frame { msec: 944 - hash: "4cfca8edcb96b1d9986db4ee491bf857" + hash: "b2698dba3a5ebe80e26f273b32857506" } Frame { msec: 960 - hash: "4cfca8edcb96b1d9986db4ee491bf857" + hash: "b2698dba3a5ebe80e26f273b32857506" } Frame { msec: 976 @@ -322,19 +322,19 @@ VisualTest { } Frame { msec: 992 - hash: "3d25316ea23ace5a88dbe8765b743eb3" + hash: "3ea06a90d633d5e9fe5a11cc4ed67764" } Frame { msec: 1008 - hash: "3d25316ea23ace5a88dbe8765b743eb3" + hash: "3ea06a90d633d5e9fe5a11cc4ed67764" } Frame { msec: 1024 - hash: "3d25316ea23ace5a88dbe8765b743eb3" + hash: "3ea06a90d633d5e9fe5a11cc4ed67764" } Frame { msec: 1040 - hash: "3d25316ea23ace5a88dbe8765b743eb3" + hash: "3ea06a90d633d5e9fe5a11cc4ed67764" } Key { type: 7 @@ -346,51 +346,51 @@ VisualTest { } Frame { msec: 1056 - hash: "3d25316ea23ace5a88dbe8765b743eb3" + hash: "3ea06a90d633d5e9fe5a11cc4ed67764" } Frame { msec: 1072 - hash: "3d25316ea23ace5a88dbe8765b743eb3" + hash: "3ea06a90d633d5e9fe5a11cc4ed67764" } Frame { msec: 1088 - hash: "3d25316ea23ace5a88dbe8765b743eb3" + hash: "3ea06a90d633d5e9fe5a11cc4ed67764" } Frame { msec: 1104 - hash: "3d25316ea23ace5a88dbe8765b743eb3" + hash: "3ea06a90d633d5e9fe5a11cc4ed67764" } Frame { msec: 1120 - hash: "3d25316ea23ace5a88dbe8765b743eb3" + hash: "3ea06a90d633d5e9fe5a11cc4ed67764" } Frame { msec: 1136 - hash: "3d25316ea23ace5a88dbe8765b743eb3" + hash: "3ea06a90d633d5e9fe5a11cc4ed67764" } Frame { msec: 1152 - hash: "3d25316ea23ace5a88dbe8765b743eb3" + hash: "3ea06a90d633d5e9fe5a11cc4ed67764" } Frame { msec: 1168 - hash: "3d25316ea23ace5a88dbe8765b743eb3" + hash: "3ea06a90d633d5e9fe5a11cc4ed67764" } Frame { msec: 1184 - hash: "3d25316ea23ace5a88dbe8765b743eb3" + hash: "3ea06a90d633d5e9fe5a11cc4ed67764" } Frame { msec: 1200 - hash: "3d25316ea23ace5a88dbe8765b743eb3" + hash: "3ea06a90d633d5e9fe5a11cc4ed67764" } Frame { msec: 1216 - hash: "3d25316ea23ace5a88dbe8765b743eb3" + hash: "3ea06a90d633d5e9fe5a11cc4ed67764" } Frame { msec: 1232 - hash: "3d25316ea23ace5a88dbe8765b743eb3" + hash: "3ea06a90d633d5e9fe5a11cc4ed67764" } Key { type: 6 @@ -402,15 +402,15 @@ VisualTest { } Frame { msec: 1248 - hash: "fea82a32ec46a88027cc9b0c00aa0aba" + hash: "a190bbf59ec807391077b9d1183f72b5" } Frame { msec: 1264 - hash: "fea82a32ec46a88027cc9b0c00aa0aba" + hash: "a190bbf59ec807391077b9d1183f72b5" } Frame { msec: 1280 - hash: "fea82a32ec46a88027cc9b0c00aa0aba" + hash: "a190bbf59ec807391077b9d1183f72b5" } Key { type: 7 @@ -422,15 +422,15 @@ VisualTest { } Frame { msec: 1296 - hash: "fea82a32ec46a88027cc9b0c00aa0aba" + hash: "a190bbf59ec807391077b9d1183f72b5" } Frame { msec: 1312 - hash: "fea82a32ec46a88027cc9b0c00aa0aba" + hash: "a190bbf59ec807391077b9d1183f72b5" } Frame { msec: 1328 - hash: "fea82a32ec46a88027cc9b0c00aa0aba" + hash: "a190bbf59ec807391077b9d1183f72b5" } Key { type: 6 @@ -442,39 +442,39 @@ VisualTest { } Frame { msec: 1344 - hash: "fffa6f462ea15fe3bdbf2c199881fce4" + hash: "f171a98a3a726b517ad4b401a0720ba2" } Frame { msec: 1360 - hash: "fffa6f462ea15fe3bdbf2c199881fce4" + hash: "f171a98a3a726b517ad4b401a0720ba2" } Frame { msec: 1376 - hash: "fffa6f462ea15fe3bdbf2c199881fce4" + hash: "f171a98a3a726b517ad4b401a0720ba2" } Frame { msec: 1392 - hash: "fffa6f462ea15fe3bdbf2c199881fce4" + hash: "f171a98a3a726b517ad4b401a0720ba2" } Frame { msec: 1408 - hash: "fffa6f462ea15fe3bdbf2c199881fce4" + hash: "f171a98a3a726b517ad4b401a0720ba2" } Frame { msec: 1424 - hash: "fffa6f462ea15fe3bdbf2c199881fce4" + hash: "f171a98a3a726b517ad4b401a0720ba2" } Frame { msec: 1440 - hash: "fffa6f462ea15fe3bdbf2c199881fce4" + hash: "f171a98a3a726b517ad4b401a0720ba2" } Frame { msec: 1456 - hash: "fffa6f462ea15fe3bdbf2c199881fce4" + hash: "f171a98a3a726b517ad4b401a0720ba2" } Frame { msec: 1472 - hash: "fffa6f462ea15fe3bdbf2c199881fce4" + hash: "f171a98a3a726b517ad4b401a0720ba2" } Key { type: 7 @@ -486,7 +486,7 @@ VisualTest { } Frame { msec: 1488 - hash: "fffa6f462ea15fe3bdbf2c199881fce4" + hash: "f171a98a3a726b517ad4b401a0720ba2" } Key { type: 6 @@ -498,19 +498,19 @@ VisualTest { } Frame { msec: 1504 - hash: "d874584748e4aa14fd71730aa36d676c" + hash: "e7199e4284be9dea34caff7bde0f6303" } Frame { msec: 1520 - hash: "d874584748e4aa14fd71730aa36d676c" + hash: "e7199e4284be9dea34caff7bde0f6303" } Frame { msec: 1536 - hash: "d874584748e4aa14fd71730aa36d676c" + hash: "e7199e4284be9dea34caff7bde0f6303" } Frame { msec: 1552 - hash: "d874584748e4aa14fd71730aa36d676c" + hash: "e7199e4284be9dea34caff7bde0f6303" } Key { type: 7 @@ -522,27 +522,27 @@ VisualTest { } Frame { msec: 1568 - hash: "d874584748e4aa14fd71730aa36d676c" + hash: "e7199e4284be9dea34caff7bde0f6303" } Frame { msec: 1584 - hash: "d874584748e4aa14fd71730aa36d676c" + hash: "e7199e4284be9dea34caff7bde0f6303" } Frame { msec: 1600 - hash: "d874584748e4aa14fd71730aa36d676c" + hash: "e7199e4284be9dea34caff7bde0f6303" } Frame { msec: 1616 - hash: "d874584748e4aa14fd71730aa36d676c" + hash: "e7199e4284be9dea34caff7bde0f6303" } Frame { msec: 1632 - hash: "d874584748e4aa14fd71730aa36d676c" + hash: "e7199e4284be9dea34caff7bde0f6303" } Frame { msec: 1648 - hash: "d874584748e4aa14fd71730aa36d676c" + hash: "e7199e4284be9dea34caff7bde0f6303" } Key { type: 6 @@ -554,23 +554,23 @@ VisualTest { } Frame { msec: 1664 - hash: "5eac6452c3c01de25633be412b2c9fd6" + hash: "1d9d3c6435f2fa06bda16ef4a2ff238f" } Frame { msec: 1680 - hash: "5eac6452c3c01de25633be412b2c9fd6" + hash: "1d9d3c6435f2fa06bda16ef4a2ff238f" } Frame { msec: 1696 - hash: "5eac6452c3c01de25633be412b2c9fd6" + hash: "1d9d3c6435f2fa06bda16ef4a2ff238f" } Frame { msec: 1712 - hash: "5eac6452c3c01de25633be412b2c9fd6" + hash: "1d9d3c6435f2fa06bda16ef4a2ff238f" } Frame { msec: 1728 - hash: "5eac6452c3c01de25633be412b2c9fd6" + hash: "1d9d3c6435f2fa06bda16ef4a2ff238f" } Key { type: 6 @@ -582,7 +582,7 @@ VisualTest { } Frame { msec: 1744 - hash: "8bf395bd43cf0483aea0ddf3e8ab8c56" + hash: "9d8cb02bbc4f39d38ccdf8e9bda0ed5c" } Key { type: 7 @@ -594,15 +594,15 @@ VisualTest { } Frame { msec: 1760 - hash: "8bf395bd43cf0483aea0ddf3e8ab8c56" + hash: "9d8cb02bbc4f39d38ccdf8e9bda0ed5c" } Frame { msec: 1776 - hash: "8bf395bd43cf0483aea0ddf3e8ab8c56" + hash: "9d8cb02bbc4f39d38ccdf8e9bda0ed5c" } Frame { msec: 1792 - hash: "8bf395bd43cf0483aea0ddf3e8ab8c56" + hash: "9d8cb02bbc4f39d38ccdf8e9bda0ed5c" } Key { type: 7 @@ -614,19 +614,19 @@ VisualTest { } Frame { msec: 1808 - hash: "8bf395bd43cf0483aea0ddf3e8ab8c56" + hash: "9d8cb02bbc4f39d38ccdf8e9bda0ed5c" } Frame { msec: 1824 - hash: "8bf395bd43cf0483aea0ddf3e8ab8c56" + hash: "9d8cb02bbc4f39d38ccdf8e9bda0ed5c" } Frame { msec: 1840 - hash: "8bf395bd43cf0483aea0ddf3e8ab8c56" + hash: "9d8cb02bbc4f39d38ccdf8e9bda0ed5c" } Frame { msec: 1856 - hash: "8bf395bd43cf0483aea0ddf3e8ab8c56" + hash: "9d8cb02bbc4f39d38ccdf8e9bda0ed5c" } Key { type: 6 @@ -638,19 +638,19 @@ VisualTest { } Frame { msec: 1872 - hash: "4a31bba56f9adaccf47e6335ed4e284f" + hash: "2af75935ad1d3be02c6481c094737575" } Frame { msec: 1888 - hash: "4a31bba56f9adaccf47e6335ed4e284f" + hash: "2af75935ad1d3be02c6481c094737575" } Frame { msec: 1904 - hash: "4a31bba56f9adaccf47e6335ed4e284f" + hash: "2af75935ad1d3be02c6481c094737575" } Frame { msec: 1920 - hash: "4a31bba56f9adaccf47e6335ed4e284f" + hash: "2af75935ad1d3be02c6481c094737575" } Key { type: 7 @@ -666,23 +666,23 @@ VisualTest { } Frame { msec: 1952 - hash: "4a31bba56f9adaccf47e6335ed4e284f" + hash: "2af75935ad1d3be02c6481c094737575" } Frame { msec: 1968 - hash: "4a31bba56f9adaccf47e6335ed4e284f" + hash: "2af75935ad1d3be02c6481c094737575" } Frame { msec: 1984 - hash: "4a31bba56f9adaccf47e6335ed4e284f" + hash: "2af75935ad1d3be02c6481c094737575" } Frame { msec: 2000 - hash: "4a31bba56f9adaccf47e6335ed4e284f" + hash: "2af75935ad1d3be02c6481c094737575" } Frame { msec: 2016 - hash: "4a31bba56f9adaccf47e6335ed4e284f" + hash: "2af75935ad1d3be02c6481c094737575" } Key { type: 6 @@ -694,11 +694,11 @@ VisualTest { } Frame { msec: 2032 - hash: "8bbabbbe84de490438d1111aa728c15f" + hash: "c3512d6a7ead481aa6fec8ef8ee2f1d1" } Frame { msec: 2048 - hash: "8bbabbbe84de490438d1111aa728c15f" + hash: "c3512d6a7ead481aa6fec8ef8ee2f1d1" } Key { type: 7 @@ -710,11 +710,11 @@ VisualTest { } Frame { msec: 2064 - hash: "8bbabbbe84de490438d1111aa728c15f" + hash: "c3512d6a7ead481aa6fec8ef8ee2f1d1" } Frame { msec: 2080 - hash: "8bbabbbe84de490438d1111aa728c15f" + hash: "c3512d6a7ead481aa6fec8ef8ee2f1d1" } Key { type: 6 @@ -726,19 +726,19 @@ VisualTest { } Frame { msec: 2096 - hash: "5877f1d527fecaf1077ff5bd2fe1934f" + hash: "064e1fc885ab7f07dad1770361087bef" } Frame { msec: 2112 - hash: "5877f1d527fecaf1077ff5bd2fe1934f" + hash: "064e1fc885ab7f07dad1770361087bef" } Frame { msec: 2128 - hash: "5877f1d527fecaf1077ff5bd2fe1934f" + hash: "064e1fc885ab7f07dad1770361087bef" } Frame { msec: 2144 - hash: "5877f1d527fecaf1077ff5bd2fe1934f" + hash: "064e1fc885ab7f07dad1770361087bef" } Key { type: 6 @@ -758,19 +758,19 @@ VisualTest { } Frame { msec: 2160 - hash: "1593ef669fdff28c33f54c12c7e7424e" + hash: "9b764f6e9cc3d30446e1b32f7ab94f66" } Frame { msec: 2176 - hash: "1593ef669fdff28c33f54c12c7e7424e" + hash: "9b764f6e9cc3d30446e1b32f7ab94f66" } Frame { msec: 2192 - hash: "1593ef669fdff28c33f54c12c7e7424e" + hash: "9b764f6e9cc3d30446e1b32f7ab94f66" } Frame { msec: 2208 - hash: "1593ef669fdff28c33f54c12c7e7424e" + hash: "9b764f6e9cc3d30446e1b32f7ab94f66" } Key { type: 6 @@ -782,7 +782,7 @@ VisualTest { } Frame { msec: 2224 - hash: "da746581451954d7d941fbac825a1009" + hash: "18eff632e106f632aad481ab40f985d7" } Key { type: 7 @@ -794,23 +794,23 @@ VisualTest { } Frame { msec: 2240 - hash: "da746581451954d7d941fbac825a1009" + hash: "18eff632e106f632aad481ab40f985d7" } Frame { msec: 2256 - hash: "da746581451954d7d941fbac825a1009" + hash: "18eff632e106f632aad481ab40f985d7" } Frame { msec: 2272 - hash: "da746581451954d7d941fbac825a1009" + hash: "18eff632e106f632aad481ab40f985d7" } Frame { msec: 2288 - hash: "da746581451954d7d941fbac825a1009" + hash: "18eff632e106f632aad481ab40f985d7" } Frame { msec: 2304 - hash: "da746581451954d7d941fbac825a1009" + hash: "18eff632e106f632aad481ab40f985d7" } Key { type: 7 @@ -822,11 +822,11 @@ VisualTest { } Frame { msec: 2320 - hash: "da746581451954d7d941fbac825a1009" + hash: "18eff632e106f632aad481ab40f985d7" } Frame { msec: 2336 - hash: "da746581451954d7d941fbac825a1009" + hash: "18eff632e106f632aad481ab40f985d7" } Key { type: 6 @@ -838,27 +838,27 @@ VisualTest { } Frame { msec: 2352 - hash: "3e008b7ead8459c1667f4f385d4c5372" + hash: "eaabd4617081e3bc68a5b9099c63272a" } Frame { msec: 2368 - hash: "3e008b7ead8459c1667f4f385d4c5372" + hash: "eaabd4617081e3bc68a5b9099c63272a" } Frame { msec: 2384 - hash: "3e008b7ead8459c1667f4f385d4c5372" + hash: "eaabd4617081e3bc68a5b9099c63272a" } Frame { msec: 2400 - hash: "3e008b7ead8459c1667f4f385d4c5372" + hash: "eaabd4617081e3bc68a5b9099c63272a" } Frame { msec: 2416 - hash: "3e008b7ead8459c1667f4f385d4c5372" + hash: "eaabd4617081e3bc68a5b9099c63272a" } Frame { msec: 2432 - hash: "3e008b7ead8459c1667f4f385d4c5372" + hash: "eaabd4617081e3bc68a5b9099c63272a" } Key { type: 7 @@ -870,19 +870,19 @@ VisualTest { } Frame { msec: 2448 - hash: "3e008b7ead8459c1667f4f385d4c5372" + hash: "eaabd4617081e3bc68a5b9099c63272a" } Frame { msec: 2464 - hash: "3e008b7ead8459c1667f4f385d4c5372" + hash: "eaabd4617081e3bc68a5b9099c63272a" } Frame { msec: 2480 - hash: "3e008b7ead8459c1667f4f385d4c5372" + hash: "eaabd4617081e3bc68a5b9099c63272a" } Frame { msec: 2496 - hash: "3e008b7ead8459c1667f4f385d4c5372" + hash: "eaabd4617081e3bc68a5b9099c63272a" } Key { type: 6 @@ -894,15 +894,15 @@ VisualTest { } Frame { msec: 2512 - hash: "1dbc7e1ab58dcec8691ff4195b0d581c" + hash: "fec019ea87914d30b5bf4754ce8ba916" } Frame { msec: 2528 - hash: "1dbc7e1ab58dcec8691ff4195b0d581c" + hash: "fec019ea87914d30b5bf4754ce8ba916" } Frame { msec: 2544 - hash: "1dbc7e1ab58dcec8691ff4195b0d581c" + hash: "fec019ea87914d30b5bf4754ce8ba916" } Key { type: 7 @@ -914,87 +914,87 @@ VisualTest { } Frame { msec: 2560 - hash: "1dbc7e1ab58dcec8691ff4195b0d581c" + hash: "fec019ea87914d30b5bf4754ce8ba916" } Frame { msec: 2576 - hash: "1dbc7e1ab58dcec8691ff4195b0d581c" + hash: "fec019ea87914d30b5bf4754ce8ba916" } Frame { msec: 2592 - hash: "1dbc7e1ab58dcec8691ff4195b0d581c" + hash: "fec019ea87914d30b5bf4754ce8ba916" } Frame { msec: 2608 - hash: "1dbc7e1ab58dcec8691ff4195b0d581c" + hash: "fec019ea87914d30b5bf4754ce8ba916" } Frame { msec: 2624 - hash: "1dbc7e1ab58dcec8691ff4195b0d581c" + hash: "fec019ea87914d30b5bf4754ce8ba916" } Frame { msec: 2640 - hash: "1dbc7e1ab58dcec8691ff4195b0d581c" + hash: "fec019ea87914d30b5bf4754ce8ba916" } Frame { msec: 2656 - hash: "1dbc7e1ab58dcec8691ff4195b0d581c" + hash: "fec019ea87914d30b5bf4754ce8ba916" } Frame { msec: 2672 - hash: "1dbc7e1ab58dcec8691ff4195b0d581c" + hash: "fec019ea87914d30b5bf4754ce8ba916" } Frame { msec: 2688 - hash: "1dbc7e1ab58dcec8691ff4195b0d581c" + hash: "fec019ea87914d30b5bf4754ce8ba916" } Frame { msec: 2704 - hash: "1dbc7e1ab58dcec8691ff4195b0d581c" + hash: "fec019ea87914d30b5bf4754ce8ba916" } Frame { msec: 2720 - hash: "1dbc7e1ab58dcec8691ff4195b0d581c" + hash: "fec019ea87914d30b5bf4754ce8ba916" } Frame { msec: 2736 - hash: "1dbc7e1ab58dcec8691ff4195b0d581c" + hash: "fec019ea87914d30b5bf4754ce8ba916" } Frame { msec: 2752 - hash: "1dbc7e1ab58dcec8691ff4195b0d581c" + hash: "fec019ea87914d30b5bf4754ce8ba916" } Frame { msec: 2768 - hash: "1dbc7e1ab58dcec8691ff4195b0d581c" + hash: "fec019ea87914d30b5bf4754ce8ba916" } Frame { msec: 2784 - hash: "1dbc7e1ab58dcec8691ff4195b0d581c" + hash: "fec019ea87914d30b5bf4754ce8ba916" } Frame { msec: 2800 - hash: "1dbc7e1ab58dcec8691ff4195b0d581c" + hash: "fec019ea87914d30b5bf4754ce8ba916" } Frame { msec: 2816 - hash: "1dbc7e1ab58dcec8691ff4195b0d581c" + hash: "fec019ea87914d30b5bf4754ce8ba916" } Frame { msec: 2832 - hash: "1dbc7e1ab58dcec8691ff4195b0d581c" + hash: "fec019ea87914d30b5bf4754ce8ba916" } Frame { msec: 2848 - hash: "1dbc7e1ab58dcec8691ff4195b0d581c" + hash: "fec019ea87914d30b5bf4754ce8ba916" } Frame { msec: 2864 - hash: "1dbc7e1ab58dcec8691ff4195b0d581c" + hash: "fec019ea87914d30b5bf4754ce8ba916" } Frame { msec: 2880 - hash: "1dbc7e1ab58dcec8691ff4195b0d581c" + hash: "fec019ea87914d30b5bf4754ce8ba916" } Frame { msec: 2896 @@ -1002,42 +1002,42 @@ VisualTest { } Frame { msec: 2912 - hash: "1dbc7e1ab58dcec8691ff4195b0d581c" + hash: "fec019ea87914d30b5bf4754ce8ba916" } Frame { msec: 2928 - hash: "1dbc7e1ab58dcec8691ff4195b0d581c" + hash: "fec019ea87914d30b5bf4754ce8ba916" } Frame { msec: 2944 - hash: "1dbc7e1ab58dcec8691ff4195b0d581c" + hash: "fec019ea87914d30b5bf4754ce8ba916" } Frame { msec: 2960 - hash: "1dbc7e1ab58dcec8691ff4195b0d581c" + hash: "fec019ea87914d30b5bf4754ce8ba916" } Frame { msec: 2976 - hash: "1dbc7e1ab58dcec8691ff4195b0d581c" + hash: "fec019ea87914d30b5bf4754ce8ba916" } Frame { msec: 2992 - hash: "1dbc7e1ab58dcec8691ff4195b0d581c" + hash: "fec019ea87914d30b5bf4754ce8ba916" } Frame { msec: 3008 - hash: "1dbc7e1ab58dcec8691ff4195b0d581c" + hash: "fec019ea87914d30b5bf4754ce8ba916" } Frame { msec: 3024 - hash: "1dbc7e1ab58dcec8691ff4195b0d581c" + hash: "fec019ea87914d30b5bf4754ce8ba916" } Frame { msec: 3040 - hash: "1dbc7e1ab58dcec8691ff4195b0d581c" + hash: "fec019ea87914d30b5bf4754ce8ba916" } Frame { msec: 3056 - hash: "1dbc7e1ab58dcec8691ff4195b0d581c" + hash: "fec019ea87914d30b5bf4754ce8ba916" } } diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.qml index a1a0821..fc8a115 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.qml @@ -379,7 +379,7 @@ VisualTest { Key { type: 6 key: 16777249 - modifiers: 67108864 + modifiers: 0 text: "" autorep: false count: 1 @@ -583,7 +583,7 @@ VisualTest { Key { type: 7 key: 16777249 - modifiers: 0 + modifiers: 67108864 text: "" autorep: false count: 1 @@ -783,7 +783,7 @@ VisualTest { Key { type: 6 key: 16777249 - modifiers: 67108864 + modifiers: 0 text: "" autorep: false count: 1 @@ -1175,7 +1175,7 @@ VisualTest { Key { type: 7 key: 16777249 - modifiers: 0 + modifiers: 67108864 text: "" autorep: false count: 1 @@ -1823,7 +1823,7 @@ VisualTest { Key { type: 6 key: 16777249 - modifiers: 67108864 + modifiers: 0 text: "" autorep: false count: 1 @@ -2327,7 +2327,7 @@ VisualTest { Key { type: 7 key: 16777249 - modifiers: 0 + modifiers: 67108864 text: "" autorep: false count: 1 diff --git a/tests/auto/declarative/qmlvisual/tst_qmlvisual.cpp b/tests/auto/declarative/qmlvisual/tst_qmlvisual.cpp index 2a15102..ef0d4dc 100644 --- a/tests/auto/declarative/qmlvisual/tst_qmlvisual.cpp +++ b/tests/auto/declarative/qmlvisual/tst_qmlvisual.cpp @@ -105,10 +105,16 @@ void tst_qmlvisual::visual_data() files << findQmlFiles(QDir(QT_TEST_SOURCE_DIR)); if (qgetenv("QMLVISUAL_ALL") != "1") { #if defined(Q_WS_X11) - //Text on X11 varies per distro - and the CI system is currently using something outdated. + //Text on X11 varies per version - and the CI system is currently using something outdated. foreach(const QString &str, files.filter(QRegExp(".*text.*"))) files.removeAll(str); #endif +#if defined(Q_WS_MAC) + //Text on Mac also varies per version. Only check the text on 10.6 + if(QSysInfo::MacintoshVersion != QSysInfo::MV_10_6) + foreach(const QString &str, files.filter(QRegExp(".*text.*"))) + files.removeAll(str); +#endif #if defined(Q_WS_QWS) //We don't want QWS test results to mire down the CI system files.clear(); @@ -141,9 +147,11 @@ void tst_qmlvisual::visual() QProcess p; p.start(qmlruntime, arguments); - QVERIFY(p.waitForFinished()); + bool finished = p.waitForFinished(); + QByteArray output = p.readAllStandardOutput() + p.readAllStandardError(); + QVERIFY2(finished, output.data()); if (p.exitCode() != 0) - qDebug() << p.readAllStandardError(); + qDebug() << output; QCOMPARE(p.exitStatus(), QProcess::NormalExit); QCOMPARE(p.exitCode(), 0); } diff --git a/tests/auto/qabstractnetworkcache/tst_qabstractnetworkcache.cpp b/tests/auto/qabstractnetworkcache/tst_qabstractnetworkcache.cpp index 04bd432..fc8a126 100644 --- a/tests/auto/qabstractnetworkcache/tst_qabstractnetworkcache.cpp +++ b/tests/auto/qabstractnetworkcache/tst_qabstractnetworkcache.cpp @@ -58,20 +58,29 @@ public: private slots: void expires_data(); void expires(); + void expiresSynchronous_data(); + void expiresSynchronous(); void lastModified_data(); void lastModified(); + void lastModifiedSynchronous_data(); + void lastModifiedSynchronous(); void etag_data(); void etag(); + void etagSynchronous_data(); + void etagSynchronous(); void cacheControl_data(); void cacheControl(); + void cacheControlSynchronous_data(); + void cacheControlSynchronous(); void deleteCache(); private: void check(); + void checkSynchronous(); }; class NetworkDiskCache : public QNetworkDiskCache @@ -142,6 +151,16 @@ void tst_QAbstractNetworkCache::expires() check(); } +void tst_QAbstractNetworkCache::expiresSynchronous_data() +{ + expires_data(); +} + +void tst_QAbstractNetworkCache::expiresSynchronous() +{ + checkSynchronous(); +} + void tst_QAbstractNetworkCache::lastModified_data() { QTest::addColumn<QNetworkRequest::CacheLoadControl>("cacheLoadControl"); @@ -164,6 +183,16 @@ void tst_QAbstractNetworkCache::lastModified() check(); } +void tst_QAbstractNetworkCache::lastModifiedSynchronous_data() +{ + tst_QAbstractNetworkCache::lastModified_data(); +} + +void tst_QAbstractNetworkCache::lastModifiedSynchronous() +{ + checkSynchronous(); +} + void tst_QAbstractNetworkCache::etag_data() { QTest::addColumn<QNetworkRequest::CacheLoadControl>("cacheLoadControl"); @@ -186,6 +215,16 @@ void tst_QAbstractNetworkCache::etag() check(); } +void tst_QAbstractNetworkCache::etagSynchronous_data() +{ + tst_QAbstractNetworkCache::etag_data(); +} + +void tst_QAbstractNetworkCache::etagSynchronous() +{ + checkSynchronous(); +} + void tst_QAbstractNetworkCache::cacheControl_data() { QTest::addColumn<QNetworkRequest::CacheLoadControl>("cacheLoadControl"); @@ -217,6 +256,16 @@ void tst_QAbstractNetworkCache::cacheControl() check(); } +void tst_QAbstractNetworkCache::cacheControlSynchronous_data() +{ + tst_QAbstractNetworkCache::cacheControl_data(); +} + +void tst_QAbstractNetworkCache::cacheControlSynchronous() +{ + checkSynchronous(); +} + void tst_QAbstractNetworkCache::check() { QFETCH(QNetworkRequest::CacheLoadControl, cacheLoadControl); @@ -250,8 +299,6 @@ void tst_QAbstractNetworkCache::check() QCOMPARE(reply2->error(), QNetworkReply::ContentNotFoundError); QCOMPARE(secondData, QByteArray()); } else { - if (reply2->error() != QNetworkReply::NoError) - qDebug() << reply2->errorString(); QCOMPARE(reply2->error(), QNetworkReply::NoError); QCOMPARE(QString(secondData), QString(goodData)); QCOMPARE(secondData, goodData); @@ -263,16 +310,60 @@ void tst_QAbstractNetworkCache::check() QList<QByteArray> rawHeaderList2 = reply2->rawHeaderList(); qSort(rawHeaderList); qSort(rawHeaderList2); + } + QCOMPARE(diskCache->gotData, fetchFromCache); +} - // headers can change - for (int i = 0; i < rawHeaderList.count(); ++i) { - //qDebug() << i << rawHeaderList.value(i) << reply->rawHeader(rawHeaderList.value(i)); - //qDebug() << i << rawHeaderList2.value(i) << reply2->rawHeader(rawHeaderList2.value(i)); - //QCOMPARE(QString(rawHeaderList.value(i)), QString(rawHeaderList2.value(i))); - //QCOMPARE(QString(reply->rawHeader(rawHeaderList.value(i))), QString(reply2->rawHeader(rawHeaderList2.value(i)))); - } - //QCOMPARE(rawHeaderList.count(), rawHeaderList2.count()); +void tst_QAbstractNetworkCache::checkSynchronous() +{ + QSKIP("not working yet, see QTBUG-15221", SkipAll); + QFETCH(QNetworkRequest::CacheLoadControl, cacheLoadControl); + QFETCH(QString, url); + QFETCH(bool, fetchFromCache); + + QNetworkAccessManager manager; + NetworkDiskCache *diskCache = new NetworkDiskCache(&manager); + manager.setCache(diskCache); + QCOMPARE(diskCache->gotData, false); + + QUrl realUrl = url.contains("://") ? url : TESTFILE + url; + QNetworkRequest request(realUrl); + + request.setAttribute( + static_cast<QNetworkRequest::Attribute>(QNetworkRequest::DownloadBufferAttribute + 1), + true); + + // prime the cache + QNetworkReply *reply = manager.get(request); + QVERIFY(reply->isFinished()); // synchronous + QCOMPARE(diskCache->gotData, false); + QByteArray goodData = reply->readAll(); + + request.setAttribute(QNetworkRequest::CacheLoadControlAttribute, cacheLoadControl); + + // should be in the cache now + QNetworkReply *reply2 = manager.get(request); + QVERIFY(reply2->isFinished()); // synchronous + + QByteArray secondData = reply2->readAll(); + if (!fetchFromCache && cacheLoadControl == QNetworkRequest::AlwaysCache) { + QCOMPARE(reply2->error(), QNetworkReply::ContentNotFoundError); + QCOMPARE(secondData, QByteArray()); + } else { + if (reply2->error() != QNetworkReply::NoError) + qDebug() << reply2->errorString(); + QCOMPARE(reply2->error(), QNetworkReply::NoError); + QCOMPARE(QString(secondData), QString(goodData)); + QCOMPARE(secondData, goodData); + QCOMPARE(reply2->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200); + } + + if (fetchFromCache) { + QList<QByteArray> rawHeaderList = reply->rawHeaderList(); + QList<QByteArray> rawHeaderList2 = reply2->rawHeaderList(); + qSort(rawHeaderList); + qSort(rawHeaderList2); } QCOMPARE(diskCache->gotData, fetchFromCache); } diff --git a/tests/auto/qdbusconnection/tst_qdbusconnection.cpp b/tests/auto/qdbusconnection/tst_qdbusconnection.cpp index 599abbd..4494d6f 100644 --- a/tests/auto/qdbusconnection/tst_qdbusconnection.cpp +++ b/tests/auto/qdbusconnection/tst_qdbusconnection.cpp @@ -106,6 +106,8 @@ private slots: void slotsWithLessParameters(); void nestedCallWithCallback(); + void serviceRegistrationRaceCondition(); + public: QString serviceName() const { return "com.trolltech.Qt.Autotests.QDBusConnection"; } bool callMethod(const QDBusConnection &conn, const QString &path); @@ -647,6 +649,73 @@ void tst_QDBusConnection::nestedCallWithCallback() QCOMPARE(signalsReceived, 1); } +class RaceConditionSignalWaiter : public QObject +{ + Q_OBJECT +public: + int count; + RaceConditionSignalWaiter() : count (0) {} + virtual ~RaceConditionSignalWaiter() {} + +public slots: + void countUp() { ++count; emit done(); } +signals: + void done(); +}; + +void tst_QDBusConnection::serviceRegistrationRaceCondition() +{ + // There was a race condition in the updating of list of name owners in + // QtDBus. When the user connects to a signal coming from a given + // service, we must listen for NameOwnerChanged signals relevant to that + // name and update when the owner changes. However, it's possible that we + // receive in one chunk from the server both the NameOwnerChanged signal + // about the service and the signal we're interested in. Since QtDBus + // posts events in order to handle the incoming signals, the update + // happens too late. + + const QString connectionName = "testConnectionName"; + const QString serviceName = "org.example.SecondaryName"; + + QDBusConnection session = QDBusConnection::sessionBus(); + QVERIFY(!session.interface()->isServiceRegistered(serviceName)); + + // connect to the signal: + RaceConditionSignalWaiter recv; + session.connect(serviceName, "/", "com.trolltech.TestCase", "oneSignal", &recv, SLOT(countUp())); + + // create a secondary connection and register a name + QDBusConnection connection = QDBusConnection::connectToBus(QDBusConnection::SessionBus, connectionName); + QDBusConnection::disconnectFromBus(connectionName); // disconnection happens when "connection" goes out of scope + QVERIFY(connection.isConnected()); + QVERIFY(connection.registerService(serviceName)); + + // send a signal + QDBusMessage msg = QDBusMessage::createSignal("/", "com.trolltech.TestCase", "oneSignal"); + connection.send(msg); + + // make a blocking call just to be sure that the buffer was flushed + msg = QDBusMessage::createMethodCall("org.freedesktop.DBus", "/org/freedesktop/DBus", "org.freedesktop.DBus", + "NameHasOwner"); + msg << connectionName; + connection.call(msg); // ignore result + + // Now here's the race condition (more info on task QTBUG-15651): + // the bus has most likely queued three signals for us to work on: + // 1) NameOwnerChanged for the connection we created above + // 2) NameOwnerChanged for the service we registered above + // 3) The "oneSignal" signal we sent + // + // We'll most likely receive all three in one go from the server. We must + // update the owner of serviceName before we start processing the + // "oneSignal" signal. + + QTestEventLoop::instance().connect(&recv, SIGNAL(done()), SLOT(exitLoop())); + QTestEventLoop::instance().enterLoop(1); + QVERIFY(!QTestEventLoop::instance().timeout()); + QCOMPARE(recv.count, 1); +} + QString MyObject::path; QTEST_MAIN(tst_QDBusConnection) diff --git a/tests/auto/qfilesystemwatcher/tst_qfilesystemwatcher.cpp b/tests/auto/qfilesystemwatcher/tst_qfilesystemwatcher.cpp index a26e34d..1feaced 100644 --- a/tests/auto/qfilesystemwatcher/tst_qfilesystemwatcher.cpp +++ b/tests/auto/qfilesystemwatcher/tst_qfilesystemwatcher.cpp @@ -135,14 +135,11 @@ void tst_QFileSystemWatcher::basicTest() // create watcher, forcing it to use a specific backend QFileSystemWatcher watcher; watcher.setObjectName(QLatin1String("_qt_autotest_force_engine_") + backend); + watcher.removePath(testFile.fileName()); watcher.addPath(testFile.fileName()); QSignalSpy changedSpy(&watcher, SIGNAL(fileChanged(const QString &))); QEventLoop eventLoop; - connect(&watcher, - SIGNAL(fileChanged(const QString &)), - &eventLoop, - SLOT(quit())); QTimer timer; connect(&timer, SIGNAL(timeout()), &eventLoop, SLOT(quit())); @@ -278,10 +275,6 @@ void tst_QFileSystemWatcher::watchDirectory() QSignalSpy changedSpy(&watcher, SIGNAL(directoryChanged(const QString &))); QEventLoop eventLoop; - connect(&watcher, - SIGNAL(directoryChanged(const QString &)), - &eventLoop, - SLOT(quit())); QTimer timer; connect(&timer, SIGNAL(timeout()), &eventLoop, SLOT(quit())); diff --git a/tests/auto/qgraphicsgridlayout/tst_qgraphicsgridlayout.cpp b/tests/auto/qgraphicsgridlayout/tst_qgraphicsgridlayout.cpp index 174e4aa..35ea059 100644 --- a/tests/auto/qgraphicsgridlayout/tst_qgraphicsgridlayout.cpp +++ b/tests/auto/qgraphicsgridlayout/tst_qgraphicsgridlayout.cpp @@ -122,6 +122,8 @@ private slots: void task236367_maxSizeHint(); void heightForWidth(); void heightForWidthWithSpanning(); + void stretchAndHeightForWidth(); + void testDefaultAlignment(); }; class RectWidget : public QGraphicsWidget @@ -699,6 +701,10 @@ void tst_QGraphicsGridLayout::columnMaximumWidth() layout->setContentsMargins(0, 0, 0, 0); layout->setSpacing(0); + QCOMPARE(layout->minimumSize(), QSizeF(10+10+10, 10+10)); + QCOMPARE(layout->preferredSize(), QSizeF(25+25+25, 25+25)); + QCOMPARE(layout->maximumSize(), QSizeF(50+50+50, 50+50)); + // should at least be a very large number QVERIFY(layout->columnMaximumWidth(0) >= 10000); QCOMPARE(layout->columnMaximumWidth(0), layout->columnMaximumWidth(1)); @@ -706,17 +712,65 @@ void tst_QGraphicsGridLayout::columnMaximumWidth() layout->setColumnMaximumWidth(0, 20); layout->setColumnMaximumWidth(2, 60); - view.show(); - widget->show(); + QCOMPARE(layout->minimumSize(), QSizeF(10+10+10, 10+10)); + QCOMPARE(layout->preferredSize(), QSizeF(20+25+25, 25+25)); + QCOMPARE(layout->maximumSize(), QSizeF(20+50+60, 50+50)); + QCOMPARE(layout->maximumSize(), widget->maximumSize()); + widget->resize(widget->effectiveSizeHint(Qt::PreferredSize)); - QApplication::processEvents(); + layout->activate(); - QCOMPARE(layout->itemAt(0,0)->geometry().width(), 20.0); - QCOMPARE(layout->itemAt(1,0)->geometry().width(), 20.0); - QCOMPARE(layout->itemAt(0,1)->geometry().width(), 25.0); - QCOMPARE(layout->itemAt(1,1)->geometry().width(), 25.0); - QCOMPARE(layout->itemAt(0,2)->geometry().width(), 25.0); - QCOMPARE(layout->itemAt(1,2)->geometry().width(), 25.0); + QCOMPARE(layout->itemAt(0,0)->geometry(), QRectF(0, 0, 20, 25)); + QCOMPARE(layout->itemAt(1,0)->geometry(), QRectF(0, 25, 20, 25)); + QCOMPARE(layout->itemAt(0,1)->geometry(), QRectF(20, 0, 25, 25)); + QCOMPARE(layout->itemAt(1,1)->geometry(), QRectF(20, 25, 25, 25)); + QCOMPARE(layout->itemAt(0,2)->geometry(), QRectF(45, 0, 25, 25)); + QCOMPARE(layout->itemAt(1,2)->geometry(), QRectF(45, 25, 25, 25)); + + layout->setColumnAlignment(2, Qt::AlignCenter); + widget->resize(widget->effectiveSizeHint(Qt::MaximumSize)); + layout->activate(); + QCOMPARE(layout->geometry(), QRectF(0,0,20+50+60, 50+50)); + QCOMPARE(layout->itemAt(0,0)->geometry(), QRectF(0, 0, 20, 50)); + QCOMPARE(layout->itemAt(1,0)->geometry(), QRectF(0, 50, 20, 50)); + QCOMPARE(layout->itemAt(0,1)->geometry(), QRectF(20, 0, 50, 50)); + QCOMPARE(layout->itemAt(1,1)->geometry(), QRectF(20, 50, 50, 50)); + QCOMPARE(layout->itemAt(0,2)->geometry(), QRectF(75, 0, 50, 50)); + QCOMPARE(layout->itemAt(1,2)->geometry(), QRectF(75, 50, 50, 50)); + + for (int i = 0; i < layout->count(); i++) + layout->setAlignment(layout->itemAt(i), Qt::AlignRight | Qt::AlignBottom); + layout->activate(); + QCOMPARE(layout->itemAt(0,0)->geometry(), QRectF(0, 0, 20, 50)); + QCOMPARE(layout->itemAt(1,0)->geometry(), QRectF(0, 50, 20, 50)); + QCOMPARE(layout->itemAt(0,1)->geometry(), QRectF(20, 0, 50, 50)); + QCOMPARE(layout->itemAt(1,1)->geometry(), QRectF(20, 50, 50, 50)); + QCOMPARE(layout->itemAt(0,2)->geometry(), QRectF(80, 0, 50, 50)); + QCOMPARE(layout->itemAt(1,2)->geometry(), QRectF(80, 50, 50, 50)); + for (int i = 0; i < layout->count(); i++) + layout->setAlignment(layout->itemAt(i), Qt::AlignCenter); + + layout->setMaximumSize(layout->maximumSize() + QSizeF(60,60)); + widget->resize(widget->effectiveSizeHint(Qt::MaximumSize)); + layout->activate(); + + QCOMPARE(layout->itemAt(0,0)->geometry(), QRectF(0, 15, 20, 50)); + QCOMPARE(layout->itemAt(1,0)->geometry(), QRectF(0, 95, 20, 50)); + QCOMPARE(layout->itemAt(0,1)->geometry(), QRectF(20+30, 15, 50, 50)); + QCOMPARE(layout->itemAt(1,1)->geometry(), QRectF(20+30, 95, 50, 50)); + QCOMPARE(layout->itemAt(0,2)->geometry(), QRectF(20+60+50+5, 15, 50, 50)); + QCOMPARE(layout->itemAt(1,2)->geometry(), QRectF(20+60+50+5, 95, 50, 50)); + + layout->setMaximumSize(layout->preferredSize() + QSizeF(20,20)); + widget->resize(widget->effectiveSizeHint(Qt::MaximumSize)); + layout->activate(); + + QCOMPARE(layout->itemAt(0,0)->geometry(), QRectF(0, 0, 20, 35)); + QCOMPARE(layout->itemAt(1,0)->geometry(), QRectF(0, 35, 20, 35)); + QCOMPARE(layout->itemAt(0,1)->geometry(), QRectF(20, 0, 35, 35)); + QCOMPARE(layout->itemAt(1,1)->geometry(), QRectF(20, 35, 35, 35)); + QCOMPARE(layout->itemAt(0,2)->geometry(), QRectF(55, 0, 35, 35)); + QCOMPARE(layout->itemAt(1,2)->geometry(), QRectF(55, 35, 35, 35)); delete widget; } @@ -2306,6 +2360,11 @@ static QSizeF hfw1(Qt::SizeHint, const QSizeF &constraint) return result; } +static QSizeF hfw2(Qt::SizeHint /*which*/, const QSizeF &constraint) +{ + return QSizeF(constraint.width(), constraint.width()); +} + void tst_QGraphicsGridLayout::geometries_data() { @@ -2361,6 +2420,31 @@ void tst_QGraphicsGridLayout::geometries_data() << QRectF(0, 1, 50,100) << QRectF(50, 1, 50,400) ); + + QTest::newRow("hfw-h408") << (ItemList() + << ItemDesc(0,0) + .minSize(QSizeF(1,1)) + .preferredSize(QSizeF(50,10)) + .maxSize(QSizeF(100, 100)) + << ItemDesc(0,1) + .minSize(QSizeF(1,1)) + .preferredSize(QSizeF(50,10)) + .maxSize(QSizeF(100, 100)) + << ItemDesc(1,0) + .minSize(QSizeF(1,1)) + .preferredSize(QSizeF(50,10)) + .maxSize(QSizeF(100, 100)) + << ItemDesc(1,1) + .sizeHint(Qt::MinimumSize, QSizeF(40,40)) + .sizeHint(Qt::PreferredSize, QSizeF(50,400)) + .sizeHint(Qt::MaximumSize, QSizeF(500, 500)) + .heightForWidth(hfw1) + ) + << QSizeF(100, 408) + << (RectList() + << QRectF(0, 0, 50, 8) << QRectF(50, 0, 50, 8) + << QRectF(0, 8, 50,100) << QRectF(50, 8, 50,400) + ); QTest::newRow("hfw-h410") << (ItemList() << ItemDesc(0,0) .minSize(QSizeF(1,1)) @@ -2386,6 +2470,150 @@ void tst_QGraphicsGridLayout::geometries_data() << QRectF(0, 10, 50,100) << QRectF(50, 10, 50,400) ); + QTest::newRow("hfw-h470") << (ItemList() + << ItemDesc(0,0) + .minSize(QSizeF(1,1)) + .preferredSize(QSizeF(50,10)) + .maxSize(QSizeF(100, 100)) + << ItemDesc(0,1) + .minSize(QSizeF(1,1)) + .preferredSize(QSizeF(50,10)) + .maxSize(QSizeF(100, 100)) + << ItemDesc(1,0) + .minSize(QSizeF(1,1)) + .preferredSize(QSizeF(50,10)) + .maxSize(QSizeF(100, 100)) + << ItemDesc(1,1) + .sizeHint(Qt::MinimumSize, QSizeF(40,40)) + .sizeHint(Qt::PreferredSize, QSizeF(50,400)) + .sizeHint(Qt::MaximumSize, QSizeF(500,500)) + .heightForWidth(hfw1) + ) + << QSizeF(100, 470) + << (RectList() + << QRectF(0, 0, 50,70) << QRectF(50, 0, 50,70) + << QRectF(0, 70, 50,100) << QRectF(50, 70, 50,400) + ); + + + // change layout width and verify + QTest::newRow("hfw-w100") << (ItemList() + << ItemDesc(0,0) + .minSize(QSizeF(1,1)) + .preferredSize(QSizeF(50,10)) + .maxSize(QSizeF(100, 100)) + << ItemDesc(0,1) + .minSize(QSizeF(1,1)) + .preferredSize(QSizeF(50,10)) + .maxSize(QSizeF(100, 100)) + << ItemDesc(1,0) + .minSize(QSizeF(1,1)) + .preferredSize(QSizeF(50,10)) + .maxSize(QSizeF(100, 100)) + << ItemDesc(1,1) + .sizeHint(Qt::MinimumSize, QSizeF(40,40)) + .sizeHint(Qt::PreferredSize, QSizeF(50,400)) + .sizeHint(Qt::MaximumSize, QSizeF(5000,5000)) + .heightForWidth(hfw1) + ) + << QSizeF(100, 401) + << (RectList() + << QRectF( 0, 0, 50, 1) << QRectF( 50, 0, 50, 1) + << QRectF( 0, 1, 50, 100) << QRectF( 50, 1, 50, 400) + ); + + QTest::newRow("hfw-w160") << (ItemList() + << ItemDesc(0,0) + .minSize(QSizeF(1,1)) + .preferredSize(QSizeF(50,10)) + .maxSize(QSizeF(100, 100)) + << ItemDesc(0,1) + .minSize(QSizeF(1,1)) + .preferredSize(QSizeF(50,10)) + .maxSize(QSizeF(100, 100)) + << ItemDesc(1,0) + .minSize(QSizeF(1,1)) + .preferredSize(QSizeF(50,10)) + .maxSize(QSizeF(100, 100)) + << ItemDesc(1,1) + .sizeHint(Qt::MinimumSize, QSizeF(40,40)) + .sizeHint(Qt::PreferredSize, QSizeF(50,400)) + .sizeHint(Qt::MaximumSize, QSizeF(5000,5000)) + .heightForWidth(hfw1) + ) + << QSizeF(160, 350) + << (RectList() + << QRectF( 0, 0, 80, 100) << QRectF( 80, 0, 80, 100) + << QRectF( 0, 100, 80, 100) << QRectF( 80, 100, 80, 250) + ); + + QTest::newRow("hfw-w500") << (ItemList() + << ItemDesc(0,0) + .minSize(QSizeF(1,1)) + .preferredSize(QSizeF(50,10)) + .maxSize(QSizeF(100, 100)) + << ItemDesc(0,1) + .minSize(QSizeF(1,1)) + .preferredSize(QSizeF(50,10)) + .maxSize(QSizeF(100, 100)) + << ItemDesc(1,0) + .minSize(QSizeF(1,1)) + .preferredSize(QSizeF(50,10)) + .maxSize(QSizeF(100, 100)) + << ItemDesc(1,1) + .sizeHint(Qt::MinimumSize, QSizeF(40,40)) + .sizeHint(Qt::PreferredSize, QSizeF(50,400)) + .sizeHint(Qt::MaximumSize, QSizeF(5000,5000)) + .heightForWidth(hfw1) + ) + << QSizeF(500, 200) + << (RectList() + << QRectF( 0, 0, 100, 100) << QRectF(100, 0, 100, 100) + << QRectF( 0, 100, 100, 100) << QRectF(100, 100, 400, 50) + ); + + QTest::newRow("hfw-alignment-defaults") << (ItemList() + << ItemDesc(0,0) + .minSize(QSizeF(100, 100)) + .maxSize(QSizeF(100, 100)) + .heightForWidth(hfw2) + << ItemDesc(1,0) + .minSize(QSizeF(200, 200)) + .maxSize(QSizeF(200, 200)) + .heightForWidth(hfw2) + << ItemDesc(2,0) + .minSize(QSizeF(300, 300)) + .maxSize(QSizeF(300, 300)) + ) + << QSizeF(300, 600) + << (RectList() + << QRectF(0, 0, 100, 100) + << QRectF(0, 100, 200, 200) + << QRectF(0, 300, 300, 300) + ); + + QTest::newRow("hfw-alignment2") << (ItemList() + << ItemDesc(0,0) + .minSize(QSizeF(100, 100)) + .maxSize(QSizeF(100, 100)) + .heightForWidth(hfw2) + .alignment(Qt::AlignRight) + << ItemDesc(1,0) + .minSize(QSizeF(200, 200)) + .maxSize(QSizeF(200, 200)) + .heightForWidth(hfw2) + .alignment(Qt::AlignHCenter) + << ItemDesc(2,0) + .minSize(QSizeF(300, 300)) + .maxSize(QSizeF(300, 300)) + ) + << QSizeF(300, 600) + << (RectList() + << QRectF(200, 0, 100, 100) + << QRectF( 50, 100, 200, 200) + << QRectF( 0, 300, 300, 300) + ); + } void tst_QGraphicsGridLayout::geometries() @@ -2556,8 +2784,9 @@ void tst_QGraphicsGridLayout::heightForWidth() w11->setSizePolicy(sp); layout->addItem(w11, 1, 1); - QSizeF prefSize = layout->effectiveSizeHint(Qt::PreferredSize, QSizeF(-1, -1)); - QCOMPARE(prefSize, QSizeF(10+200, 10+100)); + QCOMPARE(layout->effectiveSizeHint(Qt::MinimumSize, QSizeF(-1, -1)), QSizeF(2, 2)); + QCOMPARE(layout->effectiveSizeHint(Qt::PreferredSize, QSizeF(-1, -1)), QSizeF(210, 110)); + QCOMPARE(layout->effectiveSizeHint(Qt::MaximumSize, QSizeF(-1, -1)), QSizeF(30100, 30100)); QCOMPARE(layout->effectiveSizeHint(Qt::MinimumSize, QSizeF(2, -1)), QSizeF(2, 20001)); QCOMPARE(layout->effectiveSizeHint(Qt::PreferredSize, QSizeF(2, -1)), QSizeF(2, 20010)); @@ -2610,23 +2839,128 @@ void tst_QGraphicsGridLayout::heightForWidthWithSpanning() w->setSizePolicy(sp); layout->addItem(w, 0,0,2,2); - QCOMPARE(layout->effectiveSizeHint(Qt::MinimumSize, QSizeF(-1, -1)), QSizeF(1, 100)); + QCOMPARE(layout->effectiveSizeHint(Qt::MinimumSize, QSizeF(-1, -1)), QSizeF(1, 1)); QCOMPARE(layout->effectiveSizeHint(Qt::PreferredSize, QSizeF(-1, -1)), QSizeF(200, 100)); - QCOMPARE(layout->effectiveSizeHint(Qt::MaximumSize, QSizeF(-1, -1)), QSizeF(QWIDGETSIZE_MAX, QWIDGETSIZE_MAX)); + QEXPECT_FAIL("", "Due to an old bug this wrongly returns QWIDGETSIZE_MAX", Continue); + QCOMPARE(layout->effectiveSizeHint(Qt::MaximumSize, QSizeF(-1, -1)), QSizeF(30000, 30000)); QCOMPARE(layout->effectiveSizeHint(Qt::MinimumSize, QSizeF(200, -1)), QSizeF(200, 100)); QCOMPARE(layout->effectiveSizeHint(Qt::PreferredSize, QSizeF(200, -1)), QSizeF(200, 100)); - QCOMPARE(layout->effectiveSizeHint(Qt::MaximumSize, QSizeF(200, -1)), QSizeF(200, QWIDGETSIZE_MAX)); + QEXPECT_FAIL("", "Due to an old bug this wrongly returns QWIDGETSIZE_MAX", Continue); + QCOMPARE(layout->effectiveSizeHint(Qt::MaximumSize, QSizeF(200, -1)), QSizeF(200, 100)); QCOMPARE(layout->effectiveSizeHint(Qt::MinimumSize, QSizeF(2, -1)), QSizeF(2, 10000)); QCOMPARE(layout->effectiveSizeHint(Qt::PreferredSize, QSizeF(2, -1)), QSizeF(2, 10000)); - QCOMPARE(layout->effectiveSizeHint(Qt::MaximumSize, QSizeF(2, -1)), QSizeF(2, QWIDGETSIZE_MAX)); + QEXPECT_FAIL("", "Due to an old bug this wrongly returns QWIDGETSIZE_MAX", Continue); + QCOMPARE(layout->effectiveSizeHint(Qt::MaximumSize, QSizeF(2, -1)), QSizeF(2, 10000)); QCOMPARE(layout->effectiveSizeHint(Qt::MinimumSize, QSizeF(200, -1)), QSizeF(200, 100)); QCOMPARE(layout->effectiveSizeHint(Qt::PreferredSize, QSizeF(200, -1)), QSizeF(200, 100)); - QCOMPARE(layout->effectiveSizeHint(Qt::MaximumSize, QSizeF(200, -1)), QSizeF(200, QWIDGETSIZE_MAX)); + QEXPECT_FAIL("", "Due to an old bug this wrongly returns QWIDGETSIZE_MAX", Continue); + QCOMPARE(layout->effectiveSizeHint(Qt::MaximumSize, QSizeF(200, -1)), QSizeF(200, 10000)); +} + +void tst_QGraphicsGridLayout::stretchAndHeightForWidth() +{ + QGraphicsWidget *widget = new QGraphicsWidget(0, Qt::Window); + QGraphicsGridLayout *layout = new QGraphicsGridLayout; + widget->setLayout(layout); + layout->setContentsMargins(0, 0, 0, 0); + layout->setSpacing(0); + + RectWidget *w1 = new RectWidget; + w1->setSizeHint(Qt::MinimumSize, QSizeF(10, 10)); + w1->setSizeHint(Qt::PreferredSize, QSizeF(100, 100)); + w1->setSizeHint(Qt::MaximumSize, QSizeF(500, 500)); + layout->addItem(w1, 0,0,1,1); + + RectWidget *w2 = new RectWidget; + w2->setSizeHint(Qt::MinimumSize, QSizeF(10, 10)); + w2->setSizeHint(Qt::PreferredSize, QSizeF(100, 100)); + w2->setSizeHint(Qt::MaximumSize, QSizeF(500, 500)); + layout->addItem(w2, 0,1,1,1); + layout->setColumnStretchFactor(1, 2); + + QApplication::sendPostedEvents(); + QGraphicsScene scene; + QGraphicsView *view = new QGraphicsView(&scene); + + scene.addItem(widget); + + view->show(); + + widget->resize(500, 100); + // w1 should stay at its preferred size + QCOMPARE(w1->geometry(), QRectF(0, 0, 100, 100)); + QCOMPARE(w2->geometry(), QRectF(100, 0, 400, 100)); + + + // only w1 has hfw + w1->setConstraintFunction(hfw); + QSizePolicy sp(QSizePolicy::Preferred, QSizePolicy::Preferred); + sp.setHeightForWidth(true); + w1->setSizePolicy(sp); + QApplication::sendPostedEvents(); + + QCOMPARE(w1->geometry(), QRectF(0, 0, 100, 200)); + QCOMPARE(w2->geometry(), QRectF(100, 0, 400, 200)); + + // only w2 has hfw + w2->setConstraintFunction(hfw); + w2->setSizePolicy(sp); + + w1->setConstraintFunction(0); + sp.setHeightForWidth(false); + w1->setSizePolicy(sp); + QApplication::sendPostedEvents(); + + QCOMPARE(w1->geometry(), QRectF(0, 0, 100, 100)); + QCOMPARE(w2->geometry(), QRectF(100, 0, 400, 50)); + } +void tst_QGraphicsGridLayout::testDefaultAlignment() +{ + QGraphicsWidget *widget = new QGraphicsWidget; + QGraphicsGridLayout *layout = new QGraphicsGridLayout(widget); + layout->setContentsMargins(0, 0, 0, 0); + layout->setSpacing(0); + + QGraphicsWidget *w = new QGraphicsWidget; + w->setMinimumSize(50,50); + w->setMaximumSize(50,50); + layout->addItem(w,0,0); + + //Default alignment should be to the top-left + + //First, check by forcing the layout to be bigger + layout->setMinimumSize(100,100); + layout->activate(); + QCOMPARE(layout->geometry(), QRectF(0,0,100,100)); + QCOMPARE(w->geometry(), QRectF(0,0,50,50)); + layout->setMinimumSize(-1,-1); + + //Second, check by forcing the column and row to be bigger instead + layout->setColumnMinimumWidth(0, 100); + layout->setRowMinimumHeight(0, 100); + layout->activate(); + QCOMPARE(layout->geometry(), QRectF(0,0,100,100)); + QCOMPARE(w->geometry(), QRectF(0,0,50,50)); + layout->setMinimumSize(-1,-1); + layout->setColumnMinimumWidth(0, 0); + layout->setRowMinimumHeight(0, 0); + + + //Third, check by adding a larger item in the column + QGraphicsWidget *w2 = new QGraphicsWidget; + w2->setMinimumSize(100,100); + w2->setMaximumSize(100,100); + layout->addItem(w2,1,0); + layout->activate(); + QCOMPARE(layout->geometry(), QRectF(0,0,100,150)); + QCOMPARE(w->geometry(), QRectF(0,0,50,50)); + QCOMPARE(w2->geometry(), QRectF(0,50,100,100)); +} QTEST_MAIN(tst_QGraphicsGridLayout) #include "tst_qgraphicsgridlayout.moc" diff --git a/tests/auto/qgraphicslinearlayout/tst_qgraphicslinearlayout.cpp b/tests/auto/qgraphicslinearlayout/tst_qgraphicslinearlayout.cpp index 6107fa1..965e340 100644 --- a/tests/auto/qgraphicslinearlayout/tst_qgraphicslinearlayout.cpp +++ b/tests/auto/qgraphicslinearlayout/tst_qgraphicslinearlayout.cpp @@ -103,6 +103,9 @@ private slots: void removeLayout(); void avoidRecursionInInsertItem(); void styleInfoLeak(); + void testAlignmentInLargerLayout(); + void testOffByOneInLargerLayout(); + void testDefaultAlignment(); // Task specific tests void task218400_insertStretchCrash(); @@ -1465,6 +1468,121 @@ void tst_QGraphicsLinearLayout::task218400_insertStretchCrash() form->setLayout(layout); // crash } +void tst_QGraphicsLinearLayout::testAlignmentInLargerLayout() +{ + QGraphicsScene *scene = new QGraphicsScene; + QGraphicsWidget *form = new QGraphicsWidget; + scene->addItem(form); + QGraphicsLinearLayout *layout = new QGraphicsLinearLayout(Qt::Vertical, form); + layout->setSpacing(0); + layout->setContentsMargins(0,0,0,0); + + QGraphicsWidget *a = new QGraphicsWidget; + a->setMaximumSize(100,100); + layout->addItem(a); + + QCOMPARE(form->maximumSize(), QSizeF(100,100)); + QCOMPARE(layout->maximumSize(), QSizeF(100,100)); + layout->setMinimumSize(QSizeF(200,200)); + layout->setMaximumSize(QSizeF(200,200)); + + layout->setAlignment(a, Qt::AlignCenter); + layout->activate(); + QCOMPARE(a->geometry(), QRectF(50,50,100,100)); + + layout->setAlignment(a, Qt::AlignRight | Qt::AlignBottom); + layout->activate(); + QCOMPARE(a->geometry(), QRectF(100,100,100,100)); + + layout->setAlignment(a, Qt::AlignHCenter | Qt::AlignTop); + layout->activate(); + QCOMPARE(a->geometry(), QRectF(50,0,100,100)); + + QGraphicsWidget *b = new QGraphicsWidget; + b->setMaximumSize(100,100); + layout->addItem(b); + + layout->setAlignment(a, Qt::AlignCenter); + layout->setAlignment(b, Qt::AlignCenter); + layout->activate(); + QCOMPARE(a->geometry(), QRectF(50,0,100,100)); + QCOMPARE(b->geometry(), QRectF(50,100,100,100)); + + layout->setAlignment(a, Qt::AlignRight | Qt::AlignBottom); + layout->setAlignment(b, Qt::AlignLeft | Qt::AlignTop); + layout->activate(); + QCOMPARE(a->geometry(), QRectF(100,0,100,100)); + QCOMPARE(b->geometry(), QRectF(0,100,100,100)); +} + +void tst_QGraphicsLinearLayout::testOffByOneInLargerLayout() { + QGraphicsScene *scene = new QGraphicsScene; + QGraphicsWidget *form = new QGraphicsWidget; + scene->addItem(form); + QGraphicsLinearLayout *layout = new QGraphicsLinearLayout(Qt::Vertical, form); + layout->setSpacing(0); + layout->setContentsMargins(0,0,0,0); + + QGraphicsWidget *a = new QGraphicsWidget; + QGraphicsWidget *b = new QGraphicsWidget; + a->setMaximumSize(100,100); + b->setMaximumSize(100,100); + layout->addItem(a); + layout->addItem(b); + + layout->setAlignment(a, Qt::AlignRight | Qt::AlignBottom); + layout->setAlignment(b, Qt::AlignLeft | Qt::AlignTop); + layout->setMinimumSize(QSizeF(101,201)); + layout->setMaximumSize(QSizeF(101,201)); + layout->activate(); + QCOMPARE(a->geometry(), QRectF(1,0.5,100,100)); + QCOMPARE(b->geometry(), QRectF(0,100.5,100,100)); + + layout->setMinimumSize(QSizeF(100,200)); + layout->setMaximumSize(QSizeF(100,200)); + layout->activate(); + QCOMPARE(a->geometry(), QRectF(0,0,100,100)); + QCOMPARE(b->geometry(), QRectF(0,100,100,100)); + + layout->setMinimumSize(QSizeF(99,199)); + layout->setMaximumSize(QSizeF(99,199)); + layout->activate(); + QCOMPARE(a->geometry(), QRectF(0,0,99,99.5)); + QCOMPARE(b->geometry(), QRectF(0,99.5,99,99.5)); +} +void tst_QGraphicsLinearLayout::testDefaultAlignment() +{ + QGraphicsWidget *widget = new QGraphicsWidget; + QGraphicsLinearLayout *layout = new QGraphicsLinearLayout(Qt::Vertical, widget); + layout->setContentsMargins(0, 0, 0, 0); + layout->setSpacing(0); + + QGraphicsWidget *w = new QGraphicsWidget; + w->setMinimumSize(50,50); + w->setMaximumSize(50,50); + layout->addItem(w); + + //Default alignment should be to the top-left + QCOMPARE(layout->alignment(w), 0); + + //First, check by forcing the layout to be bigger + layout->setMinimumSize(100,100); + layout->activate(); + QCOMPARE(layout->geometry(), QRectF(0,0,100,100)); + QCOMPARE(w->geometry(), QRectF(0,0,50,50)); + layout->setMinimumSize(-1,-1); + + //Second, check by adding a larger item in the column + QGraphicsWidget *w2 = new QGraphicsWidget; + w2->setMinimumSize(100,100); + w2->setMaximumSize(100,100); + layout->addItem(w2); + layout->activate(); + QCOMPARE(layout->geometry(), QRectF(0,0,100,150)); + QCOMPARE(w->geometry(), QRectF(0,0,50,50)); + QCOMPARE(w2->geometry(), QRectF(0,50,100,100)); +} + QTEST_MAIN(tst_QGraphicsLinearLayout) #include "tst_qgraphicslinearlayout.moc" diff --git a/tests/auto/qnetworkreply/tst_qnetworkreply.cpp b/tests/auto/qnetworkreply/tst_qnetworkreply.cpp index ddb7687..9cf61f9 100644 --- a/tests/auto/qnetworkreply/tst_qnetworkreply.cpp +++ b/tests/auto/qnetworkreply/tst_qnetworkreply.cpp @@ -75,7 +75,6 @@ #include "../network-settings.h" - Q_DECLARE_METATYPE(QNetworkReply*) Q_DECLARE_METATYPE(QAuthenticator*) Q_DECLARE_METATYPE(QNetworkProxy) @@ -84,6 +83,8 @@ Q_DECLARE_METATYPE(QList<QNetworkProxy>) Q_DECLARE_METATYPE(QNetworkReply::NetworkError) Q_DECLARE_METATYPE(QBuffer*) +const int SynchronousRequestAttribute = QNetworkRequest::DownloadBufferAttribute + 1; + class QNetworkReplyPtr: public QSharedPointer<QNetworkReply> { public: @@ -108,6 +109,16 @@ class tst_QNetworkReply: public QObject bool requiresAuthentication; }; + static bool seedCreated; + static QString createUniqueExtension() { + if (!seedCreated) { + qsrand(QTime(0,0,0).msecsTo(QTime::currentTime()) + QCoreApplication::applicationPid()); + seedCreated = true; // not thread-safe, but who cares + } + QString s = QString("%1-%2-%3").arg(QTime(0,0,0).msecsTo(QTime::currentTime())).arg(QCoreApplication::applicationPid()).arg(qrand()); + return s; + }; + QEventLoop *loop; enum RunSimpleRequestReturn { Timeout = 0, Success, Failure }; int returnCode; @@ -173,8 +184,12 @@ private Q_SLOTS: void putToFtp(); void putToHttp_data(); void putToHttp(); + void putToHttpSynchronous_data(); + void putToHttpSynchronous(); void postToHttp_data(); void postToHttp(); + void postToHttpSynchronous_data(); + void postToHttpSynchronous(); void deleteFromHttp_data(); void deleteFromHttp(); void putGetDeleteGetFromHttp_data(); @@ -198,7 +213,9 @@ private Q_SLOTS: void ioGetFromHttpWithReuseParallel(); void ioGetFromHttpWithReuseSequential(); void ioGetFromHttpWithAuth(); + void ioGetFromHttpWithAuthSynchronous(); void ioGetFromHttpWithProxyAuth(); + void ioGetFromHttpWithProxyAuthSynchronous(); void ioGetFromHttpWithSocksProxy(); #ifndef QT_NO_OPENSSL void ioGetFromHttpsWithSslErrors(); @@ -233,6 +250,8 @@ private Q_SLOTS: void ioPostToHttpFromFile(); void ioPostToHttpFromSocket_data(); void ioPostToHttpFromSocket(); + void ioPostToHttpFromSocketSynchronous(); + void ioPostToHttpFromSocketSynchronous_data(); void ioPostToHttpFromMiddleOfFileToEnd(); void ioPostToHttpFromMiddleOfFileFiveBytes(); void ioPostToHttpFromMiddleOfQBufferFiveBytes(); @@ -258,13 +277,19 @@ private Q_SLOTS: void receiveCookiesFromHttp_data(); void receiveCookiesFromHttp(); + void receiveCookiesFromHttpSynchronous_data(); + void receiveCookiesFromHttpSynchronous(); void sendCookies_data(); void sendCookies(); + void sendCookiesSynchronous_data(); + void sendCookiesSynchronous(); void nestedEventLoops(); void httpProxyCommands_data(); void httpProxyCommands(); + void httpProxyCommandsSynchronous_data(); + void httpProxyCommandsSynchronous(); void proxyChange(); void authorizationError_data(); void authorizationError(); @@ -303,12 +328,18 @@ private Q_SLOTS: void qtbug15311doubleContentLength(); + void synchronousRequest_data(); + void synchronousRequest(); + void synchronousRequestSslFailure(); + // NOTE: This test must be last! void parentingRepliesToTheApp(); }; QT_BEGIN_NAMESPACE +bool tst_QNetworkReply::seedCreated = false; + namespace QTest { template<> char *toString(const QNetworkReply::NetworkError& code) @@ -915,14 +946,15 @@ protected: tst_QNetworkReply::tst_QNetworkReply() { + qRegisterMetaType<QNetworkReply *>(); // for QSignalSpy + qRegisterMetaType<QAuthenticator *>(); + qRegisterMetaType<QNetworkProxy>(); + qRegisterMetaType<QList<QSslError> >(); + Q_SET_DEFAULT_IAP testFileName = QDir::currentPath() + "/testfile"; -#ifndef Q_OS_WINCE - uniqueExtension = QString("%1%2%3").arg((qulonglong)this).arg(rand()).arg((qulonglong)time(0)); -#else - uniqueExtension = QString("%1%2").arg((qulonglong)this).arg(rand()); -#endif + uniqueExtension = createUniqueExtension(); cookieJar = new MyCookieJar; manager.setCookieJar(cookieJar); @@ -1009,15 +1041,25 @@ QString tst_QNetworkReply::runSimpleRequest(QNetworkAccessManager::Operation op, Q_ASSERT_X(false, "tst_QNetworkReply", "Invalid/unknown operation requested"); } reply->setParent(this); - connect(reply, SIGNAL(finished()), SLOT(finished())); - connect(reply, SIGNAL(error(QNetworkReply::NetworkError)), SLOT(gotError())); returnCode = Timeout; - loop = new QEventLoop; - QTimer::singleShot(20000, loop, SLOT(quit())); - int code = returnCode == Timeout ? loop->exec() : returnCode; - delete loop; - loop = 0; + int code = Success; + + if (request.attribute(static_cast<QNetworkRequest::Attribute>(SynchronousRequestAttribute)).toBool()) { + if (reply->isFinished()) + code = reply->error() != QNetworkReply::NoError ? Failure : Success; + else + code = Failure; + } else { + connect(reply, SIGNAL(finished()), SLOT(finished())); + connect(reply, SIGNAL(error(QNetworkReply::NetworkError)), SLOT(gotError())); + + loop = new QEventLoop; + QTimer::singleShot(20000, loop, SLOT(quit())); + code = returnCode == Timeout ? loop->exec() : returnCode; + delete loop; + loop = 0; + } switch (code) { case Failure: @@ -1492,6 +1534,9 @@ void tst_QNetworkReply::putToFile_data() data = QByteArray(128*1024+1, '\177'); QTest::newRow("128k+1") << data << md5sum(data); + + data = QByteArray(2*1024*1024+1, '\177'); + QTest::newRow("2MB+1") << data << md5sum(data); } void tst_QNetworkReply::putToFile() @@ -1598,6 +1643,47 @@ void tst_QNetworkReply::putToHttp() QCOMPARE(uploadedData, data); } +void tst_QNetworkReply::putToHttpSynchronous_data() +{ + uniqueExtension = createUniqueExtension(); + putToFile_data(); +} + +void tst_QNetworkReply::putToHttpSynchronous() +{ + QUrl url("http://" + QtNetworkSettings::serverName()); + url.setPath(QString("/dav/qnetworkaccess-putToHttp-%1-%2") + .arg(QTest::currentDataTag()) + .arg(uniqueExtension)); + + QNetworkRequest request(url); + QNetworkReplyPtr reply; + + QFETCH(QByteArray, data); + + request.setAttribute( + static_cast<QNetworkRequest::Attribute>(SynchronousRequestAttribute), + true); + + RUN_REQUEST(runSimpleRequest(QNetworkAccessManager::PutOperation, request, reply, data)); + + QCOMPARE(reply->url(), url); + QCOMPARE(reply->error(), QNetworkReply::NoError); + + QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 201); // 201 Created + + // download the file again from HTTP to make sure it was uploaded + // correctly. HTTP/0.9 is enough + QTcpSocket socket; + socket.connectToHost(QtNetworkSettings::serverName(), 80); + socket.write("GET " + url.toEncoded(QUrl::RemoveScheme | QUrl::RemoveAuthority) + "\r\n"); + if (!socket.waitForDisconnected(10000)) + QFAIL("Network timeout"); + + QByteArray uploadedData = socket.readAll(); + QCOMPARE(uploadedData, data); +} + void tst_QNetworkReply::postToHttp_data() { putToFile_data(); @@ -1624,6 +1710,37 @@ void tst_QNetworkReply::postToHttp() QCOMPARE(uploadedData, md5sum.toHex()); } +void tst_QNetworkReply::postToHttpSynchronous_data() +{ + putToFile_data(); +} + +void tst_QNetworkReply::postToHttpSynchronous() +{ + QUrl url("http://" + QtNetworkSettings::serverName() + "/qtest/cgi-bin/md5sum.cgi"); + + QNetworkRequest request(url); + + request.setAttribute( + static_cast<QNetworkRequest::Attribute>(SynchronousRequestAttribute), + true); + + QNetworkReplyPtr reply; + + QFETCH(QByteArray, data); + + RUN_REQUEST(runSimpleRequest(QNetworkAccessManager::PostOperation, request, reply, data)); + + QCOMPARE(reply->url(), url); + QCOMPARE(reply->error(), QNetworkReply::NoError); + + QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200); // 200 Ok + + QFETCH(QByteArray, md5sum); + QByteArray uploadedData = reply->readAll().trimmed(); + QCOMPARE(uploadedData, md5sum.toHex()); +} + void tst_QNetworkReply::deleteFromHttp_data() { QTest::addColumn<QUrl>("url"); @@ -2048,9 +2165,6 @@ void tst_QNetworkReply::ioGetFromHttpWithReuseSequential() void tst_QNetworkReply::ioGetFromHttpWithAuth() { - qRegisterMetaType<QNetworkReply *>(); // for QSignalSpy - qRegisterMetaType<QAuthenticator *>(); - // This test sends three requests // The first two in parallel // The third after the first two finished @@ -2109,6 +2223,44 @@ void tst_QNetworkReply::ioGetFromHttpWithAuth() QCOMPARE(authspy.count(), 0); } + + // now check with synchronous calls: + reference.seek(0); + { + request.setAttribute( + static_cast<QNetworkRequest::Attribute>(SynchronousRequestAttribute), + true); + + QSignalSpy authspy(&manager, SIGNAL(authenticationRequired(QNetworkReply*,QAuthenticator*))); + QNetworkReplyPtr replySync = manager.get(request); + QVERIFY(replySync->isFinished()); // synchronous + QCOMPARE(authspy.count(), 0); + + // we cannot use a data reader here, since that connects to the readyRead signal, + // just use readAll() + + // the only thing we check here is that the auth cache was used when using synchronous requests + QCOMPARE(replySync->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200); + QCOMPARE(replySync->readAll(), reference.readAll()); + } +} + +void tst_QNetworkReply::ioGetFromHttpWithAuthSynchronous() +{ + // verify that we do not enter an endless loop with synchronous calls and wrong credentials + // the case when we succed with the login is tested in ioGetFromHttpWithAuth() + + QNetworkRequest request(QUrl("http://" + QtNetworkSettings::serverName() + "/qtest/rfcs-auth/rfc3252.txt")); + request.setAttribute( + static_cast<QNetworkRequest::Attribute>(SynchronousRequestAttribute), + true); + + QSignalSpy authspy(&manager, SIGNAL(authenticationRequired(QNetworkReply*,QAuthenticator*))); + QNetworkReplyPtr replySync = manager.get(request); + QVERIFY(replySync->isFinished()); // synchronous + QCOMPARE(replySync->error(), QNetworkReply::AuthenticationRequiredError); + QCOMPARE(authspy.count(), 0); + QCOMPARE(replySync->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 401); } void tst_QNetworkReply::ioGetFromHttpWithProxyAuth() @@ -2180,6 +2332,47 @@ void tst_QNetworkReply::ioGetFromHttpWithProxyAuth() QCOMPARE(authspy.count(), 0); } + + // now check with synchronous calls: + reference.seek(0); + { + request.setAttribute( + static_cast<QNetworkRequest::Attribute>(SynchronousRequestAttribute), + true); + + QSignalSpy authspy(&manager, SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*))); + QNetworkReplyPtr replySync = manager.get(request); + QVERIFY(replySync->isFinished()); // synchronous + QCOMPARE(authspy.count(), 0); + + // we cannot use a data reader here, since that connects to the readyRead signal, + // just use readAll() + + // the only thing we check here is that the proxy auth cache was used when using synchronous requests + QCOMPARE(replySync->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200); + QCOMPARE(replySync->readAll(), reference.readAll()); + } +} + +void tst_QNetworkReply::ioGetFromHttpWithProxyAuthSynchronous() +{ + // verify that we do not enter an endless loop with synchronous calls and wrong credentials + // the case when we succed with the login is tested in ioGetFromHttpWithAuth() + + QNetworkProxy proxy(QNetworkProxy::HttpCachingProxy, QtNetworkSettings::serverName(), 3129); + QNetworkRequest request(QUrl("http://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt")); + manager.setProxy(proxy); + request.setAttribute( + static_cast<QNetworkRequest::Attribute>(SynchronousRequestAttribute), + true); + + QSignalSpy authspy(&manager, SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*))); + QNetworkReplyPtr replySync = manager.get(request); + manager.setProxy(QNetworkProxy()); // reset + QVERIFY(replySync->isFinished()); // synchronous + QCOMPARE(replySync->error(), QNetworkReply::ProxyAuthenticationRequiredError); + QCOMPARE(authspy.count(), 0); + QCOMPARE(replySync->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 407); } void tst_QNetworkReply::ioGetFromHttpWithSocksProxy() @@ -3238,7 +3431,67 @@ void tst_QNetworkReply::ioPostToHttpFromSocket() QTEST(authenticationRequiredSpy.count(), "authenticationRequiredCount"); QTEST(proxyAuthenticationRequiredSpy.count(), "proxyAuthenticationRequiredCount"); - } +} + +void tst_QNetworkReply::ioPostToHttpFromSocketSynchronous_data() +{ + QTest::addColumn<QByteArray>("data"); + QTest::addColumn<QByteArray>("md5sum"); + + QByteArray data; + data = ""; + QTest::newRow("empty") << data << md5sum(data); + + data = "This is a normal message."; + QTest::newRow("generic") << data << md5sum(data); + + data = "This is a message to show that Qt rocks!\r\n\n"; + QTest::newRow("small") << data << md5sum(data); + + data = QByteArray("abcd\0\1\2\abcd",12); + QTest::newRow("with-nul") << data << md5sum(data); + + data = QByteArray(4097, '\4'); + QTest::newRow("4k+1") << data << md5sum(data); + + data = QByteArray(128*1024+1, '\177'); + QTest::newRow("128k+1") << data << md5sum(data); + + data = QByteArray(2*1024*1024+1, '\177'); + QTest::newRow("2MB+1") << data << md5sum(data); +} + +void tst_QNetworkReply::ioPostToHttpFromSocketSynchronous() +{ + QFETCH(QByteArray, data); + + SocketPair socketpair; + QVERIFY(socketpair.create()); + QVERIFY(socketpair.endPoints[0] && socketpair.endPoints[1]); + socketpair.endPoints[0]->write(data); + socketpair.endPoints[0]->waitForBytesWritten(5000); + // ### for 4.8: make the socket pair unbuffered, to not read everything in one go in QNetworkReplyImplPrivate::setup() + QTestEventLoop::instance().enterLoop(3); + + QUrl url("http://" + QtNetworkSettings::serverName() + "/qtest/cgi-bin/md5sum.cgi"); + QNetworkRequest request(url); + request.setAttribute( + static_cast<QNetworkRequest::Attribute>(SynchronousRequestAttribute), + true); + + QNetworkReplyPtr reply = manager.post(request, socketpair.endPoints[1]); + QVERIFY(reply->isFinished()); + socketpair.endPoints[0]->close(); + + QCOMPARE(reply->error(), QNetworkReply::NoError); + + QCOMPARE(reply->url(), url); + QCOMPARE(reply->error(), QNetworkReply::NoError); + // verify that the HTTP status code is 200 Ok + QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200); + + QCOMPARE(reply->readAll().trimmed(), md5sum(data).toHex()); +} // this tests checks if rewinding the POST-data to some place in the middle // worked. @@ -3981,6 +4234,38 @@ void tst_QNetworkReply::receiveCookiesFromHttp() QTEST(cookieJar->allCookies(), "expectedCookiesInJar"); } +void tst_QNetworkReply::receiveCookiesFromHttpSynchronous_data() +{ + tst_QNetworkReply::receiveCookiesFromHttp_data(); +} + +void tst_QNetworkReply::receiveCookiesFromHttpSynchronous() +{ + QFETCH(QString, cookieString); + + QByteArray data = cookieString.toLatin1() + '\n'; + QUrl url("http://" + QtNetworkSettings::serverName() + "/qtest/cgi-bin/set-cookie.cgi"); + + QNetworkRequest request(url); + + request.setAttribute( + static_cast<QNetworkRequest::Attribute>(SynchronousRequestAttribute), + true); + + QNetworkReplyPtr reply; + RUN_REQUEST(runSimpleRequest(QNetworkAccessManager::PostOperation, request, reply, data)); + + QCOMPARE(reply->url(), url); + QCOMPARE(reply->error(), QNetworkReply::NoError); + + QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200); // 200 Ok + + QList<QNetworkCookie> setCookies = + qvariant_cast<QList<QNetworkCookie> >(reply->header(QNetworkRequest::SetCookieHeader)); + QTEST(setCookies, "expectedCookiesFromHttp"); + QTEST(cookieJar->allCookies(), "expectedCookiesInJar"); +} + void tst_QNetworkReply::sendCookies_data() { QTest::addColumn<QList<QNetworkCookie> >("cookiesToSet"); @@ -4041,6 +4326,35 @@ void tst_QNetworkReply::sendCookies() QCOMPARE(QString::fromLatin1(reply->readAll()).trimmed(), expectedCookieString); } +void tst_QNetworkReply::sendCookiesSynchronous_data() +{ + tst_QNetworkReply::sendCookies_data(); +} + +void tst_QNetworkReply::sendCookiesSynchronous() +{ + QFETCH(QString, expectedCookieString); + QFETCH(QList<QNetworkCookie>, cookiesToSet); + cookieJar->setAllCookies(cookiesToSet); + + QUrl url("http://" + QtNetworkSettings::serverName() + "/qtest/cgi-bin/get-cookie.cgi"); + QNetworkRequest request(url); + + request.setAttribute( + static_cast<QNetworkRequest::Attribute>(SynchronousRequestAttribute), + true); + + QNetworkReplyPtr reply; + RUN_REQUEST(runSimpleRequest(QNetworkAccessManager::GetOperation, request, reply)); + + QCOMPARE(reply->url(), url); + QCOMPARE(reply->error(), QNetworkReply::NoError); + + QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200); // 200 Ok + + QCOMPARE(QString::fromLatin1(reply->readAll()).trimmed(), expectedCookieString); +} + void tst_QNetworkReply::nestedEventLoops_slot() { QEventLoop subloop; @@ -4144,6 +4458,50 @@ private: int signalCount; }; +void tst_QNetworkReply::httpProxyCommandsSynchronous_data() +{ + httpProxyCommands_data(); +} + +void tst_QNetworkReply::httpProxyCommandsSynchronous() +{ + QFETCH(QUrl, url); + QFETCH(QByteArray, responseToSend); + QFETCH(QString, expectedCommand); + + // when using synchronous commands, we need a different event loop for + // the server thread, because the client is never returning to the + // event loop + MiniHttpServer proxyServer(responseToSend); + QThread serverThread; + proxyServer.moveToThread(&serverThread); + serverThread.start(); + QNetworkProxy proxy(QNetworkProxy::HttpProxy, "127.0.0.1", proxyServer.serverPort()); + + manager.setProxy(proxy); + QNetworkRequest request(url); + + // send synchronous request + request.setAttribute( + static_cast<QNetworkRequest::Attribute>(SynchronousRequestAttribute), + true); + + QNetworkReplyPtr reply = manager.get(request); + QVERIFY(reply->isFinished()); // synchronous + manager.setProxy(QNetworkProxy()); + serverThread.quit(); + serverThread.wait(3000); + + //qDebug() << reply->error() << reply->errorString(); + + // we don't really care if the request succeeded + // especially since it won't succeed in the HTTPS case + // so just check that the command was correct + + QString receivedHeader = proxyServer.receivedData.left(expectedCommand.length()); + QCOMPARE(receivedHeader, expectedCommand); +} + void tst_QNetworkReply::proxyChange() { ProxyChangeHelper helper; @@ -4746,7 +5104,122 @@ void tst_QNetworkReply::qtbug15311doubleContentLength() QCOMPARE(reply->readAll(), QByteArray("ABC")); } +void tst_QNetworkReply::synchronousRequest_data() +{ + QTest::addColumn<QUrl>("url"); + QTest::addColumn<QString>("expected"); + QTest::addColumn<bool>("checkContentLength"); + QTest::addColumn<QString>("mimeType"); + + // ### cache, auth, proxies + + QTest::newRow("http") + << QUrl("http://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt") + << QString("file:" SRCDIR "/rfc3252.txt") + << true + << QString("text/plain"); + + QTest::newRow("http-gzip") + << QUrl("http://" + QtNetworkSettings::serverName() + "/qtest/deflate/rfc3252.txt") + << QString("file:" SRCDIR "/rfc3252.txt") + << false // don't check content length, because it's gzip encoded + // ### we would need to enflate (un-deflate) the file content and compare the sizes + << QString("text/plain"); + +#ifndef QT_NO_OPENSSL + QTest::newRow("https") + << QUrl("https://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt") + << QString("file:" SRCDIR "/rfc3252.txt") + << true + << QString("text/plain"); +#endif + + QTest::newRow("data") + << QUrl(QString::fromLatin1("data:text/plain,hello world")) + << QString("data:hello world") + << true // check content length + << QString("text/plain"); + + QTest::newRow("simple-file") + << QUrl(QString::fromLatin1("file:///" SRCDIR "/rfc3252.txt")) + << QString("file:" SRCDIR "/rfc3252.txt") + << true + << QString(); +} + +// FIXME add testcase for failing network etc +void tst_QNetworkReply::synchronousRequest() +{ + QFETCH(QUrl, url); + QFETCH(QString, expected); + QFETCH(bool, checkContentLength); + QFETCH(QString, mimeType); + + QNetworkRequest request(url); + +#ifndef QT_NO_OPENSSL + // workaround for HTTPS requests: add self-signed server cert to list of CA certs, + // since we cannot react to the sslErrors() signal + // to fix this properly we would need to have an ignoreSslErrors() method in the + // QNetworkRequest, see http://bugreports.qt.nokia.com/browse/QTBUG-14774 + if (url.scheme() == "https") { + QSslConfiguration sslConf; + QList<QSslCertificate> certs = QSslCertificate::fromPath(SRCDIR "/certs/qt-test-server-cacert.pem"); + sslConf.setCaCertificates(certs); + request.setSslConfiguration(sslConf); + } +#endif + + request.setAttribute( + static_cast<QNetworkRequest::Attribute>(SynchronousRequestAttribute), + true); + + QNetworkReplyPtr reply; + QSignalSpy finishedSpy(&manager, SIGNAL(finished(QNetworkReply*))); + QSignalSpy sslErrorsSpy(&manager, SIGNAL(sslErrors(QNetworkReply*,QList<QSslError>))); + RUN_REQUEST(runSimpleRequest(QNetworkAccessManager::GetOperation, request, reply, 0)); + QVERIFY(reply->isFinished()); + QCOMPARE(finishedSpy.count(), 0); + QCOMPARE(sslErrorsSpy.count(), 0); + + QCOMPARE(reply->header(QNetworkRequest::ContentTypeHeader).toString(), mimeType); + + QByteArray expectedContent; + + if (expected.startsWith("file:")) { + QString path = expected.mid(5); + QFile file(path); + file.open(QIODevice::ReadOnly); + expectedContent = file.readAll(); + } else if (expected.startsWith("data:")) { + expectedContent = expected.mid(5).toUtf8(); + } + + if (checkContentLength) + QCOMPARE(reply->header(QNetworkRequest::ContentLengthHeader).toLongLong(), qint64(expectedContent.size())); + QCOMPARE(reply->readAll(), expectedContent); + + reply->deleteLater(); +} + +void tst_QNetworkReply::synchronousRequestSslFailure() +{ + // test that SSL won't be accepted with self-signed certificate, + // and that we do not emit the sslError signal (in the manager that is, + // in the reply we don't care) + QUrl url("https://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt"); + QNetworkRequest request(url); + request.setAttribute( + static_cast<QNetworkRequest::Attribute>(SynchronousRequestAttribute), + true); + QNetworkReplyPtr reply; + QSignalSpy sslErrorsSpy(&manager, SIGNAL(sslErrors(QNetworkReply *, const QList<QSslError> &))); + runSimpleRequest(QNetworkAccessManager::GetOperation, request, reply, 0); + QVERIFY(reply->isFinished()); + QCOMPARE(reply->error(), QNetworkReply::SslHandshakeFailedError); + QCOMPARE(sslErrorsSpy.count(), 0); +} // NOTE: This test must be last testcase in tst_qnetworkreply! void tst_QNetworkReply::parentingRepliesToTheApp() diff --git a/tests/auto/qsettings/tst_qsettings.cpp b/tests/auto/qsettings/tst_qsettings.cpp index 0395eff..0813e28 100644 --- a/tests/auto/qsettings/tst_qsettings.cpp +++ b/tests/auto/qsettings/tst_qsettings.cpp @@ -51,6 +51,7 @@ #include <QtCore/QMetaType> #include <QtCore/QtDebug> #include <QtCore/QString> +#include "../../shared/util.h" #if !defined(Q_OS_SYMBIAN) # include <cctype> @@ -1726,26 +1727,22 @@ void tst_QSettings::testUpdateRequestEvent() settings1.setValue("key1", 1); QVERIFY(QFileInfo("foo").size() == 0); - qApp->processEvents(); - QVERIFY(QFileInfo("foo").size() > 0); + QTRY_VERIFY(QFileInfo("foo").size() > 0); settings1.remove("key1"); QVERIFY(QFileInfo("foo").size() > 0); - qApp->processEvents(); - QVERIFY(QFileInfo("foo").size() == 0); + QTRY_VERIFY(QFileInfo("foo").size() == 0); settings1.setValue("key2", 2); QVERIFY(QFileInfo("foo").size() == 0); - qApp->processEvents(); - QVERIFY(QFileInfo("foo").size() > 0); + QTRY_VERIFY(QFileInfo("foo").size() > 0); settings1.clear(); QVERIFY(QFileInfo("foo").size() > 0); - qApp->processEvents(); - QVERIFY(QFileInfo("foo").size() == 0); + QTRY_VERIFY(QFileInfo("foo").size() == 0); } const int NumIterations = 5; diff --git a/tests/auto/qsharedpointer/tst_qsharedpointer.cpp b/tests/auto/qsharedpointer/tst_qsharedpointer.cpp index 6b4904f..a05aa97 100644 --- a/tests/auto/qsharedpointer/tst_qsharedpointer.cpp +++ b/tests/auto/qsharedpointer/tst_qsharedpointer.cpp @@ -283,8 +283,8 @@ void tst_QSharedPointer::operators() QSharedPointer<char> p1; QSharedPointer<char> p2(new char); qptrdiff diff = p2.data() - p1.data(); - Q_ASSERT(p1.data() < p2.data()); - Q_ASSERT(diff > 0); + Q_ASSERT(p1.data() != p2.data()); + Q_ASSERT(diff != 0); // operator- QCOMPARE(p2 - p1.data(), diff); diff --git a/tests/auto/qthread/tst_qthread.cpp b/tests/auto/qthread/tst_qthread.cpp index 843749a..b0efb5a 100644 --- a/tests/auto/qthread/tst_qthread.cpp +++ b/tests/auto/qthread/tst_qthread.cpp @@ -106,6 +106,7 @@ private slots: void adoptMultipleThreads(); void QTBUG13810_exitAndStart(); + void QTBUG15378_exitAndExec(); void stressTest(); }; @@ -976,5 +977,45 @@ void tst_QThread::QTBUG13810_exitAndStart() } +void tst_QThread::QTBUG15378_exitAndExec() +{ + class Thread : public QThread { + public: + QSemaphore sem1; + QSemaphore sem2; + volatile int value; + void run() { + sem1.acquire(); + value = exec(); //First entrence + sem2.release(); + value = exec(); // Second loop + } + }; + Thread thread; + thread.value = 0; + thread.start(); + thread.exit(556); + thread.sem1.release(); //should exit the first loop + thread.sem2.acquire(); + int v = thread.value; + QCOMPARE(v, 556); + + //test that the thread is running by executing queued connected signal there + Syncronizer sync1; + sync1.moveToThread(&thread); + Syncronizer sync2; + sync2.moveToThread(&thread); + connect(&sync2, SIGNAL(propChanged(int)), &sync1, SLOT(setProp(int)), Qt::QueuedConnection); + connect(&sync1, SIGNAL(propChanged(int)), &thread, SLOT(quit()), Qt::QueuedConnection); + QMetaObject::invokeMethod(&sync2, "setProp", Qt::QueuedConnection , Q_ARG(int, 89)); + QTest::qWait(50); + while(!thread.wait(10)) + QTest::qWait(10); + QCOMPARE(sync2.m_prop, 89); + QCOMPARE(sync1.m_prop, 89); +} + + + QTEST_MAIN(tst_QThread) #include "tst_qthread.moc" diff --git a/tests/auto/qwidget/tst_qwidget.cpp b/tests/auto/qwidget/tst_qwidget.cpp index 09af941..5521873 100644 --- a/tests/auto/qwidget/tst_qwidget.cpp +++ b/tests/auto/qwidget/tst_qwidget.cpp @@ -4389,7 +4389,6 @@ class WinIdChangeWidget : public QWidget { public: WinIdChangeWidget(QWidget *p = 0) : QWidget(p) - , m_winIdChangeEventCount(0) { } @@ -4397,13 +4396,14 @@ protected: bool event(QEvent *e) { if (e->type() == QEvent::WinIdChange) { - ++m_winIdChangeEventCount; + m_winIdList.append(internalWinId()); return true; } return QWidget::event(e); } public: - int m_winIdChangeEventCount; + QList<WId> m_winIdList; + int winIdChangeEventCount() const { return m_winIdList.count(); } }; void tst_QWidget::winIdChangeEvent() @@ -4414,7 +4414,7 @@ void tst_QWidget::winIdChangeEvent() const WId winIdBefore = widget.internalWinId(); const WId winIdAfter = widget.winId(); QVERIFY(winIdBefore != winIdAfter); - QCOMPARE(widget.m_winIdChangeEventCount, 1); + QCOMPARE(widget.winIdChangeEventCount(), 1); } { @@ -4423,11 +4423,13 @@ void tst_QWidget::winIdChangeEvent() QWidget parent1, parent2; WinIdChangeWidget child(&parent1); const WId winIdBefore = child.winId(); - QCOMPARE(child.m_winIdChangeEventCount, 1); + QCOMPARE(child.winIdChangeEventCount(), 1); child.setParent(&parent2); const WId winIdAfter = child.internalWinId(); QVERIFY(winIdBefore != winIdAfter); - QCOMPARE(child.m_winIdChangeEventCount, 2); + QCOMPARE(child.winIdChangeEventCount(), 3); + // winId is set to zero during reparenting + QVERIFY(0 == child.m_winIdList[1]); } { @@ -4437,15 +4439,16 @@ void tst_QWidget::winIdChangeEvent() QWidget parent(&grandparent1); WinIdChangeWidget child(&parent); const WId winIdBefore = child.winId(); - QCOMPARE(child.m_winIdChangeEventCount, 1); + QCOMPARE(child.winIdChangeEventCount(), 1); parent.setParent(&grandparent2); const WId winIdAfter = child.internalWinId(); #ifdef Q_OS_SYMBIAN QVERIFY(winIdBefore != winIdAfter); - QCOMPARE(child.m_winIdChangeEventCount, 2); + QVERIFY(winIdAfter != 0); + QCOMPARE(child.winIdChangeEventCount(), 2); #else QCOMPARE(winIdBefore, winIdAfter); - QCOMPARE(child.m_winIdChangeEventCount, 1); + QCOMPARE(child.winIdChangeEventCount(), 1); #endif } @@ -4457,7 +4460,7 @@ void tst_QWidget::winIdChangeEvent() child.setParent(&parent2); const WId winIdAfter = child.internalWinId(); QCOMPARE(winIdBefore, winIdAfter); - QCOMPARE(child.m_winIdChangeEventCount, 0); + QCOMPARE(child.winIdChangeEventCount(), 0); } { @@ -4466,12 +4469,14 @@ void tst_QWidget::winIdChangeEvent() WinIdChangeWidget child(&parent); child.winId(); const WId winIdBefore = child.internalWinId(); - QCOMPARE(child.m_winIdChangeEventCount, 1); + QCOMPARE(child.winIdChangeEventCount(), 1); const Qt::WindowFlags flags = child.windowFlags(); child.setWindowFlags(flags | Qt::Window); const WId winIdAfter = child.internalWinId(); QVERIFY(winIdBefore != winIdAfter); - QCOMPARE(child.m_winIdChangeEventCount, 2); + QCOMPARE(child.winIdChangeEventCount(), 3); + // winId is set to zero during reparenting + QVERIFY(0 == child.m_winIdList[1]); } } diff --git a/tests/auto/selftests/expected_cmptest.txt b/tests/auto/selftests/expected_cmptest.txt index 7f3aa9a..fccaca3 100644 --- a/tests/auto/selftests/expected_cmptest.txt +++ b/tests/auto/selftests/expected_cmptest.txt @@ -1,5 +1,5 @@ ********* Start testing of tst_Cmptest ********* -Config: Using QTest library 4.7.1, Qt 4.7.1 +Config: Using QTest library 4.7.2, Qt 4.7.2 PASS : tst_Cmptest::initTestCase() PASS : tst_Cmptest::compare_boolfuncs() PASS : tst_Cmptest::compare_pointerfuncs() diff --git a/tests/auto/selftests/expected_crashes_3.txt b/tests/auto/selftests/expected_crashes_3.txt index 7ded525..2558f68 100644 --- a/tests/auto/selftests/expected_crashes_3.txt +++ b/tests/auto/selftests/expected_crashes_3.txt @@ -1,5 +1,5 @@ ********* Start testing of tst_Crashes ********* -Config: Using QTest library 4.7.1, Qt 4.7.1 +Config: Using QTest library 4.7.2, Qt 4.7.2 PASS : tst_Crashes::initTestCase() QFATAL : tst_Crashes::crash() Received signal 11 FAIL! : tst_Crashes::crash() Received a fatal error. diff --git a/tests/auto/selftests/expected_longstring.txt b/tests/auto/selftests/expected_longstring.txt index 9ad6f56..c56244b 100644 --- a/tests/auto/selftests/expected_longstring.txt +++ b/tests/auto/selftests/expected_longstring.txt @@ -1,5 +1,5 @@ ********* Start testing of tst_LongString ********* -Config: Using QTest library 4.7.1, Qt 4.7.1 +Config: Using QTest library 4.7.2, Qt 4.7.2 PASS : tst_LongString::initTestCase() FAIL! : tst_LongString::failWithLongString() Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. Nulla consequat massa quis enim. Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu. In enim justo, rhoncus ut, imperdiet a, venenatis vitae, justo. Nullam dictum felis eu pede mollis pretium. Integer tincidunt. Cras dapibus. Vivamus elementum semper nisi. Aenean vulputate eleifend tellus. Aenean leo ligula, porttitor eu, consequat vitae, eleifend ac, enim. Aliquam lorem ante, dapibus in, viverra quis, feugiat a, tellus. Phasellus viverra nulla ut metus varius laoreet. Quisque rutrum. Aenean imperdiet. Etiam ultricies nisi vel augue. Curabitur ullamcorper ultricies nisi. Nam eget dui. diff --git a/tests/auto/selftests/expected_maxwarnings.txt b/tests/auto/selftests/expected_maxwarnings.txt index 949da13..7846435 100644 --- a/tests/auto/selftests/expected_maxwarnings.txt +++ b/tests/auto/selftests/expected_maxwarnings.txt @@ -1,5 +1,5 @@ ********* Start testing of MaxWarnings ********* -Config: Using QTest library 4.7.1, Qt 4.7.1 +Config: Using QTest library 4.7.2, Qt 4.7.2 PASS : MaxWarnings::initTestCase() QWARN : MaxWarnings::warn() 0 QWARN : MaxWarnings::warn() 1 diff --git a/tests/auto/selftests/expected_skip.txt b/tests/auto/selftests/expected_skip.txt index 1f5bf7b..5c9e497 100644 --- a/tests/auto/selftests/expected_skip.txt +++ b/tests/auto/selftests/expected_skip.txt @@ -1,5 +1,5 @@ ********* Start testing of tst_Skip ********* -Config: Using QTest library 4.7.1, Qt 4.7.1 +Config: Using QTest library 4.7.2, Qt 4.7.2 PASS : tst_Skip::initTestCase() SKIP : tst_Skip::test() skipping all Loc: [/home/user/depot/qt-git/mainline/tests/auto/selftests/skip/tst_skip.cpp(68)] diff --git a/tests/benchmarks/gui/graphicsview/qgraphicslinearlayout/qgraphicslinearlayout.pro b/tests/benchmarks/gui/graphicsview/qgraphicslinearlayout/qgraphicslinearlayout.pro new file mode 100644 index 0000000..ff85fe8 --- /dev/null +++ b/tests/benchmarks/gui/graphicsview/qgraphicslinearlayout/qgraphicslinearlayout.pro @@ -0,0 +1,6 @@ +load(qttest_p4) +TEMPLATE = app +TARGET = tst_bench_qgraphicslinearlayout + +SOURCES += tst_qgraphicslinearlayout.cpp + diff --git a/tests/benchmarks/gui/graphicsview/qgraphicslinearlayout/tst_qgraphicslinearlayout.cpp b/tests/benchmarks/gui/graphicsview/qgraphicslinearlayout/tst_qgraphicslinearlayout.cpp new file mode 100644 index 0000000..dc415fb --- /dev/null +++ b/tests/benchmarks/gui/graphicsview/qgraphicslinearlayout/tst_qgraphicslinearlayout.cpp @@ -0,0 +1,133 @@ +/**************************************************************************** +** +** Copyright (C) 2010 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 <QtTest/QtTest> +#include <QtGui/qgraphicslinearlayout.h> +#include <QtGui/qgraphicswidget.h> +#include <QtGui/qgraphicsview.h> + +class tst_QGraphicsLinearLayout : public QObject +{ + Q_OBJECT +public: + tst_QGraphicsLinearLayout() {} + ~tst_QGraphicsLinearLayout() {} + +private slots: + void heightForWidth_data(); + void heightForWidth(); +}; + + +struct MySquareWidget : public QGraphicsWidget +{ + MySquareWidget() {} + virtual QSizeF sizeHint ( Qt::SizeHint which, const QSizeF & constraint = QSizeF() ) const + { + if (which != Qt::PreferredSize) + return QGraphicsWidget::sizeHint(which, constraint); + if (constraint.width() < 0) + return QGraphicsWidget::sizeHint(which, constraint); + return QSizeF(constraint.width(), constraint.width()); + } +}; + +void tst_QGraphicsLinearLayout::heightForWidth_data() +{ + QTest::addColumn<bool>("hfw"); + QTest::addColumn<bool>("nested"); + + QTest::newRow("hfw") << true << false; + QTest::newRow("hfw, nested") << true << true; + QTest::newRow("not hfw") << false << false; + QTest::newRow("not hfw, nested") << false << true; +} + +void tst_QGraphicsLinearLayout::heightForWidth() +{ + QFETCH(bool, hfw); + QFETCH(bool, nested); + + QGraphicsScene scene; + QGraphicsWidget *form = new QGraphicsWidget; + scene.addItem(form); + + QGraphicsLinearLayout *outerlayout = 0; + if (nested) { + outerlayout = new QGraphicsLinearLayout(form); + for (int i = 0; i < 8; i++) { + QGraphicsLinearLayout *layout = new QGraphicsLinearLayout(Qt::Vertical); + outerlayout->addItem(layout); + outerlayout = layout; + } + } + + QGraphicsLinearLayout *qlayout = 0; + qlayout = new QGraphicsLinearLayout(Qt::Vertical); + if (nested) + outerlayout->addItem(qlayout); + else + form->setLayout(qlayout); + + MySquareWidget *widget = new MySquareWidget; + for (int i = 0; i < 1; i++) { + widget = new MySquareWidget; + QSizePolicy sizepolicy = widget->sizePolicy(); + sizepolicy.setHeightForWidth(hfw); + widget->setSizePolicy(sizepolicy); + qlayout->addItem(widget); + } + // make sure only one iteration is done. + // run with tst_QGraphicsLinearLayout.exe "heightForWidth" -tickcounter -iterations 6 + // this will iterate 6 times the whole test, (not only the benchmark) + // which should reduce warmup time and give a realistic picture of the performance of + // effectiveSizeHint() + QSizeF constraint(hfw ? 100 : -1, -1); + QBENCHMARK { + (void)form->effectiveSizeHint(Qt::PreferredSize, constraint); + } + +} + + +QTEST_MAIN(tst_QGraphicsLinearLayout) + +#include "tst_qgraphicslinearlayout.moc" |