diff options
author | Bea Lam <bea.lam@nokia.com> | 2009-11-10 06:39:00 (GMT) |
---|---|---|
committer | Bea Lam <bea.lam@nokia.com> | 2009-11-10 06:39:00 (GMT) |
commit | 432d54d092414431e1e54daa2259384d83600bf2 (patch) | |
tree | 0ec7c9080b5dcdae1f411457f8b057145ef94366 /tests | |
parent | c411c39557d31b94efb5813be9e9ef43c05a9093 (diff) | |
parent | 4459e18afd3e537c2155dadad0937e0a5cdd76c5 (diff) | |
download | Qt-432d54d092414431e1e54daa2259384d83600bf2.zip Qt-432d54d092414431e1e54daa2259384d83600bf2.tar.gz Qt-432d54d092414431e1e54daa2259384d83600bf2.tar.bz2 |
Merge branch 'kinetic-declarativeui' of scm.dev.nokia.troll.no:qt/kinetic into kinetic-declarativeui
Diffstat (limited to 'tests')
228 files changed, 16002 insertions, 5974 deletions
diff --git a/tests/arthur/common/paintcommands.cpp b/tests/arthur/common/paintcommands.cpp index 475f07d..44deb0e 100644 --- a/tests/arthur/common/paintcommands.cpp +++ b/tests/arthur/common/paintcommands.cpp @@ -974,7 +974,7 @@ void PaintCommands::command_drawPixmap(QRegExp re) if (sh == 0) sh = -1; if (m_verboseMode) - printf(" -(lance) drawPixmap('%s' dim=(%d, %d), depth=%d, (%d, %d, %d, %d), (%d, %d, %d, %d)\n", + printf(" -(lance) drawPixmap('%s' dim=(%d, %d), depth=%d, (%f, %f, %f, %f), (%f, %f, %f, %f)\n", qPrintable(re.cap(1)), pm.width(), pm.height(), pm.depth(), tx, ty, tw, th, sx, sy, sw, sh); @@ -1022,7 +1022,7 @@ void PaintCommands::command_drawImage(QRegExp re) if (sh == 0) sh = -1; if (m_verboseMode) - printf(" -(lance) drawImage('%s' dim=(%d, %d), (%d, %d, %d, %d), (%d, %d, %d, %d)\n", + printf(" -(lance) drawImage('%s' dim=(%d, %d), (%f, %f, %f, %f), (%f, %f, %f, %f)\n", qPrintable(re.cap(1)), im.width(), im.height(), tx, ty, tw, th, sx, sy, sw, sh); m_painter->drawImage(QRectF(tx, ty, tw, th), im, QRectF(sx, sy, sw, sh), Qt::OrderedDither | Qt::OrderedAlphaDither); diff --git a/tests/auto/checkxmlfiles/checkxmlfiles.pro b/tests/auto/checkxmlfiles/checkxmlfiles.pro index c368c02..d53c11c 100644 --- a/tests/auto/checkxmlfiles/checkxmlfiles.pro +++ b/tests/auto/checkxmlfiles/checkxmlfiles.pro @@ -12,7 +12,7 @@ addFiles.sources = \ $$QT_SOURCE_TREE/examples/sql/masterdetail/albumdetails.xml \ $$QT_SOURCE_TREE/examples/xmlpatterns/xquery/globalVariables/globals.gccxml \ $$QT_SOURCE_TREE/doc/src/diagrams/stylesheet/treeview.svg \ - $$QT_SOURCE_TREE/doc/src/diagrams/designer-mainwindow-actions.ui \ + $$QT_SOURCE_TREE/doc/src/diagrams/designer-manual/designer-mainwindow-actions.ui \ $$QT_SOURCE_TREE/demos/undo/undo.qrc addFiles.path = xmlfiles DEPLOYMENT += addFiles diff --git a/tests/auto/declarative/.gitignore b/tests/auto/declarative/.gitignore index c8bbd2f..d937eb4 100644 --- a/tests/auto/declarative/.gitignore +++ b/tests/auto/declarative/.gitignore @@ -1,3 +1,4 @@ tst_* !tst_*.* +tst_*.debug tst_*~ diff --git a/tests/auto/declarative/animations/tst_animations.cpp b/tests/auto/declarative/animations/tst_animations.cpp index a4402cb..61f0e0a 100644 --- a/tests/auto/declarative/animations/tst_animations.cpp +++ b/tests/auto/declarative/animations/tst_animations.cpp @@ -44,6 +44,7 @@ #include <QtDeclarative/qmlview.h> #include <private/qmlgraphicsrectangle_p.h> #include <private/qmlanimation_p.h> +#include <QVariantAnimation> class tst_animations : public QObject { @@ -61,6 +62,7 @@ private slots: void mixedTypes(); void properties(); void propertiesTransition(); + void easingStringConversion(); }; #define QTIMED_COMPARE(lhs, rhs) do { \ @@ -134,7 +136,7 @@ void tst_animations::dotProperty() animation.setProperty("border.width"); animation.setTo(10); animation.start(); - QTest::qWait(animation.duration()); + QTest::qWait(animation.duration()+50); QTIMED_COMPARE(rect.border()->width(), 10); rect.border()->setWidth(0); @@ -352,7 +354,7 @@ void tst_animations::propertiesTransition() QmlGraphicsRectangle *myRect = rect->findChild<QmlGraphicsRectangle*>("TheRect"); QVERIFY(myRect); - QTest::ignoreMessage(QtWarningMsg, "QML QmlNumberAnimation (file:///home/brasser/depot/kinetic-declarativeui/qt/tests/auto/declarative/animations/data/propertiesTransition4.qml:22:9) targets/properties/exclude and target/property are mutually exclusive."); + QTest::ignoreMessage(QtWarningMsg, "QML QmlNumberAnimation (file:///home/brasser/depot/kinetic-declarativeui/qt/tests/auto/declarative/animations/data/propertiesTransition4.qml:22:9) matchTargets/matchProperties/exclude and target/property are mutually exclusive."); rect->setState("moved"); QCOMPARE(myRect->x(),qreal(200)); } @@ -365,7 +367,7 @@ void tst_animations::propertiesTransition() QmlGraphicsRectangle *myRect = rect->findChild<QmlGraphicsRectangle*>("TheRect"); QVERIFY(myRect); - QTest::ignoreMessage(QtWarningMsg, "QML QmlNumberAnimation (file:///home/brasser/depot/kinetic-declarativeui/qt/tests/auto/declarative/animations/data/propertiesTransition5.qml:22:9) targets/properties/exclude and target/property are mutually exclusive."); + QTest::ignoreMessage(QtWarningMsg, "QML QmlNumberAnimation (file:///home/brasser/depot/kinetic-declarativeui/qt/tests/auto/declarative/animations/data/propertiesTransition5.qml:22:9) matchTargets/matchProperties/exclude and target/property are mutually exclusive."); rect->setState("moved"); QCOMPARE(myRect->x(),qreal(200)); } @@ -384,6 +386,22 @@ void tst_animations::propertiesTransition() } } +void tst_animations::easingStringConversion() +{ + QmlNumberAnimation *animation = new QmlNumberAnimation; + animation->setEasing("easeInOutQuad"); + QCOMPARE(static_cast<QVariantAnimation*>(((QmlAbstractAnimation*)animation)->qtAnimation())->easingCurve(), QEasingCurve(QEasingCurve::InOutQuad)); + + animation->setEasing("OutQuad"); + QCOMPARE(static_cast<QVariantAnimation*>(((QmlAbstractAnimation*)animation)->qtAnimation())->easingCurve(), QEasingCurve(QEasingCurve::OutQuad)); + + animation->setEasing("easeOutBounce(amplitude: 5)"); + QCOMPARE(static_cast<QVariantAnimation*>(((QmlAbstractAnimation*)animation)->qtAnimation())->easingCurve().type(), QEasingCurve::OutBounce); + QCOMPARE(static_cast<QVariantAnimation*>(((QmlAbstractAnimation*)animation)->qtAnimation())->easingCurve().amplitude(), qreal(5)); + + delete animation; +} + QTEST_MAIN(tst_animations) #include "tst_animations.moc" diff --git a/tests/auto/declarative/declarative.pro b/tests/auto/declarative/declarative.pro index 6a939e0..d1194d9 100644 --- a/tests/auto/declarative/declarative.pro +++ b/tests/auto/declarative/declarative.pro @@ -24,6 +24,8 @@ SUBDIRS += \ qmlfontloader \ # Cover qmlgraphicsitem \ # Cover qmlgraphicsborderimage \ # Cover + qmlgraphicsflickable \ # Cover + qmlgraphicsflipable \ # Cover qmlgraphicsparticles \ # Cover qmlgraphicspositioners \ # Cover qmlgraphicstext \ # Cover @@ -46,7 +48,9 @@ SUBDIRS += \ sql \ # Cover states \ # Cover valuetypes \ # Cover - visual # Cover + visual \ # Cover + xmlhttprequest # Cover + # Tests which should run in Pulse PULSE_TESTS = $$SUBDIRS diff --git a/tests/auto/declarative/layouts/data/layouts.qml b/tests/auto/declarative/layouts/data/layouts.qml index ccc8cfe..b0ee63b 100644 --- a/tests/auto/declarative/layouts/data/layouts.qml +++ b/tests/auto/declarative/layouts/data/layouts.qml @@ -7,10 +7,9 @@ Item { GraphicsObjectContainer { anchors.fill:parent + synchronizedResizing: true QGraphicsWidget { - size.width:parent.width - size.height:parent.height layout: QGraphicsLinearLayout { spacing: 0 diff --git a/tests/auto/declarative/layouts/tst_layouts.cpp b/tests/auto/declarative/layouts/tst_layouts.cpp index f619b57..1c2330d 100644 --- a/tests/auto/declarative/layouts/tst_layouts.cpp +++ b/tests/auto/declarative/layouts/tst_layouts.cpp @@ -68,10 +68,10 @@ void tst_QmlGraphicsLayouts::test_qml() canvas->execute(); qApp->processEvents(); - QmlGraphicsLayoutItem *left = qobject_cast<QmlGraphicsLayoutItem*>(canvas->root()->findChild<QmlGraphicsItem*>("left")); + QmlGraphicsLayoutItem *left = static_cast<QmlGraphicsLayoutItem*>(canvas->root()->findChild<QmlGraphicsItem*>("left")); QVERIFY(left != 0); - QmlGraphicsLayoutItem *right = qobject_cast<QmlGraphicsLayoutItem*>(canvas->root()->findChild<QmlGraphicsItem*>("right")); + QmlGraphicsLayoutItem *right = static_cast<QmlGraphicsLayoutItem*>(canvas->root()->findChild<QmlGraphicsItem*>("right")); QVERIFY(right != 0); qreal gvMargin = 9.0; @@ -101,17 +101,21 @@ void tst_QmlGraphicsLayouts::test_qml() QCOMPARE(right->width(), 100.0); QCOMPARE(right->height(), 100.0); - //Maximum Size - canvas->root()->setWidth(1000 + 2*gvMargin); - canvas->root()->setHeight(1000 + 2*gvMargin); + //Between preferred and Maximum Size + /*Note that if set to maximum size (or above) GraphicsLinearLayout behavior + is to shrink them down to preferred size. So the exact maximum size can't + be used*/ + canvas->root()->setWidth(670 + 2*gvMargin); + canvas->root()->setHeight(300 + 2*gvMargin); QCOMPARE(left->x(), gvMargin); - QCOMPARE(left->width(), 300.0); + QCOMPARE(left->width(), 270.0); QCOMPARE(left->height(), 300.0); - QCOMPARE(right->x(), 300.0 + gvMargin); + QCOMPARE(right->x(), 270.0 + gvMargin); QCOMPARE(right->width(), 400.0); - QCOMPARE(right->height(), 400.0); + QCOMPARE(right->height(), 300.0); + } void tst_QmlGraphicsLayouts::test_cpp() diff --git a/tests/auto/declarative/qmlgraphicsflickable/data/flickable01.qml b/tests/auto/declarative/qmlgraphicsflickable/data/flickable01.qml new file mode 100644 index 0000000..8a1843c --- /dev/null +++ b/tests/auto/declarative/qmlgraphicsflickable/data/flickable01.qml @@ -0,0 +1,4 @@ +import Qt 4.6 + +Flickable { +} diff --git a/tests/auto/declarative/qmlgraphicsflickable/data/flickable02.qml b/tests/auto/declarative/qmlgraphicsflickable/data/flickable02.qml new file mode 100644 index 0000000..cf98dd9 --- /dev/null +++ b/tests/auto/declarative/qmlgraphicsflickable/data/flickable02.qml @@ -0,0 +1,14 @@ +import Qt 4.6 + +Flickable { + width: 100; height: 100 + viewportWidth: row.width; viewportHeight: row.height + + Row { + id: row + Repeater { + model: 4 + Rectangle { width: 200; height: 300; color: dayColor } + } + } +} diff --git a/tests/auto/declarative/qmlgraphicsflickable/data/flickable03.qml b/tests/auto/declarative/qmlgraphicsflickable/data/flickable03.qml new file mode 100644 index 0000000..001bf2f --- /dev/null +++ b/tests/auto/declarative/qmlgraphicsflickable/data/flickable03.qml @@ -0,0 +1,14 @@ +import Qt 4.6 + +Flickable { + width: 100; height: 100 + viewportWidth: column.width; viewportHeight: column.height + + Column { + id: column + Repeater { + model: 4 + Rectangle { width: 200; height: 300; color: dayColor } + } + } +} diff --git a/tests/auto/declarative/qmlgraphicsflickable/data/flickable04.qml b/tests/auto/declarative/qmlgraphicsflickable/data/flickable04.qml new file mode 100644 index 0000000..5a27869 --- /dev/null +++ b/tests/auto/declarative/qmlgraphicsflickable/data/flickable04.qml @@ -0,0 +1,16 @@ +import Qt 4.6 + +Flickable { + width: 100; height: 100 + viewportWidth: column.width; viewportHeight: column.height + pressDelay: 200; overShoot: false; interactive: false + maximumFlickVelocity: 2000 + + Column { + id: column + Repeater { + model: 4 + Rectangle { width: 200; height: 300; color: dayColor } + } + } +} diff --git a/tests/auto/declarative/qmlgraphicsflickable/qmlgraphicsflickable.pro b/tests/auto/declarative/qmlgraphicsflickable/qmlgraphicsflickable.pro new file mode 100644 index 0000000..7c4c959 --- /dev/null +++ b/tests/auto/declarative/qmlgraphicsflickable/qmlgraphicsflickable.pro @@ -0,0 +1,8 @@ +load(qttest_p4) +contains(QT_CONFIG,declarative): QT += declarative gui +macx:CONFIG -= app_bundle + +SOURCES += tst_qmlgraphicsflickable.cpp + +# Define SRCDIR equal to test's source directory +DEFINES += SRCDIR=\\\"$$PWD\\\" diff --git a/tests/auto/declarative/qmlgraphicsflickable/tst_qmlgraphicsflickable.cpp b/tests/auto/declarative/qmlgraphicsflickable/tst_qmlgraphicsflickable.cpp new file mode 100644 index 0000000..b11de80 --- /dev/null +++ b/tests/auto/declarative/qmlgraphicsflickable/tst_qmlgraphicsflickable.cpp @@ -0,0 +1,145 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the test suite of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the Technology Preview License Agreement accompanying +** this package. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** +** +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +#include <qtest.h> +#include <QtDeclarative/qmlengine.h> +#include <QtDeclarative/qmlcomponent.h> +#include <private/qmlgraphicsflickable_p.h> +#include <private/qmlvaluetype_p.h> +#include <math.h> + +class tst_qmlgraphicsflickable : public QObject +{ + Q_OBJECT +public: + tst_qmlgraphicsflickable(); + +private slots: + void create(); + void horizontalViewportSize(); + void verticalViewportSize(); + void properties(); + +private: + QmlEngine engine; +}; + +tst_qmlgraphicsflickable::tst_qmlgraphicsflickable() +{ +} + +void tst_qmlgraphicsflickable::create() +{ + QmlEngine engine; + QmlComponent c(&engine, QUrl("file://" SRCDIR "/data/flickable01.qml")); + QmlGraphicsFlickable *obj = qobject_cast<QmlGraphicsFlickable*>(c.create()); + + QVERIFY(obj != 0); + QCOMPARE(obj->isAtXBeginning(), true); + QCOMPARE(obj->isAtXEnd(), false); + QCOMPARE(obj->isAtYBeginning(), true); + QCOMPARE(obj->isAtYEnd(), false); + QCOMPARE(obj->viewportX(), 0.); + QCOMPARE(obj->viewportY(), 0.); + + QCOMPARE(obj->horizontalVelocity(), 0.); + QCOMPARE(obj->verticalVelocity(), 0.); + QCOMPARE(obj->reportedVelocitySmoothing(), 100.); + + QCOMPARE(obj->isInteractive(), true); + QCOMPARE(obj->overShoot(), true); + QCOMPARE(obj->pressDelay(), 0); + QCOMPARE(obj->maximumFlickVelocity(), 5000.); + + delete obj; +} + +void tst_qmlgraphicsflickable::horizontalViewportSize() +{ + QmlEngine engine; + QmlComponent c(&engine, QUrl("file://" SRCDIR "/data/flickable02.qml")); + QmlGraphicsFlickable *obj = qobject_cast<QmlGraphicsFlickable*>(c.create()); + + QVERIFY(obj != 0); + QCOMPARE(obj->viewportWidth(), 800.); + QCOMPARE(obj->viewportHeight(), 300.); + QCOMPARE(obj->isAtXBeginning(), true); + QCOMPARE(obj->isAtXEnd(), false); + QCOMPARE(obj->isAtYBeginning(), true); + QCOMPARE(obj->isAtYEnd(), false); + + delete obj; +} + +void tst_qmlgraphicsflickable::verticalViewportSize() +{ + QmlEngine engine; + QmlComponent c(&engine, QUrl("file://" SRCDIR "/data/flickable03.qml")); + QmlGraphicsFlickable *obj = qobject_cast<QmlGraphicsFlickable*>(c.create()); + + QVERIFY(obj != 0); + QCOMPARE(obj->viewportWidth(), 200.); + QCOMPARE(obj->viewportHeight(), 1200.); + QCOMPARE(obj->isAtXBeginning(), true); + QCOMPARE(obj->isAtXEnd(), false); + QCOMPARE(obj->isAtYBeginning(), true); + QCOMPARE(obj->isAtYEnd(), false); + + delete obj; +} + +void tst_qmlgraphicsflickable::properties() +{ + QmlEngine engine; + QmlComponent c(&engine, QUrl("file://" SRCDIR "/data/flickable04.qml")); + QmlGraphicsFlickable *obj = qobject_cast<QmlGraphicsFlickable*>(c.create()); + + QVERIFY(obj != 0); + QCOMPARE(obj->isInteractive(), false); + QCOMPARE(obj->overShoot(), false); + QCOMPARE(obj->pressDelay(), 200); + QCOMPARE(obj->maximumFlickVelocity(), 2000.); + + delete obj; +} + +QTEST_MAIN(tst_qmlgraphicsflickable) + +#include "tst_qmlgraphicsflickable.moc" diff --git a/tests/auto/declarative/qmlgraphicsflipable/data/test-flipable.qml b/tests/auto/declarative/qmlgraphicsflipable/data/test-flipable.qml new file mode 100644 index 0000000..21d356d --- /dev/null +++ b/tests/auto/declarative/qmlgraphicsflipable/data/test-flipable.qml @@ -0,0 +1,9 @@ +import Qt 4.6 + +Flipable { + id: flipable + width: 640; height: 480 + + front: Rectangle { anchors.fill: flipable } + back: Rectangle { anchors.fill: flipable } +} diff --git a/tests/auto/declarative/qmlgraphicsflipable/qmlgraphicsflipable.pro b/tests/auto/declarative/qmlgraphicsflipable/qmlgraphicsflipable.pro new file mode 100644 index 0000000..b046086 --- /dev/null +++ b/tests/auto/declarative/qmlgraphicsflipable/qmlgraphicsflipable.pro @@ -0,0 +1,8 @@ +load(qttest_p4) +contains(QT_CONFIG,declarative): QT += declarative gui +macx:CONFIG -= app_bundle + +SOURCES += tst_qmlgraphicsflipable.cpp + +# Define SRCDIR equal to test's source directory +DEFINES += SRCDIR=\\\"$$PWD\\\" diff --git a/tests/auto/declarative/qmlgraphicsflipable/tst_qmlgraphicsflipable.cpp b/tests/auto/declarative/qmlgraphicsflipable/tst_qmlgraphicsflipable.cpp new file mode 100644 index 0000000..f1a3ec8 --- /dev/null +++ b/tests/auto/declarative/qmlgraphicsflipable/tst_qmlgraphicsflipable.cpp @@ -0,0 +1,113 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the test suite of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the Technology Preview License Agreement accompanying +** this package. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** +** +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +#include <qtest.h> +#include <QtDeclarative/qmlengine.h> +#include <QtDeclarative/qmlcomponent.h> +#include <private/qmlgraphicsflipable_p.h> +#include <private/qmlvaluetype_p.h> +#include <QFontMetrics> +#include <private/qmlgraphicsrectangle_p.h> +#include <math.h> + +class tst_qmlgraphicsflipable : public QObject +{ + Q_OBJECT +public: + tst_qmlgraphicsflipable(); + +private slots: + void create(); + void checkFrontAndBack(); + void setFrontAndBack(); + +private: + QmlEngine engine; +}; + +tst_qmlgraphicsflipable::tst_qmlgraphicsflipable() +{ +} + +void tst_qmlgraphicsflipable::create() +{ + QmlEngine engine; + QmlComponent c(&engine, QUrl("file://" SRCDIR "/data/test-flipable.qml")); + QmlGraphicsFlipable *obj = qobject_cast<QmlGraphicsFlipable*>(c.create()); + + QVERIFY(obj != 0); + delete obj; +} + +void tst_qmlgraphicsflipable::checkFrontAndBack() +{ + QmlEngine engine; + QmlComponent c(&engine, QUrl("file://" SRCDIR "/data/test-flipable.qml")); + QmlGraphicsFlipable *obj = qobject_cast<QmlGraphicsFlipable*>(c.create()); + + QVERIFY(obj != 0); + QVERIFY(obj->front() != 0); + QVERIFY(obj->back() != 0); + delete obj; +} + +void tst_qmlgraphicsflipable::setFrontAndBack() +{ + QmlEngine engine; + QmlComponent c(&engine, QUrl("file://" SRCDIR "/data/test-flipable.qml")); + QmlGraphicsFlipable *obj = qobject_cast<QmlGraphicsFlipable*>(c.create()); + + QVERIFY(obj != 0); + QVERIFY(obj->front() != 0); + QVERIFY(obj->back() != 0); + + QString message = "QML " + QString(obj->metaObject()->className()) + " (" + c.url().toString() + ":3:1) front is a write-once property"; + QTest::ignoreMessage(QtWarningMsg, qPrintable(message)); + obj->setFront(new QmlGraphicsRectangle()); + + message = "QML " + QString(obj->metaObject()->className()) + " (" + c.url().toString() + ":3:1) back is a write-once property"; + QTest::ignoreMessage(QtWarningMsg, qPrintable(message)); + obj->setBack(new QmlGraphicsRectangle()); + delete obj; +} + +QTEST_MAIN(tst_qmlgraphicsflipable) + +#include "tst_qmlgraphicsflipable.moc" diff --git a/tests/auto/declarative/qmlgraphicsgridview/data/gridview.qml b/tests/auto/declarative/qmlgraphicsgridview/data/gridview.qml index 37eb622..344b4b5 100644 --- a/tests/auto/declarative/qmlgraphicsgridview/data/gridview.qml +++ b/tests/auto/declarative/qmlgraphicsgridview/data/gridview.qml @@ -43,6 +43,7 @@ Rectangle { height: 320 cellWidth: 80 cellHeight: 60 + flow: (testTopToBottom == false) ? "LeftToRight" : "TopToBottom" model: testModel delegate: myDelegate } diff --git a/tests/auto/declarative/qmlgraphicsgridview/tst_qmlgraphicsgridview.cpp b/tests/auto/declarative/qmlgraphicsgridview/tst_qmlgraphicsgridview.cpp index 7c32d14..d99b16f 100644 --- a/tests/auto/declarative/qmlgraphicsgridview/tst_qmlgraphicsgridview.cpp +++ b/tests/auto/declarative/qmlgraphicsgridview/tst_qmlgraphicsgridview.cpp @@ -53,12 +53,13 @@ public: tst_QmlGraphicsGridView(); private slots: - void currentIndex(); void items(); void changed(); void inserted(); void removed(); void moved(); + void currentIndex(); + void changeFlow(); private: QmlView *createView(const QString &filename); @@ -147,6 +148,7 @@ void tst_QmlGraphicsGridView::items() QmlContext *ctxt = canvas->rootContext(); ctxt->setContextProperty("testModel", &model); + ctxt->setContextProperty("testTopToBottom", QVariant(false)); canvas->execute(); qApp->processEvents(); @@ -194,6 +196,7 @@ void tst_QmlGraphicsGridView::changed() QmlContext *ctxt = canvas->rootContext(); ctxt->setContextProperty("testModel", &model); + ctxt->setContextProperty("testTopToBottom", QVariant(false)); canvas->execute(); qApp->processEvents(); @@ -226,6 +229,7 @@ void tst_QmlGraphicsGridView::inserted() QmlContext *ctxt = canvas->rootContext(); ctxt->setContextProperty("testModel", &model); + ctxt->setContextProperty("testTopToBottom", QVariant(false)); canvas->execute(); qApp->processEvents(); @@ -253,8 +257,8 @@ void tst_QmlGraphicsGridView::inserted() // Confirm items positioned correctly for (int i = 0; i < model.count(); ++i) { QmlGraphicsItem *item = findItem<QmlGraphicsItem>(viewport, "wrapper", i); - QVERIFY(item->x() == (i%3)*80); - QVERIFY(item->y() == (i/3)*60); + QCOMPARE(item->x(), (i%3)*80.0); + QCOMPARE(item->y(), (i/3)*60.0); } model.insertItem(0, "Foo", "1111"); // zero index, and current item @@ -306,6 +310,7 @@ void tst_QmlGraphicsGridView::removed() QmlContext *ctxt = canvas->rootContext(); ctxt->setContextProperty("testModel", &model); + ctxt->setContextProperty("testTopToBottom", QVariant(false)); canvas->execute(); qApp->processEvents(); @@ -420,6 +425,7 @@ void tst_QmlGraphicsGridView::moved() QmlContext *ctxt = canvas->rootContext(); ctxt->setContextProperty("testModel", &model); + ctxt->setContextProperty("testTopToBottom", QVariant(false)); canvas->execute(); qApp->processEvents(); @@ -534,9 +540,12 @@ void tst_QmlGraphicsGridView::currentIndex() QmlGraphicsItem *viewport = gridview->viewport(); QVERIFY(viewport != 0); + QTest::qWait(500); + // current item should be third item QCOMPARE(gridview->currentIndex(), 5); QCOMPARE(gridview->currentItem(), findItem<QmlGraphicsItem>(viewport, "wrapper", 5)); + QCOMPARE(gridview->currentItem()->y(), gridview->highlightItem()->y()); gridview->moveCurrentIndexRight(); QCOMPARE(gridview->currentIndex(), 6); @@ -605,6 +614,79 @@ void tst_QmlGraphicsGridView::currentIndex() QVERIFY(key.isAccepted()); QCOMPARE(gridview->currentIndex(), 0); + // turn off auto highlight + gridview->setHighlightFollowsCurrentItem(false); + QVERIFY(gridview->highlightFollowsCurrentItem() == false); + + QTest::qWait(500); + QVERIFY(gridview->highlightItem()); + qreal hlPosX = gridview->highlightItem()->x(); + qreal hlPosY = gridview->highlightItem()->y(); + + gridview->setCurrentIndex(5); + QTest::qWait(500); + QCOMPARE(gridview->highlightItem()->x(), hlPosX); + QCOMPARE(gridview->highlightItem()->y(), hlPosY); + + delete canvas; +} + +void tst_QmlGraphicsGridView::changeFlow() +{ + QmlView *canvas = createView(SRCDIR "/data/gridview.qml"); + + TestModel model; + for (int i = 0; i < 30; i++) + model.addItem("Item" + QString::number(i), QString::number(i)); + + QmlContext *ctxt = canvas->rootContext(); + ctxt->setContextProperty("testModel", &model); + ctxt->setContextProperty("testTopToBottom", QVariant(false)); + + canvas->execute(); + qApp->processEvents(); + + QmlGraphicsGridView *gridview = findItem<QmlGraphicsGridView>(canvas->root(), "grid"); + QVERIFY(gridview != 0); + + QmlGraphicsItem *viewport = gridview->viewport(); + QVERIFY(viewport != 0); + + // Confirm items positioned correctly and indexes correct + int itemCount = findItems<QmlGraphicsItem>(viewport, "wrapper").count(); + for (int i = 3; i < model.count() && i < itemCount; ++i) { + QmlGraphicsItem *item = findItem<QmlGraphicsItem>(viewport, "wrapper", i); + if (!item) qWarning() << "Item" << i << "not found"; + QVERIFY(item); + QCOMPARE(item->x(), qreal((i%3)*80)); + QCOMPARE(item->y(), qreal((i/3)*60)); + QmlGraphicsText *name = findItem<QmlGraphicsText>(viewport, "textName", i); + QVERIFY(name != 0); + QCOMPARE(name->text(), model.name(i)); + QmlGraphicsText *number = findItem<QmlGraphicsText>(viewport, "textNumber", i); + QVERIFY(number != 0); + QCOMPARE(number->text(), model.number(i)); + } + + ctxt->setContextProperty("testTopToBottom", QVariant(true)); + QTest::qWait(500); + + // Confirm items positioned correctly and indexes correct + itemCount = findItems<QmlGraphicsItem>(viewport, "wrapper").count(); + for (int i = 3; i < model.count() && i < itemCount; ++i) { + QmlGraphicsItem *item = findItem<QmlGraphicsItem>(viewport, "wrapper", i); + if (!item) qWarning() << "Item" << i << "not found"; + QVERIFY(item); + QCOMPARE(item->x(), qreal((i/5)*80)); + QCOMPARE(item->y(), qreal((i%5)*60)); + QmlGraphicsText *name = findItem<QmlGraphicsText>(viewport, "textName", i); + QVERIFY(name != 0); + QCOMPARE(name->text(), model.name(i)); + QmlGraphicsText *number = findItem<QmlGraphicsText>(viewport, "textNumber", i); + QVERIFY(number != 0); + QCOMPARE(number->text(), model.number(i)); + } + delete canvas; } diff --git a/tests/auto/declarative/qmlgraphicsitem/data/keys.qml b/tests/auto/declarative/qmlgraphicsitem/data/keys.qml index 7c16559..f3c1f7b 100644 --- a/tests/auto/declarative/qmlgraphicsitem/data/keys.qml +++ b/tests/auto/declarative/qmlgraphicsitem/data/keys.qml @@ -5,7 +5,10 @@ Item { Keys.onPressed: keysTestObject.keyPress(event.key, event.text, event.modifiers) Keys.onReleased: { keysTestObject.keyRelease(event.key, event.text, event.modifiers); event.accepted = true; } Keys.onReturnPressed: keysTestObject.keyPress(event.key, "Return", event.modifiers) + Keys.onDigit0Pressed: keysTestObject.keyPress(event.key, event.text, event.modifiers) + Keys.onDigit9Pressed: { event.accepted = false; keysTestObject.keyPress(event.key, event.text, event.modifiers) } Keys.forwardTo: [ item2 ] + Keys.enabled: enableKeyHanding Item { id: item2 diff --git a/tests/auto/declarative/qmlgraphicsitem/tst_qmlgraphicsitem.cpp b/tests/auto/declarative/qmlgraphicsitem/tst_qmlgraphicsitem.cpp index b4b3eaf..66ef982 100644 --- a/tests/auto/declarative/qmlgraphicsitem/tst_qmlgraphicsitem.cpp +++ b/tests/auto/declarative/qmlgraphicsitem/tst_qmlgraphicsitem.cpp @@ -113,6 +113,8 @@ void tst_QmlGraphicsItem::keys() KeysTestObject *testObject = new KeysTestObject; canvas->rootContext()->setContextProperty("keysTestObject", testObject); + canvas->rootContext()->setContextProperty("enableKeyHanding", QVariant(true)); + canvas->execute(); canvas->show(); qApp->processEvents(); @@ -150,6 +152,35 @@ void tst_QmlGraphicsItem::keys() QVERIFY(testObject->mModifiers == Qt::NoModifier); QVERIFY(key.isAccepted()); + testObject->reset(); + + key = QKeyEvent(QEvent::KeyPress, Qt::Key_0, Qt::NoModifier, "0", false, 1); + QApplication::sendEvent(canvas, &key); + QCOMPARE(testObject->mKey, int(Qt::Key_0)); + QCOMPARE(testObject->mForwardedKey, int(Qt::Key_0)); + QCOMPARE(testObject->mText, QLatin1String("0")); + QVERIFY(testObject->mModifiers == Qt::NoModifier); + QVERIFY(key.isAccepted()); + + testObject->reset(); + + key = QKeyEvent(QEvent::KeyPress, Qt::Key_9, Qt::NoModifier, "9", false, 1); + QApplication::sendEvent(canvas, &key); + QCOMPARE(testObject->mKey, int(Qt::Key_9)); + QCOMPARE(testObject->mForwardedKey, int(Qt::Key_9)); + QCOMPARE(testObject->mText, QLatin1String("9")); + QVERIFY(testObject->mModifiers == Qt::NoModifier); + QVERIFY(!key.isAccepted()); + + testObject->reset(); + + canvas->rootContext()->setContextProperty("enableKeyHanding", QVariant(false)); + + key = QKeyEvent(QEvent::KeyPress, Qt::Key_Return, Qt::NoModifier, "", false, 1); + QApplication::sendEvent(canvas, &key); + QCOMPARE(testObject->mKey, 0); + QVERIFY(!key.isAccepted()); + delete canvas; delete testObject; } diff --git a/tests/auto/declarative/qmlgraphicslistview/data/listview-initCurrent.qml b/tests/auto/declarative/qmlgraphicslistview/data/listview-initCurrent.qml index 5b1fee6..65a9d8a 100644 --- a/tests/auto/declarative/qmlgraphicslistview/data/listview-initCurrent.qml +++ b/tests/auto/declarative/qmlgraphicslistview/data/listview-initCurrent.qml @@ -42,6 +42,7 @@ Rectangle { currentIndex: 3 width: 240 height: 320 + keyNavigationWraps: testWrap model: testModel delegate: myDelegate highlightMoveSpeed: 1000 diff --git a/tests/auto/declarative/qmlgraphicslistview/data/listview.qml b/tests/auto/declarative/qmlgraphicslistview/data/listview.qml index 075e464..280173b 100644 --- a/tests/auto/declarative/qmlgraphicslistview/data/listview.qml +++ b/tests/auto/declarative/qmlgraphicslistview/data/listview.qml @@ -79,7 +79,7 @@ Rectangle { width: 240 height: 320 model: testModel - delegate: animate ? myDelegate : animatedDelegate + delegate: testAnimate ? myDelegate : animatedDelegate highlightMoveSpeed: 1000 } } diff --git a/tests/auto/declarative/qmlgraphicslistview/tst_qmlgraphicslistview.cpp b/tests/auto/declarative/qmlgraphicslistview/tst_qmlgraphicslistview.cpp index dc339ea..83b8d79 100644 --- a/tests/auto/declarative/qmlgraphicslistview/tst_qmlgraphicslistview.cpp +++ b/tests/auto/declarative/qmlgraphicslistview/tst_qmlgraphicslistview.cpp @@ -242,6 +242,7 @@ void tst_QmlGraphicsListView::items() QmlContext *ctxt = canvas->rootContext(); ctxt->setContextProperty("testModel", &model); + ctxt->setContextProperty("testAnimate", QVariant(false)); canvas->execute(); qApp->processEvents(); @@ -289,6 +290,7 @@ void tst_QmlGraphicsListView::changed() QmlContext *ctxt = canvas->rootContext(); ctxt->setContextProperty("testModel", &model); + ctxt->setContextProperty("testAnimate", QVariant(false)); canvas->execute(); qApp->processEvents(); @@ -322,6 +324,7 @@ void tst_QmlGraphicsListView::inserted() QmlContext *ctxt = canvas->rootContext(); ctxt->setContextProperty("testModel", &model); + ctxt->setContextProperty("testAnimate", QVariant(false)); canvas->execute(); qApp->processEvents(); @@ -408,7 +411,7 @@ void tst_QmlGraphicsListView::removed(bool animated) QmlContext *ctxt = canvas->rootContext(); ctxt->setContextProperty("testModel", &model); - ctxt->setContextProperty("animate", QVariant(animated)); + ctxt->setContextProperty("testAnimate", QVariant(animated)); canvas->execute(); qApp->processEvents(); @@ -519,6 +522,7 @@ void tst_QmlGraphicsListView::moved() QmlContext *ctxt = canvas->rootContext(); ctxt->setContextProperty("testModel", &model); + ctxt->setContextProperty("testAnimate", QVariant(false)); canvas->execute(); qApp->processEvents(); @@ -621,6 +625,7 @@ void tst_QmlGraphicsListView::enforceRange() QCOMPARE(listview->preferredHighlightBegin(), 100.0); QCOMPARE(listview->preferredHighlightEnd(), 100.0); + QCOMPARE(listview->highlightRangeMode(), QmlGraphicsListView::StrictlyEnforceRange); QmlGraphicsItem *viewport = listview->viewport(); QVERIFY(viewport != 0); @@ -656,6 +661,7 @@ void tst_QmlGraphicsListView::spacing() QmlContext *ctxt = canvas->rootContext(); ctxt->setContextProperty("testModel", &model); + ctxt->setContextProperty("testAnimate", QVariant(false)); canvas->execute(); qApp->processEvents(); @@ -778,6 +784,7 @@ void tst_QmlGraphicsListView::currentIndex() QmlContext *ctxt = canvas->rootContext(); ctxt->setContextProperty("testModel", &model); + ctxt->setContextProperty("testWrap", QVariant(false)); QString filename(SRCDIR "/data/listview-initCurrent.qml"); QFile file(filename); @@ -794,9 +801,12 @@ void tst_QmlGraphicsListView::currentIndex() QmlGraphicsItem *viewport = listview->viewport(); QVERIFY(viewport != 0); + QTest::qWait(500); + // current item should be third item QCOMPARE(listview->currentIndex(), 3); QCOMPARE(listview->currentItem(), findItem<QmlGraphicsItem>(viewport, "wrapper", 3)); + QCOMPARE(listview->highlightItem()->y(), listview->currentItem()->y()); // no wrap listview->setCurrentIndex(0); @@ -811,7 +821,8 @@ void tst_QmlGraphicsListView::currentIndex() QCOMPARE(listview->currentIndex(), 0); // with wrap - listview->setWrapEnabled(true); + ctxt->setContextProperty("testWrap", QVariant(true)); + QVERIFY(listview->isWrapEnabled()); listview->decrementCurrentIndex(); QCOMPARE(listview->currentIndex(), model.count()-1); @@ -844,6 +855,18 @@ void tst_QmlGraphicsListView::currentIndex() QVERIFY(key.isAccepted()); QCOMPARE(listview->currentIndex(), 0); + // turn off auto highlight + listview->setHighlightFollowsCurrentItem(false); + QVERIFY(listview->highlightFollowsCurrentItem() == false); + + QTest::qWait(500); + QVERIFY(listview->highlightItem()); + qreal hlPos = listview->highlightItem()->y(); + + listview->setCurrentIndex(4); + QTest::qWait(500); + QCOMPARE(listview->highlightItem()->y(), hlPos); + delete canvas; } diff --git a/tests/auto/declarative/qmlgraphicstextedit/tst_qmlgraphicstextedit.cpp b/tests/auto/declarative/qmlgraphicstextedit/tst_qmlgraphicstextedit.cpp index 2b10df5..4dc036d 100644 --- a/tests/auto/declarative/qmlgraphicstextedit/tst_qmlgraphicstextedit.cpp +++ b/tests/auto/declarative/qmlgraphicstextedit/tst_qmlgraphicstextedit.cpp @@ -69,6 +69,9 @@ private slots: void vAlign(); void font(); void color(); + void textMargin(); + void persistentSelection(); + void focusOnPress(); void selection(); void cursorDelegate(); @@ -433,6 +436,55 @@ void tst_qmlgraphicstextedit::color() } } +void tst_qmlgraphicstextedit::textMargin() +{ + for(qreal i=0; i<=10; i+=0.3){ + QString componentStr = "import Qt 4.6\nTextEdit { textMargin: " + QString::number(i) + "; text: \"Hello World\" }"; + QmlComponent texteditComponent(&engine, componentStr.toLatin1(), QUrl()); + QmlGraphicsTextEdit *textEditObject = qobject_cast<QmlGraphicsTextEdit*>(texteditComponent.create()); + QVERIFY(textEditObject != 0); + QCOMPARE(textEditObject->textMargin(), i); + } +} + +void tst_qmlgraphicstextedit::persistentSelection() +{ + { + QString componentStr = "import Qt 4.6\nTextEdit { persistentSelection: true; text: \"Hello World\" }"; + QmlComponent texteditComponent(&engine, componentStr.toLatin1(), QUrl()); + QmlGraphicsTextEdit *textEditObject = qobject_cast<QmlGraphicsTextEdit*>(texteditComponent.create()); + QVERIFY(textEditObject != 0); + QCOMPARE(textEditObject->persistentSelection(), true); + } + + { + QString componentStr = "import Qt 4.6\nTextEdit { persistentSelection: false; text: \"Hello World\" }"; + QmlComponent texteditComponent(&engine, componentStr.toLatin1(), QUrl()); + QmlGraphicsTextEdit *textEditObject = qobject_cast<QmlGraphicsTextEdit*>(texteditComponent.create()); + QVERIFY(textEditObject != 0); + QCOMPARE(textEditObject->persistentSelection(), false); + } +} + +void tst_qmlgraphicstextedit::focusOnPress() +{ + { + QString componentStr = "import Qt 4.6\nTextEdit { focusOnPress: true; text: \"Hello World\" }"; + QmlComponent texteditComponent(&engine, componentStr.toLatin1(), QUrl()); + QmlGraphicsTextEdit *textEditObject = qobject_cast<QmlGraphicsTextEdit*>(texteditComponent.create()); + QVERIFY(textEditObject != 0); + QCOMPARE(textEditObject->focusOnPress(), true); + } + + { + QString componentStr = "import Qt 4.6\nTextEdit { focusOnPress: false; text: \"Hello World\" }"; + QmlComponent texteditComponent(&engine, componentStr.toLatin1(), QUrl()); + QmlGraphicsTextEdit *textEditObject = qobject_cast<QmlGraphicsTextEdit*>(texteditComponent.create()); + QVERIFY(textEditObject != 0); + QCOMPARE(textEditObject->focusOnPress(), false); + } +} + void tst_qmlgraphicstextedit::selection() { QString testStr = standard[0];//TODO: What should happen for multiline/rich text? diff --git a/tests/auto/declarative/qmlgraphicswebview/data/basic.ico b/tests/auto/declarative/qmlgraphicswebview/data/basic.ico Binary files differnew file mode 100644 index 0000000..8f3d05e --- /dev/null +++ b/tests/auto/declarative/qmlgraphicswebview/data/basic.ico diff --git a/tests/auto/declarative/qmlgraphicswebview/data/forward.html b/tests/auto/declarative/qmlgraphicswebview/data/forward.html new file mode 100644 index 0000000..030446a --- /dev/null +++ b/tests/auto/declarative/qmlgraphicswebview/data/forward.html @@ -0,0 +1,12 @@ +<html> +<head><title>Forward</title> +<link rel="icon" sizes="48x48" href="basic.png"> +</head> +<body leftmargin="0" marginwidth="0"> +<table width="123"> +<tbody> +<tr><td>This is more.</td></tr> +</tbody> +</table> +</body> +</html> diff --git a/tests/auto/declarative/qmlgraphicswebview/data/javaScript.html b/tests/auto/declarative/qmlgraphicswebview/data/javaScript.html new file mode 100644 index 0000000..35270bc --- /dev/null +++ b/tests/auto/declarative/qmlgraphicswebview/data/javaScript.html @@ -0,0 +1,11 @@ +<html> +<head><title>JavaScript</title> +<link rel="icon" sizes="48x48" href="basic.png"> +<script type="text/javascript"> +<!-- +window.onload = function(){ window.status = "status here"; } +// --> +</script> +</head> +<body> +This is a JS test. diff --git a/tests/auto/declarative/qmlgraphicswebview/data/loadError.qml b/tests/auto/declarative/qmlgraphicswebview/data/loadError.qml new file mode 100644 index 0000000..1460f30 --- /dev/null +++ b/tests/auto/declarative/qmlgraphicswebview/data/loadError.qml @@ -0,0 +1,5 @@ +import Qt 4.6 + +WebView { + url: "does-not-exist.html" +} diff --git a/tests/auto/declarative/states/tst_states.cpp b/tests/auto/declarative/states/tst_states.cpp index d6df37e..40e9aa8 100644 --- a/tests/auto/declarative/states/tst_states.cpp +++ b/tests/auto/declarative/states/tst_states.cpp @@ -365,13 +365,8 @@ void tst_states::signalOverrideCrash() MyRect *rect = qobject_cast<MyRect*>(rectComponent.create()); QVERIFY(rect != 0); - //QCOMPARE(rect->color(),QColor("red")); - //rect->doSomething(); - //QCOMPARE(rect->color(),QColor("blue")); - rect->setState("overridden"); rect->doSomething(); - //QCOMPARE(rect->color(),QColor("green")); } void tst_states::parentChange() diff --git a/tests/auto/declarative/visual/ListView/data/itemlist.0.png b/tests/auto/declarative/visual/ListView/data/itemlist.0.png Binary files differnew file mode 100644 index 0000000..a1947ca --- /dev/null +++ b/tests/auto/declarative/visual/ListView/data/itemlist.0.png diff --git a/tests/auto/declarative/visual/ListView/data/itemlist.1.png b/tests/auto/declarative/visual/ListView/data/itemlist.1.png Binary files differnew file mode 100644 index 0000000..d27b7fa --- /dev/null +++ b/tests/auto/declarative/visual/ListView/data/itemlist.1.png diff --git a/tests/auto/declarative/visual/ListView/data/itemlist.2.png b/tests/auto/declarative/visual/ListView/data/itemlist.2.png Binary files differnew file mode 100644 index 0000000..fdab8c6 --- /dev/null +++ b/tests/auto/declarative/visual/ListView/data/itemlist.2.png diff --git a/tests/auto/declarative/visual/ListView/data/itemlist.3.png b/tests/auto/declarative/visual/ListView/data/itemlist.3.png Binary files differnew file mode 100644 index 0000000..dc321a8 --- /dev/null +++ b/tests/auto/declarative/visual/ListView/data/itemlist.3.png diff --git a/tests/auto/declarative/visual/ListView/data/itemlist.4.png b/tests/auto/declarative/visual/ListView/data/itemlist.4.png Binary files differnew file mode 100644 index 0000000..fdab8c6 --- /dev/null +++ b/tests/auto/declarative/visual/ListView/data/itemlist.4.png diff --git a/tests/auto/declarative/visual/ListView/data/itemlist.5.png b/tests/auto/declarative/visual/ListView/data/itemlist.5.png Binary files differnew file mode 100644 index 0000000..15b51cb --- /dev/null +++ b/tests/auto/declarative/visual/ListView/data/itemlist.5.png diff --git a/tests/auto/declarative/visual/ListView/data/itemlist.6.png b/tests/auto/declarative/visual/ListView/data/itemlist.6.png Binary files differnew file mode 100644 index 0000000..a1947ca --- /dev/null +++ b/tests/auto/declarative/visual/ListView/data/itemlist.6.png diff --git a/tests/auto/declarative/visual/ListView/data/itemlist.qml b/tests/auto/declarative/visual/ListView/data/itemlist.qml new file mode 100644 index 0000000..073749f --- /dev/null +++ b/tests/auto/declarative/visual/ListView/data/itemlist.qml @@ -0,0 +1,2203 @@ +import Qt.VisualTest 4.6 + +VisualTest { + Frame { + msec: 0 + } + Frame { + msec: 16 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 32 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 48 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 64 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 80 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 96 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 112 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 128 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 144 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 160 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 176 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 192 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 208 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 224 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 240 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 256 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 272 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 288 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 304 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 320 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 336 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 352 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 368 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 384 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 400 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 416 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 432 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 448 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 464 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 480 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 496 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 512 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 528 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 544 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 560 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 576 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 592 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 608 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 624 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 640 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 656 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 672 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 688 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 704 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 720 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 736 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 752 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 768 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 784 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 800 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 816 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 832 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 848 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 864 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 880 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 896 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 912 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 928 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 944 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 960 + image: "itemlist.0.png" + } + Frame { + msec: 976 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 992 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 1008 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 1024 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 1040 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 1056 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 1072 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 1088 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 1104 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 1120 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 1136 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 1152 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 1168 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 1184 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 1200 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 1216 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 1232 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 1248 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 1264 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 1280 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 1296 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 1312 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 1328 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 1344 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 1360 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 1376 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 1392 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 1408 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 1424 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 1440 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 1456 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 1472 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 1488 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 1504 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 1520 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 1536 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 1552 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 1568 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 1584 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 1600 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 1616 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 1632 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 1648 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Mouse { + type: 2 + button: 1 + buttons: 1 + x: 192; y: 111 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1664 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 191; y: 111 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1680 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 190; y: 112 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 187; y: 113 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1696 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 184; y: 113 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 180; y: 113 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1712 + hash: "a68b1bc6c2963ee92c3a45f500667b3b" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 174; y: 114 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 167; y: 115 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1728 + hash: "7cda93e59466b3348e7ffe3895f89e86" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 160; y: 117 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1744 + hash: "06e0008c78e919f7270402938d9d764b" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 140; y: 121 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 132; y: 122 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1760 + hash: "9d8da9199efebb95f56e5d4ebc9a585e" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 114; y: 126 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 98; y: 132 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1776 + hash: "54a60a4279911ba4a8a5741bcadfa783" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 91; y: 132 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 3 + button: 1 + buttons: 0 + x: 91; y: 132 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1792 + hash: "a1a19370a1a8ed78e475f0d0eb12311c" + } + Frame { + msec: 1808 + hash: "196a3b127cf7065614c34856bf8d8bca" + } + Frame { + msec: 1824 + hash: "5fbefbd7c7be4374382cc4c8b86ac78a" + } + Frame { + msec: 1840 + hash: "d6a544c622e504c1b931e1a8a1310a6e" + } + Frame { + msec: 1856 + hash: "20e76f0eb4ec5f691999faf8ad313370" + } + Frame { + msec: 1872 + hash: "7f84a3545907c754ae8a6a30ef61c98d" + } + Frame { + msec: 1888 + hash: "b544901eae32903ad054e8cdfed715eb" + } + Frame { + msec: 1904 + hash: "a010ed1e3312f4ca9f429b7e32cdcef9" + } + Frame { + msec: 1920 + image: "itemlist.1.png" + } + Frame { + msec: 1936 + hash: "93a731dc6f71b6ff5400bf74c87e6c46" + } + Frame { + msec: 1952 + hash: "c73f63d1a024ba956e693487b3ccc761" + } + Frame { + msec: 1968 + hash: "539d3d00fce2d0128cd697d86d237fe7" + } + Frame { + msec: 1984 + hash: "52752d7d6f2d0e085f7132313907b72b" + } + Frame { + msec: 2000 + hash: "f46dd5803a6075e979e0fc733d503bfb" + } + Frame { + msec: 2016 + hash: "b8734698a6bad00ecf019f85328c2c21" + } + Frame { + msec: 2032 + hash: "1cfc499ca756023430cc5b2fa95a599d" + } + Frame { + msec: 2048 + hash: "63a816548837c19f8f0494c137fc0174" + } + Frame { + msec: 2064 + hash: "1bce9b85235e9a1a472c079dfec70ec5" + } + Frame { + msec: 2080 + hash: "6677863e7f74c12648409883f73adbe2" + } + Frame { + msec: 2096 + hash: "98e707a3e39a5f7bd4a101c2ed83535c" + } + Frame { + msec: 2112 + hash: "c1f6d8842d14a9394d4b7797314f50e8" + } + Frame { + msec: 2128 + hash: "579758b477bcd2112b305a5aac7df338" + } + Frame { + msec: 2144 + hash: "4a7bb81090db246db53e2dbc56f710ea" + } + Frame { + msec: 2160 + hash: "074995cdd8a70817d1c8a7bb0ad4c542" + } + Frame { + msec: 2176 + hash: "bd8d7bda4d2e9ad1fba2895d568f36cc" + } + Frame { + msec: 2192 + hash: "40cce3d2d80ac470af44fc334cec1d5b" + } + Frame { + msec: 2208 + hash: "15cbc226b032d5a97199735ea7a1408b" + } + Frame { + msec: 2224 + hash: "12b296aea9b058a5402d0d0a620f8edc" + } + Frame { + msec: 2240 + hash: "6ffd2b79cf0e941a59e74bc6f9025bcb" + } + Frame { + msec: 2256 + hash: "589a58ef76ea709dc8d80390c9044f99" + } + Frame { + msec: 2272 + hash: "c009924bfa30153f22ab168b539494e9" + } + Frame { + msec: 2288 + hash: "4b83674a7c2daa68d735901ad40be2bd" + } + Frame { + msec: 2304 + hash: "0525908c0302ada989e28990bac3f2ca" + } + Frame { + msec: 2320 + hash: "89eb13976ba3ba4413cafeb0cc91c01b" + } + Frame { + msec: 2336 + hash: "75c1295ef99680784b2e11fb88fa1423" + } + Frame { + msec: 2352 + hash: "93d89165cf6a97c76ae6e7f75678a3cd" + } + Frame { + msec: 2368 + hash: "53064c1938f08a55603a99b0db225174" + } + Frame { + msec: 2384 + hash: "31db5684466c0c32128a9a8c7b1835e1" + } + Frame { + msec: 2400 + hash: "99d9e58697736198e0a00443d237e85b" + } + Frame { + msec: 2416 + hash: "6c1e860aef983367365d53f5849ad441" + } + Frame { + msec: 2432 + hash: "6c1e860aef983367365d53f5849ad441" + } + Frame { + msec: 2448 + hash: "6c1e860aef983367365d53f5849ad441" + } + Frame { + msec: 2464 + hash: "99f9988040a389576cb6420b5391f768" + } + Frame { + msec: 2480 + hash: "99f9988040a389576cb6420b5391f768" + } + Frame { + msec: 2496 + hash: "99f9988040a389576cb6420b5391f768" + } + Frame { + msec: 2512 + hash: "99f9988040a389576cb6420b5391f768" + } + Frame { + msec: 2528 + hash: "99f9988040a389576cb6420b5391f768" + } + Frame { + msec: 2544 + hash: "99f9988040a389576cb6420b5391f768" + } + Frame { + msec: 2560 + hash: "99f9988040a389576cb6420b5391f768" + } + Frame { + msec: 2576 + hash: "99f9988040a389576cb6420b5391f768" + } + Frame { + msec: 2592 + hash: "99f9988040a389576cb6420b5391f768" + } + Frame { + msec: 2608 + hash: "99f9988040a389576cb6420b5391f768" + } + Frame { + msec: 2624 + hash: "99f9988040a389576cb6420b5391f768" + } + Frame { + msec: 2640 + hash: "99f9988040a389576cb6420b5391f768" + } + Frame { + msec: 2656 + hash: "99f9988040a389576cb6420b5391f768" + } + Frame { + msec: 2672 + hash: "99f9988040a389576cb6420b5391f768" + } + Frame { + msec: 2688 + hash: "99f9988040a389576cb6420b5391f768" + } + Frame { + msec: 2704 + hash: "99f9988040a389576cb6420b5391f768" + } + Frame { + msec: 2720 + hash: "99f9988040a389576cb6420b5391f768" + } + Frame { + msec: 2736 + hash: "99f9988040a389576cb6420b5391f768" + } + Frame { + msec: 2752 + hash: "99f9988040a389576cb6420b5391f768" + } + Frame { + msec: 2768 + hash: "99f9988040a389576cb6420b5391f768" + } + Frame { + msec: 2784 + hash: "99f9988040a389576cb6420b5391f768" + } + Frame { + msec: 2800 + hash: "99f9988040a389576cb6420b5391f768" + } + Frame { + msec: 2816 + hash: "99f9988040a389576cb6420b5391f768" + } + Frame { + msec: 2832 + hash: "99f9988040a389576cb6420b5391f768" + } + Frame { + msec: 2848 + hash: "99f9988040a389576cb6420b5391f768" + } + Frame { + msec: 2864 + hash: "99f9988040a389576cb6420b5391f768" + } + Mouse { + type: 2 + button: 1 + buttons: 1 + x: 181; y: 104 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2880 + image: "itemlist.2.png" + } + Frame { + msec: 2896 + hash: "99f9988040a389576cb6420b5391f768" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 179; y: 105 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 177; y: 106 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2912 + hash: "99f9988040a389576cb6420b5391f768" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 174; y: 108 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 170; y: 110 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2928 + hash: "5bb06b4e74532ba5bc8c7bc38bf77d7f" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 166; y: 112 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 160; y: 115 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2944 + hash: "b10a6206830a876017799ef2fcf61b1a" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 154; y: 117 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 140; y: 123 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2960 + hash: "b2e24759ba10afd6cff90f4b1e04b496" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 124; y: 127 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 3 + button: 1 + buttons: 0 + x: 124; y: 127 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2976 + hash: "ccbcd6f45cb529c2db71504c0f69d73e" + } + Frame { + msec: 2992 + hash: "7b31c6d5931677f1aa1e8c7d48a4ff22" + } + Frame { + msec: 3008 + hash: "c52f691a0a6cf155118bdfea2dfea623" + } + Frame { + msec: 3024 + hash: "dd639d1df3d4a9b8f06718def63d588f" + } + Frame { + msec: 3040 + hash: "39d767b09a648ef6295cec2848f9226f" + } + Frame { + msec: 3056 + hash: "5dd46d5f386431e7b13348ac9a9630ed" + } + Frame { + msec: 3072 + hash: "0354e5183b0e66e7ba146d292c559df4" + } + Frame { + msec: 3088 + hash: "984aa6d7075e24de429e05b1b0eda94a" + } + Frame { + msec: 3104 + hash: "1af58a2f44f1f613712d4df85e38356d" + } + Frame { + msec: 3120 + hash: "6e4085e7f1fee724d78808753f04b471" + } + Frame { + msec: 3136 + hash: "73a019ef9057639d631cd99a431b3f3b" + } + Frame { + msec: 3152 + hash: "c9414a2e655a90dfdcb6fb288b4ba0ca" + } + Frame { + msec: 3168 + hash: "3f4c24f7ac89da982af22032309637fb" + } + Frame { + msec: 3184 + hash: "a50e6ada8f73a257657f4348ceaffcfd" + } + Frame { + msec: 3200 + hash: "a67bf40d09259bbd079c12ae4f49150f" + } + Frame { + msec: 3216 + hash: "a2fc512b7c234a9d0b2c1a83387a8a46" + } + Frame { + msec: 3232 + hash: "85090683ce9a3c9833b1cb0b3df076ee" + } + Frame { + msec: 3248 + hash: "275f3594a0e2cc4b6717f9f336e7e1b6" + } + Frame { + msec: 3264 + hash: "2473eb11f7b65a784a2b166114026488" + } + Frame { + msec: 3280 + hash: "4865c30dc45fbf5ca82047b77eca0912" + } + Frame { + msec: 3296 + hash: "54de88bca395449fbaea2c090c7a5d91" + } + Frame { + msec: 3312 + hash: "833f9295cf9a34934f001eac48551b59" + } + Frame { + msec: 3328 + hash: "5bf565f57ababa7380faeee94add91ca" + } + Frame { + msec: 3344 + hash: "6325578867f1eb3b2d47ed40b017b571" + } + Frame { + msec: 3360 + hash: "046a6114176b3a3206b7a2acd6e30b41" + } + Frame { + msec: 3376 + hash: "f8d4120a17f28c2d1d9c4be959098058" + } + Frame { + msec: 3392 + hash: "71356d2e48aad2900784ea6bc1a3d908" + } + Frame { + msec: 3408 + hash: "b84ad460fb81fdc4049abe8f3ff180bb" + } + Frame { + msec: 3424 + hash: "0354239f5eaea23474d9f81385392a8a" + } + Frame { + msec: 3440 + hash: "8ef0eef3393e07ae7605c865a95edc30" + } + Frame { + msec: 3456 + hash: "5b8b384cc8e3faf4310015e19b3eb487" + } + Frame { + msec: 3472 + hash: "77c18ac7dfff2a4e516915e3e3df0717" + } + Frame { + msec: 3488 + hash: "c1d3264384c26345eb8100de829309ca" + } + Frame { + msec: 3504 + hash: "6b21f71d0bedef4bbcb445a13f61e7a3" + } + Frame { + msec: 3520 + hash: "f619097356671f6eb54d3b1c481e709d" + } + Frame { + msec: 3536 + hash: "e56e3a90da446e0c482cb93717f6aacc" + } + Frame { + msec: 3552 + hash: "aa94ebdbb4b8423aff28c95daff0baf5" + } + Frame { + msec: 3568 + hash: "e1744d9cacd1a2c96af4cfdd5c486995" + } + Frame { + msec: 3584 + hash: "7f19ea52e9e41a3b1bd90bb2a144d305" + } + Frame { + msec: 3600 + hash: "7f19ea52e9e41a3b1bd90bb2a144d305" + } + Frame { + msec: 3616 + hash: "7f19ea52e9e41a3b1bd90bb2a144d305" + } + Frame { + msec: 3632 + hash: "88143ff6c278a5433b314b551b7b8b1d" + } + Frame { + msec: 3648 + hash: "88143ff6c278a5433b314b551b7b8b1d" + } + Frame { + msec: 3664 + hash: "88143ff6c278a5433b314b551b7b8b1d" + } + Frame { + msec: 3680 + hash: "88143ff6c278a5433b314b551b7b8b1d" + } + Frame { + msec: 3696 + hash: "88143ff6c278a5433b314b551b7b8b1d" + } + Frame { + msec: 3712 + hash: "88143ff6c278a5433b314b551b7b8b1d" + } + Frame { + msec: 3728 + hash: "88143ff6c278a5433b314b551b7b8b1d" + } + Frame { + msec: 3744 + hash: "88143ff6c278a5433b314b551b7b8b1d" + } + Frame { + msec: 3760 + hash: "88143ff6c278a5433b314b551b7b8b1d" + } + Frame { + msec: 3776 + hash: "88143ff6c278a5433b314b551b7b8b1d" + } + Frame { + msec: 3792 + hash: "88143ff6c278a5433b314b551b7b8b1d" + } + Frame { + msec: 3808 + hash: "88143ff6c278a5433b314b551b7b8b1d" + } + Frame { + msec: 3824 + hash: "88143ff6c278a5433b314b551b7b8b1d" + } + Frame { + msec: 3840 + image: "itemlist.3.png" + } + Frame { + msec: 3856 + hash: "88143ff6c278a5433b314b551b7b8b1d" + } + Frame { + msec: 3872 + hash: "88143ff6c278a5433b314b551b7b8b1d" + } + Frame { + msec: 3888 + hash: "88143ff6c278a5433b314b551b7b8b1d" + } + Frame { + msec: 3904 + hash: "88143ff6c278a5433b314b551b7b8b1d" + } + Frame { + msec: 3920 + hash: "88143ff6c278a5433b314b551b7b8b1d" + } + Frame { + msec: 3936 + hash: "88143ff6c278a5433b314b551b7b8b1d" + } + Frame { + msec: 3952 + hash: "88143ff6c278a5433b314b551b7b8b1d" + } + Frame { + msec: 3968 + hash: "88143ff6c278a5433b314b551b7b8b1d" + } + Frame { + msec: 3984 + hash: "88143ff6c278a5433b314b551b7b8b1d" + } + Frame { + msec: 4000 + hash: "88143ff6c278a5433b314b551b7b8b1d" + } + Frame { + msec: 4016 + hash: "88143ff6c278a5433b314b551b7b8b1d" + } + Frame { + msec: 4032 + hash: "88143ff6c278a5433b314b551b7b8b1d" + } + Frame { + msec: 4048 + hash: "88143ff6c278a5433b314b551b7b8b1d" + } + Frame { + msec: 4064 + hash: "88143ff6c278a5433b314b551b7b8b1d" + } + Frame { + msec: 4080 + hash: "88143ff6c278a5433b314b551b7b8b1d" + } + Frame { + msec: 4096 + hash: "88143ff6c278a5433b314b551b7b8b1d" + } + Mouse { + type: 2 + button: 1 + buttons: 1 + x: 31; y: 137 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4112 + hash: "88143ff6c278a5433b314b551b7b8b1d" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 32; y: 137 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4128 + hash: "88143ff6c278a5433b314b551b7b8b1d" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 33; y: 136 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 36; y: 135 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4144 + hash: "88143ff6c278a5433b314b551b7b8b1d" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 40; y: 134 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 46; y: 132 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4160 + hash: "c2c9c284b185a89faf4ddb5a7867f449" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 64; y: 130 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4176 + hash: "de1c18aeda5d2fbd6dad4554c78617bd" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 86; y: 126 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 110; y: 118 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 3 + button: 1 + buttons: 0 + x: 110; y: 118 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4192 + hash: "a67bf40d09259bbd079c12ae4f49150f" + } + Frame { + msec: 4208 + hash: "94514668dafbe41c5890a578efd6dea4" + } + Frame { + msec: 4224 + hash: "2e97a74eb9ddb1c9613c89e2d78db018" + } + Frame { + msec: 4240 + hash: "4b5368f0d86bffeb6bd31b58aec88650" + } + Frame { + msec: 4256 + hash: "b459bde7bb4ce51e6ecdab58f64fcbb9" + } + Frame { + msec: 4272 + hash: "7bac8cc3ec64c9ad1c0da282e38c953e" + } + Frame { + msec: 4288 + hash: "a73a58c3d7a757547740a2a161f4c756" + } + Frame { + msec: 4304 + hash: "b35edcb1fa3568a3e770ab2364b82e75" + } + Frame { + msec: 4320 + hash: "d6c863ef57c5e5cb04cdac72f920db0b" + } + Frame { + msec: 4336 + hash: "0db5e4588ff851918b07796f0cf07382" + } + Frame { + msec: 4352 + hash: "71ec8c363ca6a6f7556afb70faccffe6" + } + Frame { + msec: 4368 + hash: "18d026e9c965ada1db67c643576d2a80" + } + Frame { + msec: 4384 + hash: "69f71c22dff981a4da8ec1edcf90e79f" + } + Frame { + msec: 4400 + hash: "680460f5e4d9e649931601041af046b2" + } + Frame { + msec: 4416 + hash: "3028763fd15de2607b20b1331b904a4a" + } + Frame { + msec: 4432 + hash: "333eb60e217fe1ea7469eab52ac461f1" + } + Frame { + msec: 4448 + hash: "ccbcd6f45cb529c2db71504c0f69d73e" + } + Frame { + msec: 4464 + hash: "3445df9b41a0a3e74738cbf328ab7d5c" + } + Frame { + msec: 4480 + hash: "bd2c072558479e9de7a97207e58cc57f" + } + Frame { + msec: 4496 + hash: "3d34b0b24a30eda93377dcb4585afed8" + } + Frame { + msec: 4512 + hash: "d3045703863b0c5a327b9355c23d69f2" + } + Frame { + msec: 4528 + hash: "2f2eb55f693415b840a317211b250e9f" + } + Frame { + msec: 4544 + hash: "791b9ca7d47a3343474c30a35e336d4b" + } + Frame { + msec: 4560 + hash: "73a0c02ebad6d3d5f939d9a00dd898bf" + } + Frame { + msec: 4576 + hash: "d5c11135d586711b12f236430a2c2795" + } + Frame { + msec: 4592 + hash: "34f9ea214fe714ff4e994f715ea6ea39" + } + Frame { + msec: 4608 + hash: "8e49afa00983b156b818533923fb6edd" + } + Frame { + msec: 4624 + hash: "e7e7bef17cee92eca9191fd734d7a577" + } + Frame { + msec: 4640 + hash: "e407f6ed7cb3c130365ab5515d6308c0" + } + Frame { + msec: 4656 + hash: "5bb06b4e74532ba5bc8c7bc38bf77d7f" + } + Frame { + msec: 4672 + hash: "0ad7411316031e22034c14e81ca3a806" + } + Frame { + msec: 4688 + hash: "dd81d7a9b48c922b4c42cba1b5f2b9d7" + } + Frame { + msec: 4704 + hash: "32bef6f5005ad94e29ff59165958fbdc" + } + Frame { + msec: 4720 + hash: "87758dd311f91193bf1e3536c2f58525" + } + Frame { + msec: 4736 + hash: "015be92a4ff4e735fcc3cbc7a8b9d763" + } + Frame { + msec: 4752 + hash: "d4c34ed49317c6692d71681fcd9842b6" + } + Frame { + msec: 4768 + hash: "abaa235bb946a8abaddd52981d632c2d" + } + Frame { + msec: 4784 + hash: "99f9988040a389576cb6420b5391f768" + } + Frame { + msec: 4800 + image: "itemlist.4.png" + } + Frame { + msec: 4816 + hash: "99f9988040a389576cb6420b5391f768" + } + Frame { + msec: 4832 + hash: "99f9988040a389576cb6420b5391f768" + } + Frame { + msec: 4848 + hash: "99f9988040a389576cb6420b5391f768" + } + Frame { + msec: 4864 + hash: "99f9988040a389576cb6420b5391f768" + } + Frame { + msec: 4880 + hash: "99f9988040a389576cb6420b5391f768" + } + Frame { + msec: 4896 + hash: "99f9988040a389576cb6420b5391f768" + } + Frame { + msec: 4912 + hash: "99f9988040a389576cb6420b5391f768" + } + Frame { + msec: 4928 + hash: "99f9988040a389576cb6420b5391f768" + } + Frame { + msec: 4944 + hash: "99f9988040a389576cb6420b5391f768" + } + Frame { + msec: 4960 + hash: "99f9988040a389576cb6420b5391f768" + } + Frame { + msec: 4976 + hash: "99f9988040a389576cb6420b5391f768" + } + Frame { + msec: 4992 + hash: "99f9988040a389576cb6420b5391f768" + } + Frame { + msec: 5008 + hash: "99f9988040a389576cb6420b5391f768" + } + Frame { + msec: 5024 + hash: "99f9988040a389576cb6420b5391f768" + } + Frame { + msec: 5040 + hash: "99f9988040a389576cb6420b5391f768" + } + Frame { + msec: 5056 + hash: "99f9988040a389576cb6420b5391f768" + } + Frame { + msec: 5072 + hash: "99f9988040a389576cb6420b5391f768" + } + Frame { + msec: 5088 + hash: "99f9988040a389576cb6420b5391f768" + } + Frame { + msec: 5104 + hash: "99f9988040a389576cb6420b5391f768" + } + Frame { + msec: 5120 + hash: "99f9988040a389576cb6420b5391f768" + } + Frame { + msec: 5136 + hash: "99f9988040a389576cb6420b5391f768" + } + Frame { + msec: 5152 + hash: "99f9988040a389576cb6420b5391f768" + } + Frame { + msec: 5168 + hash: "99f9988040a389576cb6420b5391f768" + } + Frame { + msec: 5184 + hash: "99f9988040a389576cb6420b5391f768" + } + Frame { + msec: 5200 + hash: "99f9988040a389576cb6420b5391f768" + } + Frame { + msec: 5216 + hash: "99f9988040a389576cb6420b5391f768" + } + Frame { + msec: 5232 + hash: "99f9988040a389576cb6420b5391f768" + } + Mouse { + type: 2 + button: 1 + buttons: 1 + x: 17; y: 120 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5248 + hash: "99f9988040a389576cb6420b5391f768" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 19; y: 120 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 21; y: 120 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5264 + hash: "99f9988040a389576cb6420b5391f768" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 24; y: 119 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 28; y: 119 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5280 + hash: "95b380c9ab6f8db7b822faf023d94546" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 35; y: 119 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 44; y: 119 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5296 + hash: "bb79e53556698c62ec30c75be9f6b7d7" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 70; y: 119 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 96; y: 117 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 3 + button: 1 + buttons: 0 + x: 96; y: 117 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5312 + hash: "285cc2f0df1f59f25a0135560ab6edf2" + } + Frame { + msec: 5328 + hash: "93a731dc6f71b6ff5400bf74c87e6c46" + } + Frame { + msec: 5344 + hash: "eb555741ab128a50de5a18a454f2e639" + } + Frame { + msec: 5360 + hash: "5dbe6cf898c1e37fcaacecfcf57b2194" + } + Frame { + msec: 5376 + hash: "e7795610115593e78bb32f7bcc0ae2eb" + } + Frame { + msec: 5392 + hash: "20e76f0eb4ec5f691999faf8ad313370" + } + Frame { + msec: 5408 + hash: "d6a544c622e504c1b931e1a8a1310a6e" + } + Frame { + msec: 5424 + hash: "e7a3a21feed244c5b1c710a9254c15f0" + } + Frame { + msec: 5440 + hash: "5a4b1aca24f121d1373646e9d80b86fd" + } + Frame { + msec: 5456 + hash: "331d2ec7021655c86aa64e47718a1088" + } + Frame { + msec: 5472 + hash: "92096bc872e7395aa5b75c44646a0b60" + } + Frame { + msec: 5488 + hash: "0d9aa6cee4d21488cbb5153f8f3ed593" + } + Frame { + msec: 5504 + hash: "c1b943d43701605563fffffcb75f9fa7" + } + Frame { + msec: 5520 + hash: "1b680025d5ad1ddd8f8d5f570ba73e71" + } + Frame { + msec: 5536 + hash: "5539a3b9f60ea747c10ed8328b467cbf" + } + Frame { + msec: 5552 + hash: "0a1317bcb606cd3488c5b14ee5d96585" + } + Frame { + msec: 5568 + hash: "8844af68b11db7d92c69804c7371a746" + } + Frame { + msec: 5584 + hash: "28d7fd127739c6e3b8488651b725c802" + } + Frame { + msec: 5600 + hash: "0cf1a7d958a96aa2768995dddc5ccc09" + } + Frame { + msec: 5616 + hash: "64b902fe7ab4d89ef0c7b760974e3488" + } + Frame { + msec: 5632 + hash: "aba11c597eba550fc1eaddbf554057f6" + } + Frame { + msec: 5648 + hash: "1bacaa3bb9dc3cac9ffc7491cb4dc1a5" + } + Frame { + msec: 5664 + hash: "0ba8b582234d9f0c198c0c9e18e1cb02" + } + Frame { + msec: 5680 + hash: "f66eaf2b5c3529987c0d9d005351ed73" + } + Frame { + msec: 5696 + hash: "75b0bb720fa4c77da3783b3ff31c2fae" + } + Frame { + msec: 5712 + hash: "345b235bb7f13409378e5c0c370f2a41" + } + Frame { + msec: 5728 + hash: "83b7e902dce4e0fdc4ef5d629188c23c" + } + Frame { + msec: 5744 + hash: "04b9041c6f10969889d92e94785c7e88" + } + Frame { + msec: 5760 + image: "itemlist.5.png" + } + Frame { + msec: 5776 + hash: "4f3a902addc34ecdaf390e2427cc52e7" + } + Frame { + msec: 5792 + hash: "68d443f16c16821ffc9ca68b17c76034" + } + Frame { + msec: 5808 + hash: "9d25adc77befa761ee376a9b43595b5e" + } + Frame { + msec: 5824 + hash: "a68b1bc6c2963ee92c3a45f500667b3b" + } + Frame { + msec: 5840 + hash: "d5268cd58c222451d48038e715e83802" + } + Frame { + msec: 5856 + hash: "f37d461541a8ec7a4161b18748de6aea" + } + Frame { + msec: 5872 + hash: "805319ac7ca842feb3649e92f8b5b72f" + } + Frame { + msec: 5888 + hash: "73124472a05080891d4948d8ca273f8c" + } + Frame { + msec: 5904 + hash: "b6e433a23282a50db2e165a2447ba3f6" + } + Frame { + msec: 5920 + hash: "fd8d3f5688b1806998c6087e18c6c730" + } + Frame { + msec: 5936 + hash: "f132dd459950ef2d18aa93ca950d0692" + } + Frame { + msec: 5952 + hash: "ade5beb259b5277c333ca806fc9bdbec" + } + Frame { + msec: 5968 + hash: "ade5beb259b5277c333ca806fc9bdbec" + } + Frame { + msec: 5984 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 6000 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 6016 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 6032 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 6048 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 6064 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 6080 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 6096 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 6112 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 6128 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 6144 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 6160 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 6176 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 6192 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 6208 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 6224 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 6240 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 6256 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 6272 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 6288 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 6304 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 6320 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 6336 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 6352 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 6368 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 6384 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 6400 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 6416 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 6432 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 6448 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 6464 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 6480 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 6496 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 6512 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 6528 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 6544 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 6560 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 6576 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 6592 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 6608 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 6624 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 6640 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 6656 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 6672 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 6688 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 6704 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 6720 + image: "itemlist.6.png" + } + Frame { + msec: 6736 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 6752 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 6768 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 6784 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 6800 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 6816 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 6832 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 6848 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 6864 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 6880 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 6896 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 6912 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 6928 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 6944 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 6960 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 6976 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 6992 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 7008 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 7024 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 7040 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 7056 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 7072 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 7088 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 7104 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 7120 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 7136 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 7152 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 7168 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 7184 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 7200 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 7216 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 7232 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 7248 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 7264 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 7280 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 7296 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } + Frame { + msec: 7312 + hash: "bf47cc398a702dd17c8efebb3d2f8073" + } +} diff --git a/tests/auto/declarative/visual/ListView/itemlist.qml b/tests/auto/declarative/visual/ListView/itemlist.qml new file mode 100644 index 0000000..8cbbdb0 --- /dev/null +++ b/tests/auto/declarative/visual/ListView/itemlist.qml @@ -0,0 +1,40 @@ +// This example demonstrates placing items in a view using +// a VisualItemModel + +import Qt 4.6 + +Rectangle { + color: "lightgray" + width: 240 + height: 320 + + VisualItemModel { + id: itemModel + objectName: "itemModel" + Rectangle { + objectName: "item1" + height: view.height; width: view.width; color: "#FFFEF0" + } + Rectangle { + objectName: "item2" + height: view.height; width: view.width; color: "#F0FFF7" + } + Rectangle { + objectName: "item3" + height: view.height; width: view.width; color: "#F4F0FF" + } + } + + ListView { + id: view + objectName: "view" + anchors.fill: parent + anchors.bottomMargin: 30 + model: itemModel + preferredHighlightBegin: 0 + preferredHighlightEnd: 0 + highlightRangeMode: "StrictlyEnforceRange" + orientation: ListView.Horizontal + flickDeceleration: 2000 + } +} diff --git a/tests/auto/declarative/visual/flickable/Day.qml b/tests/auto/declarative/visual/flickable/Day.qml deleted file mode 100644 index 8416724..0000000 --- a/tests/auto/declarative/visual/flickable/Day.qml +++ /dev/null @@ -1,26 +0,0 @@ -import Qt 4.6 - -Rectangle { - property string day - - width: 200 - height: 300 - radius: 7 - border.color: "black" - id: Page - Image { - x: 10 - y: 10 - source: "cork.jpg" - } - Text { - x: 20 - y: 20 - height: 40 - font.pixelSize: 14 - font.bold: true - text: day - style: "Outline" - styleColor: "#dedede" - } -} diff --git a/tests/auto/declarative/visual/flickable/cork.jpg b/tests/auto/declarative/visual/flickable/cork.jpg Binary files differdeleted file mode 100644 index 6dc3a3f..0000000 --- a/tests/auto/declarative/visual/flickable/cork.jpg +++ /dev/null diff --git a/tests/auto/declarative/visual/flickable/data-X11/flickable.0.png b/tests/auto/declarative/visual/flickable/data-X11/flickable.0.png Binary files differdeleted file mode 100644 index 5da2f2a..0000000 --- a/tests/auto/declarative/visual/flickable/data-X11/flickable.0.png +++ /dev/null diff --git a/tests/auto/declarative/visual/flickable/data-X11/flickable.1.png b/tests/auto/declarative/visual/flickable/data-X11/flickable.1.png Binary files differdeleted file mode 100644 index 1c33ca6..0000000 --- a/tests/auto/declarative/visual/flickable/data-X11/flickable.1.png +++ /dev/null diff --git a/tests/auto/declarative/visual/flickable/data-X11/flickable.2.png b/tests/auto/declarative/visual/flickable/data-X11/flickable.2.png Binary files differdeleted file mode 100644 index 67cdf8f..0000000 --- a/tests/auto/declarative/visual/flickable/data-X11/flickable.2.png +++ /dev/null diff --git a/tests/auto/declarative/visual/flickable/data-X11/flickable.qml b/tests/auto/declarative/visual/flickable/data-X11/flickable.qml deleted file mode 100644 index 6a60409..0000000 --- a/tests/auto/declarative/visual/flickable/data-X11/flickable.qml +++ /dev/null @@ -1,791 +0,0 @@ -import Qt.VisualTest 4.6 - -VisualTest { - Frame { - msec: 0 - } - Frame { - msec: 16 - hash: "2a07f4ab51ed6ac07c2efecfd561cdff" - } - Frame { - msec: 32 - hash: "2a07f4ab51ed6ac07c2efecfd561cdff" - } - Frame { - msec: 48 - hash: "2a07f4ab51ed6ac07c2efecfd561cdff" - } - Frame { - msec: 64 - hash: "2a07f4ab51ed6ac07c2efecfd561cdff" - } - Frame { - msec: 80 - hash: "2a07f4ab51ed6ac07c2efecfd561cdff" - } - Frame { - msec: 96 - hash: "2a07f4ab51ed6ac07c2efecfd561cdff" - } - Frame { - msec: 112 - hash: "2a07f4ab51ed6ac07c2efecfd561cdff" - } - Frame { - msec: 128 - hash: "2a07f4ab51ed6ac07c2efecfd561cdff" - } - Frame { - msec: 144 - hash: "2a07f4ab51ed6ac07c2efecfd561cdff" - } - Frame { - msec: 160 - hash: "2a07f4ab51ed6ac07c2efecfd561cdff" - } - Frame { - msec: 176 - hash: "2a07f4ab51ed6ac07c2efecfd561cdff" - } - Frame { - msec: 192 - hash: "2a07f4ab51ed6ac07c2efecfd561cdff" - } - Frame { - msec: 208 - hash: "2a07f4ab51ed6ac07c2efecfd561cdff" - } - Frame { - msec: 224 - hash: "2a07f4ab51ed6ac07c2efecfd561cdff" - } - Frame { - msec: 240 - hash: "2a07f4ab51ed6ac07c2efecfd561cdff" - } - Frame { - msec: 256 - hash: "2a07f4ab51ed6ac07c2efecfd561cdff" - } - Frame { - msec: 272 - hash: "2a07f4ab51ed6ac07c2efecfd561cdff" - } - Frame { - msec: 288 - hash: "2a07f4ab51ed6ac07c2efecfd561cdff" - } - Frame { - msec: 304 - hash: "2a07f4ab51ed6ac07c2efecfd561cdff" - } - Frame { - msec: 320 - hash: "2a07f4ab51ed6ac07c2efecfd561cdff" - } - Frame { - msec: 336 - hash: "2a07f4ab51ed6ac07c2efecfd561cdff" - } - Frame { - msec: 352 - hash: "2a07f4ab51ed6ac07c2efecfd561cdff" - } - Frame { - msec: 368 - hash: "2a07f4ab51ed6ac07c2efecfd561cdff" - } - Frame { - msec: 384 - hash: "2a07f4ab51ed6ac07c2efecfd561cdff" - } - Frame { - msec: 400 - hash: "2a07f4ab51ed6ac07c2efecfd561cdff" - } - Frame { - msec: 416 - hash: "2a07f4ab51ed6ac07c2efecfd561cdff" - } - Frame { - msec: 432 - hash: "2a07f4ab51ed6ac07c2efecfd561cdff" - } - Frame { - msec: 448 - hash: "2a07f4ab51ed6ac07c2efecfd561cdff" - } - Frame { - msec: 464 - hash: "2a07f4ab51ed6ac07c2efecfd561cdff" - } - Frame { - msec: 480 - hash: "2a07f4ab51ed6ac07c2efecfd561cdff" - } - Frame { - msec: 496 - hash: "2a07f4ab51ed6ac07c2efecfd561cdff" - } - Frame { - msec: 512 - hash: "2a07f4ab51ed6ac07c2efecfd561cdff" - } - Frame { - msec: 528 - hash: "2a07f4ab51ed6ac07c2efecfd561cdff" - } - Frame { - msec: 544 - hash: "2a07f4ab51ed6ac07c2efecfd561cdff" - } - Frame { - msec: 560 - hash: "2a07f4ab51ed6ac07c2efecfd561cdff" - } - Frame { - msec: 576 - hash: "2a07f4ab51ed6ac07c2efecfd561cdff" - } - Frame { - msec: 592 - hash: "2a07f4ab51ed6ac07c2efecfd561cdff" - } - Frame { - msec: 608 - hash: "2a07f4ab51ed6ac07c2efecfd561cdff" - } - Frame { - msec: 624 - hash: "2a07f4ab51ed6ac07c2efecfd561cdff" - } - Frame { - msec: 640 - hash: "2a07f4ab51ed6ac07c2efecfd561cdff" - } - Frame { - msec: 656 - hash: "2a07f4ab51ed6ac07c2efecfd561cdff" - } - Frame { - msec: 672 - hash: "2a07f4ab51ed6ac07c2efecfd561cdff" - } - Frame { - msec: 688 - hash: "2a07f4ab51ed6ac07c2efecfd561cdff" - } - Frame { - msec: 704 - hash: "2a07f4ab51ed6ac07c2efecfd561cdff" - } - Frame { - msec: 720 - hash: "2a07f4ab51ed6ac07c2efecfd561cdff" - } - Mouse { - type: 2 - button: 1 - buttons: 1 - x: 517; y: 154 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 736 - hash: "2a07f4ab51ed6ac07c2efecfd561cdff" - } - Mouse { - type: 5 - button: 1 - buttons: 1 - x: 514; y: 154 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 752 - hash: "2a07f4ab51ed6ac07c2efecfd561cdff" - } - Mouse { - type: 5 - button: 1 - buttons: 1 - x: 509; y: 155 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 768 - hash: "2a07f4ab51ed6ac07c2efecfd561cdff" - } - Mouse { - type: 5 - button: 1 - buttons: 1 - x: 497; y: 155 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 784 - hash: "4f30ebc802a38cd4ad05018b6bc429a4" - } - Mouse { - type: 5 - button: 1 - buttons: 1 - x: 480; y: 155 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 800 - hash: "8d2e349b2aad07d98f11a30a33a5b409" - } - Mouse { - type: 5 - button: 1 - buttons: 1 - x: 443; y: 155 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 816 - hash: "09647796906da54345fffa18eb1b1f91" - } - Mouse { - type: 3 - button: 1 - buttons: 0 - x: 443; y: 155 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 832 - hash: "09647796906da54345fffa18eb1b1f91" - } - Frame { - msec: 848 - hash: "4a7dd2931129756437e38b3516474aa1" - } - Frame { - msec: 864 - hash: "bbec3d9d7ca38599b03e44ed3c2b68b6" - } - Frame { - msec: 880 - hash: "07214f888dba9ea84eae306cf92a0f7f" - } - Frame { - msec: 896 - hash: "0feac7c874f8caf11db319c13ed2250e" - } - Frame { - msec: 912 - hash: "7de76db129b4e9d17836d17fff687b99" - } - Frame { - msec: 928 - hash: "7f3414d54148afd7b01ed0fe54b60ba2" - } - Frame { - msec: 944 - hash: "692cde1197a0f37bee5a4e57160bff8b" - } - Frame { - msec: 960 - image: "flickable.0.png" - } - Frame { - msec: 976 - hash: "d0b879cb63d003c0fd00c14160e7d1a4" - } - Frame { - msec: 992 - hash: "9a0879e4e9b23ad3c9340d7c28eb6386" - } - Frame { - msec: 1008 - hash: "2b6f4cb48284a835f77bc6368566c187" - } - Frame { - msec: 1024 - hash: "53c094e3aa4f841195b2ce4e0fa34fae" - } - Frame { - msec: 1040 - hash: "3ef7530199a136d339adf677cf98f035" - } - Frame { - msec: 1056 - hash: "1a707788b43773ffa05d0ad88e6f156d" - } - Frame { - msec: 1072 - hash: "e51dc6702e59c68e6a34f4a8f6c5b5c5" - } - Frame { - msec: 1088 - hash: "1fe6d9b517ad1b9aaf16d005577ab45d" - } - Frame { - msec: 1104 - hash: "fac02bdb63d4aa7749a66f6aa91a7035" - } - Frame { - msec: 1120 - hash: "4bad8d93cee30c76a4b263981adc0c2f" - } - Frame { - msec: 1136 - hash: "8bcee1ab8a1ab66b22d59d975a265906" - } - Frame { - msec: 1152 - hash: "a68fa84e32d4ba44d4d53b476505ff6e" - } - Frame { - msec: 1168 - hash: "d7258071d6673ef22a8836a8fdc6c5a6" - } - Frame { - msec: 1184 - hash: "c708f62342663a4a879c86cd97448b75" - } - Frame { - msec: 1200 - hash: "2e28d213283f4791d051177f468d9246" - } - Frame { - msec: 1216 - hash: "beb36da1d54eedc62b65c47ba7c43f59" - } - Frame { - msec: 1232 - hash: "2cea7b5571c563a709e211fbb5684a9d" - } - Frame { - msec: 1248 - hash: "9ef0bafe8a9d52bc2fb7732c02ea9304" - } - Frame { - msec: 1264 - hash: "7a489611578c9590aaf1b85763d8ae2c" - } - Frame { - msec: 1280 - hash: "31b8e33b788821922d6d437f40c7811c" - } - Frame { - msec: 1296 - hash: "421ae01b4d757996aefb35641f167c2d" - } - Frame { - msec: 1312 - hash: "175c93fde4cb520881802a57bf10be5f" - } - Frame { - msec: 1328 - hash: "11602a6ca746c83c857524eafc4d9570" - } - Frame { - msec: 1344 - hash: "4f10b74a1bb8d65f3d371cc613a1641a" - } - Frame { - msec: 1360 - hash: "d8505ce7ad73683817ed4e3a7f3ab610" - } - Frame { - msec: 1376 - hash: "a800684370e06817e1a2a34ceb2fc651" - } - Frame { - msec: 1392 - hash: "267e184af16c63eefe290c6659917b34" - } - Frame { - msec: 1408 - hash: "354c5b04c0ed2288c23064debb4e261e" - } - Frame { - msec: 1424 - hash: "67d300a0f15f0642c4ba0c8bd7662c01" - } - Frame { - msec: 1440 - hash: "2fe12d1625140c2da1f0af17e1bf548b" - } - Frame { - msec: 1456 - hash: "fef2140a272d78f5c0e93ec3a4c6e6c9" - } - Frame { - msec: 1472 - hash: "b9331a586bad1619e51794bc66bf36fc" - } - Frame { - msec: 1488 - hash: "8ba04c015ca8c150e0bbb09769955b5d" - } - Frame { - msec: 1504 - hash: "09f573e1465533e67fa0d504e5481c8b" - } - Frame { - msec: 1520 - hash: "fe3e919aa08ddd51ee7b81ef405b10f4" - } - Frame { - msec: 1536 - hash: "e5d85427a2e02dd83d2932205e7aa6ac" - } - Frame { - msec: 1552 - hash: "4e97fda26cbb0273dd69e50cf134a147" - } - Frame { - msec: 1568 - hash: "7e13b494b5397b747eb6065f7555acce" - } - Frame { - msec: 1584 - hash: "fe9567c08f776bed903a74c9c21a18bb" - } - Frame { - msec: 1600 - hash: "086dd974228d51513e732c96c69dd07f" - } - Frame { - msec: 1616 - hash: "b43d5b4f44df55b1099c7ba339df1799" - } - Frame { - msec: 1632 - hash: "ce0e82fc42ff0017b40278e323682348" - } - Frame { - msec: 1648 - hash: "e28b9cee2047774d70df6510c83e9dfe" - } - Frame { - msec: 1664 - hash: "568d97ff98ac2d867981eb7330b831b1" - } - Frame { - msec: 1680 - hash: "10f38a5f95a91bc7380a13f5aa30f22f" - } - Frame { - msec: 1696 - hash: "2f9ec9b1843f2970fa8225f313781404" - } - Frame { - msec: 1712 - hash: "bdd8405a889ff9a6e33cce65416bdc43" - } - Frame { - msec: 1728 - hash: "9f57f8460ade9e6ff3db7a0a8d044f07" - } - Frame { - msec: 1744 - hash: "36d1e95a006c00b183b24a05c2acf12f" - } - Frame { - msec: 1760 - hash: "78d7f8b056c0341b442c0eabbf6da90b" - } - Frame { - msec: 1776 - hash: "f5786d9a77a28796908fcb376af2cc1f" - } - Frame { - msec: 1792 - hash: "38cfaf7a356163f8ff9708ba625907b7" - } - Frame { - msec: 1808 - hash: "989922a8c5e3c000811a994bfe183d7f" - } - Frame { - msec: 1824 - hash: "989922a8c5e3c000811a994bfe183d7f" - } - Frame { - msec: 1840 - hash: "989922a8c5e3c000811a994bfe183d7f" - } - Frame { - msec: 1856 - hash: "f5786d9a77a28796908fcb376af2cc1f" - } - Frame { - msec: 1872 - hash: "014cfc6573eb0a89acacd6f154098202" - } - Frame { - msec: 1888 - hash: "247fead2e4139421cb6e5f7a97fa1768" - } - Frame { - msec: 1904 - hash: "bdd8405a889ff9a6e33cce65416bdc43" - } - Frame { - msec: 1920 - image: "flickable.1.png" - } - Frame { - msec: 1936 - hash: "d64f65edf900912158634c88b5c0b5ca" - } - Frame { - msec: 1952 - hash: "d714183774f603269335b0675e0656f8" - } - Frame { - msec: 1968 - hash: "24f9e90f7789a7c5db65d59312d49fe1" - } - Frame { - msec: 1984 - hash: "ce0e82fc42ff0017b40278e323682348" - } - Frame { - msec: 2000 - hash: "f564293ff63ccc952597ac228c6437dc" - } - Frame { - msec: 2016 - hash: "555d97eac7e8b06cb81f4af74098ce65" - } - Frame { - msec: 2032 - hash: "555d97eac7e8b06cb81f4af74098ce65" - } - Frame { - msec: 2048 - hash: "555d97eac7e8b06cb81f4af74098ce65" - } - Frame { - msec: 2064 - hash: "555d97eac7e8b06cb81f4af74098ce65" - } - Frame { - msec: 2080 - hash: "555d97eac7e8b06cb81f4af74098ce65" - } - Frame { - msec: 2096 - hash: "555d97eac7e8b06cb81f4af74098ce65" - } - Frame { - msec: 2112 - hash: "555d97eac7e8b06cb81f4af74098ce65" - } - Frame { - msec: 2128 - hash: "555d97eac7e8b06cb81f4af74098ce65" - } - Frame { - msec: 2144 - hash: "555d97eac7e8b06cb81f4af74098ce65" - } - Frame { - msec: 2160 - hash: "555d97eac7e8b06cb81f4af74098ce65" - } - Frame { - msec: 2176 - hash: "555d97eac7e8b06cb81f4af74098ce65" - } - Frame { - msec: 2192 - hash: "555d97eac7e8b06cb81f4af74098ce65" - } - Frame { - msec: 2208 - hash: "555d97eac7e8b06cb81f4af74098ce65" - } - Frame { - msec: 2224 - hash: "555d97eac7e8b06cb81f4af74098ce65" - } - Frame { - msec: 2240 - hash: "555d97eac7e8b06cb81f4af74098ce65" - } - Frame { - msec: 2256 - hash: "555d97eac7e8b06cb81f4af74098ce65" - } - Frame { - msec: 2272 - hash: "555d97eac7e8b06cb81f4af74098ce65" - } - Frame { - msec: 2288 - hash: "555d97eac7e8b06cb81f4af74098ce65" - } - Frame { - msec: 2304 - hash: "555d97eac7e8b06cb81f4af74098ce65" - } - Frame { - msec: 2320 - hash: "555d97eac7e8b06cb81f4af74098ce65" - } - Frame { - msec: 2336 - hash: "555d97eac7e8b06cb81f4af74098ce65" - } - Frame { - msec: 2352 - hash: "555d97eac7e8b06cb81f4af74098ce65" - } - Frame { - msec: 2368 - hash: "555d97eac7e8b06cb81f4af74098ce65" - } - Frame { - msec: 2384 - hash: "555d97eac7e8b06cb81f4af74098ce65" - } - Frame { - msec: 2400 - hash: "555d97eac7e8b06cb81f4af74098ce65" - } - Frame { - msec: 2416 - hash: "555d97eac7e8b06cb81f4af74098ce65" - } - Frame { - msec: 2432 - hash: "555d97eac7e8b06cb81f4af74098ce65" - } - Frame { - msec: 2448 - hash: "555d97eac7e8b06cb81f4af74098ce65" - } - Frame { - msec: 2464 - hash: "555d97eac7e8b06cb81f4af74098ce65" - } - Frame { - msec: 2480 - hash: "555d97eac7e8b06cb81f4af74098ce65" - } - Frame { - msec: 2496 - hash: "555d97eac7e8b06cb81f4af74098ce65" - } - Frame { - msec: 2512 - hash: "555d97eac7e8b06cb81f4af74098ce65" - } - Frame { - msec: 2528 - hash: "555d97eac7e8b06cb81f4af74098ce65" - } - Frame { - msec: 2544 - hash: "555d97eac7e8b06cb81f4af74098ce65" - } - Frame { - msec: 2560 - hash: "555d97eac7e8b06cb81f4af74098ce65" - } - Frame { - msec: 2576 - hash: "555d97eac7e8b06cb81f4af74098ce65" - } - Frame { - msec: 2592 - hash: "555d97eac7e8b06cb81f4af74098ce65" - } - Frame { - msec: 2608 - hash: "555d97eac7e8b06cb81f4af74098ce65" - } - Frame { - msec: 2624 - hash: "555d97eac7e8b06cb81f4af74098ce65" - } - Frame { - msec: 2640 - hash: "555d97eac7e8b06cb81f4af74098ce65" - } - Frame { - msec: 2656 - hash: "555d97eac7e8b06cb81f4af74098ce65" - } - Frame { - msec: 2672 - hash: "555d97eac7e8b06cb81f4af74098ce65" - } - Frame { - msec: 2688 - hash: "555d97eac7e8b06cb81f4af74098ce65" - } - Frame { - msec: 2704 - hash: "555d97eac7e8b06cb81f4af74098ce65" - } - Frame { - msec: 2720 - hash: "555d97eac7e8b06cb81f4af74098ce65" - } - Frame { - msec: 2736 - hash: "555d97eac7e8b06cb81f4af74098ce65" - } - Frame { - msec: 2752 - hash: "555d97eac7e8b06cb81f4af74098ce65" - } - Frame { - msec: 2768 - hash: "555d97eac7e8b06cb81f4af74098ce65" - } - Frame { - msec: 2784 - hash: "555d97eac7e8b06cb81f4af74098ce65" - } - Frame { - msec: 2800 - hash: "555d97eac7e8b06cb81f4af74098ce65" - } - Frame { - msec: 2816 - hash: "555d97eac7e8b06cb81f4af74098ce65" - } - Key { - type: 6 - key: 16777249 - modifiers: 0 - text: "" - autorep: false - count: 1 - } - Frame { - msec: 2832 - hash: "555d97eac7e8b06cb81f4af74098ce65" - } - Frame { - msec: 2848 - hash: "555d97eac7e8b06cb81f4af74098ce65" - } - Frame { - msec: 2864 - hash: "555d97eac7e8b06cb81f4af74098ce65" - } - Frame { - msec: 2880 - image: "flickable.2.png" - } -} diff --git a/tests/auto/declarative/visual/flickable/data/flickable.0.png b/tests/auto/declarative/visual/flickable/data/flickable.0.png Binary files differdeleted file mode 100644 index b7ddf5a..0000000 --- a/tests/auto/declarative/visual/flickable/data/flickable.0.png +++ /dev/null diff --git a/tests/auto/declarative/visual/flickable/data/flickable.1.png b/tests/auto/declarative/visual/flickable/data/flickable.1.png Binary files differdeleted file mode 100644 index ef48b85..0000000 --- a/tests/auto/declarative/visual/flickable/data/flickable.1.png +++ /dev/null diff --git a/tests/auto/declarative/visual/flickable/data/flickable.2.png b/tests/auto/declarative/visual/flickable/data/flickable.2.png Binary files differdeleted file mode 100644 index 60c357b..0000000 --- a/tests/auto/declarative/visual/flickable/data/flickable.2.png +++ /dev/null diff --git a/tests/auto/declarative/visual/flickable/data/flickable.qml b/tests/auto/declarative/visual/flickable/data/flickable.qml deleted file mode 100644 index 730c128..0000000 --- a/tests/auto/declarative/visual/flickable/data/flickable.qml +++ /dev/null @@ -1,791 +0,0 @@ -import Qt.VisualTest 4.6 - -VisualTest { - Frame { - msec: 0 - } - Frame { - msec: 16 - hash: "eceae327c367ccc69c5133d027df77c2" - } - Frame { - msec: 32 - hash: "eceae327c367ccc69c5133d027df77c2" - } - Frame { - msec: 48 - hash: "eceae327c367ccc69c5133d027df77c2" - } - Frame { - msec: 64 - hash: "eceae327c367ccc69c5133d027df77c2" - } - Frame { - msec: 80 - hash: "eceae327c367ccc69c5133d027df77c2" - } - Frame { - msec: 96 - hash: "eceae327c367ccc69c5133d027df77c2" - } - Frame { - msec: 112 - hash: "eceae327c367ccc69c5133d027df77c2" - } - Frame { - msec: 128 - hash: "eceae327c367ccc69c5133d027df77c2" - } - Frame { - msec: 144 - hash: "eceae327c367ccc69c5133d027df77c2" - } - Frame { - msec: 160 - hash: "eceae327c367ccc69c5133d027df77c2" - } - Frame { - msec: 176 - hash: "eceae327c367ccc69c5133d027df77c2" - } - Frame { - msec: 192 - hash: "eceae327c367ccc69c5133d027df77c2" - } - Frame { - msec: 208 - hash: "eceae327c367ccc69c5133d027df77c2" - } - Frame { - msec: 224 - hash: "eceae327c367ccc69c5133d027df77c2" - } - Frame { - msec: 240 - hash: "eceae327c367ccc69c5133d027df77c2" - } - Frame { - msec: 256 - hash: "eceae327c367ccc69c5133d027df77c2" - } - Frame { - msec: 272 - hash: "eceae327c367ccc69c5133d027df77c2" - } - Frame { - msec: 288 - hash: "eceae327c367ccc69c5133d027df77c2" - } - Frame { - msec: 304 - hash: "eceae327c367ccc69c5133d027df77c2" - } - Frame { - msec: 320 - hash: "eceae327c367ccc69c5133d027df77c2" - } - Frame { - msec: 336 - hash: "eceae327c367ccc69c5133d027df77c2" - } - Frame { - msec: 352 - hash: "eceae327c367ccc69c5133d027df77c2" - } - Frame { - msec: 368 - hash: "eceae327c367ccc69c5133d027df77c2" - } - Frame { - msec: 384 - hash: "eceae327c367ccc69c5133d027df77c2" - } - Frame { - msec: 400 - hash: "eceae327c367ccc69c5133d027df77c2" - } - Frame { - msec: 416 - hash: "eceae327c367ccc69c5133d027df77c2" - } - Frame { - msec: 432 - hash: "eceae327c367ccc69c5133d027df77c2" - } - Frame { - msec: 448 - hash: "eceae327c367ccc69c5133d027df77c2" - } - Frame { - msec: 464 - hash: "eceae327c367ccc69c5133d027df77c2" - } - Frame { - msec: 480 - hash: "eceae327c367ccc69c5133d027df77c2" - } - Frame { - msec: 496 - hash: "eceae327c367ccc69c5133d027df77c2" - } - Frame { - msec: 512 - hash: "eceae327c367ccc69c5133d027df77c2" - } - Frame { - msec: 528 - hash: "eceae327c367ccc69c5133d027df77c2" - } - Frame { - msec: 544 - hash: "eceae327c367ccc69c5133d027df77c2" - } - Frame { - msec: 560 - hash: "eceae327c367ccc69c5133d027df77c2" - } - Frame { - msec: 576 - hash: "eceae327c367ccc69c5133d027df77c2" - } - Frame { - msec: 592 - hash: "eceae327c367ccc69c5133d027df77c2" - } - Frame { - msec: 608 - hash: "eceae327c367ccc69c5133d027df77c2" - } - Frame { - msec: 624 - hash: "eceae327c367ccc69c5133d027df77c2" - } - Frame { - msec: 640 - hash: "eceae327c367ccc69c5133d027df77c2" - } - Frame { - msec: 656 - hash: "eceae327c367ccc69c5133d027df77c2" - } - Frame { - msec: 672 - hash: "eceae327c367ccc69c5133d027df77c2" - } - Frame { - msec: 688 - hash: "eceae327c367ccc69c5133d027df77c2" - } - Frame { - msec: 704 - hash: "eceae327c367ccc69c5133d027df77c2" - } - Frame { - msec: 720 - hash: "eceae327c367ccc69c5133d027df77c2" - } - Mouse { - type: 2 - button: 1 - buttons: 1 - x: 517; y: 154 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 736 - hash: "eceae327c367ccc69c5133d027df77c2" - } - Mouse { - type: 5 - button: 1 - buttons: 1 - x: 514; y: 154 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 752 - hash: "eceae327c367ccc69c5133d027df77c2" - } - Mouse { - type: 5 - button: 1 - buttons: 1 - x: 509; y: 155 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 768 - hash: "eceae327c367ccc69c5133d027df77c2" - } - Mouse { - type: 5 - button: 1 - buttons: 1 - x: 497; y: 155 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 784 - hash: "6a0f0d49abe4b5c2f3347bb0912c46bd" - } - Mouse { - type: 5 - button: 1 - buttons: 1 - x: 480; y: 155 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 800 - hash: "c7c13b23ac20eaee2a0fca45a03495d3" - } - Mouse { - type: 5 - button: 1 - buttons: 1 - x: 443; y: 155 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 816 - hash: "50559226ce0e0d94d330f34b0dfdaf48" - } - Mouse { - type: 3 - button: 1 - buttons: 0 - x: 443; y: 155 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 832 - hash: "50559226ce0e0d94d330f34b0dfdaf48" - } - Frame { - msec: 848 - hash: "dda302c698e909c7bf4cffdedf68fffb" - } - Frame { - msec: 864 - hash: "d2ef86c4e840e22f27b9d5806d2685c1" - } - Frame { - msec: 880 - hash: "6a38ab0c8e4e6687b1922d1ab30c5193" - } - Frame { - msec: 896 - hash: "ddec5e9353017ae5d12f3efb9a15327c" - } - Frame { - msec: 912 - hash: "e383591b6ce172ef86e2f1a90c5988db" - } - Frame { - msec: 928 - hash: "3cd848d258775f50cbb668490b7cebf6" - } - Frame { - msec: 944 - hash: "348f9bb0282edbe99947e72f234c0c72" - } - Frame { - msec: 960 - image: "flickable.0.png" - } - Frame { - msec: 976 - hash: "f7744a4f78b6791ce5f5184834f1798e" - } - Frame { - msec: 992 - hash: "c4014a38bf59218e0673519c5bab0f74" - } - Frame { - msec: 1008 - hash: "2a6b3d050b0f854b8f71d77b58dd9d8f" - } - Frame { - msec: 1024 - hash: "30f25f6dcbad9e495d869943a8d83eee" - } - Frame { - msec: 1040 - hash: "b5d6d395c94a19e9776ff1162c64993f" - } - Frame { - msec: 1056 - hash: "2ce75b60f41f4b6b0c421788effd4be8" - } - Frame { - msec: 1072 - hash: "cda31ad2f65d7d6cc1c9974748243904" - } - Frame { - msec: 1088 - hash: "ffa1e5a479e60304570d89465e8898b1" - } - Frame { - msec: 1104 - hash: "d8c984c1e00056cdfd1814f96fc04125" - } - Frame { - msec: 1120 - hash: "0e855b0616b1c837c22ea34bbff76f10" - } - Frame { - msec: 1136 - hash: "d2189d6dc8f635f9df5889e6825d11fc" - } - Frame { - msec: 1152 - hash: "4086f2213831f0c616e7e02f58b17c46" - } - Frame { - msec: 1168 - hash: "40b216eb2b7a0025123fa2374215644a" - } - Frame { - msec: 1184 - hash: "236edf2f7da209cb5bf3efe334977e7f" - } - Frame { - msec: 1200 - hash: "c2a9242b261988b58e58dc764aac7fca" - } - Frame { - msec: 1216 - hash: "a6b707c16d0b72552403a518a27e40c8" - } - Frame { - msec: 1232 - hash: "e0800659c30618417c56e5a8b6de0eeb" - } - Frame { - msec: 1248 - hash: "3006d6af221e50eef60f67cc32d45e30" - } - Frame { - msec: 1264 - hash: "7deab264af55709f25d22a10a83f2595" - } - Frame { - msec: 1280 - hash: "11e2c733f48c02e8b1c66c0e9cc7f4b0" - } - Frame { - msec: 1296 - hash: "a1242c3ea085838371fa1f31e11b4cc4" - } - Frame { - msec: 1312 - hash: "3cba18358c3db55a585095733a914b31" - } - Frame { - msec: 1328 - hash: "45dde70b0436f365f1711005321fbc1a" - } - Frame { - msec: 1344 - hash: "29a9c57bb78c41e89d5db19b54a4f760" - } - Frame { - msec: 1360 - hash: "3ec8e579f2ee49da0bf384f4b688e70e" - } - Frame { - msec: 1376 - hash: "e6b7d3147b213ed2cddc81ee784b275b" - } - Frame { - msec: 1392 - hash: "77a82e5d657b32b6f7f1681139c83b83" - } - Frame { - msec: 1408 - hash: "623bcf513f95f6ca3052dc6f1fb13fb5" - } - Frame { - msec: 1424 - hash: "d10b5fac984040899790273cd9246f71" - } - Frame { - msec: 1440 - hash: "7b48417ae3627fed645b804ea24b376a" - } - Frame { - msec: 1456 - hash: "5e5eb1fdc7fdf34f3df46b187544b9d5" - } - Frame { - msec: 1472 - hash: "e4f08871f3dcb355c267fc27654c5704" - } - Frame { - msec: 1488 - hash: "e8d82fee9fb5b2bb2fd6149a12947ea6" - } - Frame { - msec: 1504 - hash: "a54e845480bed6b16c120a59a2bb07c3" - } - Frame { - msec: 1520 - hash: "a96ae1a5ca2d04d7b330c4e1d5e2594a" - } - Frame { - msec: 1536 - hash: "d1a4c4b1864581bad005392dd3c54d8a" - } - Frame { - msec: 1552 - hash: "5bd3ae538de83151f90a40c800c081a5" - } - Frame { - msec: 1568 - hash: "be5adfb11a6ad52d432fb96c0526d2ee" - } - Frame { - msec: 1584 - hash: "2ea08dda212fa9839e0183d2b742c64f" - } - Frame { - msec: 1600 - hash: "ba0d9014b7e30a49c51196807809368b" - } - Frame { - msec: 1616 - hash: "e6cfdc4688cc7e49842a58bc39a6a1b3" - } - Frame { - msec: 1632 - hash: "3aca4ba1d6bd38cdc278ff5d19e37693" - } - Frame { - msec: 1648 - hash: "41acb4e8cddfa8371446bef580d420b4" - } - Frame { - msec: 1664 - hash: "4860e0bf80bfd01b9e7e1d3b11152ac4" - } - Frame { - msec: 1680 - hash: "85806f7e41725a35cb20b3ca07a2b3be" - } - Frame { - msec: 1696 - hash: "07a0af6f784b91838d1ed23c326c29ce" - } - Frame { - msec: 1712 - hash: "d4d0c0e65861dbce8992d714f5b18f0b" - } - Frame { - msec: 1728 - hash: "ebcc280d376fed1bb45588992ad777e3" - } - Frame { - msec: 1744 - hash: "2d8c183189c0a9234d6ff1e663503853" - } - Frame { - msec: 1760 - hash: "5e3bec7de667175a7bd89aa5eb704003" - } - Frame { - msec: 1776 - hash: "709b890b1939261377537f7bddb45a60" - } - Frame { - msec: 1792 - hash: "c95dfd0259048e27a98b4676957e5183" - } - Frame { - msec: 1808 - hash: "bfff5f9e90e280a3684f46967e8cb73f" - } - Frame { - msec: 1824 - hash: "bfff5f9e90e280a3684f46967e8cb73f" - } - Frame { - msec: 1840 - hash: "bfff5f9e90e280a3684f46967e8cb73f" - } - Frame { - msec: 1856 - hash: "709b890b1939261377537f7bddb45a60" - } - Frame { - msec: 1872 - hash: "a7ca5f1053393486cf48d5a83d89d1a7" - } - Frame { - msec: 1888 - hash: "d9c34a6fe59ed8f9ff7b792301f80f52" - } - Frame { - msec: 1904 - hash: "d4d0c0e65861dbce8992d714f5b18f0b" - } - Frame { - msec: 1920 - image: "flickable.1.png" - } - Frame { - msec: 1936 - hash: "cc7228edac6583cab5b186cd9bbb2233" - } - Frame { - msec: 1952 - hash: "6a6af6de32f68f85c902140bc40071d3" - } - Frame { - msec: 1968 - hash: "43b6b548eb145f79fa655c270abaac32" - } - Frame { - msec: 1984 - hash: "3aca4ba1d6bd38cdc278ff5d19e37693" - } - Frame { - msec: 2000 - hash: "184e42b2bcc0e5cf354dc92acdc23cef" - } - Frame { - msec: 2016 - hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6" - } - Frame { - msec: 2032 - hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6" - } - Frame { - msec: 2048 - hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6" - } - Frame { - msec: 2064 - hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6" - } - Frame { - msec: 2080 - hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6" - } - Frame { - msec: 2096 - hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6" - } - Frame { - msec: 2112 - hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6" - } - Frame { - msec: 2128 - hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6" - } - Frame { - msec: 2144 - hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6" - } - Frame { - msec: 2160 - hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6" - } - Frame { - msec: 2176 - hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6" - } - Frame { - msec: 2192 - hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6" - } - Frame { - msec: 2208 - hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6" - } - Frame { - msec: 2224 - hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6" - } - Frame { - msec: 2240 - hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6" - } - Frame { - msec: 2256 - hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6" - } - Frame { - msec: 2272 - hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6" - } - Frame { - msec: 2288 - hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6" - } - Frame { - msec: 2304 - hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6" - } - Frame { - msec: 2320 - hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6" - } - Frame { - msec: 2336 - hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6" - } - Frame { - msec: 2352 - hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6" - } - Frame { - msec: 2368 - hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6" - } - Frame { - msec: 2384 - hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6" - } - Frame { - msec: 2400 - hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6" - } - Frame { - msec: 2416 - hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6" - } - Frame { - msec: 2432 - hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6" - } - Frame { - msec: 2448 - hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6" - } - Frame { - msec: 2464 - hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6" - } - Frame { - msec: 2480 - hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6" - } - Frame { - msec: 2496 - hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6" - } - Frame { - msec: 2512 - hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6" - } - Frame { - msec: 2528 - hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6" - } - Frame { - msec: 2544 - hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6" - } - Frame { - msec: 2560 - hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6" - } - Frame { - msec: 2576 - hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6" - } - Frame { - msec: 2592 - hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6" - } - Frame { - msec: 2608 - hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6" - } - Frame { - msec: 2624 - hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6" - } - Frame { - msec: 2640 - hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6" - } - Frame { - msec: 2656 - hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6" - } - Frame { - msec: 2672 - hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6" - } - Frame { - msec: 2688 - hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6" - } - Frame { - msec: 2704 - hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6" - } - Frame { - msec: 2720 - hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6" - } - Frame { - msec: 2736 - hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6" - } - Frame { - msec: 2752 - hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6" - } - Frame { - msec: 2768 - hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6" - } - Frame { - msec: 2784 - hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6" - } - Frame { - msec: 2800 - hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6" - } - Frame { - msec: 2816 - hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6" - } - Key { - type: 6 - key: 16777249 - modifiers: 67108864 - text: "" - autorep: false - count: 1 - } - Frame { - msec: 2832 - hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6" - } - Frame { - msec: 2848 - hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6" - } - Frame { - msec: 2864 - hash: "ca3d2b3643a5c682253a5f6d9a4d7bc6" - } - Frame { - msec: 2880 - image: "flickable.2.png" - } -} diff --git a/tests/auto/declarative/visual/flickable/flickable.qml b/tests/auto/declarative/visual/flickable/flickable.qml deleted file mode 100644 index 42bd5b3..0000000 --- a/tests/auto/declarative/visual/flickable/flickable.qml +++ /dev/null @@ -1,55 +0,0 @@ -import Qt 4.6 - -Rectangle { - color: "lightSteelBlue" - width: 600 - height: 300 - ListModel { - id: List - ListElement { - name: "Sunday" - dayColor: "#808080" - } - ListElement { - name: "Monday" - dayColor: "blue" - } - ListElement { - name: "Tuesday" - dayColor: "yellow" - } - ListElement { - name: "Wednesday" - dayColor: "purple" - } - ListElement { - name: "Thursday" - dayColor: "blue" - } - ListElement { - name: "Friday" - dayColor: "green" - } - ListElement { - name: "Saturday" - dayColor: "orange" - } - } - Flickable { - id: Flick - anchors.fill: parent - viewportWidth: Lay.width - Row { - id: Lay - Repeater { - model: List - Component { - Day { - day: name - color: dayColor - } - } - } - } - } -} diff --git a/tests/auto/declarative/visual/parentAction/data/parentAction.0.png b/tests/auto/declarative/visual/parentAction/data/parentAction.0.png Binary files differnew file mode 100644 index 0000000..a0032f8 --- /dev/null +++ b/tests/auto/declarative/visual/parentAction/data/parentAction.0.png diff --git a/tests/auto/declarative/visual/parentAction/data/parentAction.1.png b/tests/auto/declarative/visual/parentAction/data/parentAction.1.png Binary files differnew file mode 100644 index 0000000..958b6af --- /dev/null +++ b/tests/auto/declarative/visual/parentAction/data/parentAction.1.png diff --git a/tests/auto/declarative/visual/parentAction/data/parentAction.2.png b/tests/auto/declarative/visual/parentAction/data/parentAction.2.png Binary files differnew file mode 100644 index 0000000..3a1811f --- /dev/null +++ b/tests/auto/declarative/visual/parentAction/data/parentAction.2.png diff --git a/tests/auto/declarative/visual/parentAction/data/parentAction.3.png b/tests/auto/declarative/visual/parentAction/data/parentAction.3.png Binary files differnew file mode 100644 index 0000000..36064c2 --- /dev/null +++ b/tests/auto/declarative/visual/parentAction/data/parentAction.3.png diff --git a/tests/auto/declarative/visual/parentAction/data/parentAction.4.png b/tests/auto/declarative/visual/parentAction/data/parentAction.4.png Binary files differnew file mode 100644 index 0000000..c493a1d --- /dev/null +++ b/tests/auto/declarative/visual/parentAction/data/parentAction.4.png diff --git a/tests/auto/declarative/visual/parentAction/data/parentAction.5.png b/tests/auto/declarative/visual/parentAction/data/parentAction.5.png Binary files differnew file mode 100644 index 0000000..c493a1d --- /dev/null +++ b/tests/auto/declarative/visual/parentAction/data/parentAction.5.png diff --git a/tests/auto/declarative/visual/parentAction/data/parentAction.qml b/tests/auto/declarative/visual/parentAction/data/parentAction.qml new file mode 100644 index 0000000..de27af7 --- /dev/null +++ b/tests/auto/declarative/visual/parentAction/data/parentAction.qml @@ -0,0 +1,1207 @@ +import Qt.VisualTest 4.6 + +VisualTest { + Frame { + msec: 0 + } + Frame { + msec: 16 + hash: "23ce049cd7e715c28f5845fd1a1fc195" + } + Frame { + msec: 32 + hash: "23ce049cd7e715c28f5845fd1a1fc195" + } + Frame { + msec: 48 + hash: "23ce049cd7e715c28f5845fd1a1fc195" + } + Frame { + msec: 64 + hash: "23ce049cd7e715c28f5845fd1a1fc195" + } + Frame { + msec: 80 + hash: "23ce049cd7e715c28f5845fd1a1fc195" + } + Frame { + msec: 96 + hash: "23ce049cd7e715c28f5845fd1a1fc195" + } + Frame { + msec: 112 + hash: "23ce049cd7e715c28f5845fd1a1fc195" + } + Frame { + msec: 128 + hash: "23ce049cd7e715c28f5845fd1a1fc195" + } + Frame { + msec: 144 + hash: "23ce049cd7e715c28f5845fd1a1fc195" + } + Frame { + msec: 160 + hash: "23ce049cd7e715c28f5845fd1a1fc195" + } + Frame { + msec: 176 + hash: "23ce049cd7e715c28f5845fd1a1fc195" + } + Frame { + msec: 192 + hash: "23ce049cd7e715c28f5845fd1a1fc195" + } + Frame { + msec: 208 + hash: "23ce049cd7e715c28f5845fd1a1fc195" + } + Frame { + msec: 224 + hash: "23ce049cd7e715c28f5845fd1a1fc195" + } + Frame { + msec: 240 + hash: "23ce049cd7e715c28f5845fd1a1fc195" + } + Frame { + msec: 256 + hash: "23ce049cd7e715c28f5845fd1a1fc195" + } + Frame { + msec: 272 + hash: "23ce049cd7e715c28f5845fd1a1fc195" + } + Frame { + msec: 288 + hash: "23ce049cd7e715c28f5845fd1a1fc195" + } + Frame { + msec: 304 + hash: "23ce049cd7e715c28f5845fd1a1fc195" + } + Frame { + msec: 320 + hash: "23ce049cd7e715c28f5845fd1a1fc195" + } + Frame { + msec: 336 + hash: "23ce049cd7e715c28f5845fd1a1fc195" + } + Frame { + msec: 352 + hash: "23ce049cd7e715c28f5845fd1a1fc195" + } + Frame { + msec: 368 + hash: "23ce049cd7e715c28f5845fd1a1fc195" + } + Frame { + msec: 384 + hash: "23ce049cd7e715c28f5845fd1a1fc195" + } + Frame { + msec: 400 + hash: "23ce049cd7e715c28f5845fd1a1fc195" + } + Frame { + msec: 416 + hash: "23ce049cd7e715c28f5845fd1a1fc195" + } + Frame { + msec: 432 + hash: "23ce049cd7e715c28f5845fd1a1fc195" + } + Frame { + msec: 448 + hash: "23ce049cd7e715c28f5845fd1a1fc195" + } + Frame { + msec: 464 + hash: "23ce049cd7e715c28f5845fd1a1fc195" + } + Frame { + msec: 480 + hash: "23ce049cd7e715c28f5845fd1a1fc195" + } + Frame { + msec: 496 + hash: "23ce049cd7e715c28f5845fd1a1fc195" + } + Frame { + msec: 512 + hash: "23ce049cd7e715c28f5845fd1a1fc195" + } + Frame { + msec: 528 + hash: "23ce049cd7e715c28f5845fd1a1fc195" + } + Frame { + msec: 544 + hash: "23ce049cd7e715c28f5845fd1a1fc195" + } + Frame { + msec: 560 + hash: "23ce049cd7e715c28f5845fd1a1fc195" + } + Frame { + msec: 576 + hash: "23ce049cd7e715c28f5845fd1a1fc195" + } + Mouse { + type: 2 + button: 1 + buttons: 1 + x: 150; y: 274 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 592 + hash: "23ce049cd7e715c28f5845fd1a1fc195" + } + Frame { + msec: 608 + hash: "a7bb3d44c8bcf403906afa86f5bc3062" + } + Frame { + msec: 624 + hash: "2b366e6009e70fa0227a1fee662fe1bf" + } + Frame { + msec: 640 + hash: "c12869fb8002aa36c3bfad7fd0979240" + } + Frame { + msec: 656 + hash: "56c583e77b5e0a8707e977dc937c2acf" + } + Frame { + msec: 672 + hash: "6b191d57a45a3f2d010a7f44064e409a" + } + Frame { + msec: 688 + hash: "9457ee33c999a63fa4bd4db5c3ceac8b" + } + Frame { + msec: 704 + hash: "446b23b662640ad6ad8c456f956fe73a" + } + Frame { + msec: 720 + hash: "23c59708069406486e4979c7d59f3f4a" + } + Frame { + msec: 736 + hash: "c9ce43ddca79b5b6f26af2c2259dc071" + } + Frame { + msec: 752 + hash: "e838229ba70c30112918f19bb471fa34" + } + Frame { + msec: 768 + hash: "0cbaeddb2ff6408a37a68fc685e2bca0" + } + Frame { + msec: 784 + hash: "616b4ec719586b151ba3d709e51038bf" + } + Frame { + msec: 800 + hash: "89b2c709f5c3083c204a9450e605c1d4" + } + Frame { + msec: 816 + hash: "427a5c2d13631d899ff2d673e762f114" + } + Frame { + msec: 832 + hash: "958aa9ca5a6b91aa6dfbc2a1ae3e2deb" + } + Frame { + msec: 848 + hash: "09a3ac0010ed8f3df2cfa7ed9d0a92e4" + } + Frame { + msec: 864 + hash: "5607ea54f9990f3232d6f56080e1ef15" + } + Frame { + msec: 880 + hash: "600682467c55288b9d5e65299637dd72" + } + Frame { + msec: 896 + hash: "bc7a238611574a13650f854ceac35032" + } + Frame { + msec: 912 + hash: "e5f6b19b3685a96d4d0c3b8384513643" + } + Frame { + msec: 928 + hash: "d5d23b0fc09136fd1ae121e311866cc3" + } + Frame { + msec: 944 + hash: "5099e5edd1a6bd37f5f6c836a6ca7644" + } + Frame { + msec: 960 + image: "parentAction.0.png" + } + Frame { + msec: 976 + hash: "97dd20f7774cfd8379e1d1b44f8ddc7b" + } + Frame { + msec: 992 + hash: "ab2deea9e4f8c43ed58b5a355800ecda" + } + Frame { + msec: 1008 + hash: "88ec383ce368259d3cc18612b6f5b941" + } + Frame { + msec: 1024 + hash: "f84b20b849a77e50717f99b9d844240e" + } + Frame { + msec: 1040 + hash: "6c042360c2d24ad56cec32d01ce82d6b" + } + Frame { + msec: 1056 + hash: "c86b464720192f3e039fa5d8ab5f09bb" + } + Frame { + msec: 1072 + hash: "35ec432fdf91fcd1dfcd945cfe785b09" + } + Frame { + msec: 1088 + hash: "27a2ec28e4fef006622e8211fd709853" + } + Frame { + msec: 1104 + hash: "8454d1f5ed89551e2a403c869885116a" + } + Frame { + msec: 1120 + hash: "7e33aed53dc4338c168274d972c8e711" + } + Frame { + msec: 1136 + hash: "e0192ea2049d6bae6012f00406630a92" + } + Frame { + msec: 1152 + hash: "a2ea5489a373084169024035a0f69e71" + } + Frame { + msec: 1168 + hash: "6947a72c4d959b90dafdaddcac815b3e" + } + Frame { + msec: 1184 + hash: "0e22cc3c96d0934095b7254f0f28b18b" + } + Frame { + msec: 1200 + hash: "72529ddc6f2678a783aedf445d7038a4" + } + Frame { + msec: 1216 + hash: "38f03c0ee50488ffd23a2fb3d3445461" + } + Frame { + msec: 1232 + hash: "b441721ed30c787874a2a71a94e1ba44" + } + Frame { + msec: 1248 + hash: "1e37f26d78590414b2ef01c72ad136a9" + } + Frame { + msec: 1264 + hash: "88e4af80d068485ebd8c3d51f9bbfe8d" + } + Frame { + msec: 1280 + hash: "107707216c16c629d8409cf006f9f2dc" + } + Frame { + msec: 1296 + hash: "f56f3f4f140ac072f7df47eddfc76844" + } + Frame { + msec: 1312 + hash: "41239a9d8ed793c24967875aabeae8a5" + } + Frame { + msec: 1328 + hash: "30035e37320dae4f9ead01a30895eb38" + } + Frame { + msec: 1344 + hash: "fb2f535b42b862b65f8adb3ad1a46779" + } + Frame { + msec: 1360 + hash: "e10ba7f74d52fc963e20a4647ff0d620" + } + Frame { + msec: 1376 + hash: "5abf5388566bed2fdb71afc8cd7cfe9b" + } + Frame { + msec: 1392 + hash: "91990471563e3c8292e8e8325a1d17a2" + } + Frame { + msec: 1408 + hash: "59a6293a48f83a9197adcffed3f32f15" + } + Frame { + msec: 1424 + hash: "db3e75df318e9f0d239ce9b76e92eff3" + } + Frame { + msec: 1440 + hash: "3b5c64bc64a701edb5c2e40b23443bc3" + } + Frame { + msec: 1456 + hash: "9db08c0375148b2317427591b5f43608" + } + Frame { + msec: 1472 + hash: "2d761f1530846eff87a7625a120e0afd" + } + Frame { + msec: 1488 + hash: "c5460f8c58b83c2ac15842ddb023ad4f" + } + Frame { + msec: 1504 + hash: "0efb51810a2dc359c7964268c98ea8eb" + } + Frame { + msec: 1520 + hash: "b92a42012df57eb261badf1f518b8e67" + } + Frame { + msec: 1536 + hash: "8d348bae62af2d35bdfee806a1c39910" + } + Frame { + msec: 1552 + hash: "762d9bb4ed11d249bfd902a541129d60" + } + Frame { + msec: 1568 + hash: "bddbd9f64a9f7156984feccd5fa94093" + } + Frame { + msec: 1584 + hash: "353a98e1573b0518941ff22bf2776244" + } + Frame { + msec: 1600 + hash: "1765aed97e29f25dee93a77a06557b82" + } + Frame { + msec: 1616 + hash: "73b5c2bdb7f268f7a33e129c8ba44013" + } + Frame { + msec: 1632 + hash: "46ac1976fb9932d0ef6e0b5927386ad9" + } + Frame { + msec: 1648 + hash: "90b5b5b46c9c352e8be41cc74f96133a" + } + Frame { + msec: 1664 + hash: "0efe0036577c890fd45cd7dd53014616" + } + Frame { + msec: 1680 + hash: "7f32df17481abf40ccb33afe6d17085d" + } + Frame { + msec: 1696 + hash: "1fa8544c48a476764f4f8278c14b651d" + } + Frame { + msec: 1712 + hash: "f8f06ece30f690deeba5999ce63bf40b" + } + Frame { + msec: 1728 + hash: "885b230f4b2fe380c7cf68955940d206" + } + Frame { + msec: 1744 + hash: "d0fc5aa4df46099bb46a1d7db30baa09" + } + Frame { + msec: 1760 + hash: "8fa7fe5197cbe1ff67f8a2c47f1f0740" + } + Frame { + msec: 1776 + hash: "aa3b3b03460daf54f085551e1a46c08b" + } + Frame { + msec: 1792 + hash: "35a1728a2430027a9474fb7d61090643" + } + Frame { + msec: 1808 + hash: "2b1cff3986b8b03f1061176a4722b0f9" + } + Frame { + msec: 1824 + hash: "8047be1b35ee3d5078a68c6cdc35eeb7" + } + Frame { + msec: 1840 + hash: "7f7afa48bb7d612b354c8488e72c8339" + } + Frame { + msec: 1856 + hash: "691a876caefce9aa0f5140c17059b8f4" + } + Frame { + msec: 1872 + hash: "903bec66e47db766dc431f060726988c" + } + Frame { + msec: 1888 + hash: "f13593fc891f0b050c01b61963019da1" + } + Frame { + msec: 1904 + hash: "aa00de965bdb370a5974b195c3fb38af" + } + Frame { + msec: 1920 + image: "parentAction.1.png" + } + Frame { + msec: 1936 + hash: "168d3e27261c0943e6262b6be27adfb0" + } + Frame { + msec: 1952 + hash: "6fafebd0b396e7c0a78c767c6af936ba" + } + Frame { + msec: 1968 + hash: "827e3a3fcd6fd8588e9fcc043769b3a8" + } + Frame { + msec: 1984 + hash: "155329bf1c1a6f6c37bf7e6e8a92c59b" + } + Frame { + msec: 2000 + hash: "d3008d1e7cee5170171699ef6fb9aa81" + } + Frame { + msec: 2016 + hash: "5c1244e7806e131a6063f22a66e4eb12" + } + Frame { + msec: 2032 + hash: "fcd6b372229a6cf14face81e9d614456" + } + Frame { + msec: 2048 + hash: "bf1a375a81bf43c5671cccc62e9a0462" + } + Frame { + msec: 2064 + hash: "0e22404508470baaa6621f37361951fa" + } + Frame { + msec: 2080 + hash: "45046f28c103caa161e41861f71731c4" + } + Frame { + msec: 2096 + hash: "7a92731c713470a2b2c91fd6b83447de" + } + Frame { + msec: 2112 + hash: "7a92731c713470a2b2c91fd6b83447de" + } + Frame { + msec: 2128 + hash: "7a92731c713470a2b2c91fd6b83447de" + } + Frame { + msec: 2144 + hash: "7a92731c713470a2b2c91fd6b83447de" + } + Frame { + msec: 2160 + hash: "7a92731c713470a2b2c91fd6b83447de" + } + Frame { + msec: 2176 + hash: "7a92731c713470a2b2c91fd6b83447de" + } + Frame { + msec: 2192 + hash: "7a92731c713470a2b2c91fd6b83447de" + } + Frame { + msec: 2208 + hash: "7a92731c713470a2b2c91fd6b83447de" + } + Frame { + msec: 2224 + hash: "7a92731c713470a2b2c91fd6b83447de" + } + Frame { + msec: 2240 + hash: "7a92731c713470a2b2c91fd6b83447de" + } + Frame { + msec: 2256 + hash: "7a92731c713470a2b2c91fd6b83447de" + } + Frame { + msec: 2272 + hash: "7a92731c713470a2b2c91fd6b83447de" + } + Frame { + msec: 2288 + hash: "7a92731c713470a2b2c91fd6b83447de" + } + Frame { + msec: 2304 + hash: "7a92731c713470a2b2c91fd6b83447de" + } + Frame { + msec: 2320 + hash: "7a92731c713470a2b2c91fd6b83447de" + } + Frame { + msec: 2336 + hash: "7a92731c713470a2b2c91fd6b83447de" + } + Frame { + msec: 2352 + hash: "7a92731c713470a2b2c91fd6b83447de" + } + Frame { + msec: 2368 + hash: "7a92731c713470a2b2c91fd6b83447de" + } + Frame { + msec: 2384 + hash: "7a92731c713470a2b2c91fd6b83447de" + } + Frame { + msec: 2400 + hash: "7a92731c713470a2b2c91fd6b83447de" + } + Frame { + msec: 2416 + hash: "7a92731c713470a2b2c91fd6b83447de" + } + Frame { + msec: 2432 + hash: "7a92731c713470a2b2c91fd6b83447de" + } + Frame { + msec: 2448 + hash: "7a92731c713470a2b2c91fd6b83447de" + } + Frame { + msec: 2464 + hash: "7a92731c713470a2b2c91fd6b83447de" + } + Frame { + msec: 2480 + hash: "7a92731c713470a2b2c91fd6b83447de" + } + Frame { + msec: 2496 + hash: "7a92731c713470a2b2c91fd6b83447de" + } + Frame { + msec: 2512 + hash: "7a92731c713470a2b2c91fd6b83447de" + } + Frame { + msec: 2528 + hash: "7a92731c713470a2b2c91fd6b83447de" + } + Frame { + msec: 2544 + hash: "7a92731c713470a2b2c91fd6b83447de" + } + Frame { + msec: 2560 + hash: "7a92731c713470a2b2c91fd6b83447de" + } + Frame { + msec: 2576 + hash: "7a92731c713470a2b2c91fd6b83447de" + } + Frame { + msec: 2592 + hash: "7a92731c713470a2b2c91fd6b83447de" + } + Frame { + msec: 2608 + hash: "7a92731c713470a2b2c91fd6b83447de" + } + Frame { + msec: 2624 + hash: "7a92731c713470a2b2c91fd6b83447de" + } + Frame { + msec: 2640 + hash: "7a92731c713470a2b2c91fd6b83447de" + } + Frame { + msec: 2656 + hash: "7a92731c713470a2b2c91fd6b83447de" + } + Frame { + msec: 2672 + hash: "7a92731c713470a2b2c91fd6b83447de" + } + Frame { + msec: 2688 + hash: "7a92731c713470a2b2c91fd6b83447de" + } + Frame { + msec: 2704 + hash: "7a92731c713470a2b2c91fd6b83447de" + } + Frame { + msec: 2720 + hash: "7a92731c713470a2b2c91fd6b83447de" + } + Frame { + msec: 2736 + hash: "7a92731c713470a2b2c91fd6b83447de" + } + Frame { + msec: 2752 + hash: "7a92731c713470a2b2c91fd6b83447de" + } + Mouse { + type: 3 + button: 1 + buttons: 0 + x: 150; y: 274 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2768 + hash: "7a92731c713470a2b2c91fd6b83447de" + } + Frame { + msec: 2784 + hash: "44a0b46c21bd4c76d44883ba146e3614" + } + Frame { + msec: 2800 + hash: "2224abc3333a2bc5fa1cf3c4e8d6a6f9" + } + Frame { + msec: 2816 + hash: "ea9c05c0295a300e21aacbdfd5b4968e" + } + Frame { + msec: 2832 + hash: "e630e2893f89a6ae536bcbd1a084af07" + } + Frame { + msec: 2848 + hash: "af56f1e79eb3746efb9e4bcbc3fbced8" + } + Frame { + msec: 2864 + hash: "96be8c3ba0d7a85c6f6df877b869b563" + } + Frame { + msec: 2880 + image: "parentAction.2.png" + } + Frame { + msec: 2896 + hash: "603d8684cb6f097e3ab2a2e5ef053112" + } + Frame { + msec: 2912 + hash: "0433d242d1dd40a3792f55f807ebbff4" + } + Frame { + msec: 2928 + hash: "1190067cacc7361f6cfe09f153c7a07e" + } + Frame { + msec: 2944 + hash: "98e917880471511122847ad8a406e3a3" + } + Frame { + msec: 2960 + hash: "fff06869074a3a6c5823ed3fb6fa7a43" + } + Frame { + msec: 2976 + hash: "602d95daee8f160a0fd784931d0a06bd" + } + Frame { + msec: 2992 + hash: "f7e466bbd52f40e88ff567758f4db835" + } + Frame { + msec: 3008 + hash: "54417a4c4fb71d458439ad2e2126f8e1" + } + Frame { + msec: 3024 + hash: "fe150dd5056b9dbf1cd0b196e9a7a47b" + } + Frame { + msec: 3040 + hash: "1384c871bead85916f7bfcdebc370697" + } + Frame { + msec: 3056 + hash: "5f13339cc0e604b75a9d1d85342fa717" + } + Frame { + msec: 3072 + hash: "655069d61b7a44e729a2cbb33d683c3e" + } + Frame { + msec: 3088 + hash: "2324e9e4a02e41855b066983dbf0e61d" + } + Frame { + msec: 3104 + hash: "0217baf091325b95c033ba073bd68ce5" + } + Frame { + msec: 3120 + hash: "c27854c3af5b58db85846a1762ab18ba" + } + Frame { + msec: 3136 + hash: "45246ee6383ceb6260f84571a885ba90" + } + Frame { + msec: 3152 + hash: "d82ded86f093d1a376994cacf43d0343" + } + Frame { + msec: 3168 + hash: "c9179d30f80c6101bca2bed40d6a859f" + } + Frame { + msec: 3184 + hash: "a63e032d20a9d985c6c345434d98a364" + } + Frame { + msec: 3200 + hash: "fc7d6797ce15edf7fadb9dae691ecd5c" + } + Frame { + msec: 3216 + hash: "76cf37ad8c50fed8b1900784b647819c" + } + Frame { + msec: 3232 + hash: "256aab3690c9ba928bb4d4dd3bbfc756" + } + Frame { + msec: 3248 + hash: "90cab52fdefbae4e7d0f0f93b46ebeb0" + } + Frame { + msec: 3264 + hash: "badb5103bf826dc467f6e620cc2b47be" + } + Frame { + msec: 3280 + hash: "e7d0e437de5ebc0fa07b2a4ef11159cb" + } + Frame { + msec: 3296 + hash: "5931b1c3932ab91446324165d7e2603a" + } + Frame { + msec: 3312 + hash: "ce1808db90ba955ab3cb845500f4c013" + } + Frame { + msec: 3328 + hash: "142f8a440d1fe2d868f47ba3006de9d7" + } + Frame { + msec: 3344 + hash: "10d32a6cc90319ea66d7f2c1241590ce" + } + Frame { + msec: 3360 + hash: "7f633559d715396e6de451b3dd2fadbd" + } + Frame { + msec: 3376 + hash: "d44590ae51ceef5e082747c44bc41be9" + } + Frame { + msec: 3392 + hash: "2b498181668fb1fbf65294d575654929" + } + Frame { + msec: 3408 + hash: "7efeeffd08e4de440da83511313de729" + } + Frame { + msec: 3424 + hash: "8de2331393d1e712192d11ed096836d3" + } + Frame { + msec: 3440 + hash: "fa9381ef2e295865a9b8cb9b36a0eacf" + } + Frame { + msec: 3456 + hash: "97debc4432c5ecb7f606a81e5411b02c" + } + Frame { + msec: 3472 + hash: "eb4c1bb1f4398e3c18182c28a015be76" + } + Frame { + msec: 3488 + hash: "a976aa509f4c6f309d9a6011eeae02aa" + } + Frame { + msec: 3504 + hash: "457de7ee05e0ef0ef120a3d4e371c02e" + } + Frame { + msec: 3520 + hash: "0c01f9f150fe33155fa20703735a6d27" + } + Frame { + msec: 3536 + hash: "5af4f80624082a264010247ea8630a1a" + } + Frame { + msec: 3552 + hash: "b23a1191d149549fa29a61b6dc70f037" + } + Frame { + msec: 3568 + hash: "e00fb32cb13b1347e4b7b9fdbcca68e5" + } + Frame { + msec: 3584 + hash: "fef0503c82f253f8bc3fb3e705a98aa7" + } + Frame { + msec: 3600 + hash: "7a9beca28340d2aa89da5e05f5ac2a55" + } + Frame { + msec: 3616 + hash: "f3c57ea07ab486ffa1f46da60de0b8f1" + } + Frame { + msec: 3632 + hash: "ef0a4ad9ac339fd6ea50dbe6baa9387f" + } + Frame { + msec: 3648 + hash: "1b317a9eb4ce022f005d551546c688a4" + } + Frame { + msec: 3664 + hash: "628e912a4a26800b9b7b5e60e60e3a7d" + } + Frame { + msec: 3680 + hash: "3587b75e4d834a88729754d2c2a4b193" + } + Frame { + msec: 3696 + hash: "084bc1360a38123589baec5aae15b4ff" + } + Frame { + msec: 3712 + hash: "47f0f6c3cdf456826a6fd6846e58dcc8" + } + Frame { + msec: 3728 + hash: "ed982c4c3ebd132baaaf43efad40a3f7" + } + Frame { + msec: 3744 + hash: "d7ddce47c23fada4c69d53d934582d71" + } + Frame { + msec: 3760 + hash: "74f2f911bee26c4c551f4c70596753ae" + } + Frame { + msec: 3776 + hash: "3ed7cbf10dfce3a485d7878766cf9da6" + } + Frame { + msec: 3792 + hash: "87a74257551ab6c7fcfe05e815482ae9" + } + Frame { + msec: 3808 + hash: "4f63e4904e97d4ce832b20b7317a9958" + } + Frame { + msec: 3824 + hash: "f912da8781e547c6e28890655c1b8884" + } + Frame { + msec: 3840 + image: "parentAction.3.png" + } + Frame { + msec: 3856 + hash: "faa640ccf993324400254ffb862ac279" + } + Frame { + msec: 3872 + hash: "b67f342424d1b9a364b09da8994fcd6b" + } + Frame { + msec: 3888 + hash: "b2407732194c1e0c2a9bfb379b94b562" + } + Frame { + msec: 3904 + hash: "55733608d0302ef90c124322ac6d8dc6" + } + Frame { + msec: 3920 + hash: "734f5b628a26d3d7c91ee84fb26d5b5f" + } + Frame { + msec: 3936 + hash: "27839fefa4a218cd77843358392bb874" + } + Frame { + msec: 3952 + hash: "8cac19559d37bd2b581cef0a4c707753" + } + Frame { + msec: 3968 + hash: "91422870aa1471571e7dd8ff5103f76c" + } + Frame { + msec: 3984 + hash: "7156166d5f8d13483467ef515627c95d" + } + Frame { + msec: 4000 + hash: "6028e8374c2ce42a9a9e85b4a8b53027" + } + Frame { + msec: 4016 + hash: "17c99592be58d2e03f9f173c47c0649b" + } + Frame { + msec: 4032 + hash: "6084b53186c6a7eda38ac7fa34bf45ce" + } + Frame { + msec: 4048 + hash: "e82131a8a5a06519f49308bbc25738cf" + } + Frame { + msec: 4064 + hash: "77bdb69cbe55d9c503c6aa1c0f974d87" + } + Frame { + msec: 4080 + hash: "b2346ec5d376651347281d5fb00fc4d7" + } + Frame { + msec: 4096 + hash: "36a3b72c9d7f09795c546855a269801d" + } + Frame { + msec: 4112 + hash: "4e5478b33baca797f3f8f72c2c6c51ad" + } + Frame { + msec: 4128 + hash: "e59d12be3ed1f58de010d385ddfe78e5" + } + Frame { + msec: 4144 + hash: "9674106a146effd47c2724a2dd82ae84" + } + Frame { + msec: 4160 + hash: "862cec781f169f713032e6d52d3616ce" + } + Frame { + msec: 4176 + hash: "c8d47bdfb6518ef4827677023313d559" + } + Frame { + msec: 4192 + hash: "19413931b3e788067dfaef39b47d30ff" + } + Frame { + msec: 4208 + hash: "600e426532c0348cd622257b0773efd5" + } + Frame { + msec: 4224 + hash: "6d975e259d4efa108375d271451531c1" + } + Frame { + msec: 4240 + hash: "50b0da4848564c063694202ce16ea808" + } + Frame { + msec: 4256 + hash: "0a9450739031f680735b5210e6a30c3f" + } + Frame { + msec: 4272 + hash: "23ce049cd7e715c28f5845fd1a1fc195" + } + Frame { + msec: 4288 + hash: "23ce049cd7e715c28f5845fd1a1fc195" + } + Frame { + msec: 4304 + hash: "23ce049cd7e715c28f5845fd1a1fc195" + } + Frame { + msec: 4320 + hash: "23ce049cd7e715c28f5845fd1a1fc195" + } + Frame { + msec: 4336 + hash: "23ce049cd7e715c28f5845fd1a1fc195" + } + Frame { + msec: 4352 + hash: "23ce049cd7e715c28f5845fd1a1fc195" + } + Frame { + msec: 4368 + hash: "23ce049cd7e715c28f5845fd1a1fc195" + } + Frame { + msec: 4384 + hash: "23ce049cd7e715c28f5845fd1a1fc195" + } + Frame { + msec: 4400 + hash: "23ce049cd7e715c28f5845fd1a1fc195" + } + Frame { + msec: 4416 + hash: "23ce049cd7e715c28f5845fd1a1fc195" + } + Frame { + msec: 4432 + hash: "23ce049cd7e715c28f5845fd1a1fc195" + } + Frame { + msec: 4448 + hash: "23ce049cd7e715c28f5845fd1a1fc195" + } + Frame { + msec: 4464 + hash: "23ce049cd7e715c28f5845fd1a1fc195" + } + Frame { + msec: 4480 + hash: "23ce049cd7e715c28f5845fd1a1fc195" + } + Frame { + msec: 4496 + hash: "23ce049cd7e715c28f5845fd1a1fc195" + } + Frame { + msec: 4512 + hash: "23ce049cd7e715c28f5845fd1a1fc195" + } + Frame { + msec: 4528 + hash: "23ce049cd7e715c28f5845fd1a1fc195" + } + Frame { + msec: 4544 + hash: "23ce049cd7e715c28f5845fd1a1fc195" + } + Key { + type: 6 + key: 16777249 + modifiers: 67108864 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 4560 + hash: "23ce049cd7e715c28f5845fd1a1fc195" + } + Frame { + msec: 4576 + hash: "23ce049cd7e715c28f5845fd1a1fc195" + } + Frame { + msec: 4592 + hash: "23ce049cd7e715c28f5845fd1a1fc195" + } + Frame { + msec: 4608 + hash: "23ce049cd7e715c28f5845fd1a1fc195" + } + Frame { + msec: 4624 + hash: "23ce049cd7e715c28f5845fd1a1fc195" + } + Frame { + msec: 4640 + hash: "23ce049cd7e715c28f5845fd1a1fc195" + } + Frame { + msec: 4656 + hash: "23ce049cd7e715c28f5845fd1a1fc195" + } + Frame { + msec: 4672 + hash: "23ce049cd7e715c28f5845fd1a1fc195" + } + Frame { + msec: 4688 + hash: "23ce049cd7e715c28f5845fd1a1fc195" + } + Frame { + msec: 4704 + hash: "23ce049cd7e715c28f5845fd1a1fc195" + } +} diff --git a/tests/auto/declarative/visual/parentAction/parentAction.qml b/tests/auto/declarative/visual/parentAction/parentAction.qml new file mode 100644 index 0000000..e69d234 --- /dev/null +++ b/tests/auto/declarative/visual/parentAction/parentAction.qml @@ -0,0 +1,55 @@ +import Qt 4.6 + +Rectangle { + width: 400; height: 400 + Item { + scale: .5 + rotation: 15 + transformOrigin: "Center" + x: 10; y: 10 + Rectangle { + id: MyRect + x: 5 + width: 100; height: 100 + transformOrigin: "BottomLeft" + color: "red" + } + } + MouseRegion { + id: Clickable + anchors.fill: parent + } + + Item { + x: 200; y: 200 + rotation: 52; + scale: 2 + Item { + id: newParent + x: 100; y: 100 + } + } + + states: State { + name: "moved" + when: Clickable.pressed + ParentChange { + target: MyRect + parent: newParent + } + PropertyChanges { + target: MyRect + rotation: -52 + scale: 1 + color: "blue" + } + } + + transitions: Transition { + SequentialAnimation { + ColorAnimation { duration: 500} + ParentAction {} + NumberAnimation { matchProperties: "rotation, scale"; duration: 1000 } + } + } +} diff --git a/tests/auto/declarative/visual/propertyAction/data/propertyAction.0.png b/tests/auto/declarative/visual/propertyAction/data/propertyAction.0.png Binary files differnew file mode 100644 index 0000000..64d6b06 --- /dev/null +++ b/tests/auto/declarative/visual/propertyAction/data/propertyAction.0.png diff --git a/tests/auto/declarative/visual/propertyAction/data/propertyAction.1.png b/tests/auto/declarative/visual/propertyAction/data/propertyAction.1.png Binary files differnew file mode 100644 index 0000000..f7fce15 --- /dev/null +++ b/tests/auto/declarative/visual/propertyAction/data/propertyAction.1.png diff --git a/tests/auto/declarative/visual/propertyAction/data/propertyAction.2.png b/tests/auto/declarative/visual/propertyAction/data/propertyAction.2.png Binary files differnew file mode 100644 index 0000000..3080df5 --- /dev/null +++ b/tests/auto/declarative/visual/propertyAction/data/propertyAction.2.png diff --git a/tests/auto/declarative/visual/propertyAction/data/propertyAction.qml b/tests/auto/declarative/visual/propertyAction/data/propertyAction.qml new file mode 100644 index 0000000..7c8c233 --- /dev/null +++ b/tests/auto/declarative/visual/propertyAction/data/propertyAction.qml @@ -0,0 +1,939 @@ +import Qt.VisualTest 4.6 + +VisualTest { + Frame { + msec: 0 + } + Frame { + msec: 16 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 32 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 48 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 64 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 80 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 96 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 112 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 128 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 144 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 160 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 176 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 192 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 208 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 224 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 240 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 256 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 272 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 288 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 304 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 320 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 336 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 352 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 368 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 384 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 400 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 416 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 432 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 448 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 464 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 480 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 496 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 512 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 528 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 544 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 560 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 576 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 592 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 608 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 624 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 640 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 656 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 672 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 688 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 704 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 720 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 736 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 752 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 768 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 784 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 800 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 816 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 832 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 848 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 864 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 880 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 896 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 912 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 928 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 944 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 960 + image: "propertyAction.0.png" + } + Frame { + msec: 976 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 992 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 1008 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 1024 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 1040 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 1056 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 1072 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 1088 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 1104 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 1120 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 1136 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 1152 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 1168 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 1184 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 1200 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 1216 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 1232 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 1248 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 1264 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 1280 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 1296 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 1312 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 1328 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 1344 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 1360 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 1376 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 1392 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 1408 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 1424 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 1440 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 1456 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 1472 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 1488 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 1504 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 1520 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 1536 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 1552 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 1568 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 1584 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 1600 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Mouse { + type: 2 + button: 1 + buttons: 1 + x: 109; y: 247 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1616 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 1632 + hash: "c91921dba899d7a86de3cd013773889f" + } + Frame { + msec: 1648 + hash: "888c0fc86155e10b5fc577ef6ec5755a" + } + Frame { + msec: 1664 + hash: "7fd61a8910bf7b0d2bf57653a268c5d8" + } + Frame { + msec: 1680 + hash: "f42f5073f90a423adf011d0e168c8a9b" + } + Frame { + msec: 1696 + hash: "a3d89deb6cfa2bbbaa1d7d5b5e5b48d5" + } + Frame { + msec: 1712 + hash: "f10e997d7a17c18251a32d58b018105a" + } + Frame { + msec: 1728 + hash: "09ffb57d5f67edfa34d6aad36a002554" + } + Frame { + msec: 1744 + hash: "01f3a2f5b9815f1397a907b099339360" + } + Frame { + msec: 1760 + hash: "58c0910c49748edd2ef8472960179472" + } + Frame { + msec: 1776 + hash: "cc82c5f7f93c5bc1af1c6c509268566a" + } + Frame { + msec: 1792 + hash: "3ef272c6439b85fbc166375d1b98403c" + } + Frame { + msec: 1808 + hash: "98c576f0900e4b8752d1f951bb6bf391" + } + Frame { + msec: 1824 + hash: "4d66dd64d8736ef50163e08723873478" + } + Frame { + msec: 1840 + hash: "9a5d8455b6763456185625811253e0b1" + } + Frame { + msec: 1856 + hash: "77e85731efa786a2492aae19a87523c6" + } + Frame { + msec: 1872 + hash: "f3199d0c860f1236e0b9472bef8785bc" + } + Frame { + msec: 1888 + hash: "f3199d0c860f1236e0b9472bef8785bc" + } + Frame { + msec: 1904 + hash: "32ccdab249268b01d9f1658a736052f1" + } + Frame { + msec: 1920 + image: "propertyAction.1.png" + } + Frame { + msec: 1936 + hash: "db3010ef552146df938c237f6c92bff5" + } + Frame { + msec: 1952 + hash: "101e8595d0301e88376ec52ba9361f84" + } + Frame { + msec: 1968 + hash: "119d548c59baa7e47266d2ceca663288" + } + Frame { + msec: 1984 + hash: "f141fafe102a0b9a2bf33e8c3fc800ff" + } + Frame { + msec: 2000 + hash: "b01f9ca8d4fbff17b3d48c70898a044d" + } + Frame { + msec: 2016 + hash: "cf67954a2d1b22e8d2cfdc26419bafb8" + } + Frame { + msec: 2032 + hash: "7680b2b5a63dea13d733947297e01355" + } + Frame { + msec: 2048 + hash: "af1c017acf6b3c8cff86c9ceb60db3cb" + } + Frame { + msec: 2064 + hash: "0b23ec51f71fddae5e2238ab5754f1db" + } + Frame { + msec: 2080 + hash: "976643961ecbdc86335180ba812b874e" + } + Frame { + msec: 2096 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 2112 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 2128 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 2144 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 2160 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 2176 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 2192 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 2208 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 2224 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 2240 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 2256 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 2272 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 2288 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 2304 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 2320 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 2336 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 2352 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 2368 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 2384 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 2400 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 2416 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 2432 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 2448 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 2464 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 2480 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 2496 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 2512 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 2528 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 2544 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 2560 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 2576 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 2592 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 2608 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 2624 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 2640 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 2656 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 2672 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 2688 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 2704 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 2720 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 2736 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 2752 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Mouse { + type: 3 + button: 1 + buttons: 0 + x: 109; y: 247 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2768 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 2784 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 2800 + hash: "ab924ae435262e76381c2e4af5d64342" + } + Frame { + msec: 2816 + hash: "d60758fc12471a19d31c85f058f2ded7" + } + Frame { + msec: 2832 + hash: "c62e2956f8eb5d2c8cd76ba05c5929d5" + } + Frame { + msec: 2848 + hash: "f2967ee7e035a9ff258116a2706529f8" + } + Frame { + msec: 2864 + hash: "885c4705c6c29f69c56c44abc1251d75" + } + Frame { + msec: 2880 + image: "propertyAction.2.png" + } + Frame { + msec: 2896 + hash: "f4af6871e522511f95bc4c5abfc2a562" + } + Frame { + msec: 2912 + hash: "b27e1e7e0d90468525309528ccfe2823" + } + Frame { + msec: 2928 + hash: "78e7d84a4466258b40315fe61b7ca15c" + } + Frame { + msec: 2944 + hash: "471013d921d8d6e7468fd6aba0b75c71" + } + Frame { + msec: 2960 + hash: "856048da893c9136ac5740bc89b64128" + } + Frame { + msec: 2976 + hash: "32ccdab249268b01d9f1658a736052f1" + } + Frame { + msec: 2992 + hash: "2264fa3acd979f104633c1301a0efd8f" + } + Frame { + msec: 3008 + hash: "f3199d0c860f1236e0b9472bef8785bc" + } + Frame { + msec: 3024 + hash: "ad899d1ecaa43a5541be7b70413caee5" + } + Frame { + msec: 3040 + hash: "4e652524c992f5ee1b987275ca509728" + } + Frame { + msec: 3056 + hash: "a44b3dec2a016694bc8553a51b29d46c" + } + Frame { + msec: 3072 + hash: "7fbe20346bc3c28c345e0797b55599f3" + } + Frame { + msec: 3088 + hash: "bcff18ad433bb4f08126ee66efb037d1" + } + Frame { + msec: 3104 + hash: "836666c64f73c38e87de95944ff2fe72" + } + Frame { + msec: 3120 + hash: "4379982d23db239b1741b5d72c53e160" + } + Frame { + msec: 3136 + hash: "0ed9476337214e1493c1510b8a4c90f8" + } + Frame { + msec: 3152 + hash: "dab637406577a1924c7dbb30680e1af3" + } + Frame { + msec: 3168 + hash: "dcc79277fdb8966e5a3f2ed1b2fc4292" + } + Frame { + msec: 3184 + hash: "5f207d1dfad4907f200d76104881bf56" + } + Frame { + msec: 3200 + hash: "3434fc7f81e859722585dae97c557864" + } + Frame { + msec: 3216 + hash: "7c775b9be8c5293d4962324574267c22" + } + Frame { + msec: 3232 + hash: "da0ff6955c2e4cd86421bdb9053f56e6" + } + Frame { + msec: 3248 + hash: "a1297d525a3ad41abbbb7c2f15efd4fb" + } + Frame { + msec: 3264 + hash: "5326b220995b2a1eaa308ad10fd353fa" + } + Frame { + msec: 3280 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 3296 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 3312 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 3328 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 3344 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Key { + type: 6 + key: 16777249 + modifiers: 67108864 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 3360 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 3376 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 3392 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 3408 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 3424 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 3440 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 3456 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 3472 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 3488 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 3504 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 3520 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 3536 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 3552 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 3568 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 3584 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 3600 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 3616 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 3632 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } +} diff --git a/tests/auto/declarative/visual/propertyAction/propertyAction.qml b/tests/auto/declarative/visual/propertyAction/propertyAction.qml new file mode 100644 index 0000000..a9d3c74 --- /dev/null +++ b/tests/auto/declarative/visual/propertyAction/propertyAction.qml @@ -0,0 +1,34 @@ +import Qt 4.6 + +Rectangle { + width: 400; height: 400 + Rectangle { + id: MyRect + width: 100; height: 100 + color: "red" + } + MouseRegion { + id: Clickable + anchors.fill: parent + } + + states: State { + name: "state1" + when: Clickable.pressed + PropertyChanges { + target: MyRect + x: 50; y: 50 + color: "blue" + } + } + + transitions: Transition { + to: "state1" + reversible: true + SequentialAnimation { + ColorAnimation {} + PropertyAction { matchProperties: "x" } + NumberAnimation { matchProperties: "y"; easing: "InOutQuad" } + } + } +} diff --git a/tests/auto/declarative/visual/qmlgraphicsflickable/data/flickable-horizontal.0.png b/tests/auto/declarative/visual/qmlgraphicsflickable/data/flickable-horizontal.0.png Binary files differnew file mode 100644 index 0000000..d58afd8 --- /dev/null +++ b/tests/auto/declarative/visual/qmlgraphicsflickable/data/flickable-horizontal.0.png diff --git a/tests/auto/declarative/visual/qmlgraphicsflickable/data/flickable-horizontal.1.png b/tests/auto/declarative/visual/qmlgraphicsflickable/data/flickable-horizontal.1.png Binary files differnew file mode 100644 index 0000000..6271bfb --- /dev/null +++ b/tests/auto/declarative/visual/qmlgraphicsflickable/data/flickable-horizontal.1.png diff --git a/tests/auto/declarative/visual/qmlgraphicsflickable/data/flickable-horizontal.2.png b/tests/auto/declarative/visual/qmlgraphicsflickable/data/flickable-horizontal.2.png Binary files differnew file mode 100644 index 0000000..b6f0241 --- /dev/null +++ b/tests/auto/declarative/visual/qmlgraphicsflickable/data/flickable-horizontal.2.png diff --git a/tests/auto/declarative/visual/qmlgraphicsflickable/data/flickable-horizontal.3.png b/tests/auto/declarative/visual/qmlgraphicsflickable/data/flickable-horizontal.3.png Binary files differnew file mode 100644 index 0000000..d58afd8 --- /dev/null +++ b/tests/auto/declarative/visual/qmlgraphicsflickable/data/flickable-horizontal.3.png diff --git a/tests/auto/declarative/visual/qmlgraphicsflickable/data/flickable-horizontal.qml b/tests/auto/declarative/visual/qmlgraphicsflickable/data/flickable-horizontal.qml new file mode 100644 index 0000000..d5f67bf --- /dev/null +++ b/tests/auto/declarative/visual/qmlgraphicsflickable/data/flickable-horizontal.qml @@ -0,0 +1,1199 @@ +import Qt.VisualTest 4.6 + +VisualTest { + Frame { + msec: 0 + } + Frame { + msec: 16 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } + Frame { + msec: 32 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } + Frame { + msec: 48 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } + Frame { + msec: 64 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } + Frame { + msec: 80 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } + Frame { + msec: 96 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } + Frame { + msec: 112 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } + Frame { + msec: 128 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } + Frame { + msec: 144 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } + Frame { + msec: 160 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } + Frame { + msec: 176 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } + Frame { + msec: 192 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } + Frame { + msec: 208 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } + Frame { + msec: 224 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } + Frame { + msec: 240 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } + Frame { + msec: 256 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } + Frame { + msec: 272 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } + Frame { + msec: 288 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } + Frame { + msec: 304 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } + Frame { + msec: 320 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } + Frame { + msec: 336 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } + Frame { + msec: 352 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } + Frame { + msec: 368 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } + Frame { + msec: 384 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } + Frame { + msec: 400 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } + Frame { + msec: 416 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } + Frame { + msec: 432 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } + Frame { + msec: 448 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } + Frame { + msec: 464 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } + Frame { + msec: 480 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } + Frame { + msec: 496 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } + Frame { + msec: 512 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } + Frame { + msec: 528 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } + Frame { + msec: 544 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } + Frame { + msec: 560 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } + Frame { + msec: 576 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } + Frame { + msec: 592 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } + Frame { + msec: 608 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } + Frame { + msec: 624 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } + Frame { + msec: 640 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } + Frame { + msec: 656 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } + Frame { + msec: 672 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } + Frame { + msec: 688 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } + Frame { + msec: 704 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } + Frame { + msec: 720 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } + Frame { + msec: 736 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } + Frame { + msec: 752 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } + Frame { + msec: 768 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } + Frame { + msec: 784 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } + Frame { + msec: 800 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } + Frame { + msec: 816 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } + Frame { + msec: 832 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } + Frame { + msec: 848 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } + Frame { + msec: 864 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } + Frame { + msec: 880 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } + Frame { + msec: 896 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } + Frame { + msec: 912 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } + Frame { + msec: 928 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } + Frame { + msec: 944 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } + Mouse { + type: 2 + button: 1 + buttons: 1 + x: 477; y: 171 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 960 + image: "flickable-horizontal.0.png" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 473; y: 171 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 976 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 463; y: 171 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 992 + hash: "c4d91a9e7f785ccd50db55f697d75cb9" + } + Frame { + msec: 1008 + hash: "c4d91a9e7f785ccd50db55f697d75cb9" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 449; y: 171 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1024 + hash: "4f054038668f56cf3fc46dee08504b24" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 425; y: 172 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1040 + hash: "e6ae6e2a8e5fb7204ae1f559b5dc4a63" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 393; y: 172 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 3 + button: 1 + buttons: 0 + x: 393; y: 172 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1056 + hash: "3bfaaef12ca852421ad179d8598a306d" + } + Frame { + msec: 1072 + hash: "e00ff5e13a9a97bc11e041f89e4782f5" + } + Frame { + msec: 1088 + hash: "ae10ada837b21365936672e9a4b4b175" + } + Frame { + msec: 1104 + hash: "63566d7f1707025c9ec37e398d0e69ef" + } + Frame { + msec: 1120 + hash: "20e9d299cd867d680cf85f99e06cd200" + } + Frame { + msec: 1136 + hash: "4d3a19b3c50a20ba1d93a8bcd178a424" + } + Frame { + msec: 1152 + hash: "d373ab5240e438e8234ae05f935c1ef8" + } + Frame { + msec: 1168 + hash: "2f9c00aa1f8a8cc5d10e6c6a0baee366" + } + Frame { + msec: 1184 + hash: "0fd8203b0a33fd8243ecd878f04f9b42" + } + Frame { + msec: 1200 + hash: "24a197df4209c7076d68031e5dd4fd9e" + } + Frame { + msec: 1216 + hash: "9e4271eacdc875183e3c8e7a1eb098c2" + } + Frame { + msec: 1232 + hash: "cdf7aac4ff7e5df806977eb38392f5bc" + } + Frame { + msec: 1248 + hash: "1ace4a1312cad6f173a04c388624a97f" + } + Frame { + msec: 1264 + hash: "193d6d6838ac1d5ddb941fbb340ec506" + } + Frame { + msec: 1280 + hash: "ed82807a48f28610ba9bda0c7ab91ce4" + } + Frame { + msec: 1296 + hash: "e1168bb9a88a972decb0c537d86d7758" + } + Frame { + msec: 1312 + hash: "828ba428b04826687c6ef19b72318924" + } + Frame { + msec: 1328 + hash: "7dae52c428253cf44045ffaabaadd2f4" + } + Frame { + msec: 1344 + hash: "06e2a81e1a2421523642cfcf17ec22e4" + } + Frame { + msec: 1360 + hash: "283997835a54e80c0ab8a0321bd03ce7" + } + Frame { + msec: 1376 + hash: "6354f9379b7b25c8fabda4e5bc3cdf6a" + } + Frame { + msec: 1392 + hash: "6bc87dfd21d59efd3397e3cfb0d00d25" + } + Frame { + msec: 1408 + hash: "4f97fc9aa1f79a6b007a00459386b9ff" + } + Frame { + msec: 1424 + hash: "2b5c711ede124c9e97d3ef83a3fdcc8b" + } + Frame { + msec: 1440 + hash: "5a8cbd4ac3fcd920f2aea6e2cfa96467" + } + Frame { + msec: 1456 + hash: "5b32961cb36e519f5b1d50386e796d3e" + } + Frame { + msec: 1472 + hash: "c91f95cccd38cbd1a16ee65abffd40ab" + } + Frame { + msec: 1488 + hash: "25108050298d3ffc850113971bcf54da" + } + Frame { + msec: 1504 + hash: "6a236881f2a1cb487ee1945c279e020b" + } + Frame { + msec: 1520 + hash: "2df1824df1cf20022595f64d26adb4ad" + } + Frame { + msec: 1536 + hash: "4ca4a0a4b4fd9f9c4846adebcdc8fd67" + } + Frame { + msec: 1552 + hash: "1696ef0862ff4772f960d203c43fbddf" + } + Frame { + msec: 1568 + hash: "c5846835b8eb5d98c481ee5811344ea1" + } + Frame { + msec: 1584 + hash: "fbcb044ee53302de573321b43f068e65" + } + Frame { + msec: 1600 + hash: "d369e0a6c4a3e63102be29a7362ef9eb" + } + Frame { + msec: 1616 + hash: "e93131b881805d4aa44949c69f486821" + } + Frame { + msec: 1632 + hash: "b7aeee9e5065f1d4656e451b542ecf6a" + } + Frame { + msec: 1648 + hash: "05521ca19960c070d5f3dd72c5ade0e4" + } + Frame { + msec: 1664 + hash: "2c68cb3291cf1f892c8b8eb28b409e4d" + } + Frame { + msec: 1680 + hash: "5a0908aea91df2b9e65d222829c2b0ba" + } + Frame { + msec: 1696 + hash: "0d4ff147517eee8b3dbcd51a708b2aa7" + } + Frame { + msec: 1712 + hash: "521e1075de1de89c6e25f469d2728ab7" + } + Frame { + msec: 1728 + hash: "c543447f98ae608058c6c02c8c8665e6" + } + Frame { + msec: 1744 + hash: "ac259db754b7dfb8cce8548527c72e4b" + } + Frame { + msec: 1760 + hash: "bc5b68d5ecfb583ae41001e326b7aa9b" + } + Frame { + msec: 1776 + hash: "e08051cb1ab2d8f979a52dc86411f78f" + } + Frame { + msec: 1792 + hash: "b1746ad9563359f0d70a1aaee62e9bd8" + } + Frame { + msec: 1808 + hash: "5d6bc33ff2857fb8db582362bf7c19c7" + } + Frame { + msec: 1824 + hash: "83f2c3a7124f9be4dbe883a27ca7df8e" + } + Frame { + msec: 1840 + hash: "189f7cfb5ede1f8380b1a05b7e3d942e" + } + Frame { + msec: 1856 + hash: "07b1a4e5ca156e6aa1f3e76b825807ce" + } + Frame { + msec: 1872 + hash: "48b25f0acfe6eb3bc2cb9eb16e6595d0" + } + Frame { + msec: 1888 + hash: "15ae05f5ed098021073c4593587949ea" + } + Frame { + msec: 1904 + hash: "b300f2c75f4aebcf84ed37ad424ca9fa" + } + Frame { + msec: 1920 + image: "flickable-horizontal.1.png" + } + Frame { + msec: 1936 + hash: "7d8ea492fb1c664502e95e085896c569" + } + Frame { + msec: 1952 + hash: "7513b077e073d78b387309b56e1fd44c" + } + Frame { + msec: 1968 + hash: "ed1ac5cf6d4b081983a8e16258f431bf" + } + Frame { + msec: 1984 + hash: "fbb31f23ba6e5d02011363abfb4b3f18" + } + Frame { + msec: 2000 + hash: "6f01df424b38036b9921b4ee1491a1c1" + } + Frame { + msec: 2016 + hash: "11f706dfacbec5c0be0c2f3c5442f717" + } + Frame { + msec: 2032 + hash: "0a70348986f4987f43db3e55af63fca5" + } + Frame { + msec: 2048 + hash: "6f8b7aaad846f83c6349836d7af34662" + } + Frame { + msec: 2064 + hash: "44723b22aad6d2d814e074ff9324f3c4" + } + Frame { + msec: 2080 + hash: "44723b22aad6d2d814e074ff9324f3c4" + } + Frame { + msec: 2096 + hash: "44723b22aad6d2d814e074ff9324f3c4" + } + Frame { + msec: 2112 + hash: "1c12d2c68223324f040b7a693cef2074" + } + Frame { + msec: 2128 + hash: "0a70348986f4987f43db3e55af63fca5" + } + Frame { + msec: 2144 + hash: "bf4de7baf2730cdaf83887d50d577986" + } + Frame { + msec: 2160 + hash: "23ddb2c0793d7161a0d8c5b2a777dceb" + } + Frame { + msec: 2176 + hash: "7513b077e073d78b387309b56e1fd44c" + } + Frame { + msec: 2192 + hash: "83fa82362057466dff6a243a95d423db" + } + Frame { + msec: 2208 + hash: "0e60b632ce511109cb01d2e5ff6945f8" + } + Frame { + msec: 2224 + hash: "78c25194827c4243a16807491f798cdf" + } + Frame { + msec: 2240 + hash: "4c9dc46794d4a32e654395bb9d78409e" + } + Frame { + msec: 2256 + hash: "e996d4f3a0b3a4a4ed29ec23a1ad5615" + } + Frame { + msec: 2272 + hash: "cd6770afe63f28517a93f0961cf9c26e" + } + Frame { + msec: 2288 + hash: "cd6770afe63f28517a93f0961cf9c26e" + } + Frame { + msec: 2304 + hash: "cd6770afe63f28517a93f0961cf9c26e" + } + Frame { + msec: 2320 + hash: "cd6770afe63f28517a93f0961cf9c26e" + } + Frame { + msec: 2336 + hash: "cd6770afe63f28517a93f0961cf9c26e" + } + Frame { + msec: 2352 + hash: "cd6770afe63f28517a93f0961cf9c26e" + } + Frame { + msec: 2368 + hash: "cd6770afe63f28517a93f0961cf9c26e" + } + Frame { + msec: 2384 + hash: "cd6770afe63f28517a93f0961cf9c26e" + } + Frame { + msec: 2400 + hash: "cd6770afe63f28517a93f0961cf9c26e" + } + Frame { + msec: 2416 + hash: "cd6770afe63f28517a93f0961cf9c26e" + } + Frame { + msec: 2432 + hash: "cd6770afe63f28517a93f0961cf9c26e" + } + Frame { + msec: 2448 + hash: "cd6770afe63f28517a93f0961cf9c26e" + } + Frame { + msec: 2464 + hash: "cd6770afe63f28517a93f0961cf9c26e" + } + Frame { + msec: 2480 + hash: "cd6770afe63f28517a93f0961cf9c26e" + } + Frame { + msec: 2496 + hash: "cd6770afe63f28517a93f0961cf9c26e" + } + Frame { + msec: 2512 + hash: "cd6770afe63f28517a93f0961cf9c26e" + } + Frame { + msec: 2528 + hash: "cd6770afe63f28517a93f0961cf9c26e" + } + Frame { + msec: 2544 + hash: "cd6770afe63f28517a93f0961cf9c26e" + } + Frame { + msec: 2560 + hash: "cd6770afe63f28517a93f0961cf9c26e" + } + Frame { + msec: 2576 + hash: "cd6770afe63f28517a93f0961cf9c26e" + } + Frame { + msec: 2592 + hash: "cd6770afe63f28517a93f0961cf9c26e" + } + Frame { + msec: 2608 + hash: "cd6770afe63f28517a93f0961cf9c26e" + } + Frame { + msec: 2624 + hash: "cd6770afe63f28517a93f0961cf9c26e" + } + Frame { + msec: 2640 + hash: "cd6770afe63f28517a93f0961cf9c26e" + } + Frame { + msec: 2656 + hash: "cd6770afe63f28517a93f0961cf9c26e" + } + Frame { + msec: 2672 + hash: "cd6770afe63f28517a93f0961cf9c26e" + } + Frame { + msec: 2688 + hash: "cd6770afe63f28517a93f0961cf9c26e" + } + Frame { + msec: 2704 + hash: "cd6770afe63f28517a93f0961cf9c26e" + } + Frame { + msec: 2720 + hash: "cd6770afe63f28517a93f0961cf9c26e" + } + Frame { + msec: 2736 + hash: "cd6770afe63f28517a93f0961cf9c26e" + } + Frame { + msec: 2752 + hash: "cd6770afe63f28517a93f0961cf9c26e" + } + Frame { + msec: 2768 + hash: "cd6770afe63f28517a93f0961cf9c26e" + } + Mouse { + type: 2 + button: 1 + buttons: 1 + x: 152; y: 189 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2784 + hash: "cd6770afe63f28517a93f0961cf9c26e" + } + Frame { + msec: 2800 + hash: "cd6770afe63f28517a93f0961cf9c26e" + } + Frame { + msec: 2816 + hash: "cd6770afe63f28517a93f0961cf9c26e" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 154; y: 190 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2832 + hash: "cd6770afe63f28517a93f0961cf9c26e" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 169; y: 191 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2848 + hash: "edd015434d7ead96c03a51a2b1c9e527" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 202; y: 192 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2864 + hash: "ea0eda505daea4171e27aac358aa6a4a" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 256; y: 192 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2880 + image: "flickable-horizontal.2.png" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 331; y: 192 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2896 + hash: "34f70dfe1c226e63300112aa9a4a6968" + } + Frame { + msec: 2912 + hash: "34f70dfe1c226e63300112aa9a4a6968" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 395; y: 194 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 3 + button: 1 + buttons: 0 + x: 395; y: 194 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2928 + hash: "dd61e0ae58d7a344908a10bb97cfcb39" + } + Frame { + msec: 2944 + hash: "14a384c4bdd3e89808761d1e86976170" + } + Frame { + msec: 2960 + hash: "0e82a4920a53239f117448cd0e0b27f2" + } + Frame { + msec: 2976 + hash: "711e29bf6fbbeb7882064adb0619f4ac" + } + Frame { + msec: 2992 + hash: "43307cbfe1688daf300fafc8df0082b8" + } + Frame { + msec: 3008 + hash: "46d788d926c03d85a68b66252e73ae90" + } + Frame { + msec: 3024 + hash: "a0042935ad2d5557c906050d4a3581c9" + } + Frame { + msec: 3040 + hash: "b618a40490ca0aea310f08b452fa8c68" + } + Frame { + msec: 3056 + hash: "e2aaad7f160a6d77dd788c76bb8cb8a7" + } + Frame { + msec: 3072 + hash: "ab5c27fa790c67a6678db0bbae1ae477" + } + Frame { + msec: 3088 + hash: "b43ed7af838cd6edd32393fc56cf8fb1" + } + Frame { + msec: 3104 + hash: "88ac50602c9f27fb5b882ad32d14ff46" + } + Frame { + msec: 3120 + hash: "259af2e080ed93e16cb633fa940c7c08" + } + Frame { + msec: 3136 + hash: "d05bec2351068d552b7bbbf47cf82fad" + } + Frame { + msec: 3152 + hash: "5354b8e07f1ed22950687187ee7a0290" + } + Frame { + msec: 3168 + hash: "3bfaaef12ca852421ad179d8598a306d" + } + Frame { + msec: 3184 + hash: "40d3a77fce7a9a9ca7ae6023fc4cfc10" + } + Frame { + msec: 3200 + hash: "5837c0122aa6b28518f1b7043ead99a9" + } + Frame { + msec: 3216 + hash: "9514d8530275e4642810ac441e8de353" + } + Frame { + msec: 3232 + hash: "3b720882f52340549d8e1b9659443461" + } + Frame { + msec: 3248 + hash: "4de5b95c8f4949a4f1ee9a119940e80a" + } + Frame { + msec: 3264 + hash: "a35097c00483e0b481222e4ad220c7a4" + } + Frame { + msec: 3280 + hash: "82ac348a63a4e358a877a2e45d48e2b1" + } + Frame { + msec: 3296 + hash: "1322108409d1fa87d128f0c44c81ab4b" + } + Frame { + msec: 3312 + hash: "f6b030effcca891ab20073f106b22d73" + } + Frame { + msec: 3328 + hash: "a7ccd998ac2ff2777d9423d704ddef48" + } + Frame { + msec: 3344 + hash: "b6d971a4f3321b7f3632e778ce733589" + } + Frame { + msec: 3360 + hash: "b6d971a4f3321b7f3632e778ce733589" + } + Frame { + msec: 3376 + hash: "b6d971a4f3321b7f3632e778ce733589" + } + Frame { + msec: 3392 + hash: "82ef6700a513e39508fb6de5ef07f1e7" + } + Frame { + msec: 3408 + hash: "9e4c4d479bc0b1a61566eae12416bea6" + } + Frame { + msec: 3424 + hash: "f6b030effcca891ab20073f106b22d73" + } + Frame { + msec: 3440 + hash: "8968acd022a9ba6fcc3ea52bdd7268c4" + } + Frame { + msec: 3456 + hash: "de8f1a1fd680af475173d5f81e85b26c" + } + Frame { + msec: 3472 + hash: "82e8c0c7cb7c2b1e8d7a5fc019533e6b" + } + Frame { + msec: 3488 + hash: "f820d250252cd910af97e5c9be181457" + } + Frame { + msec: 3504 + hash: "a40558c1fbf328d3c891b473b2454020" + } + Frame { + msec: 3520 + hash: "0ef9e64bad67670102e1e4d9ef0e96f3" + } + Frame { + msec: 3536 + hash: "1d8013765ac2d3fe09ccaa6db098a208" + } + Frame { + msec: 3552 + hash: "1d8013765ac2d3fe09ccaa6db098a208" + } + Frame { + msec: 3568 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } + Frame { + msec: 3584 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } + Frame { + msec: 3600 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } + Frame { + msec: 3616 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } + Frame { + msec: 3632 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } + Frame { + msec: 3648 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } + Frame { + msec: 3664 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } + Frame { + msec: 3680 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } + Frame { + msec: 3696 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } + Frame { + msec: 3712 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } + Frame { + msec: 3728 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } + Frame { + msec: 3744 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } + Frame { + msec: 3760 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } + Frame { + msec: 3776 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } + Frame { + msec: 3792 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } + Frame { + msec: 3808 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } + Frame { + msec: 3824 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } + Frame { + msec: 3840 + image: "flickable-horizontal.3.png" + } + Frame { + msec: 3856 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } + Frame { + msec: 3872 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } + Frame { + msec: 3888 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } + Frame { + msec: 3904 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } + Frame { + msec: 3920 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } + Frame { + msec: 3936 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } + Frame { + msec: 3952 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } + Frame { + msec: 3968 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } + Frame { + msec: 3984 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } + Frame { + msec: 4000 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } + Frame { + msec: 4016 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } + Frame { + msec: 4032 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } + Frame { + msec: 4048 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } + Frame { + msec: 4064 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } + Frame { + msec: 4080 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } + Frame { + msec: 4096 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } + Frame { + msec: 4112 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } + Frame { + msec: 4128 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } + Frame { + msec: 4144 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } + Frame { + msec: 4160 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } + Key { + type: 6 + key: 16777249 + modifiers: 0 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 4176 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } + Frame { + msec: 4192 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } + Frame { + msec: 4208 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } + Frame { + msec: 4224 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } + Frame { + msec: 4240 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } + Frame { + msec: 4256 + hash: "0fa60818532d1e5c20cd82ce3d61e3f7" + } +} diff --git a/tests/auto/declarative/visual/qmlgraphicsflickable/data/flickable-vertical.0.png b/tests/auto/declarative/visual/qmlgraphicsflickable/data/flickable-vertical.0.png Binary files differnew file mode 100644 index 0000000..2187f8e --- /dev/null +++ b/tests/auto/declarative/visual/qmlgraphicsflickable/data/flickable-vertical.0.png diff --git a/tests/auto/declarative/visual/qmlgraphicsflickable/data/flickable-vertical.1.png b/tests/auto/declarative/visual/qmlgraphicsflickable/data/flickable-vertical.1.png Binary files differnew file mode 100644 index 0000000..cf3e770 --- /dev/null +++ b/tests/auto/declarative/visual/qmlgraphicsflickable/data/flickable-vertical.1.png diff --git a/tests/auto/declarative/visual/qmlgraphicsflickable/data/flickable-vertical.2.png b/tests/auto/declarative/visual/qmlgraphicsflickable/data/flickable-vertical.2.png Binary files differnew file mode 100644 index 0000000..8a1554a --- /dev/null +++ b/tests/auto/declarative/visual/qmlgraphicsflickable/data/flickable-vertical.2.png diff --git a/tests/auto/declarative/visual/qmlgraphicsflickable/data/flickable-vertical.qml b/tests/auto/declarative/visual/qmlgraphicsflickable/data/flickable-vertical.qml new file mode 100644 index 0000000..cb8df62 --- /dev/null +++ b/tests/auto/declarative/visual/qmlgraphicsflickable/data/flickable-vertical.qml @@ -0,0 +1,1107 @@ +import Qt.VisualTest 4.6 + +VisualTest { + Frame { + msec: 0 + } + Frame { + msec: 16 + hash: "12f8ae38d58e978d78bf83c7c339537d" + } + Frame { + msec: 32 + hash: "12f8ae38d58e978d78bf83c7c339537d" + } + Frame { + msec: 48 + hash: "12f8ae38d58e978d78bf83c7c339537d" + } + Frame { + msec: 64 + hash: "12f8ae38d58e978d78bf83c7c339537d" + } + Frame { + msec: 80 + hash: "12f8ae38d58e978d78bf83c7c339537d" + } + Frame { + msec: 96 + hash: "12f8ae38d58e978d78bf83c7c339537d" + } + Frame { + msec: 112 + hash: "12f8ae38d58e978d78bf83c7c339537d" + } + Frame { + msec: 128 + hash: "12f8ae38d58e978d78bf83c7c339537d" + } + Frame { + msec: 144 + hash: "12f8ae38d58e978d78bf83c7c339537d" + } + Frame { + msec: 160 + hash: "12f8ae38d58e978d78bf83c7c339537d" + } + Frame { + msec: 176 + hash: "12f8ae38d58e978d78bf83c7c339537d" + } + Frame { + msec: 192 + hash: "12f8ae38d58e978d78bf83c7c339537d" + } + Frame { + msec: 208 + hash: "12f8ae38d58e978d78bf83c7c339537d" + } + Frame { + msec: 224 + hash: "12f8ae38d58e978d78bf83c7c339537d" + } + Frame { + msec: 240 + hash: "12f8ae38d58e978d78bf83c7c339537d" + } + Frame { + msec: 256 + hash: "12f8ae38d58e978d78bf83c7c339537d" + } + Frame { + msec: 272 + hash: "12f8ae38d58e978d78bf83c7c339537d" + } + Frame { + msec: 288 + hash: "12f8ae38d58e978d78bf83c7c339537d" + } + Frame { + msec: 304 + hash: "12f8ae38d58e978d78bf83c7c339537d" + } + Frame { + msec: 320 + hash: "12f8ae38d58e978d78bf83c7c339537d" + } + Frame { + msec: 336 + hash: "12f8ae38d58e978d78bf83c7c339537d" + } + Frame { + msec: 352 + hash: "12f8ae38d58e978d78bf83c7c339537d" + } + Frame { + msec: 368 + hash: "12f8ae38d58e978d78bf83c7c339537d" + } + Frame { + msec: 384 + hash: "12f8ae38d58e978d78bf83c7c339537d" + } + Frame { + msec: 400 + hash: "12f8ae38d58e978d78bf83c7c339537d" + } + Frame { + msec: 416 + hash: "12f8ae38d58e978d78bf83c7c339537d" + } + Frame { + msec: 432 + hash: "12f8ae38d58e978d78bf83c7c339537d" + } + Frame { + msec: 448 + hash: "12f8ae38d58e978d78bf83c7c339537d" + } + Frame { + msec: 464 + hash: "12f8ae38d58e978d78bf83c7c339537d" + } + Frame { + msec: 480 + hash: "12f8ae38d58e978d78bf83c7c339537d" + } + Frame { + msec: 496 + hash: "12f8ae38d58e978d78bf83c7c339537d" + } + Frame { + msec: 512 + hash: "12f8ae38d58e978d78bf83c7c339537d" + } + Frame { + msec: 528 + hash: "12f8ae38d58e978d78bf83c7c339537d" + } + Frame { + msec: 544 + hash: "12f8ae38d58e978d78bf83c7c339537d" + } + Frame { + msec: 560 + hash: "12f8ae38d58e978d78bf83c7c339537d" + } + Frame { + msec: 576 + hash: "12f8ae38d58e978d78bf83c7c339537d" + } + Frame { + msec: 592 + hash: "12f8ae38d58e978d78bf83c7c339537d" + } + Frame { + msec: 608 + hash: "12f8ae38d58e978d78bf83c7c339537d" + } + Frame { + msec: 624 + hash: "12f8ae38d58e978d78bf83c7c339537d" + } + Frame { + msec: 640 + hash: "12f8ae38d58e978d78bf83c7c339537d" + } + Frame { + msec: 656 + hash: "12f8ae38d58e978d78bf83c7c339537d" + } + Frame { + msec: 672 + hash: "12f8ae38d58e978d78bf83c7c339537d" + } + Frame { + msec: 688 + hash: "12f8ae38d58e978d78bf83c7c339537d" + } + Frame { + msec: 704 + hash: "12f8ae38d58e978d78bf83c7c339537d" + } + Frame { + msec: 720 + hash: "12f8ae38d58e978d78bf83c7c339537d" + } + Frame { + msec: 736 + hash: "12f8ae38d58e978d78bf83c7c339537d" + } + Frame { + msec: 752 + hash: "12f8ae38d58e978d78bf83c7c339537d" + } + Frame { + msec: 768 + hash: "12f8ae38d58e978d78bf83c7c339537d" + } + Frame { + msec: 784 + hash: "12f8ae38d58e978d78bf83c7c339537d" + } + Frame { + msec: 800 + hash: "12f8ae38d58e978d78bf83c7c339537d" + } + Mouse { + type: 2 + button: 1 + buttons: 1 + x: 202; y: 486 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 816 + hash: "12f8ae38d58e978d78bf83c7c339537d" + } + Frame { + msec: 832 + hash: "12f8ae38d58e978d78bf83c7c339537d" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 202; y: 484 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 848 + hash: "12f8ae38d58e978d78bf83c7c339537d" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 202; y: 476 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 864 + hash: "7ee6361319fa538204cece6cfdfd6ec0" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 202; y: 466 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 880 + hash: "aac822b5bfed36a6574b00e1c2da7768" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 204; y: 448 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 896 + hash: "356a2162d597298c5295e2d62ee6f185" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 207; y: 420 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 912 + hash: "cc72b8b9fe2f8f2a14559f3e1ef07b62" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 208; y: 380 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 928 + hash: "38e6fdcd1ed7d93369a2585172e693a5" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 208; y: 334 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 3 + button: 1 + buttons: 0 + x: 208; y: 334 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 944 + hash: "5060aa07416f909ce62debcb7dc41f59" + } + Frame { + msec: 960 + image: "flickable-vertical.0.png" + } + Frame { + msec: 976 + hash: "ff2a52636ef08cc1c50017a932d1d7a2" + } + Frame { + msec: 992 + hash: "951e80e2015f0ea4d3a4a625453df725" + } + Frame { + msec: 1008 + hash: "9cb54b41349e62192e4f58b458d02114" + } + Frame { + msec: 1024 + hash: "b2e2bb3805facc5051d1a07d9a2c1148" + } + Frame { + msec: 1040 + hash: "00e22e1a119d50c111b33473530aed79" + } + Frame { + msec: 1056 + hash: "1226183cd5118b785ae3dd0d45417434" + } + Frame { + msec: 1072 + hash: "50d41bff31234d7b3fa5081ae418ffba" + } + Frame { + msec: 1088 + hash: "8ecc7dc39bd17c6baecd0998fbf6937e" + } + Frame { + msec: 1104 + hash: "40ae10e92f7bcc791bf433ab8de538b9" + } + Frame { + msec: 1120 + hash: "6fb7d01b1c9d486100af56121eff60d5" + } + Frame { + msec: 1136 + hash: "fa5f7adad0a1e5ff06902860aa4f8248" + } + Frame { + msec: 1152 + hash: "67081124a7f909b9366cce1cbc89b03c" + } + Frame { + msec: 1168 + hash: "7ccee35625f4daf9b97c0929f9eb14ae" + } + Frame { + msec: 1184 + hash: "db9b8bab0f2c71be0fb8d10d57199533" + } + Frame { + msec: 1200 + hash: "81a01620e28817c476fdda383183dc0e" + } + Frame { + msec: 1216 + hash: "8f99dd630d547c3ffb74048b5e557dab" + } + Frame { + msec: 1232 + hash: "15b90b0f3f0ecbea02c1c0a096b0375c" + } + Frame { + msec: 1248 + hash: "411d7b73389bf23019f4db6e4e8aec40" + } + Frame { + msec: 1264 + hash: "8cb8d626658d5a244be2efceb6cc0caa" + } + Frame { + msec: 1280 + hash: "a4c09ac39ce6fd73e374fb7830362d28" + } + Frame { + msec: 1296 + hash: "34f372f9f4edef7eaf806312178b6229" + } + Frame { + msec: 1312 + hash: "e60a578e183a8b0f650d55f5ae53af47" + } + Frame { + msec: 1328 + hash: "92ad03e47c3011594cbe9eacea96b567" + } + Frame { + msec: 1344 + hash: "8c11b1658e99644966586672f0ed795a" + } + Frame { + msec: 1360 + hash: "ee39e7ef14ac135d893c309395c7325b" + } + Frame { + msec: 1376 + hash: "f4569fa1ae5d06bcf6a3d7fa07a79d36" + } + Frame { + msec: 1392 + hash: "5b3a74d2e33848d27bc39ac68b18f1cb" + } + Frame { + msec: 1408 + hash: "3037e5c910247bfa05664fc4f88b329a" + } + Frame { + msec: 1424 + hash: "134ff2884f7a4ccb5b0b5022331ac981" + } + Frame { + msec: 1440 + hash: "8e8335263e26f24bb88df0b86ccdef1e" + } + Frame { + msec: 1456 + hash: "c976d8abcd6511dc263bada0de531535" + } + Frame { + msec: 1472 + hash: "8b09b7bffc48df791f8044fa8fd8c810" + } + Frame { + msec: 1488 + hash: "ff82a1f8070f76e8de314ef8cd800031" + } + Frame { + msec: 1504 + hash: "98f720a9ab7cc824c0971d6e29954863" + } + Frame { + msec: 1520 + hash: "98f720a9ab7cc824c0971d6e29954863" + } + Frame { + msec: 1536 + hash: "98a1cad92ec9d8eeae93eb3894ee65ef" + } + Frame { + msec: 1552 + hash: "6d0a08623d30aa0bbca1acd6f84db84f" + } + Frame { + msec: 1568 + hash: "473e40326f5e2059a2bf3d6d03a96aca" + } + Frame { + msec: 1584 + hash: "c976d8abcd6511dc263bada0de531535" + } + Frame { + msec: 1600 + hash: "196df7fdcb6ee4cfafb724b72a9dbab5" + } + Frame { + msec: 1616 + hash: "8cf6ecc49e016f1543529826cad71e20" + } + Frame { + msec: 1632 + hash: "63ce337f006b71999e9b07f5feacfc3f" + } + Frame { + msec: 1648 + hash: "3ac7c056389764e33c77df0b08b3fb3d" + } + Frame { + msec: 1664 + hash: "ef788c78a0e35d70e219af3a46b93a23" + } + Frame { + msec: 1680 + hash: "0ea550b3f88a925b0293153ce3044fc3" + } + Frame { + msec: 1696 + hash: "9ca67bbd73fefc521819df517e6a0ecf" + } + Frame { + msec: 1712 + hash: "9ca67bbd73fefc521819df517e6a0ecf" + } + Frame { + msec: 1728 + hash: "9ca67bbd73fefc521819df517e6a0ecf" + } + Frame { + msec: 1744 + hash: "9ca67bbd73fefc521819df517e6a0ecf" + } + Frame { + msec: 1760 + hash: "9ca67bbd73fefc521819df517e6a0ecf" + } + Frame { + msec: 1776 + hash: "9ca67bbd73fefc521819df517e6a0ecf" + } + Frame { + msec: 1792 + hash: "9ca67bbd73fefc521819df517e6a0ecf" + } + Frame { + msec: 1808 + hash: "9ca67bbd73fefc521819df517e6a0ecf" + } + Frame { + msec: 1824 + hash: "9ca67bbd73fefc521819df517e6a0ecf" + } + Frame { + msec: 1840 + hash: "9ca67bbd73fefc521819df517e6a0ecf" + } + Frame { + msec: 1856 + hash: "9ca67bbd73fefc521819df517e6a0ecf" + } + Frame { + msec: 1872 + hash: "9ca67bbd73fefc521819df517e6a0ecf" + } + Frame { + msec: 1888 + hash: "9ca67bbd73fefc521819df517e6a0ecf" + } + Frame { + msec: 1904 + hash: "9ca67bbd73fefc521819df517e6a0ecf" + } + Frame { + msec: 1920 + image: "flickable-vertical.1.png" + } + Frame { + msec: 1936 + hash: "9ca67bbd73fefc521819df517e6a0ecf" + } + Frame { + msec: 1952 + hash: "9ca67bbd73fefc521819df517e6a0ecf" + } + Frame { + msec: 1968 + hash: "9ca67bbd73fefc521819df517e6a0ecf" + } + Frame { + msec: 1984 + hash: "9ca67bbd73fefc521819df517e6a0ecf" + } + Frame { + msec: 2000 + hash: "9ca67bbd73fefc521819df517e6a0ecf" + } + Frame { + msec: 2016 + hash: "9ca67bbd73fefc521819df517e6a0ecf" + } + Frame { + msec: 2032 + hash: "9ca67bbd73fefc521819df517e6a0ecf" + } + Frame { + msec: 2048 + hash: "9ca67bbd73fefc521819df517e6a0ecf" + } + Frame { + msec: 2064 + hash: "9ca67bbd73fefc521819df517e6a0ecf" + } + Frame { + msec: 2080 + hash: "9ca67bbd73fefc521819df517e6a0ecf" + } + Frame { + msec: 2096 + hash: "9ca67bbd73fefc521819df517e6a0ecf" + } + Frame { + msec: 2112 + hash: "9ca67bbd73fefc521819df517e6a0ecf" + } + Frame { + msec: 2128 + hash: "9ca67bbd73fefc521819df517e6a0ecf" + } + Frame { + msec: 2144 + hash: "9ca67bbd73fefc521819df517e6a0ecf" + } + Frame { + msec: 2160 + hash: "9ca67bbd73fefc521819df517e6a0ecf" + } + Mouse { + type: 2 + button: 1 + buttons: 1 + x: 209; y: 122 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 208; y: 122 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2176 + hash: "9ca67bbd73fefc521819df517e6a0ecf" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 208; y: 124 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2192 + hash: "9ca67bbd73fefc521819df517e6a0ecf" + } + Frame { + msec: 2208 + hash: "9ca67bbd73fefc521819df517e6a0ecf" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 207; y: 130 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 206; y: 141 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2224 + hash: "2121160b0cab27b1b5f1d29b463f4c15" + } + Frame { + msec: 2240 + hash: "2121160b0cab27b1b5f1d29b463f4c15" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 205; y: 160 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2256 + hash: "22ea9a42269540113c3f83eb1e8d47af" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 204; y: 188 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2272 + hash: "e0534106f487317ed11ce5c0cc41315f" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 204; y: 226 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2288 + hash: "fcfca6b84764d04f6750754e3e880703" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 207; y: 272 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2304 + hash: "939e7ee0446e39926531e202a1117968" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 210; y: 322 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 3 + button: 1 + buttons: 0 + x: 210; y: 322 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2320 + hash: "301ab8202173c104a5eada9ff98e9972" + } + Frame { + msec: 2336 + hash: "c8fe58c0ab2afbd7afe0887143b52fc4" + } + Frame { + msec: 2352 + hash: "8a1d3c0f7e1ad817ba9bfd28272afa08" + } + Frame { + msec: 2368 + hash: "28f48036d03696abb890fed65adeb4e8" + } + Frame { + msec: 2384 + hash: "963d9bf16016c191be09a325575e4939" + } + Frame { + msec: 2400 + hash: "fb69cf91ae5cae41692e97e7dd670ef8" + } + Frame { + msec: 2416 + hash: "451552f0598cc9ebf7abc682450716bb" + } + Frame { + msec: 2432 + hash: "ea15dd0b1fd64608d56cd89cf85758cb" + } + Frame { + msec: 2448 + hash: "f3810b0a2e3bd1965648d2f8aac071e4" + } + Frame { + msec: 2464 + hash: "2d049055ac110f3fb9889a5aa8c7e40f" + } + Frame { + msec: 2480 + hash: "58cb05fb96601e068d94839e23fe5d5c" + } + Frame { + msec: 2496 + hash: "7bf16d64e31f7689852ecd30edde91a5" + } + Frame { + msec: 2512 + hash: "07f8a7336649e7bd0175033af61e7c13" + } + Frame { + msec: 2528 + hash: "5f14c8d4d4df78bb980316d5504b18c5" + } + Frame { + msec: 2544 + hash: "dfd747f34771af04f53509975ad2e55a" + } + Frame { + msec: 2560 + hash: "b81eb1626f100a52d9da05c79f24d83b" + } + Frame { + msec: 2576 + hash: "1febbc750e271153a93c61a244723b34" + } + Frame { + msec: 2592 + hash: "b604470f6621930b3022c7b1d1190ab1" + } + Frame { + msec: 2608 + hash: "0563d86b925b1f32542efd6c5012df9f" + } + Frame { + msec: 2624 + hash: "2d92ae71cc424a8d5bd20de4664b37ae" + } + Frame { + msec: 2640 + hash: "f9122195cd14c767ca373090f2ecec87" + } + Frame { + msec: 2656 + hash: "74c6e3a107666609054737252df1ad86" + } + Frame { + msec: 2672 + hash: "8845ca88445b5317863ac50db511b9fb" + } + Frame { + msec: 2688 + hash: "0fed9f5fe46073fd0cbacdf66e9d8619" + } + Frame { + msec: 2704 + hash: "caaec9b6f8d17a72224eb14bd7dccc84" + } + Frame { + msec: 2720 + hash: "e41245a9c1d8ebbf2ebd695e06e5ea09" + } + Frame { + msec: 2736 + hash: "f0ec12f7a8a5c5f82afbd5db71a22945" + } + Frame { + msec: 2752 + hash: "286fc5815c3097c88ad5059c88f54ecb" + } + Frame { + msec: 2768 + hash: "b4ffa4c9aebdcbf9bbf19e0de70142dd" + } + Frame { + msec: 2784 + hash: "758675faec11cd74517c95255a7f64e2" + } + Frame { + msec: 2800 + hash: "758675faec11cd74517c95255a7f64e2" + } + Frame { + msec: 2816 + hash: "8f7cae2c23f1becfde192934db12ba03" + } + Frame { + msec: 2832 + hash: "286fc5815c3097c88ad5059c88f54ecb" + } + Frame { + msec: 2848 + hash: "2e3e8e53074ddef149367edffe7b430e" + } + Frame { + msec: 2864 + hash: "8765816b08838bf96415879faf094830" + } + Frame { + msec: 2880 + image: "flickable-vertical.2.png" + } + Frame { + msec: 2896 + hash: "7a55c3562be2471f91268ccf76f0a6d8" + } + Frame { + msec: 2912 + hash: "1258f71c1c27a2101e600785a19fa305" + } + Frame { + msec: 2928 + hash: "9a0e0ac06bbe83987ece38124c7ada92" + } + Frame { + msec: 2944 + hash: "0fed9f5fe46073fd0cbacdf66e9d8619" + } + Frame { + msec: 2960 + hash: "04cd9d6996e4ce039646d1ce87cb5882" + } + Frame { + msec: 2976 + hash: "04cd9d6996e4ce039646d1ce87cb5882" + } + Frame { + msec: 2992 + hash: "12f8ae38d58e978d78bf83c7c339537d" + } + Frame { + msec: 3008 + hash: "12f8ae38d58e978d78bf83c7c339537d" + } + Frame { + msec: 3024 + hash: "12f8ae38d58e978d78bf83c7c339537d" + } + Frame { + msec: 3040 + hash: "12f8ae38d58e978d78bf83c7c339537d" + } + Frame { + msec: 3056 + hash: "12f8ae38d58e978d78bf83c7c339537d" + } + Frame { + msec: 3072 + hash: "12f8ae38d58e978d78bf83c7c339537d" + } + Frame { + msec: 3088 + hash: "12f8ae38d58e978d78bf83c7c339537d" + } + Frame { + msec: 3104 + hash: "12f8ae38d58e978d78bf83c7c339537d" + } + Frame { + msec: 3120 + hash: "12f8ae38d58e978d78bf83c7c339537d" + } + Frame { + msec: 3136 + hash: "12f8ae38d58e978d78bf83c7c339537d" + } + Frame { + msec: 3152 + hash: "12f8ae38d58e978d78bf83c7c339537d" + } + Frame { + msec: 3168 + hash: "12f8ae38d58e978d78bf83c7c339537d" + } + Frame { + msec: 3184 + hash: "12f8ae38d58e978d78bf83c7c339537d" + } + Frame { + msec: 3200 + hash: "12f8ae38d58e978d78bf83c7c339537d" + } + Frame { + msec: 3216 + hash: "12f8ae38d58e978d78bf83c7c339537d" + } + Frame { + msec: 3232 + hash: "12f8ae38d58e978d78bf83c7c339537d" + } + Frame { + msec: 3248 + hash: "12f8ae38d58e978d78bf83c7c339537d" + } + Frame { + msec: 3264 + hash: "12f8ae38d58e978d78bf83c7c339537d" + } + Frame { + msec: 3280 + hash: "12f8ae38d58e978d78bf83c7c339537d" + } + Frame { + msec: 3296 + hash: "12f8ae38d58e978d78bf83c7c339537d" + } + Frame { + msec: 3312 + hash: "12f8ae38d58e978d78bf83c7c339537d" + } + Frame { + msec: 3328 + hash: "12f8ae38d58e978d78bf83c7c339537d" + } + Frame { + msec: 3344 + hash: "12f8ae38d58e978d78bf83c7c339537d" + } + Frame { + msec: 3360 + hash: "12f8ae38d58e978d78bf83c7c339537d" + } + Frame { + msec: 3376 + hash: "12f8ae38d58e978d78bf83c7c339537d" + } + Frame { + msec: 3392 + hash: "12f8ae38d58e978d78bf83c7c339537d" + } + Frame { + msec: 3408 + hash: "12f8ae38d58e978d78bf83c7c339537d" + } + Frame { + msec: 3424 + hash: "12f8ae38d58e978d78bf83c7c339537d" + } + Frame { + msec: 3440 + hash: "12f8ae38d58e978d78bf83c7c339537d" + } + Frame { + msec: 3456 + hash: "12f8ae38d58e978d78bf83c7c339537d" + } + Frame { + msec: 3472 + hash: "12f8ae38d58e978d78bf83c7c339537d" + } + Frame { + msec: 3488 + hash: "12f8ae38d58e978d78bf83c7c339537d" + } + Frame { + msec: 3504 + hash: "12f8ae38d58e978d78bf83c7c339537d" + } + Frame { + msec: 3520 + hash: "12f8ae38d58e978d78bf83c7c339537d" + } + Frame { + msec: 3536 + hash: "12f8ae38d58e978d78bf83c7c339537d" + } + Frame { + msec: 3552 + hash: "12f8ae38d58e978d78bf83c7c339537d" + } + Frame { + msec: 3568 + hash: "12f8ae38d58e978d78bf83c7c339537d" + } + Frame { + msec: 3584 + hash: "12f8ae38d58e978d78bf83c7c339537d" + } + Frame { + msec: 3600 + hash: "12f8ae38d58e978d78bf83c7c339537d" + } + Key { + type: 6 + key: 16777249 + modifiers: 0 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 3616 + hash: "12f8ae38d58e978d78bf83c7c339537d" + } + Frame { + msec: 3632 + hash: "12f8ae38d58e978d78bf83c7c339537d" + } + Frame { + msec: 3648 + hash: "12f8ae38d58e978d78bf83c7c339537d" + } + Frame { + msec: 3664 + hash: "12f8ae38d58e978d78bf83c7c339537d" + } + Frame { + msec: 3680 + hash: "12f8ae38d58e978d78bf83c7c339537d" + } + Frame { + msec: 3696 + hash: "12f8ae38d58e978d78bf83c7c339537d" + } + Frame { + msec: 3712 + hash: "12f8ae38d58e978d78bf83c7c339537d" + } + Frame { + msec: 3728 + hash: "12f8ae38d58e978d78bf83c7c339537d" + } +} diff --git a/tests/auto/declarative/visual/qmlgraphicsflickable/flickable-horizontal.qml b/tests/auto/declarative/visual/qmlgraphicsflickable/flickable-horizontal.qml new file mode 100644 index 0000000..2b4f55d --- /dev/null +++ b/tests/auto/declarative/visual/qmlgraphicsflickable/flickable-horizontal.qml @@ -0,0 +1,37 @@ +import Qt 4.6 + +Rectangle { + color: "lightSteelBlue" + width: 600; height: 300 + + ListModel { + id: List + ListElement { dayColor: "steelblue" } + ListElement { dayColor: "blue" } + ListElement { dayColor: "yellow" } + ListElement { dayColor: "purple" } + ListElement { dayColor: "red" } + ListElement { dayColor: "green" } + ListElement { dayColor: "orange" } + } + + Flickable { + id: Flick + anchors.fill: parent; viewportWidth: row.width + + Row { + id: row + Repeater { + model: List + Rectangle { width: 200; height: 300; color: dayColor } + } + } + } + Rectangle { + radius: 3 + y: Flick.height-8 + height: 8 + x: Flick.visibleArea.xPosition * Flick.width + width: Flick.visibleArea.widthRatio * Flick.width + } +} diff --git a/tests/auto/declarative/visual/qmlgraphicsflickable/flickable-vertical.qml b/tests/auto/declarative/visual/qmlgraphicsflickable/flickable-vertical.qml new file mode 100644 index 0000000..0d6bbed --- /dev/null +++ b/tests/auto/declarative/visual/qmlgraphicsflickable/flickable-vertical.qml @@ -0,0 +1,37 @@ +import Qt 4.6 + +Rectangle { + color: "lightSteelBlue" + width: 300; height: 600 + + ListModel { + id: List + ListElement { dayColor: "steelblue" } + ListElement { dayColor: "blue" } + ListElement { dayColor: "yellow" } + ListElement { dayColor: "purple" } + ListElement { dayColor: "red" } + ListElement { dayColor: "green" } + ListElement { dayColor: "orange" } + } + + Flickable { + id: Flick + anchors.fill: parent; viewportHeight: column.height + + Column { + id: column + Repeater { + model: List + Rectangle { width: 300; height: 200; color: dayColor } + } + } + } + Rectangle { + radius: 3 + x: Flick.width-8 + width: 8 + y: Flick.visibleArea.yPosition * Flick.height + height: Flick.visibleArea.heightRatio * Flick.height + } +} diff --git a/tests/auto/declarative/visual/qmlgraphicstextedit/data/cursorDelegate.0.png b/tests/auto/declarative/visual/qmlgraphicstextedit/data/cursorDelegate.0.png Binary files differindex f4e5b62..555996a 100644 --- a/tests/auto/declarative/visual/qmlgraphicstextedit/data/cursorDelegate.0.png +++ b/tests/auto/declarative/visual/qmlgraphicstextedit/data/cursorDelegate.0.png diff --git a/tests/auto/declarative/visual/qmlgraphicstextedit/data/cursorDelegate.1.png b/tests/auto/declarative/visual/qmlgraphicstextedit/data/cursorDelegate.1.png Binary files differindex cf82c2d..b705bad 100644 --- a/tests/auto/declarative/visual/qmlgraphicstextedit/data/cursorDelegate.1.png +++ b/tests/auto/declarative/visual/qmlgraphicstextedit/data/cursorDelegate.1.png diff --git a/tests/auto/declarative/visual/qmlgraphicstextedit/data/cursorDelegate.2.png b/tests/auto/declarative/visual/qmlgraphicstextedit/data/cursorDelegate.2.png Binary files differindex 636a413..094cd2a 100644 --- a/tests/auto/declarative/visual/qmlgraphicstextedit/data/cursorDelegate.2.png +++ b/tests/auto/declarative/visual/qmlgraphicstextedit/data/cursorDelegate.2.png diff --git a/tests/auto/declarative/visual/qmlgraphicstextedit/data/cursorDelegate.3.png b/tests/auto/declarative/visual/qmlgraphicstextedit/data/cursorDelegate.3.png Binary files differindex d37705f..9c519c7 100644 --- a/tests/auto/declarative/visual/qmlgraphicstextedit/data/cursorDelegate.3.png +++ b/tests/auto/declarative/visual/qmlgraphicstextedit/data/cursorDelegate.3.png diff --git a/tests/auto/declarative/visual/qmlgraphicstextedit/data/cursorDelegate.4.png b/tests/auto/declarative/visual/qmlgraphicstextedit/data/cursorDelegate.4.png Binary files differindex 289e973..3ec77b5 100644 --- a/tests/auto/declarative/visual/qmlgraphicstextedit/data/cursorDelegate.4.png +++ b/tests/auto/declarative/visual/qmlgraphicstextedit/data/cursorDelegate.4.png diff --git a/tests/auto/declarative/visual/qmlgraphicstextedit/data/cursorDelegate.5.png b/tests/auto/declarative/visual/qmlgraphicstextedit/data/cursorDelegate.5.png Binary files differindex 9ef28fd..579a66e 100644 --- a/tests/auto/declarative/visual/qmlgraphicstextedit/data/cursorDelegate.5.png +++ b/tests/auto/declarative/visual/qmlgraphicstextedit/data/cursorDelegate.5.png diff --git a/tests/auto/declarative/visual/qmlgraphicstextedit/data/cursorDelegate.6.png b/tests/auto/declarative/visual/qmlgraphicstextedit/data/cursorDelegate.6.png Binary files differindex 5d13e20..9e5ac90 100644 --- a/tests/auto/declarative/visual/qmlgraphicstextedit/data/cursorDelegate.6.png +++ b/tests/auto/declarative/visual/qmlgraphicstextedit/data/cursorDelegate.6.png diff --git a/tests/auto/declarative/visual/qmlgraphicstextedit/data/cursorDelegate.7.png b/tests/auto/declarative/visual/qmlgraphicstextedit/data/cursorDelegate.7.png Binary files differindex 0b882f6..9f3acfc 100644 --- a/tests/auto/declarative/visual/qmlgraphicstextedit/data/cursorDelegate.7.png +++ b/tests/auto/declarative/visual/qmlgraphicstextedit/data/cursorDelegate.7.png diff --git a/tests/auto/declarative/visual/qmlgraphicstextedit/data/cursorDelegate.8.png b/tests/auto/declarative/visual/qmlgraphicstextedit/data/cursorDelegate.8.png Binary files differindex 85930ee..f27518a 100644 --- a/tests/auto/declarative/visual/qmlgraphicstextedit/data/cursorDelegate.8.png +++ b/tests/auto/declarative/visual/qmlgraphicstextedit/data/cursorDelegate.8.png diff --git a/tests/auto/declarative/visual/qmlgraphicstextedit/data/cursorDelegate.qml b/tests/auto/declarative/visual/qmlgraphicstextedit/data/cursorDelegate.qml index 1708858..8578d48 100644 --- a/tests/auto/declarative/visual/qmlgraphicstextedit/data/cursorDelegate.qml +++ b/tests/auto/declarative/visual/qmlgraphicstextedit/data/cursorDelegate.qml @@ -134,119 +134,111 @@ VisualTest { } Frame { msec: 528 - hash: "2aec32493055ad17f4aac9b3c9b84c5f" + hash: "15da97430bcbac3a16d9897bbf2e4dbd" } Frame { msec: 544 - hash: "e0826ff09b628a5e3ddf6d9e5593f937" + hash: "2aec32493055ad17f4aac9b3c9b84c5f" } Frame { msec: 560 - hash: "eacfa8db605b9e386a55508e8943e7d1" + hash: "e0826ff09b628a5e3ddf6d9e5593f937" } Frame { msec: 576 - hash: "2dbe9b5bbb5baf12cd2cbfb4190be316" + hash: "eacfa8db605b9e386a55508e8943e7d1" } Frame { msec: 592 - hash: "60a60e06237318bf005f87bbba386fef" + hash: "2dbe9b5bbb5baf12cd2cbfb4190be316" } Frame { msec: 608 - hash: "97549f388c02adb8884c2e79510adc7e" + hash: "60a60e06237318bf005f87bbba386fef" } Frame { msec: 624 - hash: "d882fe91d9df9862d620cf984e27d0bd" + hash: "97549f388c02adb8884c2e79510adc7e" } Frame { msec: 640 - hash: "6310b65572e39256122c7620f7e87442" + hash: "d882fe91d9df9862d620cf984e27d0bd" } Frame { msec: 656 - hash: "4e7374a683050ff440056b6e7c971d2b" + hash: "6310b65572e39256122c7620f7e87442" } Frame { msec: 672 - hash: "35c0d55cda3a02eb4c441a5832bcbbf4" + hash: "4e7374a683050ff440056b6e7c971d2b" } Frame { msec: 688 - hash: "8d71c418593eb3e4834d5e608ffd3f29" + hash: "35c0d55cda3a02eb4c441a5832bcbbf4" } Frame { msec: 704 - hash: "0da2c1cd0138172698a3bee5d19168c5" + hash: "8d71c418593eb3e4834d5e608ffd3f29" } Frame { msec: 720 - hash: "8ca757a4fd1987329488f63251b0f6b4" + hash: "0da2c1cd0138172698a3bee5d19168c5" } Frame { msec: 736 - hash: "70c827f1b34b44cbd775b666913556d6" + hash: "8ca757a4fd1987329488f63251b0f6b4" } Frame { msec: 752 - hash: "2b91dcef1b3ca66059dd9db4c8e335f3" + hash: "70c827f1b34b44cbd775b666913556d6" } Frame { msec: 768 - hash: "38abc77b2361ce257d39c0cf268ba42b" + hash: "2b91dcef1b3ca66059dd9db4c8e335f3" } Frame { msec: 784 - hash: "59865194eb63465dd0f3925c7a500340" + hash: "38abc77b2361ce257d39c0cf268ba42b" } Frame { msec: 800 - hash: "7bed5747d6b771db0fe5802153e54f2f" + hash: "59865194eb63465dd0f3925c7a500340" } Frame { msec: 816 - hash: "9ac1bf268749bc8e58bc4d04b55ef849" + hash: "7bed5747d6b771db0fe5802153e54f2f" } Frame { msec: 832 - hash: "64ea5cb46782d250c46a7a2c8cceea20" + hash: "9ac1bf268749bc8e58bc4d04b55ef849" } Frame { msec: 848 - hash: "d81037eb21bfcb434b6c7f3bbd21ad12" + hash: "64ea5cb46782d250c46a7a2c8cceea20" } Frame { msec: 864 - hash: "1079ea3a1a62e2cca9a8e907bc5aa4e1" + hash: "d81037eb21bfcb434b6c7f3bbd21ad12" } Frame { msec: 880 - hash: "96422f9bfbc11775cd7d1fae2ba357bd" - } - Key { - type: 6 - key: 16777236 - modifiers: 0 - text: "" - autorep: false - count: 1 + hash: "1079ea3a1a62e2cca9a8e907bc5aa4e1" } Frame { msec: 896 - hash: "1e3f580f37a0dc063a383bdf435e85ea" + hash: "96422f9bfbc11775cd7d1fae2ba357bd" } Frame { msec: 912 - hash: "75e854ccaad087bfe776a843f0bd7284" + hash: "0d247385059a6f68b37bc34f6b2214b1" } Frame { msec: 928 - hash: "ad65de5a6887c0a31a9d8f72a2a651db" + hash: "7c513361e13a90eef229b42e68ffaa18" } Frame { msec: 944 - hash: "62bc9c57724f7ab6bcf7d75d8ff68097" + hash: "510b8441c613f0637dfc46e03c278112" } Frame { msec: 960 @@ -254,7 +246,7 @@ VisualTest { } Frame { msec: 976 - hash: "60edce44dd4ca7fac8d8093990ee5ec1" + hash: "8d90112e2e1c6f226a1a5f4f75785939" } Frame { msec: 992 @@ -264,14 +256,6 @@ VisualTest { msec: 1008 hash: "60edce44dd4ca7fac8d8093990ee5ec1" } - Key { - type: 7 - key: 16777236 - modifiers: 0 - text: "" - autorep: false - count: 1 - } Frame { msec: 1024 hash: "60edce44dd4ca7fac8d8093990ee5ec1" @@ -286,255 +270,247 @@ VisualTest { } Frame { msec: 1072 - hash: "00dfc5f4468482cb5f74e62be235b1d2" + hash: "60edce44dd4ca7fac8d8093990ee5ec1" } Frame { msec: 1088 - hash: "62bc9c57724f7ab6bcf7d75d8ff68097" + hash: "8d90112e2e1c6f226a1a5f4f75785939" } Frame { msec: 1104 - hash: "ad65de5a6887c0a31a9d8f72a2a651db" + hash: "85e6af1f5fd15338a15f984e24d5ec9d" } Frame { msec: 1120 - hash: "75e854ccaad087bfe776a843f0bd7284" + hash: "510b8441c613f0637dfc46e03c278112" } Frame { msec: 1136 - hash: "1e3f580f37a0dc063a383bdf435e85ea" + hash: "7c513361e13a90eef229b42e68ffaa18" } Frame { msec: 1152 - hash: "3d78320cb021944d7c6cee1a42056663" + hash: "0d247385059a6f68b37bc34f6b2214b1" } Frame { msec: 1168 - hash: "fca865f762c1a6cc3e487e0e908eef73" - } - Key { - type: 6 - key: 16777236 - modifiers: 0 - text: "" - autorep: false - count: 1 + hash: "96422f9bfbc11775cd7d1fae2ba357bd" } Frame { msec: 1184 - hash: "2671e1ac09624a01d59be2877050b031" + hash: "1079ea3a1a62e2cca9a8e907bc5aa4e1" } Frame { msec: 1200 - hash: "45d5bbc7810d14187c7d118bc066ea15" + hash: "d81037eb21bfcb434b6c7f3bbd21ad12" } Frame { msec: 1216 - hash: "600c95a895d004747d307a3f23f35410" + hash: "64ea5cb46782d250c46a7a2c8cceea20" } Frame { msec: 1232 - hash: "0def8e163832f1c71f88ab20e808699b" + hash: "9ac1bf268749bc8e58bc4d04b55ef849" } Frame { msec: 1248 - hash: "cae9912e52a5d06cc9112af637857c84" + hash: "7bed5747d6b771db0fe5802153e54f2f" } Frame { msec: 1264 - hash: "71195254611b4262159904fa85810a5a" + hash: "59865194eb63465dd0f3925c7a500340" } Frame { msec: 1280 - hash: "e40575fe4bf88802614245f34cdbd5e8" - } - Key { - type: 7 - key: 16777236 - modifiers: 0 - text: "" - autorep: false - count: 1 + hash: "38abc77b2361ce257d39c0cf268ba42b" } Frame { msec: 1296 - hash: "e112ddc25a24c3d1dec75145ef2f07f1" + hash: "2b91dcef1b3ca66059dd9db4c8e335f3" } Frame { msec: 1312 - hash: "e0b97ac2258cbb5e52413f1a2fd2ca13" + hash: "70c827f1b34b44cbd775b666913556d6" } Frame { msec: 1328 - hash: "4a8a477bf9fdfd46b83b891501c58ebf" + hash: "8ca757a4fd1987329488f63251b0f6b4" } Frame { msec: 1344 - hash: "7c6905ba981ba168d54de6b4e13f3c6e" + hash: "0da2c1cd0138172698a3bee5d19168c5" } Frame { msec: 1360 - hash: "d5220edb347b7e5353190ed4c87bb5c4" + hash: "8d71c418593eb3e4834d5e608ffd3f29" } Frame { msec: 1376 - hash: "ddd4b1f84789a7e216225deec8971e9d" + hash: "35c0d55cda3a02eb4c441a5832bcbbf4" + } + Key { + type: 6 + key: 16777232 + modifiers: 0 + text: "" + autorep: false + count: 1 } Frame { msec: 1392 - hash: "1bac282c1a0253e000bb3418708f45e3" + hash: "4e7374a683050ff440056b6e7c971d2b" } Frame { msec: 1408 - hash: "67da087a04fa9087084e5608303d4f9d" + hash: "6310b65572e39256122c7620f7e87442" } Frame { msec: 1424 - hash: "ad4277259f32df1cfcb7126a1dce0d26" + hash: "d882fe91d9df9862d620cf984e27d0bd" } Frame { msec: 1440 - hash: "f668c0fc141db3df1bd058ba79eade53" + hash: "97549f388c02adb8884c2e79510adc7e" } Frame { msec: 1456 - hash: "2014f44c14427b14537b85db28238503" + hash: "60a60e06237318bf005f87bbba386fef" + } + Key { + type: 7 + key: 16777232 + modifiers: 0 + text: "" + autorep: false + count: 1 } Frame { msec: 1472 - hash: "e0cbddaa3ba555989128308f081f1a5e" + hash: "2dbe9b5bbb5baf12cd2cbfb4190be316" } Frame { msec: 1488 - hash: "4e568b3badfff98b66197e3a807cb0ed" + hash: "eacfa8db605b9e386a55508e8943e7d1" } Frame { msec: 1504 - hash: "69d90e788fd3abbfdacbf52b2187a28f" + hash: "e0826ff09b628a5e3ddf6d9e5593f937" } Frame { msec: 1520 - hash: "b18ddec8d31cc2ebaa5769159907d7ac" + hash: "2aec32493055ad17f4aac9b3c9b84c5f" } Frame { msec: 1536 - hash: "eaebc251865fbdf6e5b9a45ef7c691b7" + hash: "c0e72cdf776b0c62742aa9c3683cd523" } Frame { msec: 1552 - hash: "5f21192d18303607998f5e8e61f06ce5" - } - Key { - type: 6 - key: 16777236 - modifiers: 0 - text: "" - autorep: false - count: 1 + hash: "ea3f512181b3ee94d8cdd4d9f59ed962" } Frame { msec: 1568 - hash: "0b1f013aa635865f98c33ad8e78022f1" + hash: "de924155855e76d0591217448f79bdb6" } Frame { msec: 1584 - hash: "a30d56ede486abc3a402ebcdacd1e61f" + hash: "51da770a75102de9ad1920f1f6c44146" } Frame { msec: 1600 - hash: "c97427f5e3abb0311408fb1f3d3e0d11" + hash: "e3c0e8f6385ef2ab9b671be3243774c4" } Frame { msec: 1616 - hash: "d8ac7f3b5a0c236a924ada760e8754df" + hash: "eac6de65ea6726f0cc50b6d30c1b7ba5" } Frame { msec: 1632 - hash: "cf0bc83a365fbc479d00a8db664b967f" + hash: "2ee111386bd646c4ee577405e490a2f7" + } + Key { + type: 6 + key: 16777233 + modifiers: 0 + text: "" + autorep: false + count: 1 } Frame { msec: 1648 - hash: "5be670fae881594f9bba83ab6ede952f" + hash: "24c376d5a2b3555126b156c8bc7a7a0c" } Frame { msec: 1664 - hash: "64d4b22a82b9924630028acb60eb9880" + hash: "d9c35de8b02f11db321d9bdcdcd65403" } Frame { msec: 1680 - hash: "7a1e1047d3c04ce1663fe1e14a0b1616" + hash: "0b32a66497ec3cdd05dc27c0ef9c5718" } Frame { msec: 1696 - hash: "12f5c8f77036075326d9b4ba5d434f2e" + hash: "9626f80ef170af2db135792337203265" + } + Frame { + msec: 1712 + hash: "6e4ce7599da579f764ff10e982888889" + } + Frame { + msec: 1728 + hash: "5ad4dd681be780c0068734ca5c722507" } Key { type: 7 - key: 16777236 + key: 16777233 modifiers: 0 text: "" autorep: false count: 1 } Frame { - msec: 1712 - hash: "b94b360fbe47dbda0038dc0ae771a991" - } - Frame { - msec: 1728 - hash: "6cf00b54e1fd004118ec4c50ed6157ac" - } - Frame { msec: 1744 - hash: "02bfd51fabd21f731898c46025702431" + hash: "7d620ef53049f9195cc832d6f9dfd52b" } Frame { msec: 1760 - hash: "6de8d8e53e0069919d03d14ecf5bdc6f" + hash: "0f54144c574af01958505eedd69162f6" } Frame { msec: 1776 - hash: "cb5f77656d46b18999d4f6bf83dd8fc7" + hash: "50f168354e3901283708a4ae9088783d" } Frame { msec: 1792 - hash: "1a135c7e31417d363b13a4d483951bb8" + hash: "c55fdf2fd0a4eeb9ca0e3072aa3e60c4" } Frame { msec: 1808 - hash: "f29028b5e9b16ddb462badc143f66792" + hash: "d351de13e7bb5b273ec3aebb88dffbd5" } Frame { msec: 1824 - hash: "ca03982595666a6554862d6881eaa90d" + hash: "977d44194d1ef05801167157714891af" } Frame { msec: 1840 - hash: "86c353c3420de36c1dc692ca23eba143" + hash: "ef3694ca78764709abbe2f8781578fb4" } Frame { msec: 1856 - hash: "685da933aa3ce092ae1840719c73590f" - } - Key { - type: 6 - key: 16777236 - modifiers: 0 - text: "" - autorep: false - count: 1 + hash: "77afbc0e0b828d03148ed7fe342dfbda" } Frame { msec: 1872 - hash: "e763559863f48da22e44f72c25837562" + hash: "0d94e37430d8b835e65750a6af525ef7" } Frame { msec: 1888 - hash: "350f4cc9d78cc59d349308208931c704" + hash: "e009a8d2cb7c7f1200055666cf2efd9c" } Frame { msec: 1904 - hash: "f09927669a2e7ebc7f192d7210f3d160" + hash: "096a2742962d7b22dba768577373e656" } Frame { msec: 1920 @@ -542,27 +518,19 @@ VisualTest { } Frame { msec: 1936 - hash: "89a1fa690770ed828bacbae768a6be65" + hash: "905b6c7ab24fd1a12f17494fc1935e98" } Frame { msec: 1952 - hash: "06d1cba8aaed2304fc4bfbecce16c967" - } - Key { - type: 7 - key: 16777236 - modifiers: 0 - text: "" - autorep: false - count: 1 + hash: "9bc98b4a32ea933fcc3a40eaae9b3516" } Frame { msec: 1968 - hash: "c870ceb7eda26cbe63dc979f4207c99a" + hash: "70f0313540b3517f3b6d403c3ab1199c" } Frame { msec: 1984 - hash: "60edce44dd4ca7fac8d8093990ee5ec1" + hash: "309ae1af1ef7dbaf0b892ad60fd3eb93" } Frame { msec: 2000 @@ -576,261 +544,245 @@ VisualTest { msec: 2032 hash: "60edce44dd4ca7fac8d8093990ee5ec1" } - Key { - type: 6 - key: 16777236 - modifiers: 0 - text: "" - autorep: false - count: 1 - } Frame { msec: 2048 hash: "60edce44dd4ca7fac8d8093990ee5ec1" } Frame { msec: 2064 - hash: "a7e20d15e7e61448374472dbbf7ebaf0" + hash: "60edce44dd4ca7fac8d8093990ee5ec1" } Frame { msec: 2080 - hash: "42989771b83675c9e7e97f1d205d2897" + hash: "309ae1af1ef7dbaf0b892ad60fd3eb93" } Frame { msec: 2096 - hash: "c5efb69cf47fecb0aa2c568d711ac159" + hash: "70f0313540b3517f3b6d403c3ab1199c" } Frame { msec: 2112 - hash: "988f1a76d07222c9ad443654568b7590" + hash: "9bc98b4a32ea933fcc3a40eaae9b3516" } Key { - type: 7 - key: 16777236 - modifiers: 0 + type: 6 + key: 16777248 + modifiers: 33554432 text: "" autorep: false count: 1 } Frame { msec: 2128 - hash: "d2fec58ff1068f2d5b476ed0fa956ac0" + hash: "905b6c7ab24fd1a12f17494fc1935e98" } Frame { msec: 2144 - hash: "6db061a716c84dcfb23d7e66bae67f20" + hash: "31adf3a3bfbd1083c50cae7ed5d64334" } Frame { msec: 2160 - hash: "0c125acf5f9362564d14737efae0ce06" + hash: "096a2742962d7b22dba768577373e656" } Frame { msec: 2176 - hash: "d706d3d1c732f45acc6d4e8696cdb8c9" + hash: "e009a8d2cb7c7f1200055666cf2efd9c" } Frame { msec: 2192 - hash: "961a395c3b345ebf51fea1bc5163c1ab" + hash: "0d94e37430d8b835e65750a6af525ef7" } Frame { msec: 2208 - hash: "079bbc920e675b01c7e5928a7c768464" + hash: "77afbc0e0b828d03148ed7fe342dfbda" } Frame { msec: 2224 - hash: "5f3c93b9e88a0f59ab4bc4faa6674a85" + hash: "ef3694ca78764709abbe2f8781578fb4" } Frame { msec: 2240 - hash: "04430d46296b2457194d81be31634b7f" + hash: "977d44194d1ef05801167157714891af" } Frame { msec: 2256 - hash: "fb484db53505c10dc5e71fd0c413b95e" + hash: "d351de13e7bb5b273ec3aebb88dffbd5" } Frame { msec: 2272 - hash: "9439de4d10e5b0e8ca698318f86553a7" + hash: "c55fdf2fd0a4eeb9ca0e3072aa3e60c4" } Frame { msec: 2288 - hash: "d01c1ed851f6470c04d2ba3b6612d73a" + hash: "50f168354e3901283708a4ae9088783d" } Frame { msec: 2304 - hash: "62be3af779d1a3fdb4878e7fc3de4633" + hash: "0f54144c574af01958505eedd69162f6" } Frame { msec: 2320 - hash: "893084a93d959e4c1ff03cbbced24191" + hash: "7d620ef53049f9195cc832d6f9dfd52b" + } + Key { + type: 6 + key: 16777232 + modifiers: 33554432 + text: "" + autorep: false + count: 1 } Frame { msec: 2336 - hash: "918b17ae243a40a2abbbf4bd58fd8305" + hash: "03e906dfb3bf98f521d805331d3b5b9c" } Frame { msec: 2352 - hash: "70d6d7f543c9be6b80d27f258c6b38cf" + hash: "c2376393ea9541b909b6b4fe188fa03e" } Frame { msec: 2368 - hash: "867a4f34c4e314c013b422ad7757ebce" + hash: "9b3935370412c75acdf6e91100cf2f53" } Frame { msec: 2384 - hash: "8e1fe740e5206fc309189a5ebe85df31" + hash: "30ab7913bdfc51d2df5ab9f3863d28c7" } Frame { msec: 2400 - hash: "2a2c1c1ee8451cfe1184780442c821ce" + hash: "593656e93d6e01419002dbb581aa6cbd" } Frame { msec: 2416 - hash: "80e3feec77d123194a24acf5a1f48977" + hash: "33800dd560e44ce39d6325bbdee689de" } Frame { msec: 2432 - hash: "4340de0e0ee9b15e99751bc55d68ed6a" + hash: "c41a9c4f08053d5d18fb2d530ed8b5ad" } Key { - type: 6 - key: 16777248 + type: 7 + key: 16777232 modifiers: 33554432 text: "" autorep: false count: 1 } - Key { - type: 6 - key: 16777249 - modifiers: 100663296 - text: "" - autorep: false - count: 1 - } Frame { msec: 2448 - hash: "bd8b4fc579b539dfec5c1521e8c15439" + hash: "b3f2d4a2cb9a9d1304a2a2d07ad41ff2" } Frame { msec: 2464 - hash: "25cc17bcc65a0d689d962c16da1d0719" + hash: "93cf7fe53bc1fd749c523d40b27d17b4" } Frame { msec: 2480 - hash: "4cf94442e9d2132afeb76bb236f7f605" + hash: "6e9226d01dd93cff763e851148da8dfd" } Frame { msec: 2496 - hash: "ef25e4813243fc98f6940dbfe3ad6aeb" + hash: "79fdbda495bbc6c9ae8be03e1467de92" } Frame { msec: 2512 - hash: "5d6b520a78e945e27012396aec85ebb3" + hash: "c30fc0fa9351dbcdbe4f2a297cba9a52" } Frame { msec: 2528 - hash: "55ab5f28283b0b4060b227c79adad533" + hash: "eaf26162fd5ce42262ea08ef39a7123d" } Frame { msec: 2544 - hash: "436cd19fa3955f80e4918366d7e9cdba" + hash: "7bf0d6a5753a60eefae6d3c3819fabe4" } Frame { msec: 2560 - hash: "b160f730781a1f1f105ca2eca4e54cec" + hash: "a2ee3a3b9cd22d7c0e54524cad32e647" } Frame { msec: 2576 - hash: "6ef663c07ac12951662e0ca385304b91" + hash: "822298cfc4e2d64db1bf3e442dd891e6" } Frame { msec: 2592 - hash: "a88fc8450599277cf9abccd136846c95" + hash: "d075c64000b045eae1b42dce701787b7" } Frame { msec: 2608 - hash: "f4f1621c7b8eb7341456952df7282bc3" + hash: "5ca7f15af781f896c83c81077f6b072e" } Frame { msec: 2624 - hash: "168a6c07a3f5366d41c2370c9ff3182b" + hash: "7d0f14896e67c56ed5238472dc127cb1" } Frame { msec: 2640 - hash: "46d159d1e94299e51692b97ba3771fd4" - } - Key { - type: 6 - key: 16777234 - modifiers: 100663296 - text: "" - autorep: false - count: 1 + hash: "dca161e8a9d786ba9d50aa655ccbecd3" } Frame { msec: 2656 - hash: "79442b583caa35ca2f2ed89e06a8ce48" + hash: "73bfcb0f5104efd056f25f7d73126369" } Frame { msec: 2672 - hash: "7b1cadacd91242443dce6ec9571515be" + hash: "0090459043b05bf9504434f36230b32b" } Frame { msec: 2688 - hash: "7009c7fab8766705889b40333f204426" + hash: "f64315858f375c6ded480b2017fc18a5" } Frame { msec: 2704 - hash: "f2964f67007befba6bbda5798d4cd098" + hash: "fe4c0ecfa9779c9fe052d4ffc9386d46" } Frame { msec: 2720 - hash: "7938f15dafabfd3d7e993a39477cd43d" + hash: "849ad15f0ca893881165e956e8a26174" } Frame { msec: 2736 - hash: "e9c4c4e18bd413610c1ecd5c0e3f8ef5" + hash: "c4373fa63ed00832c70a6b94cb729397" } Frame { msec: 2752 - hash: "b280ff9e708156a82954226315458184" + hash: "0c7e08fb7f0dd954b0f171a37ef2a310" } Frame { msec: 2768 - hash: "eebfea4032824a6f0d2c0753df16c11e" + hash: "505071572df7aa300a675f8a808bc7f4" } Frame { msec: 2784 - hash: "cca0519a7fe7e95b88fc61c7cc5167ca" + hash: "52839867e81d52746196f299a8371453" + } + Key { + type: 7 + key: 16777248 + modifiers: 0 + text: "" + autorep: false + count: 1 } Frame { msec: 2800 - hash: "93af825c9f937816f02d1aacf9c71c80" + hash: "c4d214a7e0fc52c2a45fc6e3df12550a" } Frame { msec: 2816 - hash: "2814cf5b7fea3430597920e9cc21e73a" + hash: "f1fa48d796667bd053fff4af7ec1d8ce" } Frame { msec: 2832 - hash: "1641013379f176820d8a3e15091e4870" - } - Key { - type: 7 - key: 16777234 - modifiers: 100663296 - text: "" - autorep: false - count: 1 + hash: "081e46decc8aba911f018acfd761cda1" } Frame { msec: 2848 - hash: "1cb865667ec30a59028c89c1b0da5d0c" + hash: "fa417c9bfda1da66320a8e59fbaeb5b6" } Frame { msec: 2864 - hash: "ab516bef95a42ce166e0434b82586441" + hash: "83dfa353fd20f3bf7caa8e6ca9a9933c" } Frame { msec: 2880 @@ -838,279 +790,271 @@ VisualTest { } Frame { msec: 2896 - hash: "52eb4f26df592bcf80662b8dde09a263" + hash: "c11459b1d3e51f3d2f5bd30049bcca42" } Frame { msec: 2912 - hash: "f8ad5c09a59d08db371b49f1d38fb3a6" + hash: "997ff3fa82ba2fb27a9c41ed9abe8991" } Frame { msec: 2928 - hash: "b13daa4bad7dae110d7180648f3b674b" + hash: "f8baaadde147266416c9ab3f9d9106ce" } Frame { msec: 2944 - hash: "bf177a3dde6e2c8888e03a7d9dc8a546" + hash: "79d1d34fd343d8de631aa3259167fe26" } Frame { msec: 2960 - hash: "833aacce79c5411ca367f1c0df0a7da7" + hash: "8b1445ca6131a0fc4377ded24a60186a" } Frame { msec: 2976 - hash: "a407af015695bdab0486cbad120c73e4" + hash: "784cc01604ecadf74a45164f73f0336d" } Frame { msec: 2992 - hash: "a407af015695bdab0486cbad120c73e4" + hash: "b9aeac2be5c8e16e7938e141f32776be" } Frame { msec: 3008 - hash: "a407af015695bdab0486cbad120c73e4" + hash: "b9aeac2be5c8e16e7938e141f32776be" } Frame { msec: 3024 - hash: "a407af015695bdab0486cbad120c73e4" + hash: "b9aeac2be5c8e16e7938e141f32776be" } Frame { msec: 3040 - hash: "a407af015695bdab0486cbad120c73e4" + hash: "b9aeac2be5c8e16e7938e141f32776be" } Frame { msec: 3056 - hash: "a407af015695bdab0486cbad120c73e4" + hash: "b9aeac2be5c8e16e7938e141f32776be" } Frame { msec: 3072 - hash: "833aacce79c5411ca367f1c0df0a7da7" + hash: "b9aeac2be5c8e16e7938e141f32776be" + } + Key { + type: 6 + key: 16777236 + modifiers: 0 + text: "" + autorep: false + count: 1 } Frame { msec: 3088 - hash: "bf177a3dde6e2c8888e03a7d9dc8a546" + hash: "00dfc5f4468482cb5f74e62be235b1d2" } Frame { msec: 3104 - hash: "b13daa4bad7dae110d7180648f3b674b" + hash: "62bc9c57724f7ab6bcf7d75d8ff68097" } Frame { msec: 3120 - hash: "f8ad5c09a59d08db371b49f1d38fb3a6" + hash: "ad65de5a6887c0a31a9d8f72a2a651db" } Frame { msec: 3136 - hash: "52eb4f26df592bcf80662b8dde09a263" + hash: "75e854ccaad087bfe776a843f0bd7284" } Frame { msec: 3152 - hash: "bddb322e87c277cb0149d2005c6f5419" + hash: "1e3f580f37a0dc063a383bdf435e85ea" } Frame { msec: 3168 - hash: "ab516bef95a42ce166e0434b82586441" + hash: "3d78320cb021944d7c6cee1a42056663" } Frame { msec: 3184 - hash: "1cb865667ec30a59028c89c1b0da5d0c" + hash: "fca865f762c1a6cc3e487e0e908eef73" + } + Key { + type: 7 + key: 16777236 + modifiers: 0 + text: "" + autorep: false + count: 1 } Frame { msec: 3200 - hash: "1641013379f176820d8a3e15091e4870" + hash: "fb7ad9156658f3866d19e43f006cf013" } Frame { msec: 3216 - hash: "2814cf5b7fea3430597920e9cc21e73a" + hash: "6f7411363c66d0959ea5a16a9b610e61" } Frame { msec: 3232 - hash: "93af825c9f937816f02d1aacf9c71c80" + hash: "a33dce3c55b1b1541cfb9b85a75fcb53" } Frame { msec: 3248 - hash: "cca0519a7fe7e95b88fc61c7cc5167ca" + hash: "56b81435dc4ce193bb98c3d02c781242" + } + Key { + type: 6 + key: 16777234 + modifiers: 0 + text: "" + autorep: false + count: 1 } Frame { msec: 3264 - hash: "eebfea4032824a6f0d2c0753df16c11e" + hash: "59865194eb63465dd0f3925c7a500340" } Frame { msec: 3280 - hash: "b280ff9e708156a82954226315458184" + hash: "38abc77b2361ce257d39c0cf268ba42b" } Frame { msec: 3296 - hash: "e9c4c4e18bd413610c1ecd5c0e3f8ef5" + hash: "2b91dcef1b3ca66059dd9db4c8e335f3" } Frame { msec: 3312 - hash: "7938f15dafabfd3d7e993a39477cd43d" + hash: "70c827f1b34b44cbd775b666913556d6" } Frame { msec: 3328 - hash: "f2964f67007befba6bbda5798d4cd098" + hash: "8ca757a4fd1987329488f63251b0f6b4" } Frame { msec: 3344 - hash: "7009c7fab8766705889b40333f204426" + hash: "0da2c1cd0138172698a3bee5d19168c5" } Frame { msec: 3360 - hash: "7b1cadacd91242443dce6ec9571515be" - } - Frame { - msec: 3376 - hash: "79442b583caa35ca2f2ed89e06a8ce48" + hash: "8d71c418593eb3e4834d5e608ffd3f29" } Key { - type: 6 - key: 16777236 - modifiers: 100663296 + type: 7 + key: 16777234 + modifiers: 0 text: "" autorep: false count: 1 } Frame { + msec: 3376 + hash: "35c0d55cda3a02eb4c441a5832bcbbf4" + } + Frame { msec: 3392 - hash: "40fcf25fa8e804a98c044a4a0c8963dc" + hash: "4e7374a683050ff440056b6e7c971d2b" } Frame { msec: 3408 - hash: "7aa7329d93a94043c2e3f99824dceb38" + hash: "6310b65572e39256122c7620f7e87442" } Frame { msec: 3424 - hash: "d9f6827c49f2cec1c03f643c7ec4ffb0" + hash: "d882fe91d9df9862d620cf984e27d0bd" } Frame { msec: 3440 - hash: "2bbb69ac7f56dfd211606838623141f9" + hash: "97549f388c02adb8884c2e79510adc7e" } Frame { msec: 3456 - hash: "9e0585c9feccfcefbc524145fa95497a" + hash: "60a60e06237318bf005f87bbba386fef" } Frame { msec: 3472 - hash: "4cfaf73775079f90d6161caadc005394" + hash: "2dbe9b5bbb5baf12cd2cbfb4190be316" } Frame { msec: 3488 - hash: "a907b5d9b2eba7966e40dcaad5ad43b9" - } - Key { - type: 7 - key: 16777236 - modifiers: 100663296 - text: "" - autorep: false - count: 1 + hash: "eacfa8db605b9e386a55508e8943e7d1" } Frame { msec: 3504 - hash: "0f515bfc5b1e8f3a871e72a1199e8b51" + hash: "e0826ff09b628a5e3ddf6d9e5593f937" } Frame { msec: 3520 - hash: "1748a6c37538b94610f7268392303406" + hash: "2aec32493055ad17f4aac9b3c9b84c5f" } Frame { msec: 3536 - hash: "9ee0526e4fb7af7181c2cabcf4c586e4" + hash: "c0e72cdf776b0c62742aa9c3683cd523" } Frame { msec: 3552 - hash: "ca1257b3c59017954c82b299ef109d63" + hash: "ea3f512181b3ee94d8cdd4d9f59ed962" } Frame { msec: 3568 - hash: "4330cedd40d9c4887458a74412c89e0d" + hash: "de924155855e76d0591217448f79bdb6" } Frame { msec: 3584 - hash: "72776155e38dae3bb6af03bb997e39bf" + hash: "51da770a75102de9ad1920f1f6c44146" } Frame { msec: 3600 - hash: "07bf334c3b1b1bafefcb012b7eadd2cb" + hash: "e3c0e8f6385ef2ab9b671be3243774c4" } Frame { msec: 3616 - hash: "e8a676957b5b27dc4288c3338ef1598f" + hash: "eac6de65ea6726f0cc50b6d30c1b7ba5" } Frame { msec: 3632 - hash: "559d9c06ad042b476aab1d870315de3e" + hash: "2ee111386bd646c4ee577405e490a2f7" } Frame { msec: 3648 - hash: "04ec4c3b89dfbd0eedf614fc987820d8" + hash: "fe95122352effcf1815bc237fc6ce6ab" } Frame { msec: 3664 - hash: "abf824bb990348d2f5e5f8349de059c6" + hash: "e3bb1ec3b84df25712f06e0d6963efdd" } Frame { msec: 3680 - hash: "39d8d0c2990709d4f9f6566456e1a986" + hash: "a10d3184acc85c46e171fe4cf82e1c23" } Frame { msec: 3696 - hash: "c7b961da3fd9adebc623083a99923dda" - } - Key { - type: 7 - key: 16777249 - modifiers: 33554432 - text: "" - autorep: false - count: 1 + hash: "d566b2763312e5e823593806acd9e809" } Frame { msec: 3712 - hash: "69a4a9cb5c8e77bbff0dacc2a4bd8078" + hash: "7db073b7487ddea48e7c9df8b9bfdc00" } Frame { msec: 3728 - hash: "4e756f067b85bc1aef9f2fbfb0664cd7" - } - Key { - type: 6 - key: 16777249 - modifiers: 100663296 - text: "" - autorep: false - count: 1 + hash: "85c663b943f67d158367dba0508980a5" } Frame { msec: 3744 - hash: "4c350a1ac455b1ddc5b8469898f00802" + hash: "6336ce0d912ee63773475c4c6c5d59be" } Frame { msec: 3760 - hash: "2b03f98feae344041a29ced8d37bf8bb" - } - Key { - type: 7 - key: 16777249 - modifiers: 33554432 - text: "" - autorep: false - count: 1 + hash: "c75ba80484af36633b6a4d17b666b1c9" } Frame { msec: 3776 - hash: "c00fa58039a96a467179c183325ca71a" + hash: "08b7d4eef2d15bc717ff1a981a11f275" } Frame { msec: 3792 - hash: "8c25bd3c5f9077d83453d9c58789f69d" + hash: "0ab8bebb0e43786a7e51ea780745080c" } Frame { msec: 3808 - hash: "1ab4b48891fc1bdca8e1f110f74f0ec2" + hash: "6fa1811f520eff9893b3c7b00e53fa7d" } Frame { msec: 3824 - hash: "8b2a3cb2626ecdfb9a77f2996c7aae07" + hash: "6feb44655bfbec651cc2902676bd08b4" } Frame { msec: 3840 @@ -1118,263 +1062,239 @@ VisualTest { } Frame { msec: 3856 - hash: "b5c1d4908b213f9099931f97038467b6" + hash: "00b7714df163d8055514e0dbd8a83bac" } Frame { msec: 3872 - hash: "b6690cdf5138c7ea526efeca609fb57b" + hash: "6ef2a330d70a7e0ce343bb352c46f126" } Frame { msec: 3888 - hash: "3b12c46513b018915cd842881f8303fb" + hash: "f4e26309fa3b8a6d55f44bf146544101" } Frame { msec: 3904 - hash: "544322ef932fc68e7656887dada61427" + hash: "dfa1e24149f2662a4a552da3bb64348c" } Frame { msec: 3920 - hash: "c84a3906fe530b44ef7b797645352bcc" + hash: "9ab9d6ef4aeb5863401a9e251f684e2d" } Frame { msec: 3936 - hash: "fdcc6489cee565f34bf38556a10c31ab" + hash: "c9f7591a37a3743b3b48de5337fd2fa0" } Frame { msec: 3952 - hash: "8dc9c663aa6f6d4d62a53e1f696a8d95" + hash: "2d38f17db530050574d9192c805c142d" } Frame { msec: 3968 - hash: "f1cb8485ec63e10f46b5f39fde943da6" + hash: "38a4ad2cf9fa3015eff67014900a44cc" } Frame { msec: 3984 - hash: "ca7fcf5b17f3516b070253fcea8716c3" + hash: "9d9ce4ac0de6caa2f0bb78eac414ba65" } Frame { msec: 4000 - hash: "ca7fcf5b17f3516b070253fcea8716c3" + hash: "60edce44dd4ca7fac8d8093990ee5ec1" } Frame { msec: 4016 - hash: "ca7fcf5b17f3516b070253fcea8716c3" + hash: "60edce44dd4ca7fac8d8093990ee5ec1" } Frame { msec: 4032 - hash: "ca7fcf5b17f3516b070253fcea8716c3" - } - Key { - type: 6 - key: 16777236 - modifiers: 33554432 - text: "" - autorep: false - count: 1 + hash: "60edce44dd4ca7fac8d8093990ee5ec1" } Frame { msec: 4048 - hash: "b5d6eeb24692097be0d52858b274b16c" + hash: "60edce44dd4ca7fac8d8093990ee5ec1" } Frame { msec: 4064 - hash: "981ecb46065267b68085ca9ddca98804" + hash: "60edce44dd4ca7fac8d8093990ee5ec1" } Frame { msec: 4080 - hash: "73528013bcd7aa00f108a97a3a91a82f" + hash: "9d9ce4ac0de6caa2f0bb78eac414ba65" } Frame { msec: 4096 - hash: "b85b1a50c234068cfb95c995402a6a19" + hash: "38a4ad2cf9fa3015eff67014900a44cc" } Frame { msec: 4112 - hash: "3aa851ea40430609784619433464eaf2" + hash: "2d38f17db530050574d9192c805c142d" } Frame { msec: 4128 - hash: "9fa982cd46eab20749eda34a0efa5406" + hash: "c9f7591a37a3743b3b48de5337fd2fa0" } Frame { msec: 4144 - hash: "dc39e2fdd33e66067738f31c3166ab0c" + hash: "9ab9d6ef4aeb5863401a9e251f684e2d" } Frame { msec: 4160 - hash: "3b2b778311b6d47e567cc4f74cc59df6" + hash: "dfa1e24149f2662a4a552da3bb64348c" } Frame { msec: 4176 - hash: "29eb472c8d8973e557932405c8f03b65" - } - Key { - type: 7 - key: 16777236 - modifiers: 33554432 - text: "" - autorep: false - count: 1 + hash: "f4e26309fa3b8a6d55f44bf146544101" } Frame { msec: 4192 - hash: "24eaeaec5e2c623f3c634ca599652a07" + hash: "6ef2a330d70a7e0ce343bb352c46f126" } Frame { msec: 4208 - hash: "f5314b471bbd10ba3918b7f87f42ea89" + hash: "00b7714df163d8055514e0dbd8a83bac" } Frame { msec: 4224 - hash: "5d4f909cd65677417a39ab993bf843e7" + hash: "ae46d672649a4b0fc5171f776af93a2c" } Frame { msec: 4240 - hash: "089cf253073fa3d5028f230305fcff99" + hash: "6feb44655bfbec651cc2902676bd08b4" } Frame { msec: 4256 - hash: "c6f3040b9e1a08d1b3ede305f9cd6555" + hash: "6fa1811f520eff9893b3c7b00e53fa7d" } Frame { msec: 4272 - hash: "8d8b1acea793bd0ef19c22bcfea4f299" + hash: "0ab8bebb0e43786a7e51ea780745080c" } Frame { msec: 4288 - hash: "9054c98d9d70894ee8130dbdf6c032dc" + hash: "08b7d4eef2d15bc717ff1a981a11f275" } Frame { msec: 4304 - hash: "ae83817a75817c75e718d5aadf689cd0" + hash: "c75ba80484af36633b6a4d17b666b1c9" } Frame { msec: 4320 - hash: "6bda09878f2891926b4a8c4eb06c1a95" + hash: "6336ce0d912ee63773475c4c6c5d59be" } Frame { msec: 4336 - hash: "4d7e669157830691557c5d87396bbf95" + hash: "85c663b943f67d158367dba0508980a5" } Frame { msec: 4352 - hash: "fac0e9a988fde97b11ad62d6a062fef7" + hash: "7db073b7487ddea48e7c9df8b9bfdc00" } Frame { msec: 4368 - hash: "3d4922c20f7c6ec1339d928b13bb543c" + hash: "d566b2763312e5e823593806acd9e809" } Frame { msec: 4384 - hash: "d2ae8259336d814ace548a09fd2a8929" + hash: "a10d3184acc85c46e171fe4cf82e1c23" } Frame { msec: 4400 - hash: "83b403aebe7455756f28deff44bf67be" + hash: "e3bb1ec3b84df25712f06e0d6963efdd" } Frame { msec: 4416 - hash: "d72063dcffdb4214b016298bfd49c2f8" + hash: "fe95122352effcf1815bc237fc6ce6ab" } Frame { msec: 4432 - hash: "b0b99cc967ffb07f5bbb426aaff42546" + hash: "2ee111386bd646c4ee577405e490a2f7" } Frame { msec: 4448 - hash: "63cec13d54ee89da9f8de1704651abf8" + hash: "eac6de65ea6726f0cc50b6d30c1b7ba5" } Frame { msec: 4464 - hash: "3b11b70d6269b00ba0c760310b89f57d" + hash: "e3c0e8f6385ef2ab9b671be3243774c4" } Frame { msec: 4480 - hash: "34eb5efcfeab860f1e852351e60533ef" + hash: "51da770a75102de9ad1920f1f6c44146" } Frame { msec: 4496 - hash: "7c734437e82e3903566ea03c99f3cd2d" + hash: "de924155855e76d0591217448f79bdb6" } Frame { msec: 4512 - hash: "e17e803711b984448b14cb404bd8f554" + hash: "ea3f512181b3ee94d8cdd4d9f59ed962" } Frame { msec: 4528 - hash: "709b6fba0fd0d654964e7004d7acea04" + hash: "c0e72cdf776b0c62742aa9c3683cd523" } Frame { msec: 4544 - hash: "9659ed9683bf771550173bbc63e35f5d" + hash: "2aec32493055ad17f4aac9b3c9b84c5f" } Frame { msec: 4560 - hash: "75fb093bb9209dfbb469966130796a6e" + hash: "e0826ff09b628a5e3ddf6d9e5593f937" } Frame { msec: 4576 - hash: "e36ed352f51eaaf91c972e3ecf78a41b" + hash: "eacfa8db605b9e386a55508e8943e7d1" } Frame { msec: 4592 - hash: "3bd4f403f8b202a8a98c266bbec9fb5a" + hash: "2dbe9b5bbb5baf12cd2cbfb4190be316" } Frame { msec: 4608 - hash: "ba82e8e2aa94249774f61c6f8908ffab" + hash: "60a60e06237318bf005f87bbba386fef" } Frame { msec: 4624 - hash: "937c363c327d6ff88e78b6346f2ac6f1" + hash: "97549f388c02adb8884c2e79510adc7e" } Frame { msec: 4640 - hash: "e7c468c4a4b957257ab9f0db2921ade4" + hash: "d882fe91d9df9862d620cf984e27d0bd" } Frame { msec: 4656 - hash: "fbebc389d6d3b2f87a9fa877516a5a9d" + hash: "6310b65572e39256122c7620f7e87442" } Frame { msec: 4672 - hash: "821d206a57e81c2a75e7b89a3118796b" + hash: "4e7374a683050ff440056b6e7c971d2b" } Frame { msec: 4688 - hash: "bd5875a6b6923719e8576cec3524a614" + hash: "35c0d55cda3a02eb4c441a5832bcbbf4" } Frame { msec: 4704 - hash: "5176151598f9dd7d970410cf65a1add2" + hash: "8d71c418593eb3e4834d5e608ffd3f29" } Frame { msec: 4720 - hash: "99489e3204db8fb9e5cf763e78c71f3e" - } - Key { - type: 7 - key: 16777248 - modifiers: 0 - text: "" - autorep: false - count: 1 + hash: "0da2c1cd0138172698a3bee5d19168c5" } Frame { msec: 4736 - hash: "4b7fd4dd0d9a9a8dee1e780138a8904e" + hash: "8ca757a4fd1987329488f63251b0f6b4" } Frame { msec: 4752 - hash: "736fcbe3dc9bd9bb3e721026d9b7ff7a" + hash: "70c827f1b34b44cbd775b666913556d6" } Frame { msec: 4768 - hash: "e786f2dc74d39698c5ed8b56d789ec02" + hash: "2b91dcef1b3ca66059dd9db4c8e335f3" } Frame { msec: 4784 - hash: "65c3620aca2d14eb2022c5f7c272ad44" + hash: "38abc77b2361ce257d39c0cf268ba42b" } Frame { msec: 4800 @@ -1382,587 +1302,1699 @@ VisualTest { } Frame { msec: 4816 - hash: "7741e166478f264f258490ef73f5ebe4" + hash: "7bed5747d6b771db0fe5802153e54f2f" } Frame { msec: 4832 - hash: "fd7777c88a75610ee4aa9b65213e6d85" + hash: "9ac1bf268749bc8e58bc4d04b55ef849" } Frame { msec: 4848 - hash: "c489be2d43f847b2e850acaaf00004c6" + hash: "64ea5cb46782d250c46a7a2c8cceea20" } Frame { msec: 4864 - hash: "4f294aed3f5c44c5f77b7c629a4fd805" + hash: "d81037eb21bfcb434b6c7f3bbd21ad12" } Frame { msec: 4880 - hash: "4500593c3e82484a60298a1810818309" + hash: "1079ea3a1a62e2cca9a8e907bc5aa4e1" + } + Mouse { + type: 2 + button: 1 + buttons: 1 + x: 130; y: 101 + modifiers: 0 + sendToViewport: true } Frame { msec: 4896 - hash: "5ce614392842eef7630439472189ca0b" + hash: "3d78320cb021944d7c6cee1a42056663" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 130; y: 102 + modifiers: 0 + sendToViewport: true } Frame { msec: 4912 - hash: "ab427e2ed2a16541ab1b35ebaae0a61c" + hash: "1e3f580f37a0dc063a383bdf435e85ea" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 131; y: 102 + modifiers: 0 + sendToViewport: true } Frame { msec: 4928 - hash: "a2a325a215f0eda4b29e491bfda43b5c" + hash: "75e854ccaad087bfe776a843f0bd7284" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 132; y: 103 + modifiers: 0 + sendToViewport: true } Frame { msec: 4944 - hash: "bbe9603864b65b42c1a9cf8535b1c829" + hash: "ad65de5a6887c0a31a9d8f72a2a651db" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 133; y: 103 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 134; y: 103 + modifiers: 0 + sendToViewport: true } Frame { msec: 4960 - hash: "6ef7833786bd118c95834a33ea1f8029" + hash: "62bc9c57724f7ab6bcf7d75d8ff68097" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 135; y: 103 + modifiers: 0 + sendToViewport: true } Frame { msec: 4976 - hash: "b5d6eeb24692097be0d52858b274b16c" + hash: "00dfc5f4468482cb5f74e62be235b1d2" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 136; y: 103 + modifiers: 0 + sendToViewport: true } Frame { msec: 4992 - hash: "b5d6eeb24692097be0d52858b274b16c" + hash: "60edce44dd4ca7fac8d8093990ee5ec1" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 137; y: 103 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 138; y: 102 + modifiers: 0 + sendToViewport: true } Frame { msec: 5008 - hash: "b5d6eeb24692097be0d52858b274b16c" + hash: "60edce44dd4ca7fac8d8093990ee5ec1" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 139; y: 101 + modifiers: 0 + sendToViewport: true } Frame { msec: 5024 - hash: "b5d6eeb24692097be0d52858b274b16c" + hash: "60edce44dd4ca7fac8d8093990ee5ec1" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 140; y: 101 + modifiers: 0 + sendToViewport: true } Frame { msec: 5040 - hash: "b5d6eeb24692097be0d52858b274b16c" + hash: "60edce44dd4ca7fac8d8093990ee5ec1" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 141; y: 100 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 143; y: 100 + modifiers: 0 + sendToViewport: true } Frame { msec: 5056 - hash: "b5d6eeb24692097be0d52858b274b16c" + hash: "60edce44dd4ca7fac8d8093990ee5ec1" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 144; y: 100 + modifiers: 0 + sendToViewport: true } Frame { msec: 5072 - hash: "6ef7833786bd118c95834a33ea1f8029" + hash: "60edce44dd4ca7fac8d8093990ee5ec1" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 146; y: 99 + modifiers: 0 + sendToViewport: true } Frame { msec: 5088 - hash: "bbe9603864b65b42c1a9cf8535b1c829" + hash: "748dc58a3ad83d7b99d7b26ad2f82786" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 148; y: 99 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 149; y: 99 + modifiers: 0 + sendToViewport: true } Frame { msec: 5104 - hash: "a2a325a215f0eda4b29e491bfda43b5c" + hash: "242cc0ee7c3bdb44e8933068d3a93b61" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 150; y: 99 + modifiers: 0 + sendToViewport: true } Frame { msec: 5120 - hash: "ab427e2ed2a16541ab1b35ebaae0a61c" + hash: "3be6f0a35fb085dcf6c9481cf1c23f9d" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 151; y: 99 + modifiers: 0 + sendToViewport: true } Frame { msec: 5136 - hash: "5ce614392842eef7630439472189ca0b" + hash: "a6f63267eaba9aefd2c9ab338571ef33" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 152; y: 99 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 152; y: 98 + modifiers: 0 + sendToViewport: true } Frame { msec: 5152 - hash: "4500593c3e82484a60298a1810818309" + hash: "ba37dd9ba649e294465dc707f6b768ec" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 153; y: 98 + modifiers: 0 + sendToViewport: true } Frame { msec: 5168 - hash: "4f294aed3f5c44c5f77b7c629a4fd805" + hash: "35b186609721ec0b8a121d15bc54ce49" } - Key { - type: 6 - key: 16777232 + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 154; y: 98 modifiers: 0 - text: "" - autorep: false - count: 1 + sendToViewport: true } Frame { msec: 5184 - hash: "d81037eb21bfcb434b6c7f3bbd21ad12" + hash: "700ff15e4e48af93362455a149d90363" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 155; y: 98 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 156; y: 98 + modifiers: 0 + sendToViewport: true } Frame { msec: 5200 - hash: "64ea5cb46782d250c46a7a2c8cceea20" + hash: "1c51eb8d4d25d086bda4d595a49c3a86" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 157; y: 98 + modifiers: 0 + sendToViewport: true } Frame { msec: 5216 - hash: "9ac1bf268749bc8e58bc4d04b55ef849" + hash: "2f085b047d24384d463163df7fac2bd3" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 158; y: 98 + modifiers: 0 + sendToViewport: true } Frame { msec: 5232 - hash: "7bed5747d6b771db0fe5802153e54f2f" + hash: "46d7aff6eb47e50e23c061ecb149fbf9" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 160; y: 98 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 161; y: 98 + modifiers: 0 + sendToViewport: true } Frame { msec: 5248 - hash: "59865194eb63465dd0f3925c7a500340" + hash: "48d7a8f749f7501dbaa4599ca41096a5" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 163; y: 97 + modifiers: 0 + sendToViewport: true } Frame { msec: 5264 - hash: "38abc77b2361ce257d39c0cf268ba42b" + hash: "4c2a085c69c118fedfa15fe46cdc508b" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 164; y: 97 + modifiers: 0 + sendToViewport: true } Frame { msec: 5280 - hash: "2b91dcef1b3ca66059dd9db4c8e335f3" + hash: "25f25828a4d22fe85db0de5c562f658e" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 166; y: 96 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 168; y: 96 + modifiers: 0 + sendToViewport: true } Frame { msec: 5296 - hash: "70c827f1b34b44cbd775b666913556d6" + hash: "e9fb14ec21e9ec1235d2fea6e055b69d" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 170; y: 96 + modifiers: 0 + sendToViewport: true } Frame { msec: 5312 - hash: "8ca757a4fd1987329488f63251b0f6b4" + hash: "66417881aeb85778be66566241c45f5a" } - Key { - type: 7 - key: 16777232 + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 174; y: 96 modifiers: 0 - text: "" - autorep: false - count: 1 + sendToViewport: true } Frame { msec: 5328 - hash: "0da2c1cd0138172698a3bee5d19168c5" + hash: "c8c136690ffd8e5cc3e58f7376693b4f" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 176; y: 96 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 178; y: 96 + modifiers: 0 + sendToViewport: true } Frame { msec: 5344 - hash: "8d71c418593eb3e4834d5e608ffd3f29" + hash: "c58c4fb5b7197cd8bd95742dc8715bbf" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 179; y: 96 + modifiers: 0 + sendToViewport: true } Frame { msec: 5360 - hash: "35c0d55cda3a02eb4c441a5832bcbbf4" + hash: "2e0c93380883fcf2d0e56024fecba605" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 180; y: 96 + modifiers: 0 + sendToViewport: true } Frame { msec: 5376 - hash: "4e7374a683050ff440056b6e7c971d2b" + hash: "5f169f09e3d868eb0425a331d4bc3144" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 182; y: 95 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 183; y: 95 + modifiers: 0 + sendToViewport: true } Frame { msec: 5392 - hash: "6310b65572e39256122c7620f7e87442" + hash: "ed648742be4b0ded04e713e83ed24b27" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 185; y: 94 + modifiers: 0 + sendToViewport: true } Frame { msec: 5408 - hash: "d882fe91d9df9862d620cf984e27d0bd" + hash: "92131288bb38480469f4578282dedaf8" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 187; y: 94 + modifiers: 0 + sendToViewport: true } Frame { msec: 5424 - hash: "97549f388c02adb8884c2e79510adc7e" + hash: "e16773f750bb0f635552b1eeadb2d625" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 189; y: 93 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 191; y: 92 + modifiers: 0 + sendToViewport: true } Frame { msec: 5440 - hash: "60a60e06237318bf005f87bbba386fef" + hash: "6e653cd552d82f38f30b8027d1951534" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 192; y: 92 + modifiers: 0 + sendToViewport: true } Frame { msec: 5456 - hash: "2dbe9b5bbb5baf12cd2cbfb4190be316" + hash: "cfc1d6efa8d1b3b86396704f0be031ad" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 194; y: 92 + modifiers: 0 + sendToViewport: true } Frame { msec: 5472 - hash: "eacfa8db605b9e386a55508e8943e7d1" + hash: "5848af73f5ab7c811639a6d01921d502" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 196; y: 92 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 198; y: 92 + modifiers: 0 + sendToViewport: true } Frame { msec: 5488 - hash: "e0826ff09b628a5e3ddf6d9e5593f937" + hash: "3823e7da05678f63e6761a81ed7233e2" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 199; y: 92 + modifiers: 0 + sendToViewport: true } Frame { msec: 5504 - hash: "2aec32493055ad17f4aac9b3c9b84c5f" + hash: "d095abe9814a60824914960a11663f12" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 200; y: 91 + modifiers: 0 + sendToViewport: true } Frame { msec: 5520 - hash: "c0e72cdf776b0c62742aa9c3683cd523" + hash: "18922bb3269d903a36e0b690249b473a" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 200; y: 91 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 201; y: 90 + modifiers: 0 + sendToViewport: true } Frame { msec: 5536 - hash: "ea3f512181b3ee94d8cdd4d9f59ed962" + hash: "4d8400a3ca2b782e7b054bb2f71d4543" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 202; y: 89 + modifiers: 0 + sendToViewport: true } Frame { msec: 5552 - hash: "de924155855e76d0591217448f79bdb6" + hash: "24ed25d7a767f01fb02f545fc6c6931a" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 203; y: 88 + modifiers: 0 + sendToViewport: true } Frame { msec: 5568 - hash: "51da770a75102de9ad1920f1f6c44146" + hash: "55fb16784e3655ae70f97d6c32853cdc" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 204; y: 88 + modifiers: 0 + sendToViewport: true } Frame { msec: 5584 - hash: "e3c0e8f6385ef2ab9b671be3243774c4" + hash: "694e6979f0de62b61324dc4b144a2d5d" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 207; y: 86 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 208; y: 85 + modifiers: 0 + sendToViewport: true } Frame { msec: 5600 - hash: "eac6de65ea6726f0cc50b6d30c1b7ba5" + hash: "e61b8b03251f6312e3de4e0c8af684d5" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 210; y: 85 + modifiers: 0 + sendToViewport: true } Frame { msec: 5616 - hash: "2ee111386bd646c4ee577405e490a2f7" + hash: "6203321f87d53692dbb2b2aaf7dd3944" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 212; y: 84 + modifiers: 0 + sendToViewport: true } Frame { msec: 5632 - hash: "fe95122352effcf1815bc237fc6ce6ab" + hash: "297b77029475d77cd8e481199b23da30" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 213; y: 84 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 214; y: 84 + modifiers: 0 + sendToViewport: true } Frame { msec: 5648 - hash: "e3bb1ec3b84df25712f06e0d6963efdd" + hash: "414615d772b4c80bf85eabfdca6fd0e0" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 215; y: 84 + modifiers: 0 + sendToViewport: true } Frame { msec: 5664 - hash: "a10d3184acc85c46e171fe4cf82e1c23" + hash: "46d70882552a21267eebb3505da086f3" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 216; y: 84 + modifiers: 0 + sendToViewport: true } Frame { msec: 5680 - hash: "d566b2763312e5e823593806acd9e809" + hash: "372acafc63624307bcb384c48a803ab7" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 216; y: 84 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 217; y: 84 + modifiers: 0 + sendToViewport: true } Frame { msec: 5696 - hash: "7db073b7487ddea48e7c9df8b9bfdc00" + hash: "1b98094dd4f192af8229b7058b8ce396" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 218; y: 84 + modifiers: 0 + sendToViewport: true } Frame { msec: 5712 - hash: "85c663b943f67d158367dba0508980a5" + hash: "d627fa0ce696e46650225e43134643f5" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 218; y: 84 + modifiers: 0 + sendToViewport: true } Frame { msec: 5728 - hash: "6336ce0d912ee63773475c4c6c5d59be" + hash: "0410f4b504d768bc00940b20d3d942f9" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 219; y: 85 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 219; y: 86 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 220; y: 86 + modifiers: 0 + sendToViewport: true } Frame { msec: 5744 - hash: "c75ba80484af36633b6a4d17b666b1c9" + hash: "5f8011b44681d769800af8d205c757cb" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 221; y: 87 + modifiers: 0 + sendToViewport: true } Frame { msec: 5760 image: "cursorDelegate.5.png" } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 222; y: 87 + modifiers: 0 + sendToViewport: true + } Frame { msec: 5776 - hash: "0ab8bebb0e43786a7e51ea780745080c" + hash: "99f7a46f841f96445962b5fb3496d996" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 222; y: 88 + modifiers: 0 + sendToViewport: true } Frame { msec: 5792 - hash: "6fa1811f520eff9893b3c7b00e53fa7d" + hash: "ed8bba2823ca2fe7cf138af0fcc52806" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 224; y: 90 + modifiers: 0 + sendToViewport: true } Frame { msec: 5808 - hash: "6feb44655bfbec651cc2902676bd08b4" + hash: "c9007b7ae5038ba59bfc6fac15c80d5f" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 226; y: 92 + modifiers: 0 + sendToViewport: true } Frame { msec: 5824 - hash: "ae46d672649a4b0fc5171f776af93a2c" + hash: "2db81c955a99652bcfef958e870054af" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 228; y: 94 + modifiers: 0 + sendToViewport: true } Frame { msec: 5840 - hash: "00b7714df163d8055514e0dbd8a83bac" + hash: "1e3906d7f3ee5a29c3c90b8e1f6c1eb0" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 229; y: 96 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 231; y: 97 + modifiers: 0 + sendToViewport: true } Frame { msec: 5856 - hash: "6ef2a330d70a7e0ce343bb352c46f126" + hash: "fc59738903cc9e6f36ef4d27bfde9496" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 232; y: 98 + modifiers: 0 + sendToViewport: true } Frame { msec: 5872 - hash: "f4e26309fa3b8a6d55f44bf146544101" + hash: "768aaf4ef2b13b40b75bdf15787966b6" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 233; y: 98 + modifiers: 0 + sendToViewport: true } Frame { msec: 5888 - hash: "dfa1e24149f2662a4a552da3bb64348c" + hash: "3085baedc0c58a6757b134bb4f80fa9e" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 233; y: 98 + modifiers: 0 + sendToViewport: true } Frame { msec: 5904 - hash: "9ab9d6ef4aeb5863401a9e251f684e2d" + hash: "0a1b8cad167bf93801f4d0dd34bf872e" } Frame { msec: 5920 - hash: "c9f7591a37a3743b3b48de5337fd2fa0" + hash: "6366e04808ee015feed44d95cc117e1e" } Frame { msec: 5936 - hash: "2d38f17db530050574d9192c805c142d" + hash: "dd67a8542a243aac9462e25dc1586e6e" } Frame { msec: 5952 - hash: "38a4ad2cf9fa3015eff67014900a44cc" + hash: "e06c8788b2ef327d005b4048f0807334" } Frame { msec: 5968 - hash: "9d9ce4ac0de6caa2f0bb78eac414ba65" + hash: "dda2beda1253bd477d04cada4ec4df27" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 233; y: 98 + modifiers: 0 + sendToViewport: true } Frame { msec: 5984 - hash: "60edce44dd4ca7fac8d8093990ee5ec1" + hash: "d659d1724637d90497c8e417764d3477" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 232; y: 99 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 232; y: 99 + modifiers: 0 + sendToViewport: true } Frame { msec: 6000 - hash: "60edce44dd4ca7fac8d8093990ee5ec1" + hash: "91035aecf2ac15f3c2c3dbc4b73b540f" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 231; y: 99 + modifiers: 0 + sendToViewport: true } Frame { msec: 6016 - hash: "60edce44dd4ca7fac8d8093990ee5ec1" + hash: "91035aecf2ac15f3c2c3dbc4b73b540f" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 230; y: 99 + modifiers: 0 + sendToViewport: true } Frame { msec: 6032 - hash: "60edce44dd4ca7fac8d8093990ee5ec1" + hash: "91035aecf2ac15f3c2c3dbc4b73b540f" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 229; y: 99 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 228; y: 100 + modifiers: 0 + sendToViewport: true } Frame { msec: 6048 - hash: "60edce44dd4ca7fac8d8093990ee5ec1" + hash: "91035aecf2ac15f3c2c3dbc4b73b540f" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 227; y: 100 + modifiers: 0 + sendToViewport: true } Frame { msec: 6064 - hash: "9d9ce4ac0de6caa2f0bb78eac414ba65" + hash: "91035aecf2ac15f3c2c3dbc4b73b540f" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 225; y: 100 + modifiers: 0 + sendToViewport: true } Frame { msec: 6080 - hash: "38a4ad2cf9fa3015eff67014900a44cc" + hash: "bdc53613cad59416ed79287874eb59f8" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 224; y: 101 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 222; y: 101 + modifiers: 0 + sendToViewport: true } Frame { msec: 6096 - hash: "2d38f17db530050574d9192c805c142d" + hash: "54efe0acb07fb69827024a566773a36e" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 220; y: 102 + modifiers: 0 + sendToViewport: true } Frame { msec: 6112 - hash: "c9f7591a37a3743b3b48de5337fd2fa0" + hash: "860530a5ac3d89193f3cf234e21f8f6a" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 219; y: 102 + modifiers: 0 + sendToViewport: true } Frame { msec: 6128 - hash: "9ab9d6ef4aeb5863401a9e251f684e2d" + hash: "ade5f8e28159304b22866f688efdbb46" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 217; y: 102 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 216; y: 102 + modifiers: 0 + sendToViewport: true } Frame { msec: 6144 - hash: "dfa1e24149f2662a4a552da3bb64348c" + hash: "7d5f5cf34910527d899e89ea07fb7254" } - Key { - type: 6 - key: 16777233 + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 215; y: 102 modifiers: 0 - text: "" - autorep: false - count: 1 + sendToViewport: true } Frame { msec: 6160 - hash: "e009a8d2cb7c7f1200055666cf2efd9c" + hash: "c201ed0f2419396a229d8396152aba01" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 213; y: 102 + modifiers: 0 + sendToViewport: true } Frame { msec: 6176 - hash: "0d94e37430d8b835e65750a6af525ef7" + hash: "b99135e2cb03ab252ff379c8001c26ad" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 212; y: 102 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 212; y: 102 + modifiers: 0 + sendToViewport: true } Frame { msec: 6192 - hash: "77afbc0e0b828d03148ed7fe342dfbda" + hash: "768aaf4ef2b13b40b75bdf15787966b6" } - Key { - type: 7 - key: 16777233 + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 210; y: 102 modifiers: 0 - text: "" - autorep: false - count: 1 + sendToViewport: true } Frame { msec: 6208 - hash: "ef3694ca78764709abbe2f8781578fb4" + hash: "71a5bed1a87e16c986b2f4b245e956b8" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 210; y: 102 + modifiers: 0 + sendToViewport: true } Frame { msec: 6224 - hash: "977d44194d1ef05801167157714891af" + hash: "7155607add8c7254286097cda52b5888" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 208; y: 103 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 207; y: 103 + modifiers: 0 + sendToViewport: true } Frame { msec: 6240 - hash: "d351de13e7bb5b273ec3aebb88dffbd5" + hash: "e516e4d8a4ef0195ae04b3287f536ffd" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 206; y: 103 + modifiers: 0 + sendToViewport: true } Frame { msec: 6256 - hash: "c55fdf2fd0a4eeb9ca0e3072aa3e60c4" + hash: "afa06d10b37d8ad8b57e392142ff50f2" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 205; y: 103 + modifiers: 0 + sendToViewport: true } Frame { msec: 6272 - hash: "50f168354e3901283708a4ae9088783d" + hash: "88c3fe68f7251d87a5bf197b9d59b899" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 204; y: 103 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 203; y: 104 + modifiers: 0 + sendToViewport: true } Frame { msec: 6288 - hash: "0f54144c574af01958505eedd69162f6" + hash: "b2687baf5148539ee2181b18077e0a3d" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 202; y: 104 + modifiers: 0 + sendToViewport: true } Frame { msec: 6304 - hash: "7d620ef53049f9195cc832d6f9dfd52b" + hash: "457aed68cee2b9f3ff3c7d5f0eb2b6aa" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 201; y: 104 + modifiers: 0 + sendToViewport: true } Frame { msec: 6320 - hash: "5ad4dd681be780c0068734ca5c722507" + hash: "48bb4683718a3b7c34baea29260fbe8c" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 200; y: 103 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 199; y: 103 + modifiers: 0 + sendToViewport: true } Frame { msec: 6336 - hash: "6e4ce7599da579f764ff10e982888889" + hash: "7c32fbf799bbfc10d0fbdd96bcfa9d95" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 197; y: 102 + modifiers: 0 + sendToViewport: true } Frame { msec: 6352 - hash: "9626f80ef170af2db135792337203265" + hash: "68cee3b8213a9d38e2ed431d06eb6756" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 196; y: 101 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 194; y: 101 + modifiers: 0 + sendToViewport: true } Frame { msec: 6368 - hash: "0b32a66497ec3cdd05dc27c0ef9c5718" + hash: "596c732c40a86d16bc649f164b919457" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 191; y: 101 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 188; y: 100 + modifiers: 0 + sendToViewport: true } Frame { msec: 6384 - hash: "d9c35de8b02f11db321d9bdcdcd65403" + hash: "d9cb5bf69d4f8aaebefae6d680a99185" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 187; y: 99 + modifiers: 0 + sendToViewport: true } Frame { msec: 6400 - hash: "24c376d5a2b3555126b156c8bc7a7a0c" + hash: "bb6759f3aff00f027f4f426efb775d2d" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 185; y: 99 + modifiers: 0 + sendToViewport: true } Frame { msec: 6416 - hash: "5410d7126938921ce5a6eaa915b84df5" + hash: "a408d88f97c30ab8ab12a222b03571b4" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 182; y: 98 + modifiers: 0 + sendToViewport: true } Frame { msec: 6432 - hash: "165b351f0aff255d5b33cb5de8e800d9" + hash: "bb2e8994dc014eb6d4e4e33257269c2a" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 176; y: 96 + modifiers: 0 + sendToViewport: true } Frame { msec: 6448 - hash: "ec28ccc9a24e37fac646f64bdc0ac4be" + hash: "190e9df0b8d20b0f37a198e9f3976416" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 171; y: 95 + modifiers: 0 + sendToViewport: true } Frame { msec: 6464 - hash: "eec1bc74c627d2fe645f5f1f8af5064d" + hash: "aa7be52534c8550948deea6ae174330d" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 166; y: 94 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 163; y: 94 + modifiers: 0 + sendToViewport: true } Frame { msec: 6480 - hash: "1fe734f2199fabb1d738242a0ab344ec" + hash: "533caac613ea1279a51a5b5b29acdccc" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 160; y: 94 + modifiers: 0 + sendToViewport: true } Frame { msec: 6496 - hash: "b6ddd0d0ea1fee41f07b2126175b0a87" + hash: "288cc34879d9ed8ed381ba6cc31de3e7" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 159; y: 94 + modifiers: 0 + sendToViewport: true } Frame { msec: 6512 - hash: "f17f5f882bc80455028b96c5d15aafba" + hash: "2a57602c47ab788f288daa81b985fc1d" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 157; y: 94 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 156; y: 94 + modifiers: 0 + sendToViewport: true } Frame { msec: 6528 - hash: "635e67948c997ca2ea4c5f3d6179049f" + hash: "fa3540fafa1a9e3c5e796b598dce8fb1" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 156; y: 94 + modifiers: 0 + sendToViewport: true } Frame { msec: 6544 - hash: "212457586210d5656780b6d030e27ce2" + hash: "7e9b17ae7c10cb30153539911ac6eb13" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 155; y: 94 + modifiers: 0 + sendToViewport: true } Frame { msec: 6560 - hash: "d211b2dd22582d9d1a92299ee2d56c1b" + hash: "9e62b16c858e80ff1294ec53e2390498" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 154; y: 94 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 153; y: 95 + modifiers: 0 + sendToViewport: true } Frame { msec: 6576 - hash: "54ea64058da3f2d9942185cff8f1701a" + hash: "287470e6cf9bd4b9acfd1cd1512307e3" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 152; y: 95 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 151; y: 95 + modifiers: 0 + sendToViewport: true } Frame { msec: 6592 - hash: "4537333bda52e966ba876f00f9cc2cd2" + hash: "4086c7c7a573a1b9f98d22ebf9b46c5f" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 149; y: 95 + modifiers: 0 + sendToViewport: true } Frame { msec: 6608 - hash: "94ace3be42f05ff66d64dbf7b107223b" + hash: "7d0868f000a1102916720a29a332543f" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 148; y: 96 + modifiers: 0 + sendToViewport: true } Frame { msec: 6624 - hash: "d971f4158db77baf1c9e089c9687b831" + hash: "bda3cfdca81f7cba54514c512eb6b12e" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 146; y: 96 + modifiers: 0 + sendToViewport: true } Frame { msec: 6640 - hash: "527d3bb96498cf676290438c3cc242cc" + hash: "923ff9fac39c3fba2c9cf7b52fc652ad" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 145; y: 97 + modifiers: 0 + sendToViewport: true } Frame { msec: 6656 - hash: "98b27b167e6f2d1c82221fbca9e27293" + hash: "269718e3586affbbdf0b9599e12f5677" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 145; y: 97 + modifiers: 0 + sendToViewport: true } Frame { msec: 6672 - hash: "95f7f83379a6efa08dcab31042db54c8" + hash: "d12e03b5da6ea7b162d7dec6930c1a54" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 144; y: 97 + modifiers: 0 + sendToViewport: true } Frame { msec: 6688 - hash: "4c48e1a6e690d2066ede0997e7c3d9f0" + hash: "96edf1f15c674c5d8c4e4ce9e1d34f1d" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 144; y: 97 + modifiers: 0 + sendToViewport: true } Frame { msec: 6704 - hash: "0269247254bb871f565aaae9764a7e4f" + hash: "70ce229fae6985dd49de8cca01c031e6" } Frame { msec: 6720 image: "cursorDelegate.6.png" } + Mouse { + type: 3 + button: 1 + buttons: 0 + x: 144; y: 97 + modifiers: 0 + sendToViewport: true + } Frame { msec: 6736 - hash: "ab836e909ad5ef3aba8e26f5e38dd5f7" + hash: "56215b7d24ac382ff1ed256c80d14091" } Frame { msec: 6752 - hash: "13a0d2b27d624ec3e178412294b60607" + hash: "ac132304e072806431803d26e345b264" } Frame { msec: 6768 - hash: "8afd8daffb34efd8c875ede669953199" + hash: "a8f3e7fbb95ed8fe2b83871eb3d2c151" } Frame { msec: 6784 - hash: "effed4e7f709e09f02c9261381199fc1" + hash: "43906030c2572af0f8f0577dbc86e346" } Frame { msec: 6800 - hash: "70389553a2229b7ef381a6d6c96c0d12" + hash: "d64b58801430d5063225dceac1603bca" } Frame { msec: 6816 - hash: "fd6e25f0a05e0e0e20f3190230091c4c" + hash: "56b81435dc4ce193bb98c3d02c781242" } Frame { msec: 6832 - hash: "b811734467cc1dcc439413ff5311d84d" + hash: "a33dce3c55b1b1541cfb9b85a75fcb53" } Frame { msec: 6848 - hash: "e6a4d038614266483749fe4be0f8872b" + hash: "6f7411363c66d0959ea5a16a9b610e61" } Frame { msec: 6864 - hash: "1a18927369d88f49b5a67f7dc24496e0" + hash: "fb7ad9156658f3866d19e43f006cf013" } Frame { msec: 6880 - hash: "4491c5228f407fbc77a4c92a17cb2602" + hash: "fca865f762c1a6cc3e487e0e908eef73" } Frame { msec: 6896 - hash: "f14b8696c75e0e4f1dc6bc06a7fb19fb" + hash: "3d78320cb021944d7c6cee1a42056663" } Frame { msec: 6912 - hash: "6c03c5a66af0b00db5dc509ed686c331" + hash: "1e3f580f37a0dc063a383bdf435e85ea" } Frame { msec: 6928 - hash: "4c8ae787ca4a3b327f012d790341788c" - } - Key { - type: 6 - key: 16777248 - modifiers: 33554432 - text: "" - autorep: false - count: 1 + hash: "75e854ccaad087bfe776a843f0bd7284" } Frame { msec: 6944 - hash: "142236f178fa7b0c314de8106e7b3a90" + hash: "ad65de5a6887c0a31a9d8f72a2a651db" } Frame { msec: 6960 - hash: "11c72fc6dc63c666a296965aa90a0d64" + hash: "62bc9c57724f7ab6bcf7d75d8ff68097" } Frame { msec: 6976 - hash: "60edce44dd4ca7fac8d8093990ee5ec1" + hash: "00dfc5f4468482cb5f74e62be235b1d2" } Frame { msec: 6992 @@ -1986,179 +3018,155 @@ VisualTest { } Frame { msec: 7072 - hash: "11c72fc6dc63c666a296965aa90a0d64" + hash: "60edce44dd4ca7fac8d8093990ee5ec1" } Frame { msec: 7088 - hash: "142236f178fa7b0c314de8106e7b3a90" + hash: "00dfc5f4468482cb5f74e62be235b1d2" } Frame { msec: 7104 - hash: "4c8ae787ca4a3b327f012d790341788c" + hash: "62bc9c57724f7ab6bcf7d75d8ff68097" } Frame { msec: 7120 - hash: "6c03c5a66af0b00db5dc509ed686c331" + hash: "ad65de5a6887c0a31a9d8f72a2a651db" } Frame { msec: 7136 - hash: "f14b8696c75e0e4f1dc6bc06a7fb19fb" + hash: "75e854ccaad087bfe776a843f0bd7284" } Frame { msec: 7152 - hash: "4491c5228f407fbc77a4c92a17cb2602" - } - Key { - type: 6 - key: 33 - modifiers: 33554432 - text: "21" - autorep: false - count: 1 + hash: "1e3f580f37a0dc063a383bdf435e85ea" } Frame { msec: 7168 - hash: "0ba12ed7cfb4a67604c4725570486588" + hash: "3d78320cb021944d7c6cee1a42056663" } Frame { msec: 7184 - hash: "6361cc7629949f0c178485488ee1774c" + hash: "fca865f762c1a6cc3e487e0e908eef73" } Frame { msec: 7200 - hash: "ca5e4f87029873fa2417da6b7ca7dec3" + hash: "fb7ad9156658f3866d19e43f006cf013" } Frame { msec: 7216 - hash: "380ee1b7aa7e79b00891b888853cb38c" + hash: "6f7411363c66d0959ea5a16a9b610e61" } Frame { msec: 7232 - hash: "79adead91b4e60051cc4867a3604627f" + hash: "a33dce3c55b1b1541cfb9b85a75fcb53" } Frame { msec: 7248 - hash: "b160235692af4e85a573bbe5be767ce5" + hash: "56b81435dc4ce193bb98c3d02c781242" } Frame { msec: 7264 - hash: "c941ed3f402c4261161bbc8a51014f5b" + hash: "d64b58801430d5063225dceac1603bca" } Frame { msec: 7280 - hash: "500d618cde448896cf948a7c531b0ec2" - } - Key { - type: 7 - key: 33 - modifiers: 33554432 - text: "21" - autorep: false - count: 1 + hash: "43906030c2572af0f8f0577dbc86e346" } Frame { msec: 7296 - hash: "f0f090831d1e6f24c01bb33cefbf4e4c" + hash: "a8f3e7fbb95ed8fe2b83871eb3d2c151" } Frame { msec: 7312 - hash: "3b9454a1e81eed3cbd58ba07ffdc02fa" + hash: "ac132304e072806431803d26e345b264" } Frame { msec: 7328 - hash: "1a0093f61a5cb3d984f6c83fa1d37cc1" + hash: "56215b7d24ac382ff1ed256c80d14091" } Frame { msec: 7344 - hash: "79c35556aa06aacd01f03600dc849e18" + hash: "4d5c97925b21d699f1c3720a3f51ebbb" } Frame { msec: 7360 - hash: "f55fbea8c275c6dc8a97ac98657dbe51" + hash: "70ce229fae6985dd49de8cca01c031e6" } Frame { msec: 7376 - hash: "3db59e0b0131043148efa87a73e0a97a" + hash: "96edf1f15c674c5d8c4e4ce9e1d34f1d" } Frame { msec: 7392 - hash: "f259933ba4cf12f7d16f77d1a6cb5458" + hash: "d12e03b5da6ea7b162d7dec6930c1a54" } Frame { msec: 7408 - hash: "03f94d5e55aeada908ac8b8e42838f2b" + hash: "269718e3586affbbdf0b9599e12f5677" } Frame { msec: 7424 - hash: "3f3efb5796d82a1c53a9df877fd0811a" + hash: "42d19ea6dd328c505da5a4eee23a257d" } Frame { msec: 7440 - hash: "b6cc63f6a70e0d17d883503633b0d1d4" + hash: "e4d9d77859759dd95cf3ffee8f142cd8" } Frame { msec: 7456 - hash: "001ace4fccee24150ffdbeb53be8f629" + hash: "445e4c6e9872b63a1461e3277dd8185c" } Frame { msec: 7472 - hash: "b3ba8bbc9942ad27322105b1a2ab02ca" + hash: "d6343c629acd987179eae0d158d2504c" } Frame { msec: 7488 - hash: "657fcf877ee8794939ed72e74b935bc2" + hash: "a5340087baa2c3694ed0cc2bbc3e2ad9" } Frame { msec: 7504 - hash: "0911fbe26bb2e2dcbb3bb3673c0ea68c" + hash: "205973c30aaca71d1f20e740ce971d82" } Frame { msec: 7520 - hash: "98d2bd0370c3f42d477cfeab2e203d19" + hash: "ed28c7e07755e177222c7e322116bfb4" } Frame { msec: 7536 - hash: "cb5ef5e46e9259965b2066e478380f80" - } - Key { - type: 7 - key: 16777248 - modifiers: 0 - text: "" - autorep: false - count: 1 + hash: "6cebfc407a985694c803940608ab1303" } Frame { msec: 7552 - hash: "a61caba79c9a5303f5f02efb6f3327d0" + hash: "87f825fc820d3942e4d9b5ece5be3714" } Frame { msec: 7568 - hash: "1a63b48e70515c175e968d0c8eee7774" + hash: "9aa56dfe90ed2eba58eee0ff6ff3822c" } Frame { msec: 7584 - hash: "b75188cbb703710bc2a15dde67362352" + hash: "c93acf87a918f21a55cf39ea255315a3" } Frame { msec: 7600 - hash: "adf2eb813d2528a9ec4431f87077fa59" + hash: "f8ce1bec5d5016c56fc66d52c28e69d1" } Frame { msec: 7616 - hash: "ed5ddb352c3738c0130be7160b8bbcba" + hash: "a365dba2f7c4be77ea98b727813c2f03" } Frame { msec: 7632 - hash: "957a2366fb86a5a0ae6900eec3efcf0f" + hash: "e8d1c35ee9ef74c4070adfce5e4560f1" } Frame { msec: 7648 - hash: "3399f92c90e107ad77c46f63dd30ae35" + hash: "f5f2dbb041eeb4de1821761f4fbca506" } Frame { msec: 7664 - hash: "5bea888d8053eee723d6bb9a5629e33d" + hash: "f4ea6e9dff51778e9b5d1321453617ec" } Frame { msec: 7680 @@ -2166,239 +3174,255 @@ VisualTest { } Frame { msec: 7696 - hash: "55a6ae6a8da11f4e842e5fa53bed00fc" + hash: "f2869791dde1eb4c2ea24e04dc3ac653" } Frame { msec: 7712 - hash: "d5034694ccc80df660ee6f962876884f" + hash: "9bd70e91b765de22b70fe295adc4f87f" } Frame { msec: 7728 - hash: "1584572ae41aa0286d706650eb776db5" + hash: "c0338d0a5c72ba63bff666a76ab3242c" + } + Mouse { + type: 2 + button: 1 + buttons: 1 + x: 227; y: 114 + modifiers: 0 + sendToViewport: true } Frame { msec: 7744 - hash: "52df591a6ef5d12859ed468df0cc2c54" + hash: "cb2a643eed9b5658260e04495820cd3d" } Frame { msec: 7760 - hash: "25390964f5c9fb11cc43c9076cb7c74a" + hash: "6dda51f2e611b1f589c75820fd8c7295" + } + Mouse { + type: 3 + button: 1 + buttons: 0 + x: 227; y: 114 + modifiers: 0 + sendToViewport: true } Frame { msec: 7776 - hash: "371943abdfdf79436ba9cc969ec6a6cd" + hash: "98d8692afd47c61421ddcae62414a72e" } Frame { msec: 7792 - hash: "0ed089fc520408b49b9bf3f5825af8a0" + hash: "2c533bcdd9df45c6f942d47509ebf20e" } Frame { msec: 7808 - hash: "3d5930a5283a549f2410d3c5d5af2f70" + hash: "d28f231fb1e128329e8985689deac882" } Frame { msec: 7824 - hash: "a96a572cff6ceb9e940374b997dfee26" + hash: "ea73450baf98a2f629ce1c203cfcd728" } Frame { msec: 7840 - hash: "6a2a95c4a346e71060e52a4f7bdd6fb7" + hash: "959a31d38edc343b5e081fd0cddc81df" } Frame { msec: 7856 - hash: "200decb91b8e9094e0fea1f255f76f82" + hash: "9b1ae10ee8e9b3f176357733af9e6735" } Frame { msec: 7872 - hash: "6cc952cbf10e3903479420e40b8a6fd5" + hash: "89b0dd11f456bbb321e0bd2e1614c193" } Frame { msec: 7888 - hash: "a6297f64682519d5b4d845c92941051b" + hash: "a0a3aa6d8d4c677894e745ee432084e2" } Frame { msec: 7904 - hash: "1ae93dbbfe0645558bd92bacec44ccf8" + hash: "f63207b8903085b19de1c9b6a9ff90e0" } Frame { msec: 7920 - hash: "a720efe3da29677e12ebcdd5ed459379" + hash: "c8f2126fece8c2b473c6511aa568dddb" } Frame { msec: 7936 - hash: "aeed42bf877c6d58726943433d3aff16" + hash: "6ccd1f30e85dbad74468c228d92a9a3c" } Frame { msec: 7952 - hash: "0ee38db069436e2d931f2903517f39d1" + hash: "bae09fe9f29e0f6ebda298cae753ddab" } Frame { msec: 7968 - hash: "4fd7a301ecff3c70a34966e8faed7a51" + hash: "cde4abae868488345fb124b927f46b45" } Frame { msec: 7984 - hash: "2da5645eac95aeab33f8348c4a299773" + hash: "a88ccf9c8ae34ffcfd15af4e66102040" } Frame { msec: 8000 - hash: "2da5645eac95aeab33f8348c4a299773" + hash: "60edce44dd4ca7fac8d8093990ee5ec1" } Frame { msec: 8016 - hash: "2da5645eac95aeab33f8348c4a299773" + hash: "60edce44dd4ca7fac8d8093990ee5ec1" } Frame { msec: 8032 - hash: "2da5645eac95aeab33f8348c4a299773" + hash: "60edce44dd4ca7fac8d8093990ee5ec1" } Frame { msec: 8048 - hash: "2da5645eac95aeab33f8348c4a299773" + hash: "60edce44dd4ca7fac8d8093990ee5ec1" } Frame { msec: 8064 - hash: "4fd7a301ecff3c70a34966e8faed7a51" + hash: "60edce44dd4ca7fac8d8093990ee5ec1" } Frame { msec: 8080 - hash: "0ee38db069436e2d931f2903517f39d1" + hash: "a88ccf9c8ae34ffcfd15af4e66102040" } Frame { msec: 8096 - hash: "aeed42bf877c6d58726943433d3aff16" + hash: "cde4abae868488345fb124b927f46b45" } Frame { msec: 8112 - hash: "a720efe3da29677e12ebcdd5ed459379" + hash: "bae09fe9f29e0f6ebda298cae753ddab" } Frame { msec: 8128 - hash: "1ae93dbbfe0645558bd92bacec44ccf8" + hash: "6ccd1f30e85dbad74468c228d92a9a3c" } Frame { msec: 8144 - hash: "a6297f64682519d5b4d845c92941051b" + hash: "c8f2126fece8c2b473c6511aa568dddb" } Frame { msec: 8160 - hash: "6cc952cbf10e3903479420e40b8a6fd5" + hash: "f63207b8903085b19de1c9b6a9ff90e0" } Frame { msec: 8176 - hash: "200decb91b8e9094e0fea1f255f76f82" + hash: "a0a3aa6d8d4c677894e745ee432084e2" } Frame { msec: 8192 - hash: "6a2a95c4a346e71060e52a4f7bdd6fb7" + hash: "89b0dd11f456bbb321e0bd2e1614c193" } Frame { msec: 8208 - hash: "a96a572cff6ceb9e940374b997dfee26" + hash: "9b1ae10ee8e9b3f176357733af9e6735" } Frame { msec: 8224 - hash: "3d5930a5283a549f2410d3c5d5af2f70" + hash: "959a31d38edc343b5e081fd0cddc81df" } Frame { msec: 8240 - hash: "0ed089fc520408b49b9bf3f5825af8a0" + hash: "ea73450baf98a2f629ce1c203cfcd728" } Frame { msec: 8256 - hash: "371943abdfdf79436ba9cc969ec6a6cd" + hash: "d28f231fb1e128329e8985689deac882" } Frame { msec: 8272 - hash: "25390964f5c9fb11cc43c9076cb7c74a" + hash: "2c533bcdd9df45c6f942d47509ebf20e" } Frame { msec: 8288 - hash: "52df591a6ef5d12859ed468df0cc2c54" + hash: "98d8692afd47c61421ddcae62414a72e" } Frame { msec: 8304 - hash: "1584572ae41aa0286d706650eb776db5" + hash: "6dda51f2e611b1f589c75820fd8c7295" } Frame { msec: 8320 - hash: "d5034694ccc80df660ee6f962876884f" + hash: "cb2a643eed9b5658260e04495820cd3d" } Frame { msec: 8336 - hash: "55a6ae6a8da11f4e842e5fa53bed00fc" + hash: "88afd2fa1182fbb2aab100d4587a1006" } Frame { msec: 8352 - hash: "8eaecafeaa1c034c7aae451e5ed26c01" + hash: "bc657c5181a11a9ff9565f134bdccb8d" } Frame { msec: 8368 - hash: "5bea888d8053eee723d6bb9a5629e33d" + hash: "a296634d814a6e12f9d09f4d8a9fa097" } Frame { msec: 8384 - hash: "3399f92c90e107ad77c46f63dd30ae35" + hash: "f05a2deeb12722904c4f31d641dffeb4" } Frame { msec: 8400 - hash: "957a2366fb86a5a0ae6900eec3efcf0f" + hash: "75823698247e39dd10a70fe224e13597" } Frame { msec: 8416 - hash: "ed5ddb352c3738c0130be7160b8bbcba" + hash: "244fa06c168f7a7401b8ec7f5ddb0e52" } Frame { msec: 8432 - hash: "adf2eb813d2528a9ec4431f87077fa59" + hash: "a78e0f88d269290e9086d1d854618f0c" } Frame { msec: 8448 - hash: "b75188cbb703710bc2a15dde67362352" + hash: "57b1281d29d5c5fdc15d9cf1e3a5545c" } Frame { msec: 8464 - hash: "1a63b48e70515c175e968d0c8eee7774" + hash: "a24ac211ef29dcf7f22ac95991f1af3f" } Frame { msec: 8480 - hash: "a61caba79c9a5303f5f02efb6f3327d0" + hash: "361f978ea3597fd518c25c0069c22e8b" } Frame { msec: 8496 - hash: "cb5ef5e46e9259965b2066e478380f80" + hash: "ac8e2c01eb58aac0eb4feb6aba9b9628" } Frame { msec: 8512 - hash: "98d2bd0370c3f42d477cfeab2e203d19" + hash: "6099612934b5eb90296f1cc3cb5c1a84" } Frame { msec: 8528 - hash: "0911fbe26bb2e2dcbb3bb3673c0ea68c" + hash: "7c3f08291168065fc9c1d62108022d33" } Frame { msec: 8544 - hash: "657fcf877ee8794939ed72e74b935bc2" + hash: "8bf57ba445d668af5f3e59276c4f8800" } Frame { msec: 8560 - hash: "b3ba8bbc9942ad27322105b1a2ab02ca" + hash: "c8ed352cbfbc472ea4802a9e03d40052" } Frame { msec: 8576 - hash: "001ace4fccee24150ffdbeb53be8f629" + hash: "11e5546b30e47d2f3067c0364b9f0877" } Frame { msec: 8592 - hash: "b6cc63f6a70e0d17d883503633b0d1d4" + hash: "9df0f136fca92d4a05f17ee68f0cd286" } Frame { msec: 8608 - hash: "3f3efb5796d82a1c53a9df877fd0811a" + hash: "39f47838a622ba328548cad57cca9e12" } Frame { msec: 8624 - hash: "03f94d5e55aeada908ac8b8e42838f2b" + hash: "c891d582be4b23c01e29032fe861081f" } Frame { msec: 8640 @@ -2406,202 +3430,126 @@ VisualTest { } Frame { msec: 8656 - hash: "3db59e0b0131043148efa87a73e0a97a" + hash: "c3820dfd382c4568d9fbd2ee95889eda" } Frame { msec: 8672 - hash: "f55fbea8c275c6dc8a97ac98657dbe51" + hash: "528cf8778318bf7216b54f983dadb2b4" } Frame { msec: 8688 - hash: "79c35556aa06aacd01f03600dc849e18" + hash: "419518a3c63aa36f6070e95eb93e58a3" } Frame { msec: 8704 - hash: "1a0093f61a5cb3d984f6c83fa1d37cc1" + hash: "11b22e2853c0a9ea6e4ac764348698c9" } Frame { msec: 8720 - hash: "3b9454a1e81eed3cbd58ba07ffdc02fa" + hash: "8018329c4b57647942ae34a5f83c2b12" } Frame { msec: 8736 - hash: "f0f090831d1e6f24c01bb33cefbf4e4c" + hash: "c37e9fd5c3d664c2e4911c8cb9fcabf7" } Frame { msec: 8752 - hash: "500d618cde448896cf948a7c531b0ec2" + hash: "4e7895f802c9fc249894ba0db25959f7" } Frame { msec: 8768 - hash: "c941ed3f402c4261161bbc8a51014f5b" + hash: "5fed71d99ef70432bc6be8caaea36f17" } Frame { msec: 8784 - hash: "b160235692af4e85a573bbe5be767ce5" + hash: "69976d074acbd7a5731c70b33c8f084b" } Frame { msec: 8800 - hash: "79adead91b4e60051cc4867a3604627f" + hash: "c88952348da3df0627b12b8bb05ca13e" } Frame { msec: 8816 - hash: "380ee1b7aa7e79b00891b888853cb38c" + hash: "cc5222da7a17c66d4db146c406492701" } Frame { msec: 8832 - hash: "ca5e4f87029873fa2417da6b7ca7dec3" + hash: "8915e752776da27cb86019c9decc8a8c" } Frame { msec: 8848 - hash: "6361cc7629949f0c178485488ee1774c" + hash: "d8a77ccc7c01cf187e846a2903e1c55e" } Frame { msec: 8864 - hash: "0ba12ed7cfb4a67604c4725570486588" + hash: "3cf3f02f98a199c81ef73e8905e7f7ee" } Frame { msec: 8880 - hash: "e773813cfb7d1328f46a5201bec45fd7" + hash: "7a1d47e0109fc370bf63714040cbef96" } Frame { msec: 8896 - hash: "38a5b5753458aca936a2baf99e156bbb" + hash: "2ca8b8ddbe73b29327e474da34a14a87" } Frame { msec: 8912 - hash: "0772cea653bbe61bc4b27ad961f69dd9" + hash: "ee75214865fca848aa38cc05b6049d8f" } Frame { msec: 8928 - hash: "d489700122863613124460f5ed8676b0" + hash: "05ab7d8118a806f2215160f5f266a082" } Frame { msec: 8944 - hash: "9ccde8669704e34c2f9c17a4dbd07cbe" + hash: "31e63095b7be56d0bf75e9cff832feb7" } Frame { msec: 8960 - hash: "2b330ad269da858d0e0227938c8d247d" + hash: "3ffda2c2f154f1eb806e9f0963057fa1" } Frame { msec: 8976 - hash: "2da5645eac95aeab33f8348c4a299773" + hash: "4e805203b58e8f6f331f2e878704fa01" } Frame { msec: 8992 - hash: "2da5645eac95aeab33f8348c4a299773" + hash: "60edce44dd4ca7fac8d8093990ee5ec1" } Frame { msec: 9008 - hash: "2da5645eac95aeab33f8348c4a299773" + hash: "60edce44dd4ca7fac8d8093990ee5ec1" } Frame { msec: 9024 - hash: "2da5645eac95aeab33f8348c4a299773" + hash: "60edce44dd4ca7fac8d8093990ee5ec1" } Frame { msec: 9040 - hash: "2da5645eac95aeab33f8348c4a299773" + hash: "60edce44dd4ca7fac8d8093990ee5ec1" } Frame { msec: 9056 - hash: "2da5645eac95aeab33f8348c4a299773" + hash: "60edce44dd4ca7fac8d8093990ee5ec1" } Frame { msec: 9072 - hash: "2b330ad269da858d0e0227938c8d247d" + hash: "60edce44dd4ca7fac8d8093990ee5ec1" } Frame { msec: 9088 - hash: "9ccde8669704e34c2f9c17a4dbd07cbe" + hash: "4e805203b58e8f6f331f2e878704fa01" } Frame { msec: 9104 - hash: "d489700122863613124460f5ed8676b0" + hash: "3ffda2c2f154f1eb806e9f0963057fa1" } Frame { msec: 9120 - hash: "0772cea653bbe61bc4b27ad961f69dd9" + hash: "31e63095b7be56d0bf75e9cff832feb7" } Frame { msec: 9136 - hash: "38a5b5753458aca936a2baf99e156bbb" - } - Frame { - msec: 9152 - hash: "e773813cfb7d1328f46a5201bec45fd7" - } - Frame { - msec: 9168 - hash: "0ba12ed7cfb4a67604c4725570486588" - } - Frame { - msec: 9184 - hash: "6361cc7629949f0c178485488ee1774c" - } - Frame { - msec: 9200 - hash: "ca5e4f87029873fa2417da6b7ca7dec3" - } - Frame { - msec: 9216 - hash: "380ee1b7aa7e79b00891b888853cb38c" - } - Frame { - msec: 9232 - hash: "79adead91b4e60051cc4867a3604627f" - } - Frame { - msec: 9248 - hash: "b160235692af4e85a573bbe5be767ce5" - } - Frame { - msec: 9264 - hash: "c941ed3f402c4261161bbc8a51014f5b" - } - Frame { - msec: 9280 - hash: "500d618cde448896cf948a7c531b0ec2" - } - Frame { - msec: 9296 - hash: "f0f090831d1e6f24c01bb33cefbf4e4c" - } - Frame { - msec: 9312 - hash: "3b9454a1e81eed3cbd58ba07ffdc02fa" - } - Frame { - msec: 9328 - hash: "1a0093f61a5cb3d984f6c83fa1d37cc1" - } - Frame { - msec: 9344 - hash: "79c35556aa06aacd01f03600dc849e18" - } - Frame { - msec: 9360 - hash: "f55fbea8c275c6dc8a97ac98657dbe51" - } - Frame { - msec: 9376 - hash: "3db59e0b0131043148efa87a73e0a97a" - } - Frame { - msec: 9392 - hash: "f259933ba4cf12f7d16f77d1a6cb5458" - } - Frame { - msec: 9408 - hash: "03f94d5e55aeada908ac8b8e42838f2b" - } - Frame { - msec: 9424 - hash: "3f3efb5796d82a1c53a9df877fd0811a" - } - Frame { - msec: 9440 - hash: "b6cc63f6a70e0d17d883503633b0d1d4" + hash: "05ab7d8118a806f2215160f5f266a082" } } diff --git a/tests/auto/declarative/visual/qmlgraphicstextedit/data/qt-669.0.png b/tests/auto/declarative/visual/qmlgraphicstextedit/data/qt-669.0.png Binary files differindex cd2f112..95a835a 100644 --- a/tests/auto/declarative/visual/qmlgraphicstextedit/data/qt-669.0.png +++ b/tests/auto/declarative/visual/qmlgraphicstextedit/data/qt-669.0.png diff --git a/tests/auto/declarative/visual/qmlgraphicstextedit/data/qt-669.1.png b/tests/auto/declarative/visual/qmlgraphicstextedit/data/qt-669.1.png Binary files differindex 95a835a..409192c 100644 --- a/tests/auto/declarative/visual/qmlgraphicstextedit/data/qt-669.1.png +++ b/tests/auto/declarative/visual/qmlgraphicstextedit/data/qt-669.1.png diff --git a/tests/auto/declarative/visual/qmlgraphicstextedit/data/qt-669.2.png b/tests/auto/declarative/visual/qmlgraphicstextedit/data/qt-669.2.png Binary files differindex 409192c..cd2f112 100644 --- a/tests/auto/declarative/visual/qmlgraphicstextedit/data/qt-669.2.png +++ b/tests/auto/declarative/visual/qmlgraphicstextedit/data/qt-669.2.png diff --git a/tests/auto/declarative/visual/qmlgraphicstextedit/data/qt-669.3.png b/tests/auto/declarative/visual/qmlgraphicstextedit/data/qt-669.3.png Binary files differindex 409192c..7191c1e 100644 --- a/tests/auto/declarative/visual/qmlgraphicstextedit/data/qt-669.3.png +++ b/tests/auto/declarative/visual/qmlgraphicstextedit/data/qt-669.3.png diff --git a/tests/auto/declarative/visual/qmlgraphicstextedit/data/qt-669.4.png b/tests/auto/declarative/visual/qmlgraphicstextedit/data/qt-669.4.png Binary files differdeleted file mode 100644 index 95a835a..0000000 --- a/tests/auto/declarative/visual/qmlgraphicstextedit/data/qt-669.4.png +++ /dev/null diff --git a/tests/auto/declarative/visual/qmlgraphicstextedit/data/qt-669.5.png b/tests/auto/declarative/visual/qmlgraphicstextedit/data/qt-669.5.png Binary files differdeleted file mode 100644 index 249e843..0000000 --- a/tests/auto/declarative/visual/qmlgraphicstextedit/data/qt-669.5.png +++ /dev/null diff --git a/tests/auto/declarative/visual/qmlgraphicstextedit/data/qt-669.6.png b/tests/auto/declarative/visual/qmlgraphicstextedit/data/qt-669.6.png Binary files differdeleted file mode 100644 index 7191c1e..0000000 --- a/tests/auto/declarative/visual/qmlgraphicstextedit/data/qt-669.6.png +++ /dev/null diff --git a/tests/auto/declarative/visual/qmlgraphicstextedit/data/qt-669.qml b/tests/auto/declarative/visual/qmlgraphicstextedit/data/qt-669.qml index 5c64a9a..352c890 100644 --- a/tests/auto/declarative/visual/qmlgraphicstextedit/data/qt-669.qml +++ b/tests/auto/declarative/visual/qmlgraphicstextedit/data/qt-669.qml @@ -100,50 +100,6 @@ VisualTest { msec: 384 hash: "4e0ce00bde70a96774a6477ef2305b7f" } - Frame { - msec: 400 - hash: "4e0ce00bde70a96774a6477ef2305b7f" - } - Frame { - msec: 416 - hash: "4e0ce00bde70a96774a6477ef2305b7f" - } - Frame { - msec: 432 - hash: "4e0ce00bde70a96774a6477ef2305b7f" - } - Frame { - msec: 448 - hash: "4e0ce00bde70a96774a6477ef2305b7f" - } - Frame { - msec: 464 - hash: "4e0ce00bde70a96774a6477ef2305b7f" - } - Frame { - msec: 480 - hash: "4e0ce00bde70a96774a6477ef2305b7f" - } - Frame { - msec: 496 - hash: "4e0ce00bde70a96774a6477ef2305b7f" - } - Frame { - msec: 512 - hash: "4e0ce00bde70a96774a6477ef2305b7f" - } - Frame { - msec: 528 - hash: "4e0ce00bde70a96774a6477ef2305b7f" - } - Frame { - msec: 544 - hash: "4e0ce00bde70a96774a6477ef2305b7f" - } - Frame { - msec: 560 - hash: "4e0ce00bde70a96774a6477ef2305b7f" - } Key { type: 6 key: 16777236 @@ -153,27 +109,15 @@ VisualTest { count: 1 } Frame { - msec: 576 - hash: "10573e4c9dab5bd6e46ec79949c098e5" - } - Frame { - msec: 592 - hash: "10573e4c9dab5bd6e46ec79949c098e5" - } - Frame { - msec: 608 - hash: "10573e4c9dab5bd6e46ec79949c098e5" - } - Frame { - msec: 624 + msec: 400 hash: "10573e4c9dab5bd6e46ec79949c098e5" } Frame { - msec: 640 + msec: 416 hash: "10573e4c9dab5bd6e46ec79949c098e5" } Frame { - msec: 656 + msec: 432 hash: "10573e4c9dab5bd6e46ec79949c098e5" } Key { @@ -185,51 +129,27 @@ VisualTest { count: 1 } Frame { - msec: 672 - hash: "10573e4c9dab5bd6e46ec79949c098e5" - } - Frame { - msec: 688 - hash: "10573e4c9dab5bd6e46ec79949c098e5" - } - Frame { - msec: 704 - hash: "10573e4c9dab5bd6e46ec79949c098e5" - } - Frame { - msec: 720 - hash: "10573e4c9dab5bd6e46ec79949c098e5" - } - Frame { - msec: 736 - hash: "10573e4c9dab5bd6e46ec79949c098e5" - } - Frame { - msec: 752 - hash: "10573e4c9dab5bd6e46ec79949c098e5" - } - Frame { - msec: 768 + msec: 448 hash: "10573e4c9dab5bd6e46ec79949c098e5" } Frame { - msec: 784 + msec: 464 hash: "10573e4c9dab5bd6e46ec79949c098e5" } Frame { - msec: 800 + msec: 480 hash: "10573e4c9dab5bd6e46ec79949c098e5" } Frame { - msec: 816 + msec: 496 hash: "10573e4c9dab5bd6e46ec79949c098e5" } Frame { - msec: 832 + msec: 512 hash: "10573e4c9dab5bd6e46ec79949c098e5" } Frame { - msec: 848 + msec: 528 hash: "10573e4c9dab5bd6e46ec79949c098e5" } Key { @@ -241,23 +161,15 @@ VisualTest { count: 1 } Frame { - msec: 864 - hash: "394360c0bff5ee3ad206d2911838d64e" - } - Frame { - msec: 880 - hash: "394360c0bff5ee3ad206d2911838d64e" - } - Frame { - msec: 896 + msec: 544 hash: "394360c0bff5ee3ad206d2911838d64e" } Frame { - msec: 912 + msec: 560 hash: "394360c0bff5ee3ad206d2911838d64e" } Frame { - msec: 928 + msec: 576 hash: "394360c0bff5ee3ad206d2911838d64e" } Key { @@ -269,63 +181,27 @@ VisualTest { count: 1 } Frame { - msec: 944 - hash: "394360c0bff5ee3ad206d2911838d64e" - } - Frame { - msec: 960 - image: "qt-669.0.png" - } - Frame { - msec: 976 - hash: "394360c0bff5ee3ad206d2911838d64e" - } - Frame { - msec: 992 - hash: "394360c0bff5ee3ad206d2911838d64e" - } - Frame { - msec: 1008 - hash: "394360c0bff5ee3ad206d2911838d64e" - } - Frame { - msec: 1024 - hash: "394360c0bff5ee3ad206d2911838d64e" - } - Frame { - msec: 1040 - hash: "394360c0bff5ee3ad206d2911838d64e" - } - Frame { - msec: 1056 - hash: "394360c0bff5ee3ad206d2911838d64e" - } - Frame { - msec: 1072 - hash: "394360c0bff5ee3ad206d2911838d64e" - } - Frame { - msec: 1088 + msec: 592 hash: "394360c0bff5ee3ad206d2911838d64e" } Frame { - msec: 1104 + msec: 608 hash: "394360c0bff5ee3ad206d2911838d64e" } Frame { - msec: 1120 + msec: 624 hash: "394360c0bff5ee3ad206d2911838d64e" } Frame { - msec: 1136 + msec: 640 hash: "394360c0bff5ee3ad206d2911838d64e" } Frame { - msec: 1152 + msec: 656 hash: "394360c0bff5ee3ad206d2911838d64e" } Frame { - msec: 1168 + msec: 672 hash: "394360c0bff5ee3ad206d2911838d64e" } Key { @@ -337,27 +213,19 @@ VisualTest { count: 1 } Frame { - msec: 1184 - hash: "3c455f51fea0926576077d55d6fbfbb2" - } - Frame { - msec: 1200 - hash: "3c455f51fea0926576077d55d6fbfbb2" - } - Frame { - msec: 1216 + msec: 688 hash: "3c455f51fea0926576077d55d6fbfbb2" } Frame { - msec: 1232 + msec: 704 hash: "3c455f51fea0926576077d55d6fbfbb2" } Frame { - msec: 1248 + msec: 720 hash: "3c455f51fea0926576077d55d6fbfbb2" } Frame { - msec: 1264 + msec: 736 hash: "3c455f51fea0926576077d55d6fbfbb2" } Key { @@ -369,59 +237,23 @@ VisualTest { count: 1 } Frame { - msec: 1280 - hash: "3c455f51fea0926576077d55d6fbfbb2" - } - Frame { - msec: 1296 - hash: "3c455f51fea0926576077d55d6fbfbb2" - } - Frame { - msec: 1312 - hash: "3c455f51fea0926576077d55d6fbfbb2" - } - Frame { - msec: 1328 - hash: "3c455f51fea0926576077d55d6fbfbb2" - } - Frame { - msec: 1344 - hash: "3c455f51fea0926576077d55d6fbfbb2" - } - Frame { - msec: 1360 - hash: "3c455f51fea0926576077d55d6fbfbb2" - } - Frame { - msec: 1376 - hash: "3c455f51fea0926576077d55d6fbfbb2" - } - Frame { - msec: 1392 - hash: "3c455f51fea0926576077d55d6fbfbb2" - } - Frame { - msec: 1408 - hash: "3c455f51fea0926576077d55d6fbfbb2" - } - Frame { - msec: 1424 + msec: 752 hash: "3c455f51fea0926576077d55d6fbfbb2" } Frame { - msec: 1440 + msec: 768 hash: "3c455f51fea0926576077d55d6fbfbb2" } Frame { - msec: 1456 + msec: 784 hash: "3c455f51fea0926576077d55d6fbfbb2" } Frame { - msec: 1472 + msec: 800 hash: "3c455f51fea0926576077d55d6fbfbb2" } Frame { - msec: 1488 + msec: 816 hash: "3c455f51fea0926576077d55d6fbfbb2" } Key { @@ -433,27 +265,19 @@ VisualTest { count: 1 } Frame { - msec: 1504 - hash: "c87aaf72137c2b9e8c876879e7215072" - } - Frame { - msec: 1520 - hash: "c87aaf72137c2b9e8c876879e7215072" - } - Frame { - msec: 1536 + msec: 832 hash: "c87aaf72137c2b9e8c876879e7215072" } Frame { - msec: 1552 + msec: 848 hash: "c87aaf72137c2b9e8c876879e7215072" } Frame { - msec: 1568 + msec: 864 hash: "c87aaf72137c2b9e8c876879e7215072" } Frame { - msec: 1584 + msec: 880 hash: "c87aaf72137c2b9e8c876879e7215072" } Key { @@ -465,59 +289,19 @@ VisualTest { count: 1 } Frame { - msec: 1600 - hash: "c87aaf72137c2b9e8c876879e7215072" - } - Frame { - msec: 1616 - hash: "c87aaf72137c2b9e8c876879e7215072" - } - Frame { - msec: 1632 - hash: "c87aaf72137c2b9e8c876879e7215072" - } - Frame { - msec: 1648 - hash: "c87aaf72137c2b9e8c876879e7215072" - } - Frame { - msec: 1664 - hash: "c87aaf72137c2b9e8c876879e7215072" - } - Frame { - msec: 1680 - hash: "c87aaf72137c2b9e8c876879e7215072" - } - Frame { - msec: 1696 - hash: "c87aaf72137c2b9e8c876879e7215072" - } - Frame { - msec: 1712 - hash: "c87aaf72137c2b9e8c876879e7215072" - } - Frame { - msec: 1728 - hash: "c87aaf72137c2b9e8c876879e7215072" - } - Frame { - msec: 1744 - hash: "c87aaf72137c2b9e8c876879e7215072" - } - Frame { - msec: 1760 + msec: 896 hash: "c87aaf72137c2b9e8c876879e7215072" } Frame { - msec: 1776 + msec: 912 hash: "c87aaf72137c2b9e8c876879e7215072" } Frame { - msec: 1792 + msec: 928 hash: "c87aaf72137c2b9e8c876879e7215072" } Frame { - msec: 1808 + msec: 944 hash: "c87aaf72137c2b9e8c876879e7215072" } Key { @@ -529,27 +313,19 @@ VisualTest { count: 1 } Frame { - msec: 1824 - hash: "2caf044acf7aaf0af6a03e7b8180fa16" - } - Frame { - msec: 1840 - hash: "2caf044acf7aaf0af6a03e7b8180fa16" - } - Frame { - msec: 1856 - hash: "2caf044acf7aaf0af6a03e7b8180fa16" + msec: 960 + image: "qt-669.0.png" } Frame { - msec: 1872 + msec: 976 hash: "2caf044acf7aaf0af6a03e7b8180fa16" } Frame { - msec: 1888 + msec: 992 hash: "2caf044acf7aaf0af6a03e7b8180fa16" } Frame { - msec: 1904 + msec: 1008 hash: "2caf044acf7aaf0af6a03e7b8180fa16" } Key { @@ -561,59 +337,23 @@ VisualTest { count: 1 } Frame { - msec: 1920 - image: "qt-669.1.png" - } - Frame { - msec: 1936 - hash: "2caf044acf7aaf0af6a03e7b8180fa16" - } - Frame { - msec: 1952 - hash: "2caf044acf7aaf0af6a03e7b8180fa16" - } - Frame { - msec: 1968 - hash: "2caf044acf7aaf0af6a03e7b8180fa16" - } - Frame { - msec: 1984 - hash: "2caf044acf7aaf0af6a03e7b8180fa16" - } - Frame { - msec: 2000 - hash: "2caf044acf7aaf0af6a03e7b8180fa16" - } - Frame { - msec: 2016 - hash: "2caf044acf7aaf0af6a03e7b8180fa16" - } - Frame { - msec: 2032 - hash: "2caf044acf7aaf0af6a03e7b8180fa16" - } - Frame { - msec: 2048 - hash: "2caf044acf7aaf0af6a03e7b8180fa16" - } - Frame { - msec: 2064 + msec: 1024 hash: "2caf044acf7aaf0af6a03e7b8180fa16" } Frame { - msec: 2080 + msec: 1040 hash: "2caf044acf7aaf0af6a03e7b8180fa16" } Frame { - msec: 2096 + msec: 1056 hash: "2caf044acf7aaf0af6a03e7b8180fa16" } Frame { - msec: 2112 + msec: 1072 hash: "2caf044acf7aaf0af6a03e7b8180fa16" } Frame { - msec: 2128 + msec: 1088 hash: "2caf044acf7aaf0af6a03e7b8180fa16" } Key { @@ -625,27 +365,15 @@ VisualTest { count: 1 } Frame { - msec: 2144 - hash: "c899e9d181860f682ba7275fa36f82a1" - } - Frame { - msec: 2160 - hash: "c899e9d181860f682ba7275fa36f82a1" - } - Frame { - msec: 2176 - hash: "c899e9d181860f682ba7275fa36f82a1" - } - Frame { - msec: 2192 + msec: 1104 hash: "c899e9d181860f682ba7275fa36f82a1" } Frame { - msec: 2208 + msec: 1120 hash: "c899e9d181860f682ba7275fa36f82a1" } Frame { - msec: 2224 + msec: 1136 hash: "c899e9d181860f682ba7275fa36f82a1" } Key { @@ -657,55 +385,23 @@ VisualTest { count: 1 } Frame { - msec: 2240 - hash: "c899e9d181860f682ba7275fa36f82a1" - } - Frame { - msec: 2256 - hash: "c899e9d181860f682ba7275fa36f82a1" - } - Frame { - msec: 2272 - hash: "c899e9d181860f682ba7275fa36f82a1" - } - Frame { - msec: 2288 - hash: "c899e9d181860f682ba7275fa36f82a1" - } - Frame { - msec: 2304 - hash: "c899e9d181860f682ba7275fa36f82a1" - } - Frame { - msec: 2320 - hash: "c899e9d181860f682ba7275fa36f82a1" - } - Frame { - msec: 2336 - hash: "c899e9d181860f682ba7275fa36f82a1" - } - Frame { - msec: 2352 - hash: "c899e9d181860f682ba7275fa36f82a1" - } - Frame { - msec: 2368 + msec: 1152 hash: "c899e9d181860f682ba7275fa36f82a1" } Frame { - msec: 2384 + msec: 1168 hash: "c899e9d181860f682ba7275fa36f82a1" } Frame { - msec: 2400 + msec: 1184 hash: "c899e9d181860f682ba7275fa36f82a1" } Frame { - msec: 2416 + msec: 1200 hash: "c899e9d181860f682ba7275fa36f82a1" } Frame { - msec: 2432 + msec: 1216 hash: "c899e9d181860f682ba7275fa36f82a1" } Key { @@ -717,27 +413,19 @@ VisualTest { count: 1 } Frame { - msec: 2448 - hash: "1313880b796ae7134f50fa8dafa4a974" - } - Frame { - msec: 2464 - hash: "1313880b796ae7134f50fa8dafa4a974" - } - Frame { - msec: 2480 + msec: 1232 hash: "1313880b796ae7134f50fa8dafa4a974" } Frame { - msec: 2496 + msec: 1248 hash: "1313880b796ae7134f50fa8dafa4a974" } Frame { - msec: 2512 + msec: 1264 hash: "1313880b796ae7134f50fa8dafa4a974" } Frame { - msec: 2528 + msec: 1280 hash: "1313880b796ae7134f50fa8dafa4a974" } Key { @@ -749,55 +437,19 @@ VisualTest { count: 1 } Frame { - msec: 2544 - hash: "1313880b796ae7134f50fa8dafa4a974" - } - Frame { - msec: 2560 - hash: "1313880b796ae7134f50fa8dafa4a974" - } - Frame { - msec: 2576 - hash: "1313880b796ae7134f50fa8dafa4a974" - } - Frame { - msec: 2592 - hash: "1313880b796ae7134f50fa8dafa4a974" - } - Frame { - msec: 2608 - hash: "1313880b796ae7134f50fa8dafa4a974" - } - Frame { - msec: 2624 - hash: "1313880b796ae7134f50fa8dafa4a974" - } - Frame { - msec: 2640 - hash: "1313880b796ae7134f50fa8dafa4a974" - } - Frame { - msec: 2656 - hash: "1313880b796ae7134f50fa8dafa4a974" - } - Frame { - msec: 2672 - hash: "1313880b796ae7134f50fa8dafa4a974" - } - Frame { - msec: 2688 + msec: 1296 hash: "1313880b796ae7134f50fa8dafa4a974" } Frame { - msec: 2704 + msec: 1312 hash: "1313880b796ae7134f50fa8dafa4a974" } Frame { - msec: 2720 + msec: 1328 hash: "1313880b796ae7134f50fa8dafa4a974" } Frame { - msec: 2736 + msec: 1344 hash: "1313880b796ae7134f50fa8dafa4a974" } Key { @@ -809,31 +461,19 @@ VisualTest { count: 1 } Frame { - msec: 2752 - hash: "d85314199885fdf9cc8e666c3fb723fb" - } - Frame { - msec: 2768 - hash: "d85314199885fdf9cc8e666c3fb723fb" - } - Frame { - msec: 2784 - hash: "d85314199885fdf9cc8e666c3fb723fb" - } - Frame { - msec: 2800 + msec: 1360 hash: "d85314199885fdf9cc8e666c3fb723fb" } Frame { - msec: 2816 + msec: 1376 hash: "d85314199885fdf9cc8e666c3fb723fb" } Frame { - msec: 2832 + msec: 1392 hash: "d85314199885fdf9cc8e666c3fb723fb" } Frame { - msec: 2848 + msec: 1408 hash: "d85314199885fdf9cc8e666c3fb723fb" } Key { @@ -845,67 +485,23 @@ VisualTest { count: 1 } Frame { - msec: 2864 - hash: "d85314199885fdf9cc8e666c3fb723fb" - } - Frame { - msec: 2880 - image: "qt-669.2.png" - } - Frame { - msec: 2896 - hash: "d85314199885fdf9cc8e666c3fb723fb" - } - Frame { - msec: 2912 - hash: "d85314199885fdf9cc8e666c3fb723fb" - } - Frame { - msec: 2928 - hash: "d85314199885fdf9cc8e666c3fb723fb" - } - Frame { - msec: 2944 - hash: "d85314199885fdf9cc8e666c3fb723fb" - } - Frame { - msec: 2960 - hash: "d85314199885fdf9cc8e666c3fb723fb" - } - Frame { - msec: 2976 - hash: "d85314199885fdf9cc8e666c3fb723fb" - } - Frame { - msec: 2992 - hash: "d85314199885fdf9cc8e666c3fb723fb" - } - Frame { - msec: 3008 - hash: "d85314199885fdf9cc8e666c3fb723fb" - } - Frame { - msec: 3024 - hash: "d85314199885fdf9cc8e666c3fb723fb" - } - Frame { - msec: 3040 + msec: 1424 hash: "d85314199885fdf9cc8e666c3fb723fb" } Frame { - msec: 3056 + msec: 1440 hash: "d85314199885fdf9cc8e666c3fb723fb" } Frame { - msec: 3072 + msec: 1456 hash: "d85314199885fdf9cc8e666c3fb723fb" } Frame { - msec: 3088 + msec: 1472 hash: "d85314199885fdf9cc8e666c3fb723fb" } Frame { - msec: 3104 + msec: 1488 hash: "d85314199885fdf9cc8e666c3fb723fb" } Key { @@ -917,23 +513,15 @@ VisualTest { count: 1 } Frame { - msec: 3120 - hash: "a3b98f215b2329e29d17b61eba0f9e45" - } - Frame { - msec: 3136 - hash: "a3b98f215b2329e29d17b61eba0f9e45" - } - Frame { - msec: 3152 + msec: 1504 hash: "a3b98f215b2329e29d17b61eba0f9e45" } Frame { - msec: 3168 + msec: 1520 hash: "a3b98f215b2329e29d17b61eba0f9e45" } Frame { - msec: 3184 + msec: 1536 hash: "a3b98f215b2329e29d17b61eba0f9e45" } Key { @@ -945,147 +533,79 @@ VisualTest { count: 1 } Frame { - msec: 3200 - hash: "a3b98f215b2329e29d17b61eba0f9e45" - } - Frame { - msec: 3216 - hash: "a3b98f215b2329e29d17b61eba0f9e45" - } - Frame { - msec: 3232 - hash: "a3b98f215b2329e29d17b61eba0f9e45" - } - Frame { - msec: 3248 - hash: "a3b98f215b2329e29d17b61eba0f9e45" - } - Frame { - msec: 3264 - hash: "a3b98f215b2329e29d17b61eba0f9e45" - } - Frame { - msec: 3280 - hash: "a3b98f215b2329e29d17b61eba0f9e45" - } - Frame { - msec: 3296 - hash: "a3b98f215b2329e29d17b61eba0f9e45" - } - Frame { - msec: 3312 - hash: "a3b98f215b2329e29d17b61eba0f9e45" - } - Frame { - msec: 3328 - hash: "a3b98f215b2329e29d17b61eba0f9e45" - } - Frame { - msec: 3344 - hash: "a3b98f215b2329e29d17b61eba0f9e45" - } - Frame { - msec: 3360 - hash: "a3b98f215b2329e29d17b61eba0f9e45" - } - Frame { - msec: 3376 - hash: "a3b98f215b2329e29d17b61eba0f9e45" - } - Frame { - msec: 3392 - hash: "a3b98f215b2329e29d17b61eba0f9e45" - } - Frame { - msec: 3408 - hash: "a3b98f215b2329e29d17b61eba0f9e45" - } - Frame { - msec: 3424 - hash: "a3b98f215b2329e29d17b61eba0f9e45" - } - Frame { - msec: 3440 - hash: "a3b98f215b2329e29d17b61eba0f9e45" - } - Frame { - msec: 3456 - hash: "a3b98f215b2329e29d17b61eba0f9e45" - } - Frame { - msec: 3472 + msec: 1552 hash: "a3b98f215b2329e29d17b61eba0f9e45" } Frame { - msec: 3488 + msec: 1568 hash: "a3b98f215b2329e29d17b61eba0f9e45" } Frame { - msec: 3504 + msec: 1584 hash: "a3b98f215b2329e29d17b61eba0f9e45" } Frame { - msec: 3520 + msec: 1600 hash: "a3b98f215b2329e29d17b61eba0f9e45" } Frame { - msec: 3536 + msec: 1616 hash: "a3b98f215b2329e29d17b61eba0f9e45" } Frame { - msec: 3552 + msec: 1632 hash: "a3b98f215b2329e29d17b61eba0f9e45" } Frame { - msec: 3568 + msec: 1648 hash: "a3b98f215b2329e29d17b61eba0f9e45" } Frame { - msec: 3584 + msec: 1664 hash: "a3b98f215b2329e29d17b61eba0f9e45" } Frame { - msec: 3600 + msec: 1680 hash: "a3b98f215b2329e29d17b61eba0f9e45" } Frame { - msec: 3616 + msec: 1696 hash: "a3b98f215b2329e29d17b61eba0f9e45" } Frame { - msec: 3632 + msec: 1712 hash: "a3b98f215b2329e29d17b61eba0f9e45" } Frame { - msec: 3648 + msec: 1728 hash: "a3b98f215b2329e29d17b61eba0f9e45" } Frame { - msec: 3664 + msec: 1744 hash: "a3b98f215b2329e29d17b61eba0f9e45" } Frame { - msec: 3680 + msec: 1760 hash: "a3b98f215b2329e29d17b61eba0f9e45" } Frame { - msec: 3696 + msec: 1776 hash: "a3b98f215b2329e29d17b61eba0f9e45" } Frame { - msec: 3712 + msec: 1792 hash: "a3b98f215b2329e29d17b61eba0f9e45" } Frame { - msec: 3728 + msec: 1808 hash: "a3b98f215b2329e29d17b61eba0f9e45" } Frame { - msec: 3744 + msec: 1824 hash: "a3b98f215b2329e29d17b61eba0f9e45" } Frame { - msec: 3760 + msec: 1840 hash: "a3b98f215b2329e29d17b61eba0f9e45" } Key { @@ -1097,31 +617,39 @@ VisualTest { count: 1 } Frame { - msec: 3776 + msec: 1856 hash: "d85314199885fdf9cc8e666c3fb723fb" } Frame { - msec: 3792 + msec: 1872 hash: "d85314199885fdf9cc8e666c3fb723fb" } Frame { - msec: 3808 + msec: 1888 hash: "d85314199885fdf9cc8e666c3fb723fb" } Frame { - msec: 3824 + msec: 1904 hash: "d85314199885fdf9cc8e666c3fb723fb" } Frame { - msec: 3840 - image: "qt-669.3.png" + msec: 1920 + image: "qt-669.1.png" } Frame { - msec: 3856 + msec: 1936 hash: "d85314199885fdf9cc8e666c3fb723fb" } Frame { - msec: 3872 + msec: 1952 + hash: "d85314199885fdf9cc8e666c3fb723fb" + } + Frame { + msec: 1968 + hash: "d85314199885fdf9cc8e666c3fb723fb" + } + Frame { + msec: 1984 hash: "d85314199885fdf9cc8e666c3fb723fb" } Key { @@ -1133,55 +661,23 @@ VisualTest { count: 1 } Frame { - msec: 3888 - hash: "d85314199885fdf9cc8e666c3fb723fb" - } - Frame { - msec: 3904 - hash: "d85314199885fdf9cc8e666c3fb723fb" - } - Frame { - msec: 3920 - hash: "d85314199885fdf9cc8e666c3fb723fb" - } - Frame { - msec: 3936 - hash: "d85314199885fdf9cc8e666c3fb723fb" - } - Frame { - msec: 3952 - hash: "d85314199885fdf9cc8e666c3fb723fb" - } - Frame { - msec: 3968 - hash: "d85314199885fdf9cc8e666c3fb723fb" - } - Frame { - msec: 3984 - hash: "d85314199885fdf9cc8e666c3fb723fb" - } - Frame { - msec: 4000 - hash: "d85314199885fdf9cc8e666c3fb723fb" - } - Frame { - msec: 4016 + msec: 2000 hash: "d85314199885fdf9cc8e666c3fb723fb" } Frame { - msec: 4032 + msec: 2016 hash: "d85314199885fdf9cc8e666c3fb723fb" } Frame { - msec: 4048 + msec: 2032 hash: "d85314199885fdf9cc8e666c3fb723fb" } Frame { - msec: 4064 + msec: 2048 hash: "d85314199885fdf9cc8e666c3fb723fb" } Frame { - msec: 4080 + msec: 2064 hash: "d85314199885fdf9cc8e666c3fb723fb" } Key { @@ -1193,31 +689,23 @@ VisualTest { count: 1 } Frame { - msec: 4096 - hash: "1313880b796ae7134f50fa8dafa4a974" - } - Frame { - msec: 4112 - hash: "1313880b796ae7134f50fa8dafa4a974" - } - Frame { - msec: 4128 + msec: 2080 hash: "1313880b796ae7134f50fa8dafa4a974" } Frame { - msec: 4144 + msec: 2096 hash: "1313880b796ae7134f50fa8dafa4a974" } Frame { - msec: 4160 + msec: 2112 hash: "1313880b796ae7134f50fa8dafa4a974" } Frame { - msec: 4176 + msec: 2128 hash: "1313880b796ae7134f50fa8dafa4a974" } Frame { - msec: 4192 + msec: 2144 hash: "1313880b796ae7134f50fa8dafa4a974" } Key { @@ -1229,67 +717,23 @@ VisualTest { count: 1 } Frame { - msec: 4208 - hash: "1313880b796ae7134f50fa8dafa4a974" - } - Frame { - msec: 4224 - hash: "1313880b796ae7134f50fa8dafa4a974" - } - Frame { - msec: 4240 - hash: "1313880b796ae7134f50fa8dafa4a974" - } - Frame { - msec: 4256 - hash: "1313880b796ae7134f50fa8dafa4a974" - } - Frame { - msec: 4272 - hash: "1313880b796ae7134f50fa8dafa4a974" - } - Frame { - msec: 4288 - hash: "1313880b796ae7134f50fa8dafa4a974" - } - Frame { - msec: 4304 - hash: "1313880b796ae7134f50fa8dafa4a974" - } - Frame { - msec: 4320 - hash: "1313880b796ae7134f50fa8dafa4a974" - } - Frame { - msec: 4336 - hash: "1313880b796ae7134f50fa8dafa4a974" - } - Frame { - msec: 4352 - hash: "1313880b796ae7134f50fa8dafa4a974" - } - Frame { - msec: 4368 - hash: "1313880b796ae7134f50fa8dafa4a974" - } - Frame { - msec: 4384 + msec: 2160 hash: "1313880b796ae7134f50fa8dafa4a974" } Frame { - msec: 4400 + msec: 2176 hash: "1313880b796ae7134f50fa8dafa4a974" } Frame { - msec: 4416 + msec: 2192 hash: "1313880b796ae7134f50fa8dafa4a974" } Frame { - msec: 4432 + msec: 2208 hash: "1313880b796ae7134f50fa8dafa4a974" } Frame { - msec: 4448 + msec: 2224 hash: "1313880b796ae7134f50fa8dafa4a974" } Key { @@ -1301,23 +745,11 @@ VisualTest { count: 1 } Frame { - msec: 4464 - hash: "c899e9d181860f682ba7275fa36f82a1" - } - Frame { - msec: 4480 - hash: "c899e9d181860f682ba7275fa36f82a1" - } - Frame { - msec: 4496 - hash: "c899e9d181860f682ba7275fa36f82a1" - } - Frame { - msec: 4512 + msec: 2240 hash: "c899e9d181860f682ba7275fa36f82a1" } Frame { - msec: 4528 + msec: 2256 hash: "c899e9d181860f682ba7275fa36f82a1" } Key { @@ -1329,55 +761,23 @@ VisualTest { count: 1 } Frame { - msec: 4544 - hash: "c899e9d181860f682ba7275fa36f82a1" - } - Frame { - msec: 4560 - hash: "c899e9d181860f682ba7275fa36f82a1" - } - Frame { - msec: 4576 - hash: "c899e9d181860f682ba7275fa36f82a1" - } - Frame { - msec: 4592 - hash: "c899e9d181860f682ba7275fa36f82a1" - } - Frame { - msec: 4608 - hash: "c899e9d181860f682ba7275fa36f82a1" - } - Frame { - msec: 4624 - hash: "c899e9d181860f682ba7275fa36f82a1" - } - Frame { - msec: 4640 - hash: "c899e9d181860f682ba7275fa36f82a1" - } - Frame { - msec: 4656 - hash: "c899e9d181860f682ba7275fa36f82a1" - } - Frame { - msec: 4672 + msec: 2272 hash: "c899e9d181860f682ba7275fa36f82a1" } Frame { - msec: 4688 + msec: 2288 hash: "c899e9d181860f682ba7275fa36f82a1" } Frame { - msec: 4704 + msec: 2304 hash: "c899e9d181860f682ba7275fa36f82a1" } Frame { - msec: 4720 + msec: 2320 hash: "c899e9d181860f682ba7275fa36f82a1" } Frame { - msec: 4736 + msec: 2336 hash: "c899e9d181860f682ba7275fa36f82a1" } Key { @@ -1389,27 +789,15 @@ VisualTest { count: 1 } Frame { - msec: 4752 - hash: "2caf044acf7aaf0af6a03e7b8180fa16" - } - Frame { - msec: 4768 - hash: "2caf044acf7aaf0af6a03e7b8180fa16" - } - Frame { - msec: 4784 + msec: 2352 hash: "2caf044acf7aaf0af6a03e7b8180fa16" } Frame { - msec: 4800 - image: "qt-669.4.png" - } - Frame { - msec: 4816 + msec: 2368 hash: "2caf044acf7aaf0af6a03e7b8180fa16" } Frame { - msec: 4832 + msec: 2384 hash: "2caf044acf7aaf0af6a03e7b8180fa16" } Key { @@ -1421,63 +809,55 @@ VisualTest { count: 1 } Frame { - msec: 4848 - hash: "2caf044acf7aaf0af6a03e7b8180fa16" - } - Frame { - msec: 4864 - hash: "2caf044acf7aaf0af6a03e7b8180fa16" - } - Frame { - msec: 4880 + msec: 2400 hash: "2caf044acf7aaf0af6a03e7b8180fa16" } Frame { - msec: 4896 + msec: 2416 hash: "2caf044acf7aaf0af6a03e7b8180fa16" } Frame { - msec: 4912 + msec: 2432 hash: "2caf044acf7aaf0af6a03e7b8180fa16" } Frame { - msec: 4928 + msec: 2448 hash: "2caf044acf7aaf0af6a03e7b8180fa16" } Frame { - msec: 4944 + msec: 2464 hash: "2caf044acf7aaf0af6a03e7b8180fa16" } Frame { - msec: 4960 + msec: 2480 hash: "2caf044acf7aaf0af6a03e7b8180fa16" } Frame { - msec: 4976 + msec: 2496 hash: "2caf044acf7aaf0af6a03e7b8180fa16" } Frame { - msec: 4992 + msec: 2512 hash: "2caf044acf7aaf0af6a03e7b8180fa16" } Frame { - msec: 5008 + msec: 2528 hash: "2caf044acf7aaf0af6a03e7b8180fa16" } Frame { - msec: 5024 + msec: 2544 hash: "2caf044acf7aaf0af6a03e7b8180fa16" } Frame { - msec: 5040 + msec: 2560 hash: "2caf044acf7aaf0af6a03e7b8180fa16" } Frame { - msec: 5056 + msec: 2576 hash: "2caf044acf7aaf0af6a03e7b8180fa16" } Frame { - msec: 5072 + msec: 2592 hash: "2caf044acf7aaf0af6a03e7b8180fa16" } Key { @@ -1489,27 +869,23 @@ VisualTest { count: 1 } Frame { - msec: 5088 - hash: "c87aaf72137c2b9e8c876879e7215072" - } - Frame { - msec: 5104 + msec: 2608 hash: "c87aaf72137c2b9e8c876879e7215072" } Frame { - msec: 5120 + msec: 2624 hash: "c87aaf72137c2b9e8c876879e7215072" } Frame { - msec: 5136 + msec: 2640 hash: "c87aaf72137c2b9e8c876879e7215072" } Frame { - msec: 5152 + msec: 2656 hash: "c87aaf72137c2b9e8c876879e7215072" } Frame { - msec: 5168 + msec: 2672 hash: "c87aaf72137c2b9e8c876879e7215072" } Key { @@ -1521,79 +897,23 @@ VisualTest { count: 1 } Frame { - msec: 5184 - hash: "c87aaf72137c2b9e8c876879e7215072" - } - Frame { - msec: 5200 - hash: "c87aaf72137c2b9e8c876879e7215072" - } - Frame { - msec: 5216 - hash: "c87aaf72137c2b9e8c876879e7215072" - } - Frame { - msec: 5232 - hash: "c87aaf72137c2b9e8c876879e7215072" - } - Frame { - msec: 5248 - hash: "c87aaf72137c2b9e8c876879e7215072" - } - Frame { - msec: 5264 - hash: "c87aaf72137c2b9e8c876879e7215072" - } - Frame { - msec: 5280 - hash: "c87aaf72137c2b9e8c876879e7215072" - } - Frame { - msec: 5296 - hash: "c87aaf72137c2b9e8c876879e7215072" - } - Frame { - msec: 5312 - hash: "c87aaf72137c2b9e8c876879e7215072" - } - Frame { - msec: 5328 - hash: "c87aaf72137c2b9e8c876879e7215072" - } - Frame { - msec: 5344 - hash: "c87aaf72137c2b9e8c876879e7215072" - } - Frame { - msec: 5360 - hash: "c87aaf72137c2b9e8c876879e7215072" - } - Frame { - msec: 5376 - hash: "c87aaf72137c2b9e8c876879e7215072" - } - Frame { - msec: 5392 - hash: "c87aaf72137c2b9e8c876879e7215072" - } - Frame { - msec: 5408 + msec: 2688 hash: "c87aaf72137c2b9e8c876879e7215072" } Frame { - msec: 5424 + msec: 2704 hash: "c87aaf72137c2b9e8c876879e7215072" } Frame { - msec: 5440 + msec: 2720 hash: "c87aaf72137c2b9e8c876879e7215072" } Frame { - msec: 5456 + msec: 2736 hash: "c87aaf72137c2b9e8c876879e7215072" } Frame { - msec: 5472 + msec: 2752 hash: "c87aaf72137c2b9e8c876879e7215072" } Key { @@ -1605,23 +925,15 @@ VisualTest { count: 1 } Frame { - msec: 5488 - hash: "3c455f51fea0926576077d55d6fbfbb2" - } - Frame { - msec: 5504 - hash: "3c455f51fea0926576077d55d6fbfbb2" - } - Frame { - msec: 5520 + msec: 2768 hash: "3c455f51fea0926576077d55d6fbfbb2" } Frame { - msec: 5536 + msec: 2784 hash: "3c455f51fea0926576077d55d6fbfbb2" } Frame { - msec: 5552 + msec: 2800 hash: "3c455f51fea0926576077d55d6fbfbb2" } Key { @@ -1633,67 +945,19 @@ VisualTest { count: 1 } Frame { - msec: 5568 - hash: "3c455f51fea0926576077d55d6fbfbb2" - } - Frame { - msec: 5584 - hash: "3c455f51fea0926576077d55d6fbfbb2" - } - Frame { - msec: 5600 - hash: "3c455f51fea0926576077d55d6fbfbb2" - } - Frame { - msec: 5616 - hash: "3c455f51fea0926576077d55d6fbfbb2" - } - Frame { - msec: 5632 - hash: "3c455f51fea0926576077d55d6fbfbb2" - } - Frame { - msec: 5648 - hash: "3c455f51fea0926576077d55d6fbfbb2" - } - Frame { - msec: 5664 - hash: "3c455f51fea0926576077d55d6fbfbb2" - } - Frame { - msec: 5680 - hash: "3c455f51fea0926576077d55d6fbfbb2" - } - Frame { - msec: 5696 - hash: "3c455f51fea0926576077d55d6fbfbb2" - } - Frame { - msec: 5712 - hash: "3c455f51fea0926576077d55d6fbfbb2" - } - Frame { - msec: 5728 - hash: "3c455f51fea0926576077d55d6fbfbb2" - } - Frame { - msec: 5744 + msec: 2816 hash: "3c455f51fea0926576077d55d6fbfbb2" } Frame { - msec: 5760 - image: "qt-669.5.png" - } - Frame { - msec: 5776 + msec: 2832 hash: "3c455f51fea0926576077d55d6fbfbb2" } Frame { - msec: 5792 + msec: 2848 hash: "3c455f51fea0926576077d55d6fbfbb2" } Frame { - msec: 5808 + msec: 2864 hash: "3c455f51fea0926576077d55d6fbfbb2" } Key { @@ -1705,27 +969,19 @@ VisualTest { count: 1 } Frame { - msec: 5824 - hash: "394360c0bff5ee3ad206d2911838d64e" - } - Frame { - msec: 5840 - hash: "394360c0bff5ee3ad206d2911838d64e" - } - Frame { - msec: 5856 - hash: "394360c0bff5ee3ad206d2911838d64e" + msec: 2880 + image: "qt-669.2.png" } Frame { - msec: 5872 + msec: 2896 hash: "394360c0bff5ee3ad206d2911838d64e" } Frame { - msec: 5888 + msec: 2912 hash: "394360c0bff5ee3ad206d2911838d64e" } Frame { - msec: 5904 + msec: 2928 hash: "394360c0bff5ee3ad206d2911838d64e" } Key { @@ -1737,55 +993,23 @@ VisualTest { count: 1 } Frame { - msec: 5920 - hash: "394360c0bff5ee3ad206d2911838d64e" - } - Frame { - msec: 5936 - hash: "394360c0bff5ee3ad206d2911838d64e" - } - Frame { - msec: 5952 - hash: "394360c0bff5ee3ad206d2911838d64e" - } - Frame { - msec: 5968 - hash: "394360c0bff5ee3ad206d2911838d64e" - } - Frame { - msec: 5984 - hash: "394360c0bff5ee3ad206d2911838d64e" - } - Frame { - msec: 6000 - hash: "394360c0bff5ee3ad206d2911838d64e" - } - Frame { - msec: 6016 - hash: "394360c0bff5ee3ad206d2911838d64e" - } - Frame { - msec: 6032 - hash: "394360c0bff5ee3ad206d2911838d64e" - } - Frame { - msec: 6048 + msec: 2944 hash: "394360c0bff5ee3ad206d2911838d64e" } Frame { - msec: 6064 + msec: 2960 hash: "394360c0bff5ee3ad206d2911838d64e" } Frame { - msec: 6080 + msec: 2976 hash: "394360c0bff5ee3ad206d2911838d64e" } Frame { - msec: 6096 + msec: 2992 hash: "394360c0bff5ee3ad206d2911838d64e" } Frame { - msec: 6112 + msec: 3008 hash: "394360c0bff5ee3ad206d2911838d64e" } Key { @@ -1797,31 +1021,23 @@ VisualTest { count: 1 } Frame { - msec: 6128 - hash: "10573e4c9dab5bd6e46ec79949c098e5" - } - Frame { - msec: 6144 - hash: "10573e4c9dab5bd6e46ec79949c098e5" - } - Frame { - msec: 6160 + msec: 3024 hash: "10573e4c9dab5bd6e46ec79949c098e5" } Frame { - msec: 6176 + msec: 3040 hash: "10573e4c9dab5bd6e46ec79949c098e5" } Frame { - msec: 6192 + msec: 3056 hash: "10573e4c9dab5bd6e46ec79949c098e5" } Frame { - msec: 6208 + msec: 3072 hash: "10573e4c9dab5bd6e46ec79949c098e5" } Frame { - msec: 6224 + msec: 3088 hash: "10573e4c9dab5bd6e46ec79949c098e5" } Key { @@ -1833,339 +1049,323 @@ VisualTest { count: 1 } Frame { - msec: 6240 + msec: 3104 hash: "10573e4c9dab5bd6e46ec79949c098e5" } Frame { - msec: 6256 + msec: 3120 hash: "10573e4c9dab5bd6e46ec79949c098e5" } Frame { - msec: 6272 + msec: 3136 hash: "10573e4c9dab5bd6e46ec79949c098e5" } Frame { - msec: 6288 + msec: 3152 hash: "10573e4c9dab5bd6e46ec79949c098e5" } Frame { - msec: 6304 + msec: 3168 hash: "10573e4c9dab5bd6e46ec79949c098e5" } Frame { - msec: 6320 + msec: 3184 hash: "10573e4c9dab5bd6e46ec79949c098e5" } Frame { - msec: 6336 + msec: 3200 hash: "10573e4c9dab5bd6e46ec79949c098e5" } Frame { - msec: 6352 + msec: 3216 hash: "10573e4c9dab5bd6e46ec79949c098e5" } Frame { - msec: 6368 + msec: 3232 hash: "10573e4c9dab5bd6e46ec79949c098e5" } Frame { - msec: 6384 + msec: 3248 hash: "10573e4c9dab5bd6e46ec79949c098e5" } Frame { - msec: 6400 + msec: 3264 hash: "10573e4c9dab5bd6e46ec79949c098e5" } Frame { - msec: 6416 + msec: 3280 hash: "10573e4c9dab5bd6e46ec79949c098e5" } - Key { - type: 6 - key: 16777234 - modifiers: 0 - text: "" - autorep: false - count: 1 - } - Frame { - msec: 6432 - hash: "4e0ce00bde70a96774a6477ef2305b7f" - } - Frame { - msec: 6448 - hash: "4e0ce00bde70a96774a6477ef2305b7f" - } Frame { - msec: 6464 - hash: "4e0ce00bde70a96774a6477ef2305b7f" + msec: 3296 + hash: "10573e4c9dab5bd6e46ec79949c098e5" } Frame { - msec: 6480 - hash: "4e0ce00bde70a96774a6477ef2305b7f" + msec: 3312 + hash: "10573e4c9dab5bd6e46ec79949c098e5" } Frame { - msec: 6496 - hash: "4e0ce00bde70a96774a6477ef2305b7f" + msec: 3328 + hash: "10573e4c9dab5bd6e46ec79949c098e5" } Frame { - msec: 6512 - hash: "4e0ce00bde70a96774a6477ef2305b7f" - } - Key { - type: 7 - key: 16777234 - modifiers: 0 - text: "" - autorep: false - count: 1 + msec: 3344 + hash: "10573e4c9dab5bd6e46ec79949c098e5" } Frame { - msec: 6528 - hash: "4e0ce00bde70a96774a6477ef2305b7f" + msec: 3360 + hash: "10573e4c9dab5bd6e46ec79949c098e5" } Frame { - msec: 6544 - hash: "4e0ce00bde70a96774a6477ef2305b7f" + msec: 3376 + hash: "10573e4c9dab5bd6e46ec79949c098e5" } Frame { - msec: 6560 - hash: "4e0ce00bde70a96774a6477ef2305b7f" + msec: 3392 + hash: "10573e4c9dab5bd6e46ec79949c098e5" } Frame { - msec: 6576 - hash: "4e0ce00bde70a96774a6477ef2305b7f" + msec: 3408 + hash: "10573e4c9dab5bd6e46ec79949c098e5" } Frame { - msec: 6592 - hash: "4e0ce00bde70a96774a6477ef2305b7f" + msec: 3424 + hash: "10573e4c9dab5bd6e46ec79949c098e5" } Frame { - msec: 6608 - hash: "4e0ce00bde70a96774a6477ef2305b7f" + msec: 3440 + hash: "10573e4c9dab5bd6e46ec79949c098e5" } Frame { - msec: 6624 - hash: "4e0ce00bde70a96774a6477ef2305b7f" + msec: 3456 + hash: "10573e4c9dab5bd6e46ec79949c098e5" } Frame { - msec: 6640 - hash: "4e0ce00bde70a96774a6477ef2305b7f" + msec: 3472 + hash: "10573e4c9dab5bd6e46ec79949c098e5" } Frame { - msec: 6656 - hash: "4e0ce00bde70a96774a6477ef2305b7f" + msec: 3488 + hash: "10573e4c9dab5bd6e46ec79949c098e5" } Frame { - msec: 6672 - hash: "4e0ce00bde70a96774a6477ef2305b7f" + msec: 3504 + hash: "10573e4c9dab5bd6e46ec79949c098e5" } Frame { - msec: 6688 - hash: "4e0ce00bde70a96774a6477ef2305b7f" + msec: 3520 + hash: "10573e4c9dab5bd6e46ec79949c098e5" } Frame { - msec: 6704 - hash: "4e0ce00bde70a96774a6477ef2305b7f" + msec: 3536 + hash: "10573e4c9dab5bd6e46ec79949c098e5" } Frame { - msec: 6720 - image: "qt-669.6.png" + msec: 3552 + hash: "10573e4c9dab5bd6e46ec79949c098e5" } Frame { - msec: 6736 - hash: "4e0ce00bde70a96774a6477ef2305b7f" + msec: 3568 + hash: "10573e4c9dab5bd6e46ec79949c098e5" } Frame { - msec: 6752 - hash: "4e0ce00bde70a96774a6477ef2305b7f" + msec: 3584 + hash: "10573e4c9dab5bd6e46ec79949c098e5" } Frame { - msec: 6768 - hash: "4e0ce00bde70a96774a6477ef2305b7f" + msec: 3600 + hash: "10573e4c9dab5bd6e46ec79949c098e5" } Frame { - msec: 6784 - hash: "4e0ce00bde70a96774a6477ef2305b7f" + msec: 3616 + hash: "10573e4c9dab5bd6e46ec79949c098e5" } Frame { - msec: 6800 - hash: "4e0ce00bde70a96774a6477ef2305b7f" + msec: 3632 + hash: "10573e4c9dab5bd6e46ec79949c098e5" } Frame { - msec: 6816 - hash: "4e0ce00bde70a96774a6477ef2305b7f" + msec: 3648 + hash: "10573e4c9dab5bd6e46ec79949c098e5" } Frame { - msec: 6832 - hash: "4e0ce00bde70a96774a6477ef2305b7f" + msec: 3664 + hash: "10573e4c9dab5bd6e46ec79949c098e5" } Frame { - msec: 6848 - hash: "4e0ce00bde70a96774a6477ef2305b7f" + msec: 3680 + hash: "10573e4c9dab5bd6e46ec79949c098e5" } Frame { - msec: 6864 - hash: "4e0ce00bde70a96774a6477ef2305b7f" + msec: 3696 + hash: "10573e4c9dab5bd6e46ec79949c098e5" } - Frame { - msec: 6880 - hash: "4e0ce00bde70a96774a6477ef2305b7f" + Key { + type: 6 + key: 16777234 + modifiers: 0 + text: "" + autorep: false + count: 1 } Frame { - msec: 6896 + msec: 3712 hash: "4e0ce00bde70a96774a6477ef2305b7f" } Frame { - msec: 6912 + msec: 3728 hash: "4e0ce00bde70a96774a6477ef2305b7f" } Frame { - msec: 6928 + msec: 3744 hash: "4e0ce00bde70a96774a6477ef2305b7f" } Frame { - msec: 6944 + msec: 3760 hash: "4e0ce00bde70a96774a6477ef2305b7f" } Frame { - msec: 6960 + msec: 3776 hash: "4e0ce00bde70a96774a6477ef2305b7f" } Frame { - msec: 6976 + msec: 3792 hash: "4e0ce00bde70a96774a6477ef2305b7f" } - Frame { - msec: 6992 - hash: "4e0ce00bde70a96774a6477ef2305b7f" + Key { + type: 7 + key: 16777234 + modifiers: 0 + text: "" + autorep: false + count: 1 } Frame { - msec: 7008 + msec: 3808 hash: "4e0ce00bde70a96774a6477ef2305b7f" } Frame { - msec: 7024 + msec: 3824 hash: "4e0ce00bde70a96774a6477ef2305b7f" } Frame { - msec: 7040 - hash: "4e0ce00bde70a96774a6477ef2305b7f" + msec: 3840 + image: "qt-669.3.png" } Frame { - msec: 7056 + msec: 3856 hash: "4e0ce00bde70a96774a6477ef2305b7f" } Frame { - msec: 7072 + msec: 3872 hash: "4e0ce00bde70a96774a6477ef2305b7f" } Frame { - msec: 7088 + msec: 3888 hash: "4e0ce00bde70a96774a6477ef2305b7f" } Frame { - msec: 7104 + msec: 3904 hash: "4e0ce00bde70a96774a6477ef2305b7f" } Frame { - msec: 7120 + msec: 3920 hash: "4e0ce00bde70a96774a6477ef2305b7f" } Frame { - msec: 7136 + msec: 3936 hash: "4e0ce00bde70a96774a6477ef2305b7f" } Frame { - msec: 7152 + msec: 3952 hash: "4e0ce00bde70a96774a6477ef2305b7f" } Frame { - msec: 7168 + msec: 3968 hash: "4e0ce00bde70a96774a6477ef2305b7f" } Frame { - msec: 7184 + msec: 3984 hash: "4e0ce00bde70a96774a6477ef2305b7f" } Frame { - msec: 7200 + msec: 4000 hash: "4e0ce00bde70a96774a6477ef2305b7f" } Frame { - msec: 7216 + msec: 4016 hash: "4e0ce00bde70a96774a6477ef2305b7f" } Frame { - msec: 7232 + msec: 4032 hash: "4e0ce00bde70a96774a6477ef2305b7f" } Frame { - msec: 7248 + msec: 4048 hash: "4e0ce00bde70a96774a6477ef2305b7f" } Frame { - msec: 7264 + msec: 4064 hash: "4e0ce00bde70a96774a6477ef2305b7f" } Frame { - msec: 7280 + msec: 4080 hash: "4e0ce00bde70a96774a6477ef2305b7f" } Frame { - msec: 7296 + msec: 4096 hash: "4e0ce00bde70a96774a6477ef2305b7f" } Frame { - msec: 7312 + msec: 4112 hash: "4e0ce00bde70a96774a6477ef2305b7f" } Frame { - msec: 7328 + msec: 4128 hash: "4e0ce00bde70a96774a6477ef2305b7f" } Frame { - msec: 7344 + msec: 4144 hash: "4e0ce00bde70a96774a6477ef2305b7f" } Frame { - msec: 7360 + msec: 4160 hash: "4e0ce00bde70a96774a6477ef2305b7f" } Frame { - msec: 7376 + msec: 4176 hash: "4e0ce00bde70a96774a6477ef2305b7f" } Frame { - msec: 7392 + msec: 4192 hash: "4e0ce00bde70a96774a6477ef2305b7f" } Frame { - msec: 7408 + msec: 4208 hash: "4e0ce00bde70a96774a6477ef2305b7f" } Frame { - msec: 7424 + msec: 4224 hash: "4e0ce00bde70a96774a6477ef2305b7f" } Frame { - msec: 7440 + msec: 4240 hash: "4e0ce00bde70a96774a6477ef2305b7f" } Frame { - msec: 7456 + msec: 4256 hash: "4e0ce00bde70a96774a6477ef2305b7f" } Frame { - msec: 7472 + msec: 4272 hash: "4e0ce00bde70a96774a6477ef2305b7f" } Frame { - msec: 7488 + msec: 4288 hash: "4e0ce00bde70a96774a6477ef2305b7f" } Frame { - msec: 7504 + msec: 4304 hash: "4e0ce00bde70a96774a6477ef2305b7f" } } diff --git a/tests/auto/declarative/visual/qmlgraphicstextinput/data/cursorDelegate.0.png b/tests/auto/declarative/visual/qmlgraphicstextinput/data/cursorDelegate.0.png Binary files differindex ec698cd..f04f65e 100644 --- a/tests/auto/declarative/visual/qmlgraphicstextinput/data/cursorDelegate.0.png +++ b/tests/auto/declarative/visual/qmlgraphicstextinput/data/cursorDelegate.0.png diff --git a/tests/auto/declarative/visual/qmlgraphicstextinput/data/cursorDelegate.1.png b/tests/auto/declarative/visual/qmlgraphicstextinput/data/cursorDelegate.1.png Binary files differindex 1d8761e..46a703a 100644 --- a/tests/auto/declarative/visual/qmlgraphicstextinput/data/cursorDelegate.1.png +++ b/tests/auto/declarative/visual/qmlgraphicstextinput/data/cursorDelegate.1.png diff --git a/tests/auto/declarative/visual/qmlgraphicstextinput/data/cursorDelegate.2.png b/tests/auto/declarative/visual/qmlgraphicstextinput/data/cursorDelegate.2.png Binary files differindex 2f2ba70..e4a3877 100644 --- a/tests/auto/declarative/visual/qmlgraphicstextinput/data/cursorDelegate.2.png +++ b/tests/auto/declarative/visual/qmlgraphicstextinput/data/cursorDelegate.2.png diff --git a/tests/auto/declarative/visual/qmlgraphicstextinput/data/cursorDelegate.3.png b/tests/auto/declarative/visual/qmlgraphicstextinput/data/cursorDelegate.3.png Binary files differindex 990a556..9ef842a 100644 --- a/tests/auto/declarative/visual/qmlgraphicstextinput/data/cursorDelegate.3.png +++ b/tests/auto/declarative/visual/qmlgraphicstextinput/data/cursorDelegate.3.png diff --git a/tests/auto/declarative/visual/qmlgraphicstextinput/data/cursorDelegate.4.png b/tests/auto/declarative/visual/qmlgraphicstextinput/data/cursorDelegate.4.png Binary files differindex 82a7086..706e2b3 100644 --- a/tests/auto/declarative/visual/qmlgraphicstextinput/data/cursorDelegate.4.png +++ b/tests/auto/declarative/visual/qmlgraphicstextinput/data/cursorDelegate.4.png diff --git a/tests/auto/declarative/visual/qmlgraphicstextinput/data/cursorDelegate.5.png b/tests/auto/declarative/visual/qmlgraphicstextinput/data/cursorDelegate.5.png Binary files differindex f277eae..bcc86cc 100644 --- a/tests/auto/declarative/visual/qmlgraphicstextinput/data/cursorDelegate.5.png +++ b/tests/auto/declarative/visual/qmlgraphicstextinput/data/cursorDelegate.5.png diff --git a/tests/auto/declarative/visual/qmlgraphicstextinput/data/cursorDelegate.6.png b/tests/auto/declarative/visual/qmlgraphicstextinput/data/cursorDelegate.6.png Binary files differindex aa881c3..51ddd44 100644 --- a/tests/auto/declarative/visual/qmlgraphicstextinput/data/cursorDelegate.6.png +++ b/tests/auto/declarative/visual/qmlgraphicstextinput/data/cursorDelegate.6.png diff --git a/tests/auto/declarative/visual/qmlgraphicstextinput/data/cursorDelegate.7.png b/tests/auto/declarative/visual/qmlgraphicstextinput/data/cursorDelegate.7.png Binary files differindex 4f7cd10..0a2fdda 100644 --- a/tests/auto/declarative/visual/qmlgraphicstextinput/data/cursorDelegate.7.png +++ b/tests/auto/declarative/visual/qmlgraphicstextinput/data/cursorDelegate.7.png diff --git a/tests/auto/declarative/visual/qmlgraphicstextinput/data/cursorDelegate.8.png b/tests/auto/declarative/visual/qmlgraphicstextinput/data/cursorDelegate.8.png Binary files differindex aac89b1..9c88bff 100644 --- a/tests/auto/declarative/visual/qmlgraphicstextinput/data/cursorDelegate.8.png +++ b/tests/auto/declarative/visual/qmlgraphicstextinput/data/cursorDelegate.8.png diff --git a/tests/auto/declarative/visual/qmlgraphicstextinput/data/cursorDelegate.9.png b/tests/auto/declarative/visual/qmlgraphicstextinput/data/cursorDelegate.9.png Binary files differdeleted file mode 100644 index 6196bd1..0000000 --- a/tests/auto/declarative/visual/qmlgraphicstextinput/data/cursorDelegate.9.png +++ /dev/null diff --git a/tests/auto/declarative/visual/qmlgraphicstextinput/data/cursorDelegate.qml b/tests/auto/declarative/visual/qmlgraphicstextinput/data/cursorDelegate.qml index 7211814..df2dd38 100644 --- a/tests/auto/declarative/visual/qmlgraphicstextinput/data/cursorDelegate.qml +++ b/tests/auto/declarative/visual/qmlgraphicstextinput/data/cursorDelegate.qml @@ -132,73 +132,113 @@ VisualTest { msec: 512 hash: "cd442d6dc4d155f54ae24f03d080f50c" } + Key { + type: 6 + key: 16777234 + modifiers: 0 + text: "" + autorep: false + count: 1 + } Frame { msec: 528 - hash: "cd442d6dc4d155f54ae24f03d080f50c" + hash: "56db24ad686d34e75a2d184e5b1da2a9" } Frame { msec: 544 - hash: "90af75eeef63ae67e9f6ff1a61d7cca3" + hash: "c3487c7c7dcd392e7eacb74045dd4143" } Frame { msec: 560 - hash: "b9dcdd88fba70636cbcae160edcc0136" + hash: "70aedcda6c93875d18ee111d8a19549e" } Frame { msec: 576 - hash: "679ee2b26a118ab53a84fa116de09edf" + hash: "47ad557d366536ad457f6866241dba93" } Frame { msec: 592 - hash: "0fa12b48c08266f50e77506e4136dd56" + hash: "e715c2a82745829665226df78598b819" } Frame { msec: 608 - hash: "7aed794eae2f0c65342f190ed4d4f889" + hash: "2ff4bd5602c34c020162f0503d625049" } Frame { msec: 624 - hash: "23edee3af8f1904558863d37c520555a" + hash: "a494b3b25a23daa858034ebccce0d1c7" } Frame { msec: 640 - hash: "2f9ed13e8a0d0edf098b05db02c04bdf" + hash: "59d2fb8e21802d256b11730b31919fb3" + } + Key { + type: 7 + key: 16777234 + modifiers: 0 + text: "" + autorep: false + count: 1 } Frame { msec: 656 - hash: "86ed2aa2428feb9c6c14ad2a74e97978" + hash: "5e09b95292d6d0afe76a5015b0ccebf1" } Frame { msec: 672 - hash: "e189dc0dae9457a6af5082c6ccf451b6" + hash: "de3c911aec7e42557ece4bdcf02ce562" } Frame { msec: 688 - hash: "62d4bfa65bfdc50d24d9204f4df7bad8" + hash: "680f51f63c4b11a247a668eb7bbd2b62" + } + Key { + type: 6 + key: 16777236 + modifiers: 0 + text: "" + autorep: false + count: 1 } Frame { msec: 704 - hash: "5a11ec8a0485a018ebe317e01136e4a5" + hash: "9aa569f7b251371bdd1cb05c8d3aab28" } Frame { msec: 720 - hash: "9aa569f7b251371bdd1cb05c8d3aab28" + hash: "a242c9d5ed7f9aef0a0622dcb66d0a7e" } Frame { msec: 736 - hash: "a242c9d5ed7f9aef0a0622dcb66d0a7e" + hash: "a0cb3f796fddf7100ca19aee3dedbea8" } Frame { msec: 752 - hash: "a0cb3f796fddf7100ca19aee3dedbea8" + hash: "b4e273b6415e3951eab2f831100b0bb2" } Frame { msec: 768 - hash: "b4e273b6415e3951eab2f831100b0bb2" + hash: "fd3fd655785c4e3c470f742451e3470f" } Frame { msec: 784 - hash: "fd3fd655785c4e3c470f742451e3470f" + hash: "7a9b2057760e48d5f9cfdc79b08866d8" + } + Frame { + msec: 800 + hash: "2a55b52db02d97963d382c9862307384" + } + Frame { + msec: 816 + hash: "c6c90915393fc7cb0aaa464caefbadb0" + } + Key { + type: 7 + key: 16777236 + modifiers: 0 + text: "" + autorep: false + count: 1 } Key { type: 6 @@ -209,28 +249,28 @@ VisualTest { count: 1 } Frame { - msec: 800 - hash: "4220dde85eb1c027366efd0798927e8d" - } - Frame { - msec: 816 - hash: "512b9746ae4482557b8cef9f99905954" - } - Frame { msec: 832 - hash: "e7346d8f223684143a0940def878b874" + hash: "4f097223462c8f619188b0b0c2ecb080" } Frame { msec: 848 - hash: "4f097223462c8f619188b0b0c2ecb080" + hash: "243be452ff0798538defc6a14cb8a08b" } Frame { msec: 864 - hash: "243be452ff0798538defc6a14cb8a08b" + hash: "e5472ed9a8a43a64a0fea12540619940" } Frame { msec: 880 - hash: "e5472ed9a8a43a64a0fea12540619940" + hash: "90b0f5f1aa7b5f066fb1266ea63254eb" + } + Frame { + msec: 896 + hash: "97d5f9fe02e4bd06ec30a7805945f167" + } + Frame { + msec: 912 + hash: "eb381a1e2ad945e4cfa540c137edbda7" } Key { type: 7 @@ -241,20 +281,12 @@ VisualTest { count: 1 } Frame { - msec: 896 - hash: "90b0f5f1aa7b5f066fb1266ea63254eb" - } - Frame { - msec: 912 - hash: "97d5f9fe02e4bd06ec30a7805945f167" - } - Frame { msec: 928 - hash: "eb381a1e2ad945e4cfa540c137edbda7" + hash: "75252ff61682fd32117f0759ebe4b6a1" } Frame { msec: 944 - hash: "75252ff61682fd32117f0759ebe4b6a1" + hash: "d724bdacc59bce29d0a42d72479be0b6" } Frame { msec: 960 @@ -262,15 +294,7 @@ VisualTest { } Frame { msec: 976 - hash: "d7703c18b69f485bba3abd655100b50d" - } - Key { - type: 6 - key: 16777234 - modifiers: 0 - text: "" - autorep: false - count: 1 + hash: "e3948b393a3778066a90197b31c71e51" } Frame { msec: 992 @@ -288,277 +312,269 @@ VisualTest { msec: 1040 hash: "e3948b393a3778066a90197b31c71e51" } + Frame { + msec: 1056 + hash: "e3948b393a3778066a90197b31c71e51" + } Key { - type: 7 - key: 16777234 - modifiers: 0 + type: 6 + key: 16777248 + modifiers: 33554432 text: "" autorep: false count: 1 } - Frame { - msec: 1056 - hash: "e3948b393a3778066a90197b31c71e51" + Key { + type: 6 + key: 16777249 + modifiers: 100663296 + text: "" + autorep: false + count: 1 } Frame { msec: 1072 - hash: "e3948b393a3778066a90197b31c71e51" + hash: "d7703c18b69f485bba3abd655100b50d" } Frame { msec: 1088 - hash: "a822d3eb3706788ac56b5daa014fe9d1" + hash: "d724bdacc59bce29d0a42d72479be0b6" } Frame { msec: 1104 - hash: "ac714f3934ca3188d7cec77c2d7b8ef9" + hash: "75252ff61682fd32117f0759ebe4b6a1" } Frame { msec: 1120 - hash: "49b60bcb0a6122d8363b924bbc22510d" + hash: "eb381a1e2ad945e4cfa540c137edbda7" } Frame { msec: 1136 - hash: "fcc73bea3b386af2175918978a3930ff" - } - Key { - type: 6 - key: 16777234 - modifiers: 0 - text: "" - autorep: false - count: 1 + hash: "97d5f9fe02e4bd06ec30a7805945f167" } Frame { msec: 1152 - hash: "cf2762f6357ed5fcf6ceb994017a18c5" + hash: "90b0f5f1aa7b5f066fb1266ea63254eb" } Frame { msec: 1168 - hash: "0fcbf1c7fa650de7f925ea36f5f2b85d" + hash: "e5472ed9a8a43a64a0fea12540619940" } Frame { msec: 1184 - hash: "3d8aae5cf4a81aa46962652f64016eb0" + hash: "243be452ff0798538defc6a14cb8a08b" } Frame { msec: 1200 - hash: "bc32d013342ffe96beeeadb9312b1081" - } - Key { - type: 7 - key: 16777234 - modifiers: 0 - text: "" - autorep: false - count: 1 + hash: "4f097223462c8f619188b0b0c2ecb080" } Frame { msec: 1216 - hash: "3341ce005686e044d0d1e61dd82e973f" + hash: "e7346d8f223684143a0940def878b874" } Frame { msec: 1232 - hash: "6064af6e59a13fd64d1a79c286b9f2d7" + hash: "512b9746ae4482557b8cef9f99905954" } Frame { msec: 1248 - hash: "0dd8d59ce276710bed7dcd371fdeb88a" + hash: "4220dde85eb1c027366efd0798927e8d" } Frame { msec: 1264 - hash: "dd11369f671b922cf33542028baf7299" + hash: "54f7f94b5cdf1becb2ee61d7f6f02c0e" } Frame { msec: 1280 - hash: "b1872308815a8ed02e4684bf1b05d218" + hash: "de09380dd57c58ae99fbdba169a19975" } Frame { msec: 1296 - hash: "416178263988009b2659aa3cf0da9380" + hash: "bfc1b03df244839a012e8302dc07764f" } Frame { msec: 1312 - hash: "b44310e7f78f6ea10d55cd4c24d6ad94" + hash: "d5f220e5337837ec0d07eb118e2f948e" } Frame { msec: 1328 - hash: "d928a11606e8fb4c67c0b7a8ecc1ff59" + hash: "7640c78a286b0b7bdf2ec9117ceced4a" } Key { type: 6 key: 16777234 - modifiers: 0 + modifiers: 100663296 text: "" autorep: false count: 1 } Frame { msec: 1344 - hash: "14d25f3f3468fe16ced831cdc177022a" + hash: "c659fd76d632aac26d396809b57826dd" } Frame { msec: 1360 - hash: "3b620550ff16e7cb8ab5cc8fb17ad785" + hash: "b5ba335eca37416970dcab53157d7ae6" } Frame { msec: 1376 - hash: "62b0cd3aead2630545de2efb8f396c3a" + hash: "df498dac81260d8867221612ff3b7619" } Frame { msec: 1392 - hash: "6500f3e6571d64645852e64439370d0f" + hash: "578c3a682278f4ead0ca894f029dbfb7" } Frame { msec: 1408 - hash: "17dddb58ba52b5d2e5420ba922e55161" + hash: "5fe9b2365b091047df1b18bcaa5b1bb4" + } + Frame { + msec: 1424 + hash: "c513b8df83f1d1cc3c05769c41741653" } Key { type: 7 key: 16777234 - modifiers: 0 + modifiers: 100663296 text: "" autorep: false count: 1 } Frame { - msec: 1424 - hash: "a13b215ea2d4e0c80fdc15784c76b5d9" - } - Frame { msec: 1440 - hash: "e4e3df1b0c3a5fe23137ba946a9e69d3" + hash: "ee70a2002f52a3f4a9fa32db668db3d0" } Frame { msec: 1456 - hash: "704b723fa0ed13c1ab0c0e230eca88e6" + hash: "3f299da38c2f3f9057df987d5d339e1f" } Frame { msec: 1472 - hash: "7a364e644ce25241edfa2642c80fc14a" + hash: "55f6adbd00910e5f39977162cfe8dcc5" } Frame { msec: 1488 - hash: "beb79f46ef8dc85bede608f561e2cce9" + hash: "151fb386855954ae5143046cab314ddf" } Frame { msec: 1504 - hash: "9448e1162835c2bab615f30c69ff391e" + hash: "d9ec76b2c07077b5b6d6c3777d116164" } Frame { msec: 1520 - hash: "10eacfde43a0cbea66736a67769dc1d3" + hash: "ef3ba6c27d9b28de829360985505c185" } Frame { msec: 1536 - hash: "56cf4ae40c6bd8ccf3710d3fa7abb40f" + hash: "8eafd8f9aea08c172f40de3c4f2b3b59" } Frame { msec: 1552 - hash: "14df3de6888f25f55f1c09ebe2fd6530" + hash: "2329d5b8182794bb8375f0de204c9b16" } Frame { msec: 1568 - hash: "df55ac2630defd2cf519cb7edda4acc8" + hash: "e6b25cf1a8c6858f6937e649b1315955" } Frame { msec: 1584 - hash: "adb2b0c763a065785da9dce43a5774a6" + hash: "3aeedff600509a138b0de31e10bbdd7b" } Frame { msec: 1600 - hash: "9829d3726e19da204e48ed628e05f9ff" + hash: "0636dee0ddc551ce8ecf3a6c6300b020" } Frame { msec: 1616 - hash: "6141475196769abd2051da566072a81e" + hash: "77f5b0dfdf0c631cf863be60bd09db9c" } Frame { msec: 1632 - hash: "3f3df1294880b24619b71d44c91ca476" + hash: "2e86762371ae933546e8b2154c78f74b" + } + Frame { + msec: 1648 + hash: "1051ec29f94c31b257a5b1c922f8e93f" } Key { type: 6 - key: 16777234 - modifiers: 0 + key: 16777236 + modifiers: 100663296 text: "" autorep: false count: 1 } Frame { - msec: 1648 - hash: "e69a852f1d52940dd64232f238f8dbd8" - } - Frame { msec: 1664 - hash: "fc2b51f6c152a6ed7f97cefe27f14a24" + hash: "5c60da876c8cc9fa334905b5fc7c2a3d" } Frame { msec: 1680 - hash: "451e320a37356a5f3573938b759ff58b" + hash: "c0b0cddd62853ac3499b7ada200d206a" } Frame { msec: 1696 - hash: "65ebec0c7fdbefbdcc35d9c097bcd654" + hash: "5bd588d64917f942e0f5ea1553acbf63" } Frame { msec: 1712 - hash: "b3f5c16c8a56a03570a45189a1ec4a0f" - } - Frame { - msec: 1728 - hash: "7891672c5ed584de49de4201c8ca81d9" + hash: "bc5744ef5c81b7d5b365bf977f909be5" } Key { type: 7 - key: 16777234 - modifiers: 0 + key: 16777236 + modifiers: 100663296 text: "" autorep: false count: 1 } Frame { + msec: 1728 + hash: "892a1a8a5a9c198e5ae04cc19f0e1d0c" + } + Frame { msec: 1744 - hash: "2602e01ad276f5e9116ed226ac87af48" + hash: "708799d2d834302c659958701e217b37" } Frame { msec: 1760 - hash: "70fb0fd5e9fe08c83be78c411c4dd8c5" + hash: "360d75bcc178bcfd4f93741d653fd821" } Frame { msec: 1776 - hash: "6f7fcb30e62b0785ae650ee1946125f3" + hash: "1cfe03528b1cd84e69efc02b9677c748" } Frame { msec: 1792 - hash: "5c3819bcf8a96b0178d18c41bc7ebda7" + hash: "6f45d7c37f1fb90138011b2af24aaf1e" } Frame { msec: 1808 - hash: "f8705997d6c89ee004de6fbc7686acd0" + hash: "ba164375e7ac18cf2e1e613498158fbf" } Frame { msec: 1824 - hash: "5b495514831825aceed8ac715357c6ba" + hash: "14052b9da9e17a6f06fed05d4ed82b9c" } Frame { msec: 1840 - hash: "f43c0dcafe7e737951120e25f2af38ea" + hash: "aac15ce22bfe38f44a46e4644913f144" } Frame { msec: 1856 - hash: "4188c6571af3251253213fc1c720c383" + hash: "c63aa02ba29ea18334b188185690948d" } Frame { msec: 1872 - hash: "911d4a2352b18376c60545b96a890948" + hash: "11ed187ccd4c2221f166851c08b6b467" } Frame { msec: 1888 - hash: "3a6e6338cba1cb4619c7564ca49f2b30" + hash: "3543bd4e538981d4bb2c2313c9663a53" } Frame { msec: 1904 - hash: "f3ebf35352f01bd73bbfcecdc49dc70d" + hash: "a05fa618b094bde2b54b730f513bcabe" } Frame { msec: 1920 @@ -566,319 +582,327 @@ VisualTest { } Frame { msec: 1936 - hash: "7d505004e5ec31546b7ae574043ba6f2" + hash: "52fc4a32526a74f9a04d8795c7a47c6e" } Frame { msec: 1952 - hash: "c98b5d6b67b559f3de28f9298cc95f7b" + hash: "17623e1b0ffca3b7736ce930f078dbe0" } Frame { msec: 1968 - hash: "36f141bcc565b1f01b23cc29013a696f" + hash: "75226dac5691627851d83c7370d7603c" + } + Key { + type: 7 + key: 16777249 + modifiers: 33554432 + text: "" + autorep: false + count: 1 } Frame { msec: 1984 - hash: "7e521964f15c4963ff3f99741703e9b5" + hash: "9e506ad52020e2913e80a13a7f3ac797" } Frame { msec: 2000 - hash: "e3948b393a3778066a90197b31c71e51" + hash: "9e506ad52020e2913e80a13a7f3ac797" } Frame { msec: 2016 - hash: "e3948b393a3778066a90197b31c71e51" + hash: "9e506ad52020e2913e80a13a7f3ac797" } Frame { msec: 2032 - hash: "e3948b393a3778066a90197b31c71e51" + hash: "9e506ad52020e2913e80a13a7f3ac797" } Frame { msec: 2048 - hash: "e3948b393a3778066a90197b31c71e51" + hash: "9e506ad52020e2913e80a13a7f3ac797" } Frame { msec: 2064 - hash: "e3948b393a3778066a90197b31c71e51" + hash: "75226dac5691627851d83c7370d7603c" } Frame { msec: 2080 - hash: "7e521964f15c4963ff3f99741703e9b5" + hash: "17623e1b0ffca3b7736ce930f078dbe0" } Frame { msec: 2096 - hash: "36f141bcc565b1f01b23cc29013a696f" + hash: "52fc4a32526a74f9a04d8795c7a47c6e" } Frame { msec: 2112 - hash: "c98b5d6b67b559f3de28f9298cc95f7b" + hash: "89f2d3b4441faee557b8d5f44e1e1e18" } Frame { msec: 2128 - hash: "7d505004e5ec31546b7ae574043ba6f2" - } - Key { - type: 6 - key: 16777248 - modifiers: 33554432 - text: "" - autorep: false - count: 1 - } - Key { - type: 6 - key: 16777249 - modifiers: 100663296 - text: "" - autorep: false - count: 1 + hash: "a05fa618b094bde2b54b730f513bcabe" } Frame { msec: 2144 - hash: "796916dcd72a5087199c2b8ff576d9cf" + hash: "3543bd4e538981d4bb2c2313c9663a53" } Frame { msec: 2160 - hash: "f3ebf35352f01bd73bbfcecdc49dc70d" + hash: "11ed187ccd4c2221f166851c08b6b467" } Frame { msec: 2176 - hash: "3a6e6338cba1cb4619c7564ca49f2b30" + hash: "c63aa02ba29ea18334b188185690948d" } Frame { msec: 2192 - hash: "911d4a2352b18376c60545b96a890948" + hash: "aac15ce22bfe38f44a46e4644913f144" } Frame { msec: 2208 - hash: "4188c6571af3251253213fc1c720c383" + hash: "14052b9da9e17a6f06fed05d4ed82b9c" } Frame { msec: 2224 - hash: "f43c0dcafe7e737951120e25f2af38ea" + hash: "ba164375e7ac18cf2e1e613498158fbf" } Frame { msec: 2240 - hash: "5b495514831825aceed8ac715357c6ba" + hash: "6f45d7c37f1fb90138011b2af24aaf1e" } Frame { msec: 2256 - hash: "f8705997d6c89ee004de6fbc7686acd0" + hash: "1cfe03528b1cd84e69efc02b9677c748" + } + Key { + type: 7 + key: 16777248 + modifiers: 0 + text: "" + autorep: false + count: 1 } Frame { msec: 2272 - hash: "5c3819bcf8a96b0178d18c41bc7ebda7" + hash: "360d75bcc178bcfd4f93741d653fd821" } Frame { msec: 2288 - hash: "6f7fcb30e62b0785ae650ee1946125f3" + hash: "708799d2d834302c659958701e217b37" } Frame { msec: 2304 - hash: "70fb0fd5e9fe08c83be78c411c4dd8c5" + hash: "892a1a8a5a9c198e5ae04cc19f0e1d0c" } Frame { msec: 2320 - hash: "2602e01ad276f5e9116ed226ac87af48" + hash: "bc5744ef5c81b7d5b365bf977f909be5" } Frame { msec: 2336 - hash: "7891672c5ed584de49de4201c8ca81d9" + hash: "5bd588d64917f942e0f5ea1553acbf63" } Frame { msec: 2352 - hash: "b3f5c16c8a56a03570a45189a1ec4a0f" - } - Frame { - msec: 2368 - hash: "65ebec0c7fdbefbdcc35d9c097bcd654" + hash: "c0b0cddd62853ac3499b7ada200d206a" } Key { type: 6 - key: 16777234 - modifiers: 100663296 + key: 16777236 + modifiers: 0 text: "" autorep: false count: 1 } Frame { + msec: 2368 + hash: "5c60da876c8cc9fa334905b5fc7c2a3d" + } + Frame { msec: 2384 - hash: "a0d21a9830b7a78d6293a74429873367" + hash: "136a103a893991b97ec09f373c68c5b9" } Frame { msec: 2400 - hash: "47d2c8b9f22d167c09e1a5e604768acc" + hash: "b2181ce0165ee060e1a8b713027011a9" } Frame { msec: 2416 - hash: "a1606f2eb47b1981b3fc09994d5f3a2e" + hash: "e4836bbaf1834658e3ec4bf54a619b53" } Frame { msec: 2432 - hash: "6a257e83d779670a8e4e94c926f658a0" + hash: "3072492f5f72427c8d45cf3c5d3ff919" } Frame { msec: 2448 - hash: "0a782742341c137d7b7723e5b8dca531" + hash: "d897cba896239c77df4f7adb93ad5def" + } + Frame { + msec: 2464 + hash: "ec9867a95de6d6f4c0f92af567d73771" } Key { type: 7 - key: 16777234 - modifiers: 100663296 + key: 16777236 + modifiers: 0 text: "" autorep: false count: 1 } Frame { - msec: 2464 - hash: "fc0b9af8786c18dab89d85f77437e248" - } - Frame { msec: 2480 - hash: "d34af5c58f1eb24c8980b5a8013d9a26" + hash: "06b72e3180eb946622e4592de0fa6f91" } Frame { msec: 2496 - hash: "a685dfee70e7a53baf4160ac59094ec5" + hash: "33f109c026eaefed113cc12db5912a19" } Frame { msec: 2512 - hash: "9fbc9a8d1592a4f5184ad7a94362c58c" + hash: "ce72c4b4470394dc1c4efd4d9de9907f" } Frame { msec: 2528 - hash: "94eab6da73a70eedc2349f172b979602" + hash: "64ac1105ea10ae1f6401e8421731c606" } Frame { msec: 2544 - hash: "4851f8cb23eea521a27c99acef972361" + hash: "ef977bd74941d3506b8f3ee4b1f587ad" } Frame { msec: 2560 - hash: "0e00932eb52824a5d1e13153ca353f71" + hash: "9278de91e10788ae5a80399ff5372460" } Frame { msec: 2576 - hash: "bdb57370df6a812685684a004da4b6b3" + hash: "ddaaf945a5f714b856ed5155f4e502b2" } Frame { msec: 2592 - hash: "08e1f2c34b74bd9f3a564406dde4a5e3" + hash: "f6bb6ba15d996345df04825da71c2cf3" } Frame { msec: 2608 - hash: "a6753fc779b51ec5fd99177356e17571" + hash: "466c78a5a5052b39b113adeda761da6c" } Frame { msec: 2624 - hash: "cc9912af101aa9fc676921c45dff7e88" + hash: "db650537d773e0d8a737a7bf5f408a5e" } Frame { msec: 2640 - hash: "29495f888c8f574a82d69af5dd861e4b" + hash: "64be9f85869f19defada296343895a2b" } Frame { msec: 2656 - hash: "d189fcaa5ea17b0030139a48bc7bf561" + hash: "5ac6d9751bfadbc7aa064ca0b4d78b2b" } Frame { msec: 2672 - hash: "5b73dc226f11c2b3c44ce9b338811d2c" + hash: "a088b351dcc6fc3a8d29256f3a2410c3" } Frame { msec: 2688 - hash: "70978aa41243f15fb751ac61e2121673" + hash: "a16a77170a6c969042024fa0868da12d" } Frame { msec: 2704 - hash: "e12b656fc042820d65bb293a25bf45df" + hash: "3a2509d0d3a314d2ed72f811f4af741e" } Frame { msec: 2720 - hash: "38155df6417d88dc78eef4aaf762f663" + hash: "484db4e1954048cad7eea48bfea08267" } Frame { msec: 2736 - hash: "208795950a60dea9aacd3747f6eab0b8" + hash: "ad0f84634c5f99ab62ab6d12ad8d8c6a" } Frame { msec: 2752 - hash: "47359db1f54664550186b0359f396ad9" + hash: "d99b590307f6910963257a1c41c50120" + } + Key { + type: 6 + key: 16777234 + modifiers: 0 + text: "" + autorep: false + count: 1 } Frame { msec: 2768 - hash: "1844b94d6fc16ee0a91a6487efdf70d7" + hash: "54f7f94b5cdf1becb2ee61d7f6f02c0e" } Frame { msec: 2784 - hash: "4b45cfcbb00982801ed7c7d7412bb380" + hash: "4220dde85eb1c027366efd0798927e8d" } Frame { msec: 2800 - hash: "5605a9132353126c5258e9a2743b836b" + hash: "512b9746ae4482557b8cef9f99905954" } Frame { msec: 2816 - hash: "c22e8cca59c917f7d99cd3ffd9137a6c" + hash: "e7346d8f223684143a0940def878b874" } Frame { msec: 2832 - hash: "f0180e38fa3d3e0112d1f9807877bdf3" + hash: "4f097223462c8f619188b0b0c2ecb080" } Frame { msec: 2848 - hash: "45398bfb584506e05ccc5e8a2b46e996" + hash: "243be452ff0798538defc6a14cb8a08b" } Frame { msec: 2864 - hash: "b4b6238099cd09a29cce28f4870eb455" + hash: "e5472ed9a8a43a64a0fea12540619940" } Frame { msec: 2880 image: "cursorDelegate.2.png" } + Key { + type: 7 + key: 16777234 + modifiers: 0 + text: "" + autorep: false + count: 1 + } Frame { msec: 2896 - hash: "3d247e380e19ec8497f441f9228783c7" + hash: "97d5f9fe02e4bd06ec30a7805945f167" } Frame { msec: 2912 - hash: "c287f209a45d8d46be57afa3d8e0bd1c" + hash: "eb381a1e2ad945e4cfa540c137edbda7" } Frame { msec: 2928 - hash: "b6ff7bde677960481e71333e1a912729" + hash: "75252ff61682fd32117f0759ebe4b6a1" } Frame { msec: 2944 - hash: "67ac6f886d9f35795705a7a86ecc15f4" + hash: "d724bdacc59bce29d0a42d72479be0b6" } Frame { msec: 2960 - hash: "8e4842bc0b6a3ae1ee6cfc0e220753f8" + hash: "d7703c18b69f485bba3abd655100b50d" } Frame { msec: 2976 - hash: "e5edd18389b26851e5cbe84ac00a2f62" + hash: "e3948b393a3778066a90197b31c71e51" } Frame { msec: 2992 - hash: "d5ac74c9eda240864177096f27c19ad6" + hash: "e3948b393a3778066a90197b31c71e51" } Frame { msec: 3008 - hash: "d5ac74c9eda240864177096f27c19ad6" + hash: "e3948b393a3778066a90197b31c71e51" } Frame { msec: 3024 - hash: "d5ac74c9eda240864177096f27c19ad6" - } - Key { - type: 6 - key: 16777236 - modifiers: 100663296 - text: "" - autorep: false - count: 1 + hash: "e3948b393a3778066a90197b31c71e51" } Frame { msec: 3040 @@ -890,227 +914,195 @@ VisualTest { } Frame { msec: 3072 - hash: "e3948b393a3778066a90197b31c71e51" + hash: "d7703c18b69f485bba3abd655100b50d" } Frame { msec: 3088 - hash: "8f9dacb4e67808ff78fcdd62274c0c7c" + hash: "d724bdacc59bce29d0a42d72479be0b6" } Frame { msec: 3104 - hash: "e92c44fb4ad550bb7421b831363bf4d4" + hash: "75252ff61682fd32117f0759ebe4b6a1" } Frame { msec: 3120 - hash: "ec2c1e1aef0e1e0116a4feceb31c8d7b" + hash: "eb381a1e2ad945e4cfa540c137edbda7" } Frame { msec: 3136 - hash: "5c1f0a3a19152b7e43969eb89507820c" - } - Key { - type: 7 - key: 16777236 - modifiers: 100663296 - text: "" - autorep: false - count: 1 + hash: "97d5f9fe02e4bd06ec30a7805945f167" } Frame { msec: 3152 - hash: "490d1c455b155648d430d45e291a4c91" + hash: "90b0f5f1aa7b5f066fb1266ea63254eb" } Frame { msec: 3168 - hash: "d54ad0b2f40faf7f5639f78acec0d000" + hash: "e5472ed9a8a43a64a0fea12540619940" } Frame { msec: 3184 - hash: "a1fe3db1c5e7d137b40dea619f1766a9" + hash: "243be452ff0798538defc6a14cb8a08b" } Frame { msec: 3200 - hash: "e04893deffc38729617a66ffa33dbf9f" + hash: "4f097223462c8f619188b0b0c2ecb080" } Frame { msec: 3216 - hash: "be6694a7989438ae34bff4271eec42b5" + hash: "e7346d8f223684143a0940def878b874" } Frame { msec: 3232 - hash: "d8b3e6b235f3510768b0171596c0fc3c" + hash: "512b9746ae4482557b8cef9f99905954" } Frame { msec: 3248 - hash: "1f2e9a90eef3042ad97f6180520f19cf" + hash: "4220dde85eb1c027366efd0798927e8d" } Frame { msec: 3264 - hash: "059c111be9c62b81115218ede8328083" + hash: "54f7f94b5cdf1becb2ee61d7f6f02c0e" } Frame { msec: 3280 - hash: "04645b3dba9272950509585fb8ec3611" - } - Key { - type: 7 - key: 16777249 - modifiers: 33554432 - text: "" - autorep: false - count: 1 + hash: "de09380dd57c58ae99fbdba169a19975" } Frame { msec: 3296 - hash: "a2d160393610cb55e2f1651ef247558b" + hash: "bfc1b03df244839a012e8302dc07764f" } Frame { msec: 3312 - hash: "7fcd2288e60023a04fc2c1c518a8ce24" + hash: "d5f220e5337837ec0d07eb118e2f948e" } Frame { msec: 3328 - hash: "d06abd6fec1ac1ea0ce4b37a5296b18d" + hash: "7640c78a286b0b7bdf2ec9117ceced4a" } Frame { msec: 3344 - hash: "4073a65ce2169328174ff8acc0904a56" + hash: "680f51f63c4b11a247a668eb7bbd2b62" } Frame { msec: 3360 - hash: "ed681e1b35e373a89195fd121767a5a2" + hash: "de3c911aec7e42557ece4bdcf02ce562" } Frame { msec: 3376 - hash: "6711c4d7418d4848f4b7f340371d30ea" + hash: "5e09b95292d6d0afe76a5015b0ccebf1" } Frame { msec: 3392 - hash: "5424fd998bcf94f5e159ae553b8186f0" + hash: "59d2fb8e21802d256b11730b31919fb3" } Frame { msec: 3408 - hash: "29d1a7c3ca714f2b5555c2b8f4e16acf" + hash: "a494b3b25a23daa858034ebccce0d1c7" } Frame { msec: 3424 - hash: "498152d87a9e608f3dd1227a47a53938" + hash: "2ff4bd5602c34c020162f0503d625049" } Frame { msec: 3440 - hash: "de3669854e357a1d27b9fde41f47595d" + hash: "e715c2a82745829665226df78598b819" } Frame { msec: 3456 - hash: "04524fc53f8c06430e9ee8730d4b0ce4" + hash: "47ad557d366536ad457f6866241dba93" } Frame { msec: 3472 - hash: "3fdf5ed8baf9b19a11b1bc192b36e78b" + hash: "70aedcda6c93875d18ee111d8a19549e" } Frame { msec: 3488 - hash: "a58dea8435926ea2a8a52890df980a5b" + hash: "c3487c7c7dcd392e7eacb74045dd4143" } Frame { msec: 3504 - hash: "bf648f584aa05ef228fffbdad91416a1" + hash: "56db24ad686d34e75a2d184e5b1da2a9" } Frame { msec: 3520 - hash: "122c7a1c61fc2ec3ad0b36a14f69d63f" + hash: "436349a8371597a74404428983cd894c" } Frame { msec: 3536 - hash: "4ea2ca59536c1ab74a6f515bb7291f49" + hash: "6e1bb59ec518614a0414092f4939d5ad" } Frame { msec: 3552 - hash: "63f2430b48f3d9fe68d7d408b09167b2" + hash: "f0aa02772df579b921e0c68f794d2327" } Frame { msec: 3568 - hash: "1f8d534ed508b2c1fcbce82a1756633f" - } - Key { - type: 6 - key: 16777234 - modifiers: 33554432 - text: "" - autorep: false - count: 1 + hash: "09ea1462da333c2aeaaa01e9e4f8d54b" } Frame { msec: 3584 - hash: "4f58e9a12b0bce4f3dd4b1fe15fd14fe" + hash: "46d23d8472ce833591dcff548a644288" } Frame { msec: 3600 - hash: "dc20813dc0183c14baed858e8754e277" + hash: "a7566d5d35a89078bb378bf3f6c78e13" } Frame { msec: 3616 - hash: "c6461a18e86bd2e92a14f4198bccaad8" + hash: "4c5f7155b20e34a5627387cdc466e890" } Frame { msec: 3632 - hash: "f2d7224931085fe33e73605ad23ec474" + hash: "e9b98922327c412db0116a56283d3c86" } Frame { msec: 3648 - hash: "978cf09c8ebc1d436c17ef997d1f674f" + hash: "29ffede9c16c34ead5f291e69e388084" } Frame { msec: 3664 - hash: "53e012b074b4ce5ff92f3e3c26f16ae5" - } - Key { - type: 7 - key: 16777234 - modifiers: 33554432 - text: "" - autorep: false - count: 1 + hash: "16958b8f0b1dbdc15333d99bd1349124" } Frame { msec: 3680 - hash: "504397c6b18d042381c184296906eda0" + hash: "3408f8d6e4d6ef34d4d5a0cb51090c4c" } Frame { msec: 3696 - hash: "9b225a60a8e493e64825f2115dd405d1" + hash: "b32b099b260789266d0a3c0edd61c04e" } Frame { msec: 3712 - hash: "f5ab337eab9a18961bf94151e6d1009a" + hash: "4dd3617b25e8b95cf2ec31db8b3bb80f" } Frame { msec: 3728 - hash: "97511b93e19751491a7b5067f0198303" + hash: "46b42a08c59909f067810d1984f7a04e" } Frame { msec: 3744 - hash: "2f36748ab7cfdda1ddd032c2cb21decc" + hash: "ab8c505601c381e8a44fa7b6eea6579d" } Frame { msec: 3760 - hash: "95aac396434448d2f54bbc2a909d9140" + hash: "73f56e6e1d2cbf3f559d679eb2c15529" } Frame { msec: 3776 - hash: "a190b6c95be7812107db4b8b45527655" + hash: "b230c56da330823d7d7f7e081c304acb" } Frame { msec: 3792 - hash: "20d7cbff4a603d546f060c88f73a5107" + hash: "9f3cbd0023dbd78ba4951c26f71c7d5d" } Frame { msec: 3808 - hash: "0871b1eb79bdd1ff25789adf981ba54d" + hash: "9e9b11cf2695dd02c1ab175ff194f491" } Frame { msec: 3824 - hash: "857d78e88992fb23bf50a91bad0ec800" + hash: "8fa6f8eb5deb0ab95c3454e5812ada1d" } Frame { msec: 3840 @@ -1118,287 +1110,271 @@ VisualTest { } Frame { msec: 3856 - hash: "25a8cf4df57c322cf71f254917e30aed" + hash: "0b6b24ae8df7c3aa9abb48edb6619d8a" } Frame { msec: 3872 - hash: "a7a5300347d00d8eda2ef96efccda179" + hash: "45805295dd2482fdf21ac8c9bfe47869" } Frame { msec: 3888 - hash: "e6abe54cf03f02f62d7d897b7ec5bf82" + hash: "4893cd31a730d786f075edfd0afc0ad9" } Frame { msec: 3904 - hash: "90f4ba6ff58fb740cb47f25f999e4231" + hash: "a3fbfe732568f5cf6e63809fd7e0c32e" } Frame { msec: 3920 - hash: "8b99d52bc804832a0475b67338b396fa" + hash: "21d3327710d51f714e84b5a28df13e4f" } Frame { msec: 3936 - hash: "b84dc15391c63cb2f0ba2d6761337839" + hash: "ea065ab48f27f60505eab36debee3faa" } Frame { msec: 3952 - hash: "0fddad686fe39d7dc08d53abf927f836" + hash: "fe4c2e368d2110374b7ba9e30f330713" } Frame { msec: 3968 - hash: "52bc93f0a4f4b164347d9d23ee15ea9e" + hash: "723281f6c1a3f03cf170e4de93fa4dbf" } Frame { msec: 3984 - hash: "96e9e80206ee788f208fa1404e7a6bac" + hash: "e3948b393a3778066a90197b31c71e51" } Frame { msec: 4000 - hash: "a51d3632e7538fb9cb659a039ed3cbd2" + hash: "e3948b393a3778066a90197b31c71e51" } Frame { msec: 4016 - hash: "a51d3632e7538fb9cb659a039ed3cbd2" + hash: "e3948b393a3778066a90197b31c71e51" } Frame { msec: 4032 - hash: "a51d3632e7538fb9cb659a039ed3cbd2" + hash: "e3948b393a3778066a90197b31c71e51" } Frame { msec: 4048 - hash: "a51d3632e7538fb9cb659a039ed3cbd2" + hash: "e3948b393a3778066a90197b31c71e51" + } + Frame { + msec: 4064 + hash: "723281f6c1a3f03cf170e4de93fa4dbf" } Key { type: 6 - key: 16777236 - modifiers: 33554432 + key: 16777232 + modifiers: 0 text: "" autorep: false count: 1 } Frame { - msec: 4064 - hash: "e3948b393a3778066a90197b31c71e51" - } - Frame { msec: 4080 - hash: "7e521964f15c4963ff3f99741703e9b5" + hash: "c779e46a89c3c9d0f8234a3192175b60" } Frame { msec: 4096 - hash: "36f141bcc565b1f01b23cc29013a696f" + hash: "f223cfeba468e161943b24ac960196de" } Frame { msec: 4112 - hash: "c98b5d6b67b559f3de28f9298cc95f7b" + hash: "dd2f21f063d055edc23c874380149067" + } + Frame { + msec: 4128 + hash: "af580b32b67117eb062bbcefe262c719" } Key { type: 7 - key: 16777236 - modifiers: 33554432 + key: 16777232 + modifiers: 0 text: "" autorep: false count: 1 } Frame { - msec: 4128 - hash: "7d505004e5ec31546b7ae574043ba6f2" - } - Frame { msec: 4144 - hash: "796916dcd72a5087199c2b8ff576d9cf" + hash: "991f76d483e033024932790f85bb3c5d" } Frame { msec: 4160 - hash: "f3ebf35352f01bd73bbfcecdc49dc70d" + hash: "3d8aa66ab9533d14a468f0869b457033" } Frame { msec: 4176 - hash: "3a6e6338cba1cb4619c7564ca49f2b30" + hash: "a5540bd5d088ab1201b5f22b32579d7c" } Frame { msec: 4192 - hash: "911d4a2352b18376c60545b96a890948" + hash: "e0844f30578fef2cdcee4e4ff28ab7cf" } Frame { msec: 4208 - hash: "4188c6571af3251253213fc1c720c383" + hash: "710e7022b65a9b3fd3a7372bf7f37c7a" } Frame { msec: 4224 - hash: "f43c0dcafe7e737951120e25f2af38ea" + hash: "db553c856b11db7e6feb38b9d562a804" } Frame { msec: 4240 - hash: "5b495514831825aceed8ac715357c6ba" - } - Key { - type: 6 - key: 16777236 - modifiers: 33554432 - text: "" - autorep: false - count: 1 + hash: "6ba56c4ec6e903b0d82235c230ed78cb" } Frame { msec: 4256 - hash: "522551c85a1cb90ee2c6a27f4b23d65c" + hash: "786de35a11c3fc1a228392195f509c28" } Frame { msec: 4272 - hash: "ccdde43fa55279b127e686785cbcb239" + hash: "cc6307597cea821b63391fc9bdbe038b" } Frame { msec: 4288 - hash: "86d70781574740c9b4822c3b16b9cc9a" + hash: "73d49e4d0bef103e11820d888bef0368" } Frame { msec: 4304 - hash: "4da8f4cb685683977955fab8d7689d0e" + hash: "b2ed6ebf66252463326c2f220b3992fa" } Frame { msec: 4320 - hash: "3e2b20a802f396413b234adcb2d84886" - } - Key { - type: 7 - key: 16777236 - modifiers: 33554432 - text: "" - autorep: false - count: 1 + hash: "129b5bc6d55621e2366fc0d80f105df2" } Frame { msec: 4336 - hash: "9330c594d485ad6fa81c2f34aa3b51ef" + hash: "ae8fe55fa9b497cd6eff18a517c301d8" } Frame { msec: 4352 - hash: "2a07b6d74742bac77bb827b6d01f77e6" + hash: "535210bd848a20db2966b06278198e07" } Frame { msec: 4368 - hash: "dc678fc3ffdabcff16c4a623583ff3ef" + hash: "1f4ea7783b5c60bfc424c73cea07a3a0" } Frame { msec: 4384 - hash: "5f65476194ed7329f6336fd880b8d6f2" + hash: "5b61f2e9308c4de2864bb7cf133ce545" } Frame { msec: 4400 - hash: "2ba2e985276d8532154292f164364b37" + hash: "f641f87e9556ecfd24f0f0a772295e52" } Frame { msec: 4416 - hash: "3295bdffd4f23d141297e9d19b2dd5a2" + hash: "36f28574c0b042647bc064d75afa9fbc" } Frame { msec: 4432 - hash: "acfa09b8cc5da4dc375b84cd1ccbe30d" + hash: "dba2ca165b8ab35113b8ec127b204ae9" } Frame { msec: 4448 - hash: "b692125e34c366c41e367109fa9257c8" + hash: "56324b95f63eabba718df588159f374d" } Frame { msec: 4464 - hash: "929f435a601c675066a8124741f5de28" + hash: "af65d67fef3c743e31acca03716040c4" } Frame { msec: 4480 - hash: "b61fec4eeef2141ec6d615a462245e87" + hash: "105481b5becd127af4c28961d900148c" } Frame { msec: 4496 - hash: "b35940dbf2ff71062e6d3db4f9e2b2be" + hash: "4859d6bf9c456e52fd463e4c2f68d7f6" } Frame { msec: 4512 - hash: "1636936fb5d1f29673922ce860a34d86" + hash: "21c0958bd3c6a1056bb062165c9bc18b" } Frame { msec: 4528 - hash: "ca04fe11183e2d262a1cd6ef15fe49ec" + hash: "287d258a79f45c26c92c69cce6b1a2f3" } Frame { msec: 4544 - hash: "baa57e091ceeb047d2c55bda05ee62e8" + hash: "deabc5c7dd111adcb253eb833f118764" } Frame { msec: 4560 - hash: "480bbf99b0a521cbcc6f091fb607859f" + hash: "4bad7380f6b645c551edbe06ff67cac9" } Frame { msec: 4576 - hash: "4bd65a2479a0c3c9ec8e977a30de7c8d" + hash: "67fc71c16d0b9405c35590bafdc5ea40" } Key { type: 6 - key: 16777249 - modifiers: 100663296 + key: 16777233 + modifiers: 0 text: "" autorep: false count: 1 } Frame { msec: 4592 - hash: "54a1afd19756a383a6df699a3ddfa142" + hash: "7aed794eae2f0c65342f190ed4d4f889" } Frame { msec: 4608 - hash: "15243c00773a5111dd1ec278297f7ca6" + hash: "23edee3af8f1904558863d37c520555a" } Frame { msec: 4624 - hash: "2f646700f48de22d0508a87623fd36c9" + hash: "2f9ed13e8a0d0edf098b05db02c04bdf" + } + Key { + type: 7 + key: 16777233 + modifiers: 0 + text: "" + autorep: false + count: 1 } Frame { msec: 4640 - hash: "d5841e53645b36641fac2efba7a22b2f" + hash: "86ed2aa2428feb9c6c14ad2a74e97978" } Frame { msec: 4656 - hash: "9995211df69d50e1c1ce50bd9c8d0822" + hash: "e189dc0dae9457a6af5082c6ccf451b6" } Frame { msec: 4672 - hash: "7a8e4ac72f3729774d8bb017b5bb918b" + hash: "62d4bfa65bfdc50d24d9204f4df7bad8" } Frame { msec: 4688 - hash: "ffb7a66844fee5650d390ebd8d3896e0" - } - Key { - type: 6 - key: 16777236 - modifiers: 100663296 - text: "" - autorep: false - count: 1 + hash: "5a11ec8a0485a018ebe317e01136e4a5" } Frame { msec: 4704 - hash: "d7c05b96d5824c965833548f43aa1b93" + hash: "9aa569f7b251371bdd1cb05c8d3aab28" } Frame { msec: 4720 - hash: "df82f608f1a1a7be0be0c7e34947ff97" + hash: "a242c9d5ed7f9aef0a0622dcb66d0a7e" } Frame { msec: 4736 - hash: "f340d3cd51c2af8cb80e50bd3ae92e91" + hash: "a0cb3f796fddf7100ca19aee3dedbea8" } Frame { msec: 4752 - hash: "cb6bd6af65abc600cfd55448047e3065" + hash: "b4e273b6415e3951eab2f831100b0bb2" } Frame { msec: 4768 - hash: "569ffbf933a4f1c4e5358e2d20276991" + hash: "fd3fd655785c4e3c470f742451e3470f" } Frame { msec: 4784 - hash: "a81308d5fb238aef9379a65d1fb3a8a4" + hash: "7a9b2057760e48d5f9cfdc79b08866d8" } Frame { msec: 4800 @@ -1406,339 +1382,299 @@ VisualTest { } Frame { msec: 4816 - hash: "a968bc553ccd8836f676fd0483bf2210" - } - Key { - type: 7 - key: 16777236 - modifiers: 100663296 - text: "" - autorep: false - count: 1 + hash: "c6c90915393fc7cb0aaa464caefbadb0" } Frame { msec: 4832 - hash: "495632cad06414dfd6128b50db417a3b" + hash: "36b65658073ac2687dbd88ec7a408a98" } Frame { msec: 4848 - hash: "3559c212dd8093eee9a3a89bdf76ad3e" + hash: "84e165f9f2c55c5c51a260b11ca195c2" } Frame { msec: 4864 - hash: "0bd6b99421ccff9de159dcec4c3ce4ea" + hash: "c11cfcfda6f161d058a3d9e93349b578" } Frame { msec: 4880 - hash: "679dae270660877a3d195a541bb97e26" + hash: "0568f8c0e1fa51b7547790a7f4978ea3" } Frame { msec: 4896 - hash: "412339cfe7dff6b955730a499cb4292d" + hash: "b66fd97ac36ac395df74e9a0dd58d0c7" } Frame { msec: 4912 - hash: "2415f3a5784d4f785760605bf169d774" + hash: "31b5b3d68e452ffd90e9804ff9e9a264" } Frame { msec: 4928 - hash: "7bf2a320ffad5ea3d9db7a203e303b04" + hash: "3cc8791e419986e1e913d4e153243fb2" } Frame { msec: 4944 - hash: "51bb398194848c6a31456eb1b2bd4c52" + hash: "ff1b3ce85bc9f3dd3feb90fa31c3bc0a" } Frame { msec: 4960 - hash: "ee7029a8a2050fff9e61a60bd80b8a38" + hash: "d3ae969e538c642d82662d08ef05964e" } Frame { msec: 4976 - hash: "ec5a9b265900d814fce1aec6ac4e7742" + hash: "e3948b393a3778066a90197b31c71e51" } Frame { msec: 4992 - hash: "b829fc01b5a16034fa682d19b23d1ce2" + hash: "e3948b393a3778066a90197b31c71e51" } Frame { msec: 5008 - hash: "b829fc01b5a16034fa682d19b23d1ce2" + hash: "e3948b393a3778066a90197b31c71e51" } Frame { msec: 5024 - hash: "b829fc01b5a16034fa682d19b23d1ce2" + hash: "e3948b393a3778066a90197b31c71e51" } Frame { msec: 5040 - hash: "b829fc01b5a16034fa682d19b23d1ce2" + hash: "e3948b393a3778066a90197b31c71e51" } Frame { msec: 5056 - hash: "b829fc01b5a16034fa682d19b23d1ce2" + hash: "e3948b393a3778066a90197b31c71e51" } Frame { msec: 5072 - hash: "b829fc01b5a16034fa682d19b23d1ce2" + hash: "d3ae969e538c642d82662d08ef05964e" } Frame { msec: 5088 - hash: "ec5a9b265900d814fce1aec6ac4e7742" + hash: "ff1b3ce85bc9f3dd3feb90fa31c3bc0a" } Frame { msec: 5104 - hash: "ee7029a8a2050fff9e61a60bd80b8a38" + hash: "3cc8791e419986e1e913d4e153243fb2" } Frame { msec: 5120 - hash: "51bb398194848c6a31456eb1b2bd4c52" + hash: "31b5b3d68e452ffd90e9804ff9e9a264" } Frame { msec: 5136 - hash: "7bf2a320ffad5ea3d9db7a203e303b04" + hash: "b66fd97ac36ac395df74e9a0dd58d0c7" } Frame { msec: 5152 - hash: "2415f3a5784d4f785760605bf169d774" + hash: "0568f8c0e1fa51b7547790a7f4978ea3" } Frame { msec: 5168 - hash: "412339cfe7dff6b955730a499cb4292d" + hash: "c11cfcfda6f161d058a3d9e93349b578" } Frame { msec: 5184 - hash: "679dae270660877a3d195a541bb97e26" - } - Key { - type: 7 - key: 16777248 - modifiers: 67108864 - text: "" - autorep: false - count: 1 + hash: "84e165f9f2c55c5c51a260b11ca195c2" } Frame { msec: 5200 - hash: "0bd6b99421ccff9de159dcec4c3ce4ea" + hash: "36b65658073ac2687dbd88ec7a408a98" } Frame { msec: 5216 - hash: "3559c212dd8093eee9a3a89bdf76ad3e" + hash: "c6c90915393fc7cb0aaa464caefbadb0" } Frame { msec: 5232 - hash: "495632cad06414dfd6128b50db417a3b" + hash: "2a55b52db02d97963d382c9862307384" } Frame { msec: 5248 - hash: "a968bc553ccd8836f676fd0483bf2210" + hash: "7a9b2057760e48d5f9cfdc79b08866d8" } Frame { msec: 5264 - hash: "99b7a5c76ef5592a9891bcf0659d0070" + hash: "fd3fd655785c4e3c470f742451e3470f" } Frame { msec: 5280 - hash: "a81308d5fb238aef9379a65d1fb3a8a4" + hash: "b4e273b6415e3951eab2f831100b0bb2" } Frame { msec: 5296 - hash: "569ffbf933a4f1c4e5358e2d20276991" + hash: "a0cb3f796fddf7100ca19aee3dedbea8" } Frame { msec: 5312 - hash: "cb6bd6af65abc600cfd55448047e3065" + hash: "a242c9d5ed7f9aef0a0622dcb66d0a7e" } Frame { msec: 5328 - hash: "f340d3cd51c2af8cb80e50bd3ae92e91" + hash: "9aa569f7b251371bdd1cb05c8d3aab28" } Frame { msec: 5344 - hash: "df82f608f1a1a7be0be0c7e34947ff97" + hash: "5a11ec8a0485a018ebe317e01136e4a5" } Frame { msec: 5360 - hash: "d7c05b96d5824c965833548f43aa1b93" + hash: "62d4bfa65bfdc50d24d9204f4df7bad8" } Frame { msec: 5376 - hash: "f282bd326e2b0f0f23e39f947f3b1981" + hash: "e189dc0dae9457a6af5082c6ccf451b6" } Frame { msec: 5392 - hash: "aac603e2c8251ca60b3cf66e89d7a98d" + hash: "86ed2aa2428feb9c6c14ad2a74e97978" } Frame { msec: 5408 - hash: "49bb3dab6af1c472dc5af65671bffcaa" + hash: "2f9ed13e8a0d0edf098b05db02c04bdf" } Frame { msec: 5424 - hash: "660feb1c8ad047e1e4c5544938ff6d22" + hash: "23edee3af8f1904558863d37c520555a" } Frame { msec: 5440 - hash: "b9cc37e6cd6753b59d5dda833498a386" + hash: "7aed794eae2f0c65342f190ed4d4f889" } Frame { msec: 5456 - hash: "67fa847fb21ab53acf97167678fabd7c" + hash: "0fa12b48c08266f50e77506e4136dd56" } Frame { msec: 5472 - hash: "1b0814a42f774b608a14340a343b0efd" - } - Key { - type: 7 - key: 16777249 - modifiers: 0 - text: "" - autorep: false - count: 1 + hash: "679ee2b26a118ab53a84fa116de09edf" } Frame { msec: 5488 - hash: "5941d1b6e76646ac9553ac5a1e15f8cf" + hash: "b9dcdd88fba70636cbcae160edcc0136" } Frame { msec: 5504 - hash: "3867b05b3624edd19f88770c680bbb08" + hash: "90af75eeef63ae67e9f6ff1a61d7cca3" } Frame { msec: 5520 - hash: "79dda9805824211ed611ee6b93a29524" + hash: "29d80ae32451c24b655c4d1fd01d3aa1" } Frame { msec: 5536 - hash: "0fb4e946ca6a4f1bfbc2e7480c603368" + hash: "c73fe137644cbc006d0b5274b72faa46" } Frame { msec: 5552 - hash: "b2aeab24ffb0353f27ba9b5e9a588486" + hash: "8a4d76ae60f5d720a382cced2f6a2b5e" } Frame { msec: 5568 - hash: "24a43d9fadec6f90d81d17ae83c81da7" + hash: "a1efa0d424d568d338c6db9fc095c2fb" } Frame { msec: 5584 - hash: "1ec444e3ccf78551ba861a84731644aa" + hash: "205cafcabb29b78a6db3dcaf44a74ab6" } Frame { msec: 5600 - hash: "993e51bcfac06cdcabf38c709975412c" + hash: "7507a3d2158d4cc68454c85922526871" } Frame { msec: 5616 - hash: "263dbd9d4e4ca9985ca48bfa6e554fd2" - } - Key { - type: 6 - key: 16777234 - modifiers: 0 - text: "" - autorep: false - count: 1 + hash: "7135a6a7999e82cb81e39228805332ee" } Frame { msec: 5632 - hash: "671efc2d0c287f2a56c5faaa56f6e7c2" + hash: "ac2b714b5f32d2b911f31690d7082dc1" } Frame { msec: 5648 - hash: "e69a852f1d52940dd64232f238f8dbd8" + hash: "5cb1ae6d86aafdf11284480c81b939dc" } Frame { msec: 5664 - hash: "fc2b51f6c152a6ed7f97cefe27f14a24" + hash: "ac705840cc94eb4af7a52d62649d0157" } Frame { msec: 5680 - hash: "451e320a37356a5f3573938b759ff58b" + hash: "8c2ebcd80e26ac7b9d25be486f54c4ce" } Frame { msec: 5696 - hash: "65ebec0c7fdbefbdcc35d9c097bcd654" + hash: "12b84aa02dbbab3592d3eb3cb6884b41" } Frame { msec: 5712 - hash: "b3f5c16c8a56a03570a45189a1ec4a0f" + hash: "675043ddde6ed65a3ec4ed093be1e760" } Frame { msec: 5728 - hash: "7891672c5ed584de49de4201c8ca81d9" + hash: "478126aeef5ddae9c0a77d08294cf3f2" } Frame { msec: 5744 - hash: "2602e01ad276f5e9116ed226ac87af48" + hash: "0b43af73d91a500ccdf27b4347b9bc47" } Frame { msec: 5760 image: "cursorDelegate.5.png" } - Key { - type: 7 - key: 16777234 - modifiers: 0 - text: "" - autorep: false - count: 1 - } Frame { msec: 5776 - hash: "6f7fcb30e62b0785ae650ee1946125f3" + hash: "a6d8708d08bedf0cab5230d6f2936936" } Frame { msec: 5792 - hash: "5c3819bcf8a96b0178d18c41bc7ebda7" + hash: "02e0646024aeef6f01b7541b15267baa" } Frame { msec: 5808 - hash: "f8705997d6c89ee004de6fbc7686acd0" + hash: "da6717c94b46ad7a647c445c06314b0d" } Frame { msec: 5824 - hash: "5b495514831825aceed8ac715357c6ba" + hash: "2ed12d49d72884160ebbf6b6d0e15a9d" } Frame { msec: 5840 - hash: "f43c0dcafe7e737951120e25f2af38ea" + hash: "a1fbc3333b7f742a8336a6fcbad156c9" } Frame { msec: 5856 - hash: "4188c6571af3251253213fc1c720c383" + hash: "25cac33299d58cdd7775e8b75410085e" } Frame { msec: 5872 - hash: "911d4a2352b18376c60545b96a890948" + hash: "5d81833eb342f632945c0571e18cb1f9" } Frame { msec: 5888 - hash: "3a6e6338cba1cb4619c7564ca49f2b30" + hash: "23f6f2a7d971494af43a0fb97dbf8fb5" } Frame { msec: 5904 - hash: "f3ebf35352f01bd73bbfcecdc49dc70d" + hash: "216b70d02a4685dc07258454bb4e7c85" } Frame { msec: 5920 - hash: "796916dcd72a5087199c2b8ff576d9cf" + hash: "1e06742af58d6e63facdc599c46e11b1" } Frame { msec: 5936 - hash: "7d505004e5ec31546b7ae574043ba6f2" + hash: "00f8ac72d3794ed8d66db987402ecde0" } Frame { msec: 5952 - hash: "c98b5d6b67b559f3de28f9298cc95f7b" + hash: "42ab5f162acba94f563823f5be1e37d2" } Frame { msec: 5968 - hash: "36f141bcc565b1f01b23cc29013a696f" + hash: "3272b97fdc54eb9f3590e7bbe4ac457d" } Frame { msec: 5984 - hash: "7e521964f15c4963ff3f99741703e9b5" + hash: "e3948b393a3778066a90197b31c71e51" } Frame { msec: 6000 @@ -1758,687 +1694,1487 @@ VisualTest { } Frame { msec: 6064 - hash: "e3948b393a3778066a90197b31c71e51" + hash: "3272b97fdc54eb9f3590e7bbe4ac457d" } Frame { msec: 6080 - hash: "7e521964f15c4963ff3f99741703e9b5" + hash: "42ab5f162acba94f563823f5be1e37d2" } Frame { msec: 6096 - hash: "36f141bcc565b1f01b23cc29013a696f" + hash: "00f8ac72d3794ed8d66db987402ecde0" } Frame { msec: 6112 - hash: "c98b5d6b67b559f3de28f9298cc95f7b" + hash: "1e06742af58d6e63facdc599c46e11b1" } Frame { msec: 6128 - hash: "7d505004e5ec31546b7ae574043ba6f2" + hash: "216b70d02a4685dc07258454bb4e7c85" } Frame { msec: 6144 - hash: "796916dcd72a5087199c2b8ff576d9cf" + hash: "23f6f2a7d971494af43a0fb97dbf8fb5" } Frame { msec: 6160 - hash: "f3ebf35352f01bd73bbfcecdc49dc70d" + hash: "5d81833eb342f632945c0571e18cb1f9" } Frame { msec: 6176 - hash: "3a6e6338cba1cb4619c7564ca49f2b30" + hash: "25cac33299d58cdd7775e8b75410085e" } Frame { msec: 6192 - hash: "911d4a2352b18376c60545b96a890948" + hash: "a1fbc3333b7f742a8336a6fcbad156c9" } Frame { msec: 6208 - hash: "4188c6571af3251253213fc1c720c383" + hash: "2ed12d49d72884160ebbf6b6d0e15a9d" } Frame { msec: 6224 - hash: "f43c0dcafe7e737951120e25f2af38ea" + hash: "da6717c94b46ad7a647c445c06314b0d" } Frame { msec: 6240 - hash: "5b495514831825aceed8ac715357c6ba" + hash: "02e0646024aeef6f01b7541b15267baa" } Frame { msec: 6256 - hash: "f8705997d6c89ee004de6fbc7686acd0" + hash: "a6d8708d08bedf0cab5230d6f2936936" } Frame { msec: 6272 - hash: "5c3819bcf8a96b0178d18c41bc7ebda7" + hash: "68d459091a85f24ece39a207e395039b" } Frame { msec: 6288 - hash: "6f7fcb30e62b0785ae650ee1946125f3" + hash: "0b43af73d91a500ccdf27b4347b9bc47" } Frame { msec: 6304 - hash: "70fb0fd5e9fe08c83be78c411c4dd8c5" + hash: "478126aeef5ddae9c0a77d08294cf3f2" } Frame { msec: 6320 - hash: "2602e01ad276f5e9116ed226ac87af48" + hash: "675043ddde6ed65a3ec4ed093be1e760" } Frame { msec: 6336 - hash: "7891672c5ed584de49de4201c8ca81d9" + hash: "12b84aa02dbbab3592d3eb3cb6884b41" } Frame { msec: 6352 - hash: "b3f5c16c8a56a03570a45189a1ec4a0f" + hash: "8c2ebcd80e26ac7b9d25be486f54c4ce" } Frame { msec: 6368 - hash: "65ebec0c7fdbefbdcc35d9c097bcd654" + hash: "ac705840cc94eb4af7a52d62649d0157" } Frame { msec: 6384 - hash: "451e320a37356a5f3573938b759ff58b" + hash: "5cb1ae6d86aafdf11284480c81b939dc" } Frame { msec: 6400 - hash: "fc2b51f6c152a6ed7f97cefe27f14a24" + hash: "ac2b714b5f32d2b911f31690d7082dc1" } Frame { msec: 6416 - hash: "e69a852f1d52940dd64232f238f8dbd8" + hash: "7135a6a7999e82cb81e39228805332ee" } Frame { msec: 6432 - hash: "671efc2d0c287f2a56c5faaa56f6e7c2" + hash: "7507a3d2158d4cc68454c85922526871" } Frame { msec: 6448 - hash: "0b045e2e765ecda25f1fd2167a13de1e" + hash: "205cafcabb29b78a6db3dcaf44a74ab6" } Frame { msec: 6464 - hash: "015123141cc96da6f1b574e8a0e6e113" + hash: "a1efa0d424d568d338c6db9fc095c2fb" } Frame { msec: 6480 - hash: "bb6eb1a1e6386779d1498a4972741e92" + hash: "8a4d76ae60f5d720a382cced2f6a2b5e" } Frame { msec: 6496 - hash: "1f8d534ed508b2c1fcbce82a1756633f" + hash: "c73fe137644cbc006d0b5274b72faa46" } Frame { msec: 6512 - hash: "63f2430b48f3d9fe68d7d408b09167b2" + hash: "29d80ae32451c24b655c4d1fd01d3aa1" } Frame { msec: 6528 - hash: "4ea2ca59536c1ab74a6f515bb7291f49" + hash: "90af75eeef63ae67e9f6ff1a61d7cca3" } Frame { msec: 6544 - hash: "122c7a1c61fc2ec3ad0b36a14f69d63f" + hash: "b9dcdd88fba70636cbcae160edcc0136" } Frame { msec: 6560 - hash: "bf648f584aa05ef228fffbdad91416a1" + hash: "679ee2b26a118ab53a84fa116de09edf" } Frame { msec: 6576 - hash: "a58dea8435926ea2a8a52890df980a5b" + hash: "0fa12b48c08266f50e77506e4136dd56" } Frame { msec: 6592 - hash: "3fdf5ed8baf9b19a11b1bc192b36e78b" + hash: "7aed794eae2f0c65342f190ed4d4f889" } Frame { msec: 6608 - hash: "04524fc53f8c06430e9ee8730d4b0ce4" + hash: "23edee3af8f1904558863d37c520555a" } Frame { msec: 6624 - hash: "de3669854e357a1d27b9fde41f47595d" + hash: "2f9ed13e8a0d0edf098b05db02c04bdf" } Frame { msec: 6640 - hash: "498152d87a9e608f3dd1227a47a53938" + hash: "86ed2aa2428feb9c6c14ad2a74e97978" } Frame { msec: 6656 - hash: "29d1a7c3ca714f2b5555c2b8f4e16acf" + hash: "e189dc0dae9457a6af5082c6ccf451b6" } Frame { msec: 6672 - hash: "5424fd998bcf94f5e159ae553b8186f0" + hash: "62d4bfa65bfdc50d24d9204f4df7bad8" + } + Mouse { + type: 2 + button: 1 + buttons: 1 + x: 271; y: 89 + modifiers: 0 + sendToViewport: true } Frame { msec: 6688 - hash: "6711c4d7418d4848f4b7f340371d30ea" + hash: "680f51f63c4b11a247a668eb7bbd2b62" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 271; y: 92 + modifiers: 0 + sendToViewport: true } Frame { msec: 6704 - hash: "ed681e1b35e373a89195fd121767a5a2" + hash: "7640c78a286b0b7bdf2ec9117ceced4a" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 271; y: 95 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 270; y: 99 + modifiers: 0 + sendToViewport: true } Frame { msec: 6720 image: "cursorDelegate.6.png" } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 269; y: 103 + modifiers: 0 + sendToViewport: true + } Frame { msec: 6736 - hash: "d06abd6fec1ac1ea0ce4b37a5296b18d" + hash: "bfc1b03df244839a012e8302dc07764f" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 268; y: 107 + modifiers: 0 + sendToViewport: true } Frame { msec: 6752 - hash: "7fcd2288e60023a04fc2c1c518a8ce24" + hash: "de09380dd57c58ae99fbdba169a19975" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 266; y: 114 + modifiers: 0 + sendToViewport: true } Frame { msec: 6768 - hash: "a2d160393610cb55e2f1651ef247558b" + hash: "54f7f94b5cdf1becb2ee61d7f6f02c0e" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 266; y: 117 + modifiers: 0 + sendToViewport: true } Frame { msec: 6784 - hash: "04645b3dba9272950509585fb8ec3611" + hash: "4220dde85eb1c027366efd0798927e8d" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 265; y: 117 + modifiers: 0 + sendToViewport: true } Frame { msec: 6800 - hash: "059c111be9c62b81115218ede8328083" + hash: "512b9746ae4482557b8cef9f99905954" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 263; y: 118 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 261; y: 118 + modifiers: 0 + sendToViewport: true } Frame { msec: 6816 - hash: "1f2e9a90eef3042ad97f6180520f19cf" + hash: "e7346d8f223684143a0940def878b874" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 259; y: 118 + modifiers: 0 + sendToViewport: true } Frame { msec: 6832 - hash: "d8b3e6b235f3510768b0171596c0fc3c" + hash: "7e7382302681cd29a2c6959a3a704660" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 256; y: 118 + modifiers: 0 + sendToViewport: true } Frame { msec: 6848 - hash: "be6694a7989438ae34bff4271eec42b5" + hash: "ef8f7dfdd4e70100ecaecca4055d8f52" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 250; y: 118 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 243; y: 118 + modifiers: 0 + sendToViewport: true } Frame { msec: 6864 - hash: "e04893deffc38729617a66ffa33dbf9f" + hash: "f5cacabb78b88c31af1a1b1e6f60069b" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 235; y: 119 + modifiers: 0 + sendToViewport: true } Frame { msec: 6880 - hash: "a1fe3db1c5e7d137b40dea619f1766a9" + hash: "b016ef2306b0a721df86b6916e7953e4" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 227; y: 121 + modifiers: 0 + sendToViewport: true } Frame { msec: 6896 - hash: "d54ad0b2f40faf7f5639f78acec0d000" + hash: "a78e9b0b93569b77b0659c771336971a" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 218; y: 124 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 209; y: 126 + modifiers: 0 + sendToViewport: true } Frame { msec: 6912 - hash: "490d1c455b155648d430d45e291a4c91" + hash: "b957ab07bcbaeffca963d9148130a965" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 200; y: 126 + modifiers: 0 + sendToViewport: true } Frame { msec: 6928 - hash: "5c1f0a3a19152b7e43969eb89507820c" + hash: "140bc4b078bac52d6903bdfdfc35a94c" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 190; y: 127 + modifiers: 0 + sendToViewport: true } Frame { msec: 6944 - hash: "ec2c1e1aef0e1e0116a4feceb31c8d7b" + hash: "047c3a7403ae88cceb7fc875793d1ed8" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 181; y: 127 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 172; y: 127 + modifiers: 0 + sendToViewport: true } Frame { msec: 6960 - hash: "e92c44fb4ad550bb7421b831363bf4d4" + hash: "03d48446aaf94450a3a9a8f1e956493f" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 163; y: 127 + modifiers: 0 + sendToViewport: true } Frame { msec: 6976 - hash: "8f9dacb4e67808ff78fcdd62274c0c7c" + hash: "6672e47aa6a975fbd82d2fe5bc99bbaf" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 154; y: 126 + modifiers: 0 + sendToViewport: true } Frame { msec: 6992 - hash: "e3948b393a3778066a90197b31c71e51" + hash: "3bc73489d06e446d4c96117756a59227" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 146; y: 124 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 138; y: 121 + modifiers: 0 + sendToViewport: true } Frame { msec: 7008 - hash: "e3948b393a3778066a90197b31c71e51" + hash: "aed995a61df4a1c189ef2962000d02de" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 130; y: 119 + modifiers: 0 + sendToViewport: true } Frame { msec: 7024 - hash: "e3948b393a3778066a90197b31c71e51" + hash: "aed995a61df4a1c189ef2962000d02de" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 123; y: 118 + modifiers: 0 + sendToViewport: true } Frame { msec: 7040 - hash: "e3948b393a3778066a90197b31c71e51" + hash: "74f0bbe92a23146fbdbd365edd5741c8" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 118; y: 118 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 114; y: 118 + modifiers: 0 + sendToViewport: true } Frame { msec: 7056 - hash: "e3948b393a3778066a90197b31c71e51" + hash: "74f0bbe92a23146fbdbd365edd5741c8" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 110; y: 118 + modifiers: 0 + sendToViewport: true } Frame { msec: 7072 - hash: "e3948b393a3778066a90197b31c71e51" + hash: "6456208c6367687b8dc701791eccd7d4" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 108; y: 117 + modifiers: 0 + sendToViewport: true } Frame { msec: 7088 - hash: "8f9dacb4e67808ff78fcdd62274c0c7c" + hash: "376b59dc6e00a51bc9f2d4cfa2718e57" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 107; y: 117 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 106; y: 117 + modifiers: 0 + sendToViewport: true } Frame { msec: 7104 - hash: "e92c44fb4ad550bb7421b831363bf4d4" + hash: "fb7bc3401f70ce6eee131c9c7510e1fe" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 105; y: 117 + modifiers: 0 + sendToViewport: true } Frame { msec: 7120 - hash: "ec2c1e1aef0e1e0116a4feceb31c8d7b" + hash: "675a419f0cd8351d6b2a65daf7d2707a" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 104; y: 117 + modifiers: 0 + sendToViewport: true } Frame { msec: 7136 - hash: "5c1f0a3a19152b7e43969eb89507820c" + hash: "2f7951abac64e0f10d3b66d04966b6e9" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 103; y: 117 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 102; y: 118 + modifiers: 0 + sendToViewport: true } Frame { msec: 7152 - hash: "490d1c455b155648d430d45e291a4c91" + hash: "1f8daa78c58ae11ec105bd87681c1762" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 101; y: 118 + modifiers: 0 + sendToViewport: true } Frame { msec: 7168 - hash: "d54ad0b2f40faf7f5639f78acec0d000" + hash: "23ab196ed43219c26d94431698f6ac8d" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 100; y: 118 + modifiers: 0 + sendToViewport: true } Frame { msec: 7184 - hash: "a1fe3db1c5e7d137b40dea619f1766a9" + hash: "9581e2695f4818e063ec032cb5bb6b7f" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 100; y: 119 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 100; y: 119 + modifiers: 0 + sendToViewport: true } Frame { msec: 7200 - hash: "e04893deffc38729617a66ffa33dbf9f" + hash: "6752cd7c5383e0ccc9b08f79db6ac310" } Frame { msec: 7216 - hash: "be6694a7989438ae34bff4271eec42b5" + hash: "51f5675e0fb1410c5a8ec03a86b42681" } Frame { msec: 7232 - hash: "d8b3e6b235f3510768b0171596c0fc3c" + hash: "c3c23213b2649b5ccabd8e420a251e00" } Frame { msec: 7248 - hash: "1f2e9a90eef3042ad97f6180520f19cf" + hash: "02ceab31171fe983a10e862b53aea16f" } Frame { msec: 7264 - hash: "059c111be9c62b81115218ede8328083" + hash: "8a774dda9a1bc16bd270724e570daf20" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 100; y: 119 + modifiers: 0 + sendToViewport: true } Frame { msec: 7280 - hash: "04645b3dba9272950509585fb8ec3611" + hash: "2b6b892cebfcce14a9db485fecf16703" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 101; y: 119 + modifiers: 0 + sendToViewport: true } Frame { msec: 7296 - hash: "a2d160393610cb55e2f1651ef247558b" + hash: "8b8e6d3362f018cbd9b487f03cfb7a22" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 101; y: 119 + modifiers: 0 + sendToViewport: true } Frame { msec: 7312 - hash: "7fcd2288e60023a04fc2c1c518a8ce24" + hash: "a8477a9429633384073618cc60841e6c" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 102; y: 119 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 102; y: 119 + modifiers: 0 + sendToViewport: true } Frame { msec: 7328 - hash: "d06abd6fec1ac1ea0ce4b37a5296b18d" + hash: "59558c6665b73f02809259e039b4423a" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 103; y: 119 + modifiers: 0 + sendToViewport: true } Frame { msec: 7344 - hash: "4073a65ce2169328174ff8acc0904a56" + hash: "93540071bab8a970a929d209f628970e" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 104; y: 119 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 105; y: 119 + modifiers: 0 + sendToViewport: true } Frame { msec: 7360 - hash: "ed681e1b35e373a89195fd121767a5a2" + hash: "78cdb0a05583150ea33040d32d95de47" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 107; y: 119 + modifiers: 0 + sendToViewport: true } Frame { msec: 7376 - hash: "6711c4d7418d4848f4b7f340371d30ea" + hash: "4b1ee34985d3f5b8dd4355678ad39af4" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 110; y: 119 + modifiers: 0 + sendToViewport: true } Frame { msec: 7392 - hash: "5424fd998bcf94f5e159ae553b8186f0" + hash: "5484e7699c388eabf0311de49706397f" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 113; y: 119 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 117; y: 118 + modifiers: 0 + sendToViewport: true } Frame { msec: 7408 - hash: "29d1a7c3ca714f2b5555c2b8f4e16acf" + hash: "dee6c2380f398323002ebb43a38d27e8" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 124; y: 118 + modifiers: 0 + sendToViewport: true } Frame { msec: 7424 - hash: "498152d87a9e608f3dd1227a47a53938" + hash: "d66a27728e7fd3c616842613a034c5a0" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 131; y: 118 + modifiers: 0 + sendToViewport: true } Frame { msec: 7440 - hash: "de3669854e357a1d27b9fde41f47595d" + hash: "5f851161f99fcf5b67cbe008a3faf411" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 138; y: 118 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 144; y: 118 + modifiers: 0 + sendToViewport: true } Frame { msec: 7456 - hash: "04524fc53f8c06430e9ee8730d4b0ce4" + hash: "013e949285cfa9edb34ab14e26753230" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 148; y: 118 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 152; y: 117 + modifiers: 0 + sendToViewport: true } Frame { msec: 7472 - hash: "3fdf5ed8baf9b19a11b1bc192b36e78b" + hash: "5b50acdcbd49969bcce2cfab6f9af380" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 155; y: 117 + modifiers: 0 + sendToViewport: true } Frame { msec: 7488 - hash: "a58dea8435926ea2a8a52890df980a5b" + hash: "d4aeb24211007cfc01512d289ae7aa01" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 157; y: 116 + modifiers: 0 + sendToViewport: true } Frame { msec: 7504 - hash: "bf648f584aa05ef228fffbdad91416a1" + hash: "6f1b7e12bbf54586e9a48989145f3274" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 159; y: 116 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 162; y: 116 + modifiers: 0 + sendToViewport: true } Frame { msec: 7520 - hash: "122c7a1c61fc2ec3ad0b36a14f69d63f" + hash: "0e09c7468bc03770c6cc7f0fba1ee9c0" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 163; y: 116 + modifiers: 0 + sendToViewport: true } Frame { msec: 7536 - hash: "4ea2ca59536c1ab74a6f515bb7291f49" + hash: "0fc4522bbf1a2e72002eb0a3c7224e1f" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 165; y: 116 + modifiers: 0 + sendToViewport: true } Frame { msec: 7552 - hash: "63f2430b48f3d9fe68d7d408b09167b2" + hash: "91727292aaa314bf263c618a577b7f74" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 166; y: 116 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 168; y: 116 + modifiers: 0 + sendToViewport: true } Frame { msec: 7568 - hash: "1f8d534ed508b2c1fcbce82a1756633f" + hash: "a78fb2545d11c521a50a10fd2d1700a7" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 171; y: 116 + modifiers: 0 + sendToViewport: true } Frame { msec: 7584 - hash: "bb6eb1a1e6386779d1498a4972741e92" + hash: "c207a291b47628921125acd4b8ed5ea8" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 174; y: 116 + modifiers: 0 + sendToViewport: true } Frame { msec: 7600 - hash: "015123141cc96da6f1b574e8a0e6e113" + hash: "9a8e3df504ba36e82c51d71a3f5ce268" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 177; y: 116 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 183; y: 117 + modifiers: 0 + sendToViewport: true } Frame { msec: 7616 - hash: "0b045e2e765ecda25f1fd2167a13de1e" + hash: "8cd9da94db91da50ae457d41866a32ba" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 188; y: 118 + modifiers: 0 + sendToViewport: true } Frame { msec: 7632 - hash: "671efc2d0c287f2a56c5faaa56f6e7c2" + hash: "9e52b6fdc3ce4ad9c5986e47ffa762fc" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 193; y: 118 + modifiers: 0 + sendToViewport: true } Frame { msec: 7648 - hash: "e69a852f1d52940dd64232f238f8dbd8" + hash: "a1aff55bffb76bd4e2ac9ee482a03978" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 198; y: 119 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 206; y: 119 + modifiers: 0 + sendToViewport: true } Frame { msec: 7664 - hash: "fc2b51f6c152a6ed7f97cefe27f14a24" + hash: "ba52431b72683cfbf0cc795a2407630e" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 209; y: 119 + modifiers: 0 + sendToViewport: true } Frame { msec: 7680 image: "cursorDelegate.7.png" } - Frame { - msec: 7696 - hash: "65ebec0c7fdbefbdcc35d9c097bcd654" + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 211; y: 119 + modifiers: 0 + sendToViewport: true } Frame { - msec: 7712 - hash: "b3f5c16c8a56a03570a45189a1ec4a0f" + msec: 7696 + hash: "eb5a19fbfbdceef233ed3c86c782817c" } - Frame { - msec: 7728 - hash: "7891672c5ed584de49de4201c8ca81d9" + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 212; y: 119 + modifiers: 0 + sendToViewport: true } - Frame { - msec: 7744 - hash: "2602e01ad276f5e9116ed226ac87af48" + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 212; y: 118 + modifiers: 0 + sendToViewport: true } Frame { - msec: 7760 - hash: "70fb0fd5e9fe08c83be78c411c4dd8c5" + msec: 7712 + hash: "7c8f3f2e96fa6a63867cb716061c8c77" } Mouse { - type: 2 - button: 1 + type: 5 + button: 0 buttons: 1 - x: 164; y: 102 + x: 213; y: 118 modifiers: 0 sendToViewport: true } + Frame { + msec: 7728 + hash: "96b0007f857aa19b41d184a7c7931f69" + } Mouse { type: 5 button: 0 buttons: 1 - x: 164; y: 102 + x: 214; y: 118 modifiers: 0 sendToViewport: true } Frame { - msec: 7776 - hash: "c25cffe6e374302eacd7165238caf0db" + msec: 7744 + hash: "96201712b9ffbd9bfbebb5a5b7e23aba" } Mouse { type: 5 button: 0 buttons: 1 - x: 164; y: 102 + x: 215; y: 118 modifiers: 0 sendToViewport: true } Frame { + msec: 7760 + hash: "d75e13a7715d5c329a47fdb818dfdbe5" + } + Frame { + msec: 7776 + hash: "c8fa0c2d9e6aa1f3a33e76a31534359d" + } + Frame { msec: 7792 - hash: "794f174d587ae9108ec8a9023e7f8ff0" + hash: "03b11cc517f84c58a681906fdda98347" } Mouse { type: 5 button: 0 buttons: 1 - x: 164; y: 101 + x: 215; y: 118 modifiers: 0 sendToViewport: true } - Frame { - msec: 7808 - hash: "835d3309c4a711909cc0521c1f0798c0" - } Mouse { - type: 3 - button: 1 - buttons: 0 - x: 164; y: 101 + type: 5 + button: 0 + buttons: 1 + x: 215; y: 118 modifiers: 0 sendToViewport: true } Frame { + msec: 7808 + hash: "74cdf8af5d56216ad422951a56661536" + } + Frame { msec: 7824 - hash: "57f62b46d88d06f6bcdd34cf07a6820f" + hash: "fcac2575aad872eada547508f312f09c" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 216; y: 118 + modifiers: 0 + sendToViewport: true } Frame { msec: 7840 - hash: "5743998cf812d561f0209eca33fb474f" + hash: "7d76aec1f29d2d6745585be8ef113be5" } Frame { msec: 7856 - hash: "66416d17699d9a26daf0e45375b2a154" + hash: "2b4fe4f39433671a9bc440efa1c589a8" } Frame { msec: 7872 - hash: "9ac94ac80c1f1b706da5bca743563c53" + hash: "55a166f920e76173e14121d848a11aa0" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 216; y: 117 + modifiers: 0 + sendToViewport: true } Frame { msec: 7888 - hash: "d1bd3a835c8fe59e97af0fb21250052b" + hash: "f764df8ecd68161d3529800e922254f4" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 216; y: 116 + modifiers: 0 + sendToViewport: true } Frame { msec: 7904 - hash: "7e6e3fd8b7e438161d6bca2b193df392" + hash: "749caf21947e915b163f72e6fd190032" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 216; y: 116 + modifiers: 0 + sendToViewport: true } Frame { msec: 7920 - hash: "781249aafe428918f11579b984f6f767" + hash: "c350910df8ae4fea573a20d334fd3401" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 217; y: 116 + modifiers: 0 + sendToViewport: true } Frame { msec: 7936 - hash: "e9f9ccc0b95bfb9e884087d89327b011" + hash: "d177da450f1d380a6d2406e2393b9582" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 218; y: 115 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 218; y: 115 + modifiers: 0 + sendToViewport: true } Frame { msec: 7952 - hash: "6cc9b57ecb03fa8df8db486e8533ab53" + hash: "bf3da78d7cac19daf2d5150b77840b1e" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 219; y: 114 + modifiers: 0 + sendToViewport: true } Frame { msec: 7968 - hash: "c77f11a88d5a07b7896f38e896d6fcca" + hash: "22e337b0b81b18045a205355da6981ad" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 220; y: 114 + modifiers: 0 + sendToViewport: true } Frame { msec: 7984 - hash: "413fd5cc3952ec8a4838db21636fe853" + hash: "66c66927d2fc590fc43c146a403c1ccb" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 221; y: 114 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 222; y: 113 + modifiers: 0 + sendToViewport: true } Frame { msec: 8000 - hash: "e3948b393a3778066a90197b31c71e51" + hash: "66c66927d2fc590fc43c146a403c1ccb" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 222; y: 113 + modifiers: 0 + sendToViewport: true } Frame { msec: 8016 - hash: "e3948b393a3778066a90197b31c71e51" + hash: "66c66927d2fc590fc43c146a403c1ccb" } Frame { msec: 8032 - hash: "e3948b393a3778066a90197b31c71e51" + hash: "66c66927d2fc590fc43c146a403c1ccb" } Frame { msec: 8048 - hash: "e3948b393a3778066a90197b31c71e51" + hash: "66c66927d2fc590fc43c146a403c1ccb" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 222; y: 114 + modifiers: 0 + sendToViewport: true } Frame { msec: 8064 - hash: "e3948b393a3778066a90197b31c71e51" + hash: "22e337b0b81b18045a205355da6981ad" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 222; y: 114 + modifiers: 0 + sendToViewport: true } Frame { msec: 8080 - hash: "413fd5cc3952ec8a4838db21636fe853" + hash: "bf3da78d7cac19daf2d5150b77840b1e" } Frame { msec: 8096 - hash: "c77f11a88d5a07b7896f38e896d6fcca" + hash: "d177da450f1d380a6d2406e2393b9582" } Frame { msec: 8112 - hash: "6cc9b57ecb03fa8df8db486e8533ab53" + hash: "c350910df8ae4fea573a20d334fd3401" } Frame { msec: 8128 - hash: "e9f9ccc0b95bfb9e884087d89327b011" + hash: "749caf21947e915b163f72e6fd190032" + } + Mouse { + type: 3 + button: 1 + buttons: 0 + x: 222; y: 114 + modifiers: 0 + sendToViewport: true } Frame { msec: 8144 - hash: "781249aafe428918f11579b984f6f767" + hash: "f764df8ecd68161d3529800e922254f4" } Frame { msec: 8160 - hash: "7e6e3fd8b7e438161d6bca2b193df392" + hash: "55a166f920e76173e14121d848a11aa0" } Frame { msec: 8176 - hash: "d1bd3a835c8fe59e97af0fb21250052b" + hash: "2b4fe4f39433671a9bc440efa1c589a8" } Frame { msec: 8192 - hash: "9ac94ac80c1f1b706da5bca743563c53" + hash: "7d76aec1f29d2d6745585be8ef113be5" } Frame { msec: 8208 - hash: "66416d17699d9a26daf0e45375b2a154" + hash: "fcac2575aad872eada547508f312f09c" } Frame { msec: 8224 - hash: "5743998cf812d561f0209eca33fb474f" + hash: "74cdf8af5d56216ad422951a56661536" } Frame { msec: 8240 - hash: "57f62b46d88d06f6bcdd34cf07a6820f" + hash: "03b11cc517f84c58a681906fdda98347" } Frame { msec: 8256 - hash: "835d3309c4a711909cc0521c1f0798c0" + hash: "c8fa0c2d9e6aa1f3a33e76a31534359d" } Frame { msec: 8272 - hash: "794f174d587ae9108ec8a9023e7f8ff0" + hash: "d75e13a7715d5c329a47fdb818dfdbe5" } Frame { msec: 8288 - hash: "c25cffe6e374302eacd7165238caf0db" + hash: "96201712b9ffbd9bfbebb5a5b7e23aba" } Frame { msec: 8304 - hash: "7ff505820e8f66dc8b003cf75710b6a1" + hash: "96b0007f857aa19b41d184a7c7931f69" } Frame { msec: 8320 - hash: "9fcddf000f801428e88b1a83618f068e" + hash: "bff5b731de7c93fa0cdcefbf99beeb5e" } Frame { msec: 8336 - hash: "3f65fe21f6831c4389bb3c7b5c7d286f" + hash: "ce76704964873be1bc6a324d8a3381be" } Frame { msec: 8352 - hash: "b0fd0b46de74301ee9a670a01331ab8f" + hash: "a31b4f2a3defc968098029328de9352d" } Frame { msec: 8368 - hash: "b102a1d870c9d01d3aa1dedb5141ab7c" + hash: "295e3f40a511bd30e1c6599ead93619a" } Frame { msec: 8384 - hash: "8d8a6ee478a95b081bc8bb3a36c83ae6" + hash: "3cd74da8b04de8ec7446490dea0e4e6c" } Frame { msec: 8400 - hash: "de0d9be3a688c6180a501ff46ecb6b5c" + hash: "78a7db5a316609136d1b873d20d5dd3e" } Frame { msec: 8416 - hash: "8fd0c6f845bbec10aa98c000870e7780" + hash: "0f176fb11bfe26f872ef7103011df9e6" } Frame { msec: 8432 - hash: "8daf4c0a930c25ecea9e7ca2229afcb3" + hash: "47866013e79bc77607e0c40bf8457bed" } Frame { msec: 8448 - hash: "7b6c39763edf6e33b1565d502004e76f" + hash: "5f35467db5c5e0baf5caff90b97e2d0c" } Frame { msec: 8464 - hash: "0ea05fb7415a35786abd91fb064296ba" + hash: "fefa89763cc1ad8323fdf37b1f5f63d3" } Frame { msec: 8480 - hash: "dad17c0e3d43c8ff4eff91e584d49c8a" + hash: "b9823f88fa51944075ce6dedd695f097" } Frame { msec: 8496 - hash: "f793b590def74b7a12a7c83f24f6e9e3" + hash: "72521de21fcc57d6ccf16350b0df8eee" } Frame { msec: 8512 - hash: "2e72675a8ed8cdc1b6d2010c96df6c27" + hash: "fcd591a2e56ba5efa95b315b7bd10532" } Frame { msec: 8528 - hash: "bf0e79968356a94a3a88083e9114f99e" + hash: "5d437d59995741030e0975829712f85d" } Frame { msec: 8544 - hash: "c400f2aab375eb87812fe1f1cc4f0981" + hash: "e7189d174b181985b6aef10b8642726f" } Frame { msec: 8560 - hash: "c3ceebc2fb6ab2d9d58d87dc95227a48" + hash: "cefadbae14e573f6c83d07ffc3a5152e" + } + Mouse { + type: 2 + button: 1 + buttons: 1 + x: 277; y: 97 + modifiers: 0 + sendToViewport: true } Frame { msec: 8576 - hash: "f12917c73667797cee1a31ff3a0d2ec6" + hash: "0fa12b48c08266f50e77506e4136dd56" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 277; y: 98 + modifiers: 0 + sendToViewport: true } Frame { msec: 8592 - hash: "6462229815c38c54c2fa0170059f0251" + hash: "7aed794eae2f0c65342f190ed4d4f889" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 276; y: 98 + modifiers: 0 + sendToViewport: true } Frame { msec: 8608 - hash: "3c033a3756a903eaeb7b798ebcf58114" + hash: "23edee3af8f1904558863d37c520555a" + } + Mouse { + type: 3 + button: 1 + buttons: 0 + x: 276; y: 98 + modifiers: 0 + sendToViewport: true } Frame { msec: 8624 - hash: "543a4e616942c1e1b425a0451a13eecf" + hash: "2f9ed13e8a0d0edf098b05db02c04bdf" } Frame { msec: 8640 @@ -2446,119 +3182,87 @@ VisualTest { } Frame { msec: 8656 - hash: "fec3fa5c91ce2f540f8d72b8727a5c0c" + hash: "e189dc0dae9457a6af5082c6ccf451b6" } Frame { msec: 8672 - hash: "8d8d9bcddd2575c3e021cb83500046d3" + hash: "62d4bfa65bfdc50d24d9204f4df7bad8" } Frame { msec: 8688 - hash: "6b1988a37451e3eaf4afc6e036c03578" + hash: "5a11ec8a0485a018ebe317e01136e4a5" } Frame { msec: 8704 - hash: "9a2dfae5eb95eb402c6827d34e44f621" + hash: "9aa569f7b251371bdd1cb05c8d3aab28" } Frame { msec: 8720 - hash: "7011722afc422c184eb5316bb8887705" + hash: "a242c9d5ed7f9aef0a0622dcb66d0a7e" } Frame { msec: 8736 - hash: "32b45be3e902288ce5a4dfefec5e89a8" + hash: "a0cb3f796fddf7100ca19aee3dedbea8" } Frame { msec: 8752 - hash: "e66e3784411ff1a10026960aa7ff9611" + hash: "b4e273b6415e3951eab2f831100b0bb2" } Frame { msec: 8768 - hash: "ec8daae03b9657c53fbb7b13cdbbf926" + hash: "fd3fd655785c4e3c470f742451e3470f" } Frame { msec: 8784 - hash: "5abc3da4467bba5650c426e20c2a6d29" + hash: "7a9b2057760e48d5f9cfdc79b08866d8" } Frame { msec: 8800 - hash: "bb0b2f93de57604dfd644161d6a64291" + hash: "2a55b52db02d97963d382c9862307384" } Frame { msec: 8816 - hash: "90f28a089b566f5d4a7a2babdc24d781" + hash: "c6c90915393fc7cb0aaa464caefbadb0" } Frame { msec: 8832 - hash: "a8f5f9e040c9c77a0d024df9ee770033" + hash: "36b65658073ac2687dbd88ec7a408a98" } Frame { msec: 8848 - hash: "53e63839cb371b66dbd9f3e5837bacb9" + hash: "84e165f9f2c55c5c51a260b11ca195c2" } Frame { msec: 8864 - hash: "39e4433a8c180a26252d32471251e358" - } - Mouse { - type: 2 - button: 1 - buttons: 1 - x: 122; y: 102 - modifiers: 0 - sendToViewport: true + hash: "c11cfcfda6f161d058a3d9e93349b578" } Frame { msec: 8880 - hash: "c0ee2c1872869cde0a1af5bc1e3f6a94" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 122; y: 102 - modifiers: 0 - sendToViewport: true + hash: "0568f8c0e1fa51b7547790a7f4978ea3" } Frame { msec: 8896 - hash: "14b19098f0e65545bf7abdcb921d9e41" + hash: "b66fd97ac36ac395df74e9a0dd58d0c7" } Frame { msec: 8912 - hash: "a8cf0c43216ca34697c0074a7774cacc" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 122; y: 102 - modifiers: 0 - sendToViewport: true - } - Mouse { - type: 3 - button: 1 - buttons: 0 - x: 122; y: 102 - modifiers: 0 - sendToViewport: true + hash: "31b5b3d68e452ffd90e9804ff9e9a264" } Frame { msec: 8928 - hash: "266689d707d866864afaaf3800d94e42" + hash: "3cc8791e419986e1e913d4e153243fb2" } Frame { msec: 8944 - hash: "462698b15180ad4c75ddb89fa8d75d22" + hash: "ff1b3ce85bc9f3dd3feb90fa31c3bc0a" } Frame { msec: 8960 - hash: "759f2e9232e8ad098d22bc4c938ed7da" + hash: "d3ae969e538c642d82662d08ef05964e" } Frame { msec: 8976 - hash: "df2654ff08fb7eff69bb5afb0d94fe2e" + hash: "e3948b393a3778066a90197b31c71e51" } Frame { msec: 8992 @@ -2582,350 +3286,94 @@ VisualTest { } Frame { msec: 9072 - hash: "e3948b393a3778066a90197b31c71e51" + hash: "d3ae969e538c642d82662d08ef05964e" } Frame { msec: 9088 - hash: "df2654ff08fb7eff69bb5afb0d94fe2e" + hash: "ff1b3ce85bc9f3dd3feb90fa31c3bc0a" } Frame { msec: 9104 - hash: "759f2e9232e8ad098d22bc4c938ed7da" + hash: "3cc8791e419986e1e913d4e153243fb2" } Frame { msec: 9120 - hash: "462698b15180ad4c75ddb89fa8d75d22" + hash: "31b5b3d68e452ffd90e9804ff9e9a264" } Frame { msec: 9136 - hash: "266689d707d866864afaaf3800d94e42" + hash: "b66fd97ac36ac395df74e9a0dd58d0c7" } Frame { msec: 9152 - hash: "a8cf0c43216ca34697c0074a7774cacc" + hash: "0568f8c0e1fa51b7547790a7f4978ea3" } Frame { msec: 9168 - hash: "14b19098f0e65545bf7abdcb921d9e41" + hash: "c11cfcfda6f161d058a3d9e93349b578" } Frame { msec: 9184 - hash: "c0ee2c1872869cde0a1af5bc1e3f6a94" + hash: "84e165f9f2c55c5c51a260b11ca195c2" } Frame { msec: 9200 - hash: "31e4d2c2166ffec75002f1feda0920df" + hash: "36b65658073ac2687dbd88ec7a408a98" } Frame { msec: 9216 - hash: "bf9e90b6217efb415129bcb9bf5f89ba" + hash: "c6c90915393fc7cb0aaa464caefbadb0" } Frame { msec: 9232 - hash: "963aabb6aa02bf9cfb6ed2a5950796a4" + hash: "2a55b52db02d97963d382c9862307384" } Frame { msec: 9248 - hash: "707195521d4b224d3bbd6138bdfef96d" + hash: "7a9b2057760e48d5f9cfdc79b08866d8" } Frame { msec: 9264 - hash: "a4f98c9a277c47eacd757fcbd8508643" + hash: "fd3fd655785c4e3c470f742451e3470f" } Frame { msec: 9280 - hash: "d6103e9130fa31b1965b37bc4ab395ff" + hash: "b4e273b6415e3951eab2f831100b0bb2" } Frame { msec: 9296 - hash: "60804ced4c70ae4394c84e82a00a4ae8" + hash: "a0cb3f796fddf7100ca19aee3dedbea8" } Frame { msec: 9312 - hash: "d5a45ec320f8b4ce27fa618a9925ac15" + hash: "a242c9d5ed7f9aef0a0622dcb66d0a7e" } Frame { msec: 9328 - hash: "85ed44d1065d0a56e152b14aae860f49" + hash: "9aa569f7b251371bdd1cb05c8d3aab28" } Frame { msec: 9344 - hash: "30a986f7d3f12cfaea61f903566ac661" + hash: "5a11ec8a0485a018ebe317e01136e4a5" } Frame { msec: 9360 - hash: "2f7e086bc7fd484c86d9913f4fd7cde0" + hash: "62d4bfa65bfdc50d24d9204f4df7bad8" } Frame { msec: 9376 - hash: "af39de67e5a3974f902f115c5643970f" + hash: "e189dc0dae9457a6af5082c6ccf451b6" } Frame { msec: 9392 - hash: "5634bb6019ef82edbcaefff00ec14b08" + hash: "86ed2aa2428feb9c6c14ad2a74e97978" } Frame { msec: 9408 - hash: "7f9b86616758d1adbe67dfb054aad5cc" + hash: "2f9ed13e8a0d0edf098b05db02c04bdf" } Frame { msec: 9424 - hash: "ff22fd8ec8a56735b8e8c016204fcd46" - } - Frame { - msec: 9440 - hash: "d5038584644bf55a2875dcc37eeb6d07" - } - Frame { - msec: 9456 - hash: "709c2e50099df7248df4fef946e96432" - } - Frame { - msec: 9472 - hash: "67fc71c16d0b9405c35590bafdc5ea40" - } - Frame { - msec: 9488 - hash: "4bad7380f6b645c551edbe06ff67cac9" - } - Frame { - msec: 9504 - hash: "deabc5c7dd111adcb253eb833f118764" - } - Frame { - msec: 9520 - hash: "287d258a79f45c26c92c69cce6b1a2f3" - } - Frame { - msec: 9536 - hash: "21c0958bd3c6a1056bb062165c9bc18b" - } - Frame { - msec: 9552 - hash: "4859d6bf9c456e52fd463e4c2f68d7f6" - } - Frame { - msec: 9568 - hash: "105481b5becd127af4c28961d900148c" - } - Frame { - msec: 9584 - hash: "af65d67fef3c743e31acca03716040c4" - } - Frame { - msec: 9600 - image: "cursorDelegate.9.png" - } - Frame { - msec: 9616 - hash: "dba2ca165b8ab35113b8ec127b204ae9" - } - Frame { - msec: 9632 - hash: "36f28574c0b042647bc064d75afa9fbc" - } - Frame { - msec: 9648 - hash: "f641f87e9556ecfd24f0f0a772295e52" - } - Frame { - msec: 9664 - hash: "5b61f2e9308c4de2864bb7cf133ce545" - } - Frame { - msec: 9680 - hash: "1f4ea7783b5c60bfc424c73cea07a3a0" - } - Frame { - msec: 9696 - hash: "535210bd848a20db2966b06278198e07" - } - Frame { - msec: 9712 - hash: "ae8fe55fa9b497cd6eff18a517c301d8" - } - Frame { - msec: 9728 - hash: "129b5bc6d55621e2366fc0d80f105df2" - } - Frame { - msec: 9744 - hash: "b2ed6ebf66252463326c2f220b3992fa" - } - Frame { - msec: 9760 - hash: "73d49e4d0bef103e11820d888bef0368" - } - Frame { - msec: 9776 - hash: "cc6307597cea821b63391fc9bdbe038b" - } - Frame { - msec: 9792 - hash: "786de35a11c3fc1a228392195f509c28" - } - Frame { - msec: 9808 - hash: "6ba56c4ec6e903b0d82235c230ed78cb" - } - Frame { - msec: 9824 - hash: "db553c856b11db7e6feb38b9d562a804" - } - Frame { - msec: 9840 - hash: "710e7022b65a9b3fd3a7372bf7f37c7a" - } - Frame { - msec: 9856 - hash: "e0844f30578fef2cdcee4e4ff28ab7cf" - } - Frame { - msec: 9872 - hash: "a5540bd5d088ab1201b5f22b32579d7c" - } - Frame { - msec: 9888 - hash: "3d8aa66ab9533d14a468f0869b457033" - } - Frame { - msec: 9904 - hash: "991f76d483e033024932790f85bb3c5d" - } - Frame { - msec: 9920 - hash: "af580b32b67117eb062bbcefe262c719" - } - Frame { - msec: 9936 - hash: "dd2f21f063d055edc23c874380149067" - } - Frame { - msec: 9952 - hash: "f223cfeba468e161943b24ac960196de" - } - Frame { - msec: 9968 - hash: "c779e46a89c3c9d0f8234a3192175b60" - } - Frame { - msec: 9984 - hash: "1990af80640a5ccd725ab73b822e5381" - } - Frame { - msec: 10000 - hash: "e3948b393a3778066a90197b31c71e51" - } - Frame { - msec: 10016 - hash: "e3948b393a3778066a90197b31c71e51" - } - Frame { - msec: 10032 - hash: "e3948b393a3778066a90197b31c71e51" - } - Frame { - msec: 10048 - hash: "e3948b393a3778066a90197b31c71e51" - } - Frame { - msec: 10064 - hash: "e3948b393a3778066a90197b31c71e51" - } - Frame { - msec: 10080 - hash: "1990af80640a5ccd725ab73b822e5381" - } - Frame { - msec: 10096 - hash: "c779e46a89c3c9d0f8234a3192175b60" - } - Frame { - msec: 10112 - hash: "f223cfeba468e161943b24ac960196de" - } - Frame { - msec: 10128 - hash: "dd2f21f063d055edc23c874380149067" - } - Frame { - msec: 10144 - hash: "af580b32b67117eb062bbcefe262c719" - } - Frame { - msec: 10160 - hash: "991f76d483e033024932790f85bb3c5d" - } - Frame { - msec: 10176 - hash: "3d8aa66ab9533d14a468f0869b457033" - } - Frame { - msec: 10192 - hash: "a5540bd5d088ab1201b5f22b32579d7c" - } - Frame { - msec: 10208 - hash: "e0844f30578fef2cdcee4e4ff28ab7cf" - } - Frame { - msec: 10224 - hash: "710e7022b65a9b3fd3a7372bf7f37c7a" - } - Frame { - msec: 10240 - hash: "db553c856b11db7e6feb38b9d562a804" - } - Frame { - msec: 10256 - hash: "6ba56c4ec6e903b0d82235c230ed78cb" - } - Frame { - msec: 10272 - hash: "786de35a11c3fc1a228392195f509c28" - } - Frame { - msec: 10288 - hash: "cc6307597cea821b63391fc9bdbe038b" - } - Frame { - msec: 10304 - hash: "73d49e4d0bef103e11820d888bef0368" - } - Frame { - msec: 10320 - hash: "b2ed6ebf66252463326c2f220b3992fa" - } - Frame { - msec: 10336 - hash: "129b5bc6d55621e2366fc0d80f105df2" - } - Frame { - msec: 10352 - hash: "ae8fe55fa9b497cd6eff18a517c301d8" - } - Frame { - msec: 10368 - hash: "535210bd848a20db2966b06278198e07" - } - Frame { - msec: 10384 - hash: "1f4ea7783b5c60bfc424c73cea07a3a0" - } - Frame { - msec: 10400 - hash: "5b61f2e9308c4de2864bb7cf133ce545" - } - Frame { - msec: 10416 - hash: "f641f87e9556ecfd24f0f0a772295e52" - } - Frame { - msec: 10432 - hash: "36f28574c0b042647bc064d75afa9fbc" - } - Frame { - msec: 10448 - hash: "dba2ca165b8ab35113b8ec127b204ae9" + hash: "23edee3af8f1904558863d37c520555a" } } diff --git a/tests/auto/declarative/visual/scriptAction/data/scriptAction.0.png b/tests/auto/declarative/visual/scriptAction/data/scriptAction.0.png Binary files differnew file mode 100644 index 0000000..64d6b06 --- /dev/null +++ b/tests/auto/declarative/visual/scriptAction/data/scriptAction.0.png diff --git a/tests/auto/declarative/visual/scriptAction/data/scriptAction.1.png b/tests/auto/declarative/visual/scriptAction/data/scriptAction.1.png Binary files differnew file mode 100644 index 0000000..1a25c63 --- /dev/null +++ b/tests/auto/declarative/visual/scriptAction/data/scriptAction.1.png diff --git a/tests/auto/declarative/visual/scriptAction/data/scriptAction.qml b/tests/auto/declarative/visual/scriptAction/data/scriptAction.qml new file mode 100644 index 0000000..01da490 --- /dev/null +++ b/tests/auto/declarative/visual/scriptAction/data/scriptAction.qml @@ -0,0 +1,535 @@ +import Qt.VisualTest 4.6 + +VisualTest { + Frame { + msec: 0 + } + Frame { + msec: 16 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 32 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 48 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 64 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 80 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 96 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 112 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 128 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 144 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 160 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 176 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 192 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 208 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 224 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 240 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 256 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 272 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 288 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 304 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 320 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 336 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 352 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 368 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 384 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 400 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 416 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 432 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 448 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 464 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 480 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 496 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 512 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 528 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 544 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 560 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 576 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 592 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 608 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 624 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 640 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 656 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 672 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 688 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 704 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 720 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 736 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 752 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 768 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 784 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 800 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 816 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 832 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 848 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 864 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 880 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 896 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 912 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 928 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 944 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 960 + image: "scriptAction.0.png" + } + Frame { + msec: 976 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 992 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 1008 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 1024 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 1040 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 1056 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 1072 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 1088 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Mouse { + type: 2 + button: 1 + buttons: 1 + x: 146; y: 259 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1104 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 1120 + hash: "9850cd8ed4643900409d1a87ef0bc4cf" + } + Frame { + msec: 1136 + hash: "1cf03396b01e931e4e7e8e7e57e19c5f" + } + Frame { + msec: 1152 + hash: "25fe648b85ec2d82621853dcbdbf695a" + } + Frame { + msec: 1168 + hash: "1ca701e56fe387d5849f6933eb53aee9" + } + Frame { + msec: 1184 + hash: "b39ecb792659a053a8985e2a849d6d51" + } + Frame { + msec: 1200 + hash: "9a783432a054beec81cc5687f75a36dc" + } + Frame { + msec: 1216 + hash: "edbd222d7ba6c6f819ded45fe316d461" + } + Frame { + msec: 1232 + hash: "eaf20159c4b90f90872bbd514d3a0cec" + } + Frame { + msec: 1248 + hash: "964807dd9b91e765577a773ef1ce2593" + } + Frame { + msec: 1264 + hash: "16e12026ab14657b0f36b8315684455d" + } + Frame { + msec: 1280 + hash: "d001a6b2fec3c66baaa45d9ff93b3f63" + } + Frame { + msec: 1296 + hash: "fef11eb5f635bc11cd9679b7213b3b92" + } + Frame { + msec: 1312 + hash: "0a0cd5f5004048d88712cfe6943470c0" + } + Frame { + msec: 1328 + hash: "0d83178afdae5feaa9915d56c24373ad" + } + Frame { + msec: 1344 + hash: "0a9e6e0b7b23ce93dc4e1f886cf9c7d1" + } + Frame { + msec: 1360 + hash: "f3199d0c860f1236e0b9472bef8785bc" + } + Frame { + msec: 1376 + hash: "f3199d0c860f1236e0b9472bef8785bc" + } + Frame { + msec: 1392 + hash: "32ccdab249268b01d9f1658a736052f1" + } + Frame { + msec: 1408 + hash: "dc98f32a1a2d6e74998123b5232107b0" + } + Frame { + msec: 1424 + hash: "db3010ef552146df938c237f6c92bff5" + } + Frame { + msec: 1440 + hash: "101e8595d0301e88376ec52ba9361f84" + } + Frame { + msec: 1456 + hash: "119d548c59baa7e47266d2ceca663288" + } + Frame { + msec: 1472 + hash: "f141fafe102a0b9a2bf33e8c3fc800ff" + } + Frame { + msec: 1488 + hash: "b01f9ca8d4fbff17b3d48c70898a044d" + } + Frame { + msec: 1504 + hash: "cf67954a2d1b22e8d2cfdc26419bafb8" + } + Frame { + msec: 1520 + hash: "7680b2b5a63dea13d733947297e01355" + } + Frame { + msec: 1536 + hash: "af1c017acf6b3c8cff86c9ceb60db3cb" + } + Frame { + msec: 1552 + hash: "0b23ec51f71fddae5e2238ab5754f1db" + } + Frame { + msec: 1568 + hash: "976643961ecbdc86335180ba812b874e" + } + Frame { + msec: 1584 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 1600 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 1616 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 1632 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 1648 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 1664 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 1680 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 1696 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 1712 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 1728 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 1744 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 1760 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 1776 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 1792 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 1808 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 1824 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 1840 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 1856 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 1872 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Key { + type: 6 + key: 16777249 + modifiers: 67108864 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 1888 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 1904 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 1920 + image: "scriptAction.1.png" + } + Frame { + msec: 1936 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 1952 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 1968 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 1984 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 2000 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 2016 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 2032 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 2048 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } +} diff --git a/tests/auto/declarative/visual/scriptAction/scriptAction.qml b/tests/auto/declarative/visual/scriptAction/scriptAction.qml new file mode 100644 index 0000000..b1254e2 --- /dev/null +++ b/tests/auto/declarative/visual/scriptAction/scriptAction.qml @@ -0,0 +1,35 @@ +import Qt 4.6 + +Rectangle { + width: 400; height: 400 + Rectangle { + id: myRect + width: 100; height: 100 + color: "red" + } + MouseRegion { + id: Clickable + anchors.fill: parent + } + + states: State { + name: "state1" + when: Clickable.pressed + PropertyChanges { + target: myRect + x: 50; y: 50 + } + StateChangeScript { + name: "setColor" + script: myRect.color = "blue" + } + } + + transitions: Transition { + SequentialAnimation { + NumberAnimation { matchProperties: "x"; easing: "InOutQuad" } + ScriptAction { stateChangeScriptName: "setColor" } + NumberAnimation { matchProperties: "y"; easing: "InOutQuad" } + } + } +} diff --git a/tests/auto/declarative/visual/webview/zooming/renderControl.html b/tests/auto/declarative/visual/webview/zooming/renderControl.html new file mode 100644 index 0000000..1a01a33 --- /dev/null +++ b/tests/auto/declarative/visual/webview/zooming/renderControl.html @@ -0,0 +1,7 @@ +<html> +<body> +<h1>Render Control</h1> +<p> +This test shows how zooming and panning can be +optimized for speed over quality by delaying rendering. +<img src="qtlogo.png"> diff --git a/tests/auto/declarative/xmlhttprequest/data/constructor.qml b/tests/auto/declarative/xmlhttprequest/data/constructor.qml new file mode 100644 index 0000000..4b9e9ce --- /dev/null +++ b/tests/auto/declarative/xmlhttprequest/data/constructor.qml @@ -0,0 +1,14 @@ +import Qt 4.6 + +Object { + property bool calledAsConstructor + property bool calledAsFunction + + Component.onCompleted: { + var x1 = new XMLHttpRequest; + var x2 = XMLHttpRequest(); + + calledAsConstructor = (x1 != null && x1 instanceof XMLHttpRequest); + calledAsFunction = (x2 == undefined); + } +} diff --git a/tests/auto/declarative/xmlhttprequest/data/defaultState.qml b/tests/auto/declarative/xmlhttprequest/data/defaultState.qml new file mode 100644 index 0000000..5cc2971 --- /dev/null +++ b/tests/auto/declarative/xmlhttprequest/data/defaultState.qml @@ -0,0 +1,30 @@ +import Qt 4.6 + +Object { + property int readyState + property bool statusIsException: false + property bool statusTextIsException: false + property string responseText + property bool responseXMLIsNull + + Component.onCompleted: { + var xhr = new XMLHttpRequest(); + + readyState = xhr.readyState; + try { + status = xhr.status; + } catch (error) { + if (error.code == DOMException.INVALID_STATE_ERR) + statusIsException = true; + } + try { + statusText = xhr.statusText; + } catch (error) { + if (error.code == DOMException.INVALID_STATE_ERR) + statusTextIsException = true; + } + responseText = xhr.responseText; + responseXMLIsNull = (xhr.responseXML == null); + } +} + diff --git a/tests/auto/declarative/xmlhttprequest/data/domExceptionCodes.qml b/tests/auto/declarative/xmlhttprequest/data/domExceptionCodes.qml new file mode 100644 index 0000000..a4ab66c --- /dev/null +++ b/tests/auto/declarative/xmlhttprequest/data/domExceptionCodes.qml @@ -0,0 +1,60 @@ +import Qt 4.6 + +Object { + property int index_size_err: DOMException.INDEX_SIZE_ERR + property int domstring_size_err: DOMException.DOMSTRING_SIZE_ERR + property int hierarchy_request_err: DOMException.HIERARCHY_REQUEST_ERR + property int wrong_document_err: DOMException.WRONG_DOCUMENT_ERR + property int invalid_character_err: DOMException.INVALID_CHARACTER_ERR + property int no_data_allowed_err: DOMException.NO_DATA_ALLOWED_ERR + property int no_modification_allowed_err: DOMException.NO_MODIFICATION_ALLOWED_ERR + property int not_found_err: DOMException.NOT_FOUND_ERR + property int not_supported_err: DOMException.NOT_SUPPORTED_ERR + property int inuse_attribute_err: DOMException.INUSE_ATTRIBUTE_ERR + property int invalid_state_err: DOMException.INVALID_STATE_ERR + property int syntax_err: DOMException.SYNTAX_ERR + property int invalid_modification_err: DOMException.INVALID_MODIFICATION_ERR + property int namespace_err: DOMException.NAMESPACE_ERR + property int invalid_access_err: DOMException.INVALID_ACCESS_ERR + property int validation_err: DOMException.VALIDATION_ERR + property int type_mismatch_err: DOMException.TYPE_MISMATCH_ERR + + Component.onCompleted: { + // Attempt to overwrite and delete values + DOMException.INDEX_SIZE_ERR = 44; + DOMException.DOMSTRING_SIZE_ERR = 44; + DOMException.HIERARCHY_REQUEST_ERR = 44; + DOMException.WRONG_DOCUMENT_ERR = 44; + DOMException.INVALID_CHARACTER_ERR = 44; + DOMException.NO_DATA_ALLOWED_ERR = 44; + DOMException.NO_MODIFICATION_ALLOWED_ERR = 44; + DOMException.NOT_FOUND_ERR = 44; + DOMException.NOT_SUPPORTED_ERR = 44; + DOMException.INUSE_ATTRIBUTE_ERR = 44; + DOMException.INVALID_STATE_ERR = 44; + DOMException.SYNTAX_ERR = 44; + DOMException.INVALID_MODIFICATION_ERR = 44; + DOMException.NAMESPACE_ERR = 44; + DOMException.INVALID_ACCESS_ERR = 44; + DOMException.VALIDATION_ERR = 44; + DOMException.TYPE_MISMATCH_ERR = 44; + + delete DOMException.INDEX_SIZE_ERR; + delete DOMException.DOMSTRING_SIZE_ERR; + delete DOMException.HIERARCHY_REQUEST_ERR; + delete DOMException.WRONG_DOCUMENT_ERR; + delete DOMException.INVALID_CHARACTER_ERR; + delete DOMException.NO_DATA_ALLOWED_ERR; + delete DOMException.NO_MODIFICATION_ALLOWED_ERR; + delete DOMException.NOT_FOUND_ERR; + delete DOMException.NOT_SUPPORTED_ERR; + delete DOMException.INUSE_ATTRIBUTE_ERR; + delete DOMException.INVALID_STATE_ERR; + delete DOMException.SYNTAX_ERR; + delete DOMException.INVALID_MODIFICATION_ERR; + delete DOMException.NAMESPACE_ERR; + delete DOMException.INVALID_ACCESS_ERR; + delete DOMException.VALIDATION_ERR; + delete DOMException.TYPE_MISMATCH_ERR; + } +} diff --git a/tests/auto/declarative/xmlhttprequest/data/instanceStateValues.qml b/tests/auto/declarative/xmlhttprequest/data/instanceStateValues.qml new file mode 100644 index 0000000..ab3064f --- /dev/null +++ b/tests/auto/declarative/xmlhttprequest/data/instanceStateValues.qml @@ -0,0 +1,33 @@ +import Qt 4.6 + +Object { + property int unsent + property int opened + property int headers_received + property int loading + property int done + + Component.onCompleted: { + // Attempt to overwrite and delete values + var x = new XMLHttpRequest(); + + x.UNSENT = 9; + x.OPENED = 9; + x.HEADERS_RECEIVED = 9; + x.LOADING = 9; + x.DONE = 9; + + delete x.UNSENT; + delete x.OPENED; + delete x.HEADERS_RECEIVED; + delete x.LOADING; + delete x.DONE; + + unsent = x.UNSENT + opened = x.OPENED + headers_received = x.HEADERS_RECEIVED + loading = x.LOADING + done = x.DONE + } +} + diff --git a/tests/auto/declarative/xmlhttprequest/data/open.qml b/tests/auto/declarative/xmlhttprequest/data/open.qml new file mode 100644 index 0000000..7729bab --- /dev/null +++ b/tests/auto/declarative/xmlhttprequest/data/open.qml @@ -0,0 +1,53 @@ +import Qt 4.6 + +Object { + property string url + + property bool readyState: false + property bool openedState: false + + property bool status: false + property bool statusText: false + property bool responseText: false + property bool responseXML: false + + property bool dataOK: false + + Component.onCompleted: { + var x = new XMLHttpRequest; + + if (x.readyState == XMLHttpRequest.UNSENT) + readyState = true; + + x.open("GET", url); + + if (x.readyState == XMLHttpRequest.OPENED) + openedState = true; + + try { + var a = x.status; + } catch (error) { + if (error.code == DOMException.INVALID_STATE_ERR) + status = true; + } + try { + var a = x.statusText; + } catch (error) { + if (error.code == DOMException.INVALID_STATE_ERR) + statusText = true; + } + responseText = (x.responseText == ""); + responseXML = (x.responseXML == null); + + // Test to the end + x.onreadystatechange = function() { + if (x.readyState == XMLHttpRequest.DONE) { + dataOK = (x.responseText == "QML Rocks!\n"); + } + } + + + x.send() + } +} + diff --git a/tests/auto/declarative/xmlhttprequest/data/open_arg_count.1.qml b/tests/auto/declarative/xmlhttprequest/data/open_arg_count.1.qml new file mode 100644 index 0000000..74f13ba --- /dev/null +++ b/tests/auto/declarative/xmlhttprequest/data/open_arg_count.1.qml @@ -0,0 +1,18 @@ +import Qt 4.6 + +Object { + property bool exceptionThrown: false + + Component.onCompleted: { + var x = new XMLHttpRequest; + + try { + x.open("GET"); + } catch (e) { + if (e.code == DOMException.SYNTAX_ERR) + exceptionThrown = true; + } + } +} + + diff --git a/tests/auto/declarative/xmlhttprequest/data/open_arg_count.2.qml b/tests/auto/declarative/xmlhttprequest/data/open_arg_count.2.qml new file mode 100644 index 0000000..35dce9f --- /dev/null +++ b/tests/auto/declarative/xmlhttprequest/data/open_arg_count.2.qml @@ -0,0 +1,18 @@ +import Qt 4.6 + +Object { + property bool exceptionThrown: false + + Component.onCompleted: { + var x = new XMLHttpRequest; + + try { + x.open("GET", "http://www.nokia.com", true, "user", "password", "extra"); + } catch (e) { + if (e.code == DOMException.SYNTAX_ERR) + exceptionThrown = true; + } + } +} + + diff --git a/tests/auto/declarative/xmlhttprequest/data/open_invalid_method.qml b/tests/auto/declarative/xmlhttprequest/data/open_invalid_method.qml new file mode 100644 index 0000000..7fb1a4c --- /dev/null +++ b/tests/auto/declarative/xmlhttprequest/data/open_invalid_method.qml @@ -0,0 +1,16 @@ +import Qt 4.6 + +Object { + property bool exceptionThrown: false + + Component.onCompleted: { + var x = new XMLHttpRequest; + + try { + x.open("BLAH", "http://www.nokia.com"); + } catch (e) { + if (e.code == DOMException.SYNTAX_ERR) + exceptionThrown = true; + } + } +} diff --git a/tests/auto/declarative/xmlhttprequest/data/open_network.expect b/tests/auto/declarative/xmlhttprequest/data/open_network.expect new file mode 100644 index 0000000..40e648e --- /dev/null +++ b/tests/auto/declarative/xmlhttprequest/data/open_network.expect @@ -0,0 +1,7 @@ +GET /testdocument.html HTTP/1.1 +Connection: Keep-Alive +Accept-Encoding: gzip +accept-language: en,* +User-Agent: Mozilla/5.0 +Host: localhost:14445 + diff --git a/tests/auto/declarative/xmlhttprequest/data/open_network.reply b/tests/auto/declarative/xmlhttprequest/data/open_network.reply new file mode 100644 index 0000000..35b11f4 --- /dev/null +++ b/tests/auto/declarative/xmlhttprequest/data/open_network.reply @@ -0,0 +1,2 @@ +HTTP/1.0 200 OK +Content-type: text/html; charset=UTF-8 diff --git a/tests/auto/declarative/xmlhttprequest/data/open_network.wait b/tests/auto/declarative/xmlhttprequest/data/open_network.wait new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/tests/auto/declarative/xmlhttprequest/data/open_network.wait diff --git a/tests/auto/declarative/xmlhttprequest/data/open_sync.qml b/tests/auto/declarative/xmlhttprequest/data/open_sync.qml new file mode 100644 index 0000000..7133e81 --- /dev/null +++ b/tests/auto/declarative/xmlhttprequest/data/open_sync.qml @@ -0,0 +1,17 @@ +import Qt 4.6 + +Object { + property bool exceptionThrown: false + + Component.onCompleted: { + var x = new XMLHttpRequest; + + try { + x.open("GET", "http://www.nokia.com", false); + } catch (e) { + if (e.code == DOMException.NOT_SUPPORTED_ERR) + exceptionThrown = true; + } + } +} + diff --git a/tests/auto/declarative/xmlhttprequest/data/open_username.qml b/tests/auto/declarative/xmlhttprequest/data/open_username.qml new file mode 100644 index 0000000..c38110c --- /dev/null +++ b/tests/auto/declarative/xmlhttprequest/data/open_username.qml @@ -0,0 +1,54 @@ +import Qt 4.6 + +Object { + property string url + + property bool readyState: false + property bool openedState: false + + property bool status: false + property bool statusText: false + property bool responseText: false + property bool responseXML: false + + property bool dataOK: false + + Component.onCompleted: { + var x = new XMLHttpRequest; + + if (x.readyState == XMLHttpRequest.UNSENT) + readyState = true; + + x.open("GET", url, true, "sampleusername", "password"); + + if (x.readyState == XMLHttpRequest.OPENED) + openedState = true; + + try { + var a = x.status; + } catch (error) { + if (error.code == DOMException.INVALID_STATE_ERR) + status = true; + } + try { + var a = x.statusText; + } catch (error) { + if (error.code == DOMException.INVALID_STATE_ERR) + statusText = true; + } + responseText = (x.responseText == ""); + responseXML = (x.responseXML == null); + + // Test to the end + x.onreadystatechange = function() { + if (x.readyState == XMLHttpRequest.DONE) { + dataOK = (x.responseText == "QML Rocks!\n"); + } + } + + + x.send() + } +} + + diff --git a/tests/auto/declarative/xmlhttprequest/data/seconddocument.html b/tests/auto/declarative/xmlhttprequest/data/seconddocument.html new file mode 100644 index 0000000..a33f44b --- /dev/null +++ b/tests/auto/declarative/xmlhttprequest/data/seconddocument.html @@ -0,0 +1 @@ +This should not be read! diff --git a/tests/auto/declarative/xmlhttprequest/data/send_alreadySent.qml b/tests/auto/declarative/xmlhttprequest/data/send_alreadySent.qml new file mode 100644 index 0000000..4598169 --- /dev/null +++ b/tests/auto/declarative/xmlhttprequest/data/send_alreadySent.qml @@ -0,0 +1,27 @@ +import Qt 4.6 + +Object { + property bool dataOK: false + property bool test: false + + Component.onCompleted: { + var x = new XMLHttpRequest; + x.open("GET", "testdocument.html"); + + // Test to the end + x.onreadystatechange = function() { + if (x.readyState == XMLHttpRequest.DONE) { + dataOK = (x.responseText == "QML Rocks!\n"); + } + } + + x.send(); + + try { + x.send() + } catch (e) { + if (e.code == DOMException.INVALID_STATE_ERR) + test = true; + } + } +} diff --git a/tests/auto/declarative/xmlhttprequest/data/send_data.1.expect b/tests/auto/declarative/xmlhttprequest/data/send_data.1.expect new file mode 100644 index 0000000..1ef179b --- /dev/null +++ b/tests/auto/declarative/xmlhttprequest/data/send_data.1.expect @@ -0,0 +1,10 @@ +POST /testdocument.html HTTP/1.1 +Content-Type: text/plain;charset=UTF-8 +Content-Length: 12 +Connection: Keep-Alive +Accept-Encoding: gzip +accept-language: en,* +User-Agent: Mozilla/5.0 +Host: localhost:14445 + +My Sent Data
\ No newline at end of file diff --git a/tests/auto/declarative/xmlhttprequest/data/send_data.1.qml b/tests/auto/declarative/xmlhttprequest/data/send_data.1.qml new file mode 100644 index 0000000..c0b5bf8 --- /dev/null +++ b/tests/auto/declarative/xmlhttprequest/data/send_data.1.qml @@ -0,0 +1,21 @@ +import Qt 4.6 + +Object { + property string url + + property bool dataOK: false + + Component.onCompleted: { + var x = new XMLHttpRequest; + x.open("POST", url); + + // Test to the end + x.onreadystatechange = function() { + if (x.readyState == XMLHttpRequest.DONE) { + dataOK = (x.responseText == "QML Rocks!\n"); + } + } + + x.send("My Sent Data"); + } +} diff --git a/tests/auto/declarative/xmlhttprequest/data/send_data.2.qml b/tests/auto/declarative/xmlhttprequest/data/send_data.2.qml new file mode 100644 index 0000000..8a8c375 --- /dev/null +++ b/tests/auto/declarative/xmlhttprequest/data/send_data.2.qml @@ -0,0 +1,23 @@ +import Qt 4.6 + +Object { + property string url + + property bool dataOK: false + + Component.onCompleted: { + var x = new XMLHttpRequest; + x.open("POST", url); + x.setRequestHeader("Content-Type", "text/plain;charset=UTF-8"); + + // Test to the end + x.onreadystatechange = function() { + if (x.readyState == XMLHttpRequest.DONE) { + dataOK = (x.responseText == "QML Rocks!\n"); + } + } + + x.send("My Sent Data"); + } +} + diff --git a/tests/auto/declarative/xmlhttprequest/data/send_data.3.qml b/tests/auto/declarative/xmlhttprequest/data/send_data.3.qml new file mode 100644 index 0000000..ae5731f --- /dev/null +++ b/tests/auto/declarative/xmlhttprequest/data/send_data.3.qml @@ -0,0 +1,23 @@ +import Qt 4.6 + +Object { + property string url + + property bool dataOK: false + + Component.onCompleted: { + var x = new XMLHttpRequest; + x.open("POST", url); + x.setRequestHeader("Content-Type", "text/plain;charset=latin1"); + + // Test to the end + x.onreadystatechange = function() { + if (x.readyState == XMLHttpRequest.DONE) { + dataOK = (x.responseText == "QML Rocks!\n"); + } + } + + x.send("My Sent Data"); + } +} + diff --git a/tests/auto/declarative/xmlhttprequest/data/send_data.4.expect b/tests/auto/declarative/xmlhttprequest/data/send_data.4.expect new file mode 100644 index 0000000..6b10b4a --- /dev/null +++ b/tests/auto/declarative/xmlhttprequest/data/send_data.4.expect @@ -0,0 +1,10 @@ +POST /testdocument.html HTTP/1.1 +Content-Type: charset=UTF-8;text/plain +Content-Length: 12 +Connection: Keep-Alive +Accept-Encoding: gzip +accept-language: en,* +User-Agent: Mozilla/5.0 +Host: localhost:14445 + +My Sent Data
\ No newline at end of file diff --git a/tests/auto/declarative/xmlhttprequest/data/send_data.4.qml b/tests/auto/declarative/xmlhttprequest/data/send_data.4.qml new file mode 100644 index 0000000..375f2fa --- /dev/null +++ b/tests/auto/declarative/xmlhttprequest/data/send_data.4.qml @@ -0,0 +1,24 @@ +import Qt 4.6 + +Object { + property string url + + property bool dataOK: false + + Component.onCompleted: { + var x = new XMLHttpRequest; + x.open("POST", url); + x.setRequestHeader("Content-Type", "charset=UTF-8;text/plain"); + + // Test to the end + x.onreadystatechange = function() { + if (x.readyState == XMLHttpRequest.DONE) { + dataOK = (x.responseText == "QML Rocks!\n"); + } + } + + x.send("My Sent Data"); + } +} + + diff --git a/tests/auto/declarative/xmlhttprequest/data/send_data.5.qml b/tests/auto/declarative/xmlhttprequest/data/send_data.5.qml new file mode 100644 index 0000000..eca1676 --- /dev/null +++ b/tests/auto/declarative/xmlhttprequest/data/send_data.5.qml @@ -0,0 +1,23 @@ +import Qt 4.6 + +Object { + property string url + + property bool dataOK: false + + Component.onCompleted: { + var x = new XMLHttpRequest; + x.open("POST", url); + x.setRequestHeader("Content-Type", "charset=latin1;text/plain"); + + // Test to the end + x.onreadystatechange = function() { + if (x.readyState == XMLHttpRequest.DONE) { + dataOK = (x.responseText == "QML Rocks!\n"); + } + } + + x.send("My Sent Data"); + } +} + diff --git a/tests/auto/declarative/xmlhttprequest/data/send_data.6.expect b/tests/auto/declarative/xmlhttprequest/data/send_data.6.expect new file mode 100644 index 0000000..dc0d6c2 --- /dev/null +++ b/tests/auto/declarative/xmlhttprequest/data/send_data.6.expect @@ -0,0 +1,10 @@ +PUT /testdocument.html HTTP/1.1 +Content-Type: text/plain;charset=UTF-8 +Content-Length: 12 +Connection: Keep-Alive +Accept-Encoding: gzip +accept-language: en,* +User-Agent: Mozilla/5.0 +Host: localhost:14445 + +My Sent Data
\ No newline at end of file diff --git a/tests/auto/declarative/xmlhttprequest/data/send_data.6.qml b/tests/auto/declarative/xmlhttprequest/data/send_data.6.qml new file mode 100644 index 0000000..0bc2e35 --- /dev/null +++ b/tests/auto/declarative/xmlhttprequest/data/send_data.6.qml @@ -0,0 +1,21 @@ +import Qt 4.6 + +Object { + property string url + + property bool dataOK: false + + Component.onCompleted: { + var x = new XMLHttpRequest; + x.open("PUT", url); + + // Test to the end + x.onreadystatechange = function() { + if (x.readyState == XMLHttpRequest.DONE) { + dataOK = (x.responseText == "QML Rocks!\n"); + } + } + + x.send("My Sent Data"); + } +} diff --git a/tests/auto/declarative/xmlhttprequest/data/send_data.reply b/tests/auto/declarative/xmlhttprequest/data/send_data.reply new file mode 100644 index 0000000..35b11f4 --- /dev/null +++ b/tests/auto/declarative/xmlhttprequest/data/send_data.reply @@ -0,0 +1,2 @@ +HTTP/1.0 200 OK +Content-type: text/html; charset=UTF-8 diff --git a/tests/auto/declarative/xmlhttprequest/data/send_ignoreData.qml b/tests/auto/declarative/xmlhttprequest/data/send_ignoreData.qml new file mode 100644 index 0000000..6f33eef --- /dev/null +++ b/tests/auto/declarative/xmlhttprequest/data/send_ignoreData.qml @@ -0,0 +1,26 @@ +import Qt 4.6 + +Object { + property string reqType + property string url + + property bool dataOK: false + + Component.onCompleted: { + var x = new XMLHttpRequest; + x.open(reqType, url); + + // Test to the end + x.onreadystatechange = function() { + if (x.readyState == XMLHttpRequest.DONE) { + if (reqType == "HEAD") + dataOK = (x.responseText == ""); + else + dataOK = (x.responseText == "QML Rocks!\n"); + } + } + + x.send("Data To Ignore"); + } +} + diff --git a/tests/auto/declarative/xmlhttprequest/data/send_ignoreData.reply b/tests/auto/declarative/xmlhttprequest/data/send_ignoreData.reply new file mode 100644 index 0000000..35b11f4 --- /dev/null +++ b/tests/auto/declarative/xmlhttprequest/data/send_ignoreData.reply @@ -0,0 +1,2 @@ +HTTP/1.0 200 OK +Content-type: text/html; charset=UTF-8 diff --git a/tests/auto/declarative/xmlhttprequest/data/send_ignoreData_GET.expect b/tests/auto/declarative/xmlhttprequest/data/send_ignoreData_GET.expect new file mode 100644 index 0000000..40e648e --- /dev/null +++ b/tests/auto/declarative/xmlhttprequest/data/send_ignoreData_GET.expect @@ -0,0 +1,7 @@ +GET /testdocument.html HTTP/1.1 +Connection: Keep-Alive +Accept-Encoding: gzip +accept-language: en,* +User-Agent: Mozilla/5.0 +Host: localhost:14445 + diff --git a/tests/auto/declarative/xmlhttprequest/data/send_ignoreData_PUT.expect b/tests/auto/declarative/xmlhttprequest/data/send_ignoreData_PUT.expect new file mode 100644 index 0000000..381cc89 --- /dev/null +++ b/tests/auto/declarative/xmlhttprequest/data/send_ignoreData_PUT.expect @@ -0,0 +1,7 @@ +HEAD /testdocument.html HTTP/1.1 +Connection: Keep-Alive +Accept-Encoding: gzip +accept-language: en,* +User-Agent: Mozilla/5.0 +Host: localhost:14445 + diff --git a/tests/auto/declarative/xmlhttprequest/data/send_unsent.qml b/tests/auto/declarative/xmlhttprequest/data/send_unsent.qml new file mode 100644 index 0000000..76c26a3 --- /dev/null +++ b/tests/auto/declarative/xmlhttprequest/data/send_unsent.qml @@ -0,0 +1,16 @@ +import Qt 4.6 + +Object { + property bool test: false + + Component.onCompleted: { + var x = new XMLHttpRequest; + + try { + x.send(); + } catch (e) { + if (e.code == DOMException.INVALID_STATE_ERR) + test = true; + } + } +} diff --git a/tests/auto/declarative/xmlhttprequest/data/setRequestHeader.expect b/tests/auto/declarative/xmlhttprequest/data/setRequestHeader.expect new file mode 100644 index 0000000..031ddff --- /dev/null +++ b/tests/auto/declarative/xmlhttprequest/data/setRequestHeader.expect @@ -0,0 +1,9 @@ +GET /testdocument.html HTTP/1.1 +TEST-HEADER: value +TEST-HEADER2: value,value2 +Connection: Keep-Alive +Accept-Encoding: gzip +accept-language: en,* +User-Agent: Mozilla/5.0 +Host: localhost:14445 + diff --git a/tests/auto/declarative/xmlhttprequest/data/setRequestHeader.qml b/tests/auto/declarative/xmlhttprequest/data/setRequestHeader.qml new file mode 100644 index 0000000..8ea587a --- /dev/null +++ b/tests/auto/declarative/xmlhttprequest/data/setRequestHeader.qml @@ -0,0 +1,28 @@ +import Qt 4.6 + +Object { + property string url + + property bool dataOK: false + + Component.onCompleted: { + var x = new XMLHttpRequest; + + x.open("GET", url); + + x.setRequestHeader("Test-header", "value"); + x.setRequestHeader("Test-header2", "value"); + x.setRequestHeader("Test-header2", "value2"); + + // Test to the end + x.onreadystatechange = function() { + if (x.readyState == XMLHttpRequest.DONE) { + dataOK = (x.responseText == "QML Rocks!\n"); + } + } + + x.send(); + } +} + + diff --git a/tests/auto/declarative/xmlhttprequest/data/setRequestHeader.reply b/tests/auto/declarative/xmlhttprequest/data/setRequestHeader.reply new file mode 100644 index 0000000..35b11f4 --- /dev/null +++ b/tests/auto/declarative/xmlhttprequest/data/setRequestHeader.reply @@ -0,0 +1,2 @@ +HTTP/1.0 200 OK +Content-type: text/html; charset=UTF-8 diff --git a/tests/auto/declarative/xmlhttprequest/data/setRequestHeader_illegalName.qml b/tests/auto/declarative/xmlhttprequest/data/setRequestHeader_illegalName.qml new file mode 100644 index 0000000..cf5ebcc --- /dev/null +++ b/tests/auto/declarative/xmlhttprequest/data/setRequestHeader_illegalName.qml @@ -0,0 +1,55 @@ +import Qt 4.6 + +Object { + property string url + property string header + + property bool readyState: false + property bool openedState: false + + property bool status: false + property bool statusText: false + property bool responseText: false + property bool responseXML: false + + property bool dataOK: false + + Component.onCompleted: { + var x = new XMLHttpRequest; + + if (x.readyState == XMLHttpRequest.UNSENT) + readyState = true; + + x.open("GET", url); + + if (x.readyState == XMLHttpRequest.OPENED) + openedState = true; + + try { + var a = x.status; + } catch (error) { + if (error.code == DOMException.INVALID_STATE_ERR) + status = true; + } + try { + var a = x.statusText; + } catch (error) { + if (error.code == DOMException.INVALID_STATE_ERR) + statusText = true; + } + responseText = (x.responseText == ""); + responseXML = (x.responseXML == null); + + // Test to the end + x.onreadystatechange = function() { + if (x.readyState == XMLHttpRequest.DONE) { + dataOK = (x.responseText == "QML Rocks!\n"); + } + } + + + x.send() + } +} + + diff --git a/tests/auto/declarative/xmlhttprequest/data/setRequestHeader_sent.qml b/tests/auto/declarative/xmlhttprequest/data/setRequestHeader_sent.qml new file mode 100644 index 0000000..b637f17 --- /dev/null +++ b/tests/auto/declarative/xmlhttprequest/data/setRequestHeader_sent.qml @@ -0,0 +1,31 @@ +import Qt 4.6 + +Object { + property string url + property bool test: false + + property bool dataOK: false + + Component.onCompleted: { + var x = new XMLHttpRequest; + + x.open("GET", url); + + // Test to the end + x.onreadystatechange = function() { + if (x.readyState == XMLHttpRequest.DONE) { + dataOK = (x.responseText == "QML Rocks!\n"); + } + } + + x.send(); + + try { + x.setRequestHeader("Test-header", "value"); + } catch (e) { + if (e.code == DOMException.INVALID_STATE_ERR) + test = true; + } + } +} + diff --git a/tests/auto/declarative/xmlhttprequest/data/setRequestHeader_unsent.qml b/tests/auto/declarative/xmlhttprequest/data/setRequestHeader_unsent.qml new file mode 100644 index 0000000..4e89abf --- /dev/null +++ b/tests/auto/declarative/xmlhttprequest/data/setRequestHeader_unsent.qml @@ -0,0 +1,17 @@ +import Qt 4.6 + +Object { + property bool test: false + + Component.onCompleted: { + var x = new XMLHttpRequest; + + try { + x.setRequestHeader("Test-header", "value"); + } catch (e) { + if (e.code == DOMException.INVALID_STATE_ERR) + test = true; + } + } +} + diff --git a/tests/auto/declarative/xmlhttprequest/data/staticStateValues.qml b/tests/auto/declarative/xmlhttprequest/data/staticStateValues.qml new file mode 100644 index 0000000..aaaadad --- /dev/null +++ b/tests/auto/declarative/xmlhttprequest/data/staticStateValues.qml @@ -0,0 +1,24 @@ +import Qt 4.6 + +Object { + property int unsent: XMLHttpRequest.UNSENT + property int opened: XMLHttpRequest.OPENED + property int headers_received: XMLHttpRequest.HEADERS_RECEIVED + property int loading: XMLHttpRequest.LOADING + property int done: XMLHttpRequest.DONE + + Component.onCompleted: { + // Attempt to overwrite and delete values + XMLHttpRequest.UNSENT = 9; + XMLHttpRequest.OPENED = 9; + XMLHttpRequest.HEADERS_RECEIVED = 9; + XMLHttpRequest.LOADING = 9; + XMLHttpRequest.DONE = 9; + + delete XMLHttpRequest.UNSENT; + delete XMLHttpRequest.OPENED; + delete XMLHttpRequest.HEADERS_RECEIVED; + delete XMLHttpRequest.LOADING; + delete XMLHttpRequest.DONE; + } +} diff --git a/tests/auto/declarative/xmlhttprequest/data/testdocument.html b/tests/auto/declarative/xmlhttprequest/data/testdocument.html new file mode 100644 index 0000000..8fe0f4b --- /dev/null +++ b/tests/auto/declarative/xmlhttprequest/data/testdocument.html @@ -0,0 +1 @@ +QML Rocks! diff --git a/tests/auto/declarative/xmlhttprequest/testhttpserver.cpp b/tests/auto/declarative/xmlhttprequest/testhttpserver.cpp new file mode 100644 index 0000000..b579944 --- /dev/null +++ b/tests/auto/declarative/xmlhttprequest/testhttpserver.cpp @@ -0,0 +1,153 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the test suite of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the Technology Preview License Agreement accompanying +** this package. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** +** +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "testhttpserver.h" +#include <QTcpSocket> +#include <QDebug> +#include <QFile> + +TestHTTPServer::TestHTTPServer(quint16 port) +: m_hasFailed(false) +{ + QObject::connect(&server, SIGNAL(newConnection()), this, SLOT(newConnection())); + + server.listen(QHostAddress::Any, port); +} + +bool TestHTTPServer::isValid() const +{ + return server.isListening(); +} + +bool TestHTTPServer::wait(const QUrl &expect, const QUrl &reply, const QUrl &body) +{ + m_hasFailed = false; + + QFile expectFile(expect.toLocalFile()); + if (!expectFile.open(QIODevice::ReadOnly)) return false; + + QFile replyFile(reply.toLocalFile()); + if (!replyFile.open(QIODevice::ReadOnly)) return false; + + bodyData = QByteArray(); + QFile bodyFile(body.toLocalFile()); + if (bodyFile.open(QIODevice::ReadOnly)) { + bodyData = bodyFile.readAll(); + } + + waitData = expectFile.readAll(); + /* + while (waitData.endsWith('\n')) + waitData = waitData.left(waitData.count() - 1); + */ + + replyData = replyFile.readAll(); + + if (!replyData.endsWith('\n')) + replyData.append("\n"); + replyData.append("Content-length: " + QByteArray::number(bodyData.length())); + replyData .append("\n\n"); + + for (int ii = 0; ii < replyData.count(); ++ii) { + if (replyData.at(ii) == '\n' && (!ii || replyData.at(ii - 1) != '\r')) { + replyData.insert(ii, '\r'); + ++ii; + } + } + replyData.append(bodyData); + + return true; +} + +bool TestHTTPServer::hasFailed() const +{ + return m_hasFailed; +} + +void TestHTTPServer::newConnection() +{ + QTcpSocket *socket = server.nextPendingConnection(); + if (!socket) return; + + QObject::connect(socket, SIGNAL(disconnected()), this, SLOT(disconnected())); + QObject::connect(socket, SIGNAL(readyRead()), this, SLOT(readyRead())); +} + +void TestHTTPServer::disconnected() +{ + sender()->deleteLater(); +} + +void TestHTTPServer::readyRead() +{ + QTcpSocket *socket = qobject_cast<QTcpSocket *>(sender()); + if (!socket) return; + + QByteArray ba = socket->readAll(); + + if (m_hasFailed || waitData.isEmpty()) { + qWarning() << "TestHTTPServer: Unexpected data" << ba; + return; + } + + for (int ii = 0; ii < ba.count(); ++ii) { + const char c = ba.at(ii); + if (c == '\r' && waitData.isEmpty()) + continue; + else if (!waitData.isEmpty() && c == waitData.at(0)) + waitData = waitData.mid(1); + else if (c == '\r') + continue; + else { + QByteArray data = ba.mid(ii); + qWarning() << "TestHTTPServer: Unexpected data" << data; + m_hasFailed = true; + socket->disconnect(); + return; + } + } + + if (waitData.isEmpty()) { + socket->write(replyData); + socket->disconnect(); + } +} + diff --git a/tests/auto/declarative/xmlhttprequest/testhttpserver.h b/tests/auto/declarative/xmlhttprequest/testhttpserver.h new file mode 100644 index 0000000..709532e --- /dev/null +++ b/tests/auto/declarative/xmlhttprequest/testhttpserver.h @@ -0,0 +1,75 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the test suite of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the Technology Preview License Agreement accompanying +** this package. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** +** +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef TESTHTTPSERVER_H +#define TESTHTTPSERVER_H + +#include <QObject> +#include <QTcpServer> +#include <QUrl> + +class TestHTTPServer : public QObject +{ + Q_OBJECT +public: + TestHTTPServer(quint16 port); + + bool isValid() const; + + bool wait(const QUrl &expect, const QUrl &reply, const QUrl &body); + bool hasFailed() const; + +private slots: + void newConnection(); + void disconnected(); + void readyRead(); + +private: + QByteArray waitData; + QByteArray replyData; + QByteArray bodyData; + bool m_hasFailed; + + QTcpServer server; +}; + +#endif // TESTHTTPSERVER_H + diff --git a/tests/auto/declarative/xmlhttprequest/tst_xmlhttprequest.cpp b/tests/auto/declarative/xmlhttprequest/tst_xmlhttprequest.cpp new file mode 100644 index 0000000..bedb620 --- /dev/null +++ b/tests/auto/declarative/xmlhttprequest/tst_xmlhttprequest.cpp @@ -0,0 +1,619 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the test suite of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the Technology Preview License Agreement accompanying +** this package. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** +** +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include <qtest.h> +#include <QmlEngine> +#include <QmlComponent> +#include <QDebug> +#include <QWebPage> +#include <QWebFrame> +#include "testhttpserver.h" + +#define SERVER_PORT 14445 + +class tst_xmlhttprequest : public QObject +{ + Q_OBJECT +public: + tst_xmlhttprequest() {} + +private slots: + void domExceptionCodes(); + void staticStateValues(); + void instanceStateValues(); + void constructor(); + void defaultState(); + void open(); + void open_invalid_method(); + void open_sync(); + void open_arg_count(); + void setRequestHeader(); + void setRequestHeader_unsent(); + void setRequestHeader_illegalName_data(); + void setRequestHeader_illegalName(); + void setRequestHeader_sent(); + void send_unsent(); + void send_alreadySent(); + void send_ignoreData(); + void send_withdata(); + void abort(); + + // Crashes + // void outstanding_request_at_shutdown(); + +private: + QmlEngine engine; +}; + +class QWebPageWithJavaScriptConsoleMessages : public QWebPage { +public: + void javaScriptConsoleMessage(const QString& message, int lineNumber, const QString& sourceID) + { + qWarning() << sourceID << ":" << lineNumber << ":" << message; + } +}; + +inline QUrl TEST_FILE(const QString &filename) +{ + return QUrl::fromLocalFile(QLatin1String(SRCDIR) + QLatin1String("/data/") + filename); +} + +// Test that the dom exception codes are correct +void tst_xmlhttprequest::domExceptionCodes() +{ + QmlComponent component(&engine, TEST_FILE("domExceptionCodes.qml")); + QObject *object = component.create(); + QVERIFY(object != 0); + + QCOMPARE(object->property("index_size_err").toInt(), 1); + QCOMPARE(object->property("domstring_size_err").toInt(), 2); + QCOMPARE(object->property("hierarchy_request_err").toInt(), 3); + QCOMPARE(object->property("wrong_document_err").toInt(), 4); + QCOMPARE(object->property("invalid_character_err").toInt(), 5); + QCOMPARE(object->property("no_data_allowed_err").toInt(), 6); + QCOMPARE(object->property("no_modification_allowed_err").toInt(), 7); + QCOMPARE(object->property("not_found_err").toInt(), 8); + QCOMPARE(object->property("not_supported_err").toInt(), 9); + QCOMPARE(object->property("inuse_attribute_err").toInt(), 10); + QCOMPARE(object->property("invalid_state_err").toInt(), 11); + QCOMPARE(object->property("syntax_err").toInt(), 12); + QCOMPARE(object->property("invalid_modification_err").toInt(), 13); + QCOMPARE(object->property("namespace_err").toInt(), 14); + QCOMPARE(object->property("invalid_access_err").toInt(), 15); + QCOMPARE(object->property("validation_err").toInt(), 16); + QCOMPARE(object->property("type_mismatch_err").toInt(), 17); + + delete object; +} + +// Test that the state value properties on the XMLHttpRequest constructor have the correct values. +// ### WebKit does not do this, but it seems to fit the standard and QML better +void tst_xmlhttprequest::staticStateValues() +{ + QmlComponent component(&engine, TEST_FILE("staticStateValues.qml")); + QObject *object = component.create(); + QVERIFY(object != 0); + + QCOMPARE(object->property("unsent").toInt(), 0); + QCOMPARE(object->property("opened").toInt(), 1); + QCOMPARE(object->property("headers_received").toInt(), 2); + QCOMPARE(object->property("loading").toInt(), 3); + QCOMPARE(object->property("done").toInt(), 4); + + delete object; +} + +// Test that the state value properties on instances have the correct values. +void tst_xmlhttprequest::instanceStateValues() +{ + QmlComponent component(&engine, TEST_FILE("instanceStateValues.qml")); + QObject *object = component.create(); + QVERIFY(object != 0); + + QCOMPARE(object->property("unsent").toInt(), 0); + QCOMPARE(object->property("opened").toInt(), 1); + QCOMPARE(object->property("headers_received").toInt(), 2); + QCOMPARE(object->property("loading").toInt(), 3); + QCOMPARE(object->property("done").toInt(), 4); + + delete object; +} + +// Test calling constructor +void tst_xmlhttprequest::constructor() +{ + QmlComponent component(&engine, TEST_FILE("constructor.qml")); + QObject *object = component.create(); + QVERIFY(object != 0); + + QCOMPARE(object->property("calledAsConstructor").toBool(), true); + QCOMPARE(object->property("calledAsFunction").toBool(), true); + + delete object; +} + +// Test that all the properties are set correctly before any request is sent +void tst_xmlhttprequest::defaultState() +{ + QmlComponent component(&engine, TEST_FILE("defaultState.qml")); + QObject *object = component.create(); + QVERIFY(object != 0); + + QCOMPARE(object->property("readState").toInt(), 0); + QCOMPARE(object->property("statusIsException").toBool(), true); + QCOMPARE(object->property("statusTextIsException").toBool(), true); + QCOMPARE(object->property("responseText").toString(), QString()); + QCOMPARE(object->property("responseXMLIsNull").toBool(), true); + + delete object; +} + +#define TRY_WAIT(expr) \ + do { \ + for (int ii = 0; ii < 6; ++ii) { \ + if ((expr)) break; \ + QTest::qWait(50); \ + } \ + QVERIFY((expr)); \ + } while (false) + +// Test valid XMLHttpRequest.open() calls +void tst_xmlhttprequest::open() +{ + // Relative url + { + QmlComponent component(&engine, TEST_FILE("open.qml")); + QObject *object = component.beginCreate(engine.rootContext()); + QVERIFY(object != 0); + object->setProperty("url", "testdocument.html"); + component.completeCreate(); + + QCOMPARE(object->property("readyState").toBool(), true); + QCOMPARE(object->property("openedState").toBool(), true); + QCOMPARE(object->property("status").toBool(), true); + QCOMPARE(object->property("statusText").toBool(), true); + QCOMPARE(object->property("responseText").toBool(), true); + QCOMPARE(object->property("responseXML").toBool(), true); + + TRY_WAIT(object->property("dataOK").toBool() == true); + + delete object; + } + + // Absolute url + { + QmlComponent component(&engine, TEST_FILE("open.qml")); + QObject *object = component.beginCreate(engine.rootContext()); + QVERIFY(object != 0); + object->setProperty("url", TEST_FILE("testdocument.html").toString()); + component.completeCreate(); + + QCOMPARE(object->property("readyState").toBool(), true); + QCOMPARE(object->property("openedState").toBool(), true); + QCOMPARE(object->property("status").toBool(), true); + QCOMPARE(object->property("statusText").toBool(), true); + QCOMPARE(object->property("responseText").toBool(), true); + QCOMPARE(object->property("responseXML").toBool(), true); + + TRY_WAIT(object->property("dataOK").toBool() == true); + + delete object; + } + + // Absolute network url + { + TestHTTPServer server(SERVER_PORT); + QVERIFY(server.isValid()); + QVERIFY(server.wait(TEST_FILE("open_network.expect"), + TEST_FILE("open_network.reply"), + TEST_FILE("testdocument.html"))); + + QmlComponent component(&engine, TEST_FILE("open.qml")); + QObject *object = component.beginCreate(engine.rootContext()); + QVERIFY(object != 0); + object->setProperty("url", "http://localhost:14445/testdocument.html"); + component.completeCreate(); + + QCOMPARE(object->property("readyState").toBool(), true); + QCOMPARE(object->property("openedState").toBool(), true); + QCOMPARE(object->property("status").toBool(), true); + QCOMPARE(object->property("statusText").toBool(), true); + QCOMPARE(object->property("responseText").toBool(), true); + QCOMPARE(object->property("responseXML").toBool(), true); + + TRY_WAIT(object->property("dataOK").toBool() == true); + + delete object; + } +} + +// Test that calling XMLHttpRequest.open() with an invalid method raises an exception +void tst_xmlhttprequest::open_invalid_method() +{ + QmlComponent component(&engine, TEST_FILE("open_invalid_method.qml")); + QObject *object = component.create(); + QVERIFY(object != 0); + + QCOMPARE(object->property("exceptionThrown").toBool(), true); + + delete object; +} + +// Test that calling XMLHttpRequest.open() with sync raises an exception +void tst_xmlhttprequest::open_sync() +{ + QmlComponent component(&engine, TEST_FILE("open_sync.qml")); + QObject *object = component.create(); + QVERIFY(object != 0); + + QCOMPARE(object->property("exceptionThrown").toBool(), true); + + delete object; +} + +// Calling with incorrect arg count raises an exception +void tst_xmlhttprequest::open_arg_count() +{ + { + QmlComponent component(&engine, TEST_FILE("open_arg_count.1.qml")); + QObject *object = component.create(); + QVERIFY(object != 0); + + QCOMPARE(object->property("exceptionThrown").toBool(), true); + + delete object; + } + + { + QmlComponent component(&engine, TEST_FILE("open_arg_count.2.qml")); + QObject *object = component.create(); + QVERIFY(object != 0); + + QCOMPARE(object->property("exceptionThrown").toBool(), true); + + delete object; + } +} + +// Test valid setRequestHeader() calls +void tst_xmlhttprequest::setRequestHeader() +{ + TestHTTPServer server(SERVER_PORT); + QVERIFY(server.isValid()); + QVERIFY(server.wait(TEST_FILE("setRequestHeader.expect"), + TEST_FILE("setRequestHeader.reply"), + TEST_FILE("testdocument.html"))); + + QmlComponent component(&engine, TEST_FILE("setRequestHeader.qml")); + QObject *object = component.beginCreate(engine.rootContext()); + QVERIFY(object != 0); + object->setProperty("url", "http://localhost:14445/testdocument.html"); + component.completeCreate(); + + TRY_WAIT(object->property("dataOK").toBool() == true); + + delete object; +} + +// Test setting headers before open() throws exception +void tst_xmlhttprequest::setRequestHeader_unsent() +{ + QmlComponent component(&engine, TEST_FILE("setRequestHeader_unsent.qml")); + QObject *object = component.create(); + QVERIFY(object != 0); + + QCOMPARE(object->property("test").toBool(), true); + + delete object; +} + +void tst_xmlhttprequest::setRequestHeader_illegalName_data() +{ + QTest::addColumn<QString>("name"); + + QTest::newRow("Accept-Charset") << "AccePT-CHArset"; + QTest::newRow("Accept-Encoding") << "AccEpt-EnCOding"; + QTest::newRow("Connection") << "ConnECtion"; + QTest::newRow("Content-Length") << "ContEnt-LenGth"; + QTest::newRow("Cookie") << "CookIe"; + QTest::newRow("Cookie2") << "CoOkie2"; + QTest::newRow("Content-Transfer-Encoding") << "ConteNT-tRANSFER-eNCOding"; + QTest::newRow("Date") << "DaTE"; + QTest::newRow("Expect") << "ExPect"; + QTest::newRow("Host") << "HoST"; + QTest::newRow("Keep-Alive") << "KEEP-aLive"; + QTest::newRow("Referer") << "ReferEr"; + QTest::newRow("TE") << "Te"; + QTest::newRow("Trailer") << "TraILEr"; + QTest::newRow("Transfer-Encoding") << "tRANsfer-Encoding"; + QTest::newRow("Upgrade") << "UpgrADe"; + QTest::newRow("User-Agent") << "uSEr-Agent"; + QTest::newRow("Via") << "vIa"; + QTest::newRow("Proxy-") << "ProXy-"; + QTest::newRow("Sec-") << "SeC-"; + QTest::newRow("Proxy-*") << "Proxy-BLAH"; + QTest::newRow("Sec-*") << "Sec-F"; +} + +// Tests that using illegal header names has no effect +void tst_xmlhttprequest::setRequestHeader_illegalName() +{ + QFETCH(QString, name); + + TestHTTPServer server(SERVER_PORT); + QVERIFY(server.isValid()); + QVERIFY(server.wait(TEST_FILE("open_network.expect"), + TEST_FILE("open_network.reply"), + TEST_FILE("testdocument.html"))); + + QmlComponent component(&engine, TEST_FILE("setRequestHeader_illegalName.qml")); + QObject *object = component.beginCreate(engine.rootContext()); + QVERIFY(object != 0); + object->setProperty("url", "http://localhost:14445/testdocument.html"); + object->setProperty("header", name); + component.completeCreate(); + + QCOMPARE(object->property("readyState").toBool(), true); + QCOMPARE(object->property("openedState").toBool(), true); + QCOMPARE(object->property("status").toBool(), true); + QCOMPARE(object->property("statusText").toBool(), true); + QCOMPARE(object->property("responseText").toBool(), true); + QCOMPARE(object->property("responseXML").toBool(), true); + + TRY_WAIT(object->property("dataOK").toBool() == true); + + delete object; +} + +// Test that attempting to set a header after a request is sent throws an exception +void tst_xmlhttprequest::setRequestHeader_sent() +{ + TestHTTPServer server(SERVER_PORT); + QVERIFY(server.isValid()); + QVERIFY(server.wait(TEST_FILE("open_network.expect"), + TEST_FILE("open_network.reply"), + TEST_FILE("testdocument.html"))); + + QmlComponent component(&engine, TEST_FILE("setRequestHeader_sent.qml")); + QObject *object = component.beginCreate(engine.rootContext()); + QVERIFY(object != 0); + object->setProperty("url", "http://localhost:14445/testdocument.html"); + component.completeCreate(); + + QCOMPARE(object->property("test").toBool(), true); + + TRY_WAIT(object->property("dataOK").toBool() == true); + + delete object; +} + +// Test that calling send() in UNSENT state throws an exception +void tst_xmlhttprequest::send_unsent() +{ + QmlComponent component(&engine, TEST_FILE("send_unsent.qml")); + QObject *object = component.create(); + QVERIFY(object != 0); + + QCOMPARE(object->property("test").toBool(), true); + + delete object; +} + +// Test attempting to resend a sent request throws an exception +void tst_xmlhttprequest::send_alreadySent() +{ + QmlComponent component(&engine, TEST_FILE("send_alreadySent.qml")); + QObject *object = component.create(); + QVERIFY(object != 0); + + QCOMPARE(object->property("test").toBool(), true); + TRY_WAIT(object->property("dataOK").toBool() == true); + + delete object; +} + +// Test that send for a GET or HEAD ignores data +void tst_xmlhttprequest::send_ignoreData() +{ + { + TestHTTPServer server(SERVER_PORT); + QVERIFY(server.isValid()); + QVERIFY(server.wait(TEST_FILE("send_ignoreData_GET.expect"), + TEST_FILE("send_ignoreData.reply"), + TEST_FILE("testdocument.html"))); + + QmlComponent component(&engine, TEST_FILE("send_ignoreData.qml")); + QObject *object = component.beginCreate(engine.rootContext()); + QVERIFY(object != 0); + object->setProperty("reqType", "GET"); + object->setProperty("url", "http://localhost:14445/testdocument.html"); + component.completeCreate(); + + TRY_WAIT(object->property("dataOK").toBool() == true); + + delete object; + } + + { + TestHTTPServer server(SERVER_PORT); + QVERIFY(server.isValid()); + QVERIFY(server.wait(TEST_FILE("send_ignoreData_PUT.expect"), + TEST_FILE("send_ignoreData.reply"), + TEST_FILE("testdocument.html"))); + + QmlComponent component(&engine, TEST_FILE("send_ignoreData.qml")); + QObject *object = component.beginCreate(engine.rootContext()); + QVERIFY(object != 0); + object->setProperty("reqType", "HEAD"); + object->setProperty("url", "http://localhost:14445/testdocument.html"); + component.completeCreate(); + + TRY_WAIT(object->property("dataOK").toBool() == true); + + delete object; + } +} + +// Test that send()'ing data works +void tst_xmlhttprequest::send_withdata() +{ + // No content-type + { + TestHTTPServer server(SERVER_PORT); + QVERIFY(server.isValid()); + QVERIFY(server.wait(TEST_FILE("send_data.1.expect"), + TEST_FILE("send_data.reply"), + TEST_FILE("testdocument.html"))); + + QmlComponent component(&engine, TEST_FILE("send_data.1.qml")); + QObject *object = component.beginCreate(engine.rootContext()); + QVERIFY(object != 0); + object->setProperty("url", "http://localhost:14445/testdocument.html"); + component.completeCreate(); + + TRY_WAIT(object->property("dataOK").toBool() == true); + + delete object; + } + + // Correct content-type + { + TestHTTPServer server(SERVER_PORT); + QVERIFY(server.isValid()); + QVERIFY(server.wait(TEST_FILE("send_data.1.expect"), + TEST_FILE("send_data.reply"), + TEST_FILE("testdocument.html"))); + + QmlComponent component(&engine, TEST_FILE("send_data.2.qml")); + QObject *object = component.beginCreate(engine.rootContext()); + QVERIFY(object != 0); + object->setProperty("url", "http://localhost:14445/testdocument.html"); + component.completeCreate(); + + TRY_WAIT(object->property("dataOK").toBool() == true); + + delete object; + } + + // Incorrect content-type + { + TestHTTPServer server(SERVER_PORT); + QVERIFY(server.isValid()); + QVERIFY(server.wait(TEST_FILE("send_data.1.expect"), + TEST_FILE("send_data.reply"), + TEST_FILE("testdocument.html"))); + + QmlComponent component(&engine, TEST_FILE("send_data.3.qml")); + QObject *object = component.beginCreate(engine.rootContext()); + QVERIFY(object != 0); + object->setProperty("url", "http://localhost:14445/testdocument.html"); + component.completeCreate(); + + TRY_WAIT(object->property("dataOK").toBool() == true); + + delete object; + } + + // Correct content-type - out of order + { + TestHTTPServer server(SERVER_PORT); + QVERIFY(server.isValid()); + QVERIFY(server.wait(TEST_FILE("send_data.4.expect"), + TEST_FILE("send_data.reply"), + TEST_FILE("testdocument.html"))); + + QmlComponent component(&engine, TEST_FILE("send_data.4.qml")); + QObject *object = component.beginCreate(engine.rootContext()); + QVERIFY(object != 0); + object->setProperty("url", "http://localhost:14445/testdocument.html"); + component.completeCreate(); + + TRY_WAIT(object->property("dataOK").toBool() == true); + + delete object; + } + + // Incorrect content-type - out of order + { + TestHTTPServer server(SERVER_PORT); + QVERIFY(server.isValid()); + QVERIFY(server.wait(TEST_FILE("send_data.4.expect"), + TEST_FILE("send_data.reply"), + TEST_FILE("testdocument.html"))); + + QmlComponent component(&engine, TEST_FILE("send_data.5.qml")); + QObject *object = component.beginCreate(engine.rootContext()); + QVERIFY(object != 0); + object->setProperty("url", "http://localhost:14445/testdocument.html"); + component.completeCreate(); + + TRY_WAIT(object->property("dataOK").toBool() == true); + + delete object; + } + + // PUT + { + TestHTTPServer server(SERVER_PORT); + QVERIFY(server.isValid()); + QVERIFY(server.wait(TEST_FILE("send_data.6.expect"), + TEST_FILE("send_data.reply"), + TEST_FILE("testdocument.html"))); + + QmlComponent component(&engine, TEST_FILE("send_data.6.qml")); + QObject *object = component.beginCreate(engine.rootContext()); + QVERIFY(object != 0); + object->setProperty("url", "http://localhost:14445/testdocument.html"); + component.completeCreate(); + + TRY_WAIT(object->property("dataOK").toBool() == true); + + delete object; + } +} + +void tst_xmlhttprequest::abort() +{ +} + +QTEST_MAIN(tst_xmlhttprequest) + +#include "tst_xmlhttprequest.moc" diff --git a/tests/auto/declarative/xmlhttprequest/xmlhttprequest.pro b/tests/auto/declarative/xmlhttprequest/xmlhttprequest.pro new file mode 100644 index 0000000..5d35a89 --- /dev/null +++ b/tests/auto/declarative/xmlhttprequest/xmlhttprequest.pro @@ -0,0 +1,12 @@ +load(qttest_p4) +contains(QT_CONFIG,declarative): QT += declarative webkit network +macx:CONFIG -= app_bundle + +HEADERS += testhttpserver.h + +SOURCES += tst_xmlhttprequest.cpp \ + testhttpserver.cpp + + +# Define SRCDIR equal to test's source directory +DEFINES += SRCDIR=\\\"$$PWD\\\" diff --git a/tests/auto/gestures/tst_gestures.cpp b/tests/auto/gestures/tst_gestures.cpp index 02c8232..20b53f2 100644 --- a/tests/auto/gestures/tst_gestures.cpp +++ b/tests/auto/gestures/tst_gestures.cpp @@ -111,12 +111,12 @@ public: CustomEvent::EventType = QEvent::registerEventType(); } - QGesture* createGesture(QObject *) + QGesture* create(QObject *) { return new CustomGesture; } - QGestureRecognizer::Result filterEvent(QGesture *state, QObject*, QEvent *event) + QGestureRecognizer::Result recognize(QGesture *state, QObject*, QEvent *event) { if (event->type() == CustomEvent::EventType) { QGestureRecognizer::Result result = 0; @@ -128,13 +128,13 @@ public: if (e->hasHotSpot) g->setHotSpot(e->hotSpot); if (g->serial >= CustomGesture::SerialFinishedThreshold) - result |= QGestureRecognizer::GestureFinished; + result |= QGestureRecognizer::FinishGesture; else if (g->serial >= CustomGesture::SerialStartedThreshold) - result |= QGestureRecognizer::GestureTriggered; + result |= QGestureRecognizer::TriggerGesture; else if (g->serial >= CustomGesture::SerialMaybeThreshold) - result |= QGestureRecognizer::MaybeGesture; + result |= QGestureRecognizer::MayBeGesture; else - result = QGestureRecognizer::NotGesture; + result = QGestureRecognizer::CancelGesture; return result; } return QGestureRecognizer::Ignore; @@ -142,7 +142,7 @@ public: void reset(QGesture *state) { - CustomGesture *g = static_cast<CustomGesture*>(state); + CustomGesture *g = static_cast<CustomGesture *>(state); g->serial = 0; QGestureRecognizer::reset(state); } @@ -159,26 +159,26 @@ public: CustomEvent::EventType = QEvent::registerEventType(); } - QGesture* createGesture(QObject *) + QGesture* create(QObject *) { return new CustomGesture; } - QGestureRecognizer::Result filterEvent(QGesture *state, QObject*, QEvent *event) + QGestureRecognizer::Result recognize(QGesture *state, QObject*, QEvent *event) { if (event->type() == CustomEvent::EventType) { QGestureRecognizer::Result result = QGestureRecognizer::ConsumeEventHint; - CustomGesture *g = static_cast<CustomGesture*>(state); - CustomEvent *e = static_cast<CustomEvent*>(event); + CustomGesture *g = static_cast<CustomGesture *>(state); + CustomEvent *e = static_cast<CustomEvent *>(event); g->serial = e->serial; if (e->hasHotSpot) g->setHotSpot(e->hotSpot); if (g->serial >= CustomGesture::SerialFinishedThreshold) - result |= QGestureRecognizer::GestureFinished; + result |= QGestureRecognizer::FinishGesture; else if (g->serial >= CustomGesture::SerialMaybeThreshold) - result |= QGestureRecognizer::GestureTriggered; + result |= QGestureRecognizer::TriggerGesture; else - result = QGestureRecognizer::NotGesture; + result = QGestureRecognizer::CancelGesture; return result; } return QGestureRecognizer::Ignore; @@ -186,7 +186,7 @@ public: void reset(QGesture *state) { - CustomGesture *g = static_cast<CustomGesture*>(state); + CustomGesture *g = static_cast<CustomGesture *>(state); g->serial = 0; QGestureRecognizer::reset(state); } @@ -256,7 +256,7 @@ protected: } if (eventsPtr) { QGestureEvent *e = static_cast<QGestureEvent*>(event); - QList<QGesture*> gestures = e->allGestures(); + QList<QGesture*> gestures = e->gestures(); foreach(QGesture *g, gestures) { eventsPtr->all << g->gestureType(); switch(g->state()) { @@ -332,6 +332,7 @@ private slots: void consumeEventHint(); void unregisterRecognizer(); void autoCancelGestures(); + void autoCancelGestures2(); }; tst_Gestures::tst_Gestures() @@ -344,14 +345,14 @@ tst_Gestures::~tst_Gestures() void tst_Gestures::initTestCase() { - CustomGesture::GestureType = QApplication::registerGestureRecognizer(new CustomGestureRecognizer); + CustomGesture::GestureType = QGestureRecognizer::registerRecognizer(new CustomGestureRecognizer); QVERIFY(CustomGesture::GestureType != Qt::GestureType(0)); QVERIFY(CustomGesture::GestureType != Qt::CustomGesture); } void tst_Gestures::cleanupTestCase() { - QApplication::unregisterGestureRecognizer(CustomGesture::GestureType); + QGestureRecognizer::unregisterRecognizer(CustomGesture::GestureType); } void tst_Gestures::init() @@ -365,7 +366,7 @@ void tst_Gestures::cleanup() void tst_Gestures::customGesture() { GestureWidget widget; - widget.grabGesture(CustomGesture::GestureType, Qt::WidgetGesture); + widget.grabGesture(CustomGesture::GestureType, Qt::DontStartGestureOnChildren); CustomEvent event; sendCustomGesture(&event, &widget); @@ -386,7 +387,7 @@ void tst_Gestures::customGesture() void tst_Gestures::consumeEventHint() { GestureWidget widget; - widget.grabGesture(CustomGesture::GestureType, Qt::WidgetGesture); + widget.grabGesture(CustomGesture::GestureType, Qt::DontStartGestureOnChildren); CustomGestureRecognizer::ConsumeEvents = true; CustomEvent event; @@ -399,7 +400,7 @@ void tst_Gestures::consumeEventHint() void tst_Gestures::autoCancelingGestures() { GestureWidget widget; - widget.grabGesture(CustomGesture::GestureType, Qt::WidgetGesture); + widget.grabGesture(CustomGesture::GestureType, Qt::DontStartGestureOnChildren); // send partial gesture. The gesture will be in the "maybe" state, but will // never get enough events to fire, so Qt will have to kill it. CustomEvent ev; @@ -423,7 +424,7 @@ void tst_Gestures::gestureOverChild() GestureWidget *child = new GestureWidget("child"); l->addWidget(child); - widget.grabGesture(CustomGesture::GestureType, Qt::WidgetGesture); + widget.grabGesture(CustomGesture::GestureType, Qt::DontStartGestureOnChildren); CustomEvent event; sendCustomGesture(&event, child); @@ -439,7 +440,7 @@ void tst_Gestures::gestureOverChild() QCOMPARE(widget.gestureOverrideEventsReceived, 0); // enable gestures over the children - widget.grabGesture(CustomGesture::GestureType, Qt::WidgetWithChildrenGesture); + widget.grabGesture(CustomGesture::GestureType); widget.reset(); child->reset(); @@ -468,8 +469,8 @@ void tst_Gestures::multipleWidgetOnlyGestureInTree() GestureWidget *child = new GestureWidget("child"); l->addWidget(child); - parent.grabGesture(CustomGesture::GestureType, Qt::WidgetGesture); - child->grabGesture(CustomGesture::GestureType, Qt::WidgetGesture); + parent.grabGesture(CustomGesture::GestureType, Qt::DontStartGestureOnChildren); + child->grabGesture(CustomGesture::GestureType, Qt::DontStartGestureOnChildren); static const int TotalGestureEventsCount = CustomGesture::SerialFinishedThreshold - CustomGesture::SerialStartedThreshold + 1; static const int TotalCustomEventsCount = CustomGesture::SerialFinishedThreshold - CustomGesture::SerialMaybeThreshold + 1; @@ -506,8 +507,8 @@ void tst_Gestures::conflictingGestures() GestureWidget *child = new GestureWidget("child"); l->addWidget(child); - parent.grabGesture(CustomGesture::GestureType, Qt::WidgetWithChildrenGesture); - child->grabGesture(CustomGesture::GestureType, Qt::WidgetWithChildrenGesture); + parent.grabGesture(CustomGesture::GestureType); + child->grabGesture(CustomGesture::GestureType); static const int TotalGestureEventsCount = CustomGesture::SerialFinishedThreshold - CustomGesture::SerialStartedThreshold + 1; @@ -542,7 +543,9 @@ void tst_Gestures::conflictingGestures() parent.reset(); child->reset(); - // nobody accepts the override, we will send normal events to the closest context (to the child) + // nobody accepts the override, we will send normal events to the closest + // context (i.e. to the child widget) and it will be propagated and + // accepted by the parent widget parent.acceptGestureOverride = false; child->acceptGestureOverride = false; child->ignoredGestures << CustomGesture::GestureType; @@ -551,6 +554,41 @@ void tst_Gestures::conflictingGestures() sendCustomGesture(&event, child); QCOMPARE(child->gestureOverrideEventsReceived, 1); + QCOMPARE(child->gestureEventsReceived, 1); + QCOMPARE(parent.gestureOverrideEventsReceived, 1); + QCOMPARE(parent.gestureEventsReceived, TotalGestureEventsCount); + + parent.reset(); + child->reset(); + + // nobody accepts the override, and nobody accepts the gesture event + parent.acceptGestureOverride = false; + child->acceptGestureOverride = false; + parent.ignoredGestures << CustomGesture::GestureType; + child->ignoredGestures << CustomGesture::GestureType; + + // sending events to the child and making sure there is no conflict + sendCustomGesture(&event, child); + + QCOMPARE(child->gestureOverrideEventsReceived, 1); + QCOMPARE(child->gestureEventsReceived, TotalGestureEventsCount); + QCOMPARE(parent.gestureOverrideEventsReceived, 1); + QCOMPARE(parent.gestureEventsReceived, 1); + + parent.reset(); + child->reset(); + + // we set an attribute to make sure all gesture events are propagated + parent.grabGesture(CustomGesture::GestureType, Qt::ReceivePartialGestures); + parent.acceptGestureOverride = false; + child->acceptGestureOverride = false; + parent.ignoredGestures << CustomGesture::GestureType; + child->ignoredGestures << CustomGesture::GestureType; + + // sending events to the child and making sure there is no conflict + sendCustomGesture(&event, child); + + QCOMPARE(child->gestureOverrideEventsReceived, 1); QCOMPARE(child->gestureEventsReceived, TotalGestureEventsCount); QCOMPARE(parent.gestureOverrideEventsReceived, 1); QCOMPARE(parent.gestureEventsReceived, TotalGestureEventsCount); @@ -558,7 +596,7 @@ void tst_Gestures::conflictingGestures() parent.reset(); child->reset(); - Qt::GestureType ContinuousGesture = QApplication::registerGestureRecognizer(new CustomContinuousGestureRecognizer); + Qt::GestureType ContinuousGesture = QGestureRecognizer::registerRecognizer(new CustomContinuousGestureRecognizer); static const int ContinuousGestureEventsCount = CustomGesture::SerialFinishedThreshold - CustomGesture::SerialMaybeThreshold + 1; child->grabGesture(ContinuousGesture); // child accepts override. And it also receives another custom gesture. @@ -572,13 +610,13 @@ void tst_Gestures::conflictingGestures() QCOMPARE(parent.gestureOverrideEventsReceived, 0); QCOMPARE(parent.gestureEventsReceived, 0); - QApplication::unregisterGestureRecognizer(ContinuousGesture); + QGestureRecognizer::unregisterRecognizer(ContinuousGesture); } void tst_Gestures::finishedWithoutStarted() { GestureWidget widget; - widget.grabGesture(CustomGesture::GestureType, Qt::WidgetGesture); + widget.grabGesture(CustomGesture::GestureType, Qt::DontStartGestureOnChildren); // the gesture will claim it finished, but it was never started. CustomEvent ev; @@ -598,9 +636,9 @@ void tst_Gestures::finishedWithoutStarted() void tst_Gestures::unknownGesture() { GestureWidget widget; - widget.grabGesture(CustomGesture::GestureType, Qt::WidgetGesture); - widget.grabGesture(Qt::CustomGesture, Qt::WidgetGesture); - widget.grabGesture(Qt::GestureType(Qt::PanGesture+512), Qt::WidgetGesture); + widget.grabGesture(CustomGesture::GestureType, Qt::DontStartGestureOnChildren); + widget.grabGesture(Qt::CustomGesture, Qt::DontStartGestureOnChildren); + widget.grabGesture(Qt::GestureType(Qt::PanGesture+512), Qt::DontStartGestureOnChildren); CustomEvent event; sendCustomGesture(&event, &widget); @@ -702,7 +740,7 @@ protected: } if (eventsPtr) { QGestureEvent *e = static_cast<QGestureEvent*>(event); - QList<QGesture*> gestures = e->allGestures(); + QList<QGesture*> gestures = e->gestures(); foreach(QGesture *g, gestures) { eventsPtr->all << g->gestureType(); switch(g->state()) { @@ -746,7 +784,7 @@ void tst_Gestures::graphicsItemGesture() QTest::qWaitForWindowShown(&view); view.ensureVisible(scene.sceneRect()); - view.viewport()->grabGesture(CustomGesture::GestureType, Qt::WidgetGesture); + view.viewport()->grabGesture(CustomGesture::GestureType, Qt::DontStartGestureOnChildren); item->grabGesture(CustomGesture::GestureType); static const int TotalGestureEventsCount = CustomGesture::SerialFinishedThreshold - CustomGesture::SerialStartedThreshold + 1; @@ -820,7 +858,7 @@ void tst_Gestures::graphicsItemTreeGesture() QTest::qWaitForWindowShown(&view); view.ensureVisible(scene.sceneRect()); - view.viewport()->grabGesture(CustomGesture::GestureType, Qt::WidgetGesture); + view.viewport()->grabGesture(CustomGesture::GestureType, Qt::DontStartGestureOnChildren); item1->grabGesture(CustomGesture::GestureType); static const int TotalGestureEventsCount = CustomGesture::SerialFinishedThreshold - CustomGesture::SerialStartedThreshold + 1; @@ -850,7 +888,7 @@ void tst_Gestures::graphicsItemTreeGesture() QCOMPARE(item1_child2->gestureEventsReceived, 0); QCOMPARE(item1_child2->gestureOverrideEventsReceived, 0); QCOMPARE(item1->gestureOverrideEventsReceived, 1); - QCOMPARE(item1->gestureEventsReceived, TotalGestureEventsCount); + QCOMPARE(item1->gestureEventsReceived, 1); } void tst_Gestures::explicitGraphicsObjectTarget() @@ -878,10 +916,10 @@ void tst_Gestures::explicitGraphicsObjectTarget() QTest::qWaitForWindowShown(&view); view.ensureVisible(scene.sceneRect()); - view.viewport()->grabGesture(CustomGesture::GestureType, Qt::WidgetGesture); - item1->grabGesture(CustomGesture::GestureType, Qt::ItemGesture); - item2->grabGesture(CustomGesture::GestureType, Qt::ItemGesture); - item2_child1->grabGesture(CustomGesture::GestureType, Qt::ItemGesture); + view.viewport()->grabGesture(CustomGesture::GestureType, Qt::DontStartGestureOnChildren); + item1->grabGesture(CustomGesture::GestureType, Qt::DontStartGestureOnChildren); + item2->grabGesture(CustomGesture::GestureType, Qt::DontStartGestureOnChildren); + item2_child1->grabGesture(CustomGesture::GestureType, Qt::DontStartGestureOnChildren); static const int TotalGestureEventsCount = CustomGesture::SerialFinishedThreshold - CustomGesture::SerialStartedThreshold + 1; @@ -938,7 +976,7 @@ void tst_Gestures::gestureOverChildGraphicsItem() QTest::qWaitForWindowShown(&view); view.ensureVisible(scene.sceneRect()); - view.viewport()->grabGesture(CustomGesture::GestureType, Qt::WidgetGesture); + view.viewport()->grabGesture(CustomGesture::GestureType, Qt::DontStartGestureOnChildren); item1->grabGesture(CustomGesture::GestureType); static const int TotalGestureEventsCount = CustomGesture::SerialFinishedThreshold - CustomGesture::SerialStartedThreshold + 1; @@ -965,7 +1003,39 @@ void tst_Gestures::gestureOverChildGraphicsItem() event.hasHotSpot = true; sendCustomGesture(&event, item0, &scene); - QCOMPARE(item0->customEventsReceived, TotalCustomEventsCount); + QCOMPARE(item2_child1->gestureEventsReceived, 0); + QCOMPARE(item2_child1->gestureOverrideEventsReceived, 0); + QCOMPARE(item2->gestureEventsReceived, 1); + QCOMPARE(item2->gestureOverrideEventsReceived, 1); + QCOMPARE(item1->gestureEventsReceived, TotalGestureEventsCount); + QCOMPARE(item1->gestureOverrideEventsReceived, 1); + + item0->reset(); item1->reset(); item2->reset(); item2_child1->reset(); + item2->grabGesture(CustomGesture::GestureType); + item2->ignoredGestures << CustomGesture::GestureType; + item1->ignoredGestures << CustomGesture::GestureType; + + event.hotSpot = mapToGlobal(QPointF(10, 10), item2_child1, &view); + event.hasHotSpot = true; + sendCustomGesture(&event, item0, &scene); + + QCOMPARE(item2_child1->gestureEventsReceived, 0); + QCOMPARE(item2_child1->gestureOverrideEventsReceived, 0); + QCOMPARE(item2->gestureEventsReceived, TotalGestureEventsCount); + QCOMPARE(item2->gestureOverrideEventsReceived, 1); + QCOMPARE(item1->gestureEventsReceived, 1); + QCOMPARE(item1->gestureOverrideEventsReceived, 1); + + item0->reset(); item1->reset(); item2->reset(); item2_child1->reset(); + item2->grabGesture(CustomGesture::GestureType); + item2->ignoredGestures << CustomGesture::GestureType; + item1->ignoredGestures << CustomGesture::GestureType; + item1->grabGesture(CustomGesture::GestureType, Qt::ReceivePartialGestures); + + event.hotSpot = mapToGlobal(QPointF(10, 10), item2_child1, &view); + event.hasHotSpot = true; + sendCustomGesture(&event, item0, &scene); + QCOMPARE(item2_child1->gestureEventsReceived, 0); QCOMPARE(item2_child1->gestureOverrideEventsReceived, 0); QCOMPARE(item2->gestureEventsReceived, TotalGestureEventsCount); @@ -981,10 +1051,10 @@ void tst_Gestures::twoGesturesOnDifferentLevel() GestureWidget *child = new GestureWidget("child"); l->addWidget(child); - Qt::GestureType SecondGesture = QApplication::registerGestureRecognizer(new CustomGestureRecognizer); + Qt::GestureType SecondGesture = QGestureRecognizer::registerRecognizer(new CustomGestureRecognizer); - parent.grabGesture(CustomGesture::GestureType, Qt::WidgetWithChildrenGesture); - child->grabGesture(SecondGesture, Qt::WidgetWithChildrenGesture); + parent.grabGesture(CustomGesture::GestureType); + child->grabGesture(SecondGesture); CustomEvent event; // sending events that form a gesture to one widget, but they will be @@ -1009,7 +1079,7 @@ void tst_Gestures::twoGesturesOnDifferentLevel() for(int i = 0; i < child->events.all.size(); ++i) QCOMPARE(parent.events.all.at(i), CustomGesture::GestureType); - QApplication::unregisterGestureRecognizer(SecondGesture); + QGestureRecognizer::unregisterRecognizer(SecondGesture); } void tst_Gestures::multipleGesturesInTree() @@ -1021,18 +1091,19 @@ void tst_Gestures::multipleGesturesInTree() GestureWidget *D = new GestureWidget("D", C); Qt::GestureType FirstGesture = CustomGesture::GestureType; - Qt::GestureType SecondGesture = QApplication::registerGestureRecognizer(new CustomGestureRecognizer); - Qt::GestureType ThirdGesture = QApplication::registerGestureRecognizer(new CustomGestureRecognizer); - - A->grabGesture(FirstGesture, Qt::WidgetWithChildrenGesture); // A [1 3] - A->grabGesture(ThirdGesture, Qt::WidgetWithChildrenGesture); // | - B->grabGesture(SecondGesture, Qt::WidgetWithChildrenGesture); // B [ 2 3] - B->grabGesture(ThirdGesture, Qt::WidgetWithChildrenGesture); // | - C->grabGesture(FirstGesture, Qt::WidgetWithChildrenGesture); // C [1 2 3] - C->grabGesture(SecondGesture, Qt::WidgetWithChildrenGesture); // | - C->grabGesture(ThirdGesture, Qt::WidgetWithChildrenGesture); // D [1 3] - D->grabGesture(FirstGesture, Qt::WidgetWithChildrenGesture); - D->grabGesture(ThirdGesture, Qt::WidgetWithChildrenGesture); + Qt::GestureType SecondGesture = QGestureRecognizer::registerRecognizer(new CustomGestureRecognizer); + Qt::GestureType ThirdGesture = QGestureRecognizer::registerRecognizer(new CustomGestureRecognizer); + + Qt::GestureFlags flags = Qt::ReceivePartialGestures; + A->grabGesture(FirstGesture, flags); // A [1 3] + A->grabGesture(ThirdGesture, flags); // | + B->grabGesture(SecondGesture, flags); // B [ 2 3] + B->grabGesture(ThirdGesture, flags); // | + C->grabGesture(FirstGesture, flags); // C [1 2 3] + C->grabGesture(SecondGesture, flags); // | + C->grabGesture(ThirdGesture, flags); // D [1 3] + D->grabGesture(FirstGesture, flags); + D->grabGesture(ThirdGesture, flags); // make sure all widgets ignore events, so they get propagated. A->ignoredGestures << FirstGesture << ThirdGesture; @@ -1079,8 +1150,8 @@ void tst_Gestures::multipleGesturesInTree() QCOMPARE(A->events.all.count(SecondGesture), 0); QCOMPARE(A->events.all.count(ThirdGesture), TotalGestureEventsCount); - QApplication::unregisterGestureRecognizer(SecondGesture); - QApplication::unregisterGestureRecognizer(ThirdGesture); + QGestureRecognizer::unregisterRecognizer(SecondGesture); + QGestureRecognizer::unregisterRecognizer(ThirdGesture); } void tst_Gestures::multipleGesturesInComplexTree() @@ -1092,26 +1163,27 @@ void tst_Gestures::multipleGesturesInComplexTree() GestureWidget *D = new GestureWidget("D", C); Qt::GestureType FirstGesture = CustomGesture::GestureType; - Qt::GestureType SecondGesture = QApplication::registerGestureRecognizer(new CustomGestureRecognizer); - Qt::GestureType ThirdGesture = QApplication::registerGestureRecognizer(new CustomGestureRecognizer); - Qt::GestureType FourthGesture = QApplication::registerGestureRecognizer(new CustomGestureRecognizer); - Qt::GestureType FifthGesture = QApplication::registerGestureRecognizer(new CustomGestureRecognizer); - Qt::GestureType SixthGesture = QApplication::registerGestureRecognizer(new CustomGestureRecognizer); - Qt::GestureType SeventhGesture = QApplication::registerGestureRecognizer(new CustomGestureRecognizer); - - A->grabGesture(FirstGesture, Qt::WidgetWithChildrenGesture); // A [1,3,4] - A->grabGesture(ThirdGesture, Qt::WidgetWithChildrenGesture); // | - A->grabGesture(FourthGesture, Qt::WidgetWithChildrenGesture); // B [2,3,5] - B->grabGesture(SecondGesture, Qt::WidgetWithChildrenGesture); // | - B->grabGesture(ThirdGesture, Qt::WidgetWithChildrenGesture); // C [1,2,3,6] - B->grabGesture(FifthGesture, Qt::WidgetWithChildrenGesture); // | - C->grabGesture(FirstGesture, Qt::WidgetWithChildrenGesture); // D [1,3,7] - C->grabGesture(SecondGesture, Qt::WidgetWithChildrenGesture); - C->grabGesture(ThirdGesture, Qt::WidgetWithChildrenGesture); - C->grabGesture(SixthGesture, Qt::WidgetWithChildrenGesture); - D->grabGesture(FirstGesture, Qt::WidgetWithChildrenGesture); - D->grabGesture(ThirdGesture, Qt::WidgetWithChildrenGesture); - D->grabGesture(SeventhGesture, Qt::WidgetWithChildrenGesture); + Qt::GestureType SecondGesture = QGestureRecognizer::registerRecognizer(new CustomGestureRecognizer); + Qt::GestureType ThirdGesture = QGestureRecognizer::registerRecognizer(new CustomGestureRecognizer); + Qt::GestureType FourthGesture = QGestureRecognizer::registerRecognizer(new CustomGestureRecognizer); + Qt::GestureType FifthGesture = QGestureRecognizer::registerRecognizer(new CustomGestureRecognizer); + Qt::GestureType SixthGesture = QGestureRecognizer::registerRecognizer(new CustomGestureRecognizer); + Qt::GestureType SeventhGesture = QGestureRecognizer::registerRecognizer(new CustomGestureRecognizer); + + Qt::GestureFlags flags = Qt::ReceivePartialGestures; + A->grabGesture(FirstGesture, flags); // A [1,3,4] + A->grabGesture(ThirdGesture, flags); // | + A->grabGesture(FourthGesture, flags); // B [2,3,5] + B->grabGesture(SecondGesture, flags); // | + B->grabGesture(ThirdGesture, flags); // C [1,2,3,6] + B->grabGesture(FifthGesture, flags); // | + C->grabGesture(FirstGesture, flags); // D [1,3,7] + C->grabGesture(SecondGesture, flags); + C->grabGesture(ThirdGesture, flags); + C->grabGesture(SixthGesture, flags); + D->grabGesture(FirstGesture, flags); + D->grabGesture(ThirdGesture, flags); + D->grabGesture(SeventhGesture, flags); // make sure all widgets ignore events, so they get propagated. QSet<Qt::GestureType> allGestureTypes; @@ -1175,12 +1247,12 @@ void tst_Gestures::multipleGesturesInComplexTree() QCOMPARE(A->events.all.count(SixthGesture), 0); QCOMPARE(A->events.all.count(SeventhGesture), 0); - QApplication::unregisterGestureRecognizer(SecondGesture); - QApplication::unregisterGestureRecognizer(ThirdGesture); - QApplication::unregisterGestureRecognizer(FourthGesture); - QApplication::unregisterGestureRecognizer(FifthGesture); - QApplication::unregisterGestureRecognizer(SixthGesture); - QApplication::unregisterGestureRecognizer(SeventhGesture); + QGestureRecognizer::unregisterRecognizer(SecondGesture); + QGestureRecognizer::unregisterRecognizer(ThirdGesture); + QGestureRecognizer::unregisterRecognizer(FourthGesture); + QGestureRecognizer::unregisterRecognizer(FifthGesture); + QGestureRecognizer::unregisterRecognizer(SixthGesture); + QGestureRecognizer::unregisterRecognizer(SeventhGesture); } void tst_Gestures::testMapToScene() @@ -1189,7 +1261,7 @@ void tst_Gestures::testMapToScene() QList<QGesture*> list; list << &gesture; QGestureEvent event(list); - QCOMPARE(event.mapToScene(gesture.hotSpot()), QPointF()); // not set, can't do much + QCOMPARE(event.mapToGraphicsScene(gesture.hotSpot()), QPointF()); // not set, can't do much QGraphicsScene scene; QGraphicsView view(&scene); @@ -1206,7 +1278,7 @@ void tst_Gestures::testMapToScene() QPoint origin = view.mapToGlobal(QPoint()); event.setWidget(view.viewport()); - QCOMPARE(event.mapToScene(origin + QPoint(100, 200)), view.mapToScene(QPoint(100, 200))); + QCOMPARE(event.mapToGraphicsScene(origin + QPoint(100, 200)), view.mapToScene(QPoint(100, 200))); } void tst_Gestures::ungrabGesture() // a method on QWidget @@ -1224,7 +1296,7 @@ void tst_Gestures::ungrabGesture() // a method on QWidget if (event->type() == QEvent::Gesture) { QGestureEvent *gestureEvent = static_cast<QGestureEvent*>(event); if (gestureEvent) - foreach (QGesture *g, gestureEvent->allGestures()) + foreach (QGesture *g, gestureEvent->gestures()) gestures.insert(g); } return GestureWidget::event(event); @@ -1235,8 +1307,8 @@ void tst_Gestures::ungrabGesture() // a method on QWidget MockGestureWidget *a = &parent; MockGestureWidget *b = new MockGestureWidget("B", a); - a->grabGesture(CustomGesture::GestureType, Qt::WidgetGesture); - b->grabGesture(CustomGesture::GestureType, Qt::WidgetWithChildrenGesture); + a->grabGesture(CustomGesture::GestureType, Qt::DontStartGestureOnChildren); + b->grabGesture(CustomGesture::GestureType); b->ignoredGestures << CustomGesture::GestureType; CustomEvent event; @@ -1295,20 +1367,6 @@ void tst_Gestures::unregisterRecognizer() // a method on QApplication void tst_Gestures::autoCancelGestures() { - class MockRecognizer : public QGestureRecognizer { - public: - QGestureRecognizer::Result filterEvent(QGesture *gesture, QObject *watched, QEvent *event) - { - Q_UNUSED(gesture); - Q_UNUSED(watched); - if (event->type() == QEvent::MouseButtonPress) - return QGestureRecognizer::GestureTriggered; - if (event->type() == QEvent::MouseButtonRelease) - return QGestureRecognizer::GestureFinished; - return QGestureRecognizer::Ignore; - } - }; - class MockWidget : public GestureWidget { public: MockWidget(const char *name) : GestureWidget(name) { } @@ -1317,21 +1375,25 @@ void tst_Gestures::autoCancelGestures() { if (event->type() == QEvent::Gesture) { QGestureEvent *ge = static_cast<QGestureEvent*>(event); - Q_ASSERT(ge->allGestures().count() == 1); // can't use QCOMPARE here... - ge->allGestures().first()->setGestureCancelPolicy(QGesture::CancelAllInContext); + Q_ASSERT(ge->gestures().count() == 1); // can't use QCOMPARE here... + ge->gestures().first()->setGestureCancelPolicy(QGesture::CancelAllInContext); } return GestureWidget::event(event); } }; + const Qt::GestureType secondGesture = QGestureRecognizer::registerRecognizer(new CustomGestureRecognizer); + MockWidget parent("parent"); // this one sets the cancel policy to CancelAllInContext parent.resize(300, 100); + parent.setWindowFlags(Qt::X11BypassWindowManagerHint); GestureWidget *child = new GestureWidget("child", &parent); child->setGeometry(10, 10, 100, 80); - Qt::GestureType type = QApplication::registerGestureRecognizer(new MockRecognizer()); - parent.grabGesture(type, Qt::WidgetWithChildrenGesture); - child->grabGesture(type, Qt::WidgetWithChildrenGesture); + parent.grabGesture(CustomGesture::GestureType); + child->grabGesture(secondGesture); + parent.show(); + QTest::qWaitForWindowShown(&parent); /* An event is send to both the child and the parent, when the child gets it a gesture is triggered @@ -1340,18 +1402,73 @@ void tst_Gestures::autoCancelGestures() parent gets it he accepts it and that causes the cancel policy to activate. The cause of that is the gesture for the child is cancelled and send to the child as such. */ - QMouseEvent event(QEvent::MouseButtonPress, QPoint(20,20), Qt::LeftButton, Qt::LeftButton, Qt::NoModifier); + CustomEvent event; + event.serial = CustomGesture::SerialStartedThreshold; QApplication::sendEvent(child, &event); + QCOMPARE(child->events.all.count(), 2); QCOMPARE(child->events.started.count(), 1); - QCOMPARE(child->events.all.count(), 1); - QCOMPARE(parent.events.all.count(), 0); - child->reset(); - QApplication::sendEvent(&parent, &event); + QCOMPARE(child->events.canceled.count(), 1); QCOMPARE(parent.events.all.count(), 1); - QCOMPARE(parent.events.started.count(), 1); - QCOMPARE(child->events.started.count(), 0); - QCOMPARE(child->events.all.count(), 1); + + // clean up, make the parent gesture finish + event.serial = CustomGesture::SerialFinishedThreshold; + QApplication::sendEvent(child, &event); + QCOMPARE(parent.events.all.count(), 2); +} + +void tst_Gestures::autoCancelGestures2() +{ + class MockItem : public GestureItem { + public: + MockItem(const char *name) : GestureItem(name) { } + + bool event(QEvent *event) { + if (event->type() == QEvent::Gesture) { + QGestureEvent *ge = static_cast<QGestureEvent*>(event); + Q_ASSERT(ge->gestures().count() == 1); // can't use QCOMPARE here... + ge->gestures().first()->setGestureCancelPolicy(QGesture::CancelAllInContext); + } + return GestureItem::event(event); + } + }; + + const Qt::GestureType secondGesture = QGestureRecognizer ::registerRecognizer(new CustomGestureRecognizer); + + QGraphicsScene scene; + QGraphicsView view(&scene); + view.setWindowFlags(Qt::X11BypassWindowManagerHint); + + MockItem *parent = new MockItem("parent"); + GestureItem *child = new GestureItem("child"); + child->setParentItem(parent); + parent->setPos(0, 0); + child->setPos(10, 10); + scene.addItem(parent); + view.viewport()->grabGesture(CustomGesture::GestureType, Qt::DontStartGestureOnChildren); + view.viewport()->grabGesture(secondGesture, Qt::DontStartGestureOnChildren); + parent->grabGesture(CustomGesture::GestureType); + child->grabGesture(secondGesture); + + view.show(); + QTest::qWaitForWindowShown(&view); + view.ensureVisible(scene.sceneRect()); + + CustomEvent event; + event.serial = CustomGesture::SerialStartedThreshold; + event.hasHotSpot = true; + event.hotSpot = mapToGlobal(QPointF(5, 5), child, &view); + // qDebug() << event.hotSpot; + scene.sendEvent(child, &event); + //QEventLoop().exec(); + QCOMPARE(parent->events.all.count(), 1); + QCOMPARE(child->events.started.count(), 1); QCOMPARE(child->events.canceled.count(), 1); + QCOMPARE(child->events.all.count(), 2); + + // clean up, make the parent gesture finish + event.serial = CustomGesture::SerialFinishedThreshold; + scene.sendEvent(child, &event); + QCOMPARE(parent->events.all.count(), 2); } QTEST_MAIN(tst_Gestures) diff --git a/tests/auto/linguist/lrelease/tst_lrelease.cpp b/tests/auto/linguist/lrelease/tst_lrelease.cpp index 39de8a1..93cb97c 100644 --- a/tests/auto/linguist/lrelease/tst_lrelease.cpp +++ b/tests/auto/linguist/lrelease/tst_lrelease.cpp @@ -60,6 +60,7 @@ private slots: void mixedcodecs(); void compressed(); void idbased(); + void markuntranslated(); void dupes(); private: @@ -210,6 +211,18 @@ void tst_lrelease::idbased() QCOMPARE(qtTrId("untranslated_id"), QString::fromAscii("This has no translation.")); } +void tst_lrelease::markuntranslated() +{ + QVERIFY(!QProcess::execute(binDir + "/lrelease -markuntranslated # -idbased testdata/idbased.ts")); + + QTranslator translator; + QVERIFY(translator.load("testdata/idbased.qm")); + qApp->installTranslator(&translator); + + QCOMPARE(qtTrId("test_id"), QString::fromAscii("This is a test string.")); + QCOMPARE(qtTrId("untranslated_id"), QString::fromAscii("#This has no translation.")); +} + void tst_lrelease::dupes() { QProcess proc; diff --git a/tests/auto/linguist/lupdate/testdata/good/parsecpp2/main.cpp b/tests/auto/linguist/lupdate/testdata/good/parsecpp2/main.cpp index eaa271a..7ddb68f 100644 --- a/tests/auto/linguist/lupdate/testdata/good/parsecpp2/main.cpp +++ b/tests/auto/linguist/lupdate/testdata/good/parsecpp2/main.cpp @@ -63,3 +63,52 @@ line c++ comment } (with brace) #define This is another // comment in } define \ something } comment } // complain here + + + +// Nested class in same file +class TopLevel { + Q_OBJECT + + class Nested; +}; + +class TopLevel::Nested { + void foo(); +}; + +TopLevel::Nested::foo() +{ + TopLevel::tr("TopLevel"); +} + +// Nested class in other file +#include "main.h" + +class TopLevel2::Nested { + void foo(); +}; + +TopLevel2::Nested::foo() +{ + TopLevel2::tr("TopLevel2"); +} + + + +namespace NameSpace { +class ToBeUsed; +} + +// using statement before class definition +using NameSpace::ToBeUsed; + +class NameSpace::ToBeUsed { + Q_OBJECT + void caller(); +}; + +void ToBeUsed::caller() +{ + tr("NameSpace::ToBeUsed"); +} diff --git a/tests/auto/linguist/lupdate/testdata/good/parsecpp2/main.h b/tests/auto/linguist/lupdate/testdata/good/parsecpp2/main.h new file mode 100644 index 0000000..54a76ab --- /dev/null +++ b/tests/auto/linguist/lupdate/testdata/good/parsecpp2/main.h @@ -0,0 +1,51 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the QtCore module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the Technology Preview License Agreement accompanying +** this package. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** +** +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +// IMPORTANT!!!! If you want to add testdata to this file, +// always add it to the end in order to not change the linenumbers of translations!!! + +class TopLevel2 { + Q_OBJECT + + class Nested; +}; + + diff --git a/tests/auto/linguist/lupdate/testdata/good/parsecpp2/project.ts.result b/tests/auto/linguist/lupdate/testdata/good/parsecpp2/project.ts.result index 07a7469..6f48e27 100644 --- a/tests/auto/linguist/lupdate/testdata/good/parsecpp2/project.ts.result +++ b/tests/auto/linguist/lupdate/testdata/good/parsecpp2/project.ts.result @@ -1,4 +1,28 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> <TS version="2.0"> +<context> + <name>NameSpace::ToBeUsed</name> + <message> + <location filename="main.cpp" line="113"/> + <source>NameSpace::ToBeUsed</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>TopLevel</name> + <message> + <location filename="main.cpp" line="82"/> + <source>TopLevel</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>TopLevel2</name> + <message> + <location filename="main.cpp" line="94"/> + <source>TopLevel2</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/tests/auto/q3filedialog/tst_q3filedialog.cpp b/tests/auto/q3filedialog/tst_q3filedialog.cpp index 2585f60..e2686eb 100644 --- a/tests/auto/q3filedialog/tst_q3filedialog.cpp +++ b/tests/auto/q3filedialog/tst_q3filedialog.cpp @@ -59,7 +59,9 @@ public: virtual ~tst_Q3FileDialog(); private slots: +#ifndef QT_MAC_USE_COCOA void getSetCheck(); +#endif }; tst_Q3FileDialog::tst_Q3FileDialog() @@ -70,6 +72,7 @@ tst_Q3FileDialog::~tst_Q3FileDialog() { } +#ifndef QT_MAC_USE_COCOA class Preview : public QLabel, public Q3FilePreview { public: @@ -125,6 +128,7 @@ void tst_Q3FileDialog::getSetCheck() obj1.setPreviewMode(Q3FileDialog::PreviewMode(Q3FileDialog::Info)); QCOMPARE(obj1.previewMode(), Q3FileDialog::PreviewMode(Q3FileDialog::Info)); } +#endif QTEST_MAIN(tst_Q3FileDialog) #include "tst_q3filedialog.moc" diff --git a/tests/auto/qabstractvideosurface/tst_qabstractvideosurface.cpp b/tests/auto/qabstractvideosurface/tst_qabstractvideosurface.cpp index 20ca759..b4d2ac8 100644 --- a/tests/auto/qabstractvideosurface/tst_qabstractvideosurface.cpp +++ b/tests/auto/qabstractvideosurface/tst_qabstractvideosurface.cpp @@ -61,6 +61,8 @@ private slots: void setError(); void isFormatSupported_data(); void isFormatSupported(); + void nearestFormat_data(); + void nearestFormat(); void start_data(); void start(); }; @@ -232,6 +234,22 @@ void tst_QAbstractVideoSurface::isFormatSupported() QCOMPARE(surface.isFormatSupported(format), supported); } +void tst_QAbstractVideoSurface::nearestFormat_data() +{ + isFormatSupported_data(); +} + +void tst_QAbstractVideoSurface::nearestFormat() +{ + QFETCH(SupportedFormatMap, supportedFormats); + QFETCH(QVideoSurfaceFormat, format); + QFETCH(bool, supported); + + QtTestVideoSurface surface(supportedFormats); + + QCOMPARE(surface.nearestFormat(format) == format, supported); +} + void tst_QAbstractVideoSurface::start_data() { QTest::addColumn<QVideoSurfaceFormat>("format"); @@ -256,35 +274,35 @@ void tst_QAbstractVideoSurface::start() surface.setError(QAbstractVideoSurface::ResourceError); QSignalSpy formatSpy(&surface, SIGNAL(surfaceFormatChanged(QVideoSurfaceFormat))); - QSignalSpy startedSpy(&surface, SIGNAL(startedChanged(bool))); + QSignalSpy activeSpy(&surface, SIGNAL(activeChanged(bool))); - QVERIFY(!surface.isStarted()); + QVERIFY(!surface.isActive()); QCOMPARE(surface.surfaceFormat(), QVideoSurfaceFormat()); QVERIFY(surface.start(format)); - QVERIFY(surface.isStarted()); + QVERIFY(surface.isActive()); QCOMPARE(surface.surfaceFormat(), format); QCOMPARE(formatSpy.count(), 1); - QCOMPARE(qvariant_cast<QVideoSurfaceFormat>(formatSpy.at(0).at(0)), format); + QCOMPARE(qvariant_cast<QVideoSurfaceFormat>(formatSpy.last().at(0)), format); - QCOMPARE(startedSpy.count(), 1); - QCOMPARE(startedSpy.at(0).at(0).toBool(), true); + QCOMPARE(activeSpy.count(), 1); + QCOMPARE(activeSpy.last().at(0).toBool(), true); // error() is reset on a successful start. QCOMPARE(surface.error(), QAbstractVideoSurface::NoError); surface.stop(); - QVERIFY(!surface.isStarted()); + QVERIFY(!surface.isActive()); QCOMPARE(surface.surfaceFormat(), QVideoSurfaceFormat()); QCOMPARE(formatSpy.count(), 2); - QCOMPARE(qvariant_cast<QVideoSurfaceFormat>(formatSpy.at(1).at(0)), QVideoSurfaceFormat()); + QCOMPARE(qvariant_cast<QVideoSurfaceFormat>(formatSpy.last().at(0)), QVideoSurfaceFormat()); - QCOMPARE(startedSpy.count(), 2); - QCOMPARE(startedSpy.at(1).at(0).toBool(), false); + QCOMPARE(activeSpy.count(), 2); + QCOMPARE(activeSpy.last().at(0).toBool(), false); } QTEST_MAIN(tst_QAbstractVideoSurface) diff --git a/tests/auto/qaccessibility/tst_qaccessibility.cpp b/tests/auto/qaccessibility/tst_qaccessibility.cpp index 9f2e4e7..25c2649 100644 --- a/tests/auto/qaccessibility/tst_qaccessibility.cpp +++ b/tests/auto/qaccessibility/tst_qaccessibility.cpp @@ -4034,6 +4034,27 @@ void tst_QAccessibility::labelTest() delete acc_label; delete label; QTestAccessibility::clearEvents(); + + QPixmap testPixmap(50, 50); + testPixmap.fill(); + + QLabel imageLabel; + imageLabel.setPixmap(testPixmap); + imageLabel.setToolTip("Test Description"); + + acc_label = QAccessible::queryAccessibleInterface(&imageLabel); + QVERIFY(acc_label); + + QAccessibleImageInterface *imageInterface = acc_label->imageInterface(); + QVERIFY(imageInterface); + + QCOMPARE(imageInterface->imageSize(), testPixmap.size()); + QCOMPARE(imageInterface->imageDescription(), QString::fromLatin1("Test Description")); + QCOMPARE(imageInterface->imagePosition(QAccessible2::RelativeToParent), imageLabel.geometry()); + + delete acc_label; + + QTestAccessibility::clearEvents(); #else QSKIP("Test needs accessibility support.", SkipAll); #endif diff --git a/tests/auto/qanimationgroup/tst_qanimationgroup.cpp b/tests/auto/qanimationgroup/tst_qanimationgroup.cpp index 81c51ed..b4e4a49 100644 --- a/tests/auto/qanimationgroup/tst_qanimationgroup.cpp +++ b/tests/auto/qanimationgroup/tst_qanimationgroup.cpp @@ -165,9 +165,9 @@ void tst_QAnimationGroup::emptyGroup() QCOMPARE(groupStateChangedSpy.count(), 2); - QCOMPARE(qVariantValue<QAbstractAnimation::State>(groupStateChangedSpy.at(0).at(1)), + QCOMPARE(qVariantValue<QAbstractAnimation::State>(groupStateChangedSpy.at(0).first()), QAnimationGroup::Running); - QCOMPARE(qVariantValue<QAbstractAnimation::State>(groupStateChangedSpy.at(1).at(1)), + QCOMPARE(qVariantValue<QAbstractAnimation::State>(groupStateChangedSpy.at(1).first()), QAnimationGroup::Stopped); QCOMPARE(group.state(), QAnimationGroup::Stopped); @@ -180,9 +180,9 @@ void tst_QAnimationGroup::emptyGroup() group.start(); - QCOMPARE(qVariantValue<QAbstractAnimation::State>(groupStateChangedSpy.at(2).at(1)), + QCOMPARE(qVariantValue<QAbstractAnimation::State>(groupStateChangedSpy.at(2).first()), QAnimationGroup::Running); - QCOMPARE(qVariantValue<QAbstractAnimation::State>(groupStateChangedSpy.at(3).at(1)), + QCOMPARE(qVariantValue<QAbstractAnimation::State>(groupStateChangedSpy.at(3).first()), QAnimationGroup::Stopped); QCOMPARE(group.state(), QAnimationGroup::Stopped); @@ -259,54 +259,54 @@ void tst_QAnimationGroup::setCurrentTime() QCOMPARE(notTimeDriven->state(), QAnimationGroup::Stopped); QCOMPARE(loopsForever->state(), QAnimationGroup::Stopped); - QCOMPARE(group.currentTime(), 1); - QCOMPARE(sequence->currentTime(), 1); - QCOMPARE(a1_s_o1->currentTime(), 1); - QCOMPARE(a2_s_o1->currentTime(), 0); - QCOMPARE(a3_s_o1->currentTime(), 0); - QCOMPARE(a1_s_o2->currentTime(), 1); - QCOMPARE(a1_s_o3->currentTime(), 0); - QCOMPARE(a1_p_o1->currentTime(), 1); - QCOMPARE(a1_p_o2->currentTime(), 1); - QCOMPARE(a1_p_o3->currentTime(), 1); - QCOMPARE(notTimeDriven->currentTime(), 1); - QCOMPARE(loopsForever->currentTime(), 1); + QCOMPARE(group.currentLoopTime(), 1); + QCOMPARE(sequence->currentLoopTime(), 1); + QCOMPARE(a1_s_o1->currentLoopTime(), 1); + QCOMPARE(a2_s_o1->currentLoopTime(), 0); + QCOMPARE(a3_s_o1->currentLoopTime(), 0); + QCOMPARE(a1_s_o2->currentLoopTime(), 1); + QCOMPARE(a1_s_o3->currentLoopTime(), 0); + QCOMPARE(a1_p_o1->currentLoopTime(), 1); + QCOMPARE(a1_p_o2->currentLoopTime(), 1); + QCOMPARE(a1_p_o3->currentLoopTime(), 1); + QCOMPARE(notTimeDriven->currentLoopTime(), 1); + QCOMPARE(loopsForever->currentLoopTime(), 1); // Current time = 250 group.setCurrentTime(250); - QCOMPARE(group.currentTime(), 250); - QCOMPARE(sequence->currentTime(), 250); - QCOMPARE(a1_s_o1->currentTime(), 250); - QCOMPARE(a2_s_o1->currentTime(), 0); - QCOMPARE(a3_s_o1->currentTime(), 0); - QCOMPARE(a1_s_o2->currentTime(), 250); - QCOMPARE(a1_s_o3->currentTime(), 0); - QCOMPARE(a1_p_o1->currentTime(), 250); - QCOMPARE(a1_p_o2->currentTime(), 0); + QCOMPARE(group.currentLoopTime(), 250); + QCOMPARE(sequence->currentLoopTime(), 250); + QCOMPARE(a1_s_o1->currentLoopTime(), 250); + QCOMPARE(a2_s_o1->currentLoopTime(), 0); + QCOMPARE(a3_s_o1->currentLoopTime(), 0); + QCOMPARE(a1_s_o2->currentLoopTime(), 250); + QCOMPARE(a1_s_o3->currentLoopTime(), 0); + QCOMPARE(a1_p_o1->currentLoopTime(), 250); + QCOMPARE(a1_p_o2->currentLoopTime(), 0); QCOMPARE(a1_p_o2->currentLoop(), 1); - QCOMPARE(a1_p_o3->currentTime(), 250); - QCOMPARE(notTimeDriven->currentTime(), 250); - QCOMPARE(loopsForever->currentTime(), 0); + QCOMPARE(a1_p_o3->currentLoopTime(), 250); + QCOMPARE(notTimeDriven->currentLoopTime(), 250); + QCOMPARE(loopsForever->currentLoopTime(), 0); QCOMPARE(loopsForever->currentLoop(), 1); QCOMPARE(sequence->currentAnimation(), a2_s_o1); // Current time = 251 group.setCurrentTime(251); - QCOMPARE(group.currentTime(), 251); - QCOMPARE(sequence->currentTime(), 251); - QCOMPARE(a1_s_o1->currentTime(), 250); - QCOMPARE(a2_s_o1->currentTime(), 1); + QCOMPARE(group.currentLoopTime(), 251); + QCOMPARE(sequence->currentLoopTime(), 251); + QCOMPARE(a1_s_o1->currentLoopTime(), 250); + QCOMPARE(a2_s_o1->currentLoopTime(), 1); QCOMPARE(a2_s_o1->currentLoop(), 0); - QCOMPARE(a3_s_o1->currentTime(), 0); - QCOMPARE(sequence2->currentTime(), 251); - QCOMPARE(a1_s_o2->currentTime(), 250); - QCOMPARE(a1_s_o3->currentTime(), 1); - QCOMPARE(a1_p_o1->currentTime(), 250); - QCOMPARE(a1_p_o2->currentTime(), 1); + QCOMPARE(a3_s_o1->currentLoopTime(), 0); + QCOMPARE(sequence2->currentLoopTime(), 251); + QCOMPARE(a1_s_o2->currentLoopTime(), 250); + QCOMPARE(a1_s_o3->currentLoopTime(), 1); + QCOMPARE(a1_p_o1->currentLoopTime(), 250); + QCOMPARE(a1_p_o2->currentLoopTime(), 1); QCOMPARE(a1_p_o2->currentLoop(), 1); - QCOMPARE(a1_p_o3->currentTime(), 250); - QCOMPARE(notTimeDriven->currentTime(), 251); - QCOMPARE(loopsForever->currentTime(), 1); + QCOMPARE(a1_p_o3->currentLoopTime(), 250); + QCOMPARE(notTimeDriven->currentLoopTime(), 251); + QCOMPARE(loopsForever->currentLoopTime(), 1); QCOMPARE(sequence->currentAnimation(), a2_s_o1); } @@ -356,7 +356,7 @@ void tst_QAnimationGroup::addChildTwice() parent->addAnimation(subGroup); QCOMPARE(parent->animationCount(), 1); - parent->clearAnimations(); + parent->clear(); QCOMPARE(parent->animationCount(), 0); diff --git a/tests/auto/qclipboard/test/test.pro b/tests/auto/qclipboard/test/test.pro index 508eba1..62a38af 100644 --- a/tests/auto/qclipboard/test/test.pro +++ b/tests/auto/qclipboard/test/test.pro @@ -13,7 +13,18 @@ win32 { wince*|symbian*: { copier.sources = ../copier/copier.exe copier.path = copier - paster.sources = ../paster/paster.exe + paster.sources = ../paster/paster.exe paster.path = paster - DEPLOYMENT = copier paster + + symbian*: { + load(data_caging_paths) + rsc.sources = $${EPOCROOT}$$HW_ZDIR$$APP_RESOURCE_DIR/copier.rsc + rsc.sources += $${EPOCROOT}$$HW_ZDIR$$APP_RESOURCE_DIR/paster.rsc + rsc.path = $$APP_RESOURCE_DIR + reg_resource.sources = $${EPOCROOT}$$HW_ZDIR$$REG_RESOURCE_IMPORT_DIR/copier_reg.rsc + reg_resource.sources += $${EPOCROOT}$$HW_ZDIR$$REG_RESOURCE_IMPORT_DIR/paster_reg.rsc + reg_resource.path = $$REG_RESOURCE_IMPORT_DIR + } + + DEPLOYMENT = copier paster rsc reg_resource }
\ No newline at end of file diff --git a/tests/auto/qcombobox/tst_qcombobox.cpp b/tests/auto/qcombobox/tst_qcombobox.cpp index 51a7ff8..18ebddc 100644 --- a/tests/auto/qcombobox/tst_qcombobox.cpp +++ b/tests/auto/qcombobox/tst_qcombobox.cpp @@ -57,6 +57,7 @@ #include <qtreewidget.h> #include <qtablewidget.h> #include <qscrollbar.h> +#include <qboxlayout.h> #ifdef Q_WS_MAC #include <qmacstyle_mac.h> #elif defined Q_WS_X11 @@ -154,6 +155,7 @@ private slots: void removeItem(); void resetModel(); void keyBoardNavigationWithMouse(); + void task_QTBUG_1071_changingFocusEmitsActivated(); protected slots: void onEditTextChanged( const QString &newString ); @@ -813,21 +815,25 @@ void tst_QComboBox::autoCompletionCaseSensitivity() // case insensitive testWidget->clearEditText(); + QSignalSpy spyReturn(testWidget, SIGNAL(activated(int))); testWidget->setAutoCompletionCaseSensitivity(Qt::CaseInsensitive); QVERIFY(testWidget->autoCompletionCaseSensitivity() == Qt::CaseInsensitive); QTest::keyClick(testWidget->lineEdit(), Qt::Key_A); qApp->processEvents(); QCOMPARE(testWidget->currentText(), QString("aww")); + QCOMPARE(spyReturn.count(), 0); QTest::keyClick(testWidget->lineEdit(), Qt::Key_B); qApp->processEvents(); // autocompletions preserve userkey-case from 4.2 QCOMPARE(testWidget->currentText(), QString("abCDEF")); + QCOMPARE(spyReturn.count(), 0); QTest::keyClick(testWidget->lineEdit(), Qt::Key_Enter); qApp->processEvents(); QCOMPARE(testWidget->currentText(), QString("aBCDEF")); // case restored to item's case + QCOMPARE(spyReturn.count(), 1); testWidget->clearEditText(); QTest::keyClick(testWidget->lineEdit(), 'c'); @@ -2500,6 +2506,31 @@ void tst_QComboBox::keyBoardNavigationWithMouse() QTRY_COMPARE(combo.currentText(), QString::number(final)); } +void tst_QComboBox::task_QTBUG_1071_changingFocusEmitsActivated() +{ + QWidget w; + QVBoxLayout layout(&w); + QComboBox cb; + cb.setEditable(true); + QSignalSpy spy(&cb, SIGNAL(activated(int))); + cb.addItem("0"); + cb.addItem("1"); + cb.addItem("2"); + QLineEdit edit; + layout.add(&cb); + layout.add(&edit); + + w.show(); + QTest::qWaitForWindowShown(&w); + cb.clearEditText(); + cb.setFocus(); + QApplication::processEvents(); + QTest::keyClick(0, '1'); + QCOMPARE(spy.count(), 0); + edit.setFocus(); + QTRY_VERIFY(edit.hasFocus()); + QTRY_COMPARE(spy.count(), 1); +} QTEST_MAIN(tst_QComboBox) #include "tst_qcombobox.moc" diff --git a/tests/auto/qcssparser/tst_qcssparser.cpp b/tests/auto/qcssparser/tst_qcssparser.cpp index 150f131..3580252 100644 --- a/tests/auto/qcssparser/tst_qcssparser.cpp +++ b/tests/auto/qcssparser/tst_qcssparser.cpp @@ -1556,8 +1556,11 @@ void tst_QCssParser::extractFontFamily_data() QTest::newRow("shorthand") << "font: 12pt Times New Roman" << QString("Times New Roman"); QTest::newRow("shorthand multiple quote") << "font: 12pt invalid, \"Times New Roman\" " << QString("Times New Roman"); QTest::newRow("shorthand multiple") << "font: 12pt invalid, Times New Roman " << QString("Times New Roman"); + QTest::newRow("invalid spaces") << "font-family: invalid spaces, Times New Roman " << QString("Times New Roman"); + QTest::newRow("invalid spaces quotes") << "font-family: 'invalid spaces', 'Times New Roman' " << QString("Times New Roman"); } + void tst_QCssParser::extractFontFamily() { QFETCH(QString, css); diff --git a/tests/auto/qdatetime/tst_qdatetime.cpp b/tests/auto/qdatetime/tst_qdatetime.cpp index c53780e..1140402 100644 --- a/tests/auto/qdatetime/tst_qdatetime.cpp +++ b/tests/auto/qdatetime/tst_qdatetime.cpp @@ -450,11 +450,12 @@ void tst_QDateTime::toString_enumformat() qDebug() << str3; QVERIFY(!str3.isEmpty()); //check for date/time components in any order - QVERIFY(str3.contains("1995")); + //year may be 2 or 4 digits + QVERIFY(str3.contains("95")); //day and month may be in numeric or word form QVERIFY(str3.contains("12")); QVERIFY(str3.contains("34")); - QVERIFY(str3.contains("56")); + //seconds may be absent } void tst_QDateTime::addDays() diff --git a/tests/auto/qfile/largefile/largefile.pro b/tests/auto/qfile/largefile/largefile.pro new file mode 100644 index 0000000..0f96865 --- /dev/null +++ b/tests/auto/qfile/largefile/largefile.pro @@ -0,0 +1,4 @@ +load(qttest_p4) + +QT = core +SOURCES += tst_largefile.cpp diff --git a/tests/auto/qfile/largefile/tst_largefile.cpp b/tests/auto/qfile/largefile/tst_largefile.cpp new file mode 100644 index 0000000..9105063 --- /dev/null +++ b/tests/auto/qfile/largefile/tst_largefile.cpp @@ -0,0 +1,537 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the test suite of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the Technology Preview License Agreement accompanying +** this package. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** +** +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include <QTest> + +#include <QtAlgorithms> +#include <QFile> +#include <QFileInfo> +#include <qplatformdefs.h> + +#include <QDebug> + +#include <cstdlib> +#include <cstdio> + +#ifdef Q_OS_WIN + +#include <windows.h> +#include <io.h> + +#ifndef FSCTL_SET_SPARSE +// MinGW doesn't define this. +#define FSCTL_SET_SPARSE (0x900C4) +#endif + +#endif // Q_OS_WIN + +class tst_LargeFile + : public QObject +{ + Q_OBJECT + +public: + tst_LargeFile() + : blockSize(1 << 12) + , maxSizeBits() + , fd_(-1) + , stream_(0) + { + #if defined(QT_LARGEFILE_SUPPORT) && !defined(Q_OS_MAC) + maxSizeBits = 36; // 64 GiB + #elif defined(Q_OS_MAC) + // HFS+ does not support sparse files, so we limit file size for the test + // on Mac OS. + maxSizeBits = 32; // 4 GiB + #else + maxSizeBits = 24; // 16 MiB + #endif + } + +private: + void sparseFileData(); + QByteArray const &getDataBlock(int index, qint64 position); + +private slots: + // The LargeFile test case was designed to be run in order as a single unit + + void initTestCase(); + void cleanupTestCase(); + + void init(); + void cleanup(); + + // Create and fill large file + void createSparseFile(); + void fillFileSparsely(); + void closeSparseFile(); + + // Verify file was created + void fileCreated(); + + // Positioning in large files + void filePositioning(); + void fdPositioning(); + void streamPositioning(); + + // Read data from file + void openFileForReading(); + void readFile(); + + // Map/unmap large file + void mapFile(); + void mapOffsetOverflow(); + + void closeFile() { largeFile.close(); } + + // Test data + void fillFileSparsely_data() { sparseFileData(); } + void filePositioning_data() { sparseFileData(); } + void fdPositioning_data() { sparseFileData(); } + void streamPositioning_data() { sparseFileData(); } + void readFile_data() { sparseFileData(); } + void mapFile_data() { sparseFileData(); } + +private: + const int blockSize; + int maxSizeBits; + + QFile largeFile; + + QVector<QByteArray> generatedBlocks; + + int fd_; + FILE *stream_; +}; + +/* + Convenience function to hide reinterpret_cast when copying a POD directly + into a QByteArray. + */ +template <class T> +static inline void appendRaw(QByteArray &array, T data) +{ + array.append(reinterpret_cast<char *>(&data), sizeof(T)); +} + +/* + Pad array with filler up to size. On return, array.size() returns size. + */ +static inline void topUpWith(QByteArray &array, QByteArray filler, int size) +{ + Q_ASSERT(filler.size() > 0); + + for (int i = (size - array.size()) / filler.size(); i > 0; --i) + array.append(filler); + + if (array.size() < size) { + Q_ASSERT(size - array.size() < filler.size()); + array.append(filler.left(size - array.size())); + } +} + +/* + Generate a unique data block containing identifiable data. Unaligned, + overlapping and partial blocks should not compare equal. + */ +static inline QByteArray generateDataBlock(int blockSize, QString text, qint64 userBits = -1) +{ + QByteArray block; + block.reserve(blockSize); + + // Use of counter and randomBits means content of block will be dependent + // on the generation order. For (file-)systems that do not support sparse + // files, these can be removed so the test file can be reused and doesn't + // have to be generated for every run. + + static qint64 counter = 0; + + qint64 randomBits = ((qint64)qrand() << 32) + | ((qint64)qrand() & 0x00000000ffffffff); + + appendRaw(block, randomBits); + appendRaw(block, userBits); + appendRaw(block, counter); + appendRaw(block, (qint32)0xdeadbeef); + appendRaw(block, blockSize); + + QByteArray userContent = text.toUtf8(); + appendRaw(block, userContent.size()); + block.append(userContent); + appendRaw(block, (qint64)0); + + // size, so far + appendRaw(block, block.size()); + + QByteArray filler("0123456789"); + block.append(filler.right(10 - block.size() % 10)); + topUpWith(block, filler, blockSize - 2 * sizeof(qint64)); + + appendRaw(block, counter); + appendRaw(block, userBits); + appendRaw(block, randomBits); + + Q_ASSERT( block.size() >= blockSize ); + block.resize(blockSize); + + ++counter; + return block; +} + +/* + Generates data blocks the first time they are requested. Keeps copies for reuse. + */ +QByteArray const &tst_LargeFile::getDataBlock(int index, qint64 position) +{ + if (index >= generatedBlocks.size()) + generatedBlocks.resize(index + 1); + + if (generatedBlocks[index].isNull()) { + QString text = QString("Current %1-byte block (index = %2) " + "starts %3 bytes into the file '%4'.") + .arg(blockSize) + .arg(index) + .arg(position) + .arg("qt_largefile.tmp"); + + generatedBlocks[index] = generateDataBlock(blockSize, text, (qint64)1 << index); + } + + return generatedBlocks[index]; +} + +void tst_LargeFile::initTestCase() +{ + QFile file("qt_largefile.tmp"); + QVERIFY( !file.exists() || file.remove() ); +} + +void tst_LargeFile::cleanupTestCase() +{ + if (largeFile.isOpen()) + largeFile.close(); + + QFile file("qt_largefile.tmp"); + QVERIFY( !file.exists() || file.remove() ); +} + +void tst_LargeFile::init() +{ + fd_ = -1; + stream_ = 0; +} + +void tst_LargeFile::cleanup() +{ + if (-1 != fd_) + QT_CLOSE(fd_); + if (stream_) + ::fclose(stream_); +} + +void tst_LargeFile::sparseFileData() +{ + QTest::addColumn<int>("index"); + QTest::addColumn<qint64>("position"); + QTest::addColumn<QByteArray>("block"); + + QTest::newRow(QString("block[%1] @%2)") + .arg(0).arg(0) + .toLocal8Bit().constData()) + << 0 << (qint64)0 << getDataBlock(0, 0); + + // While on Linux sparse files scale well, on Windows, testing at every + // power of 2 leads to very large files. i += 4 gives us a good coverage + // without taxing too much on resources. + for (int index = 12; index <= maxSizeBits; index += 4) { + qint64 position = (qint64)1 << index; + QByteArray block = getDataBlock(index, position); + + QTest::newRow( + QString("block[%1] @%2)") + .arg(index).arg(position) + .toLocal8Bit().constData()) + << index << position << block; + } +} + +void tst_LargeFile::createSparseFile() +{ +#if defined(Q_OS_WIN) + // On Windows platforms, we must explicitly set the file to be sparse, + // so disk space is not allocated for the full file when writing to it. + HANDLE handle = ::CreateFileA("qt_largefile.tmp", + GENERIC_WRITE, 0, 0, CREATE_ALWAYS, 0, 0); + QVERIFY( INVALID_HANDLE_VALUE != handle ); + + DWORD bytes; + if (!::DeviceIoControl(handle, FSCTL_SET_SPARSE, NULL, 0, NULL, 0, + &bytes, NULL)) { + QWARN("Unable to set test file as sparse. " + "Limiting test file to 16MiB."); + maxSizeBits = 24; + } + + int fd = ::_open_osfhandle((intptr_t)handle, 0); + QVERIFY( -1 != fd ); + QVERIFY( largeFile.open(fd, QIODevice::WriteOnly | QIODevice::Unbuffered) ); +#else // !Q_OS_WIN + largeFile.setFileName("qt_largefile.tmp"); + QVERIFY( largeFile.open(QIODevice::WriteOnly | QIODevice::Unbuffered) ); +#endif +} + +void tst_LargeFile::closeSparseFile() +{ +#if defined(Q_OS_WIN) + int fd = largeFile.handle(); +#endif + + largeFile.close(); + +#if defined(Q_OS_WIN) + if (-1 != fd) + ::_close(fd); +#endif +} + +void tst_LargeFile::fillFileSparsely() +{ + QFETCH( qint64, position ); + QFETCH( QByteArray, block ); + QCOMPARE( block.size(), blockSize ); + + static int lastKnownGoodIndex = 0; + struct ScopeGuard { + ScopeGuard(tst_LargeFile* test) + : this_(test) + , failed(true) + { + QFETCH( int, index ); + index_ = index; + } + + ~ScopeGuard() + { + if (failed) { + this_->maxSizeBits = lastKnownGoodIndex; + QWARN( qPrintable( + QString("QFile::error %1: '%2'. Maximum size bits reset to %3.") + .arg(this_->largeFile.error()) + .arg(this_->largeFile.errorString()) + .arg(this_->maxSizeBits)) ); + } else + lastKnownGoodIndex = qMax<int>(index_, lastKnownGoodIndex); + } + + private: + tst_LargeFile * const this_; + int index_; + + public: + bool failed; + }; + + ScopeGuard resetMaxSizeBitsOnFailure(this); + + QVERIFY( largeFile.seek(position) ); + QCOMPARE( largeFile.pos(), position ); + + QCOMPARE( largeFile.write(block), (qint64)blockSize ); + QCOMPARE( largeFile.pos(), position + blockSize ); + QVERIFY( largeFile.flush() ); + + resetMaxSizeBitsOnFailure.failed = false; +} + +void tst_LargeFile::fileCreated() +{ + QFileInfo info("qt_largefile.tmp"); + + QVERIFY( info.exists() ); + QVERIFY( info.isFile() ); + QVERIFY( info.size() >= ((qint64)1 << maxSizeBits) + blockSize ); +} + +void tst_LargeFile::filePositioning() +{ + QFETCH( qint64, position ); + + QFile file("qt_largefile.tmp"); + QVERIFY( file.open(QIODevice::ReadOnly) ); + + QVERIFY( file.seek(position) ); + QCOMPARE( file.pos(), position ); +} + +void tst_LargeFile::fdPositioning() +{ + QFETCH( qint64, position ); + + fd_ = QT_OPEN("qt_largefile.tmp", + QT_OPEN_RDONLY | QT_OPEN_LARGEFILE); + QVERIFY( -1 != fd_ ); + + QFile file; + QVERIFY( file.open(fd_, QIODevice::ReadOnly) ); + QCOMPARE( file.pos(), (qint64)0 ); + QVERIFY( file.seek(position) ); + QCOMPARE( file.pos(), position ); + + file.close(); + + QCOMPARE( QT_LSEEK(fd_, QT_OFF_T(0), SEEK_SET), QT_OFF_T(0) ); + QCOMPARE( QT_LSEEK(fd_, QT_OFF_T(position), SEEK_SET), QT_OFF_T(position) ); + + QVERIFY( file.open(fd_, QIODevice::ReadOnly) ); + QCOMPARE( QT_LSEEK(fd_, QT_OFF_T(0), SEEK_CUR), QT_OFF_T(position) ); + QCOMPARE( file.pos(), position ); + QVERIFY( file.seek(0) ); + QCOMPARE( file.pos(), (qint64)0 ); + + file.close(); + + QVERIFY( !QT_CLOSE(fd_) ); + fd_ = -1; +} + +void tst_LargeFile::streamPositioning() +{ + QFETCH( qint64, position ); + +#if defined(QT_LARGEFILE_SUPPORT) && defined(Q_CC_MSVC) && _MSC_VER < 1400 + if (position >= (qint64)1 << 31) + QSKIP("MSVC 2003 doesn't have 64 bit versions of fseek/ftell.", SkipSingle); +#endif + + stream_ = QT_FOPEN("qt_largefile.tmp", "rb"); + QVERIFY( 0 != stream_ ); + + QFile file; + QVERIFY( file.open(stream_, QIODevice::ReadOnly) ); + QCOMPARE( file.pos(), (qint64)0 ); + QVERIFY( file.seek(position) ); + QCOMPARE( file.pos(), position ); + + file.close(); + + QVERIFY( !QT_FSEEK(stream_, QT_OFF_T(0), SEEK_SET) ); + QCOMPARE( QT_FTELL(stream_), QT_OFF_T(0) ); + QVERIFY( !QT_FSEEK(stream_, QT_OFF_T(position), SEEK_SET) ); + QCOMPARE( QT_FTELL(stream_), QT_OFF_T(position) ); + + QVERIFY( file.open(stream_, QIODevice::ReadOnly) ); + QCOMPARE( QT_FTELL(stream_), QT_OFF_T(position) ); + QCOMPARE( file.pos(), position ); + QVERIFY( file.seek(0) ); + QCOMPARE( file.pos(), (qint64)0 ); + + file.close(); + + QVERIFY( !::fclose(stream_) ); + stream_ = 0; +} + +void tst_LargeFile::openFileForReading() +{ + largeFile.setFileName("qt_largefile.tmp"); + QVERIFY( largeFile.open(QIODevice::ReadOnly) ); +} + +void tst_LargeFile::readFile() +{ + QFETCH( qint64, position ); + QFETCH( QByteArray, block ); + QCOMPARE( block.size(), blockSize ); + + QVERIFY( largeFile.size() >= position + blockSize ); + + QVERIFY( largeFile.seek(position) ); + QCOMPARE( largeFile.pos(), position ); + + QCOMPARE( largeFile.read(blockSize), block ); + QCOMPARE( largeFile.pos(), position + blockSize ); +} + +void tst_LargeFile::mapFile() +{ + QFETCH( qint64, position ); + QFETCH( QByteArray, block ); + QCOMPARE( block.size(), blockSize ); + + // Keep full block mapped to facilitate OS and/or internal reuse by Qt. + uchar *baseAddress = largeFile.map(position, blockSize); + QVERIFY( baseAddress ); + QVERIFY( qEqual(block.begin(), block.end(), reinterpret_cast<char*>(baseAddress)) ); + + for (int offset = 1; offset < blockSize; ++offset) { + uchar *address = largeFile.map(position + offset, blockSize - offset); + + QVERIFY( address ); + if ( !qEqual(block.begin() + offset, block.end(), reinterpret_cast<char*>(address)) ) { + qDebug() << "Expected:" << block.toHex(); + qDebug() << "Actual :" << QByteArray(reinterpret_cast<char*>(address), blockSize).toHex(); + QVERIFY(false); + } + + QVERIFY( largeFile.unmap( address ) ); + } + + QVERIFY( largeFile.unmap( baseAddress ) ); +} + +void tst_LargeFile::mapOffsetOverflow() +{ + // Out-of-range mappings should fail, and not silently clip the offset + for (int i = 50; i < 63; ++i) { + uchar *address = 0; + + address = largeFile.map(((qint64)1 << i), blockSize); + QVERIFY( !address ); + + address = largeFile.map(((qint64)1 << i) + blockSize, blockSize); + QVERIFY( !address ); + } +} + +QTEST_APPLESS_MAIN(tst_LargeFile) +#include "tst_largefile.moc" + diff --git a/tests/auto/qfile/qfile.pro b/tests/auto/qfile/qfile.pro index eebfcda..f70f750 100644 --- a/tests/auto/qfile/qfile.pro +++ b/tests/auto/qfile/qfile.pro @@ -5,5 +5,5 @@ wince*:{ SUBDIRS = test stdinprocess } - +SUBDIRS += largefile diff --git a/tests/auto/qfile/tst_qfile.cpp b/tests/auto/qfile/tst_qfile.cpp index 19fbecd..55cc286 100644 --- a/tests/auto/qfile/tst_qfile.cpp +++ b/tests/auto/qfile/tst_qfile.cpp @@ -79,6 +79,18 @@ # define SRCDIR "" #endif +#ifndef STDIN_FILENO +#define STDIN_FILENO 0 +#endif + +#ifndef STDOUT_FILENO +#define STDOUT_FILENO 1 +#endif + +#ifndef STDERR_FILENO +#define STDERR_FILENO 2 +#endif + Q_DECLARE_METATYPE(QFile::FileError) //TESTED_CLASS= @@ -105,6 +117,7 @@ private slots: void openUnbuffered(); void size_data(); void size(); + void sizeNoExist(); void seek(); void setSize(); void setSizeSeek(); @@ -187,6 +200,8 @@ private slots: void mapOpenMode_data(); void mapOpenMode(); + void openStandardStreams(); + // --- Task related tests below this line void task167217(); @@ -438,23 +453,57 @@ void tst_QFile::openUnbuffered() void tst_QFile::size_data() { QTest::addColumn<QString>("filename"); - QTest::addColumn<int>("size"); + QTest::addColumn<qint64>("size"); - QTest::newRow( "exist01" ) << QString(SRCDIR "testfile.txt") << 245; - QTest::newRow( "nonexist01" ) << QString("foo.txt") << 0; + QTest::newRow( "exist01" ) << QString(SRCDIR "testfile.txt") << (qint64)245; #if defined(Q_OS_WIN) && !defined(Q_OS_WINCE) // Only test UNC on Windows./ - QTest::newRow("unc") << "//" + QString(QtNetworkSettings::winServerName() + "/testsharewritable/test.pri") << 34; + QTest::newRow("unc") << "//" + QString(QtNetworkSettings::winServerName() + "/testsharewritable/test.pri") << (qint64)34; #endif } void tst_QFile::size() { QFETCH( QString, filename ); - QFile f( filename ); - QTEST( (int)f.size(), "size" ); - if (f.open(QFile::ReadOnly)) - QTEST( (int)f.size(), "size" ); + QFETCH( qint64, size ); + + { + QFile f( filename ); + QCOMPARE( f.size(), size ); + + QVERIFY( f.open(QIODevice::ReadOnly) ); + QCOMPARE( f.size(), size ); + } + + { + QFile f; + int fd = QT_OPEN(filename.toLocal8Bit().constData(), QT_OPEN_RDONLY); + QVERIFY( fd != -1 ); + QVERIFY( f.open(fd, QIODevice::ReadOnly) ); + QCOMPARE( f.size(), size ); + + f.close(); + QT_CLOSE(fd); + } + + { + QFile f; + FILE* stream = QT_FOPEN(filename.toLocal8Bit().constData(), "rb"); + QVERIFY( stream ); + QVERIFY( f.open(stream, QIODevice::ReadOnly) ); + QCOMPARE( f.size(), size ); + + f.close(); + fclose(stream); + } +} + +void tst_QFile::sizeNoExist() +{ + QFile file("nonexist01"); + QVERIFY( !file.exists() ); + QCOMPARE( file.size(), (qint64)0 ); + QVERIFY( !file.open(QIODevice::ReadOnly) ); } void tst_QFile::seek() @@ -2634,5 +2683,58 @@ void tst_QFile::openDirectory() QVERIFY(!f1.open(QIODevice::ReadOnly|QIODevice::Unbuffered)); } +void tst_QFile::openStandardStreams() +{ + // Using file descriptors + { + QFile in; + in.open(STDIN_FILENO, QIODevice::ReadOnly); + QCOMPARE( in.pos(), (qint64)0 ); + QCOMPARE( in.size(), (qint64)0 ); + QVERIFY( in.isSequential() ); + } + + { + QFile out; + out.open(STDOUT_FILENO, QIODevice::WriteOnly); + QCOMPARE( out.pos(), (qint64)0 ); + QCOMPARE( out.size(), (qint64)0 ); + QVERIFY( out.isSequential() ); + } + + { + QFile err; + err.open(STDERR_FILENO, QIODevice::WriteOnly); + QCOMPARE( err.pos(), (qint64)0 ); + QCOMPARE( err.size(), (qint64)0 ); + QVERIFY( err.isSequential() ); + } + + // Using streams + { + QFile in; + in.open(stdin, QIODevice::ReadOnly); + QCOMPARE( in.pos(), (qint64)0 ); + QCOMPARE( in.size(), (qint64)0 ); + QVERIFY( in.isSequential() ); + } + + { + QFile out; + out.open(stdout, QIODevice::WriteOnly); + QCOMPARE( out.pos(), (qint64)0 ); + QCOMPARE( out.size(), (qint64)0 ); + QVERIFY( out.isSequential() ); + } + + { + QFile err; + err.open(stderr, QIODevice::WriteOnly); + QCOMPARE( err.pos(), (qint64)0 ); + QCOMPARE( err.size(), (qint64)0 ); + QVERIFY( err.isSequential() ); + } +} + QTEST_MAIN(tst_QFile) #include "tst_qfile.moc" diff --git a/tests/auto/qgl/tst_qgl.cpp b/tests/auto/qgl/tst_qgl.cpp index e036e4b..c680dec 100644 --- a/tests/auto/qgl/tst_qgl.cpp +++ b/tests/auto/qgl/tst_qgl.cpp @@ -82,7 +82,6 @@ private slots: void glPBufferRendering(); void glWidgetReparent(); void glWidgetRenderPixmap(); - void stackedFBOs(); void colormap(); void fboFormat(); void testDontCrashOnDanglingResources(); @@ -118,6 +117,16 @@ public: void setAutoBufferSwap(bool on) { QGLWidget::setAutoBufferSwap(on); } }; +static int appDefaultDepth() +{ + static int depth = 0; + if (depth == 0) { + QPixmap pm(1, 1); + depth = pm.depth(); + } + return depth; +} + // Using INT_MIN and INT_MAX will cause failures on systems // where "int" is 64-bit, so use the explicit values instead. #define TEST_INT_MIN (-2147483647 - 1) @@ -714,6 +723,8 @@ public: void tst_QGL::graphicsViewClipping() { + if (appDefaultDepth() < 24) + QSKIP("This test won't work for bit depths < 24", SkipAll); const int size = 64; UnclippedWidget *widget = new UnclippedWidget; widget->setFixedSize(size, size); @@ -866,6 +877,8 @@ public: void tst_QGL::glWidgetRendering() { + if (appDefaultDepth() < 24) + QSKIP("This test won't work for bit depths < 24", SkipAll); GLWidget w; w.show(); @@ -1089,6 +1102,8 @@ protected: void tst_QGL::glFBOUseInGLWidget() { + if (appDefaultDepth() < 24) + QSKIP("This test won't work for bit depths < 24", SkipAll); if (!QGLFramebufferObject::hasOpenGLFramebufferObjects()) QSKIP("QGLFramebufferObject not supported on this platform", SkipSingle); @@ -1116,6 +1131,8 @@ void tst_QGL::glFBOUseInGLWidget() void tst_QGL::glWidgetReparent() { + if (appDefaultDepth() < 24) + QSKIP("This test won't work for bit depths < 24", SkipAll); // Try it as a top-level first: GLWidget *widget = new GLWidget; widget->setGeometry(0, 0, 200, 30); @@ -1208,110 +1225,6 @@ void tst_QGL::glWidgetRenderPixmap() QCOMPARE(fb, reference); } - -// When using multiple FBOs at the same time, unbinding one FBO should re-bind the -// previous. I.e. It should be possible to have a stack of FBOs where pop'ing there -// top re-binds the one underneeth. -void tst_QGL::stackedFBOs() -{ - if (!QGLFramebufferObject::hasOpenGLFramebufferObjects()) - QSKIP("QGLFramebufferObject not supported on this platform", SkipSingle); - - QGLWidget glw; - glw.show(); - -#ifdef Q_WS_X11 - qt_x11_wait_for_window_manager(&glw); -#endif - QTest::qWait(200); - - glw.makeCurrent(); - - // No multisample with combined depth/stencil attachment: - QGLFramebufferObjectFormat fboFormat; - fboFormat.setAttachment(QGLFramebufferObject::CombinedDepthStencil); - - // Don't complicate things by using NPOT: - QGLFramebufferObject *fbo1 = new QGLFramebufferObject(128, 128, fboFormat); - QGLFramebufferObject *fbo2 = new QGLFramebufferObject(128, 128, fboFormat); - QGLFramebufferObject *fbo3 = new QGLFramebufferObject(128, 128, fboFormat); - - glClearColor(1.0, 0.0, 1.0, 1.0); - glClear(GL_COLOR_BUFFER_BIT); - - fbo1->bind(); - glClearColor(1.0, 0.0, 0.0, 1.0); - glClear(GL_COLOR_BUFFER_BIT); - - fbo2->bind(); - glClearColor(0.0, 1.0, 0.0, 1.0); - glClear(GL_COLOR_BUFFER_BIT); - - fbo3->bind(); - glClearColor(0.0, 0.0, 1.0, 1.0); - glClear(GL_COLOR_BUFFER_BIT); - glScissor(32, 32, 64, 64); - glEnable(GL_SCISSOR_TEST); - glClearColor(0.0, 1.0, 1.0, 1.0); - glClear(GL_COLOR_BUFFER_BIT); - fbo3->release(); - - // Scissor rect & test should be left untouched by the fbo release... - glClearColor(0.0, 0.0, 0.0, 1.0); - glClear(GL_COLOR_BUFFER_BIT); - fbo2->release(); - - glClearColor(1.0, 1.0, 1.0, 1.0); - glClear(GL_COLOR_BUFFER_BIT); - fbo1->release(); - - glClearColor(1.0, 1.0, 0.0, 1.0); - glClear(GL_COLOR_BUFFER_BIT); - - glw.swapBuffers(); - - QImage widgetFB = glw.grabFrameBuffer(false).convertToFormat(QImage::Format_RGB32); - QImage fb1 = fbo1->toImage().convertToFormat(QImage::Format_RGB32); - QImage fb2 = fbo2->toImage().convertToFormat(QImage::Format_RGB32); - QImage fb3 = fbo3->toImage().convertToFormat(QImage::Format_RGB32); - - delete fbo1; - delete fbo2; - delete fbo3; - - QImage widgetReference(widgetFB.size(), widgetFB.format()); - QImage fb1Reference(fb1.size(), fb1.format()); - QImage fb2Reference(fb2.size(), fb2.format()); - QImage fb3Reference(fb3.size(), fb3.format()); - - QPainter widgetReferencePainter(&widgetReference); - QPainter fb1ReferencePainter(&fb1Reference); - QPainter fb2ReferencePainter(&fb2Reference); - QPainter fb3ReferencePainter(&fb3Reference); - - widgetReferencePainter.fillRect(0, 0, widgetReference.width(), widgetReference.height(), Qt::magenta); - fb1ReferencePainter.fillRect(0, 0, fb1Reference.width(), fb1Reference.height(), Qt::red); - fb2ReferencePainter.fillRect(0, 0, fb2Reference.width(), fb2Reference.height(), Qt::green); - fb3ReferencePainter.fillRect(0, 0, fb3Reference.width(), fb3Reference.height(), Qt::blue); - - // Flip y-coords to match GL for the widget (which can be any size) - widgetReferencePainter.fillRect(32, glw.height() - 96, 64, 64, Qt::yellow); - fb1ReferencePainter.fillRect(32, 32, 64, 64, Qt::white); - fb2ReferencePainter.fillRect(32, 32, 64, 64, Qt::black); - fb3ReferencePainter.fillRect(32, 32, 64, 64, Qt::cyan); - - widgetReferencePainter.end(); - fb1ReferencePainter.end(); - fb2ReferencePainter.end(); - fb3ReferencePainter.end(); - - QCOMPARE(widgetFB, widgetReference); - QCOMPARE(fb1, fb1Reference); - QCOMPARE(fb2, fb2Reference); - QCOMPARE(fb3, fb3Reference); -} - - class ColormapExtended : public QGLColormap { public: @@ -1582,6 +1495,8 @@ protected: void tst_QGL::replaceClipping() { + if (appDefaultDepth() < 24) + QSKIP("This test won't work for bit depths < 24", SkipAll); ReplaceClippingGLWidget glw; glw.resize(300, 300); glw.show(); @@ -1707,6 +1622,8 @@ protected: void tst_QGL::clipTest() { + if (appDefaultDepth() < 24) + QSKIP("This test won't work for bit depths < 24", SkipAll); ClipTestGLWidget glw; glw.resize(220, 220); glw.show(); diff --git a/tests/auto/qgraphicsanchorlayout/tst_qgraphicsanchorlayout.cpp b/tests/auto/qgraphicsanchorlayout/tst_qgraphicsanchorlayout.cpp index c8a9fac..c7ed309 100644 --- a/tests/auto/qgraphicsanchorlayout/tst_qgraphicsanchorlayout.cpp +++ b/tests/auto/qgraphicsanchorlayout/tst_qgraphicsanchorlayout.cpp @@ -79,13 +79,12 @@ private slots: void delete_anchor(); void conflicts(); void sizePolicy(); - void expandingSequence(); - void expandingSequenceFairDistribution(); - void expandingParallel(); void floatConflict(); void infiniteMaxSizes(); void simplifiableUnfeasible(); void simplificationVsOrder(); + void parallelSimplificationOfCenter(); + void simplificationVsRedundance(); }; class RectWidget : public QGraphicsWidget @@ -342,8 +341,10 @@ void tst_QGraphicsAnchorLayout::layoutDirection() QCOMPARE(checkReverseDirection(p), true); - QVERIFY(usedSimplex(l, Qt::Horizontal)); - QVERIFY(!usedSimplex(l, Qt::Vertical)); + if (hasSimplification) { + QVERIFY(usedSimplex(l, Qt::Horizontal)); + QVERIFY(!usedSimplex(l, Qt::Vertical)); + } delete p; delete view; @@ -1609,217 +1610,6 @@ void tst_QGraphicsAnchorLayout::conflicts() delete p; } -void tst_QGraphicsAnchorLayout::expandingSequence() -{ - QSizeF min(10, 10); - QSizeF pref(50, 10); - QSizeF max(100, 10); - - QGraphicsWidget *a = createItem(min, pref, max, "a"); - QGraphicsWidget *b = createItem(min, pref, max, "b"); - - b->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); - - QGraphicsAnchorLayout *l = new QGraphicsAnchorLayout; - l->setContentsMargins(0, 0, 0, 0); - - // horizontal - setAnchor(l, l, Qt::AnchorLeft, a, Qt::AnchorLeft, 0); - setAnchor(l, a, Qt::AnchorRight, b, Qt::AnchorLeft, 0); - setAnchor(l, b, Qt::AnchorRight, l, Qt::AnchorRight, 0); - - // vertical - l->addAnchors(l, a, Qt::Vertical); - l->addAnchors(l, b, Qt::Vertical); - - QCOMPARE(l->count(), 2); - - QGraphicsWidget p; - p.setLayout(l); - - QSizeF layoutMinimumSize = l->effectiveSizeHint(Qt::MinimumSize); - QCOMPARE(layoutMinimumSize.width(), qreal(20)); - - QSizeF layoutExpandedSize(pref.width() + max.width(), layoutMinimumSize.height()); - p.resize(layoutExpandedSize); - - QCOMPARE(a->geometry().size(), pref); - QCOMPARE(b->geometry().size(), max); - - QSizeF layoutMaximumSize = l->effectiveSizeHint(Qt::MaximumSize); - QCOMPARE(layoutMaximumSize.width(), qreal(200)); - - if (hasSimplification) { - QVERIFY(!usedSimplex(l, Qt::Horizontal)); - QVERIFY(!usedSimplex(l, Qt::Vertical)); - } -} - -void tst_QGraphicsAnchorLayout::expandingSequenceFairDistribution() -{ - QSizeF min(10, 10); - QSizeF pref(50, 10); - QSizeF max(100, 10); - - QGraphicsWidget *a = createItem(min, pref, max, "a"); - QGraphicsWidget *b = createItem(min, pref, max, "b"); - QGraphicsWidget *c = createItem(min, pref, max, "c"); - QGraphicsWidget *d = createItem(min, pref, max, "d"); - - b->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); - d->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); - - QGraphicsAnchorLayout *l = new QGraphicsAnchorLayout; - l->setContentsMargins(0, 0, 0, 0); - - // horizontal - setAnchor(l, l, Qt::AnchorLeft, a, Qt::AnchorLeft, 0); - setAnchor(l, a, Qt::AnchorRight, b, Qt::AnchorLeft, 0); - setAnchor(l, b, Qt::AnchorRight, c, Qt::AnchorLeft, 0); - setAnchor(l, c, Qt::AnchorRight, d, Qt::AnchorLeft, 0); - setAnchor(l, d, Qt::AnchorRight, l, Qt::AnchorRight, 0); - - // vertical - l->addAnchors(l, a, Qt::Vertical); - l->addAnchors(l, b, Qt::Vertical); - l->addAnchors(l, c, Qt::Vertical); - l->addAnchors(l, d, Qt::Vertical); - - QCOMPARE(l->count(), 4); - - QGraphicsWidget p; - p.setLayout(l); - - QSizeF layoutMinimumSize = l->effectiveSizeHint(Qt::MinimumSize); - QCOMPARE(layoutMinimumSize.width(), qreal(40)); - - QSizeF layoutPartialExpandedSize((2 * pref.width()) + (2 * (pref.width() + 10)), - layoutMinimumSize.height()); - p.resize(layoutPartialExpandedSize); - - QCOMPARE(a->geometry().size(), pref); - QCOMPARE(b->geometry().size(), pref + QSizeF(10, 0)); - QCOMPARE(c->geometry().size(), pref); - QCOMPARE(d->geometry().size(), pref + QSizeF(10, 0)); - - QSizeF layoutExpandedSize((2 * pref.width()) + (2 * max.width()), - layoutMinimumSize.height()); - p.resize(layoutExpandedSize); - - QCOMPARE(a->geometry().size(), pref); - QCOMPARE(b->geometry().size(), max); - QCOMPARE(c->geometry().size(), pref); - QCOMPARE(d->geometry().size(), max); - - QSizeF layoutMaximumSize = l->effectiveSizeHint(Qt::MaximumSize); - QCOMPARE(layoutMaximumSize.width(), qreal(400)); - - if (hasSimplification) { - QVERIFY(!usedSimplex(l, Qt::Horizontal)); - QVERIFY(!usedSimplex(l, Qt::Vertical)); - } - - // Now we change D to have more "room for growth" from its preferred size - // to its maximum size. We expect a proportional fair distribution. Note that - // this seems to not conform with what QGraphicsLinearLayout does. - d->setMaximumSize(QSizeF(150, 10)); - - QSizeF newLayoutExpandedSize((2 * pref.width()) + (max.width() + 150), - layoutMinimumSize.height()); - p.resize(newLayoutExpandedSize); - - QCOMPARE(a->geometry().size(), pref); - QCOMPARE(b->geometry().size(), max); - QCOMPARE(c->geometry().size(), pref); - QCOMPARE(d->geometry().size(), QSizeF(150, 10)); - - QSizeF newLayoutPartialExpandedSize((4 * pref.width()) + 75, - layoutMinimumSize.height()); - p.resize(newLayoutPartialExpandedSize); - - QCOMPARE(a->geometry().size(), pref); - QCOMPARE(b->geometry().size(), pref + QSizeF(25, 0)); - QCOMPARE(c->geometry().size(), pref); - QCOMPARE(d->geometry().size(), pref + QSizeF(50, 0)); - - if (hasSimplification) { - QVERIFY(!usedSimplex(l, Qt::Horizontal)); - QVERIFY(!usedSimplex(l, Qt::Vertical)); - } -} - -void tst_QGraphicsAnchorLayout::expandingParallel() -{ - QSizeF min(10, 10); - QSizeF pref(50, 10); - QSizeF max(100, 10); - QSizeF max2(100, 50); - - QGraphicsWidget *a = createItem(min, pref, max, "a"); - QGraphicsWidget *b = createItem(min, pref, max, "b"); - QGraphicsWidget *c = createItem(min, pref, max2, "c"); - - b->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); - - QGraphicsAnchorLayout *l = new QGraphicsAnchorLayout; - l->setContentsMargins(0, 0, 0, 0); - - // horizontal - setAnchor(l, l, Qt::AnchorLeft, a, Qt::AnchorLeft, 0); - setAnchor(l, l, Qt::AnchorLeft, b, Qt::AnchorLeft, 0); - - setAnchor(l, a, Qt::AnchorRight, c, Qt::AnchorLeft, 0); - setAnchor(l, b, Qt::AnchorRight, c, Qt::AnchorLeft, 0); - - setAnchor(l, c, Qt::AnchorRight, l, Qt::AnchorRight, 0); - - // vertical - l->addAnchors(l, c, Qt::Vertical); - setAnchor(l, l, Qt::AnchorTop, a, Qt::AnchorTop, 0); - setAnchor(l, a, Qt::AnchorBottom, c, Qt::AnchorVerticalCenter, 0); - setAnchor(l, b, Qt::AnchorTop, c, Qt::AnchorVerticalCenter, 0); - setAnchor(l, b, Qt::AnchorBottom, l, Qt::AnchorBottom, 0); - - QCOMPARE(l->count(), 3); - - QGraphicsWidget p; - p.setLayout(l); - - QSizeF layoutMinimumSize = l->effectiveSizeHint(Qt::MinimumSize); - QCOMPARE(layoutMinimumSize.width(), qreal(20)); - - QSizeF layoutExpandedSize(pref.width() + max.width(), layoutMinimumSize.height()); - p.resize(layoutExpandedSize); - - QCOMPARE(a->geometry().size(), max); - QCOMPARE(b->geometry().size(), max); - QCOMPARE(c->geometry().size(), QSizeF(pref.width(), 20)); - - QSizeF layoutMaximumSize = l->effectiveSizeHint(Qt::MaximumSize); - QCOMPARE(layoutMaximumSize.width(), qreal(200)); - - // - // Change the parallel connection to a paralell connection of b with a center... - // - QGraphicsAnchor *anchor = l->anchor(b, Qt::AnchorRight, c, Qt::AnchorLeft); - delete anchor; - setAnchor(l, b, Qt::AnchorRight, a, Qt::AnchorHorizontalCenter, 0); - a->setMaximumSize(max + QSizeF(100, 0)); - - QSizeF newLayoutMinimumSize = l->effectiveSizeHint(Qt::MinimumSize); - QCOMPARE(newLayoutMinimumSize.width(), qreal(30)); - - QSizeF newLayoutExpandedSize = layoutExpandedSize + QSizeF(100, 0); - p.resize(newLayoutExpandedSize); - - QCOMPARE(a->geometry().size(), max + QSizeF(100, 0)); - QCOMPARE(b->geometry().size(), max); - QCOMPARE(c->geometry().size(), QSizeF(pref.width(), 20)); - - QSizeF newLayoutMaximumSize = l->effectiveSizeHint(Qt::MaximumSize); - QCOMPARE(newLayoutMaximumSize.width(), qreal(300)); -} - void tst_QGraphicsAnchorLayout::floatConflict() { QGraphicsWidget *a = createItem(QSizeF(80,10), QSizeF(90,10), QSizeF(100,10), "a"); @@ -1882,6 +1672,7 @@ void tst_QGraphicsAnchorLayout::infiniteMaxSizes() QGraphicsWidget *b = createItem(min, pref, max, "b"); QGraphicsWidget *c = createItem(min, pref, max, "c"); QGraphicsWidget *d = createItem(min, pref, max, "d"); + QGraphicsWidget *e = createItem(min, pref, max, "e"); //<!-- Trunk --> setAnchor(l, l, Qt::AnchorLeft, a, Qt::AnchorLeft, 0); @@ -1889,34 +1680,32 @@ void tst_QGraphicsAnchorLayout::infiniteMaxSizes() setAnchor(l, b, Qt::AnchorRight, c, Qt::AnchorLeft, 0); setAnchor(l, c, Qt::AnchorRight, d, Qt::AnchorLeft, 0); setAnchor(l, d, Qt::AnchorRight, l, Qt::AnchorRight, 0); - - a->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); - c->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); + setAnchor(l, b, Qt::AnchorHorizontalCenter, e, Qt::AnchorLeft, 0); + setAnchor(l, e, Qt::AnchorRight, c, Qt::AnchorHorizontalCenter, 0); QGraphicsWidget p; p.setLayout(l); + QCOMPARE(int(p.effectiveSizeHint(Qt::MaximumSize).width()), + QWIDGETSIZE_MAX); + p.resize(200, 10); QCOMPARE(a->geometry(), QRectF(0, 0, 50, 10)); QCOMPARE(b->geometry(), QRectF(50, 0, 50, 10)); QCOMPARE(c->geometry(), QRectF(100, 0, 50, 10)); QCOMPARE(d->geometry(), QRectF(150, 0, 50, 10)); - if (!hasSimplification) - QEXPECT_FAIL("", "Without simplification there is no fair distribution.", Abort); - p.resize(1000, 10); - QCOMPARE(a->geometry(), QRectF(0, 0, 450, 10)); - QCOMPARE(b->geometry(), QRectF(450, 0, 50, 10)); - QCOMPARE(c->geometry(), QRectF(500, 0, 450, 10)); - QCOMPARE(d->geometry(), QRectF(950, 0, 50, 10)); - - qreal expMaxSize = (QWIDGETSIZE_MAX - 100.0) / 2; - p.resize(QWIDGETSIZE_MAX, 10); - QCOMPARE(a->geometry(), QRectF(0, 0, expMaxSize, 10)); - QCOMPARE(b->geometry(), QRectF(expMaxSize, 0, 50, 10)); - QCOMPARE(c->geometry(), QRectF(expMaxSize + 50, 0, expMaxSize, 10)); - QCOMPARE(d->geometry(), QRectF(QWIDGETSIZE_MAX - 50, 0, 50, 10)); + QCOMPARE(a->geometry(), QRectF(0, 0, 250, 10)); + QCOMPARE(b->geometry(), QRectF(250, 0, 250, 10)); + QCOMPARE(c->geometry(), QRectF(500, 0, 250, 10)); + QCOMPARE(d->geometry(), QRectF(750, 0, 250, 10)); + + p.resize(40000, 10); + QCOMPARE(a->geometry(), QRectF(0, 0, 10000, 10)); + QCOMPARE(b->geometry(), QRectF(10000, 0, 10000, 10)); + QCOMPARE(c->geometry(), QRectF(20000, 0, 10000, 10)); + QCOMPARE(d->geometry(), QRectF(30000, 0, 10000, 10)); } void tst_QGraphicsAnchorLayout::simplifiableUnfeasible() @@ -1951,7 +1740,7 @@ void tst_QGraphicsAnchorLayout::simplifiableUnfeasible() if (hasSimplification) QVERIFY(!usedSimplex(l, Qt::Horizontal)); - // Now we make it valid again + // Now we make it valid b->setMinimumWidth(100); l->invalidate(); @@ -1979,9 +1768,9 @@ void tst_QGraphicsAnchorLayout::simplificationVsOrder() QSizeF pref(20, 10); QSizeF max(50, 10); - QGraphicsWidget *a = createItem(min, pref, max); - QGraphicsWidget *b = createItem(min, pref, max); - QGraphicsWidget *c = createItem(min, pref, max); + QGraphicsWidget *a = createItem(min, pref, max, "A"); + QGraphicsWidget *b = createItem(min, pref, max, "B"); + QGraphicsWidget *c = createItem(min, pref, max, "C"); QGraphicsAnchorLayout *l = new QGraphicsAnchorLayout; @@ -2014,5 +1803,68 @@ void tst_QGraphicsAnchorLayout::simplificationVsOrder() } } +void tst_QGraphicsAnchorLayout::parallelSimplificationOfCenter() +{ + QSizeF min(10, 10); + QSizeF pref(20, 10); + QSizeF max(50, 10); + + QGraphicsWidget *a = createItem(min, pref, max, "A"); + QGraphicsWidget *b = createItem(min, pref, max, "B"); + + QGraphicsWidget parent; + QGraphicsAnchorLayout *l = new QGraphicsAnchorLayout(&parent); + l->setContentsMargins(0, 0, 0, 0); + + l->addAnchor(l, Qt::AnchorLeft, a, Qt::AnchorLeft); + l->addAnchor(l, Qt::AnchorRight, a, Qt::AnchorRight); + + l->addAnchor(a, Qt::AnchorHorizontalCenter, b, Qt::AnchorLeft); + l->addAnchor(b, Qt::AnchorRight, a, Qt::AnchorRight); + + parent.resize(l->effectiveSizeHint(Qt::PreferredSize)); + + QCOMPARE(a->geometry(), QRectF(0, 0, 40, 10)); + QCOMPARE(b->geometry(), QRectF(20, 0, 20, 10)); +} + +/* + Test whether redundance of anchors (in this case by using addCornerAnchors), will + prevent simplification to take place when it should. +*/ +void tst_QGraphicsAnchorLayout::simplificationVsRedundance() +{ + QSizeF min(10, 10); + QSizeF pref(20, 10); + QSizeF max(50, 30); + + QGraphicsWidget *a = createItem(min, pref, max, "A"); + QGraphicsWidget *b = createItem(min, pref, max, "B"); + QGraphicsWidget *c = createItem(min, pref, max, "C"); + + QGraphicsAnchorLayout *l = new QGraphicsAnchorLayout; + + l->addCornerAnchors(a, Qt::TopLeftCorner, l, Qt::TopLeftCorner); + l->addCornerAnchors(a, Qt::BottomLeftCorner, l, Qt::BottomLeftCorner); + + l->addCornerAnchors(b, Qt::TopLeftCorner, a, Qt::TopRightCorner); + l->addCornerAnchors(b, Qt::TopRightCorner, l, Qt::TopRightCorner); + + l->addCornerAnchors(c, Qt::TopLeftCorner, b, Qt::BottomLeftCorner); + l->addCornerAnchors(c, Qt::BottomLeftCorner, a, Qt::BottomRightCorner); + l->addCornerAnchors(c, Qt::TopRightCorner, b, Qt::BottomRightCorner); + l->addCornerAnchors(c, Qt::BottomRightCorner, l, Qt::BottomRightCorner); + + l->effectiveSizeHint(Qt::MinimumSize); + + QCOMPARE(layoutHasConflict(l), false); + + if (!hasSimplification) + QEXPECT_FAIL("", "Test depends on simplification.", Abort); + + QCOMPARE(usedSimplex(l, Qt::Horizontal), false); + QCOMPARE(usedSimplex(l, Qt::Vertical), false); +} + QTEST_MAIN(tst_QGraphicsAnchorLayout) #include "tst_qgraphicsanchorlayout.moc" diff --git a/tests/auto/qgraphicsanchorlayout1/tst_qgraphicsanchorlayout1.cpp b/tests/auto/qgraphicsanchorlayout1/tst_qgraphicsanchorlayout1.cpp index 1c7a159..0fbd069 100644 --- a/tests/auto/qgraphicsanchorlayout1/tst_qgraphicsanchorlayout1.cpp +++ b/tests/auto/qgraphicsanchorlayout1/tst_qgraphicsanchorlayout1.cpp @@ -162,10 +162,14 @@ Q_DECLARE_METATYPE(AnchorItemSizeHintList) class TestWidget : public QGraphicsWidget { public: - inline TestWidget(QGraphicsItem *parent = 0) + inline TestWidget(QGraphicsItem *parent = 0, const QString &name = QString()) : QGraphicsWidget(parent) { setContentsMargins( 0,0,0,0 ); + if (name.isEmpty()) + setData(0, QString::fromAscii("w%1").arg(int(this))); + else + setData(0, name); } ~TestWidget() { @@ -419,7 +423,6 @@ void tst_QGraphicsAnchorLayout1::testAddAndRemoveAnchor() layout->setAnchor(layout, Qt::AnchorLeft, widget5, Qt::AnchorTop, 10); QCOMPARE( layout->count(), 4 ); - // ###: NOT SUPPORTED // anchor two edges of a widget (to define width / height) QTest::ignoreMessage(QtWarningMsg, "QGraphicsAnchorLayout::addAnchor(): Cannot anchor the item to itself"); layout->setAnchor(widget5, Qt::AnchorLeft, widget5, Qt::AnchorRight, 10); @@ -516,8 +519,6 @@ void tst_QGraphicsAnchorLayout1::testIsValid() widget->setLayout(layout); widget->setGeometry(QRectF(0,0,100,100)); - // ###: this shall change once isValid() is ready - // QCOMPARE(layout->isValid(), false); QCOMPARE(layout->isValid(), true); delete widget; } @@ -694,9 +695,8 @@ void tst_QGraphicsAnchorLayout1::testSpecialCases() layout2->setAnchor(widget1, Qt::AnchorRight, layout2, Qt::AnchorRight, 1); layout2->setAnchor(widget1, Qt::AnchorBottom, layout2, Qt::AnchorBottom, 1); - // ###: uncomment when simplification bug is solved - //widget->setGeometry(QRectF(0,0,100,100)); - //QCOMPARE(widget1->geometry(), QRectF(51,2,47,96)); + widget->setGeometry(QRectF(0,0,100,100)); + QCOMPARE(widget1->geometry(), QRectF(51,2,47,96)); delete widget; } @@ -896,9 +896,6 @@ void tst_QGraphicsAnchorLayout1::testBasicLayout_data() << BasicData(-1, Qt::AnchorLeft, 1, Qt::AnchorRight, 20) ; - // ### SIMPLIFICATION BUG FOR ITEM 1 - // ### remove this when bug is solved - theResult << BasicResult(0, QRectF(10, 10, 180, 80) ) << BasicResult(1, QRectF(10, 80, 10, 10) ) @@ -1664,6 +1661,18 @@ inline QGraphicsLayoutItem *getItem( return widgets[index]; } +static QRectF truncate(QRectF original) +{ + QRectF result; + + result.setX(qRound(original.x() * 1000000) / 1000000.0); + result.setY(qRound(original.y() * 1000000) / 1000000.0); + result.setWidth(qRound(original.width() * 1000000) / 1000000.0); + result.setHeight(qRound(original.height() * 1000000) / 1000000.0); + + return result; +} + void tst_QGraphicsAnchorLayout1::testBasicLayout() { QFETCH(QSizeF, size); @@ -1684,7 +1693,7 @@ void tst_QGraphicsAnchorLayout1::testBasicLayout() // Create dummy widgets QList<QGraphicsWidget *> widgets; for (int i = 0; i < widgetCount; ++i) { - TestWidget *w = new TestWidget; + TestWidget *w = new TestWidget(0, QString::fromAscii("W%1").arg(i)); widgets << w; } @@ -1704,19 +1713,18 @@ void tst_QGraphicsAnchorLayout1::testBasicLayout() widget->setLayout(layout); widget->setContentsMargins(0,0,0,0); - widget->setMinimumSize(size); - widget->setMaximumSize(size); - -// QTest::qWait(500); // layouting is asynchronous.. + widget->resize(size); + QCOMPARE(widget->size(), size); // Validate for (int i = 0; i < result.count(); ++i) { const BasicLayoutTestResult item = result[i]; - QCOMPARE(widgets[item.index]->geometry(), item.rect); + QRectF expected = truncate(item.rect); + QRectF actual = truncate(widgets[item.index]->geometry()); + + QCOMPARE(expected, actual); } - // ###: not supported yet -/* // Test mirrored mode widget->setLayoutDirection(Qt::RightToLeft); layout->activate(); @@ -1728,10 +1736,13 @@ void tst_QGraphicsAnchorLayout1::testBasicLayout() if (mirroredRect.isValid()){ mirroredRect.moveLeft(size.width()-item.rect.width()-item.rect.left()); } - QCOMPARE(widgets[item.index]->geometry(), mirroredRect); + QRectF expected = truncate(mirroredRect); + QRectF actual = truncate(widgets[item.index]->geometry()); + + QCOMPARE(expected, actual); delete widgets[item.index]; } -*/ + delete widget; } @@ -2212,8 +2223,8 @@ void tst_QGraphicsAnchorLayout1::testRemoveCenterAnchor() widget->setLayout(layout); widget->setContentsMargins(0,0,0,0); - widget->setMinimumSize(size); - widget->setMaximumSize(size); + widget->resize(size); + QCOMPARE(widget->size(), size); // Validate for (int i = 0; i < result.count(); ++i) { @@ -2430,6 +2441,8 @@ void tst_QGraphicsAnchorLayout1::testDoubleSizePolicy_data() QTest::newRow("double size policy: expanding-preferred") << sizePolicy1 << sizePolicy2 << width1 << width2; } + // QGAL handling of ignored flag is different + if (0) { QSizePolicy sizePolicy1( QSizePolicy::Ignored, QSizePolicy::Ignored ); QSizePolicy sizePolicy2( QSizePolicy::Preferred, QSizePolicy::Preferred ); @@ -2497,9 +2510,6 @@ void tst_QGraphicsAnchorLayout1::testDoubleSizePolicy_data() void tst_QGraphicsAnchorLayout1::testDoubleSizePolicy() { - // ### Size policy is not yet supported - return; - QFETCH(QSizePolicy, policy1); QFETCH(QSizePolicy, policy2); QFETCH(qreal, width1); @@ -3053,8 +3063,8 @@ void tst_QGraphicsAnchorLayout1::testComplexCases() widget->setLayout(layout); widget->setContentsMargins(0,0,0,0); - widget->setMinimumSize(size); - widget->setMaximumSize(size); + widget->resize(size); + QCOMPARE(widget->size(), size); // QTest::qWait(500); // layouting is asynchronous.. diff --git a/tests/auto/qgraphicseffectsource/tst_qgraphicseffectsource.cpp b/tests/auto/qgraphicseffectsource/tst_qgraphicseffectsource.cpp index fbeb425..55294d5 100644 --- a/tests/auto/qgraphicseffectsource/tst_qgraphicseffectsource.cpp +++ b/tests/auto/qgraphicseffectsource/tst_qgraphicseffectsource.cpp @@ -357,7 +357,7 @@ void tst_QGraphicsEffectSource::pixmapPadding_data() QTest::newRow("log,transparent") << int(Qt::LogicalCoordinates) << int(QGraphicsEffectSource::ExpandToTransparentBorderPadMode) - << QSize(12, 12) << QPoint(-1, -1) + << QSize(14, 14) << QPoint(-2, -2) << 0x00000000u; QTest::newRow("log,effectrect") << int(Qt::LogicalCoordinates) @@ -372,7 +372,7 @@ void tst_QGraphicsEffectSource::pixmapPadding_data() QTest::newRow("dev,transparent") << int(Qt::DeviceCoordinates) << int(QGraphicsEffectSource::ExpandToTransparentBorderPadMode) - << QSize(22, 22) << QPoint(39, 39) + << QSize(24, 24) << QPoint(38, 38) << 0x00000000u; QTest::newRow("dev,effectrect") << int(Qt::DeviceCoordinates) diff --git a/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp b/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp index 684ad4f..d65c6ec 100644 --- a/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp +++ b/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp @@ -401,6 +401,7 @@ private slots: void modality_clickFocus(); void modality_keyEvents(); void itemIsInFront(); + void scenePosChange(); // task specific tests below me void task141694_textItemEnsureVisible(); @@ -4229,6 +4230,8 @@ protected: break; case QGraphicsItem::ItemOpacityHasChanged: break; + case QGraphicsItem::ItemScenePositionHasChanged: + break; } return itemChangeReturnValue.isValid() ? itemChangeReturnValue : value; } @@ -7676,20 +7679,6 @@ void tst_QGraphicsItem::hitTestGraphicsEffectItem() QCOMPARE(items.size(), 1); QCOMPARE(items.at(0), static_cast<QGraphicsItem *>(item3)); - item1->repaints = 0; - item2->repaints = 0; - item3->repaints = 0; - - view.viewport()->update(75, 75, 20, 20); - QTest::qWait(50); - - // item1 is the effect source and must therefore be repainted. - // item2 intersects with the exposed region - // item3 is just another child outside the exposed region - QCOMPARE(item1->repaints, 1); - QCOMPARE(item2->repaints, 1); - QCOMPARE(item3->repaints, 0); - scene.setItemIndexMethod(QGraphicsScene::NoIndex); QTest::qWait(100); @@ -9691,5 +9680,76 @@ void tst_QGraphicsItem::itemIsInFront() QCOMPARE(qt_closestItemFirst(rect1child1_2, rect2child1), false); } +class ScenePosChangeTester : public ItemChangeTester +{ +public: + ScenePosChangeTester() + { } + ScenePosChangeTester(QGraphicsItem *parent) : ItemChangeTester(parent) + { } +}; + +void tst_QGraphicsItem::scenePosChange() +{ + ScenePosChangeTester* root = new ScenePosChangeTester; + ScenePosChangeTester* child1 = new ScenePosChangeTester(root); + ScenePosChangeTester* grandChild1 = new ScenePosChangeTester(child1); + ScenePosChangeTester* child2 = new ScenePosChangeTester(root); + ScenePosChangeTester* grandChild2 = new ScenePosChangeTester(child2); + + child1->setFlag(QGraphicsItem::ItemSendsScenePositionChanges, true); + grandChild2->setFlag(QGraphicsItem::ItemSendsScenePositionChanges, true); + + QGraphicsScene scene; + scene.addItem(root); + + // ignore uninteresting changes + child1->clear(); + child2->clear(); + grandChild1->clear(); + grandChild2->clear(); + + // move whole tree + root->moveBy(1.0, 1.0); + QCOMPARE(child1->changes.count(QGraphicsItem::ItemScenePositionHasChanged), 1); + QCOMPARE(grandChild1->changes.count(QGraphicsItem::ItemScenePositionHasChanged), 0); + QCOMPARE(child2->changes.count(QGraphicsItem::ItemScenePositionHasChanged), 0); + QCOMPARE(grandChild2->changes.count(QGraphicsItem::ItemScenePositionHasChanged), 1); + + // move subtree + child2->moveBy(1.0, 1.0); + QCOMPARE(child1->changes.count(QGraphicsItem::ItemScenePositionHasChanged), 1); + QCOMPARE(grandChild1->changes.count(QGraphicsItem::ItemScenePositionHasChanged), 0); + QCOMPARE(child2->changes.count(QGraphicsItem::ItemScenePositionHasChanged), 0); + QCOMPARE(grandChild2->changes.count(QGraphicsItem::ItemScenePositionHasChanged), 2); + + // reparent + grandChild2->setParentItem(child1); + child1->moveBy(1.0, 1.0); + QCOMPARE(child1->changes.count(QGraphicsItem::ItemScenePositionHasChanged), 2); + QCOMPARE(grandChild1->changes.count(QGraphicsItem::ItemScenePositionHasChanged), 0); + QCOMPARE(child2->changes.count(QGraphicsItem::ItemScenePositionHasChanged), 0); + QCOMPARE(grandChild2->changes.count(QGraphicsItem::ItemScenePositionHasChanged), 3); + + // change flags + grandChild1->setFlag(QGraphicsItem::ItemSendsScenePositionChanges, true); + grandChild2->setFlag(QGraphicsItem::ItemSendsScenePositionChanges, false); + QCoreApplication::processEvents(); // QGraphicsScenePrivate::_q_updateScenePosDescendants() + child1->moveBy(1.0, 1.0); + QCOMPARE(child1->changes.count(QGraphicsItem::ItemScenePositionHasChanged), 3); + QCOMPARE(grandChild1->changes.count(QGraphicsItem::ItemScenePositionHasChanged), 1); + QCOMPARE(child2->changes.count(QGraphicsItem::ItemScenePositionHasChanged), 0); + QCOMPARE(grandChild2->changes.count(QGraphicsItem::ItemScenePositionHasChanged), 3); + + // remove + scene.removeItem(grandChild1); + delete grandChild2; grandChild2 = 0; + QCoreApplication::processEvents(); // QGraphicsScenePrivate::_q_updateScenePosDescendants() + root->moveBy(1.0, 1.0); + QCOMPARE(child1->changes.count(QGraphicsItem::ItemScenePositionHasChanged), 4); + QCOMPARE(grandChild1->changes.count(QGraphicsItem::ItemScenePositionHasChanged), 1); + QCOMPARE(child2->changes.count(QGraphicsItem::ItemScenePositionHasChanged), 0); +} + QTEST_MAIN(tst_QGraphicsItem) #include "tst_qgraphicsitem.moc" diff --git a/tests/auto/qgraphicsscene/tst_qgraphicsscene.cpp b/tests/auto/qgraphicsscene/tst_qgraphicsscene.cpp index 0589994..9a561eb 100644 --- a/tests/auto/qgraphicsscene/tst_qgraphicsscene.cpp +++ b/tests/auto/qgraphicsscene/tst_qgraphicsscene.cpp @@ -225,6 +225,7 @@ private slots: void focusItem(); void focusItemLostFocus(); void setFocusItem(); + void setFocusItem_inactive(); void mouseGrabberItem(); void hoverEvents_siblings(); void hoverEvents_parentChild(); @@ -267,6 +268,7 @@ private slots: void initialFocus_data(); void initialFocus(); void polishItems(); + void isActive(); // task specific tests below me void task139710_bspTreeCrash(); @@ -1453,6 +1455,13 @@ void tst_QGraphicsScene::focusItemLostFocus() item->clearFocus(); } +class ClearTestItem : public QGraphicsRectItem +{ +public: + ~ClearTestItem() { qDeleteAll(items); } + QList<QGraphicsItem *> items; +}; + void tst_QGraphicsScene::clear() { QGraphicsScene scene; @@ -1463,6 +1472,19 @@ void tst_QGraphicsScene::clear() scene.clear(); QVERIFY(scene.items().isEmpty()); QCOMPARE(scene.sceneRect(), QRectF(0, 0, 100, 100)); + + ClearTestItem *firstItem = new ClearTestItem; + QGraphicsItem *secondItem = new QGraphicsRectItem; + firstItem->items += secondItem; + + scene.setItemIndexMethod(QGraphicsScene::NoIndex); + scene.addItem(firstItem); + scene.addItem(secondItem); + QCOMPARE(scene.items().at(0), firstItem); + QCOMPARE(scene.items().at(1), secondItem); + // must not crash even if firstItem deletes secondItem + scene.clear(); + QVERIFY(scene.items().isEmpty()); } void tst_QGraphicsScene::setFocusItem() @@ -1514,6 +1536,26 @@ void tst_QGraphicsScene::setFocusItem() QVERIFY(!item2->hasFocus()); } +void tst_QGraphicsScene::setFocusItem_inactive() +{ + QGraphicsScene scene; + QGraphicsItem *item = scene.addText("Qt"); + QVERIFY(!scene.focusItem()); + QVERIFY(!scene.hasFocus()); + scene.setFocusItem(item); + QVERIFY(!scene.hasFocus()); + QVERIFY(!scene.focusItem()); + item->setFlag(QGraphicsItem::ItemIsFocusable); + + for (int i = 0; i < 3; ++i) { + scene.setFocusItem(item); + QCOMPARE(scene.focusItem(), item); + QVERIFY(!item->hasFocus()); + } + +} + + void tst_QGraphicsScene::mouseGrabberItem() { QGraphicsScene scene; @@ -3110,6 +3152,7 @@ void tst_QGraphicsScene::tabFocus_sceneWithFocusableItems() QVERIFY(!view->viewport()->hasFocus()); QVERIFY(!scene.hasFocus()); QVERIFY(!item->hasFocus()); + QCOMPARE(scene.focusItem(), static_cast<QGraphicsItem *>(item)); // Check that the correct item regains focus. widget.show(); @@ -3117,8 +3160,10 @@ void tst_QGraphicsScene::tabFocus_sceneWithFocusableItems() widget.activateWindow(); QTest::qWaitForWindowShown(&widget); QTRY_VERIFY(view->hasFocus()); + QTRY_VERIFY(scene.isActive()); QVERIFY(view->viewport()->hasFocus()); QVERIFY(scene.hasFocus()); + QCOMPARE(scene.focusItem(), static_cast<QGraphicsItem *>(item)); QVERIFY(item->hasFocus()); } @@ -3910,5 +3955,180 @@ void tst_QGraphicsScene::polishItems() QMetaObject::invokeMethod(&scene,"_q_polishItems"); } +void tst_QGraphicsScene::isActive() +{ + QGraphicsScene scene1; + QVERIFY(!scene1.isActive()); + QGraphicsScene scene2; + QVERIFY(!scene2.isActive()); + + { + QWidget toplevel1; + QHBoxLayout *layout = new QHBoxLayout; + toplevel1.setLayout(layout); + QGraphicsView *view1 = new QGraphicsView(&scene1); + QGraphicsView *view2 = new QGraphicsView(&scene2); + layout->addWidget(view1); + layout->addWidget(view2); + + QVERIFY(!scene1.isActive()); + QVERIFY(!scene2.isActive()); + + view1->setVisible(false); + + toplevel1.show(); + QApplication::setActiveWindow(&toplevel1); + QTest::qWaitForWindowShown(&toplevel1); + QTRY_COMPARE(QApplication::activeWindow(), &toplevel1); + + QVERIFY(!scene1.isActive()); //it is hidden; + QVERIFY(scene2.isActive()); + + view1->show(); + QVERIFY(scene1.isActive()); + QVERIFY(scene2.isActive()); + + view2->hide(); + + QVERIFY(scene1.isActive()); + QVERIFY(!scene2.isActive()); + + toplevel1.hide(); + QTest::qWait(12); + QTRY_VERIFY(!scene1.isActive()); + QTRY_VERIFY(!scene2.isActive()); + + toplevel1.show(); + QApplication::setActiveWindow(&toplevel1); + QApplication::processEvents(); + QTRY_COMPARE(QApplication::activeWindow(), &toplevel1); + + QTRY_VERIFY(scene1.isActive()); + QTRY_VERIFY(!scene2.isActive()); + + view2->show(); + QVERIFY(scene1.isActive()); + QVERIFY(scene2.isActive()); + } + + QVERIFY(!scene1.isActive()); + QVERIFY(!scene2.isActive()); + + { + QWidget toplevel2; + QHBoxLayout *layout = new QHBoxLayout; + toplevel2.setLayout(layout); + QGraphicsView *view1 = new QGraphicsView(&scene1); + QGraphicsView *view2 = new QGraphicsView(); + layout->addWidget(view1); + layout->addWidget(view2); + + QVERIFY(!scene1.isActive()); + QVERIFY(!scene2.isActive()); + + toplevel2.show(); + QApplication::setActiveWindow(&toplevel2); + QTest::qWaitForWindowShown(&toplevel2); + QTRY_COMPARE(QApplication::activeWindow(), &toplevel2); + + QVERIFY(scene1.isActive()); + QVERIFY(!scene2.isActive()); + + view2->setScene(&scene2); + + QVERIFY(scene1.isActive()); + QVERIFY(scene2.isActive()); + + view1->setScene(&scene2); + QVERIFY(!scene1.isActive()); + QVERIFY(scene2.isActive()); + + view1->hide(); + QVERIFY(!scene1.isActive()); + QVERIFY(scene2.isActive()); + + view1->setScene(&scene1); + QVERIFY(!scene1.isActive()); + QVERIFY(scene2.isActive()); + + view1->show(); + + view1->show(); + QVERIFY(scene1.isActive()); + QVERIFY(scene2.isActive()); + + view2->hide(); + QVERIFY(scene1.isActive()); + QVERIFY(!scene2.isActive()); + + QGraphicsView topLevelView; + topLevelView.show(); + QApplication::setActiveWindow(&topLevelView); + QTest::qWaitForWindowShown(&topLevelView); + QTRY_COMPARE(QApplication::activeWindow(), static_cast<QWidget *>(&topLevelView)); + + QVERIFY(!scene1.isActive()); + QVERIFY(!scene2.isActive()); + + topLevelView.setScene(&scene1); + QVERIFY(scene1.isActive()); + QVERIFY(!scene2.isActive()); + + view2->show(); + QVERIFY(scene1.isActive()); + QVERIFY(!scene2.isActive()); + + view1->hide(); + QVERIFY(scene1.isActive()); + QVERIFY(!scene2.isActive()); + + QApplication::setActiveWindow(&toplevel2); + QTRY_COMPARE(QApplication::activeWindow(), &toplevel2); + + QVERIFY(!scene1.isActive()); + QVERIFY(scene2.isActive()); + + + } + + QVERIFY(!scene1.isActive()); + QVERIFY(!scene2.isActive()); + + { + QWidget toplevel3; + QHBoxLayout *layout = new QHBoxLayout; + toplevel3.setLayout(layout); + QGraphicsView *view1 = new QGraphicsView(&scene1); + QGraphicsView *view2 = new QGraphicsView(&scene2); + layout->addWidget(view1); + + QVERIFY(!scene1.isActive()); + QVERIFY(!scene2.isActive()); + + toplevel3.show(); + QApplication::setActiveWindow(&toplevel3); + QTest::qWaitForWindowShown(&toplevel3); + QTRY_COMPARE(QApplication::activeWindow(), &toplevel3); + + QVERIFY(scene1.isActive()); + QVERIFY(!scene2.isActive()); + + layout->addWidget(view2); + QApplication::processEvents(); + QVERIFY(scene1.isActive()); + QVERIFY(scene2.isActive()); + + view1->setParent(0); + QVERIFY(!scene1.isActive()); + QVERIFY(scene2.isActive()); + delete view1; + } + + QVERIFY(!scene1.isActive()); + QVERIFY(!scene2.isActive()); + +} + + QTEST_MAIN(tst_QGraphicsScene) #include "tst_qgraphicsscene.moc" diff --git a/tests/auto/qgraphicstransform/tst_qgraphicstransform.cpp b/tests/auto/qgraphicstransform/tst_qgraphicstransform.cpp index d8ab06e..9b15ab1 100644 --- a/tests/auto/qgraphicstransform/tst_qgraphicstransform.cpp +++ b/tests/auto/qgraphicstransform/tst_qgraphicstransform.cpp @@ -259,7 +259,7 @@ void tst_QGraphicsTransform::rotation3d() // Check that "rotation" produces the 4x4 form of the 3x3 matrix. // i.e. third row and column are 0 0 1 0. - t.setIdentity(); + t.setToIdentity(); rotation.applyTo(&t); QMatrix4x4 r(expected); if (sizeof(qreal) == sizeof(float) && angle == 268) { @@ -274,7 +274,7 @@ void tst_QGraphicsTransform::rotation3d() rotation.setAxis(QVector3D(0, 0, 0)); rotation.setOrigin(QVector3D(10, 10, 0)); - t.setIdentity(); + t.setToIdentity(); rotation.applyTo(&t); QVERIFY(t.isIdentity()); @@ -337,7 +337,7 @@ void tst_QGraphicsTransform::rotation3dArbitraryAxis() // Check that "rotation" produces the 4x4 form of the 3x3 matrix. // i.e. third row and column are 0 0 1 0. - t.setIdentity(); + t.setToIdentity(); rotation.applyTo(&t); QMatrix4x4 r(expected); QVERIFY(qFuzzyCompare(t, r)); diff --git a/tests/auto/qgraphicsview/tst_qgraphicsview.cpp b/tests/auto/qgraphicsview/tst_qgraphicsview.cpp index f07453c..9c6aa39 100644 --- a/tests/auto/qgraphicsview/tst_qgraphicsview.cpp +++ b/tests/auto/qgraphicsview/tst_qgraphicsview.cpp @@ -217,6 +217,7 @@ private slots: void update(); void inputMethodSensitivity(); void inputContextReset(); + void defaultClipIntersectToView(); // task specific tests below me void task172231_untransformableItems(); @@ -3692,6 +3693,77 @@ void tst_QGraphicsView::inputContextReset() QCOMPARE(inputContext.resets, 0); } +class ViewClipTester : public QGraphicsView +{ +public: + ViewClipTester(QGraphicsScene *scene = 0) + : QGraphicsView(scene) + { } + QRegion clipRegion; + +protected: + void drawBackground(QPainter *painter, const QRectF &rect) + { + clipRegion = painter->clipRegion(); + } +}; + +class ItemClipTester : public QGraphicsRectItem +{ +public: + ItemClipTester() : QGraphicsRectItem(0, 0, 20, 20) + { + setBrush(Qt::blue); + } + QRegion clipRegion; + + void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0) + { + clipRegion = painter->clipRegion(); + QGraphicsRectItem::paint(painter, option, widget); + } +}; + +void tst_QGraphicsView::defaultClipIntersectToView() +{ + QGraphicsScene scene; + ItemClipTester *tester = new ItemClipTester; + scene.addItem(tester); + + ViewClipTester view(&scene); + view.setAlignment(Qt::AlignTop | Qt::AlignLeft); + view.setFrameStyle(0); + view.resize(200, 200); + view.show(); + QTRY_COMPARE(QApplication::activeWindow(), (QWidget *)&view); + + QRect viewRect(0, 0, 200, 200); + QCOMPARE(view.clipRegion, QRegion(viewRect)); + QCOMPARE(tester->clipRegion, QRegion(viewRect)); + + view.viewport()->update(0, 0, 5, 5); + view.viewport()->update(10, 10, 5, 5); + qApp->processEvents(); + viewRect = QRect(0, 0, 15, 15); + QCOMPARE(view.clipRegion, QRegion(viewRect)); + QCOMPARE(tester->clipRegion, QRegion(viewRect)); + + view.scale(2, 2); + qApp->processEvents(); + + viewRect.moveTop(-viewRect.height()); + viewRect = QRect(0, 0, 100, 100); + QCOMPARE(view.clipRegion, QRegion(viewRect)); + QCOMPARE(tester->clipRegion, QRegion(viewRect)); + + view.viewport()->update(0, 0, 5, 5); + view.viewport()->update(10, 10, 5, 5); + qApp->processEvents(); + viewRect = QRect(0, 0, 8, 8); + QCOMPARE(view.clipRegion, QRegion(viewRect)); + QCOMPARE(tester->clipRegion, QRegion(viewRect)); +} + void tst_QGraphicsView::task253415_reconnectUpdateSceneOnSceneChanged() { QGraphicsView view; diff --git a/tests/auto/qgridlayout/tst_qgridlayout.cpp b/tests/auto/qgridlayout/tst_qgridlayout.cpp index 7c320be..46e2a03 100644 --- a/tests/auto/qgridlayout/tst_qgridlayout.cpp +++ b/tests/auto/qgridlayout/tst_qgridlayout.cpp @@ -920,9 +920,9 @@ void tst_QGridLayout::minMaxSize() #if defined(Q_WS_X11) qt_x11_wait_for_window_manager(m_toplevel); // wait for the show #endif - QTest::qWait(20); + QTest::qWait(40); m_toplevel->adjustSize(); - QTest::qWait(120); // wait for the implicit adjustSize + QTest::qWait(240); // wait for the implicit adjustSize // If the following fails we might have to wait longer. // If that does not help there is likely a problem with the implicit adjustSize in show() if (!fixedSize.isValid()) { diff --git a/tests/auto/qlabel/tst_qlabel.cpp b/tests/auto/qlabel/tst_qlabel.cpp index 9eae9c9..9d957a5 100644 --- a/tests/auto/qlabel/tst_qlabel.cpp +++ b/tests/auto/qlabel/tst_qlabel.cpp @@ -328,14 +328,14 @@ void tst_QLabel::eventPropagation_data() QTest::addColumn<bool>("propagation"); QTest::newRow("plain text1") << QString("plain text") << int(Qt::LinksAccessibleByMouse) << int(Qt::NoFocus) << true; - QTest::newRow("plain text2") << QString("plain text") << (int)Qt::TextSelectableByKeyboard << (int)Qt::ClickFocus << false; + QTest::newRow("plain text2") << QString("plain text") << (int)Qt::TextSelectableByKeyboard << (int)Qt::ClickFocus << true; QTest::newRow("plain text3") << QString("plain text") << (int)Qt::TextSelectableByMouse << (int)Qt::ClickFocus << false; QTest::newRow("plain text4") << QString("plain text") << (int)Qt::NoTextInteraction << (int)Qt::NoFocus << true; - QTest::newRow("rich text1") << QString("<b>rich text</b>") << (int)Qt::LinksAccessibleByMouse << (int)Qt::NoFocus << false; - QTest::newRow("rich text2") << QString("<b>rich text</b>") << (int)Qt::TextSelectableByKeyboard << (int)Qt::ClickFocus << false; + QTest::newRow("rich text1") << QString("<b>rich text</b>") << (int)Qt::LinksAccessibleByMouse << (int)Qt::NoFocus << true; + QTest::newRow("rich text2") << QString("<b>rich text</b>") << (int)Qt::TextSelectableByKeyboard << (int)Qt::ClickFocus << true; QTest::newRow("rich text3") << QString("<b>rich text</b>") << (int)Qt::TextSelectableByMouse << (int)Qt::ClickFocus << false; QTest::newRow("rich text4") << QString("<b>rich text</b>") << (int)Qt::NoTextInteraction << (int)Qt::NoFocus << true; - QTest::newRow("rich text4") << QString("<b>rich text</b>") << (int)Qt::LinksAccessibleByKeyboard << (int)Qt::StrongFocus << false; + QTest::newRow("rich text4") << QString("<b>rich text</b>") << (int)Qt::LinksAccessibleByKeyboard << (int)Qt::StrongFocus << true; if (!test_box) test_box = new Widget; diff --git a/tests/auto/qlineedit/tst_qlineedit.cpp b/tests/auto/qlineedit/tst_qlineedit.cpp index c676959..b4dfbba 100644 --- a/tests/auto/qlineedit/tst_qlineedit.cpp +++ b/tests/auto/qlineedit/tst_qlineedit.cpp @@ -260,6 +260,7 @@ private slots: void task233101_cursorPosAfterInputMethod(); void task241436_passwordEchoOnEditRestoreEchoMode(); void task248948_redoRemovedSelection(); + void taskQTBUG_4401_enterKeyClearsPassword(); protected slots: #ifdef QT3_SUPPORT @@ -3532,5 +3533,20 @@ void tst_QLineEdit::task248948_redoRemovedSelection() QCOMPARE(testWidget->text(), QLatin1String("ab")); } +void tst_QLineEdit::taskQTBUG_4401_enterKeyClearsPassword() +{ + QString password("Wanna guess?"); + + testWidget->setText(password); + testWidget->setEchoMode(QLineEdit::PasswordEchoOnEdit); + testWidget->setFocus(); + testWidget->selectAll(); + QApplication::setActiveWindow(testWidget); + QTRY_VERIFY(testWidget->hasFocus()); + + QTest::keyPress(testWidget, Qt::Key_Enter); + QTRY_COMPARE(testWidget->text(), password); +} + QTEST_MAIN(tst_QLineEdit) #include "tst_qlineedit.moc" diff --git a/tests/auto/qlistview/tst_qlistview.cpp b/tests/auto/qlistview/tst_qlistview.cpp index a5ff153..1c8fecf 100644 --- a/tests/auto/qlistview/tst_qlistview.cpp +++ b/tests/auto/qlistview/tst_qlistview.cpp @@ -121,6 +121,7 @@ private slots: void taskQTBUG_2233_scrollHiddenItems(); void taskQTBUG_633_changeModelData(); void taskQTBUG_435_deselectOnViewportClick(); + void taskQTBUG_2678_spacingAndWrappedText(); }; // Testing get/set functions @@ -1787,13 +1788,13 @@ void tst_QListView::task262152_setModelColumnNavigate() view.show(); QTest::qWaitForWindowShown(&view); - QTest::qWait(100); + QTest::qWait(120); QTest::keyClick(&view, Qt::Key_Down); - QTest::qWait(100); - QCOMPARE(view.currentIndex(), model.index(1,1)); + QTest::qWait(30); + QTRY_COMPARE(view.currentIndex(), model.index(1,1)); QTest::keyClick(&view, Qt::Key_Down); - QTest::qWait(100); - QCOMPARE(view.currentIndex(), model.index(2,1)); + QTest::qWait(30); + QTRY_COMPARE(view.currentIndex(), model.index(2,1)); } @@ -1861,7 +1862,7 @@ void tst_QListView::taskQTBUG_435_deselectOnViewportClick() view.setSelectionMode(QAbstractItemView::ExtendedSelection); view.selectAll(); QCOMPARE(view.selectionModel()->selectedIndexes().count(), model.rowCount()); - + QPoint p = view.visualRect(model.index(model.rowCount() - 1)).center() + QPoint(0, 20); //first the left button @@ -1876,5 +1877,19 @@ void tst_QListView::taskQTBUG_435_deselectOnViewportClick() QVERIFY(!view.selectionModel()->hasSelection()); } +void tst_QListView::taskQTBUG_2678_spacingAndWrappedText() +{ + static const QString lorem("Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."); + QStringListModel model(QStringList() << lorem << lorem << "foo" << lorem << "bar" << lorem << lorem); + QListView w; + w.setModel(&model); + w.setViewMode(QListView::ListMode); + w.setWordWrap(true); + w.setSpacing(10); + w.show(); + QTest::qWaitForWindowShown(&w); + QCOMPARE(w.horizontalScrollBar()->minimum(), w.horizontalScrollBar()->maximum()); +} + QTEST_MAIN(tst_QListView) #include "tst_qlistview.moc" diff --git a/tests/auto/qmatrixnxn/tst_qmatrixnxn.cpp b/tests/auto/qmatrixnxn/tst_qmatrixnxn.cpp index ff5e00f..d6d217f2 100644 --- a/tests/auto/qmatrixnxn/tst_qmatrixnxn.cpp +++ b/tests/auto/qmatrixnxn/tst_qmatrixnxn.cpp @@ -151,14 +151,8 @@ private slots: void convertGeneric(); - void extractAxisRotation_data(); - void extractAxisRotation(); - - void extractTranslation_data(); - void extractTranslation(); - - void inferSpecialType_data(); - void inferSpecialType(); + void optimize_data(); + void optimize(); void columnsAndRows(); @@ -515,13 +509,13 @@ void tst_QMatrixNxN::create2x2() m5 = m3; QVERIFY(isSame(m5, uniqueValues2)); - m5.setIdentity(); + m5.setToIdentity(); QVERIFY(isIdentity(m5)); QMatrix2x2 m6(uniqueValues2); QVERIFY(isSame(m6, uniqueValues2)); qreal vals[4]; - m6.toValueArray(vals); + m6.copyDataTo(vals); for (int index = 0; index < 4; ++index) QCOMPARE(vals[index], uniqueValues2[index]); } @@ -550,13 +544,13 @@ void tst_QMatrixNxN::create3x3() m5 = m3; QVERIFY(isSame(m5, uniqueValues3)); - m5.setIdentity(); + m5.setToIdentity(); QVERIFY(isIdentity(m5)); QMatrix3x3 m6(uniqueValues3); QVERIFY(isSame(m6, uniqueValues3)); qreal vals[9]; - m6.toValueArray(vals); + m6.copyDataTo(vals); for (int index = 0; index < 9; ++index) QCOMPARE(vals[index], uniqueValues3[index]); } @@ -585,13 +579,13 @@ void tst_QMatrixNxN::create4x4() m5 = m3; QVERIFY(isSame(m5, uniqueValues4)); - m5.setIdentity(); + m5.setToIdentity(); QVERIFY(isIdentity(m5)); QMatrix4x4 m6(uniqueValues4); QVERIFY(isSame(m6, uniqueValues4)); qreal vals[16]; - m6.toValueArray(vals); + m6.copyDataTo(vals); for (int index = 0; index < 16; ++index) QCOMPARE(vals[index], uniqueValues4[index]); @@ -627,13 +621,13 @@ void tst_QMatrixNxN::create4x3() m5 = m3; QVERIFY(isSame(m5, uniqueValues4x3)); - m5.setIdentity(); + m5.setToIdentity(); QVERIFY(isIdentity(m5)); QMatrix4x3 m6(uniqueValues4x3); QVERIFY(isSame(m6, uniqueValues4x3)); qreal vals[12]; - m6.toValueArray(vals); + m6.copyDataTo(vals); for (int index = 0; index < 12; ++index) QCOMPARE(vals[index], uniqueValues4x3[index]); } @@ -802,7 +796,7 @@ void tst_QMatrixNxN::transposed4x3() QMatrix4x3 m3(uniqueValues4x3); QMatrix3x4 m4 = m3.transposed(); qreal values[12]; - m4.toValueArray(values); + m4.copyDataTo(values); for (int index = 0; index < 12; ++index) QCOMPARE(values[index], transposedValues3x4[index]); } @@ -1296,7 +1290,7 @@ void tst_QMatrixNxN::multiply4x3() QGenericMatrix<3, 3, qreal> m4; m4 = m1 * m2; qreal values[9]; - m4.toValueArray(values); + m4.copyDataTo(values); for (int index = 0; index < 9; ++index) QCOMPARE(values[index], ((const qreal *)m3Values)[index]); } @@ -1898,7 +1892,7 @@ void tst_QMatrixNxN::inverted4x4() } // Test again, after inferring the special matrix type. - m1.inferSpecialType(); + m1.optimize(); m2 = m1.inverted(&inv); QVERIFY(isSame(m2, (const qreal *)m2Values)); QCOMPARE(inv, invertible); @@ -1913,12 +1907,12 @@ void tst_QMatrixNxN::orthonormalInverse4x4() m2.rotate(45.0, 1.0, 0.0, 0.0); m2.translate(10.0, 0.0, 0.0); - // Use inferSpecialType() to drop the internal flags that + // Use optimize() to drop the internal flags that // mark the matrix as orthonormal. This will force inverted() // to compute m3.inverted() the long way. We can then compare // the result to what the faster algorithm produces on m2. QMatrix4x4 m3 = m2; - m3.inferSpecialType(); + m3.optimize(); bool invertible; QVERIFY(qFuzzyCompare(m2.inverted(&invertible), m3.inverted())); QVERIFY(invertible); @@ -1926,7 +1920,7 @@ void tst_QMatrixNxN::orthonormalInverse4x4() QMatrix4x4 m4; m4.rotate(45.0, 0.0, 1.0, 0.0); QMatrix4x4 m5 = m4; - m5.inferSpecialType(); + m5.optimize(); QVERIFY(qFuzzyCompare(m4.inverted(), m5.inverted())); QMatrix4x4 m6; @@ -1934,7 +1928,7 @@ void tst_QMatrixNxN::orthonormalInverse4x4() m1.translate(-20.0, 20.0, 15.0); m1.rotate(25, 1.0, 0.0, 0.0); QMatrix4x4 m7 = m6; - m7.inferSpecialType(); + m7.optimize(); QVERIFY(qFuzzyCompare(m6.inverted(), m7.inverted())); } @@ -2081,7 +2075,7 @@ void tst_QMatrixNxN::scale4x4() m8.scale(x); QVERIFY(isSame(m8, (const qreal *)resultValues)); - m8.inferSpecialType(); + m8.optimize(); m8.scale(1.0f); QVERIFY(isSame(m8, (const qreal *)resultValues)); @@ -2412,7 +2406,7 @@ void tst_QMatrixNxN::rotate4x4() if (x != 0 || y != 0 || z != 0) { QQuaternion q = QQuaternion::fromAxisAndAngle(QVector3D(x, y, z), angle); - QVector3D vq = q.rotateVector(v1); + QVector3D vq = q.rotatedVector(v1); QVERIFY(fuzzyCompare(vq.x(), v1x)); QVERIFY(fuzzyCompare(vq.y(), v1y)); QVERIFY(fuzzyCompare(vq.z(), v1z)); @@ -2509,7 +2503,7 @@ void tst_QMatrixNxN::normalMatrix() // Perform the test again, after inferring special matrix types. // This tests the optimized paths in the normalMatrix() function. - m1.inferSpecialType(); + m1.optimize(); n1 = m1.normalMatrix(); if (invertible) @@ -2850,120 +2844,6 @@ void tst_QMatrixNxN::convertGeneric() QVERIFY(isSame(m11, conv4x4)); } -void tst_QMatrixNxN::extractAxisRotation_data() -{ - QTest::addColumn<float>("x"); - QTest::addColumn<float>("y"); - QTest::addColumn<float>("z"); - QTest::addColumn<float>("angle"); - - QTest::newRow("1, 0, 0, 0 deg") << 1.0f << 0.0f << 0.0f << 0.0f; - QTest::newRow("1, 0, 0, 90 deg") << 1.0f << 0.0f << 0.0f << 90.0f; - QTest::newRow("1, 0, 0, 270 deg") << 1.0f << 0.0f << 0.0f << 270.0f; - QTest::newRow("1, 0, 0, 45 deg") << 1.0f << 0.0f << 0.0f << 45.0f; - QTest::newRow("1, 0, 0, 120 deg") << 1.0f << 0.0f << 0.0f << 120.0f; - QTest::newRow("1, 0, 0, 300 deg") << 1.0f << 0.0f << 0.0f << 300.0f; - - QTest::newRow("0, 1, 0, 90 deg") << 0.0f << 1.0f << 0.0f << 90.0f; - QTest::newRow("0, 1, 0, 270 deg") << 0.0f << 1.0f << 0.0f << 270.0f; - QTest::newRow("0, 1, 0, 45 deg") << 0.0f << 1.0f << 0.0f << 45.0f; - QTest::newRow("0, 1, 0, 120 deg") << 0.0f << 1.0f << 0.0f << 120.0f; - QTest::newRow("0, 1, 0, 300 deg") << 0.0f << 1.0f << 0.0f << 300.0f; - - QTest::newRow("0, 0, 1, 90 deg") << 0.0f << 0.0f << 1.0f << 90.0f; - QTest::newRow("0, 0, 1, 270 deg") << 0.0f << 0.0f << 1.0f << 270.0f; - QTest::newRow("0, 0, 1, 45 deg") << 0.0f << 0.0f << 1.0f << 45.0f; - QTest::newRow("0, 0, 1, 120 deg") << 0.0f << 0.0f << 1.0f << 120.0f; - QTest::newRow("0, 0, 1, 300 deg") << 0.0f << 0.0f << 1.0f << 300.0f; - - QTest::newRow("1, 1, 1, 90 deg") << 1.0f << 1.0f << 1.0f << 90.0f; - QTest::newRow("1, 1, 1, 270 deg") << 1.0f << 1.0f << 1.0f << 270.0f; - QTest::newRow("1, 1, 1, 45 deg") << 1.0f << 1.0f << 1.0f << 45.0f; - QTest::newRow("1, 1, 1, 120 deg") << 1.0f << 1.0f << 1.0f << 120.0f; - QTest::newRow("1, 1, 1, 300 deg") << 1.0f << 1.0f << 1.0f << 300.0f; -} - -void tst_QMatrixNxN::extractAxisRotation() -{ - QFETCH(float, x); - QFETCH(float, y); - QFETCH(float, z); - QFETCH(float, angle); - - QMatrix4x4 m; - QVector3D origAxis(x, y, z); - - m.rotate(angle, x, y, z); - - origAxis.normalize(); - QVector3D extractedAxis; - qreal extractedAngle; - - m.extractAxisRotation(extractedAngle, extractedAxis); - - if (angle > 180) { - QVERIFY(fuzzyCompare(360.0f - angle, extractedAngle)); - QVERIFY(fuzzyCompare(extractedAxis, -origAxis)); - } else { - QVERIFY(fuzzyCompare(angle, extractedAngle)); - QVERIFY(fuzzyCompare(extractedAxis, origAxis)); - } -} - -void tst_QMatrixNxN::extractTranslation_data() -{ - QTest::addColumn<QMatrix4x4>("rotation"); - QTest::addColumn<float>("x"); - QTest::addColumn<float>("y"); - QTest::addColumn<float>("z"); - - static QMatrix4x4 m1; - - QTest::newRow("identity, 100, 50, 25") - << m1 << 100.0f << 50.0f << 250.0f; - - m1.rotate(45.0, 1.0, 0.0, 0.0); - QTest::newRow("rotX 45 + 100, 50, 25") << m1 << 100.0f << 50.0f << 25.0f; - - m1.setIdentity(); - m1.rotate(45.0, 0.0, 1.0, 0.0); - QTest::newRow("rotY 45 + 100, 50, 25") << m1 << 100.0f << 50.0f << 25.0f; - - m1.setIdentity(); - m1.rotate(75, 0.0, 0.0, 1.0); - m1.rotate(25, 1.0, 0.0, 0.0); - m1.rotate(45, 0.0, 1.0, 0.0); - QTest::newRow("rotZ 75, rotX 25, rotY 45, 100, 50, 25") << m1 << 100.0f << 50.0f << 25.0f; -} - -void tst_QMatrixNxN::extractTranslation() -{ - QFETCH(QMatrix4x4, rotation); - QFETCH(float, x); - QFETCH(float, y); - QFETCH(float, z); - - rotation.translate(x, y, z); - - QVector3D vec = rotation.extractTranslation(); - - QVERIFY(fuzzyCompare(vec.x(), x)); - QVERIFY(fuzzyCompare(vec.y(), y)); - QVERIFY(fuzzyCompare(vec.z(), z)); - - QMatrix4x4 lookAt; - QVector3D eye(1.5f, -2.5f, 2.5f); - lookAt.lookAt(eye, - QVector3D(10.0f, 10.0f, 10.0f), - QVector3D(0.0f, 1.0f, 0.0f)); - - QVector3D extEye = lookAt.extractTranslation(); - - QVERIFY(fuzzyCompare(eye.x(), -extEye.x())); - QVERIFY(fuzzyCompare(eye.y(), -extEye.y())); - QVERIFY(fuzzyCompare(eye.z(), -extEye.z())); -} - // Copy of "flagBits" in qmatrix4x4.h. enum { Identity = 0x0001, // Identity matrix @@ -2981,7 +2861,7 @@ struct Matrix4x4 }; // Test the inferring of special matrix types. -void tst_QMatrixNxN::inferSpecialType_data() +void tst_QMatrixNxN::optimize_data() { QTest::addColumn<void *>("mValues"); QTest::addColumn<int>("flagBits"); @@ -3029,13 +2909,13 @@ void tst_QMatrixNxN::inferSpecialType_data() QTest::newRow("below") << (void *)belowValues << (int)General; } -void tst_QMatrixNxN::inferSpecialType() +void tst_QMatrixNxN::optimize() { QFETCH(void *, mValues); QFETCH(int, flagBits); QMatrix4x4 m((const qreal *)mValues); - m.inferSpecialType(); + m.optimize(); QCOMPARE(reinterpret_cast<Matrix4x4 *>(&m)->flagBits, flagBits); } @@ -3362,7 +3242,7 @@ void tst_QMatrixNxN::mapVector() QFETCH(void *, mValues); QMatrix4x4 m1((const qreal *)mValues); - m1.inferSpecialType(); + m1.optimize(); QVector3D v(3.5f, -1.0f, 2.5f); diff --git a/tests/auto/qpainter/tst_qpainter.cpp b/tests/auto/qpainter/tst_qpainter.cpp index 8ed83cb..4d2c626 100644 --- a/tests/auto/qpainter/tst_qpainter.cpp +++ b/tests/auto/qpainter/tst_qpainter.cpp @@ -239,9 +239,12 @@ private slots: void taskQT4444_dontOverflowDashOffset(); void painterBegin(); + void setPenColorOnImage(); + void setPenColorOnPixmap(); private: void fillData(); + void setPenColor(QPainter& p); QColor baseColor( int k, int intensity=255 ); QImage getResImage( const QString &dir, const QString &addition, const QString &extension ); QBitmap getBitmap( const QString &dir, const QString &filename, bool mask ); @@ -4193,9 +4196,9 @@ void tst_QPainter::extendedBlendModes() QVERIFY(testCompositionMode(255, 255, 255, QPainter::CompositionMode_SoftLight)); QVERIFY(testCompositionMode( 0, 0, 0, QPainter::CompositionMode_SoftLight)); - QVERIFY(testCompositionMode(127, 127, 127, QPainter::CompositionMode_SoftLight)); - QVERIFY(testCompositionMode( 63, 63, 86, QPainter::CompositionMode_SoftLight)); - QVERIFY(testCompositionMode(127, 63, 63, QPainter::CompositionMode_SoftLight)); + QVERIFY(testCompositionMode(127, 127, 126, QPainter::CompositionMode_SoftLight)); + QVERIFY(testCompositionMode( 63, 63, 39, QPainter::CompositionMode_SoftLight)); + QVERIFY(testCompositionMode(127, 63, 62, QPainter::CompositionMode_SoftLight)); QVERIFY(testCompositionMode(255, 255, 0, QPainter::CompositionMode_Difference)); QVERIFY(testCompositionMode( 0, 0, 0, QPainter::CompositionMode_Difference)); @@ -4352,5 +4355,41 @@ void tst_QPainter::painterBegin() QVERIFY(!p.end()); } +void tst_QPainter::setPenColor(QPainter& p) +{ + p.setPen(Qt::NoPen); + + // Setting color, then style + // Should work even though the pen is "NoPen with color", temporarily. + QPen newPen(p.pen()); + newPen.setColor(Qt::red); + QCOMPARE(p.pen().style(), newPen.style()); + QCOMPARE(p.pen().style(), Qt::NoPen); + p.setPen(newPen); + + QCOMPARE(p.pen().color().name(), QString("#ff0000")); + + QPen newPen2(p.pen()); + newPen2.setStyle(Qt::SolidLine); + p.setPen(newPen2); + + QCOMPARE(p.pen().color().name(), QString("#ff0000")); +} + +void tst_QPainter::setPenColorOnImage() +{ + QImage img(QSize(10, 10), QImage::Format_ARGB32_Premultiplied); + QPainter p(&img); + setPenColor(p); +} + +void tst_QPainter::setPenColorOnPixmap() +{ + QPixmap pix(10, 10); + QPainter p(&pix); + setPenColor(p); +} + QTEST_MAIN(tst_QPainter) + #include "tst_qpainter.moc" diff --git a/tests/auto/qparallelanimationgroup/tst_qparallelanimationgroup.cpp b/tests/auto/qparallelanimationgroup/tst_qparallelanimationgroup.cpp index 8d937e9..a26e0eb 100644 --- a/tests/auto/qparallelanimationgroup/tst_qparallelanimationgroup.cpp +++ b/tests/auto/qparallelanimationgroup/tst_qparallelanimationgroup.cpp @@ -119,8 +119,8 @@ class TestAnimation : public QVariantAnimation Q_OBJECT public: virtual void updateCurrentValue(const QVariant &value) { Q_UNUSED(value)}; - virtual void updateState(QAbstractAnimation::State oldState, - QAbstractAnimation::State newState) + virtual void updateState(QAbstractAnimation::State newState, + QAbstractAnimation::State oldState) { Q_UNUSED(oldState) Q_UNUSED(newState) @@ -135,8 +135,8 @@ public: TestAnimation2(int duration, QAbstractAnimation *animation) : QVariantAnimation(animation), m_duration(duration) {} virtual void updateCurrentValue(const QVariant &value) { Q_UNUSED(value)}; - virtual void updateState(QAbstractAnimation::State oldState, - QAbstractAnimation::State newState) + virtual void updateState(QAbstractAnimation::State newState, + QAbstractAnimation::State oldState) { Q_UNUSED(oldState) Q_UNUSED(newState) @@ -223,33 +223,33 @@ void tst_QParallelAnimationGroup::setCurrentTime() QCOMPARE(notTimeDriven->state(), QAnimationGroup::Stopped); QCOMPARE(loopsForever->state(), QAnimationGroup::Stopped); - QCOMPARE(group.currentTime(), 1); - QCOMPARE(a1_p_o1->currentTime(), 1); - QCOMPARE(a1_p_o2->currentTime(), 1); - QCOMPARE(a1_p_o3->currentTime(), 1); - QCOMPARE(notTimeDriven->currentTime(), 1); - QCOMPARE(loopsForever->currentTime(), 1); + QCOMPARE(group.currentLoopTime(), 1); + QCOMPARE(a1_p_o1->currentLoopTime(), 1); + QCOMPARE(a1_p_o2->currentLoopTime(), 1); + QCOMPARE(a1_p_o3->currentLoopTime(), 1); + QCOMPARE(notTimeDriven->currentLoopTime(), 1); + QCOMPARE(loopsForever->currentLoopTime(), 1); // Current time = 250 group.setCurrentTime(250); - QCOMPARE(group.currentTime(), 250); - QCOMPARE(a1_p_o1->currentTime(), 250); - QCOMPARE(a1_p_o2->currentTime(), 0); + QCOMPARE(group.currentLoopTime(), 250); + QCOMPARE(a1_p_o1->currentLoopTime(), 250); + QCOMPARE(a1_p_o2->currentLoopTime(), 0); QCOMPARE(a1_p_o2->currentLoop(), 1); - QCOMPARE(a1_p_o3->currentTime(), 250); - QCOMPARE(notTimeDriven->currentTime(), 250); - QCOMPARE(loopsForever->currentTime(), 0); + QCOMPARE(a1_p_o3->currentLoopTime(), 250); + QCOMPARE(notTimeDriven->currentLoopTime(), 250); + QCOMPARE(loopsForever->currentLoopTime(), 0); QCOMPARE(loopsForever->currentLoop(), 1); // Current time = 251 group.setCurrentTime(251); - QCOMPARE(group.currentTime(), 251); - QCOMPARE(a1_p_o1->currentTime(), 250); - QCOMPARE(a1_p_o2->currentTime(), 1); + QCOMPARE(group.currentLoopTime(), 251); + QCOMPARE(a1_p_o1->currentLoopTime(), 250); + QCOMPARE(a1_p_o2->currentLoopTime(), 1); QCOMPARE(a1_p_o2->currentLoop(), 1); - QCOMPARE(a1_p_o3->currentTime(), 250); - QCOMPARE(notTimeDriven->currentTime(), 251); - QCOMPARE(loopsForever->currentTime(), 1); + QCOMPARE(a1_p_o3->currentLoopTime(), 250); + QCOMPARE(notTimeDriven->currentLoopTime(), 251); + QCOMPARE(loopsForever->currentLoopTime(), 1); } void tst_QParallelAnimationGroup::stateChanged() @@ -278,18 +278,18 @@ void tst_QParallelAnimationGroup::stateChanged() group.start(); //all the animations should be started QCOMPARE(spy1.count(), 1); - QCOMPARE(qVariantValue<QAbstractAnimation::State>(spy1.last().at(1)), TestAnimation::Running); + QCOMPARE(qVariantValue<QAbstractAnimation::State>(spy1.last().first()), TestAnimation::Running); QCOMPARE(spy2.count(), 1); - QCOMPARE(qVariantValue<QAbstractAnimation::State>(spy2.last().at(1)), TestAnimation::Running); + QCOMPARE(qVariantValue<QAbstractAnimation::State>(spy2.last().first()), TestAnimation::Running); QCOMPARE(spy3.count(), 1); - QCOMPARE(qVariantValue<QAbstractAnimation::State>(spy3.last().at(1)), TestAnimation::Running); + QCOMPARE(qVariantValue<QAbstractAnimation::State>(spy3.last().first()), TestAnimation::Running); QCOMPARE(spy4.count(), 1); - QCOMPARE(qVariantValue<QAbstractAnimation::State>(spy4.last().at(1)), TestAnimation::Running); + QCOMPARE(qVariantValue<QAbstractAnimation::State>(spy4.last().first()), TestAnimation::Running); group.setCurrentTime(1500); //anim1 should be finished QCOMPARE(group.state(), QAnimationGroup::Running); QCOMPARE(spy1.count(), 2); - QCOMPARE(qVariantValue<QAbstractAnimation::State>(spy1.last().at(1)), TestAnimation::Stopped); + QCOMPARE(qVariantValue<QAbstractAnimation::State>(spy1.last().first()), TestAnimation::Stopped); QCOMPARE(spy2.count(), 1); //no change QCOMPARE(spy3.count(), 1); //no change QCOMPARE(spy4.count(), 1); //no change @@ -298,7 +298,7 @@ void tst_QParallelAnimationGroup::stateChanged() QCOMPARE(group.state(), QAnimationGroup::Running); QCOMPARE(spy1.count(), 2); //no change QCOMPARE(spy2.count(), 2); - QCOMPARE(qVariantValue<QAbstractAnimation::State>(spy2.last().at(1)), TestAnimation::Stopped); + QCOMPARE(qVariantValue<QAbstractAnimation::State>(spy2.last().first()), TestAnimation::Stopped); QCOMPARE(spy3.count(), 1); //no change QCOMPARE(spy4.count(), 1); //no change @@ -307,9 +307,9 @@ void tst_QParallelAnimationGroup::stateChanged() QCOMPARE(spy1.count(), 2); //no change QCOMPARE(spy2.count(), 2); //no change QCOMPARE(spy3.count(), 2); - QCOMPARE(qVariantValue<QAbstractAnimation::State>(spy3.last().at(1)), TestAnimation::Stopped); + QCOMPARE(qVariantValue<QAbstractAnimation::State>(spy3.last().first()), TestAnimation::Stopped); QCOMPARE(spy4.count(), 2); - QCOMPARE(qVariantValue<QAbstractAnimation::State>(spy4.last().at(1)), TestAnimation::Stopped); + QCOMPARE(qVariantValue<QAbstractAnimation::State>(spy4.last().first()), TestAnimation::Stopped); //cleanup spy1.clear(); @@ -326,22 +326,22 @@ void tst_QParallelAnimationGroup::stateChanged() QCOMPARE(spy1.count(), 0); QCOMPARE(spy2.count(), 0); QCOMPARE(spy3.count(), 1); - QCOMPARE(qVariantValue<QAbstractAnimation::State>(spy3.last().at(1)), TestAnimation::Running); + QCOMPARE(qVariantValue<QAbstractAnimation::State>(spy3.last().first()), TestAnimation::Running); QCOMPARE(spy4.count(), 1); - QCOMPARE(qVariantValue<QAbstractAnimation::State>(spy4.last().at(1)), TestAnimation::Running); + QCOMPARE(qVariantValue<QAbstractAnimation::State>(spy4.last().first()), TestAnimation::Running); group.setCurrentTime(1500); //anim2 should be started QCOMPARE(group.state(), QAnimationGroup::Running); QCOMPARE(spy1.count(), 0); //no change QCOMPARE(spy2.count(), 1); - QCOMPARE(qVariantValue<QAbstractAnimation::State>(spy2.last().at(1)), TestAnimation::Running); + QCOMPARE(qVariantValue<QAbstractAnimation::State>(spy2.last().first()), TestAnimation::Running); QCOMPARE(spy3.count(), 1); //no change QCOMPARE(spy4.count(), 1); //no change group.setCurrentTime(500); //anim1 is finally also started QCOMPARE(group.state(), QAnimationGroup::Running); QCOMPARE(spy1.count(), 1); - QCOMPARE(qVariantValue<QAbstractAnimation::State>(spy1.last().at(1)), TestAnimation::Running); + QCOMPARE(qVariantValue<QAbstractAnimation::State>(spy1.last().first()), TestAnimation::Running); QCOMPARE(spy2.count(), 1); //no change QCOMPARE(spy3.count(), 1); //no change QCOMPARE(spy4.count(), 1); //no change @@ -349,13 +349,13 @@ void tst_QParallelAnimationGroup::stateChanged() group.setCurrentTime(0); //everything should be stopped QCOMPARE(group.state(), QAnimationGroup::Stopped); QCOMPARE(spy1.count(), 2); - QCOMPARE(qVariantValue<QAbstractAnimation::State>(spy1.last().at(1)), TestAnimation::Stopped); + QCOMPARE(qVariantValue<QAbstractAnimation::State>(spy1.last().first()), TestAnimation::Stopped); QCOMPARE(spy2.count(), 2); - QCOMPARE(qVariantValue<QAbstractAnimation::State>(spy2.last().at(1)), TestAnimation::Stopped); + QCOMPARE(qVariantValue<QAbstractAnimation::State>(spy2.last().first()), TestAnimation::Stopped); QCOMPARE(spy3.count(), 2); - QCOMPARE(qVariantValue<QAbstractAnimation::State>(spy3.last().at(1)), TestAnimation::Stopped); + QCOMPARE(qVariantValue<QAbstractAnimation::State>(spy3.last().first()), TestAnimation::Stopped); QCOMPARE(spy4.count(), 2); - QCOMPARE(qVariantValue<QAbstractAnimation::State>(spy4.last().at(1)), TestAnimation::Stopped); + QCOMPARE(qVariantValue<QAbstractAnimation::State>(spy4.last().first()), TestAnimation::Stopped); } void tst_QParallelAnimationGroup::clearGroup() @@ -375,9 +375,9 @@ void tst_QParallelAnimationGroup::clearGroup() children[i] = group.animationAt(i); } - group.clearAnimations(); + group.clear(); QCOMPARE(group.animationCount(), 0); - QCOMPARE(group.currentTime(), 0); + QCOMPARE(group.currentLoopTime(), 0); for (int i = 0; i < animationCount; ++i) QVERIFY(children[i].isNull()); } @@ -460,9 +460,9 @@ void tst_QParallelAnimationGroup::updateChildrenWithRunningGroup() QCOMPARE(groupStateChangedSpy.count(), 1); QCOMPARE(childStateChangedSpy.count(), 1); - QCOMPARE(qVariantValue<QAbstractAnimation::State>(groupStateChangedSpy.at(0).at(1)), + QCOMPARE(qVariantValue<QAbstractAnimation::State>(groupStateChangedSpy.at(0).first()), QAnimationGroup::Running); - QCOMPARE(qVariantValue<QAbstractAnimation::State>(childStateChangedSpy.at(0).at(1)), + QCOMPARE(qVariantValue<QAbstractAnimation::State>(childStateChangedSpy.at(0).first()), QAnimationGroup::Running); // starting directly a running child will not have any effect @@ -501,13 +501,13 @@ void tst_QParallelAnimationGroup::deleteChildrenWithRunningGroup() QCOMPARE(anim1->state(), QAnimationGroup::Running); QTest::qWait(80); - QVERIFY(group.currentTime() > 0); + QVERIFY(group.currentLoopTime() > 0); delete anim1; QVERIFY(group.animationCount() == 0); QCOMPARE(group.duration(), 0); QCOMPARE(group.state(), QAnimationGroup::Stopped); - QCOMPARE(group.currentTime(), 0); //that's the invariant + QCOMPARE(group.currentLoopTime(), 0); //that's the invariant } void tst_QParallelAnimationGroup::startChildrenWithStoppedGroup() @@ -622,11 +622,11 @@ void tst_QParallelAnimationGroup::startGroupWithRunningChild() anim2.start(); anim2.pause(); - QCOMPARE(qVariantValue<QAbstractAnimation::State>(stateChangedSpy1.at(0).at(1)), + QCOMPARE(qVariantValue<QAbstractAnimation::State>(stateChangedSpy1.at(0).first()), QAnimationGroup::Running); - QCOMPARE(qVariantValue<QAbstractAnimation::State>(stateChangedSpy2.at(0).at(1)), + QCOMPARE(qVariantValue<QAbstractAnimation::State>(stateChangedSpy2.at(0).first()), QAnimationGroup::Running); - QCOMPARE(qVariantValue<QAbstractAnimation::State>(stateChangedSpy2.at(1).at(1)), + QCOMPARE(qVariantValue<QAbstractAnimation::State>(stateChangedSpy2.at(1).first()), QAnimationGroup::Paused); QCOMPARE(group.state(), QAnimationGroup::Stopped); @@ -636,15 +636,15 @@ void tst_QParallelAnimationGroup::startGroupWithRunningChild() group.start(); QCOMPARE(stateChangedSpy1.count(), 3); - QCOMPARE(qVariantValue<QAbstractAnimation::State>(stateChangedSpy1.at(1).at(1)), + QCOMPARE(qVariantValue<QAbstractAnimation::State>(stateChangedSpy1.at(1).first()), QAnimationGroup::Stopped); - QCOMPARE(qVariantValue<QAbstractAnimation::State>(stateChangedSpy1.at(2).at(1)), + QCOMPARE(qVariantValue<QAbstractAnimation::State>(stateChangedSpy1.at(2).first()), QAnimationGroup::Running); QCOMPARE(stateChangedSpy2.count(), 4); - QCOMPARE(qVariantValue<QAbstractAnimation::State>(stateChangedSpy2.at(2).at(1)), + QCOMPARE(qVariantValue<QAbstractAnimation::State>(stateChangedSpy2.at(2).first()), QAnimationGroup::Stopped); - QCOMPARE(qVariantValue<QAbstractAnimation::State>(stateChangedSpy2.at(3).at(1)), + QCOMPARE(qVariantValue<QAbstractAnimation::State>(stateChangedSpy2.at(3).first()), QAnimationGroup::Running); QCOMPARE(group.state(), QAnimationGroup::Running); @@ -687,19 +687,19 @@ void tst_QParallelAnimationGroup::zeroDurationAnimation() group.start(); QCOMPARE(stateChangedSpy1.count(), 2); QCOMPARE(finishedSpy1.count(), 1); - QCOMPARE(qVariantValue<QAbstractAnimation::State>(stateChangedSpy1.at(0).at(1)), + QCOMPARE(qVariantValue<QAbstractAnimation::State>(stateChangedSpy1.at(0).first()), QAnimationGroup::Running); - QCOMPARE(qVariantValue<QAbstractAnimation::State>(stateChangedSpy1.at(1).at(1)), + QCOMPARE(qVariantValue<QAbstractAnimation::State>(stateChangedSpy1.at(1).first()), QAnimationGroup::Stopped); QCOMPARE(stateChangedSpy2.count(), 1); QCOMPARE(finishedSpy2.count(), 0); - QCOMPARE(qVariantValue<QAbstractAnimation::State>(stateChangedSpy1.at(0).at(1)), + QCOMPARE(qVariantValue<QAbstractAnimation::State>(stateChangedSpy1.at(0).first()), QAnimationGroup::Running); QCOMPARE(stateChangedSpy3.count(), 1); QCOMPARE(finishedSpy3.count(), 0); - QCOMPARE(qVariantValue<QAbstractAnimation::State>(stateChangedSpy3.at(0).at(1)), + QCOMPARE(qVariantValue<QAbstractAnimation::State>(stateChangedSpy3.at(0).first()), QAnimationGroup::Running); @@ -762,9 +762,9 @@ void tst_QParallelAnimationGroup::stopUncontrolledAnimations() group.start(); QCOMPARE(stateChangedSpy.count(), 2); - QCOMPARE(qVariantValue<QAbstractAnimation::State>(stateChangedSpy.at(0).at(1)), + QCOMPARE(qVariantValue<QAbstractAnimation::State>(stateChangedSpy.at(0).first()), QAnimationGroup::Running); - QCOMPARE(qVariantValue<QAbstractAnimation::State>(stateChangedSpy.at(1).at(1)), + QCOMPARE(qVariantValue<QAbstractAnimation::State>(stateChangedSpy.at(1).first()), QAnimationGroup::Stopped); QCOMPARE(group.state(), QAnimationGroup::Running); @@ -915,9 +915,9 @@ void tst_QParallelAnimationGroup::loopCount() group.setCurrentTime(currentGroupTime); - QCOMPARE(anim1.currentTime(), expected1.time); - QCOMPARE(anim2.currentTime(), expected2.time); - QCOMPARE(anim3.currentTime(), expected3.time); + QCOMPARE(anim1.currentLoopTime(), expected1.time); + QCOMPARE(anim2.currentLoopTime(), expected2.time); + QCOMPARE(anim3.currentLoopTime(), expected3.time); if (expected1.state >=0) QCOMPARE(int(anim1.state()), expected1.state); @@ -968,22 +968,22 @@ void tst_QParallelAnimationGroup::pauseResume() QCOMPARE(anim->state(), QAnimationGroup::Running); QCOMPARE(spy.count(), 1); spy.clear(); - const int currentTime = group.currentTime(); - QCOMPARE(anim->currentTime(), currentTime); + const int currentTime = group.currentLoopTime(); + QCOMPARE(anim->currentLoopTime(), currentTime); group.pause(); QCOMPARE(group.state(), QAnimationGroup::Paused); - QCOMPARE(group.currentTime(), currentTime); + QCOMPARE(group.currentLoopTime(), currentTime); QCOMPARE(anim->state(), QAnimationGroup::Paused); - QCOMPARE(anim->currentTime(), currentTime); + QCOMPARE(anim->currentLoopTime(), currentTime); QCOMPARE(spy.count(), 1); spy.clear(); group.resume(); QCOMPARE(group.state(), QAnimationGroup::Running); - QCOMPARE(group.currentTime(), currentTime); + QCOMPARE(group.currentLoopTime(), currentTime); QCOMPARE(anim->state(), QAnimationGroup::Running); - QCOMPARE(anim->currentTime(), currentTime); + QCOMPARE(anim->currentLoopTime(), currentTime); QCOMPARE(spy.count(), 1); group.stop(); @@ -991,10 +991,10 @@ void tst_QParallelAnimationGroup::pauseResume() new TestAnimation2(500, &group); group.start(); QCOMPARE(spy.count(), 1); //the animation should have been started - QCOMPARE(qVariantValue<QAbstractAnimation::State>(spy.last().at(1)), TestAnimation::Running); + QCOMPARE(qVariantValue<QAbstractAnimation::State>(spy.last().first()), TestAnimation::Running); group.setCurrentTime(250); //end of first animation QCOMPARE(spy.count(), 2); //the animation should have been stopped - QCOMPARE(qVariantValue<QAbstractAnimation::State>(spy.last().at(1)), TestAnimation::Stopped); + QCOMPARE(qVariantValue<QAbstractAnimation::State>(spy.last().first()), TestAnimation::Stopped); group.pause(); QCOMPARE(spy.count(), 2); //this shouldn't have changed group.resume(); diff --git a/tests/auto/qpropertyanimation/tst_qpropertyanimation.cpp b/tests/auto/qpropertyanimation/tst_qpropertyanimation.cpp index 56c1ced..f41fff1 100644 --- a/tests/auto/qpropertyanimation/tst_qpropertyanimation.cpp +++ b/tests/auto/qpropertyanimation/tst_qpropertyanimation.cpp @@ -225,7 +225,7 @@ void tst_QPropertyAnimation::setCurrentTime() animation.setLoopCount(loopCount); animation.setCurrentTime(currentTime); - QCOMPARE(animation.currentTime(), testCurrentTime); + QCOMPARE(animation.currentLoopTime(), testCurrentTime); QCOMPARE(animation.currentLoop(), testCurrentLoop); } @@ -280,7 +280,7 @@ void tst_QPropertyAnimation::statesAndSignals() QCOMPARE(anim->state(), QAnimationGroup::Stopped); QCOMPARE(runningSpy.count(), 1); //anim must have stopped QCOMPARE(finishedSpy.count(), 0); - QCOMPARE(anim->currentTime(), 0); + QCOMPARE(anim->currentLoopTime(), 0); QCOMPARE(anim->currentLoop(), 0); QCOMPARE(currentLoopSpy.count(), 2); runningSpy.clear(); @@ -291,7 +291,7 @@ void tst_QPropertyAnimation::statesAndSignals() QCOMPARE(runningSpy.count(), 2); //started and stopped again runningSpy.clear(); QCOMPARE(finishedSpy.count(), 1); - QCOMPARE(anim->currentTime(), 100); + QCOMPARE(anim->currentLoopTime(), 100); QCOMPARE(anim->currentLoop(), 2); QCOMPARE(currentLoopSpy.count(), 4); @@ -312,7 +312,7 @@ void tst_QPropertyAnimation::statesAndSignals() QCOMPARE(anim->currentLoop(), 2); QCOMPARE(runningSpy.count(), 1); // anim has stopped QCOMPARE(finishedSpy.count(), 2); - QCOMPARE(anim->currentTime(), 100); + QCOMPARE(anim->currentLoopTime(), 100); delete anim; } @@ -864,16 +864,16 @@ void tst_QPropertyAnimation::zeroDurationStart() //let's check the first state change const QVariantList firstChange = spy.first(); //old state - QCOMPARE(qVariantValue<QAbstractAnimation::State>(firstChange.first()), QAbstractAnimation::Stopped); + QCOMPARE(qVariantValue<QAbstractAnimation::State>(firstChange.last()), QAbstractAnimation::Stopped); //new state - QCOMPARE(qVariantValue<QAbstractAnimation::State>(firstChange.last()), QAbstractAnimation::Running); + QCOMPARE(qVariantValue<QAbstractAnimation::State>(firstChange.first()), QAbstractAnimation::Running); //let's check the first state change const QVariantList secondChange = spy.last(); //old state - QCOMPARE(qVariantValue<QAbstractAnimation::State>(secondChange.first()), QAbstractAnimation::Running); + QCOMPARE(qVariantValue<QAbstractAnimation::State>(secondChange.last()), QAbstractAnimation::Running); //new state - QCOMPARE(qVariantValue<QAbstractAnimation::State>(secondChange.last()), QAbstractAnimation::Stopped); + QCOMPARE(qVariantValue<QAbstractAnimation::State>(secondChange.first()), QAbstractAnimation::Stopped); } #define Pause 1 @@ -1171,9 +1171,9 @@ public: innerAnim->start(); } - void updateState(QAbstractAnimation::State oldState, QAbstractAnimation::State newState) + void updateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState) { - QPropertyAnimation::updateState(oldState, newState); + QPropertyAnimation::updateState(newState, oldState); if (newState == QAbstractAnimation::Stopped) delete innerAnim; } diff --git a/tests/auto/qsequentialanimationgroup/tst_qsequentialanimationgroup.cpp b/tests/auto/qsequentialanimationgroup/tst_qsequentialanimationgroup.cpp index f6afc5b..28fccac 100644 --- a/tests/auto/qsequentialanimationgroup/tst_qsequentialanimationgroup.cpp +++ b/tests/auto/qsequentialanimationgroup/tst_qsequentialanimationgroup.cpp @@ -87,7 +87,7 @@ private slots: void currentAnimation(); void currentAnimationWithZeroDuration(); void insertAnimation(); - void clearAnimations(); + void clear(); void pauseResume(); }; @@ -134,8 +134,8 @@ class TestAnimation : public QVariantAnimation Q_OBJECT public: virtual void updateCurrentValue(const QVariant &value) { Q_UNUSED(value)}; - virtual void updateState(QAbstractAnimation::State oldState, - QAbstractAnimation::State newState) + virtual void updateState(QAbstractAnimation::State newState, + QAbstractAnimation::State oldState) { Q_UNUSED(oldState) Q_UNUSED(newState) @@ -208,119 +208,119 @@ void tst_QSequentialAnimationGroup::setCurrentTime() QCOMPARE(sequence2->state(), QAnimationGroup::Stopped); QCOMPARE(a1_s_o2->state(), QAnimationGroup::Stopped); - QCOMPARE(group.currentTime(), 1); - QCOMPARE(sequence->currentTime(), 1); - QCOMPARE(a1_s_o1->currentTime(), 1); - QCOMPARE(a2_s_o1->currentTime(), 0); - QCOMPARE(a3_s_o1->currentTime(), 0); - QCOMPARE(a1_s_o2->currentTime(), 0); - QCOMPARE(a1_s_o3->currentTime(), 0); + QCOMPARE(group.currentLoopTime(), 1); + QCOMPARE(sequence->currentLoopTime(), 1); + QCOMPARE(a1_s_o1->currentLoopTime(), 1); + QCOMPARE(a2_s_o1->currentLoopTime(), 0); + QCOMPARE(a3_s_o1->currentLoopTime(), 0); + QCOMPARE(a1_s_o2->currentLoopTime(), 0); + QCOMPARE(a1_s_o3->currentLoopTime(), 0); // Current time = 250 group.setCurrentTime(250); - QCOMPARE(group.currentTime(), 250); - QCOMPARE(sequence->currentTime(), 250); - QCOMPARE(a1_s_o1->currentTime(), 250); - QCOMPARE(a2_s_o1->currentTime(), 0); - QCOMPARE(a3_s_o1->currentTime(), 0); - QCOMPARE(a1_s_o2->currentTime(), 0); - QCOMPARE(a1_s_o3->currentTime(), 0); + QCOMPARE(group.currentLoopTime(), 250); + QCOMPARE(sequence->currentLoopTime(), 250); + QCOMPARE(a1_s_o1->currentLoopTime(), 250); + QCOMPARE(a2_s_o1->currentLoopTime(), 0); + QCOMPARE(a3_s_o1->currentLoopTime(), 0); + QCOMPARE(a1_s_o2->currentLoopTime(), 0); + QCOMPARE(a1_s_o3->currentLoopTime(), 0); // Current time = 251 group.setCurrentTime(251); - QCOMPARE(group.currentTime(), 251); - QCOMPARE(sequence->currentTime(), 251); - QCOMPARE(a1_s_o1->currentTime(), 250); - QCOMPARE(a2_s_o1->currentTime(), 1); + QCOMPARE(group.currentLoopTime(), 251); + QCOMPARE(sequence->currentLoopTime(), 251); + QCOMPARE(a1_s_o1->currentLoopTime(), 250); + QCOMPARE(a2_s_o1->currentLoopTime(), 1); QCOMPARE(a2_s_o1->currentLoop(), 0); - QCOMPARE(a3_s_o1->currentTime(), 0); - QCOMPARE(sequence2->currentTime(), 0); - QCOMPARE(a1_s_o2->currentTime(), 0); - QCOMPARE(a1_s_o3->currentTime(), 0); + QCOMPARE(a3_s_o1->currentLoopTime(), 0); + QCOMPARE(sequence2->currentLoopTime(), 0); + QCOMPARE(a1_s_o2->currentLoopTime(), 0); + QCOMPARE(a1_s_o3->currentLoopTime(), 0); // Current time = 750 group.setCurrentTime(750); - QCOMPARE(group.currentTime(), 750); - QCOMPARE(sequence->currentTime(), 750); - QCOMPARE(a1_s_o1->currentTime(), 250); - QCOMPARE(a2_s_o1->currentTime(), 0); + QCOMPARE(group.currentLoopTime(), 750); + QCOMPARE(sequence->currentLoopTime(), 750); + QCOMPARE(a1_s_o1->currentLoopTime(), 250); + QCOMPARE(a2_s_o1->currentLoopTime(), 0); QCOMPARE(a2_s_o1->currentLoop(), 2); - QCOMPARE(a3_s_o1->currentTime(), 0); - QCOMPARE(sequence2->currentTime(), 0); - QCOMPARE(a1_s_o2->currentTime(), 0); - QCOMPARE(a1_s_o3->currentTime(), 0); + QCOMPARE(a3_s_o1->currentLoopTime(), 0); + QCOMPARE(sequence2->currentLoopTime(), 0); + QCOMPARE(a1_s_o2->currentLoopTime(), 0); + QCOMPARE(a1_s_o3->currentLoopTime(), 0); // Current time = 1000 group.setCurrentTime(1000); - QCOMPARE(group.currentTime(), 1000); - QCOMPARE(sequence->currentTime(), 1000); - QCOMPARE(a1_s_o1->currentTime(), 250); - QCOMPARE(a2_s_o1->currentTime(), 250); + QCOMPARE(group.currentLoopTime(), 1000); + QCOMPARE(sequence->currentLoopTime(), 1000); + QCOMPARE(a1_s_o1->currentLoopTime(), 250); + QCOMPARE(a2_s_o1->currentLoopTime(), 250); QCOMPARE(a2_s_o1->currentLoop(), 2); - QCOMPARE(a3_s_o1->currentTime(), 0); - QCOMPARE(sequence2->currentTime(), 0); - QCOMPARE(a1_s_o2->currentTime(), 0); - QCOMPARE(a1_s_o3->currentTime(), 0); + QCOMPARE(a3_s_o1->currentLoopTime(), 0); + QCOMPARE(sequence2->currentLoopTime(), 0); + QCOMPARE(a1_s_o2->currentLoopTime(), 0); + QCOMPARE(a1_s_o3->currentLoopTime(), 0); // Current time = 1010 group.setCurrentTime(1010); - QCOMPARE(group.currentTime(), 1010); - QCOMPARE(sequence->currentTime(), 1010); - QCOMPARE(a1_s_o1->currentTime(), 250); - QCOMPARE(a2_s_o1->currentTime(), 250); + QCOMPARE(group.currentLoopTime(), 1010); + QCOMPARE(sequence->currentLoopTime(), 1010); + QCOMPARE(a1_s_o1->currentLoopTime(), 250); + QCOMPARE(a2_s_o1->currentLoopTime(), 250); QCOMPARE(a2_s_o1->currentLoop(), 2); - QCOMPARE(a3_s_o1->currentTime(), 10); - QCOMPARE(sequence2->currentTime(), 0); - QCOMPARE(a1_s_o2->currentTime(), 0); - QCOMPARE(a1_s_o3->currentTime(), 0); + QCOMPARE(a3_s_o1->currentLoopTime(), 10); + QCOMPARE(sequence2->currentLoopTime(), 0); + QCOMPARE(a1_s_o2->currentLoopTime(), 0); + QCOMPARE(a1_s_o3->currentLoopTime(), 0); // Current time = 1250 group.setCurrentTime(1250); - QCOMPARE(group.currentTime(), 1250); - QCOMPARE(sequence->currentTime(), 1250); - QCOMPARE(a1_s_o1->currentTime(), 250); - QCOMPARE(a2_s_o1->currentTime(), 250); + QCOMPARE(group.currentLoopTime(), 1250); + QCOMPARE(sequence->currentLoopTime(), 1250); + QCOMPARE(a1_s_o1->currentLoopTime(), 250); + QCOMPARE(a2_s_o1->currentLoopTime(), 250); QCOMPARE(a2_s_o1->currentLoop(), 2); - QCOMPARE(a3_s_o1->currentTime(), 250); - QCOMPARE(sequence2->currentTime(), 0); - QCOMPARE(a1_s_o2->currentTime(), 0); - QCOMPARE(a1_s_o3->currentTime(), 0); + QCOMPARE(a3_s_o1->currentLoopTime(), 250); + QCOMPARE(sequence2->currentLoopTime(), 0); + QCOMPARE(a1_s_o2->currentLoopTime(), 0); + QCOMPARE(a1_s_o3->currentLoopTime(), 0); // Current time = 1500 group.setCurrentTime(1500); - QCOMPARE(group.currentTime(), 1500); - QCOMPARE(sequence->currentTime(), 1250); - QCOMPARE(a1_s_o1->currentTime(), 250); - QCOMPARE(a2_s_o1->currentTime(), 250); + QCOMPARE(group.currentLoopTime(), 1500); + QCOMPARE(sequence->currentLoopTime(), 1250); + QCOMPARE(a1_s_o1->currentLoopTime(), 250); + QCOMPARE(a2_s_o1->currentLoopTime(), 250); QCOMPARE(a2_s_o1->currentLoop(), 2); - QCOMPARE(a3_s_o1->currentTime(), 250); - QCOMPARE(sequence2->currentTime(), 250); - QCOMPARE(a1_s_o2->currentTime(), 250); - QCOMPARE(a1_s_o3->currentTime(), 0); + QCOMPARE(a3_s_o1->currentLoopTime(), 250); + QCOMPARE(sequence2->currentLoopTime(), 250); + QCOMPARE(a1_s_o2->currentLoopTime(), 250); + QCOMPARE(a1_s_o3->currentLoopTime(), 0); // Current time = 1750 group.setCurrentTime(1750); - QCOMPARE(group.currentTime(), 1750); - QCOMPARE(sequence->currentTime(), 1250); - QCOMPARE(a1_s_o1->currentTime(), 250); - QCOMPARE(a2_s_o1->currentTime(), 250); + QCOMPARE(group.currentLoopTime(), 1750); + QCOMPARE(sequence->currentLoopTime(), 1250); + QCOMPARE(a1_s_o1->currentLoopTime(), 250); + QCOMPARE(a2_s_o1->currentLoopTime(), 250); QCOMPARE(a2_s_o1->currentLoop(), 2); - QCOMPARE(a3_s_o1->currentTime(), 250); - QCOMPARE(sequence2->currentTime(), 500); - QCOMPARE(a1_s_o2->currentTime(), 250); - QCOMPARE(a1_s_o3->currentTime(), 250); + QCOMPARE(a3_s_o1->currentLoopTime(), 250); + QCOMPARE(sequence2->currentLoopTime(), 500); + QCOMPARE(a1_s_o2->currentLoopTime(), 250); + QCOMPARE(a1_s_o3->currentLoopTime(), 250); // Current time = 2000 group.setCurrentTime(2000); - QCOMPARE(group.currentTime(), 1750); - QCOMPARE(sequence->currentTime(), 1250); - QCOMPARE(a1_s_o1->currentTime(), 250); - QCOMPARE(a2_s_o1->currentTime(), 250); + QCOMPARE(group.currentLoopTime(), 1750); + QCOMPARE(sequence->currentLoopTime(), 1250); + QCOMPARE(a1_s_o1->currentLoopTime(), 250); + QCOMPARE(a2_s_o1->currentLoopTime(), 250); QCOMPARE(a2_s_o1->currentLoop(), 2); - QCOMPARE(a3_s_o1->currentTime(), 250); - QCOMPARE(sequence2->currentTime(), 500); - QCOMPARE(a1_s_o2->currentTime(), 250); - QCOMPARE(a1_s_o3->currentTime(), 250); + QCOMPARE(a3_s_o1->currentLoopTime(), 250); + QCOMPARE(sequence2->currentLoopTime(), 500); + QCOMPARE(a1_s_o2->currentLoopTime(), 250); + QCOMPARE(a1_s_o3->currentLoopTime(), 250); } void tst_QSequentialAnimationGroup::setCurrentTimeWithUncontrolledAnimation() @@ -357,40 +357,40 @@ void tst_QSequentialAnimationGroup::setCurrentTimeWithUncontrolledAnimation() QCOMPARE(notTimeDriven->state(), QAnimationGroup::Stopped); QCOMPARE(loopsForever->state(), QAnimationGroup::Stopped); - QCOMPARE(group.currentTime(), 1); - QCOMPARE(sequence->currentTime(), 1); - QCOMPARE(a1_s_o1->currentTime(), 1); - QCOMPARE(a1_s_o2->currentTime(), 0); - QCOMPARE(notTimeDriven->currentTime(), 0); - QCOMPARE(loopsForever->currentTime(), 0); + QCOMPARE(group.currentLoopTime(), 1); + QCOMPARE(sequence->currentLoopTime(), 1); + QCOMPARE(a1_s_o1->currentLoopTime(), 1); + QCOMPARE(a1_s_o2->currentLoopTime(), 0); + QCOMPARE(notTimeDriven->currentLoopTime(), 0); + QCOMPARE(loopsForever->currentLoopTime(), 0); // Current time = 250 group.setCurrentTime(250); - QCOMPARE(group.currentTime(), 250); - QCOMPARE(sequence->currentTime(), 250); - QCOMPARE(a1_s_o1->currentTime(), 250); - QCOMPARE(a1_s_o2->currentTime(), 0); - QCOMPARE(notTimeDriven->currentTime(), 0); - QCOMPARE(loopsForever->currentTime(), 0); + QCOMPARE(group.currentLoopTime(), 250); + QCOMPARE(sequence->currentLoopTime(), 250); + QCOMPARE(a1_s_o1->currentLoopTime(), 250); + QCOMPARE(a1_s_o2->currentLoopTime(), 0); + QCOMPARE(notTimeDriven->currentLoopTime(), 0); + QCOMPARE(loopsForever->currentLoopTime(), 0); // Current time = 500 group.setCurrentTime(500); - QCOMPARE(group.currentTime(), 500); - QCOMPARE(sequence->currentTime(), 500); - QCOMPARE(a1_s_o1->currentTime(), 250); - QCOMPARE(a1_s_o2->currentTime(), 250); - QCOMPARE(notTimeDriven->currentTime(), 0); - QCOMPARE(loopsForever->currentTime(), 0); + QCOMPARE(group.currentLoopTime(), 500); + QCOMPARE(sequence->currentLoopTime(), 500); + QCOMPARE(a1_s_o1->currentLoopTime(), 250); + QCOMPARE(a1_s_o2->currentLoopTime(), 250); + QCOMPARE(notTimeDriven->currentLoopTime(), 0); + QCOMPARE(loopsForever->currentLoopTime(), 0); QCOMPARE(group.currentAnimation(), notTimeDriven); // Current time = 505 group.setCurrentTime(505); - QCOMPARE(group.currentTime(), 505); - QCOMPARE(sequence->currentTime(), 500); - QCOMPARE(a1_s_o1->currentTime(), 250); - QCOMPARE(a1_s_o2->currentTime(), 250); - QCOMPARE(notTimeDriven->currentTime(), 5); - QCOMPARE(loopsForever->currentTime(), 0); + QCOMPARE(group.currentLoopTime(), 505); + QCOMPARE(sequence->currentLoopTime(), 500); + QCOMPARE(a1_s_o1->currentLoopTime(), 250); + QCOMPARE(a1_s_o2->currentLoopTime(), 250); + QCOMPARE(notTimeDriven->currentLoopTime(), 5); + QCOMPARE(loopsForever->currentLoopTime(), 0); QCOMPARE(group.currentAnimation(), notTimeDriven); QCOMPARE(sequence->state(), QAnimationGroup::Stopped); QCOMPARE(a1_s_o1->state(), QAnimationGroup::Stopped); @@ -400,12 +400,12 @@ void tst_QSequentialAnimationGroup::setCurrentTimeWithUncontrolledAnimation() // Current time = 750 (end of notTimeDriven animation) group.setCurrentTime(750); - QCOMPARE(group.currentTime(), 750); - QCOMPARE(sequence->currentTime(), 500); - QCOMPARE(a1_s_o1->currentTime(), 250); - QCOMPARE(a1_s_o2->currentTime(), 250); - QCOMPARE(notTimeDriven->currentTime(), 250); - QCOMPARE(loopsForever->currentTime(), 0); + QCOMPARE(group.currentLoopTime(), 750); + QCOMPARE(sequence->currentLoopTime(), 500); + QCOMPARE(a1_s_o1->currentLoopTime(), 250); + QCOMPARE(a1_s_o2->currentLoopTime(), 250); + QCOMPARE(notTimeDriven->currentLoopTime(), 250); + QCOMPARE(loopsForever->currentLoopTime(), 0); QCOMPARE(group.currentAnimation(), loopsForever); QCOMPARE(sequence->state(), QAnimationGroup::Stopped); QCOMPARE(a1_s_o1->state(), QAnimationGroup::Stopped); @@ -415,13 +415,13 @@ void tst_QSequentialAnimationGroup::setCurrentTimeWithUncontrolledAnimation() // Current time = 800 (as notTimeDriven was finished at 750, loopsforever should still run) group.setCurrentTime(800); - QCOMPARE(group.currentTime(), 800); + QCOMPARE(group.currentLoopTime(), 800); QCOMPARE(group.currentAnimation(), loopsForever); - QCOMPARE(sequence->currentTime(), 500); - QCOMPARE(a1_s_o1->currentTime(), 250); - QCOMPARE(a1_s_o2->currentTime(), 250); - QCOMPARE(notTimeDriven->currentTime(), 250); - QCOMPARE(loopsForever->currentTime(), 50); + QCOMPARE(sequence->currentLoopTime(), 500); + QCOMPARE(a1_s_o1->currentLoopTime(), 250); + QCOMPARE(a1_s_o2->currentLoopTime(), 250); + QCOMPARE(notTimeDriven->currentLoopTime(), 250); + QCOMPARE(loopsForever->currentLoopTime(), 50); loopsForever->stop(); // this should stop the group @@ -466,26 +466,26 @@ void tst_QSequentialAnimationGroup::seekingForwards() QCOMPARE(a1_s_o2->state(), QAnimationGroup::Stopped); QCOMPARE(a1_s_o3->state(), QAnimationGroup::Stopped); - QCOMPARE(group.currentTime(), 1); - QCOMPARE(sequence->currentTime(), 1); - QCOMPARE(a1_s_o1->currentTime(), 1); - QCOMPARE(a2_s_o1->currentTime(), 0); - QCOMPARE(a3_s_o1->currentTime(), 0); - QCOMPARE(sequence2->currentTime(), 0); - QCOMPARE(a1_s_o2->currentTime(), 0); - QCOMPARE(a1_s_o3->currentTime(), 0); + QCOMPARE(group.currentLoopTime(), 1); + QCOMPARE(sequence->currentLoopTime(), 1); + QCOMPARE(a1_s_o1->currentLoopTime(), 1); + QCOMPARE(a2_s_o1->currentLoopTime(), 0); + QCOMPARE(a3_s_o1->currentLoopTime(), 0); + QCOMPARE(sequence2->currentLoopTime(), 0); + QCOMPARE(a1_s_o2->currentLoopTime(), 0); + QCOMPARE(a1_s_o3->currentLoopTime(), 0); // Current time = 1500 group.setCurrentTime(1500); - QCOMPARE(group.currentTime(), 1500); - QCOMPARE(sequence->currentTime(), 1250); - QCOMPARE(a1_s_o1->currentTime(), 250); - QCOMPARE(a2_s_o1->currentTime(), 250); + QCOMPARE(group.currentLoopTime(), 1500); + QCOMPARE(sequence->currentLoopTime(), 1250); + QCOMPARE(a1_s_o1->currentLoopTime(), 250); + QCOMPARE(a2_s_o1->currentLoopTime(), 250); QCOMPARE(a2_s_o1->currentLoop(), 2); - QCOMPARE(a3_s_o1->currentTime(), 250); - QCOMPARE(sequence2->currentTime(), 250); - QCOMPARE(a1_s_o2->currentTime(), 250); - QCOMPARE(a1_s_o3->currentTime(), 0); + QCOMPARE(a3_s_o1->currentLoopTime(), 250); + QCOMPARE(sequence2->currentLoopTime(), 250); + QCOMPARE(a1_s_o2->currentLoopTime(), 250); + QCOMPARE(a1_s_o3->currentLoopTime(), 0); // this will restart the group group.start(); @@ -499,15 +499,15 @@ void tst_QSequentialAnimationGroup::seekingForwards() // Current time = 1750 group.setCurrentTime(1750); - QCOMPARE(group.currentTime(), 1750); - QCOMPARE(sequence->currentTime(), 1250); - QCOMPARE(a1_s_o1->currentTime(), 250); - QCOMPARE(a2_s_o1->currentTime(), 250); + QCOMPARE(group.currentLoopTime(), 1750); + QCOMPARE(sequence->currentLoopTime(), 1250); + QCOMPARE(a1_s_o1->currentLoopTime(), 250); + QCOMPARE(a2_s_o1->currentLoopTime(), 250); QCOMPARE(a2_s_o1->currentLoop(), 2); - QCOMPARE(a3_s_o1->currentTime(), 250); - QCOMPARE(sequence2->currentTime(), 500); - QCOMPARE(a1_s_o2->currentTime(), 250); - QCOMPARE(a1_s_o3->currentTime(), 250); + QCOMPARE(a3_s_o1->currentLoopTime(), 250); + QCOMPARE(sequence2->currentLoopTime(), 500); + QCOMPARE(a1_s_o2->currentLoopTime(), 250); + QCOMPARE(a1_s_o3->currentLoopTime(), 250); } void tst_QSequentialAnimationGroup::seekingBackwards() @@ -537,15 +537,15 @@ void tst_QSequentialAnimationGroup::seekingBackwards() // Current time = 1600 group.setCurrentTime(1600); - QCOMPARE(group.currentTime(), 1600); - QCOMPARE(sequence->currentTime(), 1250); - QCOMPARE(a1_s_o1->currentTime(), 250); - QCOMPARE(a2_s_o1->currentTime(), 250); + QCOMPARE(group.currentLoopTime(), 1600); + QCOMPARE(sequence->currentLoopTime(), 1250); + QCOMPARE(a1_s_o1->currentLoopTime(), 250); + QCOMPARE(a2_s_o1->currentLoopTime(), 250); QCOMPARE(a2_s_o1->currentLoop(), 2); - QCOMPARE(a3_s_o1->currentTime(), 250); - QCOMPARE(sequence2->currentTime(), 350); - QCOMPARE(a1_s_o2->currentTime(), 250); - QCOMPARE(a1_s_o3->currentTime(), 100); + QCOMPARE(a3_s_o1->currentLoopTime(), 250); + QCOMPARE(sequence2->currentLoopTime(), 350); + QCOMPARE(a1_s_o2->currentLoopTime(), 250); + QCOMPARE(a1_s_o3->currentLoopTime(), 100); QCOMPARE(group.state(), QAnimationGroup::Running); QCOMPARE(sequence->state(), QAnimationGroup::Stopped); @@ -556,22 +556,22 @@ void tst_QSequentialAnimationGroup::seekingBackwards() // Seeking backwards, current time = 1 group.setCurrentTime(1); - QCOMPARE(group.currentTime(), 1); - QCOMPARE(sequence->currentTime(), 1); - QCOMPARE(a1_s_o1->currentTime(), 1); + QCOMPARE(group.currentLoopTime(), 1); + QCOMPARE(sequence->currentLoopTime(), 1); + QCOMPARE(a1_s_o1->currentLoopTime(), 1); QEXPECT_FAIL("", "rewinding in nested groups is considered as a restart from the children," "hence they don't reset from their current animation", Continue); - QCOMPARE(a2_s_o1->currentTime(), 0); + QCOMPARE(a2_s_o1->currentLoopTime(), 0); QEXPECT_FAIL("", "rewinding in nested groups is considered as a restart from the children," "hence they don't reset from their current animation", Continue); QCOMPARE(a2_s_o1->currentLoop(), 0); QEXPECT_FAIL("", "rewinding in nested groups is considered as a restart from the children," "hence they don't reset from their current animation", Continue); - QCOMPARE(a3_s_o1->currentTime(), 0); - QCOMPARE(sequence2->currentTime(), 0); - QCOMPARE(a1_s_o2->currentTime(), 0); - QCOMPARE(a1_s_o3->currentTime(), 0); + QCOMPARE(a3_s_o1->currentLoopTime(), 0); + QCOMPARE(sequence2->currentLoopTime(), 0); + QCOMPARE(a1_s_o2->currentLoopTime(), 0); + QCOMPARE(a1_s_o3->currentLoopTime(), 0); QCOMPARE(group.state(), QAnimationGroup::Running); QCOMPARE(sequence->state(), QAnimationGroup::Running); @@ -582,15 +582,15 @@ void tst_QSequentialAnimationGroup::seekingBackwards() // Current time = 2000 group.setCurrentTime(2000); - QCOMPARE(group.currentTime(), 1750); - QCOMPARE(sequence->currentTime(), 1250); - QCOMPARE(a1_s_o1->currentTime(), 250); - QCOMPARE(a2_s_o1->currentTime(), 250); + QCOMPARE(group.currentLoopTime(), 1750); + QCOMPARE(sequence->currentLoopTime(), 1250); + QCOMPARE(a1_s_o1->currentLoopTime(), 250); + QCOMPARE(a2_s_o1->currentLoopTime(), 250); QCOMPARE(a2_s_o1->currentLoop(), 2); - QCOMPARE(a3_s_o1->currentTime(), 250); - QCOMPARE(sequence2->currentTime(), 500); - QCOMPARE(a1_s_o2->currentTime(), 250); - QCOMPARE(a1_s_o3->currentTime(), 250); + QCOMPARE(a3_s_o1->currentLoopTime(), 250); + QCOMPARE(sequence2->currentLoopTime(), 500); + QCOMPARE(a1_s_o2->currentLoopTime(), 250); + QCOMPARE(a1_s_o3->currentLoopTime(), 250); QCOMPARE(group.state(), QAnimationGroup::Stopped); QCOMPARE(sequence->state(), QAnimationGroup::Stopped); @@ -612,7 +612,7 @@ static bool compareStates(const QSignalSpy& spy, const StateList &expectedStates } QList<QVariant> args = spy.at(i); QAbstractAnimation::State st = expectedStates.at(i); - QAbstractAnimation::State actual = qVariantValue<QAbstractAnimation::State>(args.value(1)); + QAbstractAnimation::State actual = qVariantValue<QAbstractAnimation::State>(args.first()); if (equals && actual != st) { equals = false; break; @@ -672,14 +672,14 @@ void tst_QSequentialAnimationGroup::pauseAndResume() // Current time = 1751 group.setCurrentTime(1751); - QCOMPARE(group.currentTime(), 1751); - QCOMPARE(sequence->currentTime(), 751); + QCOMPARE(group.currentLoopTime(), 1751); + QCOMPARE(sequence->currentLoopTime(), 751); QCOMPARE(sequence->currentLoop(), 1); - QCOMPARE(a1_s_o1->currentTime(), 250); - QCOMPARE(a2_s_o1->currentTime(), 250); + QCOMPARE(a1_s_o1->currentLoopTime(), 250); + QCOMPARE(a2_s_o1->currentLoopTime(), 250); QCOMPARE(a2_s_o1->currentLoop(), 1); QCOMPARE(a3_s_o1->currentLoop(), 0); - QCOMPARE(a3_s_o1->currentTime(), 1); + QCOMPARE(a3_s_o1->currentLoopTime(), 1); QCOMPARE(group.state(), QAnimationGroup::Paused); QCOMPARE(sequence->state(), QAnimationGroup::Paused); @@ -696,20 +696,20 @@ void tst_QSequentialAnimationGroup::pauseAndResume() << QAbstractAnimation::Running << QAbstractAnimation::Stopped))); - QCOMPARE(qVariantValue<QAbstractAnimation::State>(a1StateChangedSpy.at(0).at(1)), + QCOMPARE(qVariantValue<QAbstractAnimation::State>(a1StateChangedSpy.at(0).first()), QAnimationGroup::Running); - QCOMPARE(qVariantValue<QAbstractAnimation::State>(a1StateChangedSpy.at(1).at(1)), + QCOMPARE(qVariantValue<QAbstractAnimation::State>(a1StateChangedSpy.at(1).first()), QAnimationGroup::Paused); - QCOMPARE(qVariantValue<QAbstractAnimation::State>(a1StateChangedSpy.at(2).at(1)), + QCOMPARE(qVariantValue<QAbstractAnimation::State>(a1StateChangedSpy.at(2).first()), QAnimationGroup::Stopped); - QCOMPARE(qVariantValue<QAbstractAnimation::State>(a1StateChangedSpy.at(3).at(1)), + QCOMPARE(qVariantValue<QAbstractAnimation::State>(a1StateChangedSpy.at(3).first()), QAnimationGroup::Running); - QCOMPARE(qVariantValue<QAbstractAnimation::State>(a1StateChangedSpy.at(4).at(1)), + QCOMPARE(qVariantValue<QAbstractAnimation::State>(a1StateChangedSpy.at(4).first()), QAnimationGroup::Stopped); - QCOMPARE(qVariantValue<QAbstractAnimation::State>(seqStateChangedSpy.at(0).at(1)), + QCOMPARE(qVariantValue<QAbstractAnimation::State>(seqStateChangedSpy.at(0).first()), QAnimationGroup::Running); - QCOMPARE(qVariantValue<QAbstractAnimation::State>(seqStateChangedSpy.at(1).at(1)), + QCOMPARE(qVariantValue<QAbstractAnimation::State>(seqStateChangedSpy.at(1).first()), QAnimationGroup::Paused); group.resume(); @@ -720,17 +720,17 @@ void tst_QSequentialAnimationGroup::pauseAndResume() QCOMPARE(a2_s_o1->state(), QAnimationGroup::Stopped); QCOMPARE(a3_s_o1->state(), QAnimationGroup::Running); - QVERIFY(group.currentTime() >= 1751); - QVERIFY(sequence->currentTime() >= 751); + QVERIFY(group.currentLoopTime() >= 1751); + QVERIFY(sequence->currentLoopTime() >= 751); QCOMPARE(sequence->currentLoop(), 1); - QCOMPARE(a1_s_o1->currentTime(), 250); - QCOMPARE(a2_s_o1->currentTime(), 250); + QCOMPARE(a1_s_o1->currentLoopTime(), 250); + QCOMPARE(a2_s_o1->currentLoopTime(), 250); QCOMPARE(a2_s_o1->currentLoop(), 1); QCOMPARE(a3_s_o1->currentLoop(), 0); - QVERIFY(a3_s_o1->currentTime() >= 1); + QVERIFY(a3_s_o1->currentLoopTime() >= 1); QCOMPARE(seqStateChangedSpy.count(), 3); // Running,Paused,Running - QCOMPARE(qVariantValue<QAbstractAnimation::State>(seqStateChangedSpy.at(2).at(1)), + QCOMPARE(qVariantValue<QAbstractAnimation::State>(seqStateChangedSpy.at(2).first()), QAnimationGroup::Running); group.pause(); @@ -741,23 +741,23 @@ void tst_QSequentialAnimationGroup::pauseAndResume() QCOMPARE(a2_s_o1->state(), QAnimationGroup::Stopped); QCOMPARE(a3_s_o1->state(), QAnimationGroup::Paused); - QVERIFY(group.currentTime() >= 1751); - QVERIFY(sequence->currentTime() >= 751); + QVERIFY(group.currentLoopTime() >= 1751); + QVERIFY(sequence->currentLoopTime() >= 751); QCOMPARE(sequence->currentLoop(), 1); - QCOMPARE(a1_s_o1->currentTime(), 250); - QCOMPARE(a2_s_o1->currentTime(), 250); + QCOMPARE(a1_s_o1->currentLoopTime(), 250); + QCOMPARE(a2_s_o1->currentLoopTime(), 250); QCOMPARE(a2_s_o1->currentLoop(), 1); QCOMPARE(a3_s_o1->currentLoop(), 0); - QVERIFY(a3_s_o1->currentTime() >= 1); + QVERIFY(a3_s_o1->currentLoopTime() >= 1); QCOMPARE(seqStateChangedSpy.count(), 4); // Running,Paused,Running,Paused - QCOMPARE(qVariantValue<QAbstractAnimation::State>(seqStateChangedSpy.at(3).at(1)), + QCOMPARE(qVariantValue<QAbstractAnimation::State>(seqStateChangedSpy.at(3).first()), QAnimationGroup::Paused); group.stop(); QCOMPARE(seqStateChangedSpy.count(), 5); // Running,Paused,Running,Paused,Stopped - QCOMPARE(qVariantValue<QAbstractAnimation::State>(seqStateChangedSpy.at(4).at(1)), + QCOMPARE(qVariantValue<QAbstractAnimation::State>(seqStateChangedSpy.at(4).first()), QAnimationGroup::Stopped); } @@ -797,20 +797,20 @@ void tst_QSequentialAnimationGroup::restart() for (int i = 0; i < 3; i++) { QCOMPARE(animsStateChanged[i]->count(), 4); - QCOMPARE(qVariantValue<QAbstractAnimation::State>(animsStateChanged[i]->at(0).at(1)), + QCOMPARE(qVariantValue<QAbstractAnimation::State>(animsStateChanged[i]->at(0).first()), QAnimationGroup::Running); - QCOMPARE(qVariantValue<QAbstractAnimation::State>(animsStateChanged[i]->at(1).at(1)), + QCOMPARE(qVariantValue<QAbstractAnimation::State>(animsStateChanged[i]->at(1).first()), QAnimationGroup::Stopped); - QCOMPARE(qVariantValue<QAbstractAnimation::State>(animsStateChanged[i]->at(2).at(1)), + QCOMPARE(qVariantValue<QAbstractAnimation::State>(animsStateChanged[i]->at(2).first()), QAnimationGroup::Running); - QCOMPARE(qVariantValue<QAbstractAnimation::State>(animsStateChanged[i]->at(3).at(1)), + QCOMPARE(qVariantValue<QAbstractAnimation::State>(animsStateChanged[i]->at(3).first()), QAnimationGroup::Stopped); } QCOMPARE(seqStateChangedSpy.count(), 2); - QCOMPARE(qVariantValue<QAbstractAnimation::State>(seqStateChangedSpy.at(0).at(1)), + QCOMPARE(qVariantValue<QAbstractAnimation::State>(seqStateChangedSpy.at(0).first()), QAnimationGroup::Running); - QCOMPARE(qVariantValue<QAbstractAnimation::State>(seqStateChangedSpy.at(1).at(1)), + QCOMPARE(qVariantValue<QAbstractAnimation::State>(seqStateChangedSpy.at(1).first()), QAnimationGroup::Stopped); QCOMPARE(seqCurrentAnimChangedSpy.count(), 6); @@ -855,15 +855,15 @@ void tst_QSequentialAnimationGroup::looping() // Current time = 1750 group.setCurrentTime(1750); - QCOMPARE(group.currentTime(), 1750); - QCOMPARE(sequence->currentTime(), 750); + QCOMPARE(group.currentLoopTime(), 1750); + QCOMPARE(sequence->currentLoopTime(), 750); QCOMPARE(sequence->currentLoop(), 1); - QCOMPARE(a1_s_o1->currentTime(), 250); - QCOMPARE(a2_s_o1->currentTime(), 250); + QCOMPARE(a1_s_o1->currentLoopTime(), 250); + QCOMPARE(a2_s_o1->currentLoopTime(), 250); QCOMPARE(a2_s_o1->currentLoop(), 1); // this animation is at the beginning because it is the current one inside sequence QCOMPARE(a3_s_o1->currentLoop(), 0); - QCOMPARE(a3_s_o1->currentTime(), 0); + QCOMPARE(a3_s_o1->currentLoopTime(), 0); QCOMPARE(sequence->currentAnimation(), a3_s_o1); QCOMPARE(group.state(), QAnimationGroup::Paused); @@ -890,16 +890,16 @@ void tst_QSequentialAnimationGroup::looping() // Looping, current time = duration + 1 group.setCurrentTime(group.duration() + 1); - QCOMPARE(group.currentTime(), 1); + QCOMPARE(group.currentLoopTime(), 1); QCOMPARE(group.currentLoop(), 1); - QCOMPARE(sequence->currentTime(), 1); + QCOMPARE(sequence->currentLoopTime(), 1); QCOMPARE(sequence->currentLoop(), 0); - QCOMPARE(a1_s_o1->currentTime(), 1); - QCOMPARE(a2_s_o1->currentTime(), 250); + QCOMPARE(a1_s_o1->currentLoopTime(), 1); + QCOMPARE(a2_s_o1->currentLoopTime(), 250); QCOMPARE(a2_s_o1->currentLoop(), 1); // this animation is at the end because it was run on the previous loop QCOMPARE(a3_s_o1->currentLoop(), 0); - QCOMPARE(a3_s_o1->currentTime(), 250); + QCOMPARE(a3_s_o1->currentLoopTime(), 250); QCOMPARE(group.state(), QAnimationGroup::Paused); QCOMPARE(sequence->state(), QAnimationGroup::Paused); @@ -934,7 +934,7 @@ void tst_QSequentialAnimationGroup::startDelay() QTest::qWait(500); - QVERIFY(group.currentTime() == 375); + QVERIFY(group.currentLoopTime() == 375); QCOMPARE(group.state(), QAnimationGroup::Stopped); } @@ -958,9 +958,9 @@ void tst_QSequentialAnimationGroup::clearGroup() children[i] = group.animationAt(i); } - group.clearAnimations(); + group.clear(); QCOMPARE(group.animationCount(), 0); - QCOMPARE(group.currentTime(), 0); + QCOMPARE(group.currentLoopTime(), 0); for (int i = 0; i < animationCount; ++i) QVERIFY(children[i].isNull()); } @@ -1130,9 +1130,9 @@ void tst_QSequentialAnimationGroup::updateChildrenWithRunningGroup() QCOMPARE(groupStateChangedSpy.count(), 1); QCOMPARE(childStateChangedSpy.count(), 1); - QCOMPARE(qVariantValue<QAbstractAnimation::State>(groupStateChangedSpy.at(0).at(1)), + QCOMPARE(qVariantValue<QAbstractAnimation::State>(groupStateChangedSpy.at(0).first()), QAnimationGroup::Running); - QCOMPARE(qVariantValue<QAbstractAnimation::State>(childStateChangedSpy.at(0).at(1)), + QCOMPARE(qVariantValue<QAbstractAnimation::State>(childStateChangedSpy.at(0).first()), QAnimationGroup::Running); // starting directly a running child will not have any effect @@ -1171,13 +1171,13 @@ void tst_QSequentialAnimationGroup::deleteChildrenWithRunningGroup() QCOMPARE(anim1->state(), QAnimationGroup::Running); QTest::qWait(100); - QVERIFY(group.currentTime() > 0); + QVERIFY(group.currentLoopTime() > 0); delete anim1; QCOMPARE(group.animationCount(), 0); QCOMPARE(group.duration(), 0); QCOMPARE(group.state(), QAnimationGroup::Stopped); - QCOMPARE(group.currentTime(), 0); //that's the invariant + QCOMPARE(group.currentLoopTime(), 0); //that's the invariant } void tst_QSequentialAnimationGroup::startChildrenWithStoppedGroup() @@ -1320,9 +1320,9 @@ void tst_QSequentialAnimationGroup::startGroupWithRunningChild() QCOMPARE(anim2->state(), QAnimationGroup::Running); QCOMPARE(stateChangedSpy2.count(), 4); - QCOMPARE(qVariantValue<QAbstractAnimation::State>(stateChangedSpy2.at(2).at(1)), + QCOMPARE(qVariantValue<QAbstractAnimation::State>(stateChangedSpy2.at(2).first()), QAnimationGroup::Stopped); - QCOMPARE(qVariantValue<QAbstractAnimation::State>(stateChangedSpy2.at(3).at(1)), + QCOMPARE(qVariantValue<QAbstractAnimation::State>(stateChangedSpy2.at(3).first()), QAnimationGroup::Running); group.stop(); @@ -1359,9 +1359,9 @@ void tst_QSequentialAnimationGroup::zeroDurationAnimation() group.start(); QCOMPARE(stateChangedSpy.count(), 2); - QCOMPARE(qVariantValue<QAbstractAnimation::State>(stateChangedSpy.at(0).at(1)), + QCOMPARE(qVariantValue<QAbstractAnimation::State>(stateChangedSpy.at(0).first()), QAnimationGroup::Running); - QCOMPARE(qVariantValue<QAbstractAnimation::State>(stateChangedSpy.at(1).at(1)), + QCOMPARE(qVariantValue<QAbstractAnimation::State>(stateChangedSpy.at(1).first()), QAnimationGroup::Stopped); QCOMPARE(anim1->state(), QAnimationGroup::Stopped); @@ -1426,14 +1426,14 @@ void tst_QSequentialAnimationGroup::finishWithUncontrolledAnimation() group.start(); QCOMPARE(group.state(), QAnimationGroup::Running); QCOMPARE(notTimeDriven.state(), QAnimationGroup::Running); - QCOMPARE(group.currentTime(), 0); - QCOMPARE(notTimeDriven.currentTime(), 0); + QCOMPARE(group.currentLoopTime(), 0); + QCOMPARE(notTimeDriven.currentLoopTime(), 0); QTest::qWait(300); //wait for the end of notTimeDriven QCOMPARE(notTimeDriven.state(), QAnimationGroup::Stopped); - const int actualDuration = notTimeDriven.currentTime(); + const int actualDuration = notTimeDriven.currentLoopTime(); QCOMPARE(group.state(), QAnimationGroup::Stopped); - QCOMPARE(group.currentTime(), actualDuration); + QCOMPARE(group.currentLoopTime(), actualDuration); QCOMPARE(spy.count(), 1); //2nd case: @@ -1444,7 +1444,7 @@ void tst_QSequentialAnimationGroup::finishWithUncontrolledAnimation() group.setCurrentTime(300); QCOMPARE(group.state(), QAnimationGroup::Stopped); - QCOMPARE(notTimeDriven.currentTime(), actualDuration); + QCOMPARE(notTimeDriven.currentLoopTime(), actualDuration); QCOMPARE(group.currentAnimation(), static_cast<QAbstractAnimation*>(&anim)); //3rd case: @@ -1453,8 +1453,8 @@ void tst_QSequentialAnimationGroup::finishWithUncontrolledAnimation() group.start(); QCOMPARE(group.state(), QAnimationGroup::Running); QCOMPARE(notTimeDriven.state(), QAnimationGroup::Running); - QCOMPARE(group.currentTime(), 0); - QCOMPARE(notTimeDriven.currentTime(), 0); + QCOMPARE(group.currentLoopTime(), 0); + QCOMPARE(notTimeDriven.currentLoopTime(), 0); QCOMPARE(animStateChangedSpy.count(), 0); @@ -1467,12 +1467,12 @@ void tst_QSequentialAnimationGroup::finishWithUncontrolledAnimation() QTest::qWait(300); //wait for the end of anim QCOMPARE(anim.state(), QAnimationGroup::Stopped); - QCOMPARE(anim.currentTime(), anim.duration()); + QCOMPARE(anim.currentLoopTime(), anim.duration()); //we should simply be at the end QCOMPARE(spy.count(), 1); QCOMPARE(animStateChangedSpy.count(), 2); - QCOMPARE(group.currentTime(), notTimeDriven.currentTime() + anim.currentTime()); + QCOMPARE(group.currentLoopTime(), notTimeDriven.currentLoopTime() + anim.currentLoopTime()); } void tst_QSequentialAnimationGroup::addRemoveAnimation() @@ -1481,48 +1481,48 @@ void tst_QSequentialAnimationGroup::addRemoveAnimation() QSequentialAnimationGroup group; QCOMPARE(group.duration(), 0); - QCOMPARE(group.currentTime(), 0); + QCOMPARE(group.currentLoopTime(), 0); QAbstractAnimation *anim1 = new QPropertyAnimation; group.addAnimation(anim1); QCOMPARE(group.duration(), 250); - QCOMPARE(group.currentTime(), 0); + QCOMPARE(group.currentLoopTime(), 0); QCOMPARE(group.currentAnimation(), anim1); //let's append an animation QAbstractAnimation *anim2 = new QPropertyAnimation; group.addAnimation(anim2); QCOMPARE(group.duration(), 500); - QCOMPARE(group.currentTime(), 0); + QCOMPARE(group.currentLoopTime(), 0); QCOMPARE(group.currentAnimation(), anim1); //let's prepend an animation QAbstractAnimation *anim0 = new QPropertyAnimation; - group.insertAnimationAt(0, anim0); + group.insertAnimation(0, anim0); QCOMPARE(group.duration(), 750); - QCOMPARE(group.currentTime(), 0); + QCOMPARE(group.currentLoopTime(), 0); QCOMPARE(group.currentAnimation(), anim0); //anim0 has become the new currentAnimation group.setCurrentTime(300); //anim0 | anim1 | anim2 - QCOMPARE(group.currentTime(), 300); + QCOMPARE(group.currentLoopTime(), 300); QCOMPARE(group.currentAnimation(), anim1); - QCOMPARE(anim1->currentTime(), 50); + QCOMPARE(anim1->currentLoopTime(), 50); group.removeAnimation(anim0); //anim1 | anim2 - QCOMPARE(group.currentTime(), 50); + QCOMPARE(group.currentLoopTime(), 50); QCOMPARE(group.currentAnimation(), anim1); - QCOMPARE(anim1->currentTime(), 50); + QCOMPARE(anim1->currentLoopTime(), 50); group.setCurrentTime(0); - group.insertAnimationAt(0, anim0); //anim0 | anim1 | anim2 + group.insertAnimation(0, anim0); //anim0 | anim1 | anim2 group.setCurrentTime(300); - QCOMPARE(group.currentTime(), 300); + QCOMPARE(group.currentLoopTime(), 300); QCOMPARE(group.currentAnimation(), anim1); - QCOMPARE(anim1->currentTime(), 50); + QCOMPARE(anim1->currentLoopTime(), 50); group.removeAnimation(anim1); //anim0 | anim2 - QCOMPARE(group.currentTime(), 250); + QCOMPARE(group.currentLoopTime(), 250); QCOMPARE(group.currentAnimation(), anim2); - QCOMPARE(anim0->currentTime(), 250); + QCOMPARE(anim0->currentLoopTime(), 250); } void tst_QSequentialAnimationGroup::currentAnimation() @@ -1595,15 +1595,15 @@ class SequentialAnimationGroup : public QSequentialAnimationGroup { Q_OBJECT public slots: - void clearAnimations() + void clear() { - QSequentialAnimationGroup::clearAnimations(); + QSequentialAnimationGroup::clear(); } void refill() { stop(); - clearAnimations(); + clear(); new DummyPropertyAnimation(this); start(); } @@ -1611,11 +1611,11 @@ public slots: }; -void tst_QSequentialAnimationGroup::clearAnimations() +void tst_QSequentialAnimationGroup::clear() { SequentialAnimationGroup group; QPointer<QAbstractAnimation> anim1 = new DummyPropertyAnimation(&group); - group.connect(anim1, SIGNAL(finished()), SLOT(clearAnimations())); + group.connect(anim1, SIGNAL(finished()), SLOT(clear())); new DummyPropertyAnimation(&group); QCOMPARE(group.animationCount(), 2); @@ -1623,7 +1623,7 @@ void tst_QSequentialAnimationGroup::clearAnimations() QTest::qWait(anim1->duration() + 100); QCOMPARE(group.animationCount(), 0); QCOMPARE(group.state(), QAbstractAnimation::Stopped); - QCOMPARE(group.currentTime(), 0); + QCOMPARE(group.currentLoopTime(), 0); anim1 = new DummyPropertyAnimation(&group); group.connect(anim1, SIGNAL(finished()), SLOT(refill())); @@ -1649,22 +1649,22 @@ void tst_QSequentialAnimationGroup::pauseResume() QCOMPARE(anim->state(), QAnimationGroup::Running); QCOMPARE(spy.count(), 1); spy.clear(); - const int currentTime = group.currentTime(); - QCOMPARE(anim->currentTime(), currentTime); + const int currentTime = group.currentLoopTime(); + QCOMPARE(anim->currentLoopTime(), currentTime); group.pause(); QCOMPARE(group.state(), QAnimationGroup::Paused); - QCOMPARE(group.currentTime(), currentTime); + QCOMPARE(group.currentLoopTime(), currentTime); QCOMPARE(anim->state(), QAnimationGroup::Paused); - QCOMPARE(anim->currentTime(), currentTime); + QCOMPARE(anim->currentLoopTime(), currentTime); QCOMPARE(spy.count(), 1); spy.clear(); group.resume(); QCOMPARE(group.state(), QAnimationGroup::Running); - QCOMPARE(group.currentTime(), currentTime); + QCOMPARE(group.currentLoopTime(), currentTime); QCOMPARE(anim->state(), QAnimationGroup::Running); - QCOMPARE(anim->currentTime(), currentTime); + QCOMPARE(anim->currentLoopTime(), currentTime); QCOMPARE(spy.count(), 1); } diff --git a/tests/auto/qsound/tst_qsound.cpp b/tests/auto/qsound/tst_qsound.cpp index 56a330b..73eca98 100644 --- a/tests/auto/qsound/tst_qsound.cpp +++ b/tests/auto/qsound/tst_qsound.cpp @@ -55,20 +55,32 @@ public: tst_QSound( QObject* parent=0) : QObject(parent) {} private slots: - void checkFinished(); + void checkFinished(); + + // Manual tests + void staticPlay(); }; void tst_QSound::checkFinished() { - QSound sound(SRCDIR"4.wav"); - sound.setLoops(3); - sound.play(); - QTest::qWait(5000); + QSound sound(SRCDIR"4.wav"); + sound.setLoops(3); + sound.play(); + QTest::qWait(5000); #if defined(Q_WS_QWS) - QEXPECT_FAIL("", "QSound buggy on embedded (task QTBUG-157)", Abort); + QEXPECT_FAIL("", "QSound buggy on embedded (task QTBUG-157)", Abort); #endif - QVERIFY(sound.isFinished() ); + QVERIFY(sound.isFinished() ); +} + +void tst_QSound::staticPlay() +{ + QSKIP("Test disabled -- only for manual purposes", SkipAll); + + // Check that you hear sound with static play also. + QSound::play(SRCDIR"4.wav"); + QTest::qWait(2000); } QTEST_MAIN(tst_QSound); diff --git a/tests/auto/qsqlquery/tst_qsqlquery.cpp b/tests/auto/qsqlquery/tst_qsqlquery.cpp index 4d9e50f..4264a70 100644 --- a/tests/auto/qsqlquery/tst_qsqlquery.cpp +++ b/tests/auto/qsqlquery/tst_qsqlquery.cpp @@ -193,9 +193,13 @@ private slots: void sqlServerReturn0_data() { generic_data(); } void sqlServerReturn0(); + void QTBUG_551_data() { generic_data("QOCI"); } void QTBUG_551(); + void QTBUG_5251_data() { generic_data("QPSQL"); } + void QTBUG_5251(); + private: // returns all database connections void generic_data(const QString &engine=QString()); @@ -2901,5 +2905,35 @@ void tst_QSqlQuery::QTBUG_551() QCOMPARE(res_outLst[2].toString(), QLatin1String("3. Value is 2")); } +void tst_QSqlQuery::QTBUG_5251() +{ + QFETCH( QString, dbName ); + QSqlDatabase db = QSqlDatabase::database( dbName ); + CHECK_DATABASE( db ); + + if (!db.driverName().startsWith( "QPSQL" )) return; + + QSqlQuery q(db); + q.exec("DROP TABLE " + qTableName("timetest")); + QVERIFY_SQL(q, exec("CREATE TABLE " + qTableName("timetest") + " (t TIME)")); + QVERIFY_SQL(q, exec("INSERT INTO " + qTableName("timetest") + " VALUES ('1:2:3.666')")); + + QSqlTableModel timetestModel(0,db); + timetestModel.setEditStrategy(QSqlTableModel::OnManualSubmit); + timetestModel.setTable(qTableName("timetest")); + QVERIFY_SQL(timetestModel, select()); + + QCOMPARE(timetestModel.record(0).field(0).value().toTime().toString("HH:mm:ss.zzz"), QString("01:02:03.666")); + QVERIFY_SQL(timetestModel,setData(timetestModel.index(0, 0), QTime(0,12,34,500))); + QCOMPARE(timetestModel.record(0).field(0).value().toTime().toString("HH:mm:ss.zzz"), QString("00:12:34.500")); + QVERIFY_SQL(timetestModel, submitAll()); + QCOMPARE(timetestModel.record(0).field(0).value().toTime().toString("HH:mm:ss.zzz"), QString("00:12:34.500")); + + QVERIFY_SQL(q, exec("UPDATE " + qTableName("timetest") + " SET t = '0:11:22.33'")); + QVERIFY_SQL(timetestModel, select()); + QCOMPARE(timetestModel.record(0).field(0).value().toTime().toString("HH:mm:ss.zzz"), QString("00:11:22.330")); + +} + QTEST_MAIN( tst_QSqlQuery ) #include "tst_qsqlquery.moc" diff --git a/tests/auto/qsqlrelationaltablemodel/tst_qsqlrelationaltablemodel.cpp b/tests/auto/qsqlrelationaltablemodel/tst_qsqlrelationaltablemodel.cpp index cb24a9f..8c840cd 100644 --- a/tests/auto/qsqlrelationaltablemodel/tst_qsqlrelationaltablemodel.cpp +++ b/tests/auto/qsqlrelationaltablemodel/tst_qsqlrelationaltablemodel.cpp @@ -86,6 +86,7 @@ private slots: void escapedRelations(); void escapedTableName(); void whiteSpaceInIdentifiers(); + void psqlSchemaTest(); private: void dropTestTables( QSqlDatabase db ); @@ -150,10 +151,11 @@ void tst_QSqlRelationalTableModel::initTestCase() if (db.driverName().startsWith("QIBASE")) db.exec("SET DIALECT 3"); else if (tst_Databases::isSqlServer(db)) { - QSqlQuery q(db); - QVERIFY_SQL(q, exec("SET ANSI_DEFAULTS ON")); - QVERIFY_SQL(q, exec("SET IMPLICIT_TRANSACTIONS OFF")); + db.exec("SET ANSI_DEFAULTS ON"); + db.exec("SET IMPLICIT_TRANSACTIONS OFF"); } + else if(tst_Databases::isPostgreSQL(db)) + db.exec("set client_min_messages='warning'"); recreateTestTables(db); } } @@ -181,6 +183,9 @@ void tst_QSqlRelationalTableModel::dropTestTables( QSqlDatabase db ) << qTableName("CASETEST1" ) << qTableName("casetest1" ); tst_Databases::safeDropTables( db, tableNames ); + + db.exec("DROP SCHEMA "+qTableName("QTBUG_5373")+" CASCADE"); + db.exec("DROP SCHEMA "+qTableName("QTBUG_5373_s2")+" CASCADE"); } void tst_QSqlRelationalTableModel::init() @@ -1118,8 +1123,8 @@ void tst_QSqlRelationalTableModel::escapedTableName() } } -void tst_QSqlRelationalTableModel::whiteSpaceInIdentifiers() { - +void tst_QSqlRelationalTableModel::whiteSpaceInIdentifiers() +{ QFETCH_GLOBAL(QString, dbName); QSqlDatabase db = QSqlDatabase::database(dbName); CHECK_DATABASE(db); @@ -1193,5 +1198,26 @@ void tst_QSqlRelationalTableModel::whiteSpaceInIdentifiers() { QCOMPARE(model.data(model.index(0, 2)).toInt(), 6); } +void tst_QSqlRelationalTableModel::psqlSchemaTest() +{ + QFETCH_GLOBAL(QString, dbName); + QSqlDatabase db = QSqlDatabase::database(dbName); + CHECK_DATABASE(db); + + if(!tst_Databases::isPostgreSQL(db)) { + QSKIP("Postgresql specific test", SkipSingle); + return; + } + QSqlRelationalTableModel model(0, db); + QSqlQuery q(db); + QVERIFY_SQL(q, exec("create schema "+qTableName("QTBUG_5373"))); + QVERIFY_SQL(q, exec("create schema "+qTableName("QTBUG_5373_s2"))); + QVERIFY_SQL(q, exec("create table "+qTableName("QTBUG_5373")+"."+qTableName("user")+"(userid int primary key, relatingid int)")); + QVERIFY_SQL(q, exec("create table "+qTableName("QTBUG_5373_s2")+"."+qTableName("user2")+"(userid2 int primary key, username2 char(40))")); + model.setTable(qTableName("QTBUG_5373")+"."+qTableName("user")); + model.setRelation(1, QSqlRelation(qTableName("QTBUG_5373_s2")+"."+qTableName("user2"), "userid2", "username2")); + QVERIFY_SQL(model, select()); +} + QTEST_MAIN(tst_QSqlRelationalTableModel) #include "tst_qsqlrelationaltablemodel.moc" diff --git a/tests/auto/qstatemachine/tst_qstatemachine.cpp b/tests/auto/qstatemachine/tst_qstatemachine.cpp index 975b301..fd39515 100644 --- a/tests/auto/qstatemachine/tst_qstatemachine.cpp +++ b/tests/auto/qstatemachine/tst_qstatemachine.cpp @@ -162,7 +162,7 @@ private slots: void defaultGlobalRestorePolicy(); void globalRestorePolicySetToRestore(); - void globalRestorePolicySetToDoNotRestore(); + void globalRestorePolicySetToDontRestore(); void noInitialStateForInitialState(); @@ -184,7 +184,7 @@ private slots: void twoAnimatedTransitions(); void playAnimationTwice(); void nestedTargetStateForAnimation(); - void polishedSignalTransitionsReuseAnimationGroup(); + void propertiesAssignedSignalTransitionsReuseAnimationGroup(); void animatedGlobalRestoreProperty(); void specificTargetValueOfAnimation(); @@ -208,6 +208,7 @@ private slots: void task260403_clonedSignals(); void postEventFromOtherThread(); + void eventFilterForApplication(); }; tst_QStateMachine::tst_QStateMachine() @@ -286,8 +287,8 @@ void tst_QStateMachine::transitionToRootState() machine.addState(initialState); machine.setInitialState(initialState); - QAbstractTransition *trans = initialState->addTransition(new EventTransition(QEvent::User, &machine)); - QVERIFY(trans != 0); + QAbstractTransition *trans = new EventTransition(QEvent::User, &machine); + initialState->addTransition(trans); QCOMPARE(trans->sourceState(), initialState); QCOMPARE(trans->targetState(), static_cast<QAbstractState *>(&machine)); @@ -310,7 +311,7 @@ void tst_QStateMachine::transitionFromRootState() QState *root = &machine; QState *s1 = new QState(root); EventTransition *trans = new EventTransition(QEvent::User, s1); - QCOMPARE(root->addTransition(trans), static_cast<QAbstractTransition *>(trans)); + root->addTransition(trans); QCOMPARE(trans->sourceState(), root); QCOMPARE(trans->targetState(), static_cast<QAbstractState *>(s1)); } @@ -984,7 +985,7 @@ void tst_QStateMachine::customErrorStateNotInGraph() void tst_QStateMachine::restoreProperties() { QStateMachine machine; - QCOMPARE(machine.globalRestorePolicy(), QStateMachine::DoNotRestoreProperties); + QCOMPARE(machine.globalRestorePolicy(), QStateMachine::DontRestoreProperties); machine.setGlobalRestorePolicy(QStateMachine::RestoreProperties); QObject *object = new QObject(&machine); @@ -1155,7 +1156,7 @@ void tst_QStateMachine::stateEntryAndExit() QCOMPARE(t->targetState(), (QAbstractState*)s2); QCOMPARE(t->targetStates().size(), 1); QCOMPARE(t->targetStates().at(0), (QAbstractState*)s2); - QCOMPARE(s1->addTransition(t), (QAbstractTransition*)t); + s1->addTransition(t); QCOMPARE(t->sourceState(), (QState*)s1); QCOMPARE(t->machine(), &machine); @@ -1173,7 +1174,7 @@ void tst_QStateMachine::stateEntryAndExit() s2->removeTransition(trans); QCOMPARE(trans->sourceState(), (QState*)0); QCOMPARE(trans->targetState(), (QAbstractState*)s3); - QCOMPARE(s2->addTransition(trans), trans); + s2->addTransition(trans); QCOMPARE(trans->sourceState(), (QState*)s2); } @@ -1319,9 +1320,9 @@ void tst_QStateMachine::assignProperty() QCOMPARE(s1->objectName(), QString::fromLatin1("foo")); { - QSignalSpy polishedSpy(s1, SIGNAL(polished())); + QSignalSpy propertiesAssignedSpy(s1, SIGNAL(propertiesAssigned())); machine.start(); - QTRY_COMPARE(polishedSpy.count(), 1); + QTRY_COMPARE(propertiesAssignedSpy.count(), 1); } // nested states @@ -1340,11 +1341,11 @@ void tst_QStateMachine::assignPropertyWithAnimation() // Single animation { QStateMachine machine; - QVERIFY(machine.animationsEnabled()); - machine.setAnimationsEnabled(false); - QVERIFY(!machine.animationsEnabled()); - machine.setAnimationsEnabled(true); - QVERIFY(machine.animationsEnabled()); + QVERIFY(machine.isAnimated()); + machine.setAnimated(false); + QVERIFY(!machine.isAnimated()); + machine.setAnimated(true); + QVERIFY(machine.isAnimated()); QObject obj; obj.setProperty("foo", 321); obj.setProperty("bar", 654); @@ -1371,7 +1372,7 @@ void tst_QStateMachine::assignPropertyWithAnimation() QCOMPARE(trans->animations().size(), 1); QCOMPARE(trans->animations().at(0), (QAbstractAnimation*)&anim); QFinalState *s3 = new QFinalState(&machine); - s2->addTransition(s2, SIGNAL(polished()), s3); + s2->addTransition(s2, SIGNAL(propertiesAssigned()), s3); machine.setInitialState(s1); QSignalSpy finishedSpy(&machine, SIGNAL(finished())); @@ -1399,7 +1400,7 @@ void tst_QStateMachine::assignPropertyWithAnimation() anim2.setDuration(150); trans->addAnimation(&anim2); QFinalState *s3 = new QFinalState(&machine); - s2->addTransition(s2, SIGNAL(polished()), s3); + s2->addTransition(s2, SIGNAL(propertiesAssigned()), s3); machine.setInitialState(s1); QSignalSpy finishedSpy(&machine, SIGNAL(finished())); @@ -1427,7 +1428,7 @@ void tst_QStateMachine::assignPropertyWithAnimation() group.addAnimation(new QPropertyAnimation(&obj, "bar")); trans->addAnimation(&group); QFinalState *s3 = new QFinalState(&machine); - s2->addTransition(s2, SIGNAL(polished()), s3); + s2->addTransition(s2, SIGNAL(propertiesAssigned()), s3); machine.setInitialState(s1); QSignalSpy finishedSpy(&machine, SIGNAL(finished())); @@ -1473,10 +1474,10 @@ void tst_QStateMachine::assignPropertyWithAnimation() anim2.setDuration(250); trans->addAnimation(&anim2); - s21->addTransition(s21, SIGNAL(polished()), s22); + s21->addTransition(s21, SIGNAL(propertiesAssigned()), s22); QFinalState *s3 = new QFinalState(&machine); - s22->addTransition(s2, SIGNAL(polished()), s3); + s22->addTransition(s2, SIGNAL(propertiesAssigned()), s3); machine.setInitialState(s1); QSignalSpy finishedSpy(&machine, SIGNAL(finished())); @@ -1513,13 +1514,13 @@ void tst_QStateMachine::assignPropertyWithAnimation() machine.setInitialState(group); machine.start(); QTRY_COMPARE(machine.configuration().contains(s1), true); - QSignalSpy polishedSpy(s2, SIGNAL(polished())); + QSignalSpy propertiesAssignedSpy(s2, SIGNAL(propertiesAssigned())); emitter.emitSignalWithNoArg(); QTRY_COMPARE(machine.configuration().contains(s2), true); - QVERIFY(polishedSpy.isEmpty()); + QVERIFY(propertiesAssignedSpy.isEmpty()); emitter.emitSignalWithNoArg(); // will cause animations from s1-->s2 to abort QTRY_COMPARE(machine.configuration().contains(s3), true); - QVERIFY(polishedSpy.isEmpty()); + QVERIFY(propertiesAssignedSpy.isEmpty()); QCOMPARE(obj.property("foo").toInt(), 911); QCOMPARE(obj.property("bar").toInt(), 789); } @@ -2736,10 +2737,10 @@ void tst_QStateMachine::restorePolicyNotInherited() }*/ -void tst_QStateMachine::globalRestorePolicySetToDoNotRestore() +void tst_QStateMachine::globalRestorePolicySetToDontRestore() { QStateMachine machine; - machine.setGlobalRestorePolicy(QStateMachine::DoNotRestoreProperties); + machine.setGlobalRestorePolicy(QStateMachine::DontRestoreProperties); QObject *propertyHolder = new QObject(&machine); propertyHolder->setProperty("a", 1); @@ -3089,7 +3090,7 @@ void tst_QStateMachine::twoAnimations() QState *s3 = new QState(&machine); QObject::connect(s3, SIGNAL(entered()), QCoreApplication::instance(), SLOT(quit())); - s2->addTransition(s2, SIGNAL(polished()), s3); + s2->addTransition(s2, SIGNAL(propertiesAssigned()), s3); machine.setInitialState(s1); machine.start(); @@ -3117,7 +3118,9 @@ void tst_QStateMachine::twoAnimatedTransitions() QState *s2 = new QState(&machine); s2->assignProperty(object, "foo", 5.0); QPropertyAnimation *fooAnimation = new QPropertyAnimation(object, "foo", s2); - s1->addTransition(new EventTransition(QEvent::User, s2))->addAnimation(fooAnimation); + EventTransition *trans = new EventTransition(QEvent::User, s2); + s1->addTransition(trans); + trans->addAnimation(fooAnimation); QState *s3 = new QState(&machine); QObject::connect(s3, SIGNAL(entered()), QCoreApplication::instance(), SLOT(quit())); @@ -3126,7 +3129,9 @@ void tst_QStateMachine::twoAnimatedTransitions() QState *s4 = new QState(&machine); s4->assignProperty(object, "foo", 2.0); QPropertyAnimation *fooAnimation2 = new QPropertyAnimation(object, "foo", s4); - s3->addTransition(new EventTransition(QEvent::User, s4))->addAnimation(fooAnimation2); + trans = new EventTransition(QEvent::User, s4); + s3->addTransition(trans); + trans->addAnimation(fooAnimation2); QState *s5 = new QState(&machine); QObject::connect(s5, SIGNAL(entered()), QApplication::instance(), SLOT(quit())); @@ -3161,7 +3166,9 @@ void tst_QStateMachine::playAnimationTwice() QState *s2 = new QState(&machine); s2->assignProperty(object, "foo", 5.0); QPropertyAnimation *fooAnimation = new QPropertyAnimation(object, "foo", s2); - s1->addTransition(new EventTransition(QEvent::User, s2))->addAnimation(fooAnimation); + EventTransition *trans = new EventTransition(QEvent::User, s2); + s1->addTransition(trans); + trans->addAnimation(fooAnimation); QState *s3 = new QState(&machine); QObject::connect(s3, SIGNAL(entered()), QCoreApplication::instance(), SLOT(quit())); @@ -3169,7 +3176,9 @@ void tst_QStateMachine::playAnimationTwice() QState *s4 = new QState(&machine); s4->assignProperty(object, "foo", 2.0); - s3->addTransition(new EventTransition(QEvent::User, s4))->addAnimation(fooAnimation); + trans = new EventTransition(QEvent::User, s4); + s3->addTransition(trans); + trans->addAnimation(fooAnimation); QState *s5 = new QState(&machine); QObject::connect(s5, SIGNAL(entered()), QApplication::instance(), SLOT(quit())); @@ -3213,14 +3222,16 @@ void tst_QStateMachine::nestedTargetStateForAnimation() QState *s2Child2 = new QState(s2); s2Child2->assignProperty(object, "bar", 11.0); - QAbstractTransition *at = s2Child->addTransition(new EventTransition(QEvent::User, s2Child2)); + QAbstractTransition *at = new EventTransition(QEvent::User, s2Child2); + s2Child->addTransition(at); QPropertyAnimation *animation = new QPropertyAnimation(object, "bar", s2); animation->setDuration(2000); connect(animation, SIGNAL(finished()), &counter, SLOT(slot())); at->addAnimation(animation); - at = s1->addTransition(new EventTransition(QEvent::User, s2)); + at = new EventTransition(QEvent::User, s2); + s1->addTransition(at); animation = new QPropertyAnimation(object, "foo", s2); connect(animation, SIGNAL(finished()), &counter, SLOT(slot())); @@ -3231,7 +3242,7 @@ void tst_QStateMachine::nestedTargetStateForAnimation() at->addAnimation(animation); QState *s3 = new QState(&machine); - s2->addTransition(s2Child, SIGNAL(polished()), s3); + s2->addTransition(s2Child, SIGNAL(propertiesAssigned()), s3); QObject::connect(s3, SIGNAL(entered()), QCoreApplication::instance(), SLOT(quit())); @@ -3248,7 +3259,7 @@ void tst_QStateMachine::nestedTargetStateForAnimation() QCOMPARE(counter.counter, 2); } -void tst_QStateMachine::polishedSignalTransitionsReuseAnimationGroup() +void tst_QStateMachine::propertiesAssignedSignalTransitionsReuseAnimationGroup() { QStateMachine machine; QObject *object = new QObject(&machine); @@ -3265,9 +3276,9 @@ void tst_QStateMachine::polishedSignalTransitionsReuseAnimationGroup() QParallelAnimationGroup animationGroup; animationGroup.addAnimation(new QPropertyAnimation(object, "foo")); QSignalSpy animationFinishedSpy(&animationGroup, SIGNAL(finished())); - s1->addTransition(s1, SIGNAL(polished()), s2)->addAnimation(&animationGroup); - s2->addTransition(s2, SIGNAL(polished()), s3)->addAnimation(&animationGroup); - s3->addTransition(s3, SIGNAL(polished()), s4); + s1->addTransition(s1, SIGNAL(propertiesAssigned()), s2)->addAnimation(&animationGroup); + s2->addTransition(s2, SIGNAL(propertiesAssigned()), s3)->addAnimation(&animationGroup); + s3->addTransition(s3, SIGNAL(propertiesAssigned()), s4); machine.setInitialState(s1); QSignalSpy machineFinishedSpy(&machine, SIGNAL(finished())); @@ -3299,7 +3310,8 @@ void tst_QStateMachine::animatedGlobalRestoreProperty() QState *s4 = new QState(&machine); QObject::connect(s4, SIGNAL(entered()), QCoreApplication::instance(), SLOT(quit())); - QAbstractTransition *at = s1->addTransition(new EventTransition(QEvent::User, s2)); + QAbstractTransition *at = new EventTransition(QEvent::User, s2); + s1->addTransition(at); QPropertyAnimation *pa = new QPropertyAnimation(object, "foo", s2); connect(pa, SIGNAL(finished()), &counter, SLOT(slot())); at->addAnimation(pa); @@ -3341,7 +3353,9 @@ void tst_QStateMachine::specificTargetValueOfAnimation() QPropertyAnimation *anim = new QPropertyAnimation(object, "foo"); anim->setEndValue(10.0); - s1->addTransition(new EventTransition(QEvent::User, s2))->addAnimation(anim); + EventTransition *trans = new EventTransition(QEvent::User, s2); + s1->addTransition(trans); + trans->addAnimation(anim); QState *s3 = new QState(&machine); QObject::connect(s3, SIGNAL(entered()), QCoreApplication::instance(), SLOT(quit())); @@ -3495,7 +3509,8 @@ void tst_QStateMachine::overrideDefaultAnimationWithSpecific() QState *s3 = new QState(&machine); QObject::connect(s3, SIGNAL(entered()), QCoreApplication::instance(), SLOT(quit())); - QAbstractTransition *at = s1->addTransition(new EventTransition(QEvent::User, s2)); + QAbstractTransition *at = new EventTransition(QEvent::User, s2); + s1->addTransition(at); QPropertyAnimation *defaultAnimation = new QPropertyAnimation(object, "foo"); connect(defaultAnimation, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)), &counter, SLOT(slot())); @@ -4262,5 +4277,35 @@ void tst_QStateMachine::postEventFromOtherThread() QTRY_COMPARE(finishedSpy.count(), 1); } +void tst_QStateMachine::eventFilterForApplication() +{ + QStateMachine machine; + + QState *s1 = new QState(&machine); + { + machine.setInitialState(s1); + } + + QState *s2 = new QState(&machine); + + QEventTransition *transition = new QEventTransition(QCoreApplication::instance(), + QEvent::ApplicationActivate); + transition->setTargetState(s2); + s1->addTransition(transition); + + machine.start(); + QCoreApplication::processEvents(); + + QCOMPARE(machine.configuration().size(), 1); + QVERIFY(machine.configuration().contains(s1)); + + QCoreApplication::postEvent(QCoreApplication::instance(), + new QEvent(QEvent::ApplicationActivate)); + QCoreApplication::processEvents(); + + QCOMPARE(machine.configuration().size(), 1); + QVERIFY(machine.configuration().contains(s2)); +} + QTEST_MAIN(tst_QStateMachine) #include "tst_qstatemachine.moc" diff --git a/tests/auto/qstringbuilder1/stringbuilder.cpp b/tests/auto/qstringbuilder1/stringbuilder.cpp index f35d4d2..9dc467e 100644 --- a/tests/auto/qstringbuilder1/stringbuilder.cpp +++ b/tests/auto/qstringbuilder1/stringbuilder.cpp @@ -41,8 +41,15 @@ #define LITERAL "some literal" +// "some literal", but replacing all vocals by their umlauted UTF-8 string :) +#define UTF8_LITERAL "s\xc3\xb6m\xc3\xab l\xc3\xaft\xc3\xabr\xc3\xa4l" + void runScenario() { + // set codec for C strings to 0, enforcing Latin1 + QTextCodec::setCodecForCStrings(0); + QVERIFY(!QTextCodec::codecForCStrings()); + QLatin1Literal l1literal(LITERAL); QLatin1String l1string(LITERAL); QString string(l1string); @@ -75,5 +82,24 @@ void runScenario() QCOMPARE(r, r2); r = string P ba; QCOMPARE(r, r2); + + // now test with codec for C strings set + QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8")); + QVERIFY(QTextCodec::codecForCStrings()); + QCOMPARE(QTextCodec::codecForCStrings()->name(), QByteArray("UTF-8")); + + string = QString::fromUtf8(UTF8_LITERAL); + r2 = QString::fromUtf8(UTF8_LITERAL UTF8_LITERAL); + ba = UTF8_LITERAL; + + r = string P UTF8_LITERAL; + QCOMPARE(r.size(), r2.size()); + QCOMPARE(r, r2); + r = UTF8_LITERAL P string; + QCOMPARE(r, r2); + r = ba P string; + QCOMPARE(r, r2); + r = string P ba; + QCOMPARE(r, r2); #endif } diff --git a/tests/auto/qtableview/tst_qtableview.cpp b/tests/auto/qtableview/tst_qtableview.cpp index 227ca6f..f571e8a 100644 --- a/tests/auto/qtableview/tst_qtableview.cpp +++ b/tests/auto/qtableview/tst_qtableview.cpp @@ -197,6 +197,7 @@ private slots: void task259308_scrollVerticalHeaderSwappedSections(); void task191545_dragSelectRows(); void taskQTBUG_5062_spansInconsistency(); + void taskQTBUG_4516_clickOnRichTextLabel(); void mouseWheel_data(); void mouseWheel(); @@ -3885,6 +3886,24 @@ void tst_QTableView::taskQTBUG_5062_spansInconsistency() VERIFY_SPANS_CONSISTENCY(&view); } +void tst_QTableView::taskQTBUG_4516_clickOnRichTextLabel() +{ + QTableView view; + QStandardItemModel model(5,5); + view.setModel(&model); + QLabel label("rich text"); + label.setTextFormat(Qt::RichText); + view.setIndexWidget(model.index(1,1), &label); + view.setCurrentIndex(model.index(0,0)); + QCOMPARE(view.currentIndex(), model.index(0,0)); + + QTest::mouseClick(&label, Qt::LeftButton); + QCOMPARE(view.currentIndex(), model.index(1,1)); + + +} + + void tst_QTableView::changeHeaderData() { QTableView view; diff --git a/tests/auto/qtextdocumentfragment/tst_qtextdocumentfragment.cpp b/tests/auto/qtextdocumentfragment/tst_qtextdocumentfragment.cpp index 8c4d8fd..4dc732c 100644 --- a/tests/auto/qtextdocumentfragment/tst_qtextdocumentfragment.cpp +++ b/tests/auto/qtextdocumentfragment/tst_qtextdocumentfragment.cpp @@ -2197,6 +2197,16 @@ void tst_QTextDocumentFragment::html_quotedFontFamily() setHtml("<div style='font-family: \"Foo Bar\";'>Test</div>"); QCOMPARE(doc->begin().begin().fragment().charFormat().fontFamily(), QString("Foo Bar")); + + setHtml("<div style='font-family: \"Foo Bar\";'>Test</div>"); + QCOMPARE(doc->begin().begin().fragment().charFormat().fontFamily(), QString("Foo Bar")); + + setHtml("<div style='font-family: Foo\n Bar;'>Test</div>"); + QCOMPARE(doc->begin().begin().fragment().charFormat().fontFamily(), QString("Foo Bar")); + + setHtml("<div style='font-family: Foo\n Bar, serif, \"bar foo\";'>Test</div>"); + QCOMPARE(doc->begin().begin().fragment().charFormat().fontFamily(), QString("Foo Bar,serif,bar foo")); + } void tst_QTextDocumentFragment::defaultFont() diff --git a/tests/auto/qtextlayout/tst_qtextlayout.cpp b/tests/auto/qtextlayout/tst_qtextlayout.cpp index fe87dfb..7c3f4f2 100644 --- a/tests/auto/qtextlayout/tst_qtextlayout.cpp +++ b/tests/auto/qtextlayout/tst_qtextlayout.cpp @@ -118,6 +118,7 @@ private slots: void smallTextLengthWordWrap(); void smallTextLengthWrapAtWordBoundaryOrAnywhere(); void testLineBreakingAllSpaces(); + void lineWidthFromBOM(); private: @@ -1306,6 +1307,18 @@ void tst_QTextLayout::columnWrapWithTabs() } +void tst_QTextLayout::lineWidthFromBOM() +{ + const QString string(QChar(0xfeff)); // BYTE ORDER MARK + QTextLayout layout(string); + layout.beginLayout(); + QTextLine line = layout.createLine(); + line.setLineWidth(INT_MAX / 256); + layout.endLayout(); + + // Don't spin into an infinite loop + } + QTEST_MAIN(tst_QTextLayout) #include "tst_qtextlayout.moc" diff --git a/tests/auto/qtextscriptengine/generate/generate.pro b/tests/auto/qtextscriptengine/generate/generate.pro index 355633d..354e0e5 100644 --- a/tests/auto/qtextscriptengine/generate/generate.pro +++ b/tests/auto/qtextscriptengine/generate/generate.pro @@ -5,6 +5,7 @@ TEMPLATE = app CONFIG -= moc INCLUDEPATH += . /usr/include/freetype2 +INCLUDEPATH += $$QT_SOURCE_TREE/src/3rdparty/harfbuzz/src # Input SOURCES += main.cpp diff --git a/tests/auto/qtextscriptengine/generate/main.cpp b/tests/auto/qtextscriptengine/generate/main.cpp index 853c726..15fbc47 100644 --- a/tests/auto/qtextscriptengine/generate/main.cpp +++ b/tests/auto/qtextscriptengine/generate/main.cpp @@ -40,7 +40,7 @@ ****************************************************************************/ -#include <QtTest/QtTest> +#include <QApplication> #include <QTextEdit> #include <QLineEdit> #include <QVBoxLayout> @@ -85,7 +85,7 @@ void MyEdit::setText(const QString &str) result += "0x" + QString::number(str.at(i).unicode(), 16) + ", "; result += "0x0 },\n { "; for (int i = 0; i < e->layoutData->items[0].num_glyphs; ++i) - result += "0x" + QString::number(e->layoutData->glyphPtr[i].glyph, 16) + ", "; + result += "0x" + QString::number(e->layoutData->glyphLayout.glyphs[i], 16) + ", "; result += "0x0 } }"; setPlainText(result); diff --git a/tests/auto/qtextscriptengine/tst_qtextscriptengine.cpp b/tests/auto/qtextscriptengine/tst_qtextscriptengine.cpp index 226348a..78e0ce6 100644 --- a/tests/auto/qtextscriptengine/tst_qtextscriptengine.cpp +++ b/tests/auto/qtextscriptengine/tst_qtextscriptengine.cpp @@ -98,7 +98,7 @@ private slots: void telugu(); void kannada(); void malayalam(); - // sinhala missing + void sinhala(); void khmer(); void linearB(); @@ -379,7 +379,11 @@ void tst_QTextScriptEngine::bengali() { 0x151, 0x276, 0x172, 0x143, 0x0 } }, { { 0x9b0, 0x9cd, 0x995, 0x9be, 0x983, 0x0 }, { 0x151, 0x276, 0x172, 0x144, 0x0 } }, - + // test decomposed two parts matras + { { 0x995, 0x9c7, 0x9be, 0x0 }, + { 0x179, 0x151, 0x172, 0x0 } }, + { { 0x995, 0x9c7, 0x9d7, 0x0 }, + { 0x179, 0x151, 0x17e, 0x0 } }, { {0}, {0} } }; @@ -502,16 +506,16 @@ void tst_QTextScriptEngine::bengali() if (QFontDatabase().families(QFontDatabase::Bengali).contains("Likhan")) { QFont f("Likhan"); const ShapeTable shape_table [] = { - { { 0x09a8, 0x09cd, 0x09af, 0x0 }, - { 0x0192, 0x0 } }, + { { 0x9a8, 0x9cd, 0x9af, 0x0 }, + { 0x1ca, 0x0 } }, { { 0x09b8, 0x09cd, 0x09af, 0x0 }, - { 0x01d6, 0x0 } }, + { 0x020e, 0x0 } }, { { 0x09b6, 0x09cd, 0x09af, 0x0 }, - { 0x01bc, 0x0 } }, + { 0x01f4, 0x0 } }, { { 0x09b7, 0x09cd, 0x09af, 0x0 }, - { 0x01c6, 0x0 } }, + { 0x01fe, 0x0 } }, { { 0x09b0, 0x09cd, 0x09a8, 0x09cd, 0x200d, 0x0 }, - { 0xd3, 0x12f, 0x0 } }, + { 0x10b, 0x167, 0x0 } }, { {0}, {0} } }; @@ -647,6 +651,12 @@ void tst_QTextScriptEngine::tamil() { 0x0025, 0x0 } }, { { 0x0b83, 0x0b95, 0x0 }, { 0x0025, 0x0031, 0x0 } }, + { { 0xb95, 0xbc6, 0xbbe, 0x0 }, + { 0xa, 0x31, 0x7, 0x0 } }, + { { 0xb95, 0xbc7, 0xbbe, 0x0 }, + { 0xb, 0x31, 0x7, 0x0 } }, + { { 0xb95, 0xbc6, 0xbd7, 0x0 }, + { 0xa, 0x31, 0x40, 0x0 } }, { {0}, {0} } }; @@ -694,7 +704,9 @@ void tst_QTextScriptEngine::telugu() { 0xe6, 0xb3, 0x83, 0x0 } }, { { 0xc15, 0xc4d, 0xc30, 0xc48, 0x0 }, { 0xe6, 0xb3, 0x9f, 0x0 } }, - { {0}, {0} } + { { 0xc15, 0xc46, 0xc56, 0x0 }, + { 0xe6, 0xb3, 0x0 } }, + { {0}, {0} } }; @@ -762,7 +774,16 @@ void tst_QTextScriptEngine::kannada() { 0x00b0, 0x006c, 0x0 } }, { { 0x0cb7, 0x0ccd, 0x0 }, { 0x0163, 0x0 } }, - + { { 0xc95, 0xcbf, 0xcd5, 0x0 }, + { 0x114, 0x73, 0x0 } }, + { { 0xc95, 0xcc6, 0xcd5, 0x0 }, + { 0x90, 0x6c, 0x73, 0x0 } }, + { { 0xc95, 0xcc6, 0xcd6, 0x0 }, + { 0x90, 0x6c, 0x74, 0x0 } }, + { { 0xc95, 0xcc6, 0xcc2, 0x0 }, + { 0x90, 0x6c, 0x69, 0x0 } }, + { { 0xc95, 0xcca, 0xcd5, 0x0 }, + { 0x90, 0x6c, 0x69, 0x73, 0x0 } }, { {0}, {0} } }; @@ -816,8 +837,14 @@ void tst_QTextScriptEngine::malayalam() { 0x009e, 0x0 } }, { { 0x0d30, 0x0d4d, 0x200d, 0x0 }, { 0x009e, 0x0 } }, - - + { { 0xd15, 0xd46, 0xd3e, 0x0 }, + { 0x5e, 0x34, 0x58, 0x0 } }, + { { 0xd15, 0xd47, 0xd3e, 0x0 }, + { 0x5f, 0x34, 0x58, 0x0 } }, + { { 0xd15, 0xd46, 0xd57, 0x0 }, + { 0x5e, 0x34, 0x65, 0x0 } }, + { { 0xd15, 0xd57, 0x0 }, + { 0x34, 0x65, 0x0 } }, { {0}, {0} } }; @@ -836,6 +863,42 @@ void tst_QTextScriptEngine::malayalam() #endif } +void tst_QTextScriptEngine::sinhala() +{ +#if defined(Q_WS_X11) + { + if (QFontDatabase().families(QFontDatabase::Sinhala).contains("Malithi Web")) { + QFont f("Malithi Web"); + const ShapeTable shape_table [] = { + { { 0xd9a, 0xdd9, 0xdcf, 0x0 }, + { 0x4a, 0x61, 0x42, 0x0 } }, + { { 0xd9a, 0xdd9, 0xddf, 0x0 }, + { 0x4a, 0x61, 0x50, 0x0 } }, + { { 0xd9a, 0xdd9, 0xdca, 0x0 }, + { 0x4a, 0x62, 0x0 } }, + { { 0xd9a, 0xddc, 0xdca, 0x0 }, + { 0x4a, 0x61, 0x42, 0x41, 0x0 } }, + { { 0xd9a, 0xdda, 0x0 }, + { 0x4a, 0x62, 0x0 } }, + { { 0xd9a, 0xddd, 0x0 }, + { 0x4a, 0x61, 0x42, 0x41, 0x0 } }, + { {0}, {0} } + }; + + + const ShapeTable *s = shape_table; + while (s->unicode[0]) { + QVERIFY( shaping(f, s) ); + ++s; + } + } else { + QSKIP("couln't find Malithi Web", SkipAll); + } + } +#else + QSKIP("X11 specific test", SkipAll); +#endif +} void tst_QTextScriptEngine::khmer() diff --git a/tests/auto/qtreeview/tst_qtreeview.cpp b/tests/auto/qtreeview/tst_qtreeview.cpp index 90e6c5c..58f059b 100644 --- a/tests/auto/qtreeview/tst_qtreeview.cpp +++ b/tests/auto/qtreeview/tst_qtreeview.cpp @@ -3669,11 +3669,11 @@ void tst_QTreeView::doubleClickedWithSpans() //end the previous edition QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, p); - QTest::qWait(100); + QTest::qWait(150); QTest::mousePress(view.viewport(), Qt::LeftButton, 0, p); QTest::mouseDClick(view.viewport(), Qt::LeftButton, 0, p); QTest::mouseRelease(view.viewport(), Qt::LeftButton, 0, p); - QCOMPARE(spy.count(), 2); + QTRY_COMPARE(spy.count(), 2); } QTEST_MAIN(tst_QTreeView) diff --git a/tests/auto/qvariant/tst_qvariant.cpp b/tests/auto/qvariant/tst_qvariant.cpp index e2a606f..3d68a73 100644 --- a/tests/auto/qvariant/tst_qvariant.cpp +++ b/tests/auto/qvariant/tst_qvariant.cpp @@ -1432,8 +1432,10 @@ void tst_QVariant::matrix4x4() QVariant variant; QMatrix4x4 matrix = qVariantValue<QMatrix4x4>(variant); QVERIFY(matrix.isIdentity()); - qVariantSetValue(variant, QMatrix4x4().scale(2.0)); - QCOMPARE(QMatrix4x4().scale(2.0), qVariantValue<QMatrix4x4>(variant)); + QMatrix4x4 m; + m.scale(2.0f); + qVariantSetValue(variant, m); + QCOMPARE(m, qVariantValue<QMatrix4x4>(variant)); void *mmatrix = QMetaType::construct(QVariant::Matrix4x4, 0); QVERIFY(mmatrix); diff --git a/tests/auto/qvideoframe/tst_qvideoframe.cpp b/tests/auto/qvideoframe/tst_qvideoframe.cpp index b231069..432ef5c 100644 --- a/tests/auto/qvideoframe/tst_qvideoframe.cpp +++ b/tests/auto/qvideoframe/tst_qvideoframe.cpp @@ -524,7 +524,7 @@ void tst_QVideoFrame::assign() void tst_QVideoFrame::map_data() { QTest::addColumn<QSize>("size"); - QTest::addColumn<int>("numBytes"); + QTest::addColumn<int>("mappedBytes"); QTest::addColumn<int>("bytesPerLine"); QTest::addColumn<QVideoFrame::PixelFormat>("pixelFormat"); QTest::addColumn<QAbstractVideoBuffer::MapMode>("mode"); @@ -554,29 +554,29 @@ void tst_QVideoFrame::map_data() void tst_QVideoFrame::map() { QFETCH(QSize, size); - QFETCH(int, numBytes); + QFETCH(int, mappedBytes); QFETCH(int, bytesPerLine); QFETCH(QVideoFrame::PixelFormat, pixelFormat); QFETCH(QAbstractVideoBuffer::MapMode, mode); - QVideoFrame frame(numBytes, size, bytesPerLine, pixelFormat); + QVideoFrame frame(mappedBytes, size, bytesPerLine, pixelFormat); QVERIFY(!frame.bits()); - QCOMPARE(frame.numBytes(), 0); + QCOMPARE(frame.mappedBytes(), 0); QCOMPARE(frame.bytesPerLine(), 0); QCOMPARE(frame.mapMode(), QAbstractVideoBuffer::NotMapped); QVERIFY(frame.map(mode)); QVERIFY(frame.bits()); - QCOMPARE(frame.numBytes(), numBytes); + QCOMPARE(frame.mappedBytes(), mappedBytes); QCOMPARE(frame.bytesPerLine(), bytesPerLine); QCOMPARE(frame.mapMode(), mode); frame.unmap(); QVERIFY(!frame.bits()); - QCOMPARE(frame.numBytes(), 0); + QCOMPARE(frame.mappedBytes(), 0); QCOMPARE(frame.bytesPerLine(), 0); QCOMPARE(frame.mapMode(), QAbstractVideoBuffer::NotMapped); } @@ -614,21 +614,21 @@ void tst_QVideoFrame::mapImage() QVideoFrame frame(image); QVERIFY(!frame.bits()); - QCOMPARE(frame.numBytes(), 0); + QCOMPARE(frame.mappedBytes(), 0); QCOMPARE(frame.bytesPerLine(), 0); QCOMPARE(frame.mapMode(), QAbstractVideoBuffer::NotMapped); QVERIFY(frame.map(mode)); QVERIFY(frame.bits()); - QCOMPARE(frame.numBytes(), image.numBytes()); + QCOMPARE(frame.mappedBytes(), image.numBytes()); QCOMPARE(frame.bytesPerLine(), image.bytesPerLine()); QCOMPARE(frame.mapMode(), mode); frame.unmap(); QVERIFY(!frame.bits()); - QCOMPARE(frame.numBytes(), 0); + QCOMPARE(frame.mappedBytes(), 0); QCOMPARE(frame.bytesPerLine(), 0); QCOMPARE(frame.mapMode(), QAbstractVideoBuffer::NotMapped); } diff --git a/tests/auto/qvideosurfaceformat/tst_qvideosurfaceformat.cpp b/tests/auto/qvideosurfaceformat/tst_qvideosurfaceformat.cpp index 9623e80..a47cb48 100644 --- a/tests/auto/qvideosurfaceformat/tst_qvideosurfaceformat.cpp +++ b/tests/auto/qvideosurfaceformat/tst_qvideosurfaceformat.cpp @@ -68,8 +68,8 @@ private slots: void scanLineDirection(); void frameRate_data(); void frameRate(); - void yuvColorSpace_data(); - void yuvColorSpace(); + void yCbCrColorSpace_data(); + void yCbCrColorSpace(); void pixelAspectRatio_data(); void pixelAspectRatio(); void sizeHint_data(); @@ -81,9 +81,6 @@ private slots: void assign(); }; -Q_DECLARE_METATYPE(QVideoSurfaceFormat::ViewportMode) - - tst_QVideoSurfaceFormat::tst_QVideoSurfaceFormat() { } @@ -122,7 +119,7 @@ void tst_QVideoSurfaceFormat::constructNull() QCOMPARE(format.scanLineDirection(), QVideoSurfaceFormat::TopToBottom); QCOMPARE(format.frameRate(), 0.0); QCOMPARE(format.pixelAspectRatio(), QSize(1, 1)); - QCOMPARE(format.yuvColorSpace(), QVideoSurfaceFormat::YCbCr_Undefined); + QCOMPARE(format.yCbCrColorSpace(), QVideoSurfaceFormat::YCbCr_Undefined); } void tst_QVideoSurfaceFormat::construct_data() @@ -161,7 +158,7 @@ void tst_QVideoSurfaceFormat::construct() QCOMPARE(format.scanLineDirection(), QVideoSurfaceFormat::TopToBottom); QCOMPARE(format.frameRate(), 0.0); QCOMPARE(format.pixelAspectRatio(), QSize(1, 1)); - QCOMPARE(format.yuvColorSpace(), QVideoSurfaceFormat::YCbCr_Undefined); + QCOMPARE(format.yCbCrColorSpace(), QVideoSurfaceFormat::YCbCr_Undefined); } void tst_QVideoSurfaceFormat::frameSize_data() @@ -202,45 +199,23 @@ void tst_QVideoSurfaceFormat::viewport_data() QTest::addColumn<QSize>("initialSize"); QTest::addColumn<QRect>("viewport"); QTest::addColumn<QSize>("newSize"); - QTest::addColumn<QVideoSurfaceFormat::ViewportMode>("viewportMode"); QTest::addColumn<QRect>("expectedViewport"); QTest::newRow("grow reset") << QSize(64, 64) << QRect(8, 8, 48, 48) << QSize(1024, 1024) - << QVideoSurfaceFormat::ResetViewport << QRect(0, 0, 1024, 1024); - QTest::newRow("grow keep") - << QSize(64, 64) - << QRect(8, 8, 48, 48) - << QSize(1024, 1024) - << QVideoSurfaceFormat::KeepViewport - << QRect(8, 8, 48, 48); QTest::newRow("shrink reset") << QSize(1024, 1024) << QRect(8, 8, 1008, 1008) << QSize(64, 64) - << QVideoSurfaceFormat::ResetViewport << QRect(0, 0, 64, 64); - QTest::newRow("shrink keep") - << QSize(1024, 1024) - << QRect(8, 8, 1008, 1008) - << QSize(64, 64) - << QVideoSurfaceFormat::KeepViewport - << QRect(8, 8, 56, 56); QTest::newRow("unchanged reset") << QSize(512, 512) << QRect(8, 8, 496, 496) << QSize(512, 512) - << QVideoSurfaceFormat::ResetViewport << QRect(0, 0, 512, 512); - QTest::newRow("unchanged keep") - << QSize(512, 512) - << QRect(8, 8, 496, 496) - << QSize(512, 512) - << QVideoSurfaceFormat::KeepViewport - << QRect(8, 8, 496, 496); } void tst_QVideoSurfaceFormat::viewport() @@ -248,7 +223,6 @@ void tst_QVideoSurfaceFormat::viewport() QFETCH(QSize, initialSize); QFETCH(QRect, viewport); QFETCH(QSize, newSize); - QFETCH(QVideoSurfaceFormat::ViewportMode, viewportMode); QFETCH(QRect, expectedViewport); { @@ -261,7 +235,7 @@ void tst_QVideoSurfaceFormat::viewport() QCOMPARE(format.viewport(), viewport); QCOMPARE(format.property("viewport").toRect(), viewport); - format.setFrameSize(newSize, viewportMode); + format.setFrameSize(newSize); QCOMPARE(format.viewport(), expectedViewport); QCOMPARE(format.property("viewport").toRect(), expectedViewport); @@ -350,9 +324,9 @@ void tst_QVideoSurfaceFormat::frameRate() } } -void tst_QVideoSurfaceFormat::yuvColorSpace_data() +void tst_QVideoSurfaceFormat::yCbCrColorSpace_data() { - QTest::addColumn<QVideoSurfaceFormat::YuvColorSpace>("colorspace"); + QTest::addColumn<QVideoSurfaceFormat::YCbCrColorSpace>("colorspace"); QTest::newRow("undefined") << QVideoSurfaceFormat::YCbCr_Undefined; @@ -364,24 +338,24 @@ void tst_QVideoSurfaceFormat::yuvColorSpace_data() << QVideoSurfaceFormat::YCbCr_JPEG; } -void tst_QVideoSurfaceFormat::yuvColorSpace() +void tst_QVideoSurfaceFormat::yCbCrColorSpace() { - QFETCH(QVideoSurfaceFormat::YuvColorSpace, colorspace); + QFETCH(QVideoSurfaceFormat::YCbCrColorSpace, colorspace); { QVideoSurfaceFormat format(QSize(64, 64), QVideoFrame::Format_RGB32); - format.setYuvColorSpace(colorspace); + format.setYCbCrColorSpace(colorspace); - QCOMPARE(format.yuvColorSpace(), colorspace); - QCOMPARE(qvariant_cast<QVideoSurfaceFormat::YuvColorSpace>(format.property("yuvColorSpace")), + QCOMPARE(format.yCbCrColorSpace(), colorspace); + QCOMPARE(qvariant_cast<QVideoSurfaceFormat::YCbCrColorSpace>(format.property("yCbCrColorSpace")), colorspace); } { QVideoSurfaceFormat format(QSize(64, 64), QVideoFrame::Format_RGB32); - format.setProperty("yuvColorSpace", qVariantFromValue(colorspace)); + format.setProperty("yCbCrColorSpace", qVariantFromValue(colorspace)); - QCOMPARE(format.yuvColorSpace(), colorspace); - QCOMPARE(qvariant_cast<QVideoSurfaceFormat::YuvColorSpace>(format.property("yuvColorSpace")), + QCOMPARE(format.yCbCrColorSpace(), colorspace); + QCOMPARE(qvariant_cast<QVideoSurfaceFormat::YCbCrColorSpace>(format.property("yCbCrColorSpace")), colorspace); } } @@ -483,7 +457,7 @@ void tst_QVideoSurfaceFormat::staticPropertyNames() QVERIFY(propertyNames.contains("scanLineDirection")); QVERIFY(propertyNames.contains("frameRate")); QVERIFY(propertyNames.contains("pixelAspectRatio")); - QVERIFY(propertyNames.contains("yuvColorSpace")); + QVERIFY(propertyNames.contains("yCbCrColorSpace")); QVERIFY(propertyNames.contains("sizeHint")); QCOMPARE(propertyNames.count(), 10); } @@ -566,19 +540,26 @@ void tst_QVideoSurfaceFormat::compare() QCOMPARE(format1 == format4, false); QCOMPARE(format1 != format4, true); - format2.setFrameSize(1024, 768, QVideoSurfaceFormat::ResetViewport); + format2.setFrameSize(1024, 768); // Not equal, frame size differs. QCOMPARE(format1 == format2, false); QCOMPARE(format1 != format2, true); - format1.setFrameSize(1024, 768, QVideoSurfaceFormat::KeepViewport); + format1.setFrameSize(1024, 768); + + // Equal. + QCOMPARE(format1 == format2, true); + QCOMPARE(format1 != format2, false); + + format1.setViewport(QRect(0, 0, 800, 600)); + format2.setViewport(QRect(112, 84, 800, 600)); - // Not equal, viewport differs. + // Not equal, viewports differ. QCOMPARE(format1 == format2, false); QCOMPARE(format1 != format2, true); - format1.setViewport(QRect(0, 0, 1024, 768)); + format1.setViewport(QRect(112, 84, 800, 600)); // Equal. QCOMPARE(format1 == format2, true); @@ -620,13 +601,13 @@ void tst_QVideoSurfaceFormat::compare() QCOMPARE(format1 == format2, true); QCOMPARE(format1 != format2, false); - format2.setYuvColorSpace(QVideoSurfaceFormat::YCbCr_xvYCC601); + format2.setYCbCrColorSpace(QVideoSurfaceFormat::YCbCr_xvYCC601); // Not equal yuv color space differs. QCOMPARE(format1 == format2, false); QCOMPARE(format1 != format2, true); - format1.setYuvColorSpace(QVideoSurfaceFormat::YCbCr_xvYCC601); + format1.setYCbCrColorSpace(QVideoSurfaceFormat::YCbCr_xvYCC601); // Equal. QCOMPARE(format1 == format2, true); diff --git a/tests/auto/qwidget/tst_qwidget.cpp b/tests/auto/qwidget/tst_qwidget.cpp index 3d801cc..e027dd1 100644 --- a/tests/auto/qwidget/tst_qwidget.cpp +++ b/tests/auto/qwidget/tst_qwidget.cpp @@ -3328,9 +3328,10 @@ void tst_QWidget::widgetAt() w2->lower(); qApp->processEvents(); QTRY_VERIFY((wr = QApplication::widgetAt(100, 100))); - QCOMPARE(wr->objectName(), QString("w1")); - + const bool match = (wr->objectName() == QString("w1")); w2->raise(); + QVERIFY(match); + qApp->processEvents(); QTRY_VERIFY((wr = QApplication::widgetAt(100, 100))); QCOMPARE(wr->objectName(), QString("w2")); diff --git a/tests/auto/qwidgetaction/tst_qwidgetaction.cpp b/tests/auto/qwidgetaction/tst_qwidgetaction.cpp index 50b3337..d25738f 100644 --- a/tests/auto/qwidgetaction/tst_qwidgetaction.cpp +++ b/tests/auto/qwidgetaction/tst_qwidgetaction.cpp @@ -395,7 +395,9 @@ void tst_QWidgetAction::releaseWidgetCrash() QMainWindow *w = new QMainWindow; QAction *a = new CrashedAction(w); QMenu *menu = w->menuBar()->addMenu("Test"); + menu->addAction("foo"); menu->addAction(a); + menu->addAction("bar"); delete w; } diff --git a/tests/auto/qxmlnodemodelindex/tst_qxmlnodemodelindex.cpp b/tests/auto/qxmlnodemodelindex/tst_qxmlnodemodelindex.cpp index cb6bd4d..c19deb6 100644 --- a/tests/auto/qxmlnodemodelindex/tst_qxmlnodemodelindex.cpp +++ b/tests/auto/qxmlnodemodelindex/tst_qxmlnodemodelindex.cpp @@ -178,7 +178,7 @@ void tst_QXmlNodeModelIndex::model() const /* Check default value. */ { const QXmlNodeModelIndex index; - QCOMPARE(index.model(), static_cast<void *>(0)); + QCOMPARE(index.model(), static_cast<const QAbstractXmlNodeModel *>(0)); } } diff --git a/tests/auto/qxmlquery/tst_qxmlquery.cpp b/tests/auto/qxmlquery/tst_qxmlquery.cpp index 8a9d4ef..49f2b08 100644 --- a/tests/auto/qxmlquery/tst_qxmlquery.cpp +++ b/tests/auto/qxmlquery/tst_qxmlquery.cpp @@ -345,8 +345,8 @@ void tst_QXmlQuery::copyConstructor() const query1.setInitialTemplateName(name); const QXmlQuery query2(query1); - QCOMPARE(query2.messageHandler(), &silencer); - QCOMPARE(query2.uriResolver(), &resolver); + QCOMPARE(query2.messageHandler(), static_cast<QAbstractMessageHandler *>(&silencer)); + QCOMPARE(query2.uriResolver(), static_cast<const QAbstractUriResolver *>(&resolver)); QCOMPARE(query2.queryLanguage(), QXmlQuery::XSLT20); QCOMPARE(query2.initialTemplateName(), name); QCOMPARE(query2.networkAccessManager(), &networkManager); @@ -522,7 +522,7 @@ void tst_QXmlQuery::assignmentOperator() const QVERIFY(copy.isValid()); QCOMPARE(copy.uriResolver(), static_cast<const QAbstractUriResolver *>(&returnURI)); - QCOMPARE(copy.messageHandler(), &silencer); + QCOMPARE(copy.messageHandler(), static_cast<QAbstractMessageHandler *>(&silencer)); QCOMPARE(testName.localName(copy.namePool()), QString::fromLatin1("somethingToCheck")); QXmlResultItems result; @@ -559,7 +559,7 @@ void tst_QXmlQuery::assignmentOperator() const /* Check that the copy picked up the new things. */ QVERIFY(copy.isValid()); QCOMPARE(copy.uriResolver(), static_cast<const QAbstractUriResolver *>(&secondUriResolver)); - QCOMPARE(copy.messageHandler(), &secondSilencer); + QCOMPARE(copy.messageHandler(), static_cast<QAbstractMessageHandler *>(&secondSilencer)); QXmlResultItems resultCopy; copy.evaluateTo(&resultCopy); @@ -577,7 +577,7 @@ void tst_QXmlQuery::assignmentOperator() const /* Check that the original is unchanged. */ QVERIFY(original.isValid()); QCOMPARE(original.uriResolver(), static_cast<const QAbstractUriResolver *>(&returnURI)); - QCOMPARE(original.messageHandler(), &silencer); + QCOMPARE(original.messageHandler(), static_cast<QAbstractMessageHandler *>(&silencer)); QXmlResultItems resultOriginal; original.evaluateTo(&resultOriginal); @@ -931,7 +931,7 @@ void tst_QXmlQuery::setMessageHandler() const QXmlQuery query; MessageSilencer silencer; query.setMessageHandler(&silencer); - QCOMPARE(&silencer, query.messageHandler()); + QCOMPARE(static_cast<QAbstractMessageHandler *>(&silencer), query.messageHandler()); } void tst_QXmlQuery::evaluateToReceiver() @@ -1691,7 +1691,7 @@ void tst_QXmlQuery::setUriResolver() const TestURIResolver resolver; QXmlQuery query; query.setUriResolver(&resolver); - QCOMPARE(query.uriResolver(), &resolver); + QCOMPARE(query.uriResolver(), static_cast<const QAbstractUriResolver *>(&resolver)); } } diff --git a/tests/auto/qxmlschema/tst_qxmlschema.cpp b/tests/auto/qxmlschema/tst_qxmlschema.cpp index 79f5587..ec91f88 100644 --- a/tests/auto/qxmlschema/tst_qxmlschema.cpp +++ b/tests/auto/qxmlschema/tst_qxmlschema.cpp @@ -357,7 +357,7 @@ void tst_QXmlSchema::messageHandler() const QXmlSchema schema; schema.setMessageHandler(&handler); - QCOMPARE(schema.messageHandler(), &handler); + QCOMPARE(schema.messageHandler(), static_cast<QAbstractMessageHandler *>(&handler)); } } @@ -394,7 +394,7 @@ void tst_QXmlSchema::uriResolver() const QXmlSchema schema; schema.setUriResolver(&resolver); - QCOMPARE(schema.uriResolver(), &resolver); + QCOMPARE(schema.uriResolver(), static_cast<const QAbstractUriResolver *>(&resolver)); } } diff --git a/tests/auto/qxmlschemavalidator/tst_qxmlschemavalidator.cpp b/tests/auto/qxmlschemavalidator/tst_qxmlschemavalidator.cpp index 519f864..9fc784b 100644 --- a/tests/auto/qxmlschemavalidator/tst_qxmlschemavalidator.cpp +++ b/tests/auto/qxmlschemavalidator/tst_qxmlschemavalidator.cpp @@ -149,8 +149,8 @@ void tst_QXmlSchemaValidator::propertyInitialization() const schema.setNetworkAccessManager(&manager); QXmlSchemaValidator validator(schema); - QCOMPARE(validator.messageHandler(), &handler); - QCOMPARE(validator.uriResolver(), &resolver); + QCOMPARE(validator.messageHandler(), static_cast<QAbstractMessageHandler *>(&handler)); + QCOMPARE(validator.uriResolver(), static_cast<const QAbstractUriResolver *>(&resolver)); QCOMPARE(validator.networkAccessManager(), &manager); } } @@ -384,7 +384,7 @@ void tst_QXmlSchemaValidator::messageHandler() const QXmlSchemaValidator validator(schema); validator.setMessageHandler(&handler); - QCOMPARE(validator.messageHandler(), &handler); + QCOMPARE(validator.messageHandler(), static_cast<QAbstractMessageHandler *>(&handler)); } /* Test that we return the message handler that was set, even if the schema changed in between. */ @@ -399,7 +399,7 @@ void tst_QXmlSchemaValidator::messageHandler() const const QXmlSchema schema2; validator.setSchema(schema2); - QCOMPARE(validator.messageHandler(), &handler); + QCOMPARE(validator.messageHandler(), static_cast<QAbstractMessageHandler *>(&handler)); } } @@ -452,7 +452,7 @@ void tst_QXmlSchemaValidator::uriResolver() const QXmlSchemaValidator validator(schema); validator.setUriResolver(&resolver); - QCOMPARE(validator.uriResolver(), &resolver); + QCOMPARE(validator.uriResolver(), static_cast<const QAbstractUriResolver *>(&resolver)); } /* Test that we return the uri resolver that was set, even if the schema changed in between. */ @@ -467,7 +467,7 @@ void tst_QXmlSchemaValidator::uriResolver() const const QXmlSchema schema2; validator.setSchema(schema2); - QCOMPARE(validator.uriResolver(), &resolver); + QCOMPARE(validator.uriResolver(), static_cast<const QAbstractUriResolver *>(&resolver)); } } diff --git a/tests/auto/qxmlserializer/tst_qxmlserializer.cpp b/tests/auto/qxmlserializer/tst_qxmlserializer.cpp index aeca140..51044ff 100644 --- a/tests/auto/qxmlserializer/tst_qxmlserializer.cpp +++ b/tests/auto/qxmlserializer/tst_qxmlserializer.cpp @@ -148,7 +148,7 @@ void tst_QXmlSerializer::outputDevice() const { const QXmlQuery query; const QXmlSerializer serializer(query, &file); - QCOMPARE(serializer.outputDevice(), &file); + QCOMPARE(serializer.outputDevice(), static_cast< QIODevice *>(&file)); } } @@ -158,7 +158,7 @@ void tst_QXmlSerializer::serializationError() const QXmlQuery query; MessageSilencer silencer; query.setMessageHandler(&silencer); - + query.setQuery(queryString); QByteArray output; diff --git a/tests/auto/uiloader/baseline/css_itemview_task258382.ui b/tests/auto/uiloader/baseline/css_itemview_task258382.ui new file mode 100644 index 0000000..11c56b4 --- /dev/null +++ b/tests/auto/uiloader/baseline/css_itemview_task258382.ui @@ -0,0 +1,179 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>Form</class> + <widget class="QWidget" name="Form"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>437</width> + <height>352</height> + </rect> + </property> + <property name="windowTitle"> + <string>Form</string> + </property> + <property name="styleSheet"> + <string notr="true">::item { border: 1px solid black; background-color: purple; } +::item {margin-left: 20px; } + +QAbstractItemView { selection-background-color: red; +show-decoration- selected: 0; + } + +::item:selected { background-color: yellow; }</string> + </property> + <layout class="QGridLayout" name="gridLayout"> + <item row="0" column="0"> + <widget class="QTreeWidget" name="treeWidget"> + <column> + <property name="text"> + <string>1</string> + </property> + </column> + <column> + <property name="text"> + <string>New Column</string> + </property> + </column> + <item> + <property name="text"> + <string>New Item</string> + </property> + </item> + <item> + <property name="text"> + <string>New Item</string> + </property> + </item> + <item> + <property name="text"> + <string>New Item</string> + </property> + <item> + <property name="text"> + <string>New Subitem</string> + </property> + <item> + <property name="text"> + <string>New Subitem</string> + </property> + </item> + <item> + <property name="text"> + <string>New Item</string> + </property> + </item> + <item> + <property name="text"> + <string>New Item</string> + </property> + </item> + </item> + </item> + </widget> + </item> + <item row="1" column="0"> + <widget class="QTableWidget" name="tableWidget"> + <row> + <property name="text"> + <string>New Row</string> + </property> + </row> + <row> + <property name="text"> + <string>New Row</string> + </property> + </row> + <row> + <property name="text"> + <string>New Row</string> + </property> + </row> + <row> + <property name="text"> + <string>New Row</string> + </property> + </row> + <row> + <property name="text"> + <string>New Row</string> + </property> + </row> + <column> + <property name="text"> + <string>New Column</string> + </property> + </column> + <column> + <property name="text"> + <string>New Column</string> + </property> + </column> + <column> + <property name="text"> + <string>New Column</string> + </property> + </column> + <column> + <property name="text"> + <string>New Column</string> + </property> + </column> + <item row="0" column="0"> + <property name="text"> + <string>mljkh mh mjl</string> + </property> + </item> + <item row="0" column="1"> + <property name="text"> + <string>h jlh mjklh </string> + </property> + </item> + <item row="0" column="2"> + <property name="text"> + <string>mjklh mlhj mjlh m</string> + </property> + </item> + <item row="1" column="3"> + <property name="text"> + <string>mlhj lmhj </string> + </property> + </item> + <item row="2" column="0"> + <property name="text"> + <string>mlkj l</string> + </property> + </item> + <item row="2" column="1"> + <property name="text"> + <string>mlkj </string> + </property> + </item> + <item row="2" column="2"> + <property name="text"> + <string>mlkj lmkj </string> + </property> + </item> + <item row="2" column="3"> + <property name="text"> + <string>mlkhj mlh</string> + </property> + </item> + <item row="3" column="1"> + <property name="text"> + <string>mlkj lmkj </string> + </property> + </item> + <item row="4" column="0"> + <property name="text"> + <string>mlkj lmkj </string> + </property> + </item> + </widget> + </item> + </layout> + </widget> + <resources/> + <connections/> +</ui> diff --git a/tests/auto/xmlpatterns.pri b/tests/auto/xmlpatterns.pri index 7cdd67f..8c8ccad 100644 --- a/tests/auto/xmlpatterns.pri +++ b/tests/auto/xmlpatterns.pri @@ -15,8 +15,9 @@ QT -= gui XMLPATTERNS_SDK = QtXmlPatternsSDK if(!debug_and_release|build_pass):CONFIG(debug, debug|release) { - win32:XMLPATTERNS_SDK = $${XMLPATTERNS_SDK}d - else: XMLPATTERNS_SDK = $${XMLPATTERNS_SDK}_debug + symbian: XMLPATTERNS_SDK = $${XMLPATTERNS_SDK} + else:win32: XMLPATTERNS_SDK = $${XMLPATTERNS_SDK}d + else: XMLPATTERNS_SDK = $${XMLPATTERNS_SDK}_debug } INCLUDEPATH += \ diff --git a/tests/auto/xmlpatterns/tst_xmlpatterns.cpp b/tests/auto/xmlpatterns/tst_xmlpatterns.cpp index 0dcb070..22f6693 100644 --- a/tests/auto/xmlpatterns/tst_xmlpatterns.cpp +++ b/tests/auto/xmlpatterns/tst_xmlpatterns.cpp @@ -48,6 +48,10 @@ #include "../qxmlquery/TestFundament.h" #include "../network-settings.h" +#if defined(Q_OS_SYMBIAN) +#define SRCDIR "" +#endif + /*! \class tst_XmlPatterns \internal @@ -130,6 +134,8 @@ void tst_XmlPatterns::xquerySupport() #ifdef Q_OS_WINCE QSKIP("WinCE: This test uses unsupported WinCE functionality", SkipAll); +#elif defined(Q_OS_SYMBIAN) + QSKIP("Symbian: This test uses unsupported Symbian functionality (QProcess with std streams)", SkipAll); #endif QFETCH(int, expectedExitCode); @@ -218,7 +224,7 @@ void tst_XmlPatterns::xquerySupport() void tst_XmlPatterns::xquerySupport_data() const { -#ifdef Q_OS_WINCE +#if defined(Q_OS_WINCE) || defined(Q_OS_SYMBIAN) return; #endif @@ -849,6 +855,8 @@ void tst_XmlPatterns::xsltSupport_data() const #ifdef Q_OS_WINCE QSKIP("WinCE: This test uses unsupported WinCE functionality", SkipAll); +#elif defined(Q_OS_SYMBIAN) + QSKIP("Symbian: This test uses unsupported Symbian functionality (QProcess with std streams)", SkipAll); #endif QTest::addColumn<int>("expectedExitCode"); diff --git a/tests/auto/xmlpatterns/xmlpatterns.pro b/tests/auto/xmlpatterns/xmlpatterns.pro index 01e3b2b..54dd9aa 100644 --- a/tests/auto/xmlpatterns/xmlpatterns.pro +++ b/tests/auto/xmlpatterns/xmlpatterns.pro @@ -2,10 +2,10 @@ load(qttest_p4) SOURCES += tst_xmlpatterns.cpp \ ../qxmlquery/TestFundament.cpp -!wince* { -DEFINES += SRCDIR=\\\"$$PWD/\\\" -} else { +wince* { DEFINES += SRCDIR=\\\"./\\\" +} else:!symbian { +DEFINES += SRCDIR=\\\"$$PWD/\\\" } include (../xmlpatterns.pri) diff --git a/tests/auto/xmlpatternsdiagnosticsts/test/test.pro b/tests/auto/xmlpatternsdiagnosticsts/test/test.pro index aeff896..acd71e4 100644 --- a/tests/auto/xmlpatternsdiagnosticsts/test/test.pro +++ b/tests/auto/xmlpatternsdiagnosticsts/test/test.pro @@ -25,8 +25,8 @@ INCLUDEPATH += $$(QTSRCDIR)/tests/auto/xmlpatternsxqts/lib/ \ ../../xmlpatternsxqts/test \ ../../xmlpatternsxqts/lib -wince*: { - catalog.sources = TestSuite Baseline.xml +wince*|symbian { + catalog.sources = ../TestSuite ../Baseline.xml catalog.path = . DEPLOYMENT += catalog } diff --git a/tests/auto/xmlpatternsschemats/xmlpatternsschemats.pro b/tests/auto/xmlpatternsschemats/xmlpatternsschemats.pro index bcc988a..0f55078 100644 --- a/tests/auto/xmlpatternsschemats/xmlpatternsschemats.pro +++ b/tests/auto/xmlpatternsschemats/xmlpatternsschemats.pro @@ -11,8 +11,9 @@ SOURCES += ../xmlpatternsxqts/test/tst_suitetest.cpp PATTERNIST_SDK = QtXmlPatternsSDK if(!debug_and_release|build_pass):CONFIG(debug, debug|release) { - win32:PATTERNIST_SDK = $${PATTERNIST_SDK}d - else: PATTERNIST_SDK = $${PATTERNIST_SDK}_debug + symbian: PATTERNIST_SDK = $${PATTERNIST_SDK} + else:win32: PATTERNIST_SDK = $${PATTERNIST_SDK}d + else: PATTERNIST_SDK = $${PATTERNIST_SDK}_debug } LIBS += -l$$PATTERNIST_SDK diff --git a/tests/auto/xmlpatternsxqts/lib/Global.h b/tests/auto/xmlpatternsxqts/lib/Global.h index eadb940..a620417 100644 --- a/tests/auto/xmlpatternsxqts/lib/Global.h +++ b/tests/auto/xmlpatternsxqts/lib/Global.h @@ -47,7 +47,7 @@ #include "private/qitem_p.h" #include "private/qnamepool_p.h" -#ifdef Q_WS_WIN +#if defined(Q_WS_WIN) || defined(Q_OS_SYMBIAN) # ifdef Q_PATTERNISTSDK_BUILDING #define Q_PATTERNISTSDK_EXPORT __declspec(dllexport) #else diff --git a/tests/auto/xmlpatternsxqts/lib/lib.pro b/tests/auto/xmlpatternsxqts/lib/lib.pro index cb9453a..f5b0a06 100644 --- a/tests/auto/xmlpatternsxqts/lib/lib.pro +++ b/tests/auto/xmlpatternsxqts/lib/lib.pro @@ -13,6 +13,12 @@ mac { INSTALLS += target } +symbian { + TARGET.EPOCALLOWDLLDATA=1 + TARGET.CAPABILITY = All -Tcb + MMP_RULES += EXPORTUNFROZEN +} + # We add gui, because xmlpatterns.pri pull it out. QT += xmlpatterns xml network testlib gui diff --git a/tests/auto/xmlpatternsxqts/test/test.pro b/tests/auto/xmlpatternsxqts/test/test.pro index 603ae65..a69838a 100644 --- a/tests/auto/xmlpatternsxqts/test/test.pro +++ b/tests/auto/xmlpatternsxqts/test/test.pro @@ -24,5 +24,3 @@ win32 { else: DESTDIR = ../release } TARGET = tst_xmlpatternsxqts - -include (../../xmlpatterns.pri) diff --git a/tests/auto/xmlpatternsxqts/xmlpatternsxqts.pro b/tests/auto/xmlpatternsxqts/xmlpatternsxqts.pro index a3b13da..39267c8 100644 --- a/tests/auto/xmlpatternsxqts/xmlpatternsxqts.pro +++ b/tests/auto/xmlpatternsxqts/xmlpatternsxqts.pro @@ -1,10 +1,10 @@ TEMPLATE = subdirs -SUBDIRS = test contains(QT_CONFIG,xmlpatterns) { SUBDIRS += lib !wince*:lib.file = lib/lib.pro test.depends = lib } +SUBDIRS += test # Needed on the win32-g++ setup and on the test machine arsia. INCLUDEPATH += $$QT_BUILD_TREE/include/QtXmlPatterns/private \ diff --git a/tests/benchmarks/declarative/qmlcomponent/samegame/BoomBlock.qml b/tests/benchmarks/declarative/qmlcomponent/samegame/BoomBlock.qml index a495cd0..723e62a 100644 --- a/tests/benchmarks/declarative/qmlcomponent/samegame/BoomBlock.qml +++ b/tests/benchmarks/declarative/qmlcomponent/samegame/BoomBlock.qml @@ -21,14 +21,16 @@ Item { id:block } } opacity: 0 - opacity: Behavior { NumberAnimation { properties:"opacity"; duration: 200 } } + opacity: Behavior { NumberAnimation { duration: 200 } } anchors.fill: parent } Particles { id: particles - width:1; height:1; anchors.centerIn: parent; opacity: 0 - lifeSpan: 700; lifeSpanDeviation: 600; count:0; streamIn: false - angle: 0; angleDeviation: 360; velocity: 100; velocityDeviation:30 + width:1; height:1; anchors.centerIn: parent; + emissionRate: 0; + lifeSpan: 700; lifeSpanDeviation: 600; + angle: 0; angleDeviation: 360; + velocity: 100; velocityDeviation:30; source: { if(type == 0){ "pics/redStar.png"; @@ -45,10 +47,9 @@ Item { id:block PropertyChanges { target: img; opacity: 1 } }, State{ name: "DeathState"; when: dying == true - PropertyChanges { target: particles; count: 50 } - PropertyChanges { target: particles; opacity: 1 } - PropertyChanges { target: particles; emitting: false } // i.e. emit only once + StateChangeScript { script: particles.burst(50); } PropertyChanges { target: img; opacity: 0 } + StateChangeScript { script: block.destroy(1000); } } ] } diff --git a/tests/benchmarks/qanimation/rectanimation.cpp b/tests/benchmarks/qanimation/rectanimation.cpp index ab381f4..88eec4d 100644 --- a/tests/benchmarks/qanimation/rectanimation.cpp +++ b/tests/benchmarks/qanimation/rectanimation.cpp @@ -92,8 +92,3 @@ void RectAnimation::updateCurrentTime(int currentTime) if (m_object) m_object->setRect(m_current); } - -void RectAnimation::updateState(QAbstractAnimation::State state) -{ - Q_UNUSED(state); -} diff --git a/tests/benchmarks/qanimation/rectanimation.h b/tests/benchmarks/qanimation/rectanimation.h index ea1f804..38a6f48 100644 --- a/tests/benchmarks/qanimation/rectanimation.h +++ b/tests/benchmarks/qanimation/rectanimation.h @@ -59,7 +59,6 @@ public: int duration() const; virtual void updateCurrentTime(int currentTime); - virtual void updateState(QAbstractAnimation::State state); private: DummyObject *m_object; diff --git a/tests/benchmarks/qapplication/main.cpp b/tests/benchmarks/qapplication/main.cpp index a299db2..0ec65a8 100644 --- a/tests/benchmarks/qapplication/main.cpp +++ b/tests/benchmarks/qapplication/main.cpp @@ -39,7 +39,6 @@ ** ****************************************************************************/ #include <QApplication> -#include <QProcess> #include <qtest.h> @@ -54,34 +53,19 @@ private slots: /* Test the performance of the QApplication constructor. - This test creates a new process and thus includes process creation overhead. - Callgrind results are meaningless since the child process is not traced. + Note: results from the second start on can be misleading, + since all global statics are already initialized. */ void tst_qapplication::ctor() { - QProcess proc; - const QString program = QCoreApplication::applicationFilePath(); - const QStringList arguments = QStringList() << QLatin1String("--exit-now"); - + // simulate reasonable argc, argv + int argc = 1; + char *argv[] = { "tst_qapplication" }; QBENCHMARK { - proc.start(program, arguments); - QVERIFY(proc.waitForStarted()); - QVERIFY(proc.waitForFinished()); - QCOMPARE(proc.exitStatus(), QProcess::NormalExit); - QCOMPARE(proc.exitCode(), 0); + QApplication app(argc, argv); } } -int main(int argc, char** argv) -{ - QApplication app(argc, argv); - - if (argc == 2 && QLatin1String("--exit-now") == QLatin1String(argv[1])) { - return 0; - } - - tst_qapplication test; - return QTest::qExec(&test, argc, argv); -} +QTEST_APPLESS_MAIN(tst_qapplication) #include "main.moc" diff --git a/tests/benchmarks/qmatrix4x4/tst_qmatrix4x4.cpp b/tests/benchmarks/qmatrix4x4/tst_qmatrix4x4.cpp index 71f45ff..f80b579 100644 --- a/tests/benchmarks/qmatrix4x4/tst_qmatrix4x4.cpp +++ b/tests/benchmarks/qmatrix4x4/tst_qmatrix4x4.cpp @@ -220,7 +220,7 @@ void tst_QMatrix4x4::mapVector3D() QVector3D v(10.5f, -2.0f, 3.0f); QVector3D result; - m1.inferSpecialType(); + m1.optimize(); QBENCHMARK { result = m1 * v; @@ -244,7 +244,7 @@ void tst_QMatrix4x4::mapVector2D() QPointF v(10.5f, -2.0f); QPointF result; - m1.inferSpecialType(); + m1.optimize(); QBENCHMARK { result = m1 * v; diff --git a/tests/manual/gestures/graphicsview/gestures.cpp b/tests/manual/gestures/graphicsview/gestures.cpp index 5416457..4c21712 100644 --- a/tests/manual/gestures/graphicsview/gestures.cpp +++ b/tests/manual/gestures/graphicsview/gestures.cpp @@ -45,41 +45,41 @@ Qt::GestureType ThreeFingerSlideGesture::Type = Qt::CustomGesture; -QGesture *ThreeFingerSlideGestureRecognizer::createGesture(QObject *) +QGesture *ThreeFingerSlideGestureRecognizer::create(QObject *) { return new ThreeFingerSlideGesture; } -QGestureRecognizer::Result ThreeFingerSlideGestureRecognizer::filterEvent(QGesture *state, QObject *, QEvent *event) +QGestureRecognizer::Result ThreeFingerSlideGestureRecognizer::recognize(QGesture *state, QObject *, QEvent *event) { ThreeFingerSlideGesture *d = static_cast<ThreeFingerSlideGesture *>(state); QGestureRecognizer::Result result; switch (event->type()) { case QEvent::TouchBegin: - result = QGestureRecognizer::MaybeGesture; + result = QGestureRecognizer::MayBeGesture; case QEvent::TouchEnd: if (d->gestureFired) - result = QGestureRecognizer::GestureFinished; + result = QGestureRecognizer::FinishGesture; else - result = QGestureRecognizer::NotGesture; + result = QGestureRecognizer::CancelGesture; case QEvent::TouchUpdate: if (d->state() != Qt::NoGesture) { QTouchEvent *ev = static_cast<QTouchEvent*>(event); if (ev->touchPoints().size() == 3) { d->gestureFired = true; - result = QGestureRecognizer::GestureTriggered; + result = QGestureRecognizer::TriggerGesture; } else { - result = QGestureRecognizer::MaybeGesture; + result = QGestureRecognizer::MayBeGesture; for (int i = 0; i < ev->touchPoints().size(); ++i) { const QTouchEvent::TouchPoint &pt = ev->touchPoints().at(i); const int distance = (pt.pos().toPoint() - pt.startPos().toPoint()).manhattanLength(); if (distance > 20) { - result = QGestureRecognizer::NotGesture; + result = QGestureRecognizer::CancelGesture; } } } } else { - result = QGestureRecognizer::NotGesture; + result = QGestureRecognizer::CancelGesture; } break; @@ -89,7 +89,7 @@ QGestureRecognizer::Result ThreeFingerSlideGestureRecognizer::filterEvent(QGestu if (d->state() != Qt::NoGesture) result = QGestureRecognizer::Ignore; else - result = QGestureRecognizer::NotGesture; + result = QGestureRecognizer::CancelGesture; break; default: result = QGestureRecognizer::Ignore; @@ -105,12 +105,12 @@ void ThreeFingerSlideGestureRecognizer::reset(QGesture *state) } -QGesture *RotateGestureRecognizer::createGesture(QObject *) +QGesture *RotateGestureRecognizer::create(QObject *) { return new QGesture; } -QGestureRecognizer::Result RotateGestureRecognizer::filterEvent(QGesture *, QObject *, QEvent *event) +QGestureRecognizer::Result RotateGestureRecognizer::recognize(QGesture *, QObject *, QEvent *event) { switch (event->type()) { case QEvent::TouchBegin: diff --git a/tests/manual/gestures/graphicsview/gestures.h b/tests/manual/gestures/graphicsview/gestures.h index 6140b12..8a31b71 100644 --- a/tests/manual/gestures/graphicsview/gestures.h +++ b/tests/manual/gestures/graphicsview/gestures.h @@ -59,8 +59,8 @@ public: class ThreeFingerSlideGestureRecognizer : public QGestureRecognizer { private: - QGesture* createGesture(QObject *target); - QGestureRecognizer::Result filterEvent(QGesture *state, QObject *watched, QEvent *event); + QGesture *create(QObject *target); + QGestureRecognizer::Result recognize(QGesture *state, QObject *watched, QEvent *event); void reset(QGesture *state); }; @@ -70,8 +70,8 @@ public: RotateGestureRecognizer(); private: - QGesture* createGesture(QObject *target); - QGestureRecognizer::Result filterEvent(QGesture *state, QObject *watched, QEvent *event); + QGesture *create(QObject *target); + QGestureRecognizer::Result recognize(QGesture *state, QObject *watched, QEvent *event); void reset(QGesture *state); }; diff --git a/tests/manual/gestures/graphicsview/main.cpp b/tests/manual/gestures/graphicsview/main.cpp index de92afe..f8433b5 100644 --- a/tests/manual/gestures/graphicsview/main.cpp +++ b/tests/manual/gestures/graphicsview/main.cpp @@ -66,11 +66,11 @@ protected: default: qDebug("view: Pan: <unknown state>"); break; } - const QPointF offset = pan->offset(); + const QPointF delta = pan->delta(); QScrollBar *vbar = verticalScrollBar(); QScrollBar *hbar = horizontalScrollBar(); - vbar->setValue(vbar->value() - offset.y()); - hbar->setValue(hbar->value() - offset.x()); + vbar->setValue(vbar->value() - delta.y()); + hbar->setValue(hbar->value() - delta.x()); ge->accept(pan); return true; } @@ -152,8 +152,8 @@ private: MainWindow::MainWindow() { - (void)QApplication::registerGestureRecognizer(new MousePanGestureRecognizer); - ThreeFingerSlideGesture::Type = QApplication::registerGestureRecognizer(new ThreeFingerSlideGestureRecognizer); + (void)QGestureRecognizer::registerRecognizer(new MousePanGestureRecognizer); + ThreeFingerSlideGesture::Type = QGestureRecognizer::registerRecognizer(new ThreeFingerSlideGestureRecognizer); tabWidget = new QTabWidget; diff --git a/tests/manual/gestures/graphicsview/mousepangesturerecognizer.cpp b/tests/manual/gestures/graphicsview/mousepangesturerecognizer.cpp index 6cdbe12..82adfbd 100644 --- a/tests/manual/gestures/graphicsview/mousepangesturerecognizer.cpp +++ b/tests/manual/gestures/graphicsview/mousepangesturerecognizer.cpp @@ -51,12 +51,12 @@ MousePanGestureRecognizer::MousePanGestureRecognizer() { } -QGesture* MousePanGestureRecognizer::createGesture(QObject *) +QGesture* MousePanGestureRecognizer::create(QObject *) { return new QPanGesture; } -QGestureRecognizer::Result MousePanGestureRecognizer::filterEvent(QGesture *state, QObject *, QEvent *event) +QGestureRecognizer::Result MousePanGestureRecognizer::recognize(QGesture *state, QObject *, QEvent *event) { QPanGesture *g = static_cast<QPanGesture *>(state); QPoint globalPos; @@ -78,23 +78,19 @@ QGestureRecognizer::Result MousePanGestureRecognizer::filterEvent(QGesture *stat if (event->type() == QEvent::MouseButtonPress || event->type() == QEvent::MouseButtonDblClick || event->type() == QEvent::GraphicsSceneMousePress || event->type() == QEvent::GraphicsSceneMouseDoubleClick) { g->setHotSpot(globalPos); - g->setProperty("lastPos", globalPos); + g->setProperty("startPos", globalPos); g->setProperty("pressed", QVariant::fromValue<bool>(true)); - return QGestureRecognizer::GestureTriggered | QGestureRecognizer::ConsumeEventHint; + return QGestureRecognizer::TriggerGesture | QGestureRecognizer::ConsumeEventHint; } else if (event->type() == QEvent::MouseMove || event->type() == QEvent::GraphicsSceneMouseMove) { if (g->property("pressed").toBool()) { - QPoint pos = globalPos; - QPoint lastPos = g->property("lastPos").toPoint(); + QPoint offset = globalPos - g->property("startPos").toPoint(); g->setLastOffset(g->offset()); - lastPos = pos - lastPos; - g->setOffset(QPointF(lastPos.x(), lastPos.y())); - g->setTotalOffset(g->totalOffset() + QPointF(lastPos.x(), lastPos.y())); - g->setProperty("lastPos", pos); - return QGestureRecognizer::GestureTriggered | QGestureRecognizer::ConsumeEventHint; + g->setOffset(QPointF(offset.x(), offset.y())); + return QGestureRecognizer::TriggerGesture | QGestureRecognizer::ConsumeEventHint; } - return QGestureRecognizer::NotGesture; + return QGestureRecognizer::CancelGesture; } else if (event->type() == QEvent::MouseButtonRelease || event->type() == QEvent::GraphicsSceneMouseRelease) { - return QGestureRecognizer::GestureFinished | QGestureRecognizer::ConsumeEventHint; + return QGestureRecognizer::FinishGesture | QGestureRecognizer::ConsumeEventHint; } return QGestureRecognizer::Ignore; } @@ -102,11 +98,10 @@ QGestureRecognizer::Result MousePanGestureRecognizer::filterEvent(QGesture *stat void MousePanGestureRecognizer::reset(QGesture *state) { QPanGesture *g = static_cast<QPanGesture *>(state); - g->setTotalOffset(QPointF()); g->setLastOffset(QPointF()); g->setOffset(QPointF()); g->setAcceleration(0); - g->setProperty("lastPos", QVariant()); + g->setProperty("startPos", QVariant()); g->setProperty("pressed", QVariant::fromValue<bool>(false)); QGestureRecognizer::reset(state); } diff --git a/tests/manual/gestures/graphicsview/mousepangesturerecognizer.h b/tests/manual/gestures/graphicsview/mousepangesturerecognizer.h index b062fd0..6e04621 100644 --- a/tests/manual/gestures/graphicsview/mousepangesturerecognizer.h +++ b/tests/manual/gestures/graphicsview/mousepangesturerecognizer.h @@ -49,8 +49,8 @@ class MousePanGestureRecognizer : public QGestureRecognizer public: MousePanGestureRecognizer(); - QGesture* createGesture(QObject *target); - QGestureRecognizer::Result filterEvent(QGesture *state, QObject *watched, QEvent *event); + QGesture* create(QObject *target); + QGestureRecognizer::Result recognize(QGesture *state, QObject *watched, QEvent *event); void reset(QGesture *state); }; diff --git a/tests/manual/gestures/scrollarea/main.cpp b/tests/manual/gestures/scrollarea/main.cpp index f90f6c6..4f33b28 100644 --- a/tests/manual/gestures/scrollarea/main.cpp +++ b/tests/manual/gestures/scrollarea/main.cpp @@ -50,7 +50,7 @@ public: ScrollArea(QWidget *parent = 0) : QScrollArea(parent), outside(false) { - viewport()->grabGesture(Qt::PanGesture); + viewport()->grabGesture(Qt::PanGesture, Qt::ReceivePartialGestures); } protected: @@ -73,11 +73,11 @@ protected: QPanGesture *pan = static_cast<QPanGesture *>(event->gesture(Qt::PanGesture)); if (pan) { switch(pan->state()) { - case Qt::GestureStarted: qDebug("area: Pan: started"); break; - case Qt::GestureFinished: qDebug("area: Pan: finished"); break; - case Qt::GestureCanceled: qDebug("area: Pan: canceled"); break; + case Qt::GestureStarted: qDebug() << this << "Pan: started"; break; + case Qt::GestureFinished: qDebug() << this << "Pan: finished"; break; + case Qt::GestureCanceled: qDebug() << this << "Pan: canceled"; break; case Qt::GestureUpdated: break; - default: qDebug("area: Pan: <unknown state>"); break; + default: qDebug() << this << "Pan: <unknown state>"; break; } if (pan->state() == Qt::GestureStarted) @@ -87,8 +87,8 @@ protected: if (outside) return; - const QPointF offset = pan->offset(); - const QPointF totalOffset = pan->totalOffset(); + const QPointF delta = pan->delta(); + const QPointF totalOffset = pan->offset(); QScrollBar *vbar = verticalScrollBar(); QScrollBar *hbar = horizontalScrollBar(); @@ -102,8 +102,8 @@ protected: outside = true; return; } - vbar->setValue(vbar->value() - offset.y()); - hbar->setValue(hbar->value() - offset.x()); + vbar->setValue(vbar->value() - delta.y()); + hbar->setValue(hbar->value() - delta.x()); event->accept(pan); } } @@ -134,11 +134,11 @@ protected: QPanGesture *pan = static_cast<QPanGesture *>(event->gesture(Qt::PanGesture)); if (pan) { switch (pan->state()) { - case Qt::GestureStarted: qDebug("slider: Pan: started"); break; - case Qt::GestureFinished: qDebug("slider: Pan: finished"); break; - case Qt::GestureCanceled: qDebug("slider: Pan: canceled"); break; + case Qt::GestureStarted: qDebug() << this << "Pan: started"; break; + case Qt::GestureFinished: qDebug() << this << "Pan: finished"; break; + case Qt::GestureCanceled: qDebug() << this << "Pan: canceled"; break; case Qt::GestureUpdated: break; - default: qDebug("slider: Pan: <unknown state>"); break; + default: qDebug() << this << "Pan: <unknown state>"; break; } if (pan->state() == Qt::GestureStarted) @@ -147,8 +147,8 @@ protected: event->ignore(pan); if (outside) return; - const QPointF offset = pan->offset(); - const QPointF totalOffset = pan->totalOffset(); + const QPointF delta = pan->delta(); + const QPointF totalOffset = pan->offset(); if (orientation() == Qt::Horizontal) { if ((value() == minimum() && totalOffset.x() < -10) || (value() == maximum() && totalOffset.x() > 10)) { @@ -156,7 +156,7 @@ protected: return; } if (totalOffset.y() < 40 && totalOffset.y() > -40) { - setValue(value() + offset.x()); + setValue(value() + delta.x()); event->accept(pan); } else { outside = true; @@ -168,7 +168,7 @@ protected: return; } if (totalOffset.x() < 40 && totalOffset.x() > -40) { - setValue(value() - offset.y()); + setValue(value() - delta.y()); event->accept(pan); } else { outside = true; @@ -186,6 +186,7 @@ public: MainWindow() { rootScrollArea = new ScrollArea; + rootScrollArea->setObjectName(QLatin1String("rootScrollArea")); setCentralWidget(rootScrollArea); QWidget *root = new QWidget; @@ -193,14 +194,17 @@ public: rootScrollArea->setWidget(root); Slider *verticalSlider = new Slider(Qt::Vertical, root); + verticalSlider->setObjectName(QLatin1String("verticalSlider")); verticalSlider ->move(650, 1100); Slider *horizontalSlider = new Slider(Qt::Horizontal, root); + horizontalSlider->setObjectName(QLatin1String("horizontalSlider")); horizontalSlider ->move(600, 1000); childScrollArea = new ScrollArea(root); + childScrollArea->setObjectName(QLatin1String("childScrollArea")); childScrollArea->move(500, 500); QWidget *w = new QWidget; - w->setMinimumWidth(400); + w->setMinimumWidth(700); QVBoxLayout *l = new QVBoxLayout(w); l->setMargin(20); for (int i = 0; i < 100; ++i) { @@ -211,6 +215,14 @@ public: l->addWidget(w); } childScrollArea->setWidget(w); +#if defined(Q_OS_WIN) + // Windows can force Qt to create a native window handle for an + // intermediate widget and that will block gesture to get touch events. + // So this hack to make sure gestures get all touch events they need. + foreach (QObject *w, children()) + if (w->isWidgetType()) + static_cast<QWidget *>(w)->setAttribute(Qt::WA_AcceptTouchEvents); +#endif } private: ScrollArea *rootScrollArea; @@ -220,7 +232,7 @@ private: int main(int argc, char **argv) { QApplication app(argc, argv); - app.registerGestureRecognizer(new MousePanGestureRecognizer); + QGestureRecognizer::registerRecognizer(new MousePanGestureRecognizer); MainWindow w; w.show(); return app.exec(); diff --git a/tests/manual/gestures/scrollarea/mousepangesturerecognizer.cpp b/tests/manual/gestures/scrollarea/mousepangesturerecognizer.cpp index 63d3e76..66fcf18 100644 --- a/tests/manual/gestures/scrollarea/mousepangesturerecognizer.cpp +++ b/tests/manual/gestures/scrollarea/mousepangesturerecognizer.cpp @@ -49,34 +49,39 @@ MousePanGestureRecognizer::MousePanGestureRecognizer() { } -QGesture* MousePanGestureRecognizer::createGesture(QObject *) +QGesture *MousePanGestureRecognizer::create(QObject *) { return new QPanGesture; } -QGestureRecognizer::Result MousePanGestureRecognizer::filterEvent(QGesture *state, QObject *, QEvent *event) +QGestureRecognizer::Result MousePanGestureRecognizer::recognize(QGesture *state, QObject *, QEvent *event) { QPanGesture *g = static_cast<QPanGesture *>(state); + if (event->type() == QEvent::TouchBegin) { + // ignore the following mousepress event + g->setProperty("ignoreMousePress", QVariant::fromValue<bool>(true)); + } else if (event->type() == QEvent::TouchEnd) { + g->setProperty("ignoreMousePress", QVariant::fromValue<bool>(false)); + } QMouseEvent *me = static_cast<QMouseEvent *>(event); - if (event->type() == QEvent::MouseButtonPress || event->type() == QEvent::MouseButtonDblClick) { + if (event->type() == QEvent::MouseButtonPress) { + if (g->property("ignoreMousePress").toBool()) + return QGestureRecognizer::Ignore; g->setHotSpot(me->globalPos()); - g->setProperty("lastPos", me->globalPos()); + g->setProperty("startPos", me->globalPos()); g->setProperty("pressed", QVariant::fromValue<bool>(true)); - return QGestureRecognizer::GestureTriggered | QGestureRecognizer::ConsumeEventHint; + return QGestureRecognizer::TriggerGesture | QGestureRecognizer::ConsumeEventHint; } else if (event->type() == QEvent::MouseMove) { if (g->property("pressed").toBool()) { - QPoint pos = me->globalPos(); - QPoint lastPos = g->property("lastPos").toPoint(); + QPoint offset = me->globalPos() - g->property("startPos").toPoint(); g->setLastOffset(g->offset()); - lastPos = pos - lastPos; - g->setOffset(QPointF(lastPos.x(), lastPos.y())); - g->setTotalOffset(g->totalOffset() + QPointF(lastPos.x(), lastPos.y())); - g->setProperty("lastPos", pos); - return QGestureRecognizer::GestureTriggered | QGestureRecognizer::ConsumeEventHint; + g->setOffset(QPointF(offset.x(), offset.y())); + return QGestureRecognizer::TriggerGesture | QGestureRecognizer::ConsumeEventHint; } - return QGestureRecognizer::NotGesture; + return QGestureRecognizer::CancelGesture; } else if (event->type() == QEvent::MouseButtonRelease) { - return QGestureRecognizer::GestureFinished | QGestureRecognizer::ConsumeEventHint; + if (g->property("pressed").toBool()) + return QGestureRecognizer::FinishGesture | QGestureRecognizer::ConsumeEventHint; } return QGestureRecognizer::Ignore; } @@ -84,11 +89,11 @@ QGestureRecognizer::Result MousePanGestureRecognizer::filterEvent(QGesture *stat void MousePanGestureRecognizer::reset(QGesture *state) { QPanGesture *g = static_cast<QPanGesture *>(state); - g->setTotalOffset(QPointF()); g->setLastOffset(QPointF()); g->setOffset(QPointF()); g->setAcceleration(0); - g->setProperty("lastPos", QVariant()); + g->setProperty("startPos", QVariant()); g->setProperty("pressed", QVariant::fromValue<bool>(false)); + g->setProperty("ignoreMousePress", QVariant::fromValue<bool>(false)); QGestureRecognizer::reset(state); } diff --git a/tests/manual/gestures/scrollarea/mousepangesturerecognizer.h b/tests/manual/gestures/scrollarea/mousepangesturerecognizer.h index b062fd0..6e04621 100644 --- a/tests/manual/gestures/scrollarea/mousepangesturerecognizer.h +++ b/tests/manual/gestures/scrollarea/mousepangesturerecognizer.h @@ -49,8 +49,8 @@ class MousePanGestureRecognizer : public QGestureRecognizer public: MousePanGestureRecognizer(); - QGesture* createGesture(QObject *target); - QGestureRecognizer::Result filterEvent(QGesture *state, QObject *watched, QEvent *event); + QGesture* create(QObject *target); + QGestureRecognizer::Result recognize(QGesture *state, QObject *watched, QEvent *event); void reset(QGesture *state); }; |