summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorMartin Jones <martin.jones@nokia.com>2010-12-01 07:36:41 (GMT)
committerMartin Jones <martin.jones@nokia.com>2010-12-01 07:36:41 (GMT)
commita305814f8f59f634943d8d5f8d87d2fd49891cb3 (patch)
tree42ed4e6afecbf36af2750e2eeaed87117ab942a6 /tests
parent6258fc281f5b66b2634b81a2633b117165cea7ef (diff)
parent1337a3e031477aa4d628d01252557dee622629ff (diff)
downloadQt-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')
-rw-r--r--tests/auto/declarative/qdeclarativeecmascript/data/AliasBindingsAssignCorrectlyType.qml9
-rw-r--r--tests/auto/declarative/qdeclarativeecmascript/data/AliasBindingsOverrideTargetType.qml14
-rw-r--r--tests/auto/declarative/qdeclarativeecmascript/data/AliasBindingsOverrideTargetType3.qml9
-rw-r--r--tests/auto/declarative/qdeclarativeecmascript/data/aliasBindingsAssignCorrectly.qml59
-rw-r--r--tests/auto/declarative/qdeclarativeecmascript/data/aliasBindingsOverrideTarget.2.qml29
-rw-r--r--tests/auto/declarative/qdeclarativeecmascript/data/aliasBindingsOverrideTarget.3.qml24
-rw-r--r--tests/auto/declarative/qdeclarativeecmascript/data/aliasBindingsOverrideTarget.qml28
-rw-r--r--tests/auto/declarative/qdeclarativeecmascript/data/aliasWritesOverrideBindings.2.qml29
-rw-r--r--tests/auto/declarative/qdeclarativeecmascript/data/aliasWritesOverrideBindings.3.qml23
-rw-r--r--tests/auto/declarative/qdeclarativeecmascript/data/aliasWritesOverrideBindings.qml23
-rw-r--r--tests/auto/declarative/qdeclarativeecmascript/data/writeRemovesBinding.qml46
-rw-r--r--tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp180
-rw-r--r--tests/auto/declarative/qdeclarativegridview/tst_qdeclarativegridview.cpp2
-rw-r--r--tests/auto/declarative/qdeclarativeimage/tst_qdeclarativeimage.cpp30
-rw-r--r--tests/auto/declarative/qdeclarativeinstruction/tst_qdeclarativeinstruction.cpp5
-rw-r--r--tests/auto/declarative/qdeclarativelistview/data/header.qml31
-rw-r--r--tests/auto/declarative/qdeclarativelistview/data/header1.qml33
-rw-r--r--tests/auto/declarative/qdeclarativelistview/tst_qdeclarativelistview.cpp62
-rw-r--r--tests/auto/declarative/qdeclarativeproperty/data/aliasPropertyBindings.qml19
-rw-r--r--tests/auto/declarative/qdeclarativeproperty/tst_qdeclarativeproperty.cpp69
-rw-r--r--tests/auto/declarative/qdeclarativevaluetypes/data/BindingsSpliceCorrectlyType.qml7
-rw-r--r--tests/auto/declarative/qdeclarativevaluetypes/data/BindingsSpliceCorrectlyType4.qml7
-rw-r--r--tests/auto/declarative/qdeclarativevaluetypes/data/BindingsSpliceCorrectlyType5.qml7
-rw-r--r--tests/auto/declarative/qdeclarativevaluetypes/data/bindingsSpliceCorrectly.1.qml29
-rw-r--r--tests/auto/declarative/qdeclarativevaluetypes/data/bindingsSpliceCorrectly.2.qml31
-rw-r--r--tests/auto/declarative/qdeclarativevaluetypes/data/bindingsSpliceCorrectly.3.qml36
-rw-r--r--tests/auto/declarative/qdeclarativevaluetypes/data/bindingsSpliceCorrectly.4.qml27
-rw-r--r--tests/auto/declarative/qdeclarativevaluetypes/data/bindingsSpliceCorrectly.5.qml27
-rw-r--r--tests/auto/declarative/qdeclarativevaluetypes/tst_qdeclarativevaluetypes.cpp56
-rw-r--r--tests/auto/declarative/qdeclarativeviewer/tst_qdeclarativeviewer.cpp12
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data-MAC/flickable-horizontal.0.pngbin0 -> 1439 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data-MAC/flickable-horizontal.1.pngbin0 -> 1424 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data-MAC/flickable-horizontal.2.pngbin0 -> 1428 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data-MAC/flickable-horizontal.3.pngbin0 -> 1396 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data-MAC/flickable-horizontal.4.pngbin0 -> 1454 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data-MAC/flickable-horizontal.qml1575
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-horizontal.qml2
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.qml4
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.0.pngbin0 -> 941 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.1.pngbin0 -> 975 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.2.pngbin0 -> 1235 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.3.pngbin0 -> 1225 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.4.pngbin0 -> 1247 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.5.pngbin0 -> 1243 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.6.pngbin0 -> 1234 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.7.pngbin0 -> 1242 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.qml1763
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/align/data-MAC/multilineAlign.0.pngbin2569 -> 801 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/align/data-MAC/multilineAlign.qml118
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/baseline/data-MAC/parentanchor.0.pngbin5648 -> 1392 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/baseline/data-MAC/parentanchor.qml60
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/bugs/data-MAC/QTBUG-14469.0.pngbin0 -> 210 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/bugs/data-MAC/QTBUG-14469.1.pngbin0 -> 270 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/bugs/data-MAC/QTBUG-14469.qml475
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/data-MAC/qtbug_14865.0.pngbin1083 -> 322 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/data-MAC/qtbug_14865.1.pngbin1083 -> 322 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/data-MAC/qtbug_14865.qml122
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide.0.pngbin1353 -> 491 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide.1.pngbin1353 -> 491 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide.qml130
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.0.pngbin3572 -> 1240 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.1.pngbin3320 -> 1106 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.2.pngbin2953 -> 999 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.3.pngbin2386 -> 864 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.4.pngbin1650 -> 703 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.qml480
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/multilength.0.pngbin2748 -> 791 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/multilength.1.pngbin3064 -> 854 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/multilength.qml144
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/plaintext.0.pngbin60155 -> 14238 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/plaintext2.0.pngbin3805 -> 1563 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/plaintext3.0.pngbin21056 -> 6348 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/richtext.0.pngbin62489 -> 9321 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/richtext2.0.pngbin29962 -> 10663 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.1.pngbin715 -> 343 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.2.pngbin1295 -> 461 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.3.pngbin1922 -> 539 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.qml332
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.qml12
-rw-r--r--tests/auto/declarative/qmlvisual/tst_qmlvisual.cpp14
-rw-r--r--tests/auto/qabstractnetworkcache/tst_qabstractnetworkcache.cpp111
-rw-r--r--tests/auto/qdbusconnection/tst_qdbusconnection.cpp69
-rw-r--r--tests/auto/qfilesystemwatcher/tst_qfilesystemwatcher.cpp9
-rw-r--r--tests/auto/qgraphicsgridlayout/tst_qgraphicsgridlayout.cpp366
-rw-r--r--tests/auto/qgraphicslinearlayout/tst_qgraphicslinearlayout.cpp118
-rw-r--r--tests/auto/qnetworkreply/tst_qnetworkreply.cpp507
-rw-r--r--tests/auto/qsettings/tst_qsettings.cpp13
-rw-r--r--tests/auto/qsharedpointer/tst_qsharedpointer.cpp4
-rw-r--r--tests/auto/qthread/tst_qthread.cpp41
-rw-r--r--tests/auto/qwidget/tst_qwidget.cpp29
-rw-r--r--tests/auto/selftests/expected_cmptest.txt2
-rw-r--r--tests/auto/selftests/expected_crashes_3.txt2
-rw-r--r--tests/auto/selftests/expected_longstring.txt2
-rw-r--r--tests/auto/selftests/expected_maxwarnings.txt2
-rw-r--r--tests/auto/selftests/expected_skip.txt2
-rw-r--r--tests/benchmarks/gui/graphicsview/qgraphicslinearlayout/qgraphicslinearlayout.pro6
-rw-r--r--tests/benchmarks/gui/graphicsview/qgraphicslinearlayout/tst_qgraphicslinearlayout.cpp133
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
new file mode 100644
index 0000000..9a81b29
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data-MAC/flickable-horizontal.0.png
Binary files differ
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
new file mode 100644
index 0000000..2d9c4fd
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data-MAC/flickable-horizontal.1.png
Binary files differ
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
new file mode 100644
index 0000000..2bb0cb0
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data-MAC/flickable-horizontal.2.png
Binary files differ
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
new file mode 100644
index 0000000..8260a65
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data-MAC/flickable-horizontal.3.png
Binary files differ
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
new file mode 100644
index 0000000..0abcbc2
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data-MAC/flickable-horizontal.4.png
Binary files differ
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
new file mode 100644
index 0000000..8714f58
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.1.png b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.1.png
new file mode 100644
index 0000000..05e4a98
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.1.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.2.png b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.2.png
new file mode 100644
index 0000000..29df073
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.2.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.3.png b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.3.png
new file mode 100644
index 0000000..b38486e
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.3.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.4.png b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.4.png
new file mode 100644
index 0000000..4de915b
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.4.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.5.png b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.5.png
new file mode 100644
index 0000000..61a4684
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.5.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.6.png b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.6.png
new file mode 100644
index 0000000..4ce5e30
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.6.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.7.png b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.7.png
new file mode 100644
index 0000000..2376b13
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.7.png
Binary files differ
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
index 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
Binary files differ
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
index 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
Binary files differ
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
new file mode 100644
index 0000000..4d6bf55
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/bugs/data-MAC/QTBUG-14469.0.png
Binary files differ
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
new file mode 100644
index 0000000..a75da16
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/bugs/data-MAC/QTBUG-14469.1.png
Binary files differ
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
index 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
Binary files differ
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
index 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
Binary files differ
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
index 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
Binary files differ
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
index 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
Binary files differ
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
index 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
Binary files differ
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
index 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
Binary files differ
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
index 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
Binary files differ
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
index 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
Binary files differ
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
index 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
Binary files differ
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
index 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
Binary files differ
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
index 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
Binary files differ
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
index 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
Binary files differ
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
index 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
Binary files differ
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
index 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
Binary files differ
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
index 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
Binary files differ
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
index 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
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.1.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.2.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.2.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.3.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.3.png
index 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
Binary files differ
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"