From fb0765f5285b8518b3336a6aa36de1adc37bc1fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan-Arve=20S=C3=A6ther?= Date: Thu, 11 Nov 2010 07:13:35 +0100 Subject: Fix a behaviour change of sizeHint() introduced by 6d4d265e7e67dde58 Commit 6d4d265e7e67dde58e45d7d89f4974d0bd8b70e4 added a behaviour change in the cases if there was an item with height-for-width and sizeHint() was called with no constraint. The commit tried to return the height needed for the preferred width, but it still did not satisfy the constraints, since the width used as the constraint could be less than the preferred width. This also meant that the sizeHint(Qt::MinimumSize) could actually be larger than the smallest possible size. The behaviour should be that it should return the smallest width possible regardless of height. For instance, for a label it could return the size of the longest word (to avoid hyphenation issues). The same logic applies for the height: It should return the smallest height possible regardless of width. For instance, for a label it could then return the height of the font. I also had to fix some stuff in the heightForWidthWithSpanning() autotest since it wrongly expected the maximum size to be QWIDGETSIZE_MAX in several of the cases. However, that is the current behaviour (and it is a bug), but it is unrelated to the problem with spans so I simply fix the test and mark them with QEXPECT_FAIL. Reviewed-by: John Tapsell --- src/gui/graphicsview/qgridlayoutengine.cpp | 95 ++++++++++------------ .../tst_qgraphicsgridlayout.cpp | 19 +++-- 2 files changed, 57 insertions(+), 57 deletions(-) diff --git a/src/gui/graphicsview/qgridlayoutengine.cpp b/src/gui/graphicsview/qgridlayoutengine.cpp index e486b4d..9785b15 100644 --- a/src/gui/graphicsview/qgridlayoutengine.cpp +++ b/src/gui/graphicsview/qgridlayoutengine.cpp @@ -1107,7 +1107,50 @@ QSizeF QGridLayoutEngine::sizeHint(const QLayoutStyleInfo &styleInfo, Qt::SizeHi { QGridLayoutBox sizehint_totalBoxes[NOrientations]; - if(rowCount() < 1 || columnCount() < 1 || !hasDynamicConstraint()) { + bool sizeHintCalculated = false; + + if (hasDynamicConstraint() && rowCount() > 0 && columnCount() > 0) { + if (constraintOrientation() == Qt::Vertical) { + //We have items whose height depends on their width + if (constraint.width() >= 0) { + if(q_cachedDataForStyleInfo != styleInfo) + ensureColumnAndRowData(&q_columnData, &sizehint_totalBoxes[Hor], styleInfo, NULL, NULL, Qt::Horizontal); + else + sizehint_totalBoxes[Hor] = q_totalBoxes[Hor]; + QVector sizehint_xx; + QVector sizehint_widths; + + sizehint_xx.resize(columnCount()); + sizehint_widths.resize(columnCount()); + qreal width = constraint.width(); + //Calculate column widths and positions, and put results in q_xx.data() and q_widths.data() so that we can use this information as + //constraints to find the row heights + q_columnData.calculateGeometries(0, columnCount(), width, sizehint_xx.data(), sizehint_widths.data(), + 0, sizehint_totalBoxes[Hor]); + ensureColumnAndRowData(&q_rowData, &sizehint_totalBoxes[Ver], styleInfo, sizehint_xx.data(), sizehint_widths.data(), Qt::Vertical); + sizeHintCalculated = true; + } + } else { + if (constraint.height() >= 0) { + //We have items whose width depends on their height + ensureColumnAndRowData(&q_rowData, &sizehint_totalBoxes[Ver], styleInfo, NULL, NULL, Qt::Vertical); + QVector sizehint_yy; + QVector sizehint_heights; + + sizehint_yy.resize(rowCount()); + sizehint_heights.resize(rowCount()); + qreal height = constraint.height(); + //Calculate row heights and positions, and put results in q_yy.data() and q_heights.data() so that we can use this information as + //constraints to find the column widths + q_rowData.calculateGeometries(0, rowCount(), height, sizehint_yy.data(), sizehint_heights.data(), + 0, sizehint_totalBoxes[Ver]); + ensureColumnAndRowData(&q_columnData, &sizehint_totalBoxes[Hor], styleInfo, sizehint_yy.data(), sizehint_heights.data(), Qt::Vertical); + sizeHintCalculated = true; + } + } + } + + if (!sizeHintCalculated) { //No items with height for width, so it doesn't matter which order we do these in if(q_cachedDataForStyleInfo != styleInfo) { ensureColumnAndRowData(&q_columnData, &sizehint_totalBoxes[Hor], styleInfo, NULL, NULL, Qt::Horizontal); @@ -1116,55 +1159,7 @@ QSizeF QGridLayoutEngine::sizeHint(const QLayoutStyleInfo &styleInfo, Qt::SizeHi sizehint_totalBoxes[Hor] = q_totalBoxes[Hor]; sizehint_totalBoxes[Ver] = q_totalBoxes[Ver]; } - } else if(constraintOrientation() == Qt::Vertical) { - //We have items whose width depends on their height - if(q_cachedDataForStyleInfo != styleInfo) - ensureColumnAndRowData(&q_columnData, &sizehint_totalBoxes[Hor], styleInfo, NULL, NULL, Qt::Horizontal); - else - sizehint_totalBoxes[Hor] = q_totalBoxes[Hor]; - QVector sizehint_xx; - QVector sizehint_widths; - - sizehint_xx.resize(columnCount()); - sizehint_widths.resize(columnCount()); - qreal width = constraint.width(); - if(width < 0) { - /* It's not obvious what the behaviour should be. */ -/* if(which == Qt::MaximumSize) - width = sizehint_totalBoxes[Hor].q_maximumSize; - else if(which == Qt::MinimumSize) - width = sizehint_totalBoxes[Hor].q_minimumSize; - else*/ - width = sizehint_totalBoxes[Hor].q_preferredSize; - } - //Calculate column widths and positions, and put results in q_xx.data() and q_widths.data() so that we can use this information as - //constraints to find the row heights - q_columnData.calculateGeometries(0, columnCount(), width, sizehint_xx.data(), sizehint_widths.data(), - 0, sizehint_totalBoxes[Hor]); - ensureColumnAndRowData(&q_rowData, &sizehint_totalBoxes[Ver], styleInfo, sizehint_xx.data(), sizehint_widths.data(), Qt::Vertical); - } else { - //We have items whose height depends on their width - ensureColumnAndRowData(&q_rowData, &sizehint_totalBoxes[Ver], styleInfo, NULL, NULL, Qt::Vertical); - QVector sizehint_yy; - QVector sizehint_heights; - - sizehint_yy.resize(rowCount()); - sizehint_heights.resize(rowCount()); - qreal height = constraint.height(); - if(height < 0) { -/* if(which == Qt::MaximumSize) - height = sizehint_totalBoxes[Ver].q_maximumSize; - else if(which == Qt::MinimumSize) - height = sizehint_totalBoxes[Ver].q_minimumSize; - else*/ - height = sizehint_totalBoxes[Ver].q_preferredSize; - } - //Calculate row heights and positions, and put results in q_yy.data() and q_heights.data() so that we can use this information as - //constraints to find the column widths - q_rowData.calculateGeometries(0, rowCount(), height, sizehint_yy.data(), sizehint_heights.data(), - 0, sizehint_totalBoxes[Ver]); - ensureColumnAndRowData(&q_columnData, &sizehint_totalBoxes[Hor], styleInfo, sizehint_yy.data(), sizehint_heights.data(), Qt::Vertical); - } + } switch (which) { case Qt::MinimumSize: diff --git a/tests/auto/qgraphicsgridlayout/tst_qgraphicsgridlayout.cpp b/tests/auto/qgraphicsgridlayout/tst_qgraphicsgridlayout.cpp index 174e4aa..ff49b27 100644 --- a/tests/auto/qgraphicsgridlayout/tst_qgraphicsgridlayout.cpp +++ b/tests/auto/qgraphicsgridlayout/tst_qgraphicsgridlayout.cpp @@ -2556,8 +2556,9 @@ void tst_QGraphicsGridLayout::heightForWidth() w11->setSizePolicy(sp); layout->addItem(w11, 1, 1); - QSizeF prefSize = layout->effectiveSizeHint(Qt::PreferredSize, QSizeF(-1, -1)); - QCOMPARE(prefSize, QSizeF(10+200, 10+100)); + QCOMPARE(layout->effectiveSizeHint(Qt::MinimumSize, QSizeF(-1, -1)), QSizeF(2, 2)); + QCOMPARE(layout->effectiveSizeHint(Qt::PreferredSize, QSizeF(-1, -1)), QSizeF(210, 110)); + QCOMPARE(layout->effectiveSizeHint(Qt::MaximumSize, QSizeF(-1, -1)), QSizeF(30100, 30100)); QCOMPARE(layout->effectiveSizeHint(Qt::MinimumSize, QSizeF(2, -1)), QSizeF(2, 20001)); QCOMPARE(layout->effectiveSizeHint(Qt::PreferredSize, QSizeF(2, -1)), QSizeF(2, 20010)); @@ -2610,21 +2611,25 @@ void tst_QGraphicsGridLayout::heightForWidthWithSpanning() w->setSizePolicy(sp); layout->addItem(w, 0,0,2,2); - QCOMPARE(layout->effectiveSizeHint(Qt::MinimumSize, QSizeF(-1, -1)), QSizeF(1, 100)); + QCOMPARE(layout->effectiveSizeHint(Qt::MinimumSize, QSizeF(-1, -1)), QSizeF(1, 1)); QCOMPARE(layout->effectiveSizeHint(Qt::PreferredSize, QSizeF(-1, -1)), QSizeF(200, 100)); - QCOMPARE(layout->effectiveSizeHint(Qt::MaximumSize, QSizeF(-1, -1)), QSizeF(QWIDGETSIZE_MAX, QWIDGETSIZE_MAX)); + QEXPECT_FAIL("", "Due to an old bug this wrongly returns QWIDGETSIZE_MAX", Continue); + QCOMPARE(layout->effectiveSizeHint(Qt::MaximumSize, QSizeF(-1, -1)), QSizeF(30000, 30000)); QCOMPARE(layout->effectiveSizeHint(Qt::MinimumSize, QSizeF(200, -1)), QSizeF(200, 100)); QCOMPARE(layout->effectiveSizeHint(Qt::PreferredSize, QSizeF(200, -1)), QSizeF(200, 100)); - QCOMPARE(layout->effectiveSizeHint(Qt::MaximumSize, QSizeF(200, -1)), QSizeF(200, QWIDGETSIZE_MAX)); + QEXPECT_FAIL("", "Due to an old bug this wrongly returns QWIDGETSIZE_MAX", Continue); + QCOMPARE(layout->effectiveSizeHint(Qt::MaximumSize, QSizeF(200, -1)), QSizeF(200, 100)); QCOMPARE(layout->effectiveSizeHint(Qt::MinimumSize, QSizeF(2, -1)), QSizeF(2, 10000)); QCOMPARE(layout->effectiveSizeHint(Qt::PreferredSize, QSizeF(2, -1)), QSizeF(2, 10000)); - QCOMPARE(layout->effectiveSizeHint(Qt::MaximumSize, QSizeF(2, -1)), QSizeF(2, QWIDGETSIZE_MAX)); + QEXPECT_FAIL("", "Due to an old bug this wrongly returns QWIDGETSIZE_MAX", Continue); + QCOMPARE(layout->effectiveSizeHint(Qt::MaximumSize, QSizeF(2, -1)), QSizeF(2, 10000)); QCOMPARE(layout->effectiveSizeHint(Qt::MinimumSize, QSizeF(200, -1)), QSizeF(200, 100)); QCOMPARE(layout->effectiveSizeHint(Qt::PreferredSize, QSizeF(200, -1)), QSizeF(200, 100)); - QCOMPARE(layout->effectiveSizeHint(Qt::MaximumSize, QSizeF(200, -1)), QSizeF(200, QWIDGETSIZE_MAX)); + QEXPECT_FAIL("", "Due to an old bug this wrongly returns QWIDGETSIZE_MAX", Continue); + QCOMPARE(layout->effectiveSizeHint(Qt::MaximumSize, QSizeF(200, -1)), QSizeF(200, 10000)); } QTEST_MAIN(tst_QGraphicsGridLayout) -- cgit v0.12 From 9a5b72eb64d698aff507d5c2b2ea6d19bda0b65e Mon Sep 17 00:00:00 2001 From: Gareth Stockwell Date: Tue, 9 Nov 2010 14:39:27 +0000 Subject: Send WinIdChange event when winId is set to zero This allows an observer to get a notification just before the window handle owned by a native widget is destroyed. Note that, at the point when the event is sent, the widget's internalWinId() will return the new value, but the old native window handle will not be destroyed until after the event handler is run. Task-number: QTMOBILITY-645 Reviewed-by: sroedal --- dist/changes-4.7.2 | 8 ++++++-- src/gui/kernel/qwidget.cpp | 9 ++------- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/dist/changes-4.7.2 b/dist/changes-4.7.2 index 49bdd8e..a18a237 100644 --- a/dist/changes-4.7.2 +++ b/dist/changes-4.7.2 @@ -45,8 +45,12 @@ QtCore QtGui ----- - - foo - * bar + - QWidget + * [QTMOBILITY-645] Send WinIdChange event when winId is set to zero. + The window handle of a native widget may be set to zero in two + situations: (i) temporarily, during reparenting and (ii) during + widget destruction. Previously, no WinIdChange event was sent in + either of these cases; now, it is sent in both cases. QtDBus ------ diff --git a/src/gui/kernel/qwidget.cpp b/src/gui/kernel/qwidget.cpp index e22ec55..cbf4886 100644 --- a/src/gui/kernel/qwidget.cpp +++ b/src/gui/kernel/qwidget.cpp @@ -1673,13 +1673,8 @@ void QWidgetPrivate::setWinId(WId id) // set widget identifier } if(oldWinId != id) { - // Do not emit an event when the old winId is destroyed. This only - // happens (a) during widget destruction, and (b) immediately prior - // to creation of a new winId, for example as a result of re-parenting. - if(id != 0) { - QEvent e(QEvent::WinIdChange); - QCoreApplication::sendEvent(q, &e); - } + QEvent e(QEvent::WinIdChange); + QCoreApplication::sendEvent(q, &e); } } -- cgit v0.12 From d16fcbc6d6b00770a5106027c24ed7cf7e92c1d5 Mon Sep 17 00:00:00 2001 From: Shane Kearns Date: Thu, 11 Nov 2010 17:27:01 +0000 Subject: SSL: Fix for systemCaCertificates being called first on symbian On symbian, thread names must be unique (actually kernel object names) When a thread exits, there may still be open handles, for example a debugger or RUndertaker so the thread name cannot be reused immediately. S60 has an RUndertaker instance in a background thread, which is used to display the "application closed" messages when a crash happens. Until that thread has run and checked the thread exit to see if it was a crash or not, the thread remains open. When systemCaCertificates is called as the first API call, it calls itself via ensureinitialised() to set the default CA certs. This double call should be addressed by QTBUG-15218. In any case, QSslSocket::systemCaCertificates() is intended to refresh from the system - if application code calls it too quickly in succession it could also trigger this bug. Task-number: QTBUG-15126 Reviewed-by: Markus Goetz --- src/network/ssl/qsslsocket_openssl.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/network/ssl/qsslsocket_openssl.cpp b/src/network/ssl/qsslsocket_openssl.cpp index 426b07a..f4bd423 100644 --- a/src/network/ssl/qsslsocket_openssl.cpp +++ b/src/network/ssl/qsslsocket_openssl.cpp @@ -659,8 +659,16 @@ TInt CSymbianCertificateRetriever::ThreadEntryPoint(TAny* aParams) void CSymbianCertificateRetriever::ConstructL() { - User::LeaveIfError(iThread.Create(_L("CertWorkerThread"), - CSymbianCertificateRetriever::ThreadEntryPoint, 16384, NULL, this)); + TInt err; + int i=0; + QString name(QLatin1String("CertWorkerThread-%1")); + //recently closed thread names remain in use for a while until all handles have been closed + //including users of RUndertaker + do { + err = iThread.Create(qt_QString2TPtrC(name.arg(i++)), + CSymbianCertificateRetriever::ThreadEntryPoint, 16384, NULL, this); + } while (err == KErrAlreadyExists); + User::LeaveIfError(err); } void CSymbianCertificateRetriever::DoCancel() -- cgit v0.12 From 924be25253471ababfcf560a6ca098543838c0aa Mon Sep 17 00:00:00 2001 From: Jason McDonald Date: Fri, 12 Nov 2010 13:23:41 +1000 Subject: Bump Qt version to 4.7.2. Reviewed-by: Trust Me --- src/3rdparty/webkit/WebKit/qt/qt_webkit_version.pri | 4 ++-- src/corelib/global/qglobal.h | 4 ++-- src/plugins/qpluginbase.pri | 2 +- src/qbase.pri | 2 +- tests/auto/selftests/expected_cmptest.txt | 2 +- tests/auto/selftests/expected_crashes_3.txt | 2 +- tests/auto/selftests/expected_longstring.txt | 2 +- tests/auto/selftests/expected_maxwarnings.txt | 2 +- tests/auto/selftests/expected_skip.txt | 2 +- tools/assistant/tools/assistant/doc/assistant.qdocconf | 2 +- tools/qdoc3/doc/files/qt.qdocconf | 8 ++++---- tools/qdoc3/test/assistant.qdocconf | 4 ++-- tools/qdoc3/test/designer.qdocconf | 4 ++-- tools/qdoc3/test/linguist.qdocconf | 4 ++-- tools/qdoc3/test/qdeclarative.qdocconf | 8 ++++---- tools/qdoc3/test/qmake.qdocconf | 4 ++-- tools/qdoc3/test/qt-build-docs.qdocconf | 8 ++++---- tools/qdoc3/test/qt-build-docs_ja_JP.qdocconf | 8 ++++---- tools/qdoc3/test/qt-build-docs_zh_CN.qdocconf | 8 ++++---- tools/qdoc3/test/qt.qdocconf | 8 ++++---- tools/qdoc3/test/qt_ja_JP.qdocconf | 8 ++++---- tools/qdoc3/test/qt_zh_CN.qdocconf | 8 ++++---- 22 files changed, 52 insertions(+), 52 deletions(-) diff --git a/src/3rdparty/webkit/WebKit/qt/qt_webkit_version.pri b/src/3rdparty/webkit/WebKit/qt/qt_webkit_version.pri index f2282f8..b98617f 100644 --- a/src/3rdparty/webkit/WebKit/qt/qt_webkit_version.pri +++ b/src/3rdparty/webkit/WebKit/qt/qt_webkit_version.pri @@ -1,5 +1,5 @@ -QT_WEBKIT_VERSION = 4.7.1 +QT_WEBKIT_VERSION = 4.7.2 QT_WEBKIT_MAJOR_VERSION = 4 QT_WEBKIT_MINOR_VERSION = 7 -QT_WEBKIT_PATCH_VERSION = 1 +QT_WEBKIT_PATCH_VERSION = 2 QT_CONFIG += webkit diff --git a/src/corelib/global/qglobal.h b/src/corelib/global/qglobal.h index 35607d5..b148a1d 100644 --- a/src/corelib/global/qglobal.h +++ b/src/corelib/global/qglobal.h @@ -44,11 +44,11 @@ #include -#define QT_VERSION_STR "4.7.1" +#define QT_VERSION_STR "4.7.2" /* QT_VERSION is (major << 16) + (minor << 8) + patch. */ -#define QT_VERSION 0x040701 +#define QT_VERSION 0x040702 /* can be used like #if (QT_VERSION >= QT_VERSION_CHECK(4, 4, 0)) */ diff --git a/src/plugins/qpluginbase.pri b/src/plugins/qpluginbase.pri index 84009d8..7cbffe0 100644 --- a/src/plugins/qpluginbase.pri +++ b/src/plugins/qpluginbase.pri @@ -1,6 +1,6 @@ TEMPLATE = lib isEmpty(QT_MAJOR_VERSION) { - VERSION=4.7.1 + VERSION=4.7.2 } else { VERSION=$${QT_MAJOR_VERSION}.$${QT_MINOR_VERSION}.$${QT_PATCH_VERSION} } diff --git a/src/qbase.pri b/src/qbase.pri index 4217618..af18af8 100644 --- a/src/qbase.pri +++ b/src/qbase.pri @@ -4,7 +4,7 @@ INCLUDEPATH *= $$QMAKE_INCDIR_QT/$$TARGET #just for today to have some compat isEmpty(QT_ARCH):!isEmpty(ARCH):QT_ARCH=$$ARCH #another compat that will rot for change #215700 TEMPLATE = lib isEmpty(QT_MAJOR_VERSION) { - VERSION=4.7.1 + VERSION=4.7.2 } else { VERSION=$${QT_MAJOR_VERSION}.$${QT_MINOR_VERSION}.$${QT_PATCH_VERSION} } diff --git a/tests/auto/selftests/expected_cmptest.txt b/tests/auto/selftests/expected_cmptest.txt index 7f3aa9a..fccaca3 100644 --- a/tests/auto/selftests/expected_cmptest.txt +++ b/tests/auto/selftests/expected_cmptest.txt @@ -1,5 +1,5 @@ ********* Start testing of tst_Cmptest ********* -Config: Using QTest library 4.7.1, Qt 4.7.1 +Config: Using QTest library 4.7.2, Qt 4.7.2 PASS : tst_Cmptest::initTestCase() PASS : tst_Cmptest::compare_boolfuncs() PASS : tst_Cmptest::compare_pointerfuncs() diff --git a/tests/auto/selftests/expected_crashes_3.txt b/tests/auto/selftests/expected_crashes_3.txt index 7ded525..2558f68 100644 --- a/tests/auto/selftests/expected_crashes_3.txt +++ b/tests/auto/selftests/expected_crashes_3.txt @@ -1,5 +1,5 @@ ********* Start testing of tst_Crashes ********* -Config: Using QTest library 4.7.1, Qt 4.7.1 +Config: Using QTest library 4.7.2, Qt 4.7.2 PASS : tst_Crashes::initTestCase() QFATAL : tst_Crashes::crash() Received signal 11 FAIL! : tst_Crashes::crash() Received a fatal error. diff --git a/tests/auto/selftests/expected_longstring.txt b/tests/auto/selftests/expected_longstring.txt index 9ad6f56..c56244b 100644 --- a/tests/auto/selftests/expected_longstring.txt +++ b/tests/auto/selftests/expected_longstring.txt @@ -1,5 +1,5 @@ ********* Start testing of tst_LongString ********* -Config: Using QTest library 4.7.1, Qt 4.7.1 +Config: Using QTest library 4.7.2, Qt 4.7.2 PASS : tst_LongString::initTestCase() FAIL! : tst_LongString::failWithLongString() Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. Nulla consequat massa quis enim. Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu. In enim justo, rhoncus ut, imperdiet a, venenatis vitae, justo. Nullam dictum felis eu pede mollis pretium. Integer tincidunt. Cras dapibus. Vivamus elementum semper nisi. Aenean vulputate eleifend tellus. Aenean leo ligula, porttitor eu, consequat vitae, eleifend ac, enim. Aliquam lorem ante, dapibus in, viverra quis, feugiat a, tellus. Phasellus viverra nulla ut metus varius laoreet. Quisque rutrum. Aenean imperdiet. Etiam ultricies nisi vel augue. Curabitur ullamcorper ultricies nisi. Nam eget dui. diff --git a/tests/auto/selftests/expected_maxwarnings.txt b/tests/auto/selftests/expected_maxwarnings.txt index 949da13..7846435 100644 --- a/tests/auto/selftests/expected_maxwarnings.txt +++ b/tests/auto/selftests/expected_maxwarnings.txt @@ -1,5 +1,5 @@ ********* Start testing of MaxWarnings ********* -Config: Using QTest library 4.7.1, Qt 4.7.1 +Config: Using QTest library 4.7.2, Qt 4.7.2 PASS : MaxWarnings::initTestCase() QWARN : MaxWarnings::warn() 0 QWARN : MaxWarnings::warn() 1 diff --git a/tests/auto/selftests/expected_skip.txt b/tests/auto/selftests/expected_skip.txt index 1f5bf7b..5c9e497 100644 --- a/tests/auto/selftests/expected_skip.txt +++ b/tests/auto/selftests/expected_skip.txt @@ -1,5 +1,5 @@ ********* Start testing of tst_Skip ********* -Config: Using QTest library 4.7.1, Qt 4.7.1 +Config: Using QTest library 4.7.2, Qt 4.7.2 PASS : tst_Skip::initTestCase() SKIP : tst_Skip::test() skipping all Loc: [/home/user/depot/qt-git/mainline/tests/auto/selftests/skip/tst_skip.cpp(68)] diff --git a/tools/assistant/tools/assistant/doc/assistant.qdocconf b/tools/assistant/tools/assistant/doc/assistant.qdocconf index 26cdafb..57abeae 100644 --- a/tools/assistant/tools/assistant/doc/assistant.qdocconf +++ b/tools/assistant/tools/assistant/doc/assistant.qdocconf @@ -12,5 +12,5 @@ HTML.footer = "


\n" \ "\n" \ "\n" \ "\n" \ - "\n" \ + "\n" \ "
Copyright © 2010 Nokia Corporation and/or its subsidiary(-ies)Trademarks
Qt 4.7.1
Qt 4.7.2
" diff --git a/tools/qdoc3/doc/files/qt.qdocconf b/tools/qdoc3/doc/files/qt.qdocconf index 4546c7a..44cfbc1 100644 --- a/tools/qdoc3/doc/files/qt.qdocconf +++ b/tools/qdoc3/doc/files/qt.qdocconf @@ -22,7 +22,7 @@ edition.DesktopLight.groups = -graphicsview-api qhp.projects = Qt qhp.Qt.file = qt.qhp -qhp.Qt.namespace = com.trolltech.qt.471 +qhp.Qt.namespace = com.trolltech.qt.472 qhp.Qt.virtualFolder = qdoc qhp.Qt.indexTitle = Qt Reference Documentation qhp.Qt.indexRoot = @@ -36,9 +36,9 @@ qhp.Qt.extraFiles = classic.css \ images/dynamiclayouts-example.png \ images/stylesheet-coffee-plastique.png -qhp.Qt.filterAttributes = qt 4.7.1 qtrefdoc -qhp.Qt.customFilters.Qt.name = Qt 4.7.1 -qhp.Qt.customFilters.Qt.filterAttributes = qt 4.7.1 +qhp.Qt.filterAttributes = qt 4.7.2 qtrefdoc +qhp.Qt.customFilters.Qt.name = Qt 4.7.2 +qhp.Qt.customFilters.Qt.filterAttributes = qt 4.7.2 qhp.Qt.subprojects = classes overviews examples qhp.Qt.subprojects.classes.title = Classes qhp.Qt.subprojects.classes.indexTitle = Qt's Classes diff --git a/tools/qdoc3/test/assistant.qdocconf b/tools/qdoc3/test/assistant.qdocconf index 74b68df..0e9a2a8 100644 --- a/tools/qdoc3/test/assistant.qdocconf +++ b/tools/qdoc3/test/assistant.qdocconf @@ -13,7 +13,7 @@ indexes = $QT_BUILD_TREE/doc-build/html-qt/qt.index qhp.projects = Assistant qhp.Assistant.file = assistant.qhp -qhp.Assistant.namespace = com.trolltech.assistant.471 +qhp.Assistant.namespace = com.trolltech.assistant.472 qhp.Assistant.virtualFolder = qdoc qhp.Assistant.indexTitle = Qt Assistant Manual qhp.Assistant.extraFiles = images/bg_l.png \ @@ -50,7 +50,7 @@ qhp.Assistant.extraFiles = images/bg_l.png \ style/style_ie8.css \ style/style.css -qhp.Assistant.filterAttributes = qt 4.7.1 tools assistant +qhp.Assistant.filterAttributes = qt 4.7.2 tools assistant qhp.Assistant.customFilters.Assistant.name = Qt Assistant Manual qhp.Assistant.customFilters.Assistant.filterAttributes = qt tools assistant qhp.Assistant.subprojects = manual examples diff --git a/tools/qdoc3/test/designer.qdocconf b/tools/qdoc3/test/designer.qdocconf index ab66792..637399b 100644 --- a/tools/qdoc3/test/designer.qdocconf +++ b/tools/qdoc3/test/designer.qdocconf @@ -13,7 +13,7 @@ indexes = $QT_BUILD_TREE/doc-build/html-qt/qt.index qhp.projects = Designer qhp.Designer.file = designer.qhp -qhp.Designer.namespace = com.trolltech.designer.471 +qhp.Designer.namespace = com.trolltech.designer.472 qhp.Designer.virtualFolder = qdoc qhp.Designer.indexTitle = Qt Designer Manual qhp.Designer.extraFiles = images/bg_l.png \ @@ -50,7 +50,7 @@ qhp.Designer.extraFiles = images/bg_l.png \ style/style_ie8.css \ style/style.css -qhp.Designer.filterAttributes = qt 4.7.1 tools designer +qhp.Designer.filterAttributes = qt 4.7.2 tools designer qhp.Designer.customFilters.Designer.name = Qt Designer Manual qhp.Designer.customFilters.Designer.filterAttributes = qt tools designer qhp.Designer.subprojects = manual examples diff --git a/tools/qdoc3/test/linguist.qdocconf b/tools/qdoc3/test/linguist.qdocconf index 0d920e2..8ee298e 100644 --- a/tools/qdoc3/test/linguist.qdocconf +++ b/tools/qdoc3/test/linguist.qdocconf @@ -13,7 +13,7 @@ indexes = $QT_BUILD_TREE/doc-build/html-qt/qt.index qhp.projects = Linguist qhp.Linguist.file = linguist.qhp -qhp.Linguist.namespace = com.trolltech.linguist.471 +qhp.Linguist.namespace = com.trolltech.linguist.472 qhp.Linguist.virtualFolder = qdoc qhp.Linguist.indexTitle = Qt Linguist Manual qhp.Linguist.extraFiles = images/bg_l.png \ @@ -50,7 +50,7 @@ qhp.Linguist.extraFiles = images/bg_l.png \ style/style_ie8.css \ style/style.css -qhp.Linguist.filterAttributes = qt 4.7.1 tools linguist +qhp.Linguist.filterAttributes = qt 4.7.2 tools linguist qhp.Linguist.customFilters.Linguist.name = Qt Linguist Manual qhp.Linguist.customFilters.Linguist.filterAttributes = qt tools linguist qhp.Linguist.subprojects = manual examples diff --git a/tools/qdoc3/test/qdeclarative.qdocconf b/tools/qdoc3/test/qdeclarative.qdocconf index 9aaebcb..e68a935 100644 --- a/tools/qdoc3/test/qdeclarative.qdocconf +++ b/tools/qdoc3/test/qdeclarative.qdocconf @@ -21,7 +21,7 @@ edition.DesktopLight.groups = -graphicsview-api qhp.projects = Qml qhp.Qml.file = qml.qhp -qhp.Qml.namespace = com.trolltech.qml.471 +qhp.Qml.namespace = com.trolltech.qml.472 qhp.Qml.virtualFolder = qdoc qhp.Qml.indexTitle = Qml Reference @@ -61,9 +61,9 @@ qhp.Qml.extraFiles = images/bg_l.png \ style/style_ie8.css \ style/style.css -qhp.Qml.filterAttributes = qt 4.7.1 qtrefdoc -qhp.Qml.customFilters.Qt.name = Qt 4.7.1 -qhp.Qml.customFilters.Qt.filterAttributes = qt 4.7.1 +qhp.Qml.filterAttributes = qt 4.7.2 qtrefdoc +qhp.Qml.customFilters.Qt.name = Qt 4.7.2 +qhp.Qml.customFilters.Qt.filterAttributes = qt 4.7.2 qhp.Qml.subprojects = classes qhp.Qml.subprojects.classes.title = Elements qhp.Qml.subprojects.classes.indexTitle = Qml Elements diff --git a/tools/qdoc3/test/qmake.qdocconf b/tools/qdoc3/test/qmake.qdocconf index be2e9d3..b5bc96c 100644 --- a/tools/qdoc3/test/qmake.qdocconf +++ b/tools/qdoc3/test/qmake.qdocconf @@ -13,7 +13,7 @@ indexes = $QT_BUILD_TREE/doc-build/html-qt/qt.index qhp.projects = qmake qhp.qmake.file = qmake.qhp -qhp.qmake.namespace = com.trolltech.qmake.471 +qhp.qmake.namespace = com.trolltech.qmake.472 qhp.qmake.virtualFolder = qdoc qhp.qmake.indexTitle = QMake Manual qhp.qmake.extraFiles = images/bg_l.png \ @@ -50,7 +50,7 @@ qhp.qmake.extraFiles = images/bg_l.png \ style/style_ie8.css \ style/style.css -qhp.qmake.filterAttributes = qt 4.7.1 tools qmake +qhp.qmake.filterAttributes = qt 4.7.2 tools qmake qhp.qmake.customFilters.qmake.name = qmake Manual qhp.qmake.customFilters.qmake.filterAttributes = qt tools qmake qhp.qmake.subprojects = manual diff --git a/tools/qdoc3/test/qt-build-docs.qdocconf b/tools/qdoc3/test/qt-build-docs.qdocconf index dcabeb4..5fae2f6 100644 --- a/tools/qdoc3/test/qt-build-docs.qdocconf +++ b/tools/qdoc3/test/qt-build-docs.qdocconf @@ -15,7 +15,7 @@ naturallanguage = en_US qhp.projects = Qt qhp.Qt.file = qt.qhp -qhp.Qt.namespace = com.trolltech.qt.471 +qhp.Qt.namespace = com.trolltech.qt.472 qhp.Qt.virtualFolder = qdoc qhp.Qt.indexTitle = Qt Reference Documentation qhp.Qt.indexRoot = @@ -59,9 +59,9 @@ qhp.Qt.extraFiles = index.html \ -qhp.Qt.filterAttributes = qt 4.7.1 qtrefdoc -qhp.Qt.customFilters.Qt.name = Qt 4.7.1 -qhp.Qt.customFilters.Qt.filterAttributes = qt 4.7.1 +qhp.Qt.filterAttributes = qt 4.7.2 qtrefdoc +qhp.Qt.customFilters.Qt.name = Qt 4.7.2 +qhp.Qt.customFilters.Qt.filterAttributes = qt 4.7.2 qhp.Qt.subprojects = classes overviews examples qhp.Qt.subprojects.classes.title = Classes qhp.Qt.subprojects.classes.indexTitle = Qt's Classes diff --git a/tools/qdoc3/test/qt-build-docs_ja_JP.qdocconf b/tools/qdoc3/test/qt-build-docs_ja_JP.qdocconf index 7e28fa2..24696d5 100644 --- a/tools/qdoc3/test/qt-build-docs_ja_JP.qdocconf +++ b/tools/qdoc3/test/qt-build-docs_ja_JP.qdocconf @@ -17,15 +17,15 @@ indexes = $QT_BUILD_TREE/doc-build/html-qt/qt.index qhp.projects = Qt qhp.Qt.file = qt.qhp -qhp.Qt.namespace = com.trolltech.qt.471 +qhp.Qt.namespace = com.trolltech.qt.472 qhp.Qt.virtualFolder = qdoc qhp.Qt.title = Qt qhp.Qt.indexTitle = Qt qhp.Qt.selectors = fake:example -qhp.Qt.filterAttributes = qt 4.7.1 qtrefdoc ja_JP -qhp.Qt.customFilters.Qt.name = Qt 4.7.1 -qhp.Qt.customFilters.Qt.filterAttributes = qt 4.7.1 +qhp.Qt.filterAttributes = qt 4.7.2 qtrefdoc ja_JP +qhp.Qt.customFilters.Qt.name = Qt 4.7.2 +qhp.Qt.customFilters.Qt.filterAttributes = qt 4.7.2 # Files not referenced in any qdoc file (last four are needed by qtdemo) # See also extraimages.HTML diff --git a/tools/qdoc3/test/qt-build-docs_zh_CN.qdocconf b/tools/qdoc3/test/qt-build-docs_zh_CN.qdocconf index cfcc76d..7789bf7 100644 --- a/tools/qdoc3/test/qt-build-docs_zh_CN.qdocconf +++ b/tools/qdoc3/test/qt-build-docs_zh_CN.qdocconf @@ -17,15 +17,15 @@ indexes = $QT_BUILD_TREE/doc-build/html-qt/qt.index qhp.projects = Qt qhp.Qt.file = qt.qhp -qhp.Qt.namespace = com.trolltech.qt.471 +qhp.Qt.namespace = com.trolltech.qt.472 qhp.Qt.virtualFolder = qdoc qhp.Qt.title = 教程 qhp.Qt.indexTitle = 教程 qhp.Qt.selectors = fake:example -qhp.Qt.filterAttributes = qt 4.7.1 qtrefdoc zh_CN -qhp.Qt.customFilters.Qt.name = Qt 4.7.1 -qhp.Qt.customFilters.Qt.filterAttributes = qt 4.7.1 +qhp.Qt.filterAttributes = qt 4.7.2 qtrefdoc zh_CN +qhp.Qt.customFilters.Qt.name = Qt 4.7.2 +qhp.Qt.customFilters.Qt.filterAttributes = qt 4.7.2 # Files not referenced in any qdoc file (last four are needed by qtdemo) # See also extraimages.HTML diff --git a/tools/qdoc3/test/qt.qdocconf b/tools/qdoc3/test/qt.qdocconf index ea97205..8998751 100644 --- a/tools/qdoc3/test/qt.qdocconf +++ b/tools/qdoc3/test/qt.qdocconf @@ -17,7 +17,7 @@ naturallanguage = en_US qhp.projects = Qt qhp.Qt.file = qt.qhp -qhp.Qt.namespace = com.trolltech.qt.471 +qhp.Qt.namespace = com.trolltech.qt.472 qhp.Qt.virtualFolder = qdoc qhp.Qt.indexTitle = Qt Reference Documentation qhp.Qt.indexRoot = @@ -59,9 +59,9 @@ qhp.Qt.extraFiles = index.html \ style/style_ie8.css \ style/style.css -qhp.Qt.filterAttributes = qt 4.7.1 qtrefdoc -qhp.Qt.customFilters.Qt.name = Qt 4.7.1 -qhp.Qt.customFilters.Qt.filterAttributes = qt 4.7.1 +qhp.Qt.filterAttributes = qt 4.7.2 qtrefdoc +qhp.Qt.customFilters.Qt.name = Qt 4.7.2 +qhp.Qt.customFilters.Qt.filterAttributes = qt 4.7.2 qhp.Qt.subprojects = classes overviews examples qhp.Qt.subprojects.classes.title = Classes qhp.Qt.subprojects.classes.indexTitle = Qt's Classes diff --git a/tools/qdoc3/test/qt_ja_JP.qdocconf b/tools/qdoc3/test/qt_ja_JP.qdocconf index 32bba06..a5c348c 100644 --- a/tools/qdoc3/test/qt_ja_JP.qdocconf +++ b/tools/qdoc3/test/qt_ja_JP.qdocconf @@ -19,15 +19,15 @@ indexes = $QTDIR/doc/html/qt.index qhp.projects = Qt qhp.Qt.file = qt.qhp -qhp.Qt.namespace = com.trolltech.qt.471 +qhp.Qt.namespace = com.trolltech.qt.472 qhp.Qt.virtualFolder = qdoc qhp.Qt.title = Qt qhp.Qt.indexTitle = Qt qhp.Qt.selectors = fake:example -qhp.Qt.filterAttributes = qt 4.7.1 qtrefdoc ja_JP -qhp.Qt.customFilters.Qt.name = Qt 4.7.1 -qhp.Qt.customFilters.Qt.filterAttributes = qt 4.7.1 +qhp.Qt.filterAttributes = qt 4.7.2 qtrefdoc ja_JP +qhp.Qt.customFilters.Qt.name = Qt 4.7.2 +qhp.Qt.customFilters.Qt.filterAttributes = qt 4.7.2 # Files not referenced in any qdoc file (last four are needed by qtdemo) # See also extraimages.HTML diff --git a/tools/qdoc3/test/qt_zh_CN.qdocconf b/tools/qdoc3/test/qt_zh_CN.qdocconf index 40d3d5a..25f96b8 100644 --- a/tools/qdoc3/test/qt_zh_CN.qdocconf +++ b/tools/qdoc3/test/qt_zh_CN.qdocconf @@ -19,15 +19,15 @@ indexes = $QTDIR/doc/html/qt.index qhp.projects = Qt qhp.Qt.file = qt.qhp -qhp.Qt.namespace = com.trolltech.qt.471 +qhp.Qt.namespace = com.trolltech.qt.472 qhp.Qt.virtualFolder = qdoc qhp.Qt.title = 教程 qhp.Qt.indexTitle = 教程 qhp.Qt.selectors = fake:example -qhp.Qt.filterAttributes = qt 4.7.1 qtrefdoc zh_CN -qhp.Qt.customFilters.Qt.name = Qt 4.7.1 -qhp.Qt.customFilters.Qt.filterAttributes = qt 4.7.1 +qhp.Qt.filterAttributes = qt 4.7.2 qtrefdoc zh_CN +qhp.Qt.customFilters.Qt.name = Qt 4.7.2 +qhp.Qt.customFilters.Qt.filterAttributes = qt 4.7.2 # Files not referenced in any qdoc file (last four are needed by qtdemo) # See also extraimages.HTML -- cgit v0.12 From 16575f7aef840b6aae0dc767468ab713fbcfd7a6 Mon Sep 17 00:00:00 2001 From: Miikka Heikkinen Date: Tue, 9 Nov 2010 16:39:20 +0200 Subject: Localize .loc and .pkg content based on TRANSLATIONS If developer specifies "CONFIG += localize_deployment" in .pro file, the generated .loc and .pkg will now use translatable strings from .ts files defined in TRANSLATIONS. The .ts files must have an underscore and Qt language code at the end of the filename body to be compatible with deployment localization. E.g. myapp_en.ts. Running lupdate will generate these entries into .ts files: - Application short caption - Application long caption - Package name - Smart installer package name Task-number: QTBUG-13917 Reviewed-by: Oswald Buddenhagen Reviewed-by: Janne Anttila Reviewed-by: axis --- demos/symbianpkgrules.pri | 5 +- doc/src/development/qmake-manual.qdoc | 8 + examples/symbianpkgrules.pri | 5 +- .../common/symbian/appCaptionForTranslation.cpp | 46 ++ .../common/symbian/packageNameForTranslation.cpp | 47 +++ mkspecs/common/symbian/symbian.conf | 63 ++- mkspecs/features/default_post.prf | 10 + mkspecs/features/symbian/default_post.prf | 12 + mkspecs/features/symbian/localize_deployment.prf | 82 ++++ mkspecs/features/symbian/qt.prf | 6 +- mkspecs/features/symbian/sis_targets.prf | 26 +- qmake/generators/symbian/symbian_makefile.h | 10 +- qmake/generators/symbian/symbiancommon.cpp | 467 ++++++++++++--------- qmake/generators/symbian/symbiancommon.h | 35 +- qmake/generators/symbian/symmake.cpp | 37 +- qmake/generators/symbian/symmake.h | 5 +- qmake/generators/symbian/symmake_abld.cpp | 10 +- qmake/generators/symbian/symmake_sbsv2.cpp | 13 +- src/s60installs/s60installs.pro | 8 +- tools/linguist/lupdate/main.cpp | 4 + 20 files changed, 638 insertions(+), 261 deletions(-) create mode 100644 mkspecs/common/symbian/appCaptionForTranslation.cpp create mode 100644 mkspecs/common/symbian/packageNameForTranslation.cpp create mode 100644 mkspecs/features/symbian/localize_deployment.prf diff --git a/demos/symbianpkgrules.pri b/demos/symbianpkgrules.pri index c9cc492..ef6dfd8 100644 --- a/demos/symbianpkgrules.pri +++ b/demos/symbianpkgrules.pri @@ -2,12 +2,13 @@ RSS_RULES ="group_name=\"QtDemos\";" +nokiaVendor = "Nokia, Qt" vendorinfo = \ "; Localised Vendor name" \ - "%{\"Nokia, Qt\"}" \ + "%{$$addLanguageDependentPkgItem(nokiaVendor)}" \ " " \ "; Unique Vendor name" \ - ":\"Nokia, Qt\"" \ + ":\"$$nokiaVendor\"" \ " " demos_deployment.pkg_prerules += vendorinfo diff --git a/doc/src/development/qmake-manual.qdoc b/doc/src/development/qmake-manual.qdoc index 6531d25..c0ed940 100644 --- a/doc/src/development/qmake-manual.qdoc +++ b/doc/src/development/qmake-manual.qdoc @@ -1294,6 +1294,14 @@ test sections in generated bld.inf instead of their regular sections. Note that this only affects automatically generated bld.inf content; the content added via \c BLD_INF_RULES variable is not affected. + \row \o localize_deployment \o Makes \c lupdate tool add fields for + application captions and package file names into generated \c{.ts} + files. Qmake generates properly localized \c{.loc} and \c{.pkg} files + based on available translations. Translation file name bodies must + end with underscore and the language code for deployment localization + to work. E.g. \c{myapp_en.ts}. + \bold{Note:} All languages supported by Qt are not supported by Symbian, + so some \c{.ts} files may be ignored by qmake. \endtable These options have an effect on Linux/Unix platforms: diff --git a/examples/symbianpkgrules.pri b/examples/symbianpkgrules.pri index 0f615c7..fe9b487 100644 --- a/examples/symbianpkgrules.pri +++ b/examples/symbianpkgrules.pri @@ -2,12 +2,13 @@ RSS_RULES ="group_name=\"QtExamples\";" +nokiaVendor = "Nokia, Qt" vendorinfo = \ "; Localised Vendor name" \ - "%{\"Nokia, Qt\"}" \ + "%{$$addLanguageDependentPkgItem(nokiaVendor)}" \ " " \ "; Unique Vendor name" \ - ":\"Nokia, Qt\"" \ + ":\"$$nokiaVendor\"" \ " " examples_deployment.pkg_prerules += vendorinfo diff --git a/mkspecs/common/symbian/appCaptionForTranslation.cpp b/mkspecs/common/symbian/appCaptionForTranslation.cpp new file mode 100644 index 0000000..c295147 --- /dev/null +++ b/mkspecs/common/symbian/appCaptionForTranslation.cpp @@ -0,0 +1,46 @@ +/**************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the qmake spec 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$ +** +****************************************************************************/ + +//: Application short caption, currently only relevant for application projects in Symbian. +QT_TRANSLATE_NOOP("QtApplicationCaptions", "Application short caption") + +//: Application long caption, currently only relevant for application projects in Symbian. +QT_TRANSLATE_NOOP("QtApplicationCaptions", "Application long caption") diff --git a/mkspecs/common/symbian/packageNameForTranslation.cpp b/mkspecs/common/symbian/packageNameForTranslation.cpp new file mode 100644 index 0000000..bc4a7f4 --- /dev/null +++ b/mkspecs/common/symbian/packageNameForTranslation.cpp @@ -0,0 +1,47 @@ +/**************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the qmake spec 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$ +** +****************************************************************************/ + +//: Installation package name, currently only relevant for Symbian projects that deploy something. +QT_TRANSLATE_NOOP("QtPackageNames", "Package name") + +//: Smart installer installation package name, currently only relevant for Symbian projects that +//: deploy something. +QT_TRANSLATE_NOOP("QtPackageNames", "Smart installer package name") diff --git a/mkspecs/common/symbian/symbian.conf b/mkspecs/common/symbian/symbian.conf index 69188a8..f8586b0 100644 --- a/mkspecs/common/symbian/symbian.conf +++ b/mkspecs/common/symbian/symbian.conf @@ -130,6 +130,17 @@ QMAKE_LIBS_QT_ENTRY = -lqtmain$${QT_LIBINFIX}.lib QMAKE_LIBS_NO_QT_ENTRY = -llibcrt0.lib QMAKE_LIBS_NO_QT_ENTRY_GCCE = -llibcrt0_gcce.lib +# List of languages that have a Symbian language code mapping provided in localize_deployment.prf +SYMBIAN_SUPPORTED_LANGUAGES = \ + af sq am ar hy bn bg my be ca \ + hr cs da nl en et fi fr gd ka \ + de el gu he hi hu is id ga it \ + ja kn kk ko lo lv lt mk ms ml \ + mr mo mn nb pl pt pa ro ru sr \ + si sk sl so es sw sv tl ta te \ + th bo ti tr tk uk ur vi cy zu \ + nn + # These directories must match what configure uses for QT_INSTALL_PLUGINS and QT_INSTALL_IMPORTS QT_PLUGINS_BASE_DIR = /resource/qt$${QT_LIBINFIX}/plugins QT_IMPORTS_BASE_DIR = /resource/qt/imports @@ -194,17 +205,6 @@ isEmpty(S60_VERSION) { # multiple language compatible dependency statements him/herself. default_deployment.pkg_prerules += pkg_depends_webkit pkg_depends_qt pkg_platform_dependencies - -# Supports S60 3.1, 3.2, 5.0, Symbian^3, and Symbian^4 by default -pkg_platform_dependencies = \ - "; Default HW/platform dependencies" \ - "[0x102032BE],0,0,0,{\"S60ProductID\"}" \ - "[0x102752AE],0,0,0,{\"S60ProductID\"}" \ - "[0x1028315F],0,0,0,{\"S60ProductID\"}" \ - "[0x20022E6D],0,0,0,{\"S60ProductID\"}" \ - "[0x20032DE7],0,0,0,{\"S60ProductID\"}" \ - " " - DEPLOYMENT += default_deployment default_bin_deployment default_resource_deployment default_reg_deployment defineReplace(symbianRemoveSpecialCharacters) { @@ -225,3 +225,44 @@ defineReplace(symbianRemoveSpecialCharacters) { return ($$fixedStr) } +# Determines translations that are Symbian supported +defineTest(matchSymbianLanguages) { + SYMBIAN_MATCHED_LANGUAGES = + SYMBIAN_MATCHED_TRANSLATIONS = + + # Cannot parse .ts file for language here, so detect it from filename. + # Allow two and three character language and country codes. + for(translation, TRANSLATIONS) { + language = $$replace(translation, "^(.*/)?[^/]+_(([^_]{2,3}_)?[^_]{2,3})\\.ts$", \\2) + contains(SYMBIAN_SUPPORTED_LANGUAGES, $$language) { + SYMBIAN_MATCHED_LANGUAGES += $$language + SYMBIAN_MATCHED_TRANSLATIONS += $$translation + } + } + + isEmpty(SYMBIAN_MATCHED_LANGUAGES): SYMBIAN_MATCHED_LANGUAGES = en + + export(SYMBIAN_MATCHED_LANGUAGES) + export(SYMBIAN_MATCHED_TRANSLATIONS) +} + +# Symbian pkg files that define multiple languages require a language specific string to be +# defined for various items, even though the string often needs to be same for all languages. +# This replacement method will generate correct string for such cases based on TRANSLATIONS +# variable. +defineReplace(addLanguageDependentPkgItem) { + localize_deployment:!isEmpty(TRANSLATIONS):isEmpty(SYMBIAN_MATCHED_LANGUAGES) { + matchSymbianLanguages() + } + + pkgItem = $$eval($$1) + pkgLanguageList = + + for(dummyItem, SYMBIAN_MATCHED_LANGUAGES) { + pkgLanguageList += "\"$$pkgItem\"" + } + + isEmpty(pkgLanguageList): pkgLanguageList = "\"$$pkgItem\"" + + return($$join(pkgLanguageList,",",,)) +} diff --git a/mkspecs/features/default_post.prf b/mkspecs/features/default_post.prf index 09c6587..9fb9f10 100644 --- a/mkspecs/features/default_post.prf +++ b/mkspecs/features/default_post.prf @@ -110,3 +110,13 @@ QMAKE_LIBDIR += $$QMAKE_LIBDIR_POST } QMAKE_EXTRA_TARGETS += check } + +# Add special translation sources for projects that require them. +# Note 1: Since lupdate will not parse regular config scopes right, contains checks are used instead. +# Note 2: Checking for last value of TEMPLATE is used instead of simple contains check because +# lupdate doesn't respect "-=" variable assignments and therefore always finds "app" +# as the first value of TEMPLATE variable. +contains(CONFIG, lupdate_run):contains(CONFIG, localize_deployment) { + equals($$list($$last(TEMPLATE)), app): SOURCES += $$[QT_INSTALL_DATA]/mkspecs/common/symbian/appCaptionForTranslation.cpp + SOURCES += $$[QT_INSTALL_DATA]/mkspecs/common/symbian/packageNameForTranslation.cpp +} diff --git a/mkspecs/features/symbian/default_post.prf b/mkspecs/features/symbian/default_post.prf index d9ff03d..ec6ecd0 100644 --- a/mkspecs/features/symbian/default_post.prf +++ b/mkspecs/features/symbian/default_post.prf @@ -52,3 +52,15 @@ isEmpty(TARGET.UID2) { } } } + +# Supports S60 3.1, 3.2, 5.0, Symbian^3, and Symbian^4 by default +platform_product_id = S60ProductID +platform_product_id = $$addLanguageDependentPkgItem(platform_product_id) +pkg_platform_dependencies = \ + "; Default HW/platform dependencies" \ + "[0x102032BE],0,0,0,{$$platform_product_id}" \ + "[0x102752AE],0,0,0,{$$platform_product_id}" \ + "[0x1028315F],0,0,0,{$$platform_product_id}" \ + "[0x20022E6D],0,0,0,{$$platform_product_id}" \ + "[0x20032DE7],0,0,0,{$$platform_product_id}" \ + " " diff --git a/mkspecs/features/symbian/localize_deployment.prf b/mkspecs/features/symbian/localize_deployment.prf new file mode 100644 index 0000000..5f52dbc --- /dev/null +++ b/mkspecs/features/symbian/localize_deployment.prf @@ -0,0 +1,82 @@ +SYMBIAN_LANG.af = 34 #Afrikaans +SYMBIAN_LANG.sq = 35 #Albanian +SYMBIAN_LANG.am = 36 #Amharic +SYMBIAN_LANG.ar = 37 #Arabic +SYMBIAN_LANG.hy = 38 #Armenian +SYMBIAN_LANG.bn = 41 #Bengali +SYMBIAN_LANG.bg = 42 #Bulgarian +SYMBIAN_LANG.my = 43 #Burmese +SYMBIAN_LANG.be = 40 #Byelorussian +SYMBIAN_LANG.ca = 44 #Catalan +SYMBIAN_LANG.hr = 45 #Croatian +SYMBIAN_LANG.cs = 25 #Czech +SYMBIAN_LANG.da = 07 #Danish +SYMBIAN_LANG.nl = 18 #Dutch +SYMBIAN_LANG.en = 01 #English(UK) +SYMBIAN_LANG.et = 49 #Estonian +SYMBIAN_LANG.fi = 09 #Finnish +SYMBIAN_LANG.fr = 02 #French +SYMBIAN_LANG.gd = 52 #Gaelic +SYMBIAN_LANG.ka = 53 #Georgian +SYMBIAN_LANG.de = 03 #German +SYMBIAN_LANG.el = 54 #Greek +SYMBIAN_LANG.gu = 56 #Gujarati +SYMBIAN_LANG.he = 57 #Hebrew +SYMBIAN_LANG.hi = 58 #Hindi +SYMBIAN_LANG.hu = 17 #Hungarian +SYMBIAN_LANG.is = 15 #Icelandic +SYMBIAN_LANG.id = 59 #Indonesian +SYMBIAN_LANG.ga = 60 #Irish +SYMBIAN_LANG.it = 05 #Italian +SYMBIAN_LANG.ja = 32 #Japanese +SYMBIAN_LANG.kn = 62 #Kannada +SYMBIAN_LANG.kk = 63 #Kazakh +SYMBIAN_LANG.ko = 65 #Korean +SYMBIAN_LANG.lo = 66 #Laothian +SYMBIAN_LANG.lv = 67 #Latvian +SYMBIAN_LANG.lt = 68 #Lithuanian +SYMBIAN_LANG.mk = 69 #Macedonian +SYMBIAN_LANG.ms = 70 #Malay +SYMBIAN_LANG.ml = 71 #Malayalam +SYMBIAN_LANG.mr = 72 #Marathi +SYMBIAN_LANG.mo = 73 #Moldavian +SYMBIAN_LANG.mn = 74 #Mongolian +SYMBIAN_LANG.nb = 08 #Norwegian +SYMBIAN_LANG.pl = 27 #Polish +SYMBIAN_LANG.pt = 13 #Portuguese +SYMBIAN_LANG.pa = 77 #Punjabi +SYMBIAN_LANG.ro = 78 #Romanian +SYMBIAN_LANG.ru = 16 #Russian +SYMBIAN_LANG.sr = 79 #Serbian +SYMBIAN_LANG.si = 80 #Singhalese +SYMBIAN_LANG.sk = 26 #Slovak +SYMBIAN_LANG.sl = 28 #Slovenian +SYMBIAN_LANG.so = 81 #Somali +SYMBIAN_LANG.es = 04 #Spanish +SYMBIAN_LANG.sw = 84 #Swahili +SYMBIAN_LANG.sv = 06 #Swedish +SYMBIAN_LANG.tl = 39 #Tagalog +SYMBIAN_LANG.ta = 87 #Tamil +SYMBIAN_LANG.te = 88 #Telugu +SYMBIAN_LANG.th = 33 #Thai +SYMBIAN_LANG.bo = 89 #Tibetan +SYMBIAN_LANG.ti = 90 #Tigrinya +SYMBIAN_LANG.tr = 14 #Turkish +SYMBIAN_LANG.tk = 92 #Turkmen +SYMBIAN_LANG.uk = 93 #Ukrainian +SYMBIAN_LANG.ur = 94 #Urdu +SYMBIAN_LANG.vi = 96 #Vietnamese +SYMBIAN_LANG.cy = 97 #Welsh +SYMBIAN_LANG.zu = 98 #Zulu +SYMBIAN_LANG.nn = 75 #Nynorsk + +isEmpty(SYMBIAN_MATCHED_LANGUAGES) { + matchSymbianLanguages() +} + +!isEmpty(SYMBIAN_MATCHED_TRANSLATIONS) { + # Generate dependencies to .ts files for pkg files + template_pkg_target.depends += $$SYMBIAN_MATCHED_TRANSLATIONS + installer_pkg_target.depends += $$SYMBIAN_MATCHED_TRANSLATIONS + stub_pkg_target.depends += $$SYMBIAN_MATCHED_TRANSLATIONS +} diff --git a/mkspecs/features/symbian/qt.prf b/mkspecs/features/symbian/qt.prf index b5d3d98..c8f97aa 100644 --- a/mkspecs/features/symbian/qt.prf +++ b/mkspecs/features/symbian/qt.prf @@ -25,9 +25,10 @@ INCLUDEPATH = $$PREPEND_INCLUDEPATH $$INCLUDEPATH # Note: Qt libs package with full capabilities has UID3 of 0x2001E61C, # while self-signed version typically has temporary UID3 of 0xE001E61C. contains(CONFIG, qt):!contains(TARGET.UID3, 0x2001E61C):!contains(TARGET.UID3, 0xE001E61C):isEmpty(QT_LIBINFIX) { + qt_pkg_name = Qt pkg_depends_qt += \ "; Default dependency to Qt libraries" \ - "(0x2001E61C), $${QT_MAJOR_VERSION}, $${QT_MINOR_VERSION}, $${QT_PATCH_VERSION}, {\"Qt\"}" + "(0x2001E61C), $${QT_MAJOR_VERSION}, $${QT_MINOR_VERSION}, $${QT_PATCH_VERSION}, {$$addLanguageDependentPkgItem(qt_pkg_name)}" # Projects linking to webkit need dependency to webkit contains(QT, webkit): { @@ -38,9 +39,10 @@ contains(CONFIG, qt):!contains(TARGET.UID3, 0x2001E61C):!contains(TARGET.UID3, 0 QT_WEBKIT_PATCH_VERSION = $${QT_PATCH_VERSION} } + webkit_pkg_name = QtWebKit pkg_depends_webkit += \ "; Dependency to Qt Webkit" \ - "(0x200267C2), $${QT_WEBKIT_MAJOR_VERSION}, $${QT_WEBKIT_MINOR_VERSION}, $${QT_WEBKIT_PATCH_VERSION}, {\"QtWebKit\"}" + "(0x200267C2), $${QT_WEBKIT_MAJOR_VERSION}, $${QT_WEBKIT_MINOR_VERSION}, $${QT_WEBKIT_PATCH_VERSION}, {$$addLanguageDependentPkgItem(webkit_pkg_name)}" } else { default_deployment.pkg_prerules -= pkg_depends_webkit } diff --git a/mkspecs/features/symbian/sis_targets.prf b/mkspecs/features/symbian/sis_targets.prf index e838e10..ad81803 100644 --- a/mkspecs/features/symbian/sis_targets.prf +++ b/mkspecs/features/symbian/sis_targets.prf @@ -12,6 +12,17 @@ else:!equals(DEPLOYMENT, default_deployment) { equals(GENERATE_SIS_TARGETS, true) { baseTarget = $$symbianRemoveSpecialCharacters($$basename(TARGET)) + template_pkg_target.target = $${baseTarget}_template.pkg + template_pkg_target.depends += $$_PRO_FILE_ + template_pkg_target.commands = $(MAKE) -f $(MAKEFILE) qmake + installer_pkg_target.target = $${baseTarget}_installer.pkg + installer_pkg_target.depends += $$_PRO_FILE_ + installer_pkg_target.commands = $(MAKE) -f $(MAKEFILE) qmake + stub_pkg_target.target = $${baseTarget}_stub.pkg + stub_pkg_target.depends += $$_PRO_FILE_ + stub_pkg_target.commands = $(MAKE) -f $(MAKEFILE) qmake + QMAKE_EXTRA_TARGETS += template_pkg_target installer_pkg_target stub_pkg_target + symbian-abld|symbian-sbsv2 { symbian-sbsv2 { @@ -35,6 +46,7 @@ equals(GENERATE_SIS_TARGETS, true) { , \ $(MAKE) -f $(MAKEFILE) fail_sis_nopkg \ ) + sis_target.depends += $${baseTarget}_template.pkg ok_sis_target.target = ok_sis ok_sis_target.commands = createpackage $$CONVERT_GCCE_PARAM $(QT_SIS_OPTIONS) $${baseTarget}_template.pkg \ @@ -54,6 +66,7 @@ equals(GENERATE_SIS_TARGETS, true) { , \ $(MAKE) -f $(MAKEFILE) fail_sis_nopkg \ ) + unsigned_sis_target.depends += $${baseTarget}_template.pkg ok_unsigned_sis_target.target = ok_unsigned_sis ok_unsigned_sis_target.commands = createpackage $$CONVERT_GCCE_PARAM $(QT_SIS_OPTIONS) -o $${baseTarget}_template.pkg $(QT_SIS_TARGET) @@ -67,7 +80,7 @@ equals(GENERATE_SIS_TARGETS, true) { , \ $(MAKE) -f $(MAKEFILE) fail_sis_nopkg \ ) - installer_sis_target.depends = sis + installer_sis_target.depends = $${baseTarget}_installer.pkg sis ok_installer_sis_target.target = ok_installer_sis ok_installer_sis_target.commands = createpackage $(QT_SIS_OPTIONS) $${baseTarget}_installer.pkg - \ @@ -79,7 +92,7 @@ equals(GENERATE_SIS_TARGETS, true) { , \ $(MAKE) -f $(MAKEFILE) fail_sis_nopkg \ ) - unsigned_installer_sis_target.depends = unsigned_sis + unsigned_installer_sis_target.depends = $${baseTarget}_installer.pkg unsigned_sis ok_unsigned_installer_sis_target.target = ok_unsigned_installer_sis ok_unsigned_installer_sis_target.commands = createpackage $(QT_SIS_OPTIONS) -o $${baseTarget}_installer.pkg @@ -104,6 +117,7 @@ equals(GENERATE_SIS_TARGETS, true) { , \ $(MAKE) -f $(MAKEFILE) fail_sis_nopkg \ ) + stub_sis_target.depends += $${baseTarget}_stub.pkg ok_stub_sis_target.target = ok_stub_sis ok_stub_sis_target.commands = createpackage -s $(QT_SIS_OPTIONS) $${baseTarget}_stub.pkg \ @@ -154,11 +168,11 @@ equals(GENERATE_SIS_TARGETS, true) { sis_target.target = sis sis_target.commands = $$QMAKE_CREATEPACKAGE $(QT_SIS_OPTIONS) $${baseTarget}_template.pkg \ - $(QT_SIS_CERTIFICATE) $(QT_SIS_KEY) $(QT_SIS_PASSPHRASE) - sis_target.depends = first + sis_target.depends = first $${baseTarget}_template.pkg unsigned_sis_target.target = unsigned_sis unsigned_sis_target.commands = $$QMAKE_CREATEPACKAGE $(QT_SIS_OPTIONS) -o $${baseTarget}_template.pkg - unsigned_sis_target.depends = first + unsigned_sis_target.depends = first $${baseTarget}_template.pkg target_sis_target.target = $${sis_destdir}/$${baseTarget}.sis target_sis_target.commands = $(MAKE) -f $(MAKEFILE) sis @@ -166,11 +180,11 @@ equals(GENERATE_SIS_TARGETS, true) { installer_sis_target.target = installer_sis installer_sis_target.commands = $$QMAKE_CREATEPACKAGE $(QT_SIS_OPTIONS) $${baseTarget}_installer.pkg - \ $(QT_SIS_CERTIFICATE) $(QT_SIS_KEY) $(QT_SIS_PASSPHRASE) - installer_sis_target.depends = sis + installer_sis_target.depends = $${baseTarget}_installer.pkg sis unsigned_installer_sis_target.target = unsigned_installer_sis unsigned_installer_sis_target.commands = $$QMAKE_CREATEPACKAGE $(QT_SIS_OPTIONS) -o $${baseTarget}_installer.pkg - unsigned_installer_sis_target.depends = unsigned_sis + unsigned_installer_sis_target.depends = $${baseTarget}_installer.pkg unsigned_sis !isEmpty(sis_destdir):!equals(sis_destdir, "."):!equals(sis_destdir, "./") { sis_target.commands += && $$QMAKE_MOVE $${baseTarget}.sis $$sis_destdir diff --git a/qmake/generators/symbian/symbian_makefile.h b/qmake/generators/symbian/symbian_makefile.h index 94f0145..28a6206 100644 --- a/qmake/generators/symbian/symbian_makefile.h +++ b/qmake/generators/symbian/symbian_makefile.h @@ -79,18 +79,18 @@ public: } } + SymbianLocalizationList symbianLocalizationList; + parseTsFiles(&symbianLocalizationList); + if (generatePkg) { - generatePkgFile(iconFile, false); + generatePkgFile(iconFile, false, symbianLocalizationList); } - // Get the application translations and convert to symbian OS lang code, i.e. decical number - QStringList symbianLangCodes = symbianLangCodesFromTsFiles(); - if (targetType == TypeExe) { if (!this->project->values("CONFIG").contains("no_icon", Qt::CaseInsensitive)) { writeRegRssFile(userRssRules); writeRssFile(numberOfIcons, iconFile); - writeLocFile(symbianLangCodes); + writeLocFile(symbianLocalizationList); } } diff --git a/qmake/generators/symbian/symbiancommon.cpp b/qmake/generators/symbian/symbiancommon.cpp index 9d4f27e..2244a98 100644 --- a/qmake/generators/symbian/symbiancommon.cpp +++ b/qmake/generators/symbian/symbiancommon.cpp @@ -41,6 +41,7 @@ #include "symbiancommon.h" #include +#include // Included from tools/shared #include @@ -151,7 +152,9 @@ QString romPath(const QString& path) return QLatin1String("z:") + path; } -void SymbianCommonGenerator::generatePkgFile(const QString &iconFile, bool epocBuild) +void SymbianCommonGenerator::generatePkgFile(const QString &iconFile, + bool epocBuild, + const SymbianLocalizationList &symbianLocalizationList) { QMakeProject *project = generator->project; QString pkgFilename = Option::output_dir + QLatin1Char('/') + @@ -270,8 +273,17 @@ void SymbianCommonGenerator::generatePkgFile(const QString &iconFile, bool epocB // Apply some defaults if specific data does not exist in PKG pre-rules if (languageRules.isEmpty()) { - // language, (*** hardcoded to english atm, should be parsed from TRANSLATIONS) - languageRules << "; Language\n&EN\n\n"; + if (symbianLocalizationList.isEmpty()) { + languageRules << "; Language\n&EN\n\n"; + } else { + QStringList langCodes; + SymbianLocalizationListIterator iter(symbianLocalizationList); + while (iter.hasNext()) { + const SymbianLocalization &loc = iter.next(); + langCodes << loc.symbianLanguageCode; + } + languageRules << QString("; Languages\n&%1\n\n").arg(langCodes.join(",")); + } } else if (headerRules.isEmpty()) { // In case user defines langs, he must take care also about SIS header fprintf(stderr, "Warning: If language is defined with DEPLOYMENT pkg_prerules, also the SIS header must be defined\n"); @@ -320,12 +332,14 @@ void SymbianCommonGenerator::generatePkgFile(const QString &iconFile, bool epocB // Package header QString sisHeader = "; SIS header: name, uid, version\n#{\"%1\"},(%2),%3\n\n"; - QString visualTarget = project->values("DEPLOYMENT.display_name").join(" "); - if (visualTarget.isEmpty()) - visualTarget = generator->escapeFilePath(project->first("TARGET")); - visualTarget = removePathSeparators(visualTarget); - QString wrapperTarget = visualTarget + " installer"; + QString defaultVisualTarget = project->values("DEPLOYMENT.display_name").join(" "); + if (defaultVisualTarget.isEmpty()) + defaultVisualTarget = generator->escapeFilePath(project->first("TARGET")); + defaultVisualTarget = removePathSeparators(defaultVisualTarget); + + QString visualTarget = generatePkgNameForHeader(symbianLocalizationList, defaultVisualTarget, false); + QString wrapperTarget = generatePkgNameForHeader(symbianLocalizationList, defaultVisualTarget, true); if (installerSisHeader.startsWith("0x", Qt::CaseInsensitive)) { tw << sisHeader.arg(wrapperTarget).arg(installerSisHeader).arg(applicationVersion); @@ -344,7 +358,13 @@ void SymbianCommonGenerator::generatePkgFile(const QString &iconFile, bool epocB // Vendor name if (!containsStartWithItem('%', vendorRules)) { - vendorRules << "; Default localized vendor name\n%{\"Vendor\"}\n\n"; + QString vendorStr = QLatin1String("\"Vendor\","); + QString locVendors = vendorStr; + for (int i = 1; i < symbianLocalizationList.size(); i++) { + locVendors.append(vendorStr); + } + locVendors.chop(1); + vendorRules << QString("; Default localized vendor name\n%{%1}\n\n").arg(locVendors); } if (!containsStartWithItem(':', vendorRules)) { vendorRules << "; Default unique vendor name\n:\"Vendor\"\n\n"; @@ -385,6 +405,13 @@ void SymbianCommonGenerator::generatePkgFile(const QString &iconFile, bool epocB t << manufacturerStr << endl; } + // ### FIXME: remove epocBuild check once makefile based mkspecs support localized resource generation + if (epocBuild && symbianLocalizationList.size()) { + // Add localized resources to DEPLOYMENT if default resource deployment is done + addLocalizedResourcesToDeployment("default_resource_deployment.sources", symbianLocalizationList); + addLocalizedResourcesToDeployment("default_reg_deployment.sources", symbianLocalizationList); + } + // deploy files specified by DEPLOYMENT variable QString remoteTestPath; QString zDir; @@ -633,12 +660,9 @@ void SymbianCommonGenerator::writeRssFile(QString &numberOfIcons, QString &iconF } } -void SymbianCommonGenerator::writeLocFile(QStringList &symbianLangCodes) +void SymbianCommonGenerator::writeLocFile(const SymbianLocalizationList &symbianLocalizationList) { - QString filename(fixedTarget); - if (!Option::output_dir.isEmpty()) - filename = Option::output_dir + '/' + filename; - filename.append(".loc"); + QString filename = generateLocFileName(); QFile ft(filename); if (ft.open(QIODevice::WriteOnly)) { generatedFiles << ft.fileName(); @@ -658,11 +682,22 @@ void SymbianCommonGenerator::writeLocFile(QStringList &symbianLangCodes) t << "#ifdef LANGUAGE_SC" << endl; t << "#define STRING_r_short_caption \"" << displayName << "\"" << endl; t << "#define STRING_r_caption \"" << displayName << "\"" << endl; - foreach(QString lang, symbianLangCodes) { - t << "#elif defined LANGUAGE_" << lang << endl; - t << "#define STRING_r_short_caption \"" << displayName << "\"" << endl; - t << "#define STRING_r_caption \"" << displayName << "\"" << endl; + + SymbianLocalizationListIterator iter(symbianLocalizationList); + while (iter.hasNext()) { + const SymbianLocalization &loc = iter.next(); + QString shortCaption = loc.shortCaption; + QString longCaption = loc.longCaption; + if (shortCaption.isEmpty()) + shortCaption = displayName; + if (longCaption.isEmpty()) + longCaption = displayName; + + t << "#elif defined LANGUAGE_" << loc.symbianLanguageCode << endl; + t << "#define STRING_r_short_caption \"" << shortCaption << "\"" << endl; + t << "#define STRING_r_caption \"" << longCaption << "\"" << endl; } + t << "#else" << endl; t << "#define STRING_r_short_caption \"" << displayName << "\"" << endl; t << "#define STRING_r_caption \"" << displayName << "\"" << endl; @@ -803,195 +838,49 @@ void SymbianCommonGenerator::writeCustomDefFile() } } -QStringList SymbianCommonGenerator::symbianLangCodesFromTsFiles() +void SymbianCommonGenerator::parseTsFiles(SymbianLocalizationList *symbianLocalizationList) { - QStringList tsfiles; - QStringList symbianLangCodes; - tsfiles << generator->project->values("TRANSLATIONS"); + if (!generator->project->isActiveConfig("localize_deployment")) { + return; + } - fillQt2S60LangMapTable(); + QStringList symbianTsFiles; - foreach(QString file, tsfiles) { - int extIndex = file.lastIndexOf("."); - int langIndex = file.lastIndexOf("_", (extIndex - file.length())); - langIndex += 1; - QString qtlang = file.mid(langIndex, extIndex - langIndex); - QString s60lang = qt2S60LangMapTable.value(qtlang, QString("SC")); + symbianTsFiles << generator->project->values("SYMBIAN_MATCHED_TRANSLATIONS"); - if (!symbianLangCodes.contains(s60lang) && s60lang != "SC") - symbianLangCodes += s60lang; - } + if (!symbianTsFiles.isEmpty()) { + fillQt2SymbianLocalizationList(symbianLocalizationList); - return symbianLangCodes; + QMutableListIterator iter(*symbianLocalizationList); + while (iter.hasNext()) { + SymbianLocalization &loc = iter.next(); + static QString matchStrTemplate = QLatin1String(".*_%1\\.ts"); + QString matchStr = matchStrTemplate.arg(loc.qtLanguageCode); + + foreach (QString file, symbianTsFiles) { + QRegExp matcher(matchStr); + if (matcher.exactMatch(file) && parseTsContent(file, &loc)) + break; + } + } + } } -void SymbianCommonGenerator::fillQt2S60LangMapTable() +void SymbianCommonGenerator::fillQt2SymbianLocalizationList(SymbianLocalizationList *symbianLocalizationList) { - qt2S60LangMapTable.reserve(170); // 165 items at time of writing. - qt2S60LangMapTable.insert("ab", "SC"); //Abkhazian // - qt2S60LangMapTable.insert("om", "SC"); //Afan // - qt2S60LangMapTable.insert("aa", "SC"); //Afar // - qt2S60LangMapTable.insert("af", "34"); //Afrikaans //Afrikaans - qt2S60LangMapTable.insert("sq", "35"); //Albanian //Albanian - qt2S60LangMapTable.insert("am", "36"); //Amharic //Amharic - qt2S60LangMapTable.insert("ar", "37"); //Arabic //Arabic - qt2S60LangMapTable.insert("hy", "38"); //Armenian //Armenian - qt2S60LangMapTable.insert("as", "SC"); //Assamese // - qt2S60LangMapTable.insert("ay", "SC"); //Aymara // - qt2S60LangMapTable.insert("az", "SC"); //Azerbaijani // - qt2S60LangMapTable.insert("ba", "SC"); //Bashkir // - qt2S60LangMapTable.insert("eu", "SC"); //Basque // - qt2S60LangMapTable.insert("bn", "41"); //Bengali //Bengali - qt2S60LangMapTable.insert("dz", "SC"); //Bhutani // - qt2S60LangMapTable.insert("bh", "SC"); //Bihari // - qt2S60LangMapTable.insert("bi", "SC"); //Bislama // - qt2S60LangMapTable.insert("br", "SC"); //Breton // - qt2S60LangMapTable.insert("bg", "42"); //Bulgarian //Bulgarian - qt2S60LangMapTable.insert("my", "43"); //Burmese //Burmese - qt2S60LangMapTable.insert("be", "40"); //Byelorussian //Belarussian - qt2S60LangMapTable.insert("km", "SC"); //Cambodian // - qt2S60LangMapTable.insert("ca", "44"); //Catalan //Catalan - qt2S60LangMapTable.insert("zh", "SC"); //Chinese // - qt2S60LangMapTable.insert("co", "SC"); //Corsican // - qt2S60LangMapTable.insert("hr", "45"); //Croatian //Croatian - qt2S60LangMapTable.insert("cs", "25"); //Czech //Czech - qt2S60LangMapTable.insert("da", "07"); //Danish //Danish - qt2S60LangMapTable.insert("nl", "18"); //Dutch //Dutch - qt2S60LangMapTable.insert("en", "01"); //English //English(UK) - qt2S60LangMapTable.insert("eo", "SC"); //Esperanto // - qt2S60LangMapTable.insert("et", "49"); //Estonian //Estonian - qt2S60LangMapTable.insert("fo", "SC"); //Faroese // - qt2S60LangMapTable.insert("fj", "SC"); //Fiji // - qt2S60LangMapTable.insert("fi", "09"); //Finnish //Finnish - qt2S60LangMapTable.insert("fr", "02"); //French //French - qt2S60LangMapTable.insert("fy", "SC"); //Frisian // - qt2S60LangMapTable.insert("gd", "52"); //Gaelic //Gaelic - qt2S60LangMapTable.insert("gl", "SC"); //Galician // - qt2S60LangMapTable.insert("ka", "53"); //Georgian //Georgian - qt2S60LangMapTable.insert("de", "03"); //German //German - qt2S60LangMapTable.insert("el", "54"); //Greek //Greek - qt2S60LangMapTable.insert("kl", "SC"); //Greenlandic // - qt2S60LangMapTable.insert("gn", "SC"); //Guarani // - qt2S60LangMapTable.insert("gu", "56"); //Gujarati //Gujarati - qt2S60LangMapTable.insert("ha", "SC"); //Hausa // - qt2S60LangMapTable.insert("he", "57"); //Hebrew //Hebrew - qt2S60LangMapTable.insert("hi", "58"); //Hindi //Hindi - qt2S60LangMapTable.insert("hu", "17"); //Hungarian //Hungarian - qt2S60LangMapTable.insert("is", "15"); //Icelandic //Icelandic - qt2S60LangMapTable.insert("id", "59"); //Indonesian //Indonesian - qt2S60LangMapTable.insert("ia", "SC"); //Interlingua // - qt2S60LangMapTable.insert("ie", "SC"); //Interlingue // - qt2S60LangMapTable.insert("iu", "SC"); //Inuktitut // - qt2S60LangMapTable.insert("ik", "SC"); //Inupiak // - qt2S60LangMapTable.insert("ga", "60"); //Irish //Irish - qt2S60LangMapTable.insert("it", "05"); //Italian //Italian - qt2S60LangMapTable.insert("ja", "32"); //Japanese //Japanese - qt2S60LangMapTable.insert("jv", "SC"); //Javanese // - qt2S60LangMapTable.insert("kn", "62"); //Kannada //Kannada - qt2S60LangMapTable.insert("ks", "SC"); //Kashmiri // - qt2S60LangMapTable.insert("kk", "63"); //Kazakh //Kazakh - qt2S60LangMapTable.insert("rw", "SC"); //Kinyarwanda // - qt2S60LangMapTable.insert("ky", "SC"); //Kirghiz // - qt2S60LangMapTable.insert("ko", "65"); //Korean //Korean - qt2S60LangMapTable.insert("ku", "SC"); //Kurdish // - qt2S60LangMapTable.insert("rn", "SC"); //Kurundi // - qt2S60LangMapTable.insert("lo", "66"); //Laothian //Laothian - qt2S60LangMapTable.insert("la", "SC"); //Latin // - qt2S60LangMapTable.insert("lv", "67"); //Latvian //Latvian - qt2S60LangMapTable.insert("ln", "SC"); //Lingala // - qt2S60LangMapTable.insert("lt", "68"); //Lithuanian //Lithuanian - qt2S60LangMapTable.insert("mk", "69"); //Macedonian //Macedonian - qt2S60LangMapTable.insert("mg", "SC"); //Malagasy // - qt2S60LangMapTable.insert("ms", "70"); //Malay //Malay - qt2S60LangMapTable.insert("ml", "71"); //Malayalam //Malayalam - qt2S60LangMapTable.insert("mt", "SC"); //Maltese // - qt2S60LangMapTable.insert("mi", "SC"); //Maori // - qt2S60LangMapTable.insert("mr", "72"); //Marathi //Marathi - qt2S60LangMapTable.insert("mo", "73"); //Moldavian //Moldovian - qt2S60LangMapTable.insert("mn", "74"); //Mongolian //Mongolian - qt2S60LangMapTable.insert("na", "SC"); //Nauru // - qt2S60LangMapTable.insert("ne", "SC"); //Nepali // - qt2S60LangMapTable.insert("nb", "08"); //Norwegian //Norwegian - qt2S60LangMapTable.insert("oc", "SC"); //Occitan // - qt2S60LangMapTable.insert("or", "SC"); //Oriya // - qt2S60LangMapTable.insert("ps", "SC"); //Pashto // - qt2S60LangMapTable.insert("fa", "SC"); //Persian // - qt2S60LangMapTable.insert("pl", "27"); //Polish //Polish - qt2S60LangMapTable.insert("pt", "13"); //Portuguese //Portuguese - qt2S60LangMapTable.insert("pa", "77"); //Punjabi //Punjabi - qt2S60LangMapTable.insert("qu", "SC"); //Quechua // - qt2S60LangMapTable.insert("rm", "SC"); //RhaetoRomance // - qt2S60LangMapTable.insert("ro", "78"); //Romanian //Romanian - qt2S60LangMapTable.insert("ru", "16"); //Russian //Russian - qt2S60LangMapTable.insert("sm", "SC"); //Samoan // - qt2S60LangMapTable.insert("sg", "SC"); //Sangho // - qt2S60LangMapTable.insert("sa", "SC"); //Sanskrit // - qt2S60LangMapTable.insert("sr", "79"); //Serbian //Serbian - qt2S60LangMapTable.insert("sh", "SC"); //SerboCroatian // - qt2S60LangMapTable.insert("st", "SC"); //Sesotho // - qt2S60LangMapTable.insert("tn", "SC"); //Setswana // - qt2S60LangMapTable.insert("sn", "SC"); //Shona // - qt2S60LangMapTable.insert("sd", "SC"); //Sindhi // - qt2S60LangMapTable.insert("si", "80"); //Singhalese //Sinhalese - qt2S60LangMapTable.insert("ss", "SC"); //Siswati // - qt2S60LangMapTable.insert("sk", "26"); //Slovak //Slovak - qt2S60LangMapTable.insert("sl", "28"); //Slovenian //Slovenian - qt2S60LangMapTable.insert("so", "81"); //Somali //Somali - qt2S60LangMapTable.insert("es", "04"); //Spanish //Spanish - qt2S60LangMapTable.insert("su", "SC"); //Sundanese // - qt2S60LangMapTable.insert("sw", "84"); //Swahili //Swahili - qt2S60LangMapTable.insert("sv", "06"); //Swedish //Swedish - qt2S60LangMapTable.insert("tl", "39"); //Tagalog //Tagalog - qt2S60LangMapTable.insert("tg", "SC"); //Tajik // - qt2S60LangMapTable.insert("ta", "87"); //Tamil //Tamil - qt2S60LangMapTable.insert("tt", "SC"); //Tatar // - qt2S60LangMapTable.insert("te", "88"); //Telugu //Telugu - qt2S60LangMapTable.insert("th", "33"); //Thai //Thai - qt2S60LangMapTable.insert("bo", "89"); //Tibetan //Tibetan - qt2S60LangMapTable.insert("ti", "90"); //Tigrinya //Tigrinya - qt2S60LangMapTable.insert("to", "SC"); //Tonga // - qt2S60LangMapTable.insert("ts", "SC"); //Tsonga // - qt2S60LangMapTable.insert("tr", "14"); //Turkish //Turkish - qt2S60LangMapTable.insert("tk", "92"); //Turkmen //Turkmen - qt2S60LangMapTable.insert("tw", "SC"); //Twi // - qt2S60LangMapTable.insert("ug", "SC"); //Uigur // - qt2S60LangMapTable.insert("uk", "93"); //Ukrainian //Ukrainian - qt2S60LangMapTable.insert("ur", "94"); //Urdu //Urdu - qt2S60LangMapTable.insert("uz", "SC"); //Uzbek // - qt2S60LangMapTable.insert("vi", "96"); //Vietnamese //Vietnamese - qt2S60LangMapTable.insert("vo", "SC"); //Volapuk // - qt2S60LangMapTable.insert("cy", "97"); //Welsh //Welsh - qt2S60LangMapTable.insert("wo", "SC"); //Wolof // - qt2S60LangMapTable.insert("xh", "SC"); //Xhosa // - qt2S60LangMapTable.insert("yi", "SC"); //Yiddish // - qt2S60LangMapTable.insert("yo", "SC"); //Yoruba // - qt2S60LangMapTable.insert("za", "SC"); //Zhuang // - qt2S60LangMapTable.insert("zu", "98"); //Zulu //Zulu - qt2S60LangMapTable.insert("nn", "75"); //Nynorsk //NorwegianNynorsk - qt2S60LangMapTable.insert("bs", "SC"); //Bosnian // - qt2S60LangMapTable.insert("dv", "SC"); //Divehi // - qt2S60LangMapTable.insert("gv", "SC"); //Manx // - qt2S60LangMapTable.insert("kw", "SC"); //Cornish // - qt2S60LangMapTable.insert("ak", "SC"); //Akan // - qt2S60LangMapTable.insert("kok", "SC"); //Konkani // - qt2S60LangMapTable.insert("gaa", "SC"); //Ga // - qt2S60LangMapTable.insert("ig", "SC"); //Igbo // - qt2S60LangMapTable.insert("kam", "SC"); //Kamba // - qt2S60LangMapTable.insert("syr", "SC"); //Syriac // - qt2S60LangMapTable.insert("byn", "SC"); //Blin // - qt2S60LangMapTable.insert("gez", "SC"); //Geez // - qt2S60LangMapTable.insert("kfo", "SC"); //Koro // - qt2S60LangMapTable.insert("sid", "SC"); //Sidamo // - qt2S60LangMapTable.insert("cch", "SC"); //Atsam // - qt2S60LangMapTable.insert("tig", "SC"); //Tigre // - qt2S60LangMapTable.insert("kaj", "SC"); //Jju // - qt2S60LangMapTable.insert("fur", "SC"); //Friulian // - qt2S60LangMapTable.insert("ve", "SC"); //Venda // - qt2S60LangMapTable.insert("ee", "SC"); //Ewe // - qt2S60LangMapTable.insert("wa", "SC"); //Walamo // - qt2S60LangMapTable.insert("haw", "SC"); //Hawaiian // - qt2S60LangMapTable.insert("kcg", "SC"); //Tyap // - qt2S60LangMapTable.insert("ny", "SC"); //Chewa // + static QString symbianCodePrefix = QLatin1String("SYMBIAN_LANG."); + + QStringList symbianLanguages = generator->project->values("SYMBIAN_MATCHED_LANGUAGES"); + + foreach (QString qtCode, symbianLanguages) { + SymbianLocalization newLoc; + QString symbianCodeVariable = symbianCodePrefix + qtCode; + newLoc.symbianLanguageCode = generator->project->first(symbianCodeVariable); + if (!newLoc.symbianLanguageCode.isEmpty()) { + newLoc.qtLanguageCode = qtCode; + symbianLocalizationList->append(newLoc); + } + } } void SymbianCommonGenerator::parsePreRules(const QString &deploymentVariable, @@ -1057,3 +946,183 @@ void SymbianCommonGenerator::parsePostRules(const QString &deploymentVariable, } } +bool SymbianCommonGenerator::parseTsContent(const QString &tsFilename, SymbianLocalization *loc) +{ + bool retval = true; + QMakeProject *project = generator->project; + QFile tsFile(tsFilename); + + if (tsFile.exists()) { + if (tsFile.open(QIODevice::ReadOnly)) { + static QString applicationCaptionsContext = QLatin1String("QtApplicationCaptions"); + static QString pkgNameContext = QLatin1String("QtPackageNames"); + static QString tsElement = QLatin1String("TS"); + static QString contextElement = QLatin1String("context"); + static QString nameElement = QLatin1String("name"); + static QString messageElement = QLatin1String("message"); + static QString sourceElement = QLatin1String("source"); + static QString translationElement = QLatin1String("translation"); + static QString shortCaptionId = QLatin1String("Application short caption"); + static QString longCaptionId = QLatin1String("Application long caption"); + static QString pkgDisplayNameId = QLatin1String("Package name"); + static QString installerPkgDisplayNameId = QLatin1String("Smart installer package name"); + static QString languageAttribute = QLatin1String("language"); + static QChar underscoreChar = QLatin1Char('_'); + + enum CurrentContext { + ContextUnknown, + ContextUninteresting, + ContextInteresting + }; + + QXmlStreamReader xml(&tsFile); + + while (xml.name() != tsElement) + xml.readNextStartElement(); + + while (xml.readNextStartElement()) { + if (xml.name() == contextElement) { + CurrentContext currentContext = ContextUnknown; + while (xml.readNextStartElement()) { + if (currentContext == ContextUnknown) { + // Expect name element before message elements + if (xml.name() == nameElement) { + QString nameText = xml.readElementText(); + if (nameText == applicationCaptionsContext || nameText == pkgNameContext) { + currentContext = ContextInteresting; + } else { + currentContext = ContextUninteresting; + } + } else { + xml.skipCurrentElement(); + } + } else if (currentContext == ContextInteresting) { + if (xml.name() == messageElement) { + QString source; + QString translation; + while (xml.readNextStartElement()) { + if (xml.name() == sourceElement) { + source = xml.readElementText(); + } else if (xml.name() == translationElement) { + translation = xml.readElementText(); + } else { + xml.skipCurrentElement(); + } + } + + if (source == shortCaptionId) { + if (loc->shortCaption.isEmpty()) { + loc->shortCaption = translation; + } else { + fprintf(stderr, "Warning: Duplicate application short caption defined in (%s).\n", + qPrintable(tsFilename)); + } + } else if (source == longCaptionId) { + if (loc->longCaption.isEmpty()) { + loc->longCaption = translation; + } else { + fprintf(stderr, "Warning: Duplicate application long caption defined in (%s).\n", + qPrintable(tsFilename)); + } + } else if (source == pkgDisplayNameId) { + if (loc->pkgDisplayName.isEmpty()) { + loc->pkgDisplayName = translation; + } else { + fprintf(stderr, "Warning: Duplicate package display name defined in (%s).\n", + qPrintable(tsFilename)); + } + } else if (source == installerPkgDisplayNameId) { + if (loc->installerPkgDisplayName.isEmpty()) { + loc->installerPkgDisplayName = translation; + } else { + fprintf(stderr, "Warning: Duplicate smart installer package display name defined in (%s).\n", + qPrintable(tsFilename)); + } + } + } else { + xml.skipCurrentElement(); + } + } else { + xml.skipCurrentElement(); + } + } + } else { + xml.skipCurrentElement(); + } + } + if (xml.hasError()) { + retval = false; + fprintf(stderr, "ERROR: Encountered error \"%s\" when parsing ts file (%s).\n", + qPrintable(xml.errorString()), qPrintable(tsFilename)); + } + } else { + retval = false; + fprintf(stderr, "Warning: Could not open ts file (%s).\n", qPrintable(tsFilename)); + } + } else { + retval = false; + fprintf(stderr, "Warning: ts file does not exist: (%s), unable to parse it.\n", + qPrintable(tsFilename)); + } + + return retval; +} + +QString SymbianCommonGenerator::generatePkgNameForHeader(const SymbianLocalizationList &symbianLocalizationList, + const QString &defaultName, + bool isForSmartInstaller) +{ + QStringList allNames; + QString noTranslation = defaultName; + + if (isForSmartInstaller) + noTranslation += QLatin1String(" installer"); + + SymbianLocalizationListIterator iter(symbianLocalizationList); + while (iter.hasNext()) { + const SymbianLocalization &loc = iter.next(); + QString currentName; + if (isForSmartInstaller) { + currentName = loc.installerPkgDisplayName; + } else { + currentName = loc.pkgDisplayName; + } + + if (currentName.isEmpty()) + currentName = noTranslation; + + allNames << currentName; + } + + if (!allNames.size()) + allNames << noTranslation; + + return allNames.join("\",\""); + +} + +void SymbianCommonGenerator::addLocalizedResourcesToDeployment(const QString &deploymentFilesVar, + const SymbianLocalizationList &symbianLocalizationList) +{ + QStringList locResources; + foreach (QString defaultResource, generator->project->values(deploymentFilesVar)) { + if (defaultResource.endsWith(".rsc")) { + defaultResource.chop(2); + SymbianLocalizationListIterator iter(symbianLocalizationList); + while (iter.hasNext()) { + const SymbianLocalization &loc = iter.next(); + locResources << QString(defaultResource + loc.symbianLanguageCode); + } + } + } + generator->project->values(deploymentFilesVar) << locResources; +} + +QString SymbianCommonGenerator::generateLocFileName() +{ + QString fileName(fixedTarget); + if (!Option::output_dir.isEmpty()) + fileName = Option::output_dir + QLatin1Char('/') + fileName; + fileName.append(".loc"); + return fileName; +} diff --git a/qmake/generators/symbian/symbiancommon.h b/qmake/generators/symbian/symbiancommon.h index 80f2079..1db5890 100644 --- a/qmake/generators/symbian/symbiancommon.h +++ b/qmake/generators/symbian/symbiancommon.h @@ -48,6 +48,20 @@ #define PRINT_FILE_CREATE_ERROR(filename) fprintf(stderr, "Error: Could not create '%s'\n", qPrintable(filename)); +class SymbianLocalization +{ +public: + QString qtLanguageCode; + QString symbianLanguageCode; + QString shortCaption; + QString longCaption; + QString pkgDisplayName; + QString installerPkgDisplayName; +}; + +typedef QList SymbianLocalizationList; +typedef QListIterator SymbianLocalizationListIterator; + class SymbianCommonGenerator { public: @@ -59,6 +73,7 @@ public: TypeSubdirs }; + SymbianCommonGenerator(MakefileGenerator *generator); virtual void init(); @@ -68,7 +83,9 @@ protected: QString removePathSeparators(QString &file); void removeSpecialCharacters(QString& str); void removeEpocSpecialCharacters(QString& str); - void generatePkgFile(const QString &iconFile, bool epocBuild); + void generatePkgFile(const QString &iconFile, + bool epocBuild, + const SymbianLocalizationList &symbianLocalizationList); bool containsStartWithItem(const QChar &c, const QStringList& src); void writeRegRssFile(QMap &useritems); @@ -76,15 +93,15 @@ protected: const QString &listTag, const QString &listItem); void writeRssFile(QString &numberOfIcons, QString &iconfile); - void writeLocFile(QStringList &symbianLangCodes); + void writeLocFile(const SymbianLocalizationList &symbianLocalizationList); void readRssRules(QString &numberOfIcons, QString &iconFile, QMap &userRssRules); void writeCustomDefFile(); - QStringList symbianLangCodesFromTsFiles(); - void fillQt2S60LangMapTable(); + void parseTsFiles(SymbianLocalizationList *symbianLocalizationList); + void fillQt2SymbianLocalizationList(SymbianLocalizationList *symbianLocalizationList); void parsePreRules(const QString &deploymentVariable, const QString &variableSuffix, @@ -95,7 +112,13 @@ protected: void parsePostRules(const QString &deploymentVariable, const QString &variableSuffix, QStringList *rawRuleList); - + bool parseTsContent(const QString &tsFilename, SymbianLocalization *loc); + QString generatePkgNameForHeader(const SymbianLocalizationList &symbianLocalizationList, + const QString &defaultName, + bool isForSmartInstaller); + void addLocalizedResourcesToDeployment(const QString &deploymentFilesVar, + const SymbianLocalizationList &symbianLocalizationList); + QString generateLocFileName(); protected: MakefileGenerator *generator; @@ -106,8 +129,6 @@ protected: QString privateDirUid; QString uid3; TargetType targetType; - - QHash qt2S60LangMapTable; }; #endif // SYMBIANCOMMON_H diff --git a/qmake/generators/symbian/symmake.cpp b/qmake/generators/symbian/symmake.cpp index 0b0033a..e1426ab 100644 --- a/qmake/generators/symbian/symmake.cpp +++ b/qmake/generators/symbian/symmake.cpp @@ -187,8 +187,8 @@ bool SymbianMakefileGenerator::writeMakefile(QTextStream &t) QMap userRssRules; readRssRules(numberOfIcons, iconFile, userRssRules); - // Get the application translations and convert to symbian OS lang code, i.e. decical number - QStringList symbianLangCodes = symbianLangCodesFromTsFiles(); + SymbianLocalizationList symbianLocalizationList; + parseTsFiles(&symbianLocalizationList); // Generate pkg files if there are any actual files to deploy bool generatePkg = false; @@ -205,7 +205,7 @@ bool SymbianMakefileGenerator::writeMakefile(QTextStream &t) } if (generatePkg) { - generatePkgFile(iconFile, true); + generatePkgFile(iconFile, true, symbianLocalizationList); } writeBldInfContent(t, generatePkg, iconFile); @@ -242,13 +242,13 @@ bool SymbianMakefileGenerator::writeMakefile(QTextStream &t) writeMkFile(wrapperFileName, false); QString absoluteMmpFileName = Option::output_dir + QLatin1Char('/') + mmpFileName; - writeMmpFile(absoluteMmpFileName, symbianLangCodes); + writeMmpFile(absoluteMmpFileName, symbianLocalizationList); if (targetType == TypeExe) { if (!project->isActiveConfig("no_icon")) { writeRegRssFile(userRssRules); writeRssFile(numberOfIcons, iconFile); - writeLocFile(symbianLangCodes); + writeLocFile(symbianLocalizationList); } } @@ -489,7 +489,7 @@ void SymbianMakefileGenerator::writeMmpFileHeader(QTextStream &t) t << "// ==============================================================================" << endl << endl; } -void SymbianMakefileGenerator::writeMmpFile(QString &filename, QStringList &symbianLangCodes) +void SymbianMakefileGenerator::writeMmpFile(QString &filename, const SymbianLocalizationList &symbianLocalizationList) { QFile ft(filename); if (ft.open(QIODevice::WriteOnly)) { @@ -501,7 +501,7 @@ void SymbianMakefileGenerator::writeMmpFile(QString &filename, QStringList &symb writeMmpFileTargetPart(t); - writeMmpFileResourcePart(t, symbianLangCodes); + writeMmpFileResourcePart(t, symbianLocalizationList); writeMmpFileMacrosPart(t); @@ -643,7 +643,7 @@ void SymbianMakefileGenerator::writeMmpFileTargetPart(QTextStream& t) Application registration resource files should be installed to the \private\10003a3f\import\apps directory. */ -void SymbianMakefileGenerator::writeMmpFileResourcePart(QTextStream& t, QStringList &symbianLangCodes) +void SymbianMakefileGenerator::writeMmpFileResourcePart(QTextStream& t, const SymbianLocalizationList &symbianLocalizationList) { if ((targetType == TypeExe) && !project->isActiveConfig("no_icon")) { @@ -653,8 +653,10 @@ void SymbianMakefileGenerator::writeMmpFileResourcePart(QTextStream& t, QStringL t << "SOURCEPATH\t\t\t. " << endl; t << "LANG SC "; // no endl - foreach(QString lang, symbianLangCodes) { - t << lang << " "; // no endl + SymbianLocalizationListIterator iter(symbianLocalizationList); + while (iter.hasNext()) { + const SymbianLocalization &loc = iter.next(); + t << loc.symbianLanguageCode << " "; // no endl } t << endl; t << MMP_START_RESOURCE "\t\t" << locTarget << endl; @@ -1108,3 +1110,18 @@ void SymbianMakefileGenerator::generateDistcleanTargets(QTextStream& t) t << "distclean: clean dodistclean" << endl; t << endl; } + +// Returns a string that can be used as a dependency to loc file on other targets +QString SymbianMakefileGenerator::generateLocFileTarget(QTextStream& t, const QString& locCmd) +{ + QString locFile; + if (targetType == TypeExe && !project->isActiveConfig("no_icon")) { + locFile = Option::fixPathToLocalOS(generateLocFileName()); + t << locFile << QLatin1String(": ") << project->values("SYMBIAN_MATCHED_TRANSLATIONS").join(" ") << endl; + t << locCmd << endl; + t << endl; + locFile += QLatin1Char(' '); + } + + return locFile; +} \ No newline at end of file diff --git a/qmake/generators/symbian/symmake.h b/qmake/generators/symbian/symmake.h index a1a8e88..aba11de 100644 --- a/qmake/generators/symbian/symmake.h +++ b/qmake/generators/symbian/symmake.h @@ -97,11 +97,11 @@ protected: static bool removeDuplicatedStrings(QStringList& stringList); void writeMmpFileHeader(QTextStream &t); - void writeMmpFile(QString &filename, QStringList &symbianLangCodes); + void writeMmpFile(QString &filename, const SymbianLocalizationList &symbianLocalizationList); void writeMmpFileMacrosPart(QTextStream& t); void addMacro(QTextStream& t, const QString& value); void writeMmpFileTargetPart(QTextStream& t); - void writeMmpFileResourcePart(QTextStream& t, QStringList &symbianLangCodes); + void writeMmpFileResourcePart(QTextStream& t, const SymbianLocalizationList &symbianLocalizationList); void writeMmpFileSystemIncludePart(QTextStream& t); void writeMmpFileIncludePart(QTextStream& t); void writeMmpFileLibraryPart(QTextStream& t); @@ -131,6 +131,7 @@ protected: const QString& itemSuffix); void generateDistcleanTargets(QTextStream& t); + QString generateLocFileTarget(QTextStream& t, const QString& locCmd); // Subclass implements virtual void writeBldInfExtensionRulesPart(QTextStream& t, const QString &iconTargetFile) = 0; diff --git a/qmake/generators/symbian/symmake_abld.cpp b/qmake/generators/symbian/symmake_abld.cpp index f895109..7059a52 100644 --- a/qmake/generators/symbian/symmake_abld.cpp +++ b/qmake/generators/symbian/symmake_abld.cpp @@ -267,12 +267,14 @@ void SymbianAbldMakefileGenerator::writeWrapperMakefile(QFile& wrapperFile, bool t << "\tbldmake bldfiles" << endl; t << endl; - t << "debug: $(ABLD)" << endl; + QString locFileDep = generateLocFileTarget(t, qmakeCmd); + + t << "debug: " << locFileDep << "$(ABLD)" << endl; foreach(QString item, debugPlatforms) { t << "\t$(ABLD)" << testClause << " build " << item << " udeb" << endl; } t << endl; - t << "release: $(ABLD)" << endl; + t << "release: " << locFileDep << "$(ABLD)" << endl; foreach(QString item, releasePlatforms) { t << "\t$(ABLD)" << testClause << " build " << item << " urel" << endl; } @@ -280,12 +282,12 @@ void SymbianAbldMakefileGenerator::writeWrapperMakefile(QFile& wrapperFile, bool // For more specific builds, targets are in this form: build-platform, e.g. release-armv5 foreach(QString item, debugPlatforms) { - t << "debug-" << item << ": $(ABLD)" << endl; + t << "debug-" << item << ": " << locFileDep << "$(ABLD)" << endl; t << "\t$(ABLD)" << testClause << " build " << item << " udeb" << endl; } foreach(QString item, releasePlatforms) { - t << "release-" << item << ": $(ABLD)" << endl; + t << "release-" << item << ": " << locFileDep << "$(ABLD)" << endl; t << "\t$(ABLD)" << testClause << " build " << item << " urel" << endl; } diff --git a/qmake/generators/symbian/symmake_sbsv2.cpp b/qmake/generators/symbian/symmake_sbsv2.cpp index d650e08..b3f8ba2 100644 --- a/qmake/generators/symbian/symmake_sbsv2.cpp +++ b/qmake/generators/symbian/symmake_sbsv2.cpp @@ -386,8 +386,9 @@ void SymbianSbsv2MakefileGenerator::writeWrapperMakefile(QFile& wrapperFile, boo t << endl; QString currentClause; + QString locFileDep = generateLocFileTarget(t, qmakeCmd); - t << "debug: " << BLD_INF_FILENAME << endl; + t << "debug: " << locFileDep << BLD_INF_FILENAME << endl; t << "\t$(SBS)"; foreach(QString clause, debugClauses) { t << clause; @@ -399,7 +400,7 @@ void SymbianSbsv2MakefileGenerator::writeWrapperMakefile(QFile& wrapperFile, boo t << clause; } t << endl; - t << "release: " << BLD_INF_FILENAME << endl; + t << "release: " << locFileDep << BLD_INF_FILENAME << endl; t << "\t$(SBS)"; foreach(QString clause, releaseClauses) { t << clause; @@ -431,7 +432,7 @@ void SymbianSbsv2MakefileGenerator::writeWrapperMakefile(QFile& wrapperFile, boo else // use generic arm clause clause = configClause(item, debugBuild, defaultRvctCompilerVersion, genericArmClause); - t << "debug-" << item << ": " << BLD_INF_FILENAME << endl; + t << "debug-" << item << ": " << locFileDep << BLD_INF_FILENAME << endl; t << "\t$(SBS)" << clause << endl; t << "clean-debug-" << item << ": " << BLD_INF_FILENAME << endl; t << "\t$(SBS) reallyclean" << clause << endl; @@ -444,7 +445,7 @@ void SymbianSbsv2MakefileGenerator::writeWrapperMakefile(QFile& wrapperFile, boo else // use generic arm clause clause = configClause(item, releaseBuild, defaultRvctCompilerVersion, genericArmClause); - t << "release-" << item << ": " << BLD_INF_FILENAME << endl; + t << "release-" << item << ": " << locFileDep << BLD_INF_FILENAME << endl; t << "\t$(SBS)" << clause << endl; t << "clean-release-" << item << ": " << BLD_INF_FILENAME << endl; t << "\t$(SBS) reallyclean" << clause << endl; @@ -454,11 +455,11 @@ void SymbianSbsv2MakefileGenerator::writeWrapperMakefile(QFile& wrapperFile, boo foreach(QString compilerVersion, allArmCompilerVersions) { QString debugClause = configClause(item, debugBuild, compilerVersion, armClause); QString releaseClause = configClause(item, releaseBuild, compilerVersion, armClause); - t << "debug-" << item << "-" << compilerVersion << ": " << BLD_INF_FILENAME << endl; + t << "debug-" << item << "-" << compilerVersion << ": " << locFileDep << BLD_INF_FILENAME << endl; t << "\t$(SBS)" << debugClause << endl; t << "clean-debug-" << item << "-" << compilerVersion << ": " << BLD_INF_FILENAME << endl; t << "\t$(SBS) reallyclean" << debugClause << endl; - t << "release-" << item << "-" << compilerVersion << ": " << BLD_INF_FILENAME << endl; + t << "release-" << item << "-" << compilerVersion << ": " << locFileDep << BLD_INF_FILENAME << endl; t << "\t$(SBS)" << releaseClause << endl; t << "clean-release-" << item << "-" << compilerVersion << ": " << BLD_INF_FILENAME << endl; t << "\t$(SBS) reallyclean" << releaseClause << endl; diff --git a/src/s60installs/s60installs.pro b/src/s60installs/s60installs.pro index 65b8781..a236028 100644 --- a/src/s60installs/s60installs.pro +++ b/src/s60installs/s60installs.pro @@ -191,11 +191,9 @@ symbian: { qtlibraries.sources += $$QMAKE_LIBDIR_QT/QtOpenVG$${QT_LIBINFIX}.dll graphicssystems_plugins.sources += $$QT_BUILD_TREE/plugins/graphicssystems/qvggraphicssystem$${QT_LIBINFIX}.dll # OpenVG requires Symbian^3 or later - pkg_platform_dependencies -= \ - "[0x101F7961],0,0,0,{\"S60ProductID\"}" \ - "[0x102032BE],0,0,0,{\"S60ProductID\"}" \ - "[0x102752AE],0,0,0,{\"S60ProductID\"}" \ - "[0x1028315F],0,0,0,{\"S60ProductID\"}" + pkg_platform_dependencies = \ + "[0x20022E6D],0,0,0,{\"S60ProductID\"}" \ + "[0x20032DE7],0,0,0,{\"S60ProductID\"}" } contains(QT_CONFIG, opengl) { diff --git a/tools/linguist/lupdate/main.cpp b/tools/linguist/lupdate/main.cpp index 49906e0..76a8756 100644 --- a/tools/linguist/lupdate/main.cpp +++ b/tools/linguist/lupdate/main.cpp @@ -350,6 +350,10 @@ static void processProjects( ProFileEvaluator visitor; visitor.setVerbose(options & Verbose); + QHash lupdateConfig; + lupdateConfig.insert(QLatin1String("CONFIG"), QStringList(QLatin1String("lupdate_run"))); + visitor.addVariables(lupdateConfig); + QFileInfo pfi(proFile); ProFile pro(pfi.absoluteFilePath()); if (!visitor.queryProFile(&pro) || !visitor.accept(&pro)) { -- cgit v0.12 From ad8e7b27427825bee730c55735cd2554407205e4 Mon Sep 17 00:00:00 2001 From: Miikka Heikkinen Date: Fri, 12 Nov 2010 11:28:09 +0200 Subject: Add Location as self signable capability in patch_capabilities.pl Location was not originally included in self-signable set, since in S60 3.1 devices it is not so. However, it is a lesser of two evils to make applications with Location capability not install on 3.1 devices than make them not work correctly on any devices, so Location is now included in the self-signable set in patch_capabilities.pl. Task-number: QTBUG-13891 Reviewed-by: Janne Koskinen --- bin/patch_capabilities.pl | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/bin/patch_capabilities.pl b/bin/patch_capabilities.pl index 5230480..994d493 100755 --- a/bin/patch_capabilities.pl +++ b/bin/patch_capabilities.pl @@ -78,7 +78,7 @@ sub trim($) { my $nullDevice = "/dev/null"; $nullDevice = "NUL" if ($^O =~ /MSWin/); -my @capabilitiesToAllow = ("LocalServices", "NetworkServices", "ReadUserData", "UserEnvironment", "WriteUserData"); +my @capabilitiesToAllow = ("LocalServices", "NetworkServices", "ReadUserData", "UserEnvironment", "WriteUserData", "Location"); my @capabilitiesSpecified = (); # If arguments were given to the script, @@ -301,6 +301,9 @@ if (@ARGV) $_ = trim($_); if ($capabilitiesToAllow =~ /$_/) { push(@capabilitiesToSet, $_); + if (Location =~ /$_/i) { + print ("Patching: Warning - \"Location\" capability detected for binary: \"$binaryBaseName\". This capability is not self-signable for S60 3rd edition feature pack 1 devices, so installing this package on those devices will most likely not work.\n"); + } } else { push(@capabilitiesToDrop, $_); } @@ -319,6 +322,7 @@ if (@ARGV) # While libraries often have capabilities they do not themselves need just to enable them to be loaded by wider variety of processes, # executables are more likely to need every capability they have been assigned or they won't function correctly. print ("Patching: Executable with capabilities incompatible with self-signing detected: \"$binaryBaseName\". (Incompatible capabilities: \"$capsToDropStr\".) Reducing capabilities is only supported for libraries.\n"); + print ("Patching: Please use a proper developer certificate for signing this package.\n"); exit(1); } else { print ("Patching: The following capabilities used in \"$binaryBaseName\" are not compatible with a self-signed package and will be removed: \"$capsToDropStr\".\n"); -- cgit v0.12 From 4e0865200244b70e6d4be62b57bdf248342834ba Mon Sep 17 00:00:00 2001 From: Martin Smith Date: Fri, 12 Nov 2010 12:05:04 +0100 Subject: doc: Stated that the destructor does not call close(). Task-number: QTBUG-15277, QTBUG-8231 --- src/corelib/io/qiodevice.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/corelib/io/qiodevice.cpp b/src/corelib/io/qiodevice.cpp index 26e587d..68fb2bf 100644 --- a/src/corelib/io/qiodevice.cpp +++ b/src/corelib/io/qiodevice.cpp @@ -395,7 +395,10 @@ QIODevice::QIODevice(QIODevicePrivate &dd, QObject *parent) /*! - Destructs the QIODevice object. + The destructor is virtual, and QIODevice is an abstract base + class. This destructor does not call close(), but the subclass + destructor might. If you are in doubt, call close() before + destroying the QIODevice. */ QIODevice::~QIODevice() { -- cgit v0.12 From 5c129ceed8cb157354250e1a938f0b8af5dfe507 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan-Arve=20S=C3=A6ther?= Date: Fri, 12 Nov 2010 12:14:11 +0100 Subject: Add back the tests that were removed by commit fcda1b785bd7d86011f49bfe96cb22b04202933f Also add a proper test for the alignment problem --- .../tst_qgraphicsgridlayout.cpp | 174 +++++++++++++++++++++ 1 file changed, 174 insertions(+) diff --git a/tests/auto/qgraphicsgridlayout/tst_qgraphicsgridlayout.cpp b/tests/auto/qgraphicsgridlayout/tst_qgraphicsgridlayout.cpp index ff49b27..e448e4c 100644 --- a/tests/auto/qgraphicsgridlayout/tst_qgraphicsgridlayout.cpp +++ b/tests/auto/qgraphicsgridlayout/tst_qgraphicsgridlayout.cpp @@ -2306,6 +2306,11 @@ static QSizeF hfw1(Qt::SizeHint, const QSizeF &constraint) return result; } +static QSizeF hfw2(Qt::SizeHint /*which*/, const QSizeF &constraint) +{ + return QSizeF(constraint.width(), constraint.width()); +} + void tst_QGraphicsGridLayout::geometries_data() { @@ -2361,6 +2366,31 @@ void tst_QGraphicsGridLayout::geometries_data() << QRectF(0, 1, 50,100) << QRectF(50, 1, 50,400) ); + + QTest::newRow("hfw-h408") << (ItemList() + << ItemDesc(0,0) + .minSize(QSizeF(1,1)) + .preferredSize(QSizeF(50,10)) + .maxSize(QSizeF(100, 100)) + << ItemDesc(0,1) + .minSize(QSizeF(1,1)) + .preferredSize(QSizeF(50,10)) + .maxSize(QSizeF(100, 100)) + << ItemDesc(1,0) + .minSize(QSizeF(1,1)) + .preferredSize(QSizeF(50,10)) + .maxSize(QSizeF(100, 100)) + << ItemDesc(1,1) + .sizeHint(Qt::MinimumSize, QSizeF(40,40)) + .sizeHint(Qt::PreferredSize, QSizeF(50,400)) + .sizeHint(Qt::MaximumSize, QSizeF(500, 500)) + .heightForWidth(hfw1) + ) + << QSizeF(100, 408) + << (RectList() + << QRectF(0, 0, 50, 8) << QRectF(50, 0, 50, 8) + << QRectF(0, 8, 50,100) << QRectF(50, 8, 50,400) + ); QTest::newRow("hfw-h410") << (ItemList() << ItemDesc(0,0) .minSize(QSizeF(1,1)) @@ -2386,6 +2416,150 @@ void tst_QGraphicsGridLayout::geometries_data() << QRectF(0, 10, 50,100) << QRectF(50, 10, 50,400) ); + QTest::newRow("hfw-h470") << (ItemList() + << ItemDesc(0,0) + .minSize(QSizeF(1,1)) + .preferredSize(QSizeF(50,10)) + .maxSize(QSizeF(100, 100)) + << ItemDesc(0,1) + .minSize(QSizeF(1,1)) + .preferredSize(QSizeF(50,10)) + .maxSize(QSizeF(100, 100)) + << ItemDesc(1,0) + .minSize(QSizeF(1,1)) + .preferredSize(QSizeF(50,10)) + .maxSize(QSizeF(100, 100)) + << ItemDesc(1,1) + .sizeHint(Qt::MinimumSize, QSizeF(40,40)) + .sizeHint(Qt::PreferredSize, QSizeF(50,400)) + .sizeHint(Qt::MaximumSize, QSizeF(500,500)) + .heightForWidth(hfw1) + ) + << QSizeF(100, 470) + << (RectList() + << QRectF(0, 0, 50,70) << QRectF(50, 0, 50,70) + << QRectF(0, 70, 50,100) << QRectF(50, 70, 50,400) + ); + + + // change layout width and verify + QTest::newRow("hfw-w100") << (ItemList() + << ItemDesc(0,0) + .minSize(QSizeF(1,1)) + .preferredSize(QSizeF(50,10)) + .maxSize(QSizeF(100, 100)) + << ItemDesc(0,1) + .minSize(QSizeF(1,1)) + .preferredSize(QSizeF(50,10)) + .maxSize(QSizeF(100, 100)) + << ItemDesc(1,0) + .minSize(QSizeF(1,1)) + .preferredSize(QSizeF(50,10)) + .maxSize(QSizeF(100, 100)) + << ItemDesc(1,1) + .sizeHint(Qt::MinimumSize, QSizeF(40,40)) + .sizeHint(Qt::PreferredSize, QSizeF(50,400)) + .sizeHint(Qt::MaximumSize, QSizeF(5000,5000)) + .heightForWidth(hfw1) + ) + << QSizeF(100, 401) + << (RectList() + << QRectF( 0, 0, 50, 1) << QRectF( 50, 0, 50, 1) + << QRectF( 0, 1, 50, 100) << QRectF( 50, 1, 50, 400) + ); + + QTest::newRow("hfw-w160") << (ItemList() + << ItemDesc(0,0) + .minSize(QSizeF(1,1)) + .preferredSize(QSizeF(50,10)) + .maxSize(QSizeF(100, 100)) + << ItemDesc(0,1) + .minSize(QSizeF(1,1)) + .preferredSize(QSizeF(50,10)) + .maxSize(QSizeF(100, 100)) + << ItemDesc(1,0) + .minSize(QSizeF(1,1)) + .preferredSize(QSizeF(50,10)) + .maxSize(QSizeF(100, 100)) + << ItemDesc(1,1) + .sizeHint(Qt::MinimumSize, QSizeF(40,40)) + .sizeHint(Qt::PreferredSize, QSizeF(50,400)) + .sizeHint(Qt::MaximumSize, QSizeF(5000,5000)) + .heightForWidth(hfw1) + ) + << QSizeF(160, 401) + << (RectList() + << QRectF( 0, 0, 80, 100) << QRectF( 80, 0, 80, 100) + << QRectF( 0, 100, 80, 100) << QRectF( 80, 100, 80, 250) + ); + + QTest::newRow("hfw-w500") << (ItemList() + << ItemDesc(0,0) + .minSize(QSizeF(1,1)) + .preferredSize(QSizeF(50,10)) + .maxSize(QSizeF(100, 100)) + << ItemDesc(0,1) + .minSize(QSizeF(1,1)) + .preferredSize(QSizeF(50,10)) + .maxSize(QSizeF(100, 100)) + << ItemDesc(1,0) + .minSize(QSizeF(1,1)) + .preferredSize(QSizeF(50,10)) + .maxSize(QSizeF(100, 100)) + << ItemDesc(1,1) + .sizeHint(Qt::MinimumSize, QSizeF(40,40)) + .sizeHint(Qt::PreferredSize, QSizeF(50,400)) + .sizeHint(Qt::MaximumSize, QSizeF(5000,5000)) + .heightForWidth(hfw1) + ) + << QSizeF(500, 401) + << (RectList() + << QRectF( 0, 0, 100, 100) << QRectF(100, 0, 100, 100) + << QRectF( 0, 100, 100, 100) << QRectF(100, 100, 400, 50) + ); + + QTest::newRow("hfw-alignment-defaults") << (ItemList() + << ItemDesc(0,0) + .minSize(QSizeF(100, 100)) + .maxSize(QSizeF(100, 100)) + .heightForWidth(hfw2) + << ItemDesc(1,0) + .minSize(QSizeF(200, 200)) + .maxSize(QSizeF(200, 200)) + .heightForWidth(hfw2) + << ItemDesc(2,0) + .minSize(QSizeF(300, 300)) + .maxSize(QSizeF(300, 300)) + ) + << QSizeF(300, 600) + << (RectList() + << QRectF(0, 0, 100, 100) + << QRectF(0, 100, 200, 200) + << QRectF(0, 300, 300, 300) + ); + + QTest::newRow("hfw-alignment2") << (ItemList() + << ItemDesc(0,0) + .minSize(QSizeF(100, 100)) + .maxSize(QSizeF(100, 100)) + .heightForWidth(hfw2) + .alignment(Qt::AlignRight) + << ItemDesc(1,0) + .minSize(QSizeF(200, 200)) + .maxSize(QSizeF(200, 200)) + .heightForWidth(hfw2) + .alignment(Qt::AlignHCenter) + << ItemDesc(2,0) + .minSize(QSizeF(300, 300)) + .maxSize(QSizeF(300, 300)) + ) + << QSizeF(300, 600) + << (RectList() + << QRectF(200, 0, 100, 100) + << QRectF( 50, 100, 200, 200) + << QRectF( 0, 300, 300, 300) + ); + } void tst_QGraphicsGridLayout::geometries() -- cgit v0.12 From 8f23788ec21896135f182778cf48362162b88969 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan-Arve=20S=C3=A6ther?= Date: Fri, 12 Nov 2010 13:16:53 +0100 Subject: Code style cleanup for merge request 847 --- src/gui/graphicsview/qgridlayoutengine.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/gui/graphicsview/qgridlayoutengine.cpp b/src/gui/graphicsview/qgridlayoutengine.cpp index 9785b15..b7fe5a0 100644 --- a/src/gui/graphicsview/qgridlayoutengine.cpp +++ b/src/gui/graphicsview/qgridlayoutengine.cpp @@ -637,7 +637,7 @@ QRectF QGridLayoutItem::geometryWithin(qreal x, qreal y, qreal width, qreal heig if (dynamicConstraintOrientation() == Qt::Vertical) { if (size.width() > cellWidth) size = effectiveMaxSize(QSizeF(cellWidth, -1)); - } else if(size.height() > cellHeight) { + } else if (size.height() > cellHeight) { size = effectiveMaxSize(QSizeF(-1, cellHeight)); } } @@ -1113,7 +1113,7 @@ QSizeF QGridLayoutEngine::sizeHint(const QLayoutStyleInfo &styleInfo, Qt::SizeHi if (constraintOrientation() == Qt::Vertical) { //We have items whose height depends on their width if (constraint.width() >= 0) { - if(q_cachedDataForStyleInfo != styleInfo) + if (q_cachedDataForStyleInfo != styleInfo) ensureColumnAndRowData(&q_columnData, &sizehint_totalBoxes[Hor], styleInfo, NULL, NULL, Qt::Horizontal); else sizehint_totalBoxes[Hor] = q_totalBoxes[Hor]; @@ -1152,7 +1152,7 @@ QSizeF QGridLayoutEngine::sizeHint(const QLayoutStyleInfo &styleInfo, Qt::SizeHi if (!sizeHintCalculated) { //No items with height for width, so it doesn't matter which order we do these in - if(q_cachedDataForStyleInfo != styleInfo) { + if (q_cachedDataForStyleInfo != styleInfo) { ensureColumnAndRowData(&q_columnData, &sizehint_totalBoxes[Hor], styleInfo, NULL, NULL, Qt::Horizontal); ensureColumnAndRowData(&q_rowData, &sizehint_totalBoxes[Ver], styleInfo, NULL, NULL, Qt::Vertical); } else { @@ -1680,7 +1680,7 @@ void QGridLayoutEngine::ensureGeometries(const QLayoutStyleInfo &styleInfo, q_heights.resize(rowCount()); q_descents.resize(rowCount()); - if(constraintOrientation() != Qt::Horizontal) { + if (constraintOrientation() != Qt::Horizontal) { //We might have items whose width depends on their height ensureColumnAndRowData(&q_columnData, &q_totalBoxes[Hor], styleInfo, NULL, NULL, Qt::Horizontal); //Calculate column widths and positions, and put results in q_xx.data() and q_widths.data() so that we can use this information as -- cgit v0.12 From 659c889f64e76ec9aece2dd9e24a7f65875c46ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan-Arve=20S=C3=A6ther?= Date: Mon, 15 Nov 2010 08:56:58 +0100 Subject: Add autotest to test a issue with stretches and preferred width. The issue seemed to claim that the preferred size was not respected when there was another item that could stretch along the same axis: "A widget with a horizontal stretch next to it should get its preferredWidth()". This seems to works as expected, so nothing to fix. Task-number: QTBUG-12835 --- .../tst_qgraphicsgridlayout.cpp | 62 ++++++++++++++++++++++ 1 file changed, 62 insertions(+) diff --git a/tests/auto/qgraphicsgridlayout/tst_qgraphicsgridlayout.cpp b/tests/auto/qgraphicsgridlayout/tst_qgraphicsgridlayout.cpp index e448e4c..7170059 100644 --- a/tests/auto/qgraphicsgridlayout/tst_qgraphicsgridlayout.cpp +++ b/tests/auto/qgraphicsgridlayout/tst_qgraphicsgridlayout.cpp @@ -122,6 +122,7 @@ private slots: void task236367_maxSizeHint(); void heightForWidth(); void heightForWidthWithSpanning(); + void stretchAndHeightForWidth(); }; class RectWidget : public QGraphicsWidget @@ -2806,6 +2807,67 @@ void tst_QGraphicsGridLayout::heightForWidthWithSpanning() QCOMPARE(layout->effectiveSizeHint(Qt::MaximumSize, QSizeF(200, -1)), QSizeF(200, 10000)); } + +void tst_QGraphicsGridLayout::stretchAndHeightForWidth() +{ + QGraphicsWidget *widget = new QGraphicsWidget(0, Qt::Window); + QGraphicsGridLayout *layout = new QGraphicsGridLayout; + widget->setLayout(layout); + layout->setContentsMargins(0, 0, 0, 0); + layout->setSpacing(0); + + RectWidget *w1 = new RectWidget; + w1->setSizeHint(Qt::MinimumSize, QSizeF(10, 10)); + w1->setSizeHint(Qt::PreferredSize, QSizeF(100, 100)); + w1->setSizeHint(Qt::MaximumSize, QSizeF(500, 500)); + layout->addItem(w1, 0,0,1,1); + + RectWidget *w2 = new RectWidget; + w2->setSizeHint(Qt::MinimumSize, QSizeF(10, 10)); + w2->setSizeHint(Qt::PreferredSize, QSizeF(100, 100)); + w2->setSizeHint(Qt::MaximumSize, QSizeF(500, 500)); + layout->addItem(w2, 0,1,1,1); + layout->setColumnStretchFactor(1, 2); + + QApplication::sendPostedEvents(); + QGraphicsScene scene; + QGraphicsView *view = new QGraphicsView(&scene); + + scene.addItem(widget); + + view->show(); + + widget->resize(500, 100); + // w1 should stay at its preferred size + QCOMPARE(w1->geometry(), QRectF(0, 0, 100, 100)); + QCOMPARE(w2->geometry(), QRectF(100, 0, 400, 100)); + + + // only w1 has hfw + w1->setConstraintFunction(hfw); + QSizePolicy sp(QSizePolicy::Preferred, QSizePolicy::Preferred); + sp.setHeightForWidth(true); + w1->setSizePolicy(sp); + QApplication::sendPostedEvents(); + + QCOMPARE(w1->geometry(), QRectF(0, 0, 100, 200)); + QCOMPARE(w2->geometry(), QRectF(100, 0, 400, 200)); + + // only w2 has hfw + w2->setConstraintFunction(hfw); + w2->setSizePolicy(sp); + + w1->setConstraintFunction(0); + sp.setHeightForWidth(false); + w1->setSizePolicy(sp); + QApplication::sendPostedEvents(); + + QCOMPARE(w1->geometry(), QRectF(0, 0, 100, 100)); + QCOMPARE(w2->geometry(), QRectF(100, 0, 400, 50)); + +} + + QTEST_MAIN(tst_QGraphicsGridLayout) #include "tst_qgraphicsgridlayout.moc" -- cgit v0.12 From 1f7ddb0525f7de24e195b2dd1a9f0374d19b2a05 Mon Sep 17 00:00:00 2001 From: Titta Heikkala Date: Mon, 15 Nov 2010 12:19:59 +0200 Subject: Native file dialog on Symbian^3 The static functions in QFileDialog use native file dialog and not QFileDialog on Symbian^3. Task-number: QT-3917 Reviewed-by: Sami Merila Merge-request: 918 Reviewed-by: Sami Merila --- src/gui/dialogs/dialogs.pri | 13 ++ src/gui/dialogs/qfiledialog.cpp | 72 ++++++++++-- src/gui/dialogs/qfiledialog_symbian.cpp | 202 ++++++++++++++++++++++++++++++++ 3 files changed, 278 insertions(+), 9 deletions(-) create mode 100644 src/gui/dialogs/qfiledialog_symbian.cpp diff --git a/src/gui/dialogs/dialogs.pri b/src/gui/dialogs/dialogs.pri index 4e1b9a7..483e9aa 100644 --- a/src/gui/dialogs/dialogs.pri +++ b/src/gui/dialogs/dialogs.pri @@ -108,6 +108,19 @@ SOURCES += \ dialogs/qwizard.cpp \ dialogs/qprintpreviewdialog.cpp +contains(QT_CONFIG, s60) { + LIBS += -lcommondialogs \ + -lavkon \ + -lplatformenv \ + -lefsrv \ + -lgdi + SOURCES += dialogs/qfiledialog_symbian.cpp \ + dialogs/qcolordialog_symbian.cpp +} + FORMS += dialogs/qpagesetupwidget.ui RESOURCES += dialogs/qprintdialog.qrc RESOURCES += dialogs/qmessagebox.qrc + +# Compensate for lack of platform defines in Symbian3 +symbian: DEFINES += SYMBIAN_VERSION_$$upper($$replace(SYMBIAN_VERSION,\\.,_)) diff --git a/src/gui/dialogs/qfiledialog.cpp b/src/gui/dialogs/qfiledialog.cpp index fc3c186..a5bff02 100644 --- a/src/gui/dialogs/qfiledialog.cpp +++ b/src/gui/dialogs/qfiledialog.cpp @@ -1616,6 +1616,25 @@ extern QStringList qt_win_get_open_file_names(const QFileDialogArgs &args, extern QString qt_win_get_existing_directory(const QFileDialogArgs &args); #endif +/* + For Symbian file dialogs +*/ +#if defined(Q_WS_S60) && defined(SYMBIAN_VERSION_SYMBIAN3) +extern QString qtSymbianGetOpenFileName(const QString &caption, + const QString &dir, + const QString &filter); + +extern QStringList qtSymbianGetOpenFileNames(const QString &caption, + const QString &dir, + const QString &filter); + +extern QString qtSymbianGetSaveFileName(const QString &caption, + const QString &dir); + +extern QString qtSymbianGetExistingDirectory(const QString &caption, + const QString &dir); +#endif + /*! This is a convenience static function that returns an existing file selected by the user. If the user presses Cancel, it returns a null string. @@ -1644,8 +1663,8 @@ extern QString qt_win_get_existing_directory(const QFileDialogArgs &args); The dialog's caption is set to \a caption. If \a caption is not specified then a default caption will be used. - On Windows and Mac OS X, this static function will use the native file - dialog and not a QFileDialog. + On Windows, Mac OS X and Symbian^3, this static function will use the + native file dialog and not a QFileDialog. On Windows the dialog will spin a blocking modal event loop that will not dispatch any QTimers, and if \a parent is not 0 then it will position the @@ -1657,6 +1676,10 @@ extern QString qt_win_get_existing_directory(const QFileDialogArgs &args); \a options includes DontResolveSymlinks, the file dialog will treat symlinks as regular directories. + On Symbian^3 the parameter \a selectedFilter has no meaning and the + \a options parameter is only used to define if the native file dialog is + used. + \warning Do not delete \a parent during the execution of the dialog. If you want to do this, you should create the dialog yourself using one of the QFileDialog constructors. @@ -1672,6 +1695,11 @@ QString QFileDialog::getOpenFileName(QWidget *parent, { if (qt_filedialog_open_filename_hook && !(options & DontUseNativeDialog)) return qt_filedialog_open_filename_hook(parent, caption, dir, filter, selectedFilter, options); +#if defined(Q_WS_S60) + if (QSysInfo::s60Version() > QSysInfo::SV_S60_5_0 && !(options & DontUseNativeDialog)) { + return qtSymbianGetOpenFileName(caption, dir, filter); + } +#endif QFileDialogArgs args; args.parent = parent; args.caption = caption; @@ -1722,8 +1750,8 @@ QString QFileDialog::getOpenFileName(QWidget *parent, The dialog's caption is set to \a caption. If \a caption is not specified then a default caption will be used. - On Windows and Mac OS X, this static function will use the native file - dialog and not a QFileDialog. + On Windows, Mac OS X and Symbian^3, this static function will use the + native file dialog and not a QFileDialog. On Windows the dialog will spin a blocking modal event loop that will not dispatch any QTimers, and if \a parent is not 0 then it will position the @@ -1741,6 +1769,10 @@ QString QFileDialog::getOpenFileName(QWidget *parent, \snippet doc/src/snippets/code/src_gui_dialogs_qfiledialog.cpp 10 + On Symbian^3 the parameter \a selectedFilter has no meaning and the + \a options parameter is only used to define if the native file dialog is + used. + \warning Do not delete \a parent during the execution of the dialog. If you want to do this, you should create the dialog yourself using one of the QFileDialog constructors. @@ -1756,6 +1788,11 @@ QStringList QFileDialog::getOpenFileNames(QWidget *parent, { if (qt_filedialog_open_filenames_hook && !(options & DontUseNativeDialog)) return qt_filedialog_open_filenames_hook(parent, caption, dir, filter, selectedFilter, options); +#if defined(Q_WS_S60) + if (QSysInfo::s60Version() > QSysInfo::SV_S60_5_0 && !(options & DontUseNativeDialog)) { + return qtSymbianGetOpenFileNames(caption, dir, filter); + } +#endif QFileDialogArgs args; args.parent = parent; args.caption = caption; @@ -1813,8 +1850,8 @@ QStringList QFileDialog::getOpenFileNames(QWidget *parent, The dialog's caption is set to \a caption. If \a caption is not specified, a default caption will be used. - On Windows and Mac OS X, this static function will use the native file - dialog and not a QFileDialog. + On Windows, Mac OS X and Symbian^3, this static function will use the + native file dialog and not a QFileDialog. On Windows the dialog will spin a blocking modal event loop that will not dispatch any QTimers, and if \a parent is not 0 then it will position the @@ -1827,6 +1864,10 @@ QStringList QFileDialog::getOpenFileNames(QWidget *parent, \a options includes DontResolveSymlinks the file dialog will treat symlinks as regular directories. + On Symbian^3 the parameters \a filter and \a selectedFilter have no + meaning. The \a options parameter is only used to define if the native file + dialog is used. + \warning Do not delete \a parent during the execution of the dialog. If you want to do this, you should create the dialog yourself using one of the QFileDialog constructors. @@ -1842,6 +1883,11 @@ QString QFileDialog::getSaveFileName(QWidget *parent, { if (qt_filedialog_save_filename_hook && !(options & DontUseNativeDialog)) return qt_filedialog_save_filename_hook(parent, caption, dir, filter, selectedFilter, options); +#if defined(Q_WS_S60) + if (QSysInfo::s60Version() > QSysInfo::SV_S60_5_0 && !(options & DontUseNativeDialog)) { + return qtSymbianGetSaveFileName(caption, dir); + } +#endif QFileDialogArgs args; args.parent = parent; args.caption = caption; @@ -1890,9 +1936,9 @@ QString QFileDialog::getSaveFileName(QWidget *parent, pass. To ensure a native file dialog, \l{QFileDialog::}{ShowDirsOnly} must be set. - On Windows and Mac OS X, this static function will use the native file - dialog and not a QFileDialog. On Windows CE, if the device has no native - file dialog, a QFileDialog will be used. + On Windows, Mac OS X and Symbian^3, this static function will use the + native file dialog and not a QFileDialog. On Windows CE, if the device has + no native file dialog, a QFileDialog will be used. On Unix/X11, the normal behavior of the file dialog is to resolve and follow symlinks. For example, if \c{/usr/tmp} is a symlink to \c{/var/tmp}, @@ -1904,6 +1950,9 @@ QString QFileDialog::getSaveFileName(QWidget *parent, dispatch any QTimers, and if \a parent is not 0 then it will position the dialog just below the parent's title bar. + On Symbian^3 the \a options parameter is only used to define if the native + file dialog is used. + \warning Do not delete \a parent during the execution of the dialog. If you want to do this, you should create the dialog yourself using one of the QFileDialog constructors. @@ -1917,6 +1966,11 @@ QString QFileDialog::getExistingDirectory(QWidget *parent, { if (qt_filedialog_existing_directory_hook && !(options & DontUseNativeDialog)) return qt_filedialog_existing_directory_hook(parent, caption, dir, options); +#if defined(Q_WS_S60) + if (QSysInfo::s60Version() > QSysInfo::SV_S60_5_0 && !(options & DontUseNativeDialog)) { + return qtSymbianGetExistingDirectory(caption, dir); + } +#endif QFileDialogArgs args; args.parent = parent; args.caption = caption; diff --git a/src/gui/dialogs/qfiledialog_symbian.cpp b/src/gui/dialogs/qfiledialog_symbian.cpp new file mode 100644 index 0000000..bd937a1 --- /dev/null +++ b/src/gui/dialogs/qfiledialog_symbian.cpp @@ -0,0 +1,202 @@ +/**************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the QtGui 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$ +** +****************************************************************************/ + +#include "qfiledialog.h" + +#ifndef QT_NO_FILEDIALOG + +#include +#if defined(Q_WS_S60) && defined(SYMBIAN_VERSION_SYMBIAN3) +#include +#include +#include +#include +#endif +#include "private/qcore_symbian_p.h" + +QT_BEGIN_NAMESPACE + +enum DialogMode { DialogOpen, DialogSave, DialogFolder }; +#if defined(Q_WS_S60) && defined(SYMBIAN_VERSION_SYMBIAN3) +class CExtensionFilter : public MAknFileFilter +{ +public: + void setFilter(const QString filter) + { + filterList.clear(); + if (filter.left(2) == "*.") { + //Filter has only extensions + filterList << filter.split(" "); + return; + } + else { + //Extensions are in parenthesis and there may be several filters + QStringList separatedFilters(filter.split(";;")); + for (int i = 0; i < separatedFilters.size(); i++) { + if (separatedFilters.at(i) == QFileDialog::tr("All Files (*)")){ + filterList << QFileDialog::tr("All Files (*)"); + return; + } + } + QRegExp rx("\\(([^\\)]*)\\)"); + int pos = 0; + while ((pos = rx.indexIn(filter, pos)) != -1) { + filterList << rx.cap(1).split(" "); + pos += rx.matchedLength(); + } + } + } + + TBool Accept(const TDesC &/*aDriveAndPath*/, const TEntry &aEntry) const + { + if (aEntry.IsDir()) { + return ETrue; + } + if (filterList.isEmpty()) { + //No filter for files, all can be accepted + return ETrue; + } + if (filterList == QStringList(QFileDialog::tr("All Files (*)"))) { + return ETrue; + } + for (int i = 0; i < filterList.size(); ++i) { + QString extension = filterList.at(i); + //remove '*' from the beginning of the extension + if (extension.left(1) == "*"){ + extension = extension.right(extension.size() - 1); + } + QString fileName = qt_TDesC2QString(aEntry.iName); + if (fileName.right(extension.size()) == extension) { + return ETrue; + } + } + return EFalse; + } + +private: + QStringList filterList; +}; +#endif + +static QString launchSymbianDialog(const QString dialogCaption, const QString startDirectory, + const QString filter, DialogMode dialogMode) +{ + QString selection; +#if defined(Q_WS_S60) && defined(SYMBIAN_VERSION_SYMBIAN3) + QT_TRAP_THROWING( + TFileName startFolder; + if (!startDirectory.isEmpty()) { + QString dir = QDir::toNativeSeparators(startDirectory); + startFolder = qt_QString2TPtrC(dir); + } + TInt types = AknCommonDialogsDynMem::EMemoryTypeMMCExternal| + AknCommonDialogsDynMem::EMemoryTypeInternalMassStorage| + AknCommonDialogsDynMem::EMemoryTypePhone; + + TPtrC titlePtr(qt_QString2TPtrC(dialogCaption)); + TFileName target; + bool select = false; + if (dialogMode == DialogOpen) { + CExtensionFilter* extensionFilter = new (ELeave) CExtensionFilter; + CleanupStack::PushL(extensionFilter); + extensionFilter->setFilter(filter); + select = AknCommonDialogsDynMem::RunSelectDlgLD(types, target, + startFolder, NULL, NULL, titlePtr, extensionFilter); + CleanupStack::Pop(extensionFilter); + } + else if (dialogMode == DialogSave){ + select = AknCommonDialogsDynMem::RunSaveDlgLD(types, target, + startFolder, NULL, NULL, titlePtr); + } + else if (dialogMode == DialogFolder){ + select = AknCommonDialogsDynMem::RunFolderSelectDlgLD(types, target, startFolder, + 0, 0, titlePtr, NULL, NULL); + } + if (select) { + selection.append(qt_TDesC2QString(target)); + } + ); +#endif + return selection; +} + +QString qtSymbianGetOpenFileName(const QString &caption, + const QString &dir, + const QString &filter) +{ + return launchSymbianDialog(caption, dir, filter, DialogOpen); +} + +QStringList qtSymbianGetOpenFileNames(const QString &caption, + const QString &dir, + const QString &filter) +{ + QString fileName; + fileName.append(launchSymbianDialog(caption, dir, filter, DialogOpen)); + QStringList fileList; + fileList << fileName; + + return fileList; +} + +QString qtSymbianGetSaveFileName(const QString &caption, + const QString &dir) +{ + return launchSymbianDialog(caption, dir, QString(), DialogSave); +} + +QString qtSymbianGetExistingDirectory(const QString &caption, + const QString &dir) +{ + QString folderCaption; + if (!caption.isEmpty()) { + folderCaption.append(caption); + } + else { + // Title for folder selection dialog is mandatory + folderCaption.append(QFileDialog::tr("Find Directory")); + } + return launchSymbianDialog(folderCaption, dir, QString(), DialogFolder); +} + +QT_END_NAMESPACE + +#endif -- cgit v0.12 From 4715182e9c600811c045fe5ed7989d4d52d1f4e9 Mon Sep 17 00:00:00 2001 From: Titta Heikkala Date: Mon, 15 Nov 2010 12:27:01 +0200 Subject: Documented usage of dialogs on Symbian Added quidance to documentation about using print dialogs on Symbian. Task-number: QT-4247 Reviewed-by: Sami Merila Merge-request: 920 Reviewed-by: Sami Merila --- src/gui/dialogs/qabstractprintdialog.cpp | 3 +++ src/gui/dialogs/qpagesetupdialog.cpp | 3 +++ src/gui/dialogs/qprintpreviewdialog.cpp | 2 ++ 3 files changed, 8 insertions(+) diff --git a/src/gui/dialogs/qabstractprintdialog.cpp b/src/gui/dialogs/qabstractprintdialog.cpp index 25d9ebb..641419f 100644 --- a/src/gui/dialogs/qabstractprintdialog.cpp +++ b/src/gui/dialogs/qabstractprintdialog.cpp @@ -65,6 +65,9 @@ class QPrintDialogPrivate : public QAbstractPrintDialogPrivate customize settings shown in print dialogs, but it is not used directly. Use QPrintDialog to display a print dialog in your application. + In Symbian, there is no support for printing. Hence, this dialog should not + be used in Symbian. + \sa QPrintDialog, QPrinter, {Printing with Qt} */ diff --git a/src/gui/dialogs/qpagesetupdialog.cpp b/src/gui/dialogs/qpagesetupdialog.cpp index 5d77de1..b5be942 100644 --- a/src/gui/dialogs/qpagesetupdialog.cpp +++ b/src/gui/dialogs/qpagesetupdialog.cpp @@ -62,6 +62,9 @@ QT_BEGIN_NAMESPACE page margins set on a QPrinter won't show in the native Mac OS X page setup dialog. + In Symbian, there is no support for printing. Hence, this dialog should not + be used in Symbian. + \sa QPrinter, QPrintDialog */ diff --git a/src/gui/dialogs/qprintpreviewdialog.cpp b/src/gui/dialogs/qprintpreviewdialog.cpp index f21343e..d74742a 100644 --- a/src/gui/dialogs/qprintpreviewdialog.cpp +++ b/src/gui/dialogs/qprintpreviewdialog.cpp @@ -676,6 +676,8 @@ void QPrintPreviewDialogPrivate::_q_zoomFactorChanged() Call QPrintPreviewDialog::exec() to show the preview dialog. \endlist + In Symbian, there is no support for printing. Hence, this dialog should not + be used in Symbian. \sa QPrinter, QPrintDialog, QPageSetupDialog, QPrintPreviewWidget */ -- cgit v0.12 From 604c51f1fc5c79b7fad12cda911b06b9e6e5005f Mon Sep 17 00:00:00 2001 From: John Tapsell Date: Mon, 15 Nov 2010 12:55:06 +0100 Subject: Fix item alignment in layouts bigger than the items thay they contain MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Task-number: QTBUG-13551 Task-number: QTBUG-7756 Merge-request: 894 Reviewed-by: Jan-Arve Sæther --- src/gui/graphicsview/qgridlayoutengine.cpp | 92 ++++++++++++++-------- src/gui/graphicsview/qgridlayoutengine_p.h | 7 +- .../tst_qgraphicsgridlayout.cpp | 70 +++++++++++++--- .../tst_qgraphicslinearlayout.cpp | 85 ++++++++++++++++++++ 4 files changed, 208 insertions(+), 46 deletions(-) diff --git a/src/gui/graphicsview/qgridlayoutengine.cpp b/src/gui/graphicsview/qgridlayoutengine.cpp index b7fe5a0..f1055ba 100644 --- a/src/gui/graphicsview/qgridlayoutengine.cpp +++ b/src/gui/graphicsview/qgridlayoutengine.cpp @@ -166,7 +166,7 @@ void QGridLayoutRowData::reset(int count) hasIgnoreFlag = false; } -void QGridLayoutRowData::distributeMultiCells() +void QGridLayoutRowData::distributeMultiCells(const QGridLayoutRowInfo &rowInfo) { MultiCellMap::const_iterator i = multiCellMap.constBegin(); for (; i != multiCellMap.constEnd(); ++i) { @@ -185,7 +185,7 @@ void QGridLayoutRowData::distributeMultiCells() qreal extra = compare(box, totalBox, j); if (extra > 0.0) { calculateGeometries(start, end, box.q_sizes(j), dummy.data(), newSizes.data(), - 0, totalBox); + 0, totalBox, rowInfo); for (int k = 0; k < span; ++k) extras[k].q_sizes(j) = newSizes[k]; @@ -202,11 +202,12 @@ void QGridLayoutRowData::distributeMultiCells() void QGridLayoutRowData::calculateGeometries(int start, int end, qreal targetSize, qreal *positions, qreal *sizes, qreal *descents, - const QGridLayoutBox &totalBox) + const QGridLayoutBox &totalBox, + const QGridLayoutRowInfo &rowInfo) { Q_ASSERT(end > start); - targetSize = qBound(totalBox.q_minimumSize, targetSize, totalBox.q_maximumSize); + targetSize = qMax(totalBox.q_minimumSize, targetSize); int n = end - start; QVarLengthArray newSizes(n); @@ -246,16 +247,22 @@ void QGridLayoutRowData::calculateGeometries(int start, int end, qreal targetSiz } } } else { - stealBox(start, end, PreferredSize, positions, sizes); + bool isLargerThanMaximum = (targetSize > totalBox.q_maximumSize); + if (isLargerThanMaximum) { + stealBox(start, end, MaximumSize, positions, sizes); + sumAvailable = targetSize - totalBox.q_maximumSize; + } else { + stealBox(start, end, PreferredSize, positions, sizes); + sumAvailable = targetSize - totalBox.q_preferredSize; + } - sumAvailable = targetSize - totalBox.q_preferredSize; if (sumAvailable > 0.0) { qreal sumCurrentAvailable = sumAvailable; bool somethingHasAMaximumSize = false; - qreal sumPreferredSizes = 0.0; + qreal sumSizes = 0.0; for (int i = 0; i < n; ++i) - sumPreferredSizes += sizes[i]; + sumSizes += sizes[i]; for (int i = 0; i < n; ++i) { if (ignore.testBit(start + i)) { @@ -265,7 +272,16 @@ void QGridLayoutRowData::calculateGeometries(int start, int end, qreal targetSiz } const QGridLayoutBox &box = boxes.at(start + i); - qreal desired = box.q_maximumSize - box.q_preferredSize; + qreal boxSize; + + qreal desired; + if (isLargerThanMaximum) { + boxSize = box.q_maximumSize; + desired = rowInfo.boxes.value(start + i).q_maximumSize - boxSize; + } else { + boxSize = box.q_preferredSize; + desired = box.q_maximumSize - boxSize; + } if (desired == 0.0) { newSizes[i] = sizes[i]; factors[i] = 0.0; @@ -284,17 +300,17 @@ void QGridLayoutRowData::calculateGeometries(int start, int end, qreal targetSiz } else if (stretch <= 0) { factors[i] = 0.0; } else { - qreal ultimatePreferredSize; - qreal ultimateSumPreferredSizes; - qreal x = ((stretch * sumPreferredSizes) - - (sumStretches * box.q_preferredSize)) + qreal ultimateSize; + qreal ultimateSumSizes; + qreal x = ((stretch * sumSizes) + - (sumStretches * boxSize)) / (sumStretches - stretch); if (x >= 0.0) { - ultimatePreferredSize = box.q_preferredSize + x; - ultimateSumPreferredSizes = sumPreferredSizes + x; + ultimateSize = boxSize + x; + ultimateSumSizes = sumSizes + x; } else { - ultimatePreferredSize = box.q_preferredSize; - ultimateSumPreferredSizes = (sumStretches * box.q_preferredSize) + ultimateSize = boxSize; + ultimateSumSizes = (sumStretches * boxSize) / stretch; } @@ -303,17 +319,17 @@ void QGridLayoutRowData::calculateGeometries(int start, int end, qreal targetSiz (at the expense of the stretch factors, which are not fully respected during the transition). */ - ultimatePreferredSize = ultimatePreferredSize * 3 / 2; - ultimateSumPreferredSizes = ultimateSumPreferredSizes * 3 / 2; + ultimateSize = ultimateSize * 3 / 2; + ultimateSumSizes = ultimateSumSizes * 3 / 2; - qreal beta = ultimateSumPreferredSizes - sumPreferredSizes; + qreal beta = ultimateSumSizes - sumSizes; if (!beta) { factors[i] = 1; } else { qreal alpha = qMin(sumCurrentAvailable, beta); - qreal ultimateFactor = (stretch * ultimateSumPreferredSizes / sumStretches) - - (box.q_preferredSize); - qreal transitionalFactor = sumCurrentAvailable * (ultimatePreferredSize - box.q_preferredSize) / beta; + qreal ultimateFactor = (stretch * ultimateSumSizes / sumStretches) + - (boxSize); + qreal transitionalFactor = sumCurrentAvailable * (ultimateSize - boxSize) / beta; factors[i] = ((alpha * ultimateFactor) + ((beta - alpha) * transitionalFactor)) / beta; @@ -336,11 +352,16 @@ void QGridLayoutRowData::calculateGeometries(int start, int end, qreal targetSiz if (newSizes[i] >= 0.0) continue; - const QGridLayoutBox &box = boxes.at(start + i); + qreal maxBoxSize; + if (isLargerThanMaximum) + maxBoxSize = rowInfo.boxes.value(start + i).q_maximumSize; + else + maxBoxSize = boxes.at(start + i).q_maximumSize; + qreal avail = sumCurrentAvailable * factors[i] / sumFactors; - if (sizes[i] + avail >= box.q_maximumSize) { - newSizes[i] = box.q_maximumSize; - sumCurrentAvailable -= box.q_maximumSize - sizes[i]; + if (sizes[i] + avail >= maxBoxSize) { + newSizes[i] = maxBoxSize; + sumCurrentAvailable -= maxBoxSize - sizes[i]; sumFactors -= factors[i]; keepGoing = (sumCurrentAvailable > 0.0); if (!keepGoing) @@ -1126,7 +1147,7 @@ QSizeF QGridLayoutEngine::sizeHint(const QLayoutStyleInfo &styleInfo, Qt::SizeHi //Calculate column widths and positions, and put results in q_xx.data() and q_widths.data() so that we can use this information as //constraints to find the row heights q_columnData.calculateGeometries(0, columnCount(), width, sizehint_xx.data(), sizehint_widths.data(), - 0, sizehint_totalBoxes[Hor]); + 0, sizehint_totalBoxes[Hor], q_infos[Hor]); ensureColumnAndRowData(&q_rowData, &sizehint_totalBoxes[Ver], styleInfo, sizehint_xx.data(), sizehint_widths.data(), Qt::Vertical); sizeHintCalculated = true; } @@ -1143,7 +1164,7 @@ QSizeF QGridLayoutEngine::sizeHint(const QLayoutStyleInfo &styleInfo, Qt::SizeHi //Calculate row heights and positions, and put results in q_yy.data() and q_heights.data() so that we can use this information as //constraints to find the column widths q_rowData.calculateGeometries(0, rowCount(), height, sizehint_yy.data(), sizehint_heights.data(), - 0, sizehint_totalBoxes[Ver]); + 0, sizehint_totalBoxes[Ver], q_infos[Ver]); ensureColumnAndRowData(&q_columnData, &sizehint_totalBoxes[Hor], styleInfo, sizehint_yy.data(), sizehint_heights.data(), Qt::Vertical); sizeHintCalculated = true; } @@ -1159,7 +1180,7 @@ QSizeF QGridLayoutEngine::sizeHint(const QLayoutStyleInfo &styleInfo, Qt::SizeHi sizehint_totalBoxes[Hor] = q_totalBoxes[Hor]; sizehint_totalBoxes[Ver] = q_totalBoxes[Ver]; } - } + } switch (which) { case Qt::MinimumSize: @@ -1617,7 +1638,8 @@ void QGridLayoutEngine::ensureColumnAndRowData(QGridLayoutRowData *rowData, QGri { rowData->reset(rowCount(orientation)); fillRowData(rowData, styleInfo, colPositions, colSizes, orientation); - rowData->distributeMultiCells(); + const QGridLayoutRowInfo &rowInfo = q_infos[orientation == Qt::Vertical]; + rowData->distributeMultiCells(rowInfo); *totalBox = rowData->totalBox(0, rowCount(orientation)); //We have items whose width depends on their height } @@ -1686,22 +1708,22 @@ void QGridLayoutEngine::ensureGeometries(const QLayoutStyleInfo &styleInfo, //Calculate column widths and positions, and put results in q_xx.data() and q_widths.data() so that we can use this information as //constraints to find the row heights q_columnData.calculateGeometries(0, columnCount(), size.width(), q_xx.data(), q_widths.data(), - 0, q_totalBoxes[Hor]); + 0, q_totalBoxes[Hor], q_infos[Hor] ); ensureColumnAndRowData(&q_rowData, &q_totalBoxes[Ver], styleInfo, q_xx.data(), q_widths.data(), Qt::Vertical); //Calculate row heights and positions, and put results in q_yy.data() and q_heights.data() q_rowData.calculateGeometries(0, rowCount(), size.height(), q_yy.data(), q_heights.data(), - q_descents.data(), q_totalBoxes[Ver]); + q_descents.data(), q_totalBoxes[Ver], q_infos[Ver]); } else { //We have items whose height depends on their width ensureColumnAndRowData(&q_rowData, &q_totalBoxes[Ver], styleInfo, NULL, NULL, Qt::Vertical); //Calculate row heights and positions, and put results in q_yy.data() and q_heights.data() so that we can use this information as //constraints to find the column widths q_rowData.calculateGeometries(0, rowCount(), size.height(), q_yy.data(), q_heights.data(), - q_descents.data(), q_totalBoxes[Ver]); + q_descents.data(), q_totalBoxes[Ver], q_infos[Ver]); ensureColumnAndRowData(&q_columnData, &q_totalBoxes[Hor], styleInfo, q_yy.data(), q_heights.data(), Qt::Horizontal); //Calculate row heights and positions, and put results in q_yy.data() and q_heights.data() q_columnData.calculateGeometries(0, columnCount(), size.width(), q_xx.data(), q_widths.data(), - 0, q_totalBoxes[Hor]); + 0, q_totalBoxes[Hor], q_infos[Hor]); } } diff --git a/src/gui/graphicsview/qgridlayoutengine_p.h b/src/gui/graphicsview/qgridlayoutengine_p.h index 02c74b0..44efbba 100644 --- a/src/gui/graphicsview/qgridlayoutengine_p.h +++ b/src/gui/graphicsview/qgridlayoutengine_p.h @@ -224,13 +224,16 @@ public: typedef QMap, QGridLayoutMultiCellData> MultiCellMap; +class QGridLayoutRowInfo; + class QGridLayoutRowData { public: void reset(int count); - void distributeMultiCells(); + void distributeMultiCells(const QGridLayoutRowInfo &rowInfo); void calculateGeometries(int start, int end, qreal targetSize, qreal *positions, qreal *sizes, - qreal *descents, const QGridLayoutBox &totalBox); + qreal *descents, const QGridLayoutBox &totalBox, + const QGridLayoutRowInfo &rowInfo); QGridLayoutBox totalBox(int start, int end) const; void stealBox(int start, int end, int which, qreal *positions, qreal *sizes); diff --git a/tests/auto/qgraphicsgridlayout/tst_qgraphicsgridlayout.cpp b/tests/auto/qgraphicsgridlayout/tst_qgraphicsgridlayout.cpp index 7170059..248778f 100644 --- a/tests/auto/qgraphicsgridlayout/tst_qgraphicsgridlayout.cpp +++ b/tests/auto/qgraphicsgridlayout/tst_qgraphicsgridlayout.cpp @@ -700,6 +700,10 @@ void tst_QGraphicsGridLayout::columnMaximumWidth() layout->setContentsMargins(0, 0, 0, 0); layout->setSpacing(0); + QCOMPARE(layout->minimumSize(), QSizeF(10+10+10, 10+10)); + QCOMPARE(layout->preferredSize(), QSizeF(25+25+25, 25+25)); + QCOMPARE(layout->maximumSize(), QSizeF(50+50+50, 50+50)); + // should at least be a very large number QVERIFY(layout->columnMaximumWidth(0) >= 10000); QCOMPARE(layout->columnMaximumWidth(0), layout->columnMaximumWidth(1)); @@ -707,17 +711,65 @@ void tst_QGraphicsGridLayout::columnMaximumWidth() layout->setColumnMaximumWidth(0, 20); layout->setColumnMaximumWidth(2, 60); - view.show(); - widget->show(); + QCOMPARE(layout->minimumSize(), QSizeF(10+10+10, 10+10)); + QCOMPARE(layout->preferredSize(), QSizeF(20+25+25, 25+25)); + QCOMPARE(layout->maximumSize(), QSizeF(20+50+60, 50+50)); + QCOMPARE(layout->maximumSize(), widget->maximumSize()); + widget->resize(widget->effectiveSizeHint(Qt::PreferredSize)); - QApplication::processEvents(); + layout->activate(); - QCOMPARE(layout->itemAt(0,0)->geometry().width(), 20.0); - QCOMPARE(layout->itemAt(1,0)->geometry().width(), 20.0); - QCOMPARE(layout->itemAt(0,1)->geometry().width(), 25.0); - QCOMPARE(layout->itemAt(1,1)->geometry().width(), 25.0); - QCOMPARE(layout->itemAt(0,2)->geometry().width(), 25.0); - QCOMPARE(layout->itemAt(1,2)->geometry().width(), 25.0); + QCOMPARE(layout->itemAt(0,0)->geometry(), QRectF(0, 0, 20, 25)); + QCOMPARE(layout->itemAt(1,0)->geometry(), QRectF(0, 25, 20, 25)); + QCOMPARE(layout->itemAt(0,1)->geometry(), QRectF(20, 0, 25, 25)); + QCOMPARE(layout->itemAt(1,1)->geometry(), QRectF(20, 25, 25, 25)); + QCOMPARE(layout->itemAt(0,2)->geometry(), QRectF(45, 0, 25, 25)); + QCOMPARE(layout->itemAt(1,2)->geometry(), QRectF(45, 25, 25, 25)); + + layout->setColumnAlignment(2, Qt::AlignCenter); //FIXME This shouldn't be needed because the documentation says that center is default + widget->resize(widget->effectiveSizeHint(Qt::MaximumSize)); + layout->activate(); + QCOMPARE(layout->geometry(), QRectF(0,0,20+50+60, 50+50)); + QCOMPARE(layout->itemAt(0,0)->geometry(), QRectF(0, 0, 20, 50)); + QCOMPARE(layout->itemAt(1,0)->geometry(), QRectF(0, 50, 20, 50)); + QCOMPARE(layout->itemAt(0,1)->geometry(), QRectF(20, 0, 50, 50)); + QCOMPARE(layout->itemAt(1,1)->geometry(), QRectF(20, 50, 50, 50)); + QCOMPARE(layout->itemAt(0,2)->geometry(), QRectF(75, 0, 50, 50)); + QCOMPARE(layout->itemAt(1,2)->geometry(), QRectF(75, 50, 50, 50)); + + for(int i = 0; i < layout->count(); i++) + layout->setAlignment(layout->itemAt(i), Qt::AlignRight | Qt::AlignBottom); + layout->activate(); + QCOMPARE(layout->itemAt(0,0)->geometry(), QRectF(0, 0, 20, 50)); + QCOMPARE(layout->itemAt(1,0)->geometry(), QRectF(0, 50, 20, 50)); + QCOMPARE(layout->itemAt(0,1)->geometry(), QRectF(20, 0, 50, 50)); + QCOMPARE(layout->itemAt(1,1)->geometry(), QRectF(20, 50, 50, 50)); + QCOMPARE(layout->itemAt(0,2)->geometry(), QRectF(80, 0, 50, 50)); + QCOMPARE(layout->itemAt(1,2)->geometry(), QRectF(80, 50, 50, 50)); + for(int i = 0; i < layout->count(); i++) + layout->setAlignment(layout->itemAt(i), Qt::AlignCenter); + + layout->setMaximumSize(layout->maximumSize() + QSizeF(60,60)); + widget->resize(widget->effectiveSizeHint(Qt::MaximumSize)); + layout->activate(); + + QCOMPARE(layout->itemAt(0,0)->geometry(), QRectF(0, 15, 20, 50)); + QCOMPARE(layout->itemAt(1,0)->geometry(), QRectF(0, 95, 20, 50)); + QCOMPARE(layout->itemAt(0,1)->geometry(), QRectF(20+30, 15, 50, 50)); + QCOMPARE(layout->itemAt(1,1)->geometry(), QRectF(20+30, 95, 50, 50)); + QCOMPARE(layout->itemAt(0,2)->geometry(), QRectF(20+60+50+5, 15, 50, 50)); + QCOMPARE(layout->itemAt(1,2)->geometry(), QRectF(20+60+50+5, 95, 50, 50)); + + layout->setMaximumSize(layout->preferredSize() + QSizeF(20,20)); + widget->resize(widget->effectiveSizeHint(Qt::MaximumSize)); + layout->activate(); + + QCOMPARE(layout->itemAt(0,0)->geometry(), QRectF(0, 0, 20, 35)); + QCOMPARE(layout->itemAt(1,0)->geometry(), QRectF(0, 35, 20, 35)); + QCOMPARE(layout->itemAt(0,1)->geometry(), QRectF(20, 0, 35, 35)); + QCOMPARE(layout->itemAt(1,1)->geometry(), QRectF(20, 35, 35, 35)); + QCOMPARE(layout->itemAt(0,2)->geometry(), QRectF(55, 0, 35, 35)); + QCOMPARE(layout->itemAt(1,2)->geometry(), QRectF(55, 35, 35, 35)); delete widget; } diff --git a/tests/auto/qgraphicslinearlayout/tst_qgraphicslinearlayout.cpp b/tests/auto/qgraphicslinearlayout/tst_qgraphicslinearlayout.cpp index 6107fa1..e271aee 100644 --- a/tests/auto/qgraphicslinearlayout/tst_qgraphicslinearlayout.cpp +++ b/tests/auto/qgraphicslinearlayout/tst_qgraphicslinearlayout.cpp @@ -103,6 +103,8 @@ private slots: void removeLayout(); void avoidRecursionInInsertItem(); void styleInfoLeak(); + void testAlignmentInLargerLayout(); + void testOffByOneInLargerLayout(); // Task specific tests void task218400_insertStretchCrash(); @@ -1465,6 +1467,89 @@ void tst_QGraphicsLinearLayout::task218400_insertStretchCrash() form->setLayout(layout); // crash } +void tst_QGraphicsLinearLayout::testAlignmentInLargerLayout() +{ + QGraphicsScene *scene = new QGraphicsScene; + QGraphicsWidget *form = new QGraphicsWidget; + scene->addItem(form); + QGraphicsLinearLayout *layout = new QGraphicsLinearLayout(Qt::Vertical, form); + layout->setSpacing(0); + layout->setContentsMargins(0,0,0,0); + + QGraphicsWidget *a = new QGraphicsWidget; + a->setMaximumSize(100,100); + layout->addItem(a); + + QCOMPARE(form->maximumSize(), QSizeF(100,100)); + QCOMPARE(layout->maximumSize(), QSizeF(100,100)); + layout->setMinimumSize(QSizeF(200,200)); + layout->setMaximumSize(QSizeF(200,200)); + + layout->setAlignment(a, Qt::AlignCenter); + layout->activate(); + QCOMPARE(a->geometry(), QRectF(50,50,100,100)); + + layout->setAlignment(a, Qt::AlignRight | Qt::AlignBottom); + layout->activate(); + QCOMPARE(a->geometry(), QRectF(100,100,100,100)); + + layout->setAlignment(a, Qt::AlignHCenter | Qt::AlignTop); + layout->activate(); + QCOMPARE(a->geometry(), QRectF(50,0,100,100)); + + QGraphicsWidget *b = new QGraphicsWidget; + b->setMaximumSize(100,100); + layout->addItem(b); + + layout->setAlignment(a, Qt::AlignCenter); + layout->setAlignment(b, Qt::AlignCenter); + layout->activate(); + QCOMPARE(a->geometry(), QRectF(50,0,100,100)); + QCOMPARE(b->geometry(), QRectF(50,100,100,100)); + + layout->setAlignment(a, Qt::AlignRight | Qt::AlignBottom); + layout->setAlignment(b, Qt::AlignLeft | Qt::AlignTop); + layout->activate(); + QCOMPARE(a->geometry(), QRectF(100,0,100,100)); + QCOMPARE(b->geometry(), QRectF(0,100,100,100)); +} + +void tst_QGraphicsLinearLayout::testOffByOneInLargerLayout() { + QGraphicsScene *scene = new QGraphicsScene; + QGraphicsWidget *form = new QGraphicsWidget; + scene->addItem(form); + QGraphicsLinearLayout *layout = new QGraphicsLinearLayout(Qt::Vertical, form); + layout->setSpacing(0); + layout->setContentsMargins(0,0,0,0); + + QGraphicsWidget *a = new QGraphicsWidget; + QGraphicsWidget *b = new QGraphicsWidget; + a->setMaximumSize(100,100); + b->setMaximumSize(100,100); + layout->addItem(a); + layout->addItem(b); + + layout->setAlignment(a, Qt::AlignRight | Qt::AlignBottom); + layout->setAlignment(b, Qt::AlignLeft | Qt::AlignTop); + layout->setMinimumSize(QSizeF(101,201)); + layout->setMaximumSize(QSizeF(101,201)); + layout->activate(); + QCOMPARE(a->geometry(), QRectF(1,0.5,100,100)); + QCOMPARE(b->geometry(), QRectF(0,100.5,100,100)); + + layout->setMinimumSize(QSizeF(100,200)); + layout->setMaximumSize(QSizeF(100,200)); + layout->activate(); + QCOMPARE(a->geometry(), QRectF(0,0,100,100)); + QCOMPARE(b->geometry(), QRectF(0,100,100,100)); + + layout->setMinimumSize(QSizeF(99,199)); + layout->setMaximumSize(QSizeF(99,199)); + layout->activate(); + QCOMPARE(a->geometry(), QRectF(0,0,99,99.5)); + QCOMPARE(b->geometry(), QRectF(0,99.5,99,99.5)); +} + QTEST_MAIN(tst_QGraphicsLinearLayout) #include "tst_qgraphicslinearlayout.moc" -- cgit v0.12 From 1781b3c876b4e1025b2a85f4e7975c171b1a1404 Mon Sep 17 00:00:00 2001 From: John Tapsell Date: Mon, 15 Nov 2010 12:55:13 +0100 Subject: Change the QGraphics*Layout documentation to match the code - that the default alignment is top-left. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This includes unit tests to confirm that the alignment is top-left in a variety of different cases. Merge-request: 894 Reviewed-by: Jan-Arve Sæther --- src/gui/graphicsview/qgraphicsgridlayout.cpp | 11 ++++++ src/gui/graphicsview/qgraphicslinearlayout.cpp | 4 +- .../tst_qgraphicsgridlayout.cpp | 45 +++++++++++++++++++++- .../tst_qgraphicslinearlayout.cpp | 33 ++++++++++++++++ 4 files changed, 89 insertions(+), 4 deletions(-) diff --git a/src/gui/graphicsview/qgraphicsgridlayout.cpp b/src/gui/graphicsview/qgraphicsgridlayout.cpp index 3fc7f10..c3bb6c3 100644 --- a/src/gui/graphicsview/qgraphicsgridlayout.cpp +++ b/src/gui/graphicsview/qgraphicsgridlayout.cpp @@ -64,6 +64,17 @@ removeAt() will remove an item from the layout, without destroying it. + \section1 Size Hints and Size Policies in QGraphicsGridLayout + + QGraphicsGridLayout respects each item's size hints and size policies, + and when the layout contains more space than the items can fill, each item + is arranged according to the layout's alignment for that item. You can set + an alignment for each item by calling setAlignment(), and check the + alignment for any item by calling alignment(). You can also set the alignment + for an entire row or column by calling setRowAlignment() and setColumnAlignment() + respectively. By default, items are aligned to the top left. + + \sa QGraphicsLinearLayout, QGraphicsWidget */ diff --git a/src/gui/graphicsview/qgraphicslinearlayout.cpp b/src/gui/graphicsview/qgraphicslinearlayout.cpp index 7e8d19f..244a728 100644 --- a/src/gui/graphicsview/qgraphicslinearlayout.cpp +++ b/src/gui/graphicsview/qgraphicslinearlayout.cpp @@ -75,7 +75,7 @@ is arranged according to the layout's alignment for that item. You can set an alignment for each item by calling setAlignment(), and check the alignment for any item by calling alignment(). By default, items are - centered both vertically and horizontally. + aligned to the top left. \section1 Spacing within QGraphicsLinearLayout @@ -446,7 +446,7 @@ void QGraphicsLinearLayout::setAlignment(QGraphicsLayoutItem *item, Qt::Alignmen /*! Returns the alignment for \a item. The default alignment is - Qt::AlignCenter. + Qt::AlignTop | Qt::AlignLeft. The alignment decides how the item is positioned within its assigned space in the case where there's more space available in the layout than the diff --git a/tests/auto/qgraphicsgridlayout/tst_qgraphicsgridlayout.cpp b/tests/auto/qgraphicsgridlayout/tst_qgraphicsgridlayout.cpp index 248778f..8d1f282 100644 --- a/tests/auto/qgraphicsgridlayout/tst_qgraphicsgridlayout.cpp +++ b/tests/auto/qgraphicsgridlayout/tst_qgraphicsgridlayout.cpp @@ -123,6 +123,7 @@ private slots: void heightForWidth(); void heightForWidthWithSpanning(); void stretchAndHeightForWidth(); + void testDefaultAlignment(); }; class RectWidget : public QGraphicsWidget @@ -726,7 +727,7 @@ void tst_QGraphicsGridLayout::columnMaximumWidth() QCOMPARE(layout->itemAt(0,2)->geometry(), QRectF(45, 0, 25, 25)); QCOMPARE(layout->itemAt(1,2)->geometry(), QRectF(45, 25, 25, 25)); - layout->setColumnAlignment(2, Qt::AlignCenter); //FIXME This shouldn't be needed because the documentation says that center is default + layout->setColumnAlignment(2, Qt::AlignCenter); widget->resize(widget->effectiveSizeHint(Qt::MaximumSize)); layout->activate(); QCOMPARE(layout->geometry(), QRectF(0,0,20+50+60, 50+50)); @@ -2859,7 +2860,6 @@ void tst_QGraphicsGridLayout::heightForWidthWithSpanning() QCOMPARE(layout->effectiveSizeHint(Qt::MaximumSize, QSizeF(200, -1)), QSizeF(200, 10000)); } - void tst_QGraphicsGridLayout::stretchAndHeightForWidth() { QGraphicsWidget *widget = new QGraphicsWidget(0, Qt::Window); @@ -2919,7 +2919,48 @@ void tst_QGraphicsGridLayout::stretchAndHeightForWidth() } +void tst_QGraphicsGridLayout::testDefaultAlignment() +{ + QGraphicsWidget *widget = new QGraphicsWidget; + QGraphicsGridLayout *layout = new QGraphicsGridLayout(widget); + layout->setContentsMargins(0, 0, 0, 0); + layout->setSpacing(0); + + QGraphicsWidget *w = new QGraphicsWidget; + w->setMinimumSize(50,50); + w->setMaximumSize(50,50); + layout->addItem(w,0,0); + + //Default alignment should be to the top-left + //First, check by forcing the layout to be bigger + layout->setMinimumSize(100,100); + layout->activate(); + QCOMPARE(layout->geometry(), QRectF(0,0,100,100)); + QCOMPARE(w->geometry(), QRectF(0,0,50,50)); + layout->setMinimumSize(-1,-1); + + //Second, check by forcing the column and row to be bigger instead + layout->setColumnMinimumWidth(0, 100); + layout->setRowMinimumHeight(0, 100); + layout->activate(); + QCOMPARE(layout->geometry(), QRectF(0,0,100,100)); + QCOMPARE(w->geometry(), QRectF(0,0,50,50)); + layout->setMinimumSize(-1,-1); + layout->setColumnMinimumWidth(0, 0); + layout->setRowMinimumHeight(0, 0); + + + //Third, check by adding a larger item in the column + QGraphicsWidget *w2 = new QGraphicsWidget; + w2->setMinimumSize(100,100); + w2->setMaximumSize(100,100); + layout->addItem(w2,1,0); + layout->activate(); + QCOMPARE(layout->geometry(), QRectF(0,0,100,150)); + QCOMPARE(w->geometry(), QRectF(0,0,50,50)); + QCOMPARE(w2->geometry(), QRectF(0,50,100,100)); +} QTEST_MAIN(tst_QGraphicsGridLayout) #include "tst_qgraphicsgridlayout.moc" diff --git a/tests/auto/qgraphicslinearlayout/tst_qgraphicslinearlayout.cpp b/tests/auto/qgraphicslinearlayout/tst_qgraphicslinearlayout.cpp index e271aee..cbc90be 100644 --- a/tests/auto/qgraphicslinearlayout/tst_qgraphicslinearlayout.cpp +++ b/tests/auto/qgraphicslinearlayout/tst_qgraphicslinearlayout.cpp @@ -105,6 +105,7 @@ private slots: void styleInfoLeak(); void testAlignmentInLargerLayout(); void testOffByOneInLargerLayout(); + void testDefaultAlignment(); // Task specific tests void task218400_insertStretchCrash(); @@ -1549,6 +1550,38 @@ void tst_QGraphicsLinearLayout::testOffByOneInLargerLayout() { QCOMPARE(a->geometry(), QRectF(0,0,99,99.5)); QCOMPARE(b->geometry(), QRectF(0,99.5,99,99.5)); } +void tst_QGraphicsLinearLayout::testDefaultAlignment() +{ + QGraphicsWidget *widget = new QGraphicsWidget; + QGraphicsLinearLayout *layout = new QGraphicsLinearLayout(Qt::Vertical, widget); + layout->setContentsMargins(0, 0, 0, 0); + layout->setSpacing(0); + + QGraphicsWidget *w = new QGraphicsWidget; + w->setMinimumSize(50,50); + w->setMaximumSize(50,50); + layout->addItem(w); + + //Default alignment should be to the top-left + QCOMPARE(layout->alignment(w), 0); + + //First, check by forcing the layout to be bigger + layout->setMinimumSize(100,100); + layout->activate(); + QCOMPARE(layout->geometry(), QRectF(0,0,100,100)); + QCOMPARE(w->geometry(), QRectF(0,0,50,50)); + layout->setMinimumSize(-1,-1); + + //Second, check by adding a larger item in the column + QGraphicsWidget *w2 = new QGraphicsWidget; + w2->setMinimumSize(100,100); + w2->setMaximumSize(100,100); + layout->addItem(w2); + layout->activate(); + QCOMPARE(layout->geometry(), QRectF(0,0,100,150)); + QCOMPARE(w->geometry(), QRectF(0,0,50,50)); + QCOMPARE(w2->geometry(), QRectF(0,50,100,100)); +} QTEST_MAIN(tst_QGraphicsLinearLayout) #include "tst_qgraphicslinearlayout.moc" -- cgit v0.12 From 012c865ab30ed45fc57ee5b49b625697cc065e82 Mon Sep 17 00:00:00 2001 From: Janne Anttila Date: Fri, 12 Nov 2010 11:16:29 +0200 Subject: Removed unnecessary Q_OS_SYMBIAN flags from qdesktopservices_s60.cpp. This flags used to be Q_WS_S60 flags but as part of fabf804b they were changed to Q_OS_SYMBIAN. However since the whole while is only included to build when Q_OS_SYMBIAN is defined, the flags can be removed. Reviewed-by: mread --- src/gui/util/qdesktopservices_s60.cpp | 24 ++++-------------------- 1 file changed, 4 insertions(+), 20 deletions(-) diff --git a/src/gui/util/qdesktopservices_s60.cpp b/src/gui/util/qdesktopservices_s60.cpp index cd023cb..d1eeeae 100644 --- a/src/gui/util/qdesktopservices_s60.cpp +++ b/src/gui/util/qdesktopservices_s60.cpp @@ -62,15 +62,10 @@ // copied from miutset.h, so we don't get a dependency into the app layer const TUid KUidMsgTypeSMTP = {0x10001028}; // 268439592 -#ifdef Q_OS_SYMBIAN -# include // PathInfo -# ifdef USE_DOCUMENTHANDLER -# include // CDocumentHandler -# include -# endif -#else -# warning CDocumentHandler requires support for S60 -# undef USE_DOCUMENTHANDLER // Fallback to RApaLsSession based implementation +#include // PathInfo +#ifdef USE_DOCUMENTHANDLER +# include // CDocumentHandler +# include #endif QT_BEGIN_NAMESPACE @@ -268,7 +263,6 @@ static TDriveUnit writableExeDrive() static TPtrC writableDataRoot() { TDriveUnit drive = exeDrive(); -#ifdef Q_OS_SYMBIAN switch(drive.operator TInt()){ case EDriveC: return PathInfo::PhoneMemoryRootPath(); @@ -285,10 +279,6 @@ static TPtrC writableDataRoot() return PathInfo::PhoneMemoryRootPath(); break; } -#else -#warning No fallback implementation of writableDataRoot() - return 0; -#endif } static void openDocumentL(const TDesC& aUrl) @@ -395,21 +385,15 @@ QString QDesktopServices::storageLocation(StandardLocation type) break; case MusicLocation: path.Append(writableDataRoot()); -#ifdef Q_OS_SYMBIAN path.Append(PathInfo::SoundsPath()); -#endif break; case MoviesLocation: path.Append(writableDataRoot()); -#ifdef Q_OS_SYMBIAN path.Append(PathInfo::VideosPath()); -#endif break; case PicturesLocation: path.Append(writableDataRoot()); -#ifdef Q_OS_SYMBIAN path.Append(PathInfo::ImagesPath()); -#endif break; case TempLocation: return QDir::tempPath(); -- cgit v0.12 From d92cbfc5d04d750dea1e49a377e62be564cac788 Mon Sep 17 00:00:00 2001 From: Janne Anttila Date: Mon, 15 Nov 2010 13:22:27 +0200 Subject: Switched qdesktopservices to use SchemeHandler for Symbian^3 and later. SchemeHandler is plugin extensible component to handle several different URI schemes. By default schemes such as http, https, rtsp, mailto, file, wtai, tel and cti are supported. In some devices/platforms also other schemes might be supported. This commit only defines the USE_SCHEMEHANDLER macro and re-orders the qdesktopservices_s60 source code to make it more readable and to make it compile both with and without the flag. The actual implementation was provided at the same time when qdesktopservices for symbian was initially implemented. Why support is enabled only for Symbian^3 and later? SchemeHandler component does not exist in S60 3.1 - 5.0 public SDKs, actually it does not exist also in Forum Nokia provided Symbian^3 SDK, but is available in Symbian^3 PDK. Since building Qt for Symbian^3 anyway require PDK and because the release builds for Symbian^3 are done separately from older Symbian versions, PDK dependency should be Ok. It might be that SchemeHandler headers will be relicensed as part of Qt, then SchemeHandler support also for older S60/Symbian releases can be enabled. If this happens it will be separate commit. Task-number: QTBUG-15282 Reviewed-by: Miikka Heikkinen --- src/gui/util/qdesktopservices_s60.cpp | 162 ++++++++++++++++++---------------- src/gui/util/util.pri | 19 ++-- 2 files changed, 97 insertions(+), 84 deletions(-) diff --git a/src/gui/util/qdesktopservices_s60.cpp b/src/gui/util/qdesktopservices_s60.cpp index d1eeeae..47b0cbe 100644 --- a/src/gui/util/qdesktopservices_s60.cpp +++ b/src/gui/util/qdesktopservices_s60.cpp @@ -45,27 +45,29 @@ #include #include -#include // CRichText #include // TDriveUnit etc -#include // CEikonEnv -#include // RApaLsSession -#include // TApaTaskList, TApaTask -#include // RSendAs -#include // RSendAsMessage +#include // PathInfo +#ifndef USE_SCHEMEHANDLER #ifdef Q_WS_S60 // This flag changes the implementation to use S60 CDcoumentHandler -// instead of apparch when opening the files +// instead of apparc when opening the files #define USE_DOCUMENTHANDLER #endif -// copied from miutset.h, so we don't get a dependency into the app layer -const TUid KUidMsgTypeSMTP = {0x10001028}; // 268439592 +#include // CRichText +#include // CEikonEnv +#include // RApaLsSession +#include // TApaTaskList, TApaTask +#include // RSendAs +#include // RSendAsMessage -#include // PathInfo #ifdef USE_DOCUMENTHANDLER -# include // CDocumentHandler -# include +#include // CDocumentHandler +#include +#endif +#else // USE_SCHEMEHANDLER +#include #endif QT_BEGIN_NAMESPACE @@ -74,6 +76,10 @@ _LIT(KCacheSubDir, "Cache\\"); _LIT(KSysBin, "\\Sys\\Bin\\"); _LIT(KBrowserPrefix, "4 " ); _LIT(KFontsDir, "z:\\resource\\Fonts\\"); + +#ifndef USE_SCHEMEHANDLER +// copied from miutset.h, so we don't get a dependency into the app layer +const TUid KUidMsgTypeSMTP = {0x10001028}; // 268439592 const TUid KUidBrowser = { 0x10008D39 }; template @@ -132,7 +138,6 @@ private: Q_GLOBAL_STATIC(QS60DocumentHandler, qt_s60_documenthandler); #endif - static void handleMailtoSchemeLX(const QUrl &url) { // this function has many intermingled leaves and throws. Qt and Symbian objects do not have @@ -150,12 +155,10 @@ static void handleMailtoSchemeLX(const QUrl &url) QStringList ccs = cc.split(QLatin1String(","), QString::SkipEmptyParts); QStringList bccs = bcc.split(QLatin1String(","), QString::SkipEmptyParts); - RSendAs sendAs; User::LeaveIfError(sendAs.Connect()); QAutoClose sendAsCleanup(sendAs); - CSendAsAccounts* accounts = CSendAsAccounts::NewL(); CleanupStack::PushL(accounts); sendAs.AvailableAccountsL(KUidMsgTypeSMTP, *accounts); @@ -244,42 +247,6 @@ static bool handleOtherSchemes(const QUrl &url) return err ? false : true; } -static TDriveUnit exeDrive() -{ - RProcess me; - TFileName processFileName = me.FileName(); - TDriveUnit drive(processFileName); - return drive; -} - -static TDriveUnit writableExeDrive() -{ - TDriveUnit drive = exeDrive(); - if(drive.operator TInt() == EDriveZ) - return TDriveUnit(EDriveC); - return drive; -} - -static TPtrC writableDataRoot() -{ - TDriveUnit drive = exeDrive(); - switch(drive.operator TInt()){ - case EDriveC: - return PathInfo::PhoneMemoryRootPath(); - break; - case EDriveE: - return PathInfo::MemoryCardRootPath(); - break; - case EDriveZ: - // It is not possible to write on ROM drive -> - // return phone mem root path instead - return PathInfo::PhoneMemoryRootPath(); - break; - default: - return PathInfo::PhoneMemoryRootPath(); - break; - } -} static void openDocumentL(const TDesC& aUrl) { @@ -304,13 +271,44 @@ static void openDocumentL(const TDesC& aUrl) #endif } -#ifdef USE_SCHEMEHANDLER +static bool launchWebBrowser(const QUrl &url) +{ + if (!url.isValid()) + return false; + + if (url.scheme() == QLatin1String("mailto")) { + return handleMailtoScheme(url); + } + return handleOtherSchemes( url ); +} + +static bool openDocument(const QUrl &file) +{ + if (!file.isValid()) + return false; + + QString filePath = file.toLocalFile(); + filePath = QDir::toNativeSeparators(filePath); + TPtrC filePathPtr(qt_QString2TPtrC(filePath)); + TRAPD(err, openDocumentL(filePathPtr)); + return err ? false : true; +} + +#else //USE_SCHEMEHANDLER // The schemehandler component only exist in private SDK. This implementation // exist here just for convenience in case that we need to use it later on // The schemehandle based implementation is not yet tested. // The biggest advantage of schemehandler is that it can handle // wide range of schemes and is extensible by plugins +static void handleUrlL(const TDesC& aUrl) +{ + CSchemeHandler* schemeHandler = CSchemeHandler::NewL(aUrl); + CleanupStack::PushL(schemeHandler); + schemeHandler->HandleUrlStandaloneL(); // Process the Url in standalone mode + CleanupStack::PopAndDestroy(); +} + static bool handleUrl(const QUrl &url) { if (!url.isValid()) @@ -322,13 +320,6 @@ static bool handleUrl(const QUrl &url) return err ? false : true; } -static void handleUrlL(const TDesC& aUrl) -{ - CSchemeHandler* schemeHandler = CSchemeHandler::NewL(aUrl); - CleanupStack::PushL(schemeHandler); - schemeHandler->HandleUrlStandaloneL(); // Process the Url in standalone mode - CleanupStack::PopAndDestroy(); -} static bool launchWebBrowser(const QUrl &url) { return handleUrl(url); @@ -336,31 +327,48 @@ static bool launchWebBrowser(const QUrl &url) static bool openDocument(const QUrl &file) { - return handleUrl(url); + return handleUrl(file); } -#endif -static bool launchWebBrowser(const QUrl &url) -{ - if (!url.isValid()) - return false; +#endif //USE_SCHEMEHANDLER - if (url.scheme() == QLatin1String("mailto")) { - return handleMailtoScheme(url); - } - return handleOtherSchemes( url ); +// Common functions to all implementations + +static TDriveUnit exeDrive() +{ + RProcess me; + TFileName processFileName = me.FileName(); + TDriveUnit drive(processFileName); + return drive; } -static bool openDocument(const QUrl &file) +static TDriveUnit writableExeDrive() { - if (!file.isValid()) - return false; + TDriveUnit drive = exeDrive(); + if(drive.operator TInt() == EDriveZ) + return TDriveUnit(EDriveC); + return drive; +} - QString filePath = file.toLocalFile(); - filePath = QDir::toNativeSeparators(filePath); - TPtrC filePathPtr(qt_QString2TPtrC(filePath)); - TRAPD(err, openDocumentL(filePathPtr)); - return err ? false : true; +static TPtrC writableDataRoot() +{ + TDriveUnit drive = exeDrive(); + switch(drive.operator TInt()){ + case EDriveC: + return PathInfo::PhoneMemoryRootPath(); + break; + case EDriveE: + return PathInfo::MemoryCardRootPath(); + break; + case EDriveZ: + // It is not possible to write on ROM drive -> + // return phone mem root path instead + return PathInfo::PhoneMemoryRootPath(); + break; + default: + return PathInfo::PhoneMemoryRootPath(); + break; + } } QString QDesktopServices::storageLocation(StandardLocation type) diff --git a/src/gui/util/util.pri b/src/gui/util/util.pri index bea520e..d1c4ff8 100644 --- a/src/gui/util/util.pri +++ b/src/gui/util/util.pri @@ -43,12 +43,17 @@ embedded { } symbian { - LIBS += -lsendas2 -letext -lapmime -lplatformenv - contains(QT_CONFIG, s60) { - contains(CONFIG, is_using_gnupoc) { - LIBS += -lcommonui - } else { - LIBS += -lCommonUI + LIBS += -letext -lplatformenv + contains(S60_VERSION, 3.1)|contains(S60_VERSION, 3.2)|contains(S60_VERSION, 5.0) { + LIBS += -lsendas2 -lapmime + contains(QT_CONFIG, s60) { + contains(CONFIG, is_using_gnupoc) { + LIBS += -lcommonui + } else { + LIBS += -lCommonUI + } } + } else { + DEFINES += USE_SCHEMEHANDLER } -} +} \ No newline at end of file -- cgit v0.12 From 03c60ccac1ab416ebee7a262f1c910774fdc2ff2 Mon Sep 17 00:00:00 2001 From: Janne Anttila Date: Mon, 15 Nov 2010 14:28:25 +0200 Subject: Fixed code style of d92cbfc5, reported by git push. 82: TAB character in non-leading whitespace 348: Flow control keywords must be followed by single space 356: Flow control keywords must be followed by single space Rev-By: TrustMe --- src/gui/util/qdesktopservices_s60.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/gui/util/qdesktopservices_s60.cpp b/src/gui/util/qdesktopservices_s60.cpp index 47b0cbe..56c2b98 100644 --- a/src/gui/util/qdesktopservices_s60.cpp +++ b/src/gui/util/qdesktopservices_s60.cpp @@ -79,7 +79,7 @@ _LIT(KFontsDir, "z:\\resource\\Fonts\\"); #ifndef USE_SCHEMEHANDLER // copied from miutset.h, so we don't get a dependency into the app layer -const TUid KUidMsgTypeSMTP = {0x10001028}; // 268439592 +const TUid KUidMsgTypeSMTP = {0x10001028}; // 268439592 const TUid KUidBrowser = { 0x10008D39 }; template @@ -345,7 +345,7 @@ static TDriveUnit exeDrive() static TDriveUnit writableExeDrive() { TDriveUnit drive = exeDrive(); - if(drive.operator TInt() == EDriveZ) + if (drive.operator TInt() == EDriveZ) return TDriveUnit(EDriveC); return drive; } @@ -353,7 +353,7 @@ static TDriveUnit writableExeDrive() static TPtrC writableDataRoot() { TDriveUnit drive = exeDrive(); - switch(drive.operator TInt()){ + switch (drive.operator TInt()){ case EDriveC: return PathInfo::PhoneMemoryRootPath(); break; -- cgit v0.12 From f0990583431166e721d038e150ba00b0edc4e105 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan-Arve=20S=C3=A6ther?= Date: Mon, 15 Nov 2010 14:28:59 +0100 Subject: Some improvements to the docs that was added in merge request 894 --- src/gui/graphicsview/qgraphicsgridlayout.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/graphicsview/qgraphicsgridlayout.cpp b/src/gui/graphicsview/qgraphicsgridlayout.cpp index c3bb6c3..20ebab6 100644 --- a/src/gui/graphicsview/qgraphicsgridlayout.cpp +++ b/src/gui/graphicsview/qgraphicsgridlayout.cpp @@ -67,7 +67,7 @@ \section1 Size Hints and Size Policies in QGraphicsGridLayout QGraphicsGridLayout respects each item's size hints and size policies, - and when the layout contains more space than the items can fill, each item + and when a cell in the grid has more space than the items can fill, each item is arranged according to the layout's alignment for that item. You can set an alignment for each item by calling setAlignment(), and check the alignment for any item by calling alignment(). You can also set the alignment -- cgit v0.12 From 68fc0a299b9268007ae68f5d8a8dce40ed1e4e0c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan-Arve=20S=C3=A6ther?= Date: Mon, 15 Nov 2010 14:33:51 +0100 Subject: Adhere to code style --- tests/auto/qgraphicsgridlayout/tst_qgraphicsgridlayout.cpp | 8 ++++---- tests/auto/qgraphicslinearlayout/tst_qgraphicslinearlayout.cpp | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/tests/auto/qgraphicsgridlayout/tst_qgraphicsgridlayout.cpp b/tests/auto/qgraphicsgridlayout/tst_qgraphicsgridlayout.cpp index 8d1f282..2e52c4e 100644 --- a/tests/auto/qgraphicsgridlayout/tst_qgraphicsgridlayout.cpp +++ b/tests/auto/qgraphicsgridlayout/tst_qgraphicsgridlayout.cpp @@ -704,7 +704,7 @@ void tst_QGraphicsGridLayout::columnMaximumWidth() QCOMPARE(layout->minimumSize(), QSizeF(10+10+10, 10+10)); QCOMPARE(layout->preferredSize(), QSizeF(25+25+25, 25+25)); QCOMPARE(layout->maximumSize(), QSizeF(50+50+50, 50+50)); - + // should at least be a very large number QVERIFY(layout->columnMaximumWidth(0) >= 10000); QCOMPARE(layout->columnMaximumWidth(0), layout->columnMaximumWidth(1)); @@ -738,7 +738,7 @@ void tst_QGraphicsGridLayout::columnMaximumWidth() QCOMPARE(layout->itemAt(0,2)->geometry(), QRectF(75, 0, 50, 50)); QCOMPARE(layout->itemAt(1,2)->geometry(), QRectF(75, 50, 50, 50)); - for(int i = 0; i < layout->count(); i++) + for (int i = 0; i < layout->count(); i++) layout->setAlignment(layout->itemAt(i), Qt::AlignRight | Qt::AlignBottom); layout->activate(); QCOMPARE(layout->itemAt(0,0)->geometry(), QRectF(0, 0, 20, 50)); @@ -747,13 +747,13 @@ void tst_QGraphicsGridLayout::columnMaximumWidth() QCOMPARE(layout->itemAt(1,1)->geometry(), QRectF(20, 50, 50, 50)); QCOMPARE(layout->itemAt(0,2)->geometry(), QRectF(80, 0, 50, 50)); QCOMPARE(layout->itemAt(1,2)->geometry(), QRectF(80, 50, 50, 50)); - for(int i = 0; i < layout->count(); i++) + for (int i = 0; i < layout->count(); i++) layout->setAlignment(layout->itemAt(i), Qt::AlignCenter); layout->setMaximumSize(layout->maximumSize() + QSizeF(60,60)); widget->resize(widget->effectiveSizeHint(Qt::MaximumSize)); layout->activate(); - + QCOMPARE(layout->itemAt(0,0)->geometry(), QRectF(0, 15, 20, 50)); QCOMPARE(layout->itemAt(1,0)->geometry(), QRectF(0, 95, 20, 50)); QCOMPARE(layout->itemAt(0,1)->geometry(), QRectF(20+30, 15, 50, 50)); diff --git a/tests/auto/qgraphicslinearlayout/tst_qgraphicslinearlayout.cpp b/tests/auto/qgraphicslinearlayout/tst_qgraphicslinearlayout.cpp index cbc90be..965e340 100644 --- a/tests/auto/qgraphicslinearlayout/tst_qgraphicslinearlayout.cpp +++ b/tests/auto/qgraphicslinearlayout/tst_qgraphicslinearlayout.cpp @@ -1543,7 +1543,7 @@ void tst_QGraphicsLinearLayout::testOffByOneInLargerLayout() { layout->activate(); QCOMPARE(a->geometry(), QRectF(0,0,100,100)); QCOMPARE(b->geometry(), QRectF(0,100,100,100)); - + layout->setMinimumSize(QSizeF(99,199)); layout->setMaximumSize(QSizeF(99,199)); layout->activate(); -- cgit v0.12 From 96b1ea7088f8d541bc4c5fbc87baaf56b0b2fd43 Mon Sep 17 00:00:00 2001 From: Morten Engvoldsen Date: Mon, 15 Nov 2010 18:34:38 +0100 Subject: Doc: Correcting references to Qt Declarative module. --- doc/src/declarative/declarativeui.qdoc | 8 ++++---- doc/src/declarative/elements.qdoc | 2 +- doc/src/declarative/extending-tutorial.qdoc | 4 ++-- doc/src/declarative/qtbinding.qdoc | 12 ++++++------ doc/src/declarative/qtdeclarative.qdoc | 2 +- doc/src/getting-started/gettingstartedqml.qdoc | 2 +- doc/src/qt4-intro.qdoc | 2 +- 7 files changed, 16 insertions(+), 16 deletions(-) diff --git a/doc/src/declarative/declarativeui.qdoc b/doc/src/declarative/declarativeui.qdoc index 28a8a70..eb469d6 100644 --- a/doc/src/declarative/declarativeui.qdoc +++ b/doc/src/declarative/declarativeui.qdoc @@ -45,7 +45,7 @@ language for describing user interfaces and a language runtime. A collection of C++ APIs is used to integrate these high level features with classic Qt applications. -\section2 QML, Elements and the QtDeclarative Module +\section2 QML, Elements and the Qt Declarative Module User interfaces and their behavior are described using QML, an extension to \l{About JavaScript}{JavaScript} that lets developers and designers @@ -60,14 +60,14 @@ QObject-based type system, adds support for automatic \l{Property Binding}{property bindings} and provides \l{Network Transparency}{network transparency} at the language level. -The QtDeclarative module implements the interface between the QML language +The Qt Declarative module implements the interface between the QML language and the elements available to it. It also provides a C++ API that can be used to load and interact with QML files from within Qt applications. Qt Quick builds on \l{QML for Qt programmers}{Qt's existing strengths}. QML can be be used to incrementally extend an existing application or to build completely new applications. QML is fully -\l{Extending QML in C++}{extensible from C++} through the QtDeclarative +\l{Extending QML in C++}{extensible from C++} through the Qt Declarative Module. \section1 Getting Started @@ -139,7 +139,7 @@ Module. \o \l{QML Global Object} \o \l{QML Internationalization} \o \l{QML Security} -\o \l{QtDeclarative Module} +\o \l{Qt Declarative Module} \o \l{Debugging QML} \o \l{QML Viewer} \o \l{QML Performance} diff --git a/doc/src/declarative/elements.qdoc b/doc/src/declarative/elements.qdoc index 54f07a2..eaa6a82 100644 --- a/doc/src/declarative/elements.qdoc +++ b/doc/src/declarative/elements.qdoc @@ -32,7 +32,7 @@ \brief A dictionary of standard QML elements. This is a dictionary of all standard QML elements made available - in the QtDeclarative module. + in the Qt Declarative module. To see the QML elements listed by functional area, see the \l{Groups Of Related QML Elements} page. diff --git a/doc/src/declarative/extending-tutorial.qdoc b/doc/src/declarative/extending-tutorial.qdoc index 2bfe62e..dff1d9c 100644 --- a/doc/src/declarative/extending-tutorial.qdoc +++ b/doc/src/declarative/extending-tutorial.qdoc @@ -29,7 +29,7 @@ \page qml-extending-tutorial-index.html \title Tutorial: Writing QML extensions with C++ -The QtDeclarative module provides a set of APIs for extending QML through +The Qt Declarative module provides a set of APIs for extending QML through C++ extensions. You can write extensions to add your own QML types, extend existing Qt types, or call C/C++ functions that are not accessible from ordinary QML code. @@ -65,7 +65,7 @@ For example, this could be done to implement particular data models, or provide elements with custom painting and drawing capabilities, or access system features like network programming that are not accessible through built-in QML features. -In this tutorial, we will show how to use the C++ classes in the QtDeclarative +In this tutorial, we will show how to use the C++ classes in the Qt Declarative module to extend QML. The end result will be a simple Pie Chart display implemented by several custom QML types connected together through QML features like bindings and signals, and made available to the QML runtime through a plugin. diff --git a/doc/src/declarative/qtbinding.qdoc b/doc/src/declarative/qtbinding.qdoc index 8a969eb..cd50503 100644 --- a/doc/src/declarative/qtbinding.qdoc +++ b/doc/src/declarative/qtbinding.qdoc @@ -31,7 +31,7 @@ \title Using QML in C++ Applications QML is designed to be easily extensible from C++. The classes in the -QtDeclarative module allow QML components to be loaded and manipulated from C++, and through +Qt Declarative module allow QML components to be loaded and manipulated from C++, and through Qt's \l{The Meta-Object System}{meta-object system}, QML and C++ objects can easily communicate through Qt signals and slots. In addition, QML plugins can be written to create reusable QML components for distribution. @@ -41,20 +41,20 @@ You may want to mix QML and C++ for a number of reasons. For example: \list \o To use functionality defined in a C++ source (for example, when using a C++ Qt-based data model, or calling functions in a third-party C++ library) -\o To access functionality in the QtDeclarative module (for example, to dynamically generate +\o To access functionality in the Qt Declarative module (for example, to dynamically generate images using QDeclarativeImageProvider) \o To write your own QML elements (whether for your applications, or for distribution to others) \endlist -To use the QtDeclarative module, you must include and link to the module appropriately, as shown on +To use the Qt Declarative module, you must include and link to the module appropriately, as shown on the \l {QtDeclarative}{module index page}. The \l {Qt Declarative UI Runtime} documentation shows how to build a basic C++ application that uses this module. \section1 Core module classes -The QtDeclarative module provides a set of C++ APIs for extending your QML applications from C++ and -embedding QML into C++ applications. There are several core classes in the QtDeclarative module +The Qt Declarative module provides a set of C++ APIs for extending your QML applications from C++ and +embedding QML into C++ applications. There are several core classes in the Qt Declarative module that provide the essential capabilities for doing this. These are: \list @@ -520,7 +520,7 @@ a QColor-type property or to call a C++ function that requires a QColor paramete \section1 Writing QML plugins -The QtDeclarative module includes the QDeclarativeExtensionPlugin class, which is an abstract +The Qt Declarative module includes the QDeclarativeExtensionPlugin class, which is an abstract class for writing QML plugins. This allows QML extension types to be dynamically loaded into QML applications. diff --git a/doc/src/declarative/qtdeclarative.qdoc b/doc/src/declarative/qtdeclarative.qdoc index 7ecdc53..f2b2032 100644 --- a/doc/src/declarative/qtdeclarative.qdoc +++ b/doc/src/declarative/qtdeclarative.qdoc @@ -27,7 +27,7 @@ /*! \module QtDeclarative - \title QtDeclarative Module + \title Qt Declarative Module \ingroup modules \brief The Qt Declarative module provides a declarative framework diff --git a/doc/src/getting-started/gettingstartedqml.qdoc b/doc/src/getting-started/gettingstartedqml.qdoc index 54fa098..b767587 100644 --- a/doc/src/getting-started/gettingstartedqml.qdoc +++ b/doc/src/getting-started/gettingstartedqml.qdoc @@ -42,7 +42,7 @@ installation instructions and requirements for different platforms. Qt Quick includes a declarative language called - \l{Introduction to the QML language}{QML}, the \l{QtDeclarative Module}, and + \l{Introduction to the QML language}{QML}, the \l{Qt Declarative Module}, and \l{QML Viewer}. \section1 QML to Build User Interfaces diff --git a/doc/src/qt4-intro.qdoc b/doc/src/qt4-intro.qdoc index 2384051..62decbb 100644 --- a/doc/src/qt4-intro.qdoc +++ b/doc/src/qt4-intro.qdoc @@ -466,7 +466,7 @@ collaborate tightly and create animated and fluid user experiences, using existing knowledge in script language and design. - \i QtDeclarative is a C++ library that provides the underlying engine, + \i Qt Declarative is a C++ library that provides the underlying engine, which translates the declarative description of the UI in QML into items on a QGraphicsScene. The library also provides APIs to bind custom C++ types and elements to QML, and to connect the QML UI with -- cgit v0.12 From 013fe9236fbc54eb40a19461cfa65d5fb8334f06 Mon Sep 17 00:00:00 2001 From: Morten Engvoldsen Date: Mon, 15 Nov 2010 18:41:15 +0100 Subject: Doc: correcting heading - Beginning Qt Quick - into - Intro to Qt Quick --- doc/src/declarative/declarativeui.qdoc | 2 +- doc/src/declarative/qml-intro.qdoc | 2 +- doc/src/declarative/qmlinuse.qdoc | 499 +++++++++++++++++++++++++++++++++ 3 files changed, 501 insertions(+), 2 deletions(-) create mode 100644 doc/src/declarative/qmlinuse.qdoc diff --git a/doc/src/declarative/declarativeui.qdoc b/doc/src/declarative/declarativeui.qdoc index eb469d6..01e1302 100644 --- a/doc/src/declarative/declarativeui.qdoc +++ b/doc/src/declarative/declarativeui.qdoc @@ -77,7 +77,7 @@ Module. \o \l{Introduction to the QML language} \o \l{QML for Qt Programmers} \o \l{Getting Started Programming with QML} -\o \l{Beginning Qt Quick} +\o \l{Intro to Qt Quick} \endlist \list diff --git a/doc/src/declarative/qml-intro.qdoc b/doc/src/declarative/qml-intro.qdoc index f891e01..e02ce8f 100644 --- a/doc/src/declarative/qml-intro.qdoc +++ b/doc/src/declarative/qml-intro.qdoc @@ -29,7 +29,7 @@ /*! \page qml-intro.html -\title Beginning Qt Quick +\title Intro to Qt Quick \section1 Overview diff --git a/doc/src/declarative/qmlinuse.qdoc b/doc/src/declarative/qmlinuse.qdoc new file mode 100644 index 0000000..90ce02c --- /dev/null +++ b/doc/src/declarative/qmlinuse.qdoc @@ -0,0 +1,499 @@ +/**************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:FDL$ +** Commercial Usage +** Licensees holding valid Qt Commercial licenses may use this file in +** accordance with the Qt Commercial License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in a +** written agreement between you and Nokia. +** +** GNU Free Documentation License +** Alternatively, this file may be used under the terms of the GNU Free +** Documentation License version 1.3 as published by the Free Software +** Foundation and appearing in the file included in the packaging of this +** file. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/*! +\page qmlinuse.html +\title Using QML elements + +\raw HTML +
+ +
+

+ Groups Of Related QML Elements

+

+ QML Elements are grouped by their respective functionalities. Certain elements are + suited for building complex components while other elements strictly dictate appearances + and color.

+
+
+

+ add something about elements in use in general

+
+
+ +
+
+
+
+ +
+
+
+
+ +

+ image heading

+ +

+ img descr.

+
+ +
+
+

Basic QML Elements

+

+ Basic elements can be extended to form more complex elements.

+ Elements: +
    +
  • Item Element + - The Item is the most basic of all visual items in QML. Many visual elements inherit + properties from the Item element.
  • +
  • Component Element + - The Component element encapsulates a QML component definition.
  • +
+
+
+ +
+
+
+
+ +

+ image heading

+ +

+ img descr.

+
+ +
+
+

QML Visual Elements

+

+ Visual elements offer various interactive and graphical functionalities. Visual + elements can directly set properties that dictate appearances.

+ Elements: + +
+
+ +
+
+
+
+ +

+ image heading

+ +

+ img descr.

+
+ +
+
+

QML Animation and Transition Elements

+

+ Animation and transition elements control animation behaviors. Animations can run + in parallel or in series for different value types. +

+ Elements: + +
+
+ +
+
+
+
+ +

+ image heading

+ +

+ img descr.

+
+ +
+
+

QML Interaction Elements

+

+ These elements define basic interactions such as touch movements and focus management.

+ Elements: + +
+
+ +
+
+
+
+ +

+ image heading

+ +

+ img descr.

+
+ +
+
+

QML Event Elements

+

+ Key and mouse events information are provided in these event elements.

+ Elements: +
    +
  • KeyEvent Element - The KeyEvent + object provides information about a key event.
  • +
  • MouseEvent Element - The MouseEvent + object provides information about a mouse event.
  • +
+
+
+ +
+
+
+
+ +

+ image heading

+ +

+ img descr.

+
+ +
+
+

QML Positioning Elements

+

+ Using positioning elements, layouts can be defined and their children accessed through + an index.

+ Elements: +
    +
  • Column Element - The Column + item arranges its children vertically.
  • +
  • Flow Element - The Flow item + arranges its children side by side, wrapping as necessary.
  • +
  • Grid Element - The Grid item + positions its children in a grid.
  • +
  • Row Element - The Row item + arranges its children horizontally.
  • +
  • Repeater Element - The Repeater element allows you to repeat an Item-based component using a model.
  • +
+
+
+ +
+
+
+
+ +

+ image heading

+ +

+ img descr.

+
+ +
+
+ +

QML State Elements

+

+ States and groups of states are formed using state elements.

+ Elements: +
    +
  • AnchorChanges Element - The AnchorChanges element allows you to change the anchors of an item in a state.
  • +
  • ParentChange Element - The ParentChange element allows you to reparent an Item in a state change.
  • +
  • PropertyChanges Element - The PropertyChanges element describes new property bindings or values for a state.
  • +
  • State Element - The State + element defines configurations of objects and properties.
  • +
  • StateChangeScript Element - The StateChangeScript element allows you to run a script in a state.
  • +
  • StateGroup Element - The StateGroup element provides state support for non-Item elements.
  • +
+
+
+ +
+
+
+
+ +

+ image heading

+ +

+ img descr.

+
+ +
+
+

QML Transform Elements

+

+ Advanced handling of transformations is controlled in transform elements.

+ Elements: +
    +
  • Rotation Element - The Rotation object provides a way to rotate an Item.
  • +
  • Scale Element - The Scale element provides a way to scale an Item.
  • +
  • Transform Element - The Transform element provide a way of building advanced transformations on Items.
  • +
  • Translate Element - The Translate object provides a way to move an Item without changing its x or y properties.
  • +
+
+
+ +
+
+
+
+ +

+ image heading

+ +

+ img descr.

+
+ +
+
+

QML Utility Elements

+

+ These elements handle assorted operations such as event timing, Qt enumerations, + and font loading.

+ Elements: +
    +
  • Binding Element - The Binding element allows arbitrary property bindings to be created.
  • +
  • Connections Element - A Connections element describes generalized connections to signals.
  • +
  • DoubleValidator Element - Provides a validator for non-integer numbers.
  • +
  • FontLoader Element - The FontLoader element allows fonts to be loaded by name or URL.
  • +
  • IntValidator Element - This element provides a validator for integer values.
  • +
  • LayoutItem Element - The LayoutItem element allows declarative UI elements to be placed inside Qt's Graphics View layouts.
  • +
  • Loader Element - The Loader item allows dynamically loading an Item-based subtree from a URL or Component.
  • +
  • Package Element - Package provides a bundle for shared contexts in multiple views.
  • +
  • Qt Element - The QML global Qt object provides useful enums and functions from Qt.
  • +
  • QtObject Element - The QtObject element is the most basic element in QML.
  • +
  • RegExpValidator Element - This element provides a validator for regular expressions.
  • +
  • SystemPalette Element - The SystemPalette element provides access to the Qt palettes.
  • +
  • Timer Element - The Timer item triggers a handler at a specified interval.
  • +
  • WorkerScript Element - The WorkerScript element enables the use of threads in QML.
  • +
+
+
+ +
+
+
+
+ +

+ image heading

+ +

+ img descr.

+
+ +
+
+

Models and View Elements

+

+ Models and views are used to organize data and control their layouts using delegates. + Models dictate the data formation and views control the layouts of data in the model.

+ View Elements: +
    +
  • GridView Element - The GridView item provides a grid view of items provided by a model.
  • +
  • ListView Element - The ListView item provides a list view of items provided by a model.
  • +
  • PathView Element - The PathView element lays out model-provided items on a path.
  • +
  • WebView Element - The WebView item allows you to add Web content to a canvas.
  • +
+ Model Elements: + +
+
+ +
+
+
+
+ +

+ image heading

+ +

+ img descr.

+
+ +
+
+

Paths

+

+ QML components can be arranged along paths. Path elements allow control over different + path types.

+ Elements: + +
+
+ +
+
+
+
+ +

+ image heading

+ +

+ img descr.

+
+ +
+
+

Particle Elements

+

+ Particle effects are declared and controlled using particle elements.

+ Elements: + +
+
+ +
+
+
+
+ +

+ image heading

+ +

+ img descr.

+
+ +
+
+

Bridge Elements

+

+ Bridge elements allow direct communication between C++ and QML entities.

+ Elements: +
    +
  • LayoutItem Element - The LayoutItem element allows declarative UI elements to be placed inside Qt's Graphics View layouts.
  • +
+
+
+ +\endraw + + + +*/ + -- cgit v0.12 From 515fd562d87290c3fc0eb45817434dd0744d346e Mon Sep 17 00:00:00 2001 From: Miikka Heikkinen Date: Mon, 15 Nov 2010 14:15:25 +0200 Subject: Use include(original mkspec) instead of copying of mkspec to default Having QMAKESPEC_ORIGINAL at the end of the default qmake.conf sets the mkspec too late for scope checks in symbian-mmp.conf and related files. Fixed by changing how default mkspec is handled: it is no longer simply copied over to mkspecs/default by configure but rather included with include statement in the generated mkspecs/default/qmake.conf after setting of QMAKESPEC_ORIGINAL value. This should also fix any issues with relative includes in mkspecs used as default that are not on same level as mkspecs/default folder. Task-number: QTBUG-15159 Reviewed-by: Oswald Buddenhagen Reviewed-by: Joerg Bornemann --- tools/configure/configureapp.cpp | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/tools/configure/configureapp.cpp b/tools/configure/configureapp.cpp index 3808c4e..3c12eb9 100644 --- a/tools/configure/configureapp.cpp +++ b/tools/configure/configureapp.cpp @@ -3227,7 +3227,8 @@ void Configure::generateConfigfiles() } // Copy configured mkspec to default directory, but remove the old one first, if there is any - QString defSpec = buildPath + "/mkspecs/default"; + QString mkspecsPath = buildPath + "/mkspecs"; + QString defSpec = mkspecsPath + "/default"; QFileInfo defSpecInfo(defSpec); if (defSpecInfo.exists()) { if (!Environment::rmdir(defSpec)) { @@ -3237,21 +3238,22 @@ void Configure::generateConfigfiles() } } - QString spec = dictionary.contains("XQMAKESPEC") ? dictionary["XQMAKESPEC"] : dictionary["QMAKESPEC"]; - QString pltSpec = sourcePath + "/mkspecs/" + spec; - if (!Environment::cpdir(pltSpec, defSpec)) { - cout << "Couldn't update default mkspec! Does " << qPrintable(pltSpec) << " exist?" << endl; + QDir mkspecsDir(mkspecsPath); + if (!mkspecsDir.mkdir("default")) { + cout << "Couldn't create default mkspec dir!" << endl; dictionary["DONE"] = "error"; return; } + QString spec = dictionary.contains("XQMAKESPEC") ? dictionary["XQMAKESPEC"] : dictionary["QMAKESPEC"]; + QString pltSpec = sourcePath + "/mkspecs/" + spec; outName = defSpec + "/qmake.conf"; - ::SetFileAttributes((wchar_t*)outName.utf16(), FILE_ATTRIBUTE_NORMAL); QFile qmakeConfFile(outName); - if (qmakeConfFile.open(QFile::Append | QFile::WriteOnly | QFile::Text)) { + if (qmakeConfFile.open(QFile::WriteOnly | QFile::Text)) { QTextStream qmakeConfStream; qmakeConfStream.setDevice(&qmakeConfFile); - qmakeConfStream << endl << "QMAKESPEC_ORIGINAL=" << pltSpec << endl; + qmakeConfStream << "QMAKESPEC_ORIGINAL=" << pltSpec << endl << endl; + qmakeConfStream << "include(" << pltSpec << "/qmake.conf)" << endl; qmakeConfStream.flush(); qmakeConfFile.close(); } -- cgit v0.12 From a40e77495612db0b89730debbacc585a22d0eb3a Mon Sep 17 00:00:00 2001 From: Eskil Abrahamsen Blomfeldt Date: Tue, 16 Nov 2010 13:27:57 +0100 Subject: Fix possible missing glyphs in text when using GL engine If you create/destroy gl contexts a lot, you may sometimes get a new context with the same pointer as a destroyed context. When you look up the glyph cache in the font engine using the context pointer as a key, you will then get a glyph cache which contains no valid data. We need to reset the glyph cache completely in this case and set up bindings for the new context so that the glyph cache can be repopulated and reused. Note that there is a different solution for this in Qt 4.8, so this is temporary solution for the Qt 4.7.x series. Task-number: QT-4162 Reviewed-by: Fabien Freling --- src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp | 2 ++ src/opengl/gl2paintengineex/qtextureglyphcache_gl.cpp | 9 ++++++++- src/opengl/gl2paintengineex/qtextureglyphcache_gl_p.h | 15 ++++++++++++++- 3 files changed, 24 insertions(+), 2 deletions(-) diff --git a/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp b/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp index 1dcb773..73915cb 100644 --- a/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp +++ b/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp @@ -1479,6 +1479,8 @@ void QGL2PaintEngineExPrivate::drawCachedGlyphs(QFontEngineGlyphCache::Type glyp if (!cache || cache->cacheType() != glyphType) { cache = new QGLTextureGlyphCache(ctx, glyphType, QTransform()); staticTextItem->fontEngine()->setGlyphCache(ctx, cache); + } else if (cache->context() == 0) { // Old context has been destroyed, new context has same ptr value + cache->setContext(ctx); } bool recreateVertexArrays = false; diff --git a/src/opengl/gl2paintengineex/qtextureglyphcache_gl.cpp b/src/opengl/gl2paintengineex/qtextureglyphcache_gl.cpp index 919c542..28e8c40 100644 --- a/src/opengl/gl2paintengineex/qtextureglyphcache_gl.cpp +++ b/src/opengl/gl2paintengineex/qtextureglyphcache_gl.cpp @@ -54,11 +54,18 @@ extern Q_GUI_EXPORT bool qt_cleartype_enabled; QGLTextureGlyphCache::QGLTextureGlyphCache(QGLContext *context, QFontEngineGlyphCache::Type type, const QTransform &matrix) : QImageTextureGlyphCache(type, matrix) - , ctx(context) + , ctx(0) , m_width(0) , m_height(0) , m_filterMode(Nearest) { + setContext(context); +} + +void QGLTextureGlyphCache::setContext(QGLContext *context) +{ + ctx = context; + // broken FBO readback is a bug in the SGX 1.3 and 1.4 drivers for the N900 where // copying between FBO's is broken if the texture is either GL_ALPHA or POT. The // workaround is to use a system-memory copy of the glyph cache for this device. diff --git a/src/opengl/gl2paintengineex/qtextureglyphcache_gl_p.h b/src/opengl/gl2paintengineex/qtextureglyphcache_gl_p.h index e22146d..fa2b091 100644 --- a/src/opengl/gl2paintengineex/qtextureglyphcache_gl_p.h +++ b/src/opengl/gl2paintengineex/qtextureglyphcache_gl_p.h @@ -90,6 +90,9 @@ public: FilterMode filterMode() const { return m_filterMode; } void setFilterMode(FilterMode m) { m_filterMode = m; } + void setContext(QGLContext *context); + QGLContext *context() const { return ctx; } + public Q_SLOTS: void contextDestroyed(const QGLContext *context) { if (context == ctx) { @@ -98,10 +101,20 @@ public Q_SLOTS: // the context may not be current, so we cannot directly // destroy the fbo and texture here, but since the context // is about to be destroyed, the GL server will do the - // clean up for us anyway + // clean up for us anyway. We reset everything, so that the + // glyph cache object can be reused later by setting a new + // context on it. m_fbo = 0; m_texture = 0; ctx = 0; + m_width = 0; + m_height = 0; + m_w = 0; + m_h = 0; + m_cx = 0; + m_cy = 0; + m_currentRowHeight = 0; + coords.clear(); } else { // since the context holding the texture is shared, and // about to be destroyed, we have to transfer ownership -- cgit v0.12 From e963a1365d495649a1c8930f4776c78781218881 Mon Sep 17 00:00:00 2001 From: Sergio Ahumada Date: Tue, 16 Nov 2010 21:47:14 +0100 Subject: Doc: Fixing typo --- src/gui/graphicsview/qgraphicstransform.cpp | 2 +- src/gui/kernel/qapplication_win.cpp | 4 ++-- src/gui/kernel/qclipboard_mac.cpp | 2 +- src/gui/kernel/qevent.cpp | 2 +- src/gui/kernel/qgesturemanager.cpp | 2 +- src/gui/kernel/qgesturemanager_p.h | 2 +- src/gui/kernel/qguiplatformplugin.cpp | 2 +- src/gui/kernel/qkeymapper_mac.cpp | 2 +- src/gui/kernel/qkeysequence.cpp | 2 +- src/gui/kernel/qwidget.cpp | 4 ++-- src/gui/kernel/qwidget_s60.cpp | 2 +- src/gui/kernel/qx11embed_x11.cpp | 2 +- src/gui/util/qundostack.cpp | 2 +- src/network/ssl/qsslsocket_openssl.cpp | 2 +- src/plugins/bearer/symbian/symbianengine.cpp | 2 +- src/plugins/graphicssystems/meego/qmeegographicssystem.cpp | 2 +- src/script/api/qscriptcontextinfo.cpp | 2 +- src/xmlpatterns/expr/qarithmeticexpression_p.h | 2 +- tests/auto/collections/tst_collections.cpp | 2 +- tools/assistant/tools/assistant/helpenginewrapper.cpp | 2 +- 20 files changed, 22 insertions(+), 22 deletions(-) diff --git a/src/gui/graphicsview/qgraphicstransform.cpp b/src/gui/graphicsview/qgraphicstransform.cpp index 1f155c6..d495da2 100644 --- a/src/gui/graphicsview/qgraphicstransform.cpp +++ b/src/gui/graphicsview/qgraphicstransform.cpp @@ -54,7 +54,7 @@ instances to one QGraphicsItem. Each QGraphicsTransform is applied in order, one at a time, to the QGraphicsItem it's assigned to. - QGraphicsTransform is particularily useful for animations. Whereas + QGraphicsTransform is particularly useful for animations. Whereas QGraphicsItem::setTransform() lets you assign any transform directly to an item, there is no direct way to interpolate between two different transformations (e.g., when transitioning between two states, each for diff --git a/src/gui/kernel/qapplication_win.cpp b/src/gui/kernel/qapplication_win.cpp index 78028eb..10c4ed6 100644 --- a/src/gui/kernel/qapplication_win.cpp +++ b/src/gui/kernel/qapplication_win.cpp @@ -3269,7 +3269,7 @@ bool QETWidget::translateMouseEvent(const MSG &msg) if (type == QEvent::MouseButtonPress && QApplication::activePopupWidget() != activePopupWidget && replayPopupMouseEvent) { - // the popup dissappeared. Replay the event + // the popup disappeared. Replay the event QWidget* w = QApplication::widgetAt(gpos.x, gpos.y); if (w && !QApplicationPrivate::isBlockedByModal(w)) { Q_ASSERT(w->testAttribute(Qt::WA_WState_Created)); @@ -3506,7 +3506,7 @@ static void tabletInit(const quint64 uniqueId, const UINT csr_type, HCTX hTab) } #endif // QT_NO_TABLETEVENT -// Update the "dynamic" informations of a cursor device (pen, airbrush, etc). +// Update the "dynamic" information of a cursor device (pen, airbrush, etc). // The dynamic information is the information of QTabletDeviceData that can change // in time (eraser or pen if a device is turned around). #ifndef QT_NO_TABLETEVENT diff --git a/src/gui/kernel/qclipboard_mac.cpp b/src/gui/kernel/qclipboard_mac.cpp index 49a6cc8..482a3a3 100644 --- a/src/gui/kernel/qclipboard_mac.cpp +++ b/src/gui/kernel/qclipboard_mac.cpp @@ -623,7 +623,7 @@ QMacPasteboard::sync() const #ifdef DEBUG_PASTEBOARD if(fromGlobal) - qDebug("Pasteboard: Syncronize!"); + qDebug("Pasteboard: Synchronize!"); #endif return fromGlobal; } diff --git a/src/gui/kernel/qevent.cpp b/src/gui/kernel/qevent.cpp index eade02e..7fdb926 100644 --- a/src/gui/kernel/qevent.cpp +++ b/src/gui/kernel/qevent.cpp @@ -1970,7 +1970,7 @@ void QInputMethodEvent::setCommitString(const QString &commitString, int replace is usually given by a wheel on 4D mouse. If the device does not support a Z-axis, pass zero here. - The \a tangentialPressure paramater contins the tangential pressure of an air + The \a tangentialPressure parameter contins the tangential pressure of an air brush. If the device does not support tangential pressure, pass 0 here. \a rotation contains the device's rotation in degrees. 4D mice support diff --git a/src/gui/kernel/qgesturemanager.cpp b/src/gui/kernel/qgesturemanager.cpp index 9519447..46450b1 100644 --- a/src/gui/kernel/qgesturemanager.cpp +++ b/src/gui/kernel/qgesturemanager.cpp @@ -189,7 +189,7 @@ void QGestureManager::cleanupCachedGestures(QObject *target, Qt::GestureType typ QGesture *QGestureManager::getState(QObject *object, QGestureRecognizer *recognizer, Qt::GestureType type) { // if the widget is being deleted we should be careful not to - // create a new state, as it will create QWeakPointer which doesnt work + // create a new state, as it will create QWeakPointer which doesn't work // from the destructor. if (object->isWidgetType()) { if (static_cast(object)->d_func()->data.in_destructor) diff --git a/src/gui/kernel/qgesturemanager_p.h b/src/gui/kernel/qgesturemanager_p.h index a5a3482..92310f5 100644 --- a/src/gui/kernel/qgesturemanager_p.h +++ b/src/gui/kernel/qgesturemanager_p.h @@ -101,7 +101,7 @@ private: NotGesture, MaybeGesture // this means timers are up and waiting for some // more events, and input events are handled by - // gesture recognizer explicitely + // gesture recognizer explicitly } state; struct ObjectGesture diff --git a/src/gui/kernel/qguiplatformplugin.cpp b/src/gui/kernel/qguiplatformplugin.cpp index 2dd251b..c80c6d3 100644 --- a/src/gui/kernel/qguiplatformplugin.cpp +++ b/src/gui/kernel/qguiplatformplugin.cpp @@ -187,7 +187,7 @@ QString QGuiPlatformPlugin::styleName() #endif } -/* return an aditional default palette (only work on X11) */ +/* return an additional default palette (only work on X11) */ QPalette QGuiPlatformPlugin::palette() { #ifdef Q_WS_X11 diff --git a/src/gui/kernel/qkeymapper_mac.cpp b/src/gui/kernel/qkeymapper_mac.cpp index 300e5ca..b8f08bf 100644 --- a/src/gui/kernel/qkeymapper_mac.cpp +++ b/src/gui/kernel/qkeymapper_mac.cpp @@ -765,7 +765,7 @@ bool QKeyMapperPrivate::translateKeyEvent(QWidget *widget, EventHandlerCallRef e &handled_event) == false) return handled_event; QString text(ourChar); - /* This is actually wrong - but unfortunatly it is the best that can be + /* This is actually wrong - but unfortunately it is the best that can be done for now because of the Control/Meta mapping problems */ if (modifiers & (Qt::ControlModifier | Qt::MetaModifier) && !qApp->testAttribute(Qt::AA_MacDontSwapCtrlAndMeta)) { diff --git a/src/gui/kernel/qkeysequence.cpp b/src/gui/kernel/qkeysequence.cpp index 50b2354..bf3eddd 100644 --- a/src/gui/kernel/qkeysequence.cpp +++ b/src/gui/kernel/qkeysequence.cpp @@ -1105,7 +1105,7 @@ QKeySequence QKeySequence::mnemonic(const QString &text) #else found = true; } else { - qWarning("QKeySequence::mnemonic: \"%s\" contains multiple occurences of '&'", qPrintable(text)); + qWarning("QKeySequence::mnemonic: \"%s\" contains multiple occurrences of '&'", qPrintable(text)); #endif } } diff --git a/src/gui/kernel/qwidget.cpp b/src/gui/kernel/qwidget.cpp index e22ec55..39c734e 100644 --- a/src/gui/kernel/qwidget.cpp +++ b/src/gui/kernel/qwidget.cpp @@ -8836,7 +8836,7 @@ void QWidget::mousePressEvent(QMouseEvent *event) QWidget* w; while ((w = QApplication::activePopupWidget()) && w != this){ w->close(); - if (QApplication::activePopupWidget() == w) // widget does not want to dissappear + if (QApplication::activePopupWidget() == w) // widget does not want to disappear w->hide(); // hide at least } if (!rect().contains(event->pos())){ @@ -9305,7 +9305,7 @@ void QWidget::setInputMethodHints(Qt::InputMethodHints hints) #ifndef QT_NO_IM Q_D(QWidget); d->imHints = hints; - // Optimisation to update input context only it has already been created. + // Optimization to update input context only it has already been created. if (d->ic || qApp->d_func()->inputContext) { QInputContext *ic = inputContext(); if (ic) diff --git a/src/gui/kernel/qwidget_s60.cpp b/src/gui/kernel/qwidget_s60.cpp index cf4bdf1..97917ba 100644 --- a/src/gui/kernel/qwidget_s60.cpp +++ b/src/gui/kernel/qwidget_s60.cpp @@ -57,7 +57,7 @@ #include #endif -// This is necessary in order to be able to perform delayed invokation on slots +// This is necessary in order to be able to perform delayed invocation on slots // which take arguments of type WId. One example is // QWidgetPrivate::_q_delayedDestroy, which is used to delay destruction of // CCoeControl objects until after the CONE event handler has finished running. diff --git a/src/gui/kernel/qx11embed_x11.cpp b/src/gui/kernel/qx11embed_x11.cpp index 9f1b1f8..e6e3bfb 100644 --- a/src/gui/kernel/qx11embed_x11.cpp +++ b/src/gui/kernel/qx11embed_x11.cpp @@ -1136,7 +1136,7 @@ void QX11EmbedContainer::paintEvent(QPaintEvent *) /*! \internal - Returns wether or not the windows' embedded flag is set. + Returns whether or not the windows' embedded flag is set. */ bool QX11EmbedContainerPrivate::isEmbedded() const { diff --git a/src/gui/util/qundostack.cpp b/src/gui/util/qundostack.cpp index 919ac3c..04cfca9 100644 --- a/src/gui/util/qundostack.cpp +++ b/src/gui/util/qundostack.cpp @@ -441,7 +441,7 @@ bool QUndoStackPrivate::checkUndoLimit() /*! Constructs an empty undo stack with the parent \a parent. The - stack will initally be in the clean state. If \a parent is a + stack will initially be in the clean state. If \a parent is a QUndoGroup object, the stack is automatically added to the group. \sa push() diff --git a/src/network/ssl/qsslsocket_openssl.cpp b/src/network/ssl/qsslsocket_openssl.cpp index 70ef7ba..0479d83 100644 --- a/src/network/ssl/qsslsocket_openssl.cpp +++ b/src/network/ssl/qsslsocket_openssl.cpp @@ -728,7 +728,7 @@ void CSymbianCertificateRetriever::RunL() if (iStatus.Int() == KErrNone) iCertificates->append(iCertificateData); else - qWarning() << "CSymbianCertificateRetriever: failed to retreive a certificate, error " << iStatus.Int(); + qWarning() << "CSymbianCertificateRetriever: failed to retrieve a certificate, error " << iStatus.Int(); GetCertificateL(); break; } diff --git a/src/plugins/bearer/symbian/symbianengine.cpp b/src/plugins/bearer/symbian/symbianengine.cpp index 33fa508..f025d86 100644 --- a/src/plugins/bearer/symbian/symbianengine.cpp +++ b/src/plugins/bearer/symbian/symbianengine.cpp @@ -981,7 +981,7 @@ void SymbianEngine::RunL() QMutexLocker locker(&mutex); if (iStatus != KErrCancel) { - // By default, start relistening notifications. Stop only if interesting event occured. + // By default, start relistening notifications. Stop only if interesting event occurred. iWaitingCommsDatabaseNotifications = true; RDbNotifier::TEvent event = STATIC_CAST(RDbNotifier::TEvent, iStatus.Int()); switch (event) { diff --git a/src/plugins/graphicssystems/meego/qmeegographicssystem.cpp b/src/plugins/graphicssystems/meego/qmeegographicssystem.cpp index 063af13..507f70b 100644 --- a/src/plugins/graphicssystems/meego/qmeegographicssystem.cpp +++ b/src/plugins/graphicssystems/meego/qmeegographicssystem.cpp @@ -83,7 +83,7 @@ QWindowSurface* QMeeGoGraphicsSystem::createWindowSurface(QWidget *widget) const QPixmapData *QMeeGoGraphicsSystem::createPixmapData(QPixmapData::PixelType type) const { // Long story short: without this it's possible to hit an - // unitialized paintDevice due to a Qt bug too complex to even + // uninitialized paintDevice due to a Qt bug too complex to even // explain here... not to mention fix without going crazy. // MDK QGLShareContextScope ctx(qt_gl_share_widget()->context()); diff --git a/src/script/api/qscriptcontextinfo.cpp b/src/script/api/qscriptcontextinfo.cpp index a90e014..8528dec 100644 --- a/src/script/api/qscriptcontextinfo.cpp +++ b/src/script/api/qscriptcontextinfo.cpp @@ -177,7 +177,7 @@ QScriptContextInfoPrivate::QScriptContextInfoPrivate(const QScriptContext *conte fileName = source->url(); } - // Get the others informations: + // Get the others information: JSC::JSObject *callee = frame->callee(); if (callee && callee->inherits(&JSC::InternalFunction::info)) functionName = JSC::asInternalFunction(callee)->name(frame); diff --git a/src/xmlpatterns/expr/qarithmeticexpression_p.h b/src/xmlpatterns/expr/qarithmeticexpression_p.h index 66c1f13..6ff8219 100644 --- a/src/xmlpatterns/expr/qarithmeticexpression_p.h +++ b/src/xmlpatterns/expr/qarithmeticexpression_p.h @@ -62,7 +62,7 @@ QT_BEGIN_NAMESPACE namespace QPatternist { /** - * @short Implements arithmetics, such as multiplication and substraction. + * @short Implements arithmetics, such as multiplication and subtraction. * * * Optimizations: there's some operator/value combos that are no ops. For diff --git a/tests/auto/collections/tst_collections.cpp b/tests/auto/collections/tst_collections.cpp index f81535e..43e1a52 100644 --- a/tests/auto/collections/tst_collections.cpp +++ b/tests/auto/collections/tst_collections.cpp @@ -1222,7 +1222,7 @@ void tst_Collections::vector() } } - // this used to trigger an unitialized read in valgrind + // this used to trigger an uninitialized read in valgrind QVector foo; foo.resize(144); diff --git a/tools/assistant/tools/assistant/helpenginewrapper.cpp b/tools/assistant/tools/assistant/helpenginewrapper.cpp index a53a9ee..748ad2c 100644 --- a/tools/assistant/tools/assistant/helpenginewrapper.cpp +++ b/tools/assistant/tools/assistant/helpenginewrapper.cpp @@ -144,7 +144,7 @@ HelpEngineWrapper::HelpEngineWrapper(const QString &collectionFile) /* * Otherwise we will waste time if several new docs are found, - * because we will start to index them, only to be interupted + * because we will start to index them, only to be interrupted * by the next request. Also, there is a nasty SQLITE bug that will * cause the application to hang for minutes in that case. * This call is reverted by initalDocSetupDone(), which must be -- cgit v0.12 From b2a89cf4049e425553bfe74bcb1a52433e6a13c7 Mon Sep 17 00:00:00 2001 From: Michael Dominic K Date: Wed, 17 Nov 2010 10:55:08 +0100 Subject: Send QMeeGoSwitchEvent to toplevel widgets before switching graphics system. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Merge-request: 926 Reviewed-by: Samuel Rødal --- .../qmeegographicssystemhelper.cpp | 17 ++++++ .../qmeegographicssystemhelper.pro | 4 +- .../qmeegoswitchevent.cpp | 58 +++++++++++++++++++ .../qmeegographicssystemhelper/qmeegoswitchevent.h | 65 ++++++++++++++++++++++ 4 files changed, 142 insertions(+), 2 deletions(-) create mode 100644 tools/qmeegographicssystemhelper/qmeegoswitchevent.cpp create mode 100644 tools/qmeegographicssystemhelper/qmeegoswitchevent.h diff --git a/tools/qmeegographicssystemhelper/qmeegographicssystemhelper.cpp b/tools/qmeegographicssystemhelper/qmeegographicssystemhelper.cpp index d348e70..b660eb3 100644 --- a/tools/qmeegographicssystemhelper/qmeegographicssystemhelper.cpp +++ b/tools/qmeegographicssystemhelper/qmeegographicssystemhelper.cpp @@ -46,6 +46,7 @@ #include #include #include "qmeegoruntime.h" +#include "qmeegoswitchevent.h" QString QMeeGoGraphicsSystemHelper::runningGraphicsSystemName() { @@ -81,8 +82,16 @@ void QMeeGoGraphicsSystemHelper::switchToMeeGo() if (QApplicationPrivate::instance()->graphics_system_name != QLatin1String("runtime")) qWarning("Can't switch to meego - switching only supported with 'runtime' graphics system."); else { + QMeeGoSwitchEvent willSwitchEvent(QLatin1String("meego"), QMeeGoSwitchEvent::WillSwitch); + foreach (QWidget *widget, QApplication::topLevelWidgets()) + QCoreApplication::sendEvent(widget, &willSwitchEvent); + QApplication *app = static_cast(QCoreApplication::instance()); app->setGraphicsSystem(QLatin1String("meego")); + + QMeeGoSwitchEvent didSwitchEvent(QLatin1String("meego"), QMeeGoSwitchEvent::DidSwitch); + foreach (QWidget *widget, QApplication::topLevelWidgets()) + QCoreApplication::sendEvent(widget, &didSwitchEvent); } } @@ -94,8 +103,16 @@ void QMeeGoGraphicsSystemHelper::switchToRaster() if (QApplicationPrivate::instance()->graphics_system_name != QLatin1String("runtime")) qWarning("Can't switch to raster - switching only supported with 'runtime' graphics system."); else { + QMeeGoSwitchEvent willSwitchEvent(QLatin1String("raster"), QMeeGoSwitchEvent::WillSwitch); + foreach (QWidget *widget, QApplication::topLevelWidgets()) + QCoreApplication::sendEvent(widget, &willSwitchEvent); + QApplication *app = static_cast(QCoreApplication::instance()); app->setGraphicsSystem(QLatin1String("raster")); + + QMeeGoSwitchEvent didSwitchEvent(QLatin1String("raster"), QMeeGoSwitchEvent::DidSwitch); + foreach (QWidget *widget, QApplication::topLevelWidgets()) + QCoreApplication::sendEvent(widget, &didSwitchEvent); } } diff --git a/tools/qmeegographicssystemhelper/qmeegographicssystemhelper.pro b/tools/qmeegographicssystemhelper/qmeegographicssystemhelper.pro index 161a31b..360847e 100644 --- a/tools/qmeegographicssystemhelper/qmeegographicssystemhelper.pro +++ b/tools/qmeegographicssystemhelper/qmeegographicssystemhelper.pro @@ -6,5 +6,5 @@ include(../../src/qbase.pri) QT += gui INCLUDEPATH += '../../src/plugins/graphicssystems/meego' -HEADERS = qmeegographicssystemhelper.h qmeegooverlaywidget.h qmeegolivepixmap.h qmeegoruntime.h qmeegolivepixmap_p.h qmeegofencesync.h qmeegofencesync_p.h -SOURCES = qmeegographicssystemhelper.cpp qmeegooverlaywidget.cpp qmeegoruntime.cpp qmeegolivepixmap.cpp qmeegographicssystemhelper.h qmeegooverlaywidget.h qmeegolivepixmap.h qmeegoruntime.h qmeegolivepixmap_p.h qmeegofencesync.h qmeegofencesync_p.h qmeegofencesync.cpp +HEADERS = qmeegographicssystemhelper.h qmeegooverlaywidget.h qmeegolivepixmap.h qmeegoruntime.h qmeegolivepixmap_p.h qmeegofencesync.h qmeegofencesync_p.h qmeegoswitchevent.h +SOURCES = qmeegographicssystemhelper.cpp qmeegooverlaywidget.cpp qmeegoruntime.cpp qmeegolivepixmap.cpp qmeegographicssystemhelper.h qmeegooverlaywidget.h qmeegolivepixmap.h qmeegoruntime.h qmeegolivepixmap_p.h qmeegofencesync.h qmeegofencesync_p.h qmeegofencesync.cpp qmeegoswitchevent.cpp qmeegoswitchevent.h diff --git a/tools/qmeegographicssystemhelper/qmeegoswitchevent.cpp b/tools/qmeegographicssystemhelper/qmeegoswitchevent.cpp new file mode 100644 index 0000000..b136ce8 --- /dev/null +++ b/tools/qmeegographicssystemhelper/qmeegoswitchevent.cpp @@ -0,0 +1,58 @@ +/**************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the plugins 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 "qmeegoswitchevent.h" + +QMeeGoSwitchEvent::QMeeGoSwitchEvent(const QString &graphicsSystemName, QMeeGoSwitchEvent::State s) : QEvent((QEvent::Type) QMeeGoSwitchEvent::SwitchEvent) +{ + name = graphicsSystemName; + switchState = s; +} + +QString QMeeGoSwitchEvent::graphicsSystemName() const +{ + return name; +} + +QMeeGoSwitchEvent::State QMeeGoSwitchEvent::state() const +{ + return switchState; +} \ No newline at end of file diff --git a/tools/qmeegographicssystemhelper/qmeegoswitchevent.h b/tools/qmeegographicssystemhelper/qmeegoswitchevent.h new file mode 100644 index 0000000..a67c6c4 --- /dev/null +++ b/tools/qmeegographicssystemhelper/qmeegoswitchevent.h @@ -0,0 +1,65 @@ +/**************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the plugins 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 +#include + +class QMeeGoSwitchEvent : public QEvent +{ +public: + enum State { + WillSwitch, + DidSwitch + }; + + enum Type { + SwitchEvent = QEvent::User + 1024 + }; + + QMeeGoSwitchEvent(const QString &graphicsSystemName, State s); + QString graphicsSystemName() const; + State state() const; + + +private: + QString name; + State switchState; +}; -- cgit v0.12 From 0091dcee679c8787f80bc2ed49f263c801779987 Mon Sep 17 00:00:00 2001 From: Michael Dominic K Date: Wed, 17 Nov 2010 10:55:09 +0100 Subject: Documentation update for new switching events. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Merge-request: 926 Reviewed-by: Samuel Rødal --- .../qmeegographicssystemhelper.h | 6 +++++ .../qmeegographicssystemhelper/qmeegoswitchevent.h | 26 +++++++++++++++++++++- 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/tools/qmeegographicssystemhelper/qmeegographicssystemhelper.h b/tools/qmeegographicssystemhelper/qmeegographicssystemhelper.h index 2baacbb..d47c829 100644 --- a/tools/qmeegographicssystemhelper/qmeegographicssystemhelper.h +++ b/tools/qmeegographicssystemhelper/qmeegographicssystemhelper.h @@ -102,6 +102,9 @@ public: When running with the 'runtime' graphics system, sets the currently active system to 'meego'. The window surface and all the resources are automatically migrated to OpenGL. Will fail if the active graphics system is not 'runtime'. + Calling this function will emit QMeeGoSwitchEvent to the top level widgets. + Two events will be emitted for each switch -- one before the switch (QMeeGoSwitchEvent::WillSwitch) + and one after the switch (QMeeGoSwitchEvent::DidSwitch). */ static void switchToMeeGo(); @@ -111,6 +114,9 @@ public: system to 'raster'. The window surface and the graphics resources (including the EGL shared image resources) are automatically migrated back to the CPU. All OpenGL resources (surface, context, cache, font cache) are automaticall anihilated. + Calling this function will emit QMeeGoSwitchEvent to the top level widgets. + Two events will be emitted for each switch -- one before the switch (QMeeGoSwitchEvent::WillSwitch) + and one after the switch (QMeeGoSwitchEvent::DidSwitch). */ static void switchToRaster(); diff --git a/tools/qmeegographicssystemhelper/qmeegoswitchevent.h b/tools/qmeegographicssystemhelper/qmeegoswitchevent.h index a67c6c4..2d8371e 100644 --- a/tools/qmeegographicssystemhelper/qmeegoswitchevent.h +++ b/tools/qmeegographicssystemhelper/qmeegoswitchevent.h @@ -42,22 +42,46 @@ #include #include +//! A custom event representing a graphics system switch. +/*! + This event is sent two times -- before the actual switch and after the switch. + The current mode of the event can be detected by looking at the State of the + event. + + The end-user application can use the event to drop it's own allocated GL resources + when going to software mode. +*/ + class QMeeGoSwitchEvent : public QEvent { public: + + //! The state represented by this event. enum State { WillSwitch, DidSwitch }; + //! The event type id to use to detect this event. enum Type { SwitchEvent = QEvent::User + 1024 }; + //! Constructor for the event. + /*! + Creates a new event with the given name and the given state. + */ QMeeGoSwitchEvent(const QString &graphicsSystemName, State s); + + //! Returns the name of the target graphics system. + /*! + Depending on the state, the name represents the system we're about to swtich to, + or the system we just switched to. + */ QString graphicsSystemName() const; - State state() const; + //! Returns the state represented by this event. + State state() const; private: QString name; -- cgit v0.12 From d68b5355b36e31dbeec2474d8469646358e0cd87 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20R=C3=B8dal?= Date: Wed, 17 Nov 2010 10:58:57 +0100 Subject: Compile fix. Not sure why this worked before. Reviewed-by: Benjamin Poulain --- src/corelib/tools/qstring.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/corelib/tools/qstring.cpp b/src/corelib/tools/qstring.cpp index d4a1248..92b54a0 100644 --- a/src/corelib/tools/qstring.cpp +++ b/src/corelib/tools/qstring.cpp @@ -3572,7 +3572,7 @@ static QByteArray toLatin1_helper(const QChar *data, int length) } length = length % 16; } -#elif QT_ALWAYS_HAVE_NEON +#elif defined(QT_ALWAYS_HAVE_NEON) // Refer to the documentation of the SSE2 implementation // this use eactly the same method as for SSE except: // 1) neon has unsigned comparison -- cgit v0.12 From 6ad33e1ff7618704fd41549780d0d0c93778364e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20R=C3=B8dal?= Date: Wed, 17 Nov 2010 13:01:38 +0100 Subject: Prevent crash in GL 2 engine when stroking null rectangle. Task-number: QTBUG-15320 Reviewed-by: Kim --- .../gl2paintengineex/qpaintengineex_opengl2.cpp | 3 +++ tests/auto/qgl/tst_qgl.cpp | 23 ++++++++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp b/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp index 73915cb..37552ac 100644 --- a/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp +++ b/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp @@ -1212,6 +1212,9 @@ void QGL2PaintEngineExPrivate::stroke(const QVectorPath &path, const QPen &pen) stroker.process(dashStroke, pen, clip); } + if (!stroker.vertexCount()) + return; + if (opaque) { prepareForDraw(opaque); setVertexAttributePointer(QT_VERTEX_COORDS_ATTR, stroker.vertices()); diff --git a/tests/auto/qgl/tst_qgl.cpp b/tests/auto/qgl/tst_qgl.cpp index e38bf42..cc2cac9 100644 --- a/tests/auto/qgl/tst_qgl.cpp +++ b/tests/auto/qgl/tst_qgl.cpp @@ -97,6 +97,7 @@ private slots: void qglContextDefaultBindTexture(); void textureCleanup(); void threadImages(); + void nullRectCrash(); }; tst_QGL::tst_QGL() @@ -2375,6 +2376,28 @@ void tst_QGL::threadImages() delete widget; } +void tst_QGL::nullRectCrash() +{ + if (!QGLFramebufferObject::hasOpenGLFramebufferObjects()) + QSKIP("QGLFramebufferObject not supported on this platform", SkipSingle); + + QGLWidget glw; + glw.makeCurrent(); + + QGLFramebufferObjectFormat fboFormat; + fboFormat.setAttachment(QGLFramebufferObject::CombinedDepthStencil); + + QGLFramebufferObject *fbo = new QGLFramebufferObject(128, 128, fboFormat); + + QPainter fboPainter(fbo); + + fboPainter.setPen(QPen(QColor(255, 127, 127, 127), 2)); + fboPainter.setBrush(QColor(127, 255, 127, 127)); + fboPainter.drawRect(QRectF()); + + fboPainter.end(); +} + class tst_QGLDummy : public QObject { Q_OBJECT -- cgit v0.12 From 0b6adc944d7da5d4b943f1bd85666af82f1450de Mon Sep 17 00:00:00 2001 From: David Boddie Date: Wed, 17 Nov 2010 13:50:20 +0100 Subject: Doc: Updated the DirectFB documentation to reflect version changes. --- doc/src/platforms/emb-directfb-EmbLinux.qdoc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/src/platforms/emb-directfb-EmbLinux.qdoc b/doc/src/platforms/emb-directfb-EmbLinux.qdoc index dbe6c14..bcc06dc 100644 --- a/doc/src/platforms/emb-directfb-EmbLinux.qdoc +++ b/doc/src/platforms/emb-directfb-EmbLinux.qdoc @@ -39,11 +39,11 @@ and generally chip vendors start out with the official version and implement their own plugins to optimize the operations their hardware supports. -We recommend using Qt 4.6 with DirectFB. DirectFB support was introduced -already into Qt for Embedded Linux as a labs project for Qt 4.3 and folded +We recommend using Qt 4.6 or later with DirectFB. Support for DirectFB was +introduced into Qt for Embedded Linux as a labs project for Qt 4.3 and folded into Qt as a screen driver for Qt 4.4, but not supported fully. In Qt 4.5, major changes were made to make it work with the optimized raster paint -engine. And in Qt 4.6 these have been further improved. +engine. These changes were further improved in Qt 4.6. \tableofcontents -- cgit v0.12 From b5d26bfb348b6a99529ecf9ab66845e7eacd4732 Mon Sep 17 00:00:00 2001 From: David Boddie Date: Wed, 17 Nov 2010 13:51:05 +0100 Subject: Doc: Minor fixes to style. --- doc/src/platforms/emb-pointer.qdoc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/src/platforms/emb-pointer.qdoc b/doc/src/platforms/emb-pointer.qdoc index 81e532f..506e9e0 100644 --- a/doc/src/platforms/emb-pointer.qdoc +++ b/doc/src/platforms/emb-pointer.qdoc @@ -105,7 +105,7 @@ {touch panels} in which case the driver must be specified explicitly to determine which device to use. - To manually specify which driver to use, set the QWS_MOUSE_PROTO + To manually specify which driver to use, set the \c QWS_MOUSE_PROTO environment variable. For example (if the current shell is bash, ksh, zsh or sh): @@ -156,7 +156,7 @@ \snippet doc/src/snippets/code/doc_src_emb-pointer.qdoc 8 To make \l{Qt for Embedded Linux} explicitly choose the tslib mouse - handler, set the QWS_MOUSE_PROTO environment variable as explained + handler, set the \c QWS_MOUSE_PROTO environment variable as explained above. \endtable -- cgit v0.12 From 78895a7ecaf6579894d88388c09be6e6368dc029 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thorbj=C3=B8rn=20Lindeijer?= Date: Tue, 16 Nov 2010 14:19:29 +0200 Subject: Fixed crash when destroying QGLWidget The QGLWidget destroys the QGLContext, which in turn destroys the bound pixmap. When this happens there may not be a current QGLContext, so check that before trying to restore it. Done-with: Gunnar Sletta Reviewed-by: Samuel --- src/opengl/qgl_p.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/opengl/qgl_p.h b/src/opengl/qgl_p.h index 4742bdb..b46d428 100644 --- a/src/opengl/qgl_p.h +++ b/src/opengl/qgl_p.h @@ -506,7 +506,8 @@ private slots: // when you come to delete the context. QGLContextPrivate::unbindPixmapFromTexture(boundPixmap); glDeleteTextures(1, &id); - oldContext->makeCurrent(); + if (oldContext) + oldContext->makeCurrent(); return; } #endif -- cgit v0.12 From 14ddf44ce2fdd7195741b9683226a3cd774e17e4 Mon Sep 17 00:00:00 2001 From: Jani Hautakangas Date: Wed, 17 Nov 2010 14:59:15 +0200 Subject: Fix for WServ 64 crash on Symbian. Crash happens if application first sets WA_OpaquePaintEvent flag and then sets WA_TranslucentBackground flag. In that case WA_TranslucentBackground flag is ineffective leading to situation where Qt Symbian adaptation tries to reset native window transparency but because native window is already opaque due to WA_OpaquePaintEvent, WServ 64 crash occurs. Task-number: QTBUG-15369 Reviewed-by: Jason Barron --- src/gui/kernel/qwidget_p.h | 1 + src/gui/kernel/qwidget_s60.cpp | 12 ++++++++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/gui/kernel/qwidget_p.h b/src/gui/kernel/qwidget_p.h index ca1e3fc..6a27469 100644 --- a/src/gui/kernel/qwidget_p.h +++ b/src/gui/kernel/qwidget_p.h @@ -226,6 +226,7 @@ struct QTLWExtra { #endif #elif defined(Q_OS_SYMBIAN) uint inExpose : 1; // Prevents drawing recursion + uint nativeWindowTransparencyEnabled : 1; // Tracks native window transparency #endif }; diff --git a/src/gui/kernel/qwidget_s60.cpp b/src/gui/kernel/qwidget_s60.cpp index cf4bdf1..6ce46d3 100644 --- a/src/gui/kernel/qwidget_s60.cpp +++ b/src/gui/kernel/qwidget_s60.cpp @@ -767,17 +767,24 @@ void QWidgetPrivate::s60UpdateIsOpaque() if (!q->testAttribute(Qt::WA_WState_Created) || !q->testAttribute(Qt::WA_TranslucentBackground)) return; + createTLExtra(); + RWindow *const window = static_cast(q->effectiveWinId()->DrawableWindow()); #ifdef Q_SYMBIAN_SEMITRANSPARENT_BG_SURFACE window->SetSurfaceTransparency(!isOpaque); + extra->topextra->nativeWindowTransparencyEnabled = !isOpaque; #else if (!isOpaque) { const TDisplayMode displayMode = static_cast(window->SetRequiredDisplayMode(EColor16MA)); - if (window->SetTransparencyAlphaChannel() == KErrNone) + if (window->SetTransparencyAlphaChannel() == KErrNone) { window->SetBackgroundColor(TRgb(255, 255, 255, 0)); - } else + extra->topextra->nativeWindowTransparencyEnabled = 1; + } + } else if (extra->topextra->nativeWindowTransparencyEnabled) { window->SetTransparentRegion(TRegionFix<1>()); + extra->topextra->nativeWindowTransparencyEnabled = 0; + } #endif } @@ -936,6 +943,7 @@ void QWidgetPrivate::registerDropSite(bool /* on */) void QWidgetPrivate::createTLSysExtra() { extra->topextra->inExpose = 0; + extra->topextra->nativeWindowTransparencyEnabled = 0; } void QWidgetPrivate::deleteTLSysExtra() -- cgit v0.12 From fd7c4c07c20eaff247be33826ae0af099c178494 Mon Sep 17 00:00:00 2001 From: Titta Heikkala Date: Wed, 17 Nov 2010 10:15:15 +0200 Subject: Correct flags for Symbian file dialogs Corrected the flags for extern functions Task-number: QT-3917 Reviewed-by: Janne Koskinen Merge-request: 918 Reviewed-by: Janne Koskinen --- src/gui/dialogs/qfiledialog.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/dialogs/qfiledialog.cpp b/src/gui/dialogs/qfiledialog.cpp index a5bff02..0b789cc 100644 --- a/src/gui/dialogs/qfiledialog.cpp +++ b/src/gui/dialogs/qfiledialog.cpp @@ -1619,7 +1619,7 @@ extern QString qt_win_get_existing_directory(const QFileDialogArgs &args); /* For Symbian file dialogs */ -#if defined(Q_WS_S60) && defined(SYMBIAN_VERSION_SYMBIAN3) +#if defined(Q_WS_S60) extern QString qtSymbianGetOpenFileName(const QString &caption, const QString &dir, const QString &filter); -- cgit v0.12 From 518b284673d66ed4a2961a88646ec012cedc96bd Mon Sep 17 00:00:00 2001 From: Titta Heikkala Date: Thu, 18 Nov 2010 11:34:13 +0200 Subject: Removed extra cpp and done changes based on comments qcolordialog_symbian.cpp is removed from dialogs.pri and string comparison corrected based on comments. Task-number: QT-3917 Reviewed-by: Janne Koskinen Merge-request: 918 Reviewed-by: Janne Koskinen --- src/gui/dialogs/dialogs.pri | 3 +-- src/gui/dialogs/qfiledialog.cpp | 9 +++------ src/gui/dialogs/qfiledialog_symbian.cpp | 22 ++++++++++------------ 3 files changed, 14 insertions(+), 20 deletions(-) diff --git a/src/gui/dialogs/dialogs.pri b/src/gui/dialogs/dialogs.pri index 483e9aa..c7cb794 100644 --- a/src/gui/dialogs/dialogs.pri +++ b/src/gui/dialogs/dialogs.pri @@ -114,8 +114,7 @@ contains(QT_CONFIG, s60) { -lplatformenv \ -lefsrv \ -lgdi - SOURCES += dialogs/qfiledialog_symbian.cpp \ - dialogs/qcolordialog_symbian.cpp + SOURCES += dialogs/qfiledialog_symbian.cpp } FORMS += dialogs/qpagesetupwidget.ui diff --git a/src/gui/dialogs/qfiledialog.cpp b/src/gui/dialogs/qfiledialog.cpp index 0b789cc..1db9789 100644 --- a/src/gui/dialogs/qfiledialog.cpp +++ b/src/gui/dialogs/qfiledialog.cpp @@ -1696,9 +1696,8 @@ QString QFileDialog::getOpenFileName(QWidget *parent, if (qt_filedialog_open_filename_hook && !(options & DontUseNativeDialog)) return qt_filedialog_open_filename_hook(parent, caption, dir, filter, selectedFilter, options); #if defined(Q_WS_S60) - if (QSysInfo::s60Version() > QSysInfo::SV_S60_5_0 && !(options & DontUseNativeDialog)) { + if (QSysInfo::s60Version() > QSysInfo::SV_S60_5_0 && !(options & DontUseNativeDialog)) return qtSymbianGetOpenFileName(caption, dir, filter); - } #endif QFileDialogArgs args; args.parent = parent; @@ -1789,9 +1788,8 @@ QStringList QFileDialog::getOpenFileNames(QWidget *parent, if (qt_filedialog_open_filenames_hook && !(options & DontUseNativeDialog)) return qt_filedialog_open_filenames_hook(parent, caption, dir, filter, selectedFilter, options); #if defined(Q_WS_S60) - if (QSysInfo::s60Version() > QSysInfo::SV_S60_5_0 && !(options & DontUseNativeDialog)) { + if (QSysInfo::s60Version() > QSysInfo::SV_S60_5_0 && !(options & DontUseNativeDialog)) return qtSymbianGetOpenFileNames(caption, dir, filter); - } #endif QFileDialogArgs args; args.parent = parent; @@ -1884,9 +1882,8 @@ QString QFileDialog::getSaveFileName(QWidget *parent, if (qt_filedialog_save_filename_hook && !(options & DontUseNativeDialog)) return qt_filedialog_save_filename_hook(parent, caption, dir, filter, selectedFilter, options); #if defined(Q_WS_S60) - if (QSysInfo::s60Version() > QSysInfo::SV_S60_5_0 && !(options & DontUseNativeDialog)) { + if (QSysInfo::s60Version() > QSysInfo::SV_S60_5_0 && !(options & DontUseNativeDialog)) return qtSymbianGetSaveFileName(caption, dir); - } #endif QFileDialogArgs args; args.parent = parent; diff --git a/src/gui/dialogs/qfiledialog_symbian.cpp b/src/gui/dialogs/qfiledialog_symbian.cpp index bd937a1..0277e1c 100644 --- a/src/gui/dialogs/qfiledialog_symbian.cpp +++ b/src/gui/dialogs/qfiledialog_symbian.cpp @@ -62,24 +62,23 @@ public: void setFilter(const QString filter) { filterList.clear(); - if (filter.left(2) == "*.") { + if (filter.left(2) == QLatin1String("*.")) { //Filter has only extensions filterList << filter.split(" "); return; - } - else { + } else { //Extensions are in parenthesis and there may be several filters - QStringList separatedFilters(filter.split(";;")); + QStringList separatedFilters(filter.split(QLatin1String(";;"))); for (int i = 0; i < separatedFilters.size(); i++) { - if (separatedFilters.at(i) == QFileDialog::tr("All Files (*)")){ - filterList << QFileDialog::tr("All Files (*)"); + if (separatedFilters.at(i).contains(QLatin1String("(*)"))) { + filterList << QLatin1String("(*)"); return; } } QRegExp rx("\\(([^\\)]*)\\)"); int pos = 0; while ((pos = rx.indexIn(filter, pos)) != -1) { - filterList << rx.cap(1).split(" "); + filterList << rx.cap(1).split(QLatin1String(" ")); pos += rx.matchedLength(); } } @@ -94,7 +93,7 @@ public: //No filter for files, all can be accepted return ETrue; } - if (filterList == QStringList(QFileDialog::tr("All Files (*)"))) { + if (filterList == QStringList(QLatin1String("(*)"))) { return ETrue; } for (int i = 0; i < filterList.size(); ++i) { @@ -142,11 +141,11 @@ static QString launchSymbianDialog(const QString dialogCaption, const QString st startFolder, NULL, NULL, titlePtr, extensionFilter); CleanupStack::Pop(extensionFilter); } - else if (dialogMode == DialogSave){ + else if (dialogMode == DialogSave) { select = AknCommonDialogsDynMem::RunSaveDlgLD(types, target, startFolder, NULL, NULL, titlePtr); } - else if (dialogMode == DialogFolder){ + else if (dialogMode == DialogFolder) { select = AknCommonDialogsDynMem::RunFolderSelectDlgLD(types, target, startFolder, 0, 0, titlePtr, NULL, NULL); } @@ -189,8 +188,7 @@ QString qtSymbianGetExistingDirectory(const QString &caption, QString folderCaption; if (!caption.isEmpty()) { folderCaption.append(caption); - } - else { + } else { // Title for folder selection dialog is mandatory folderCaption.append(QFileDialog::tr("Find Directory")); } -- cgit v0.12 From 4e73e8b530f77bf1f43042fb07038eb51cb0238f Mon Sep 17 00:00:00 2001 From: Jani Hautakangas Date: Thu, 18 Nov 2010 12:01:04 +0200 Subject: Fix for QtOpenGL RVCT4 compilation error RVCT4 has strict lookup rules. Calls from function ,that depends on a template parameter, to internal static functions must be qualified. Task-number: QTBUG-15424 Reviewed-by: Jason Barron --- src/opengl/gl2paintengineex/qtriangulator.cpp | 34 +++++++++++++-------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/src/opengl/gl2paintengineex/qtriangulator.cpp b/src/opengl/gl2paintengineex/qtriangulator.cpp index 85f604a..4c3deb6 100644 --- a/src/opengl/gl2paintengineex/qtriangulator.cpp +++ b/src/opengl/gl2paintengineex/qtriangulator.cpp @@ -339,7 +339,7 @@ static inline qint64 qPointDistanceFromLine(const QPodPoint &p, const QPodPoint static inline bool qPointIsLeftOfLine(const QPodPoint &p, const QPodPoint &v1, const QPodPoint &v2) { - return qPointDistanceFromLine(p, v1, v2) < 0; + return ::qPointDistanceFromLine(p, v1, v2) < 0; } // Return: @@ -1741,7 +1741,7 @@ bool QTriangulator::ComplexToSimple::calculateIntersection(int left, int righ Intersection intersection; intersection.leftEdge = left; intersection.rightEdge = right; - intersection.intersectionPoint = qIntersectionPoint(u1, u2, v1, v2); + intersection.intersectionPoint = ::qIntersectionPoint(u1, u2, v1, v2); if (!intersection.intersectionPoint.isValid()) return false; @@ -1767,10 +1767,10 @@ bool QTriangulator::ComplexToSimple::edgeIsLeftOfEdge(int leftEdgeIndex, int return true; if (upper.x > qMax(l.x, u.x)) return false; - qint64 d = qPointDistanceFromLine(upper, l, u); + qint64 d = ::qPointDistanceFromLine(upper, l, u); // d < 0: left, d > 0: right, d == 0: on top if (d == 0) - d = qPointDistanceFromLine(m_parent->m_vertices.at(leftEdge.lower()), l, u); + d = ::qPointDistanceFromLine(m_parent->m_vertices.at(leftEdge.lower()), l, u); return d < 0; } @@ -1814,7 +1814,7 @@ QPair::Node *, QRBTree::Node *> QTriangulator::ComplexToSim while (current) { const QPodPoint &v1 = m_parent->m_vertices.at(m_edges.at(current->data).lower()); const QPodPoint &v2 = m_parent->m_vertices.at(m_edges.at(current->data).upper()); - qint64 d = qPointDistanceFromLine(point, v1, v2); + qint64 d = ::qPointDistanceFromLine(point, v1, v2); if (d == 0) { result.first = result.second = current; break; @@ -1828,7 +1828,7 @@ QPair::Node *, QRBTree::Node *> QTriangulator::ComplexToSim while (current) { const QPodPoint &v1 = m_parent->m_vertices.at(m_edges.at(current->data).lower()); const QPodPoint &v2 = m_parent->m_vertices.at(m_edges.at(current->data).upper()); - qint64 d = qPointDistanceFromLine(point, v1, v2); + qint64 d = ::qPointDistanceFromLine(point, v1, v2); Q_ASSERT(d >= 0); if (d == 0) { result.first = current; @@ -1842,7 +1842,7 @@ QPair::Node *, QRBTree::Node *> QTriangulator::ComplexToSim while (current) { const QPodPoint &v1 = m_parent->m_vertices.at(m_edges.at(current->data).lower()); const QPodPoint &v2 = m_parent->m_vertices.at(m_edges.at(current->data).upper()); - qint64 d = qPointDistanceFromLine(point, v1, v2); + qint64 d = ::qPointDistanceFromLine(point, v1, v2); Q_ASSERT(d <= 0); if (d == 0) { result.second = current; @@ -1864,7 +1864,7 @@ QPair::Node *, QRBTree::Node *> QTriangulator::ComplexToSim while (current) { const QPodPoint &v1 = m_parent->m_vertices.at(m_edges.at(current->data).lower()); const QPodPoint &v2 = m_parent->m_vertices.at(m_edges.at(current->data).upper()); - qint64 d = qPointDistanceFromLine(point, v1, v2); + qint64 d = ::qPointDistanceFromLine(point, v1, v2); if (d == 0) break; if (d < 0) { @@ -1885,7 +1885,7 @@ QPair::Node *, QRBTree::Node *> QTriangulator::ComplexToSim while (current) { const QPodPoint &v1 = m_parent->m_vertices.at(m_edges.at(current->data).lower()); const QPodPoint &v2 = m_parent->m_vertices.at(m_edges.at(current->data).upper()); - qint64 d = qPointDistanceFromLine(point, v1, v2); + qint64 d = ::qPointDistanceFromLine(point, v1, v2); Q_ASSERT(d >= 0); if (d == 0) { current = current->left; @@ -1899,7 +1899,7 @@ QPair::Node *, QRBTree::Node *> QTriangulator::ComplexToSim while (current) { const QPodPoint &v1 = m_parent->m_vertices.at(m_edges.at(current->data).lower()); const QPodPoint &v2 = m_parent->m_vertices.at(m_edges.at(current->data).upper()); - qint64 d = qPointDistanceFromLine(point, v1, v2); + qint64 d = ::qPointDistanceFromLine(point, v1, v2); Q_ASSERT(d <= 0); if (d == 0) { current = current->right; @@ -1962,7 +1962,7 @@ void QTriangulator::ComplexToSimple::reorderEdgeListRange(QRBTree::Node template void QTriangulator::ComplexToSimple::sortEdgeList(const QPodPoint eventPoint) { - QIntersectionPoint eventPoint2 = qIntersectionPoint(eventPoint); + QIntersectionPoint eventPoint2 = ::qIntersectionPoint(eventPoint); while (!m_topIntersection.isEmpty() && m_topIntersection.top().intersectionPoint < eventPoint2) { Intersection intersection = m_topIntersection.pop(); @@ -2056,7 +2056,7 @@ void QTriangulator::ComplexToSimple::calculateIntersections() QPair::Node *, QRBTree::Node *> range = bounds(event.point); QRBTree::Node *leftNode = range.first ? m_edgeList.previous(range.first) : 0; int vertex = (event.type == Event::Upper ? m_edges.at(event.edge).upper() : m_edges.at(event.edge).lower()); - QIntersectionPoint eventPoint = qIntersectionPoint(event.point); + QIntersectionPoint eventPoint = ::qIntersectionPoint(event.point); if (range.first != 0) { splitEdgeListRange(range.first, range.second, vertex, eventPoint); @@ -2213,7 +2213,7 @@ void QTriangulator::ComplexToSimple::removeUnwantedEdgesAndConnect() while (current != b.second) { Q_ASSERT(current); Q_ASSERT(m_edges.at(current->data).node == current); - Q_ASSERT(qIntersectionPoint(event.point).isOnLine(m_parent->m_vertices.at(m_edges.at(current->data).from), m_parent->m_vertices.at(m_edges.at(current->data).to))); + Q_ASSERT(::qIntersectionPoint(event.point).isOnLine(m_parent->m_vertices.at(m_edges.at(current->data).from), m_parent->m_vertices.at(m_edges.at(current->data).to))); Q_ASSERT(m_parent->m_vertices.at(m_edges.at(current->data).from) == event.point || m_parent->m_vertices.at(m_edges.at(current->data).to) == event.point); insertEdgeIntoVectorIfWanted(orderedEdges, current->data); current = m_edgeList.next(current); @@ -2612,10 +2612,10 @@ bool QTriangulator::SimpleToMonotone::edgeIsLeftOfEdge(int leftEdgeIndex, int const Edge &rightEdge = m_edges.at(rightEdgeIndex); const QPodPoint &u = m_parent->m_vertices.at(rightEdge.upper()); const QPodPoint &l = m_parent->m_vertices.at(rightEdge.lower()); - qint64 d = qPointDistanceFromLine(m_parent->m_vertices.at(leftEdge.upper()), l, u); + qint64 d = ::qPointDistanceFromLine(m_parent->m_vertices.at(leftEdge.upper()), l, u); // d < 0: left, d > 0: right, d == 0: on top if (d == 0) - d = qPointDistanceFromLine(m_parent->m_vertices.at(leftEdge.lower()), l, u); + d = ::qPointDistanceFromLine(m_parent->m_vertices.at(leftEdge.lower()), l, u); return d < 0; } @@ -2645,7 +2645,7 @@ QRBTree::Node *QTriangulator::SimpleToMonotone::searchEdgeLeftOfPoint(in while (current) { const QPodPoint &p1 = m_parent->m_vertices.at(m_edges.at(current->data).lower()); const QPodPoint &p2 = m_parent->m_vertices.at(m_edges.at(current->data).upper()); - qint64 d = qPointDistanceFromLine(m_parent->m_vertices.at(pointIndex), p1, p2); + qint64 d = ::qPointDistanceFromLine(m_parent->m_vertices.at(pointIndex), p1, p2); if (d <= 0) { current = current->left; } else { @@ -2668,7 +2668,7 @@ void QTriangulator::SimpleToMonotone::classifyVertex(int i) const QPodPoint &p1 = m_parent->m_vertices.at(e1.from); const QPodPoint &p2 = m_parent->m_vertices.at(e2.from); const QPodPoint &p3 = m_parent->m_vertices.at(e2.to); - qint64 d = qPointDistanceFromLine(p1, p2, p3); + qint64 d = ::qPointDistanceFromLine(p1, p2, p3); Q_ASSERT(d != 0 || (!startOrSplit && !endOrMerge)); e2.type = RegularVertex; -- cgit v0.12 From 2c40c98a5b3ff4f16c4ad71b5707d5271945819e Mon Sep 17 00:00:00 2001 From: Sami Merila Date: Thu, 18 Nov 2010 12:15:03 +0200 Subject: QToolbar should fill available width on Symbian Normally QStyle provides a minimum size for a widget. However, to imitate native toolbar behavior, QToolBar should occupy available screen estate on Symbian (with QS60Style). This is only supported for horizontal QToolBars as native side does not have same functionality for vertical toolbars. QToolbar size now tries to take into account available size of parent reduced by margins (if several parents, then each can reduce the available space by their margins). Also, toolbar internal pixel metrics data (item spacing, item margins) are taken into account. Task-number: QTBUG-13120 Reviewed-by: Janne Koskinen --- src/gui/styles/qs60style.cpp | 50 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/src/gui/styles/qs60style.cpp b/src/gui/styles/qs60style.cpp index 5fe9050..5eddc98 100644 --- a/src/gui/styles/qs60style.cpp +++ b/src/gui/styles/qs60style.cpp @@ -2536,6 +2536,56 @@ QSize QS60Style::sizeFromContents(ContentsType ct, const QStyleOption *opt, if (const QStyleOptionToolButton *toolBtn = qstyleoption_cast(opt)) if (toolBtn->subControls & SC_ToolButtonMenu) sz += QSize(pixelMetric(PM_MenuButtonIndicator), 0); + + //Make toolbuttons in toolbar stretch the whole screen area + if (widget && qobject_cast(widget->parentWidget())) { + const QToolBar *tb = qobject_cast(widget->parentWidget()); + const bool parentCanGrowHorizontally = !(tb->sizePolicy().horizontalPolicy() == QSizePolicy::Fixed || + tb->sizePolicy().horizontalPolicy() == QSizePolicy::Maximum) && tb->orientation() == Qt::Horizontal; + + if (parentCanGrowHorizontally) { + int visibleButtons = 0; + //Make the auto-stretch to happen only for horizontal orientation + if (tb && tb->orientation() == Qt::Horizontal) { + QList actionList = tb->actions(); + for (int i = 0; i < actionList.count(); i++) { + if (actionList.at(i)->isVisible()) + visibleButtons++; + } + } + + if (widget->parentWidget() && visibleButtons > 0) { + QWidget *w = const_cast(widget); + int toolBarMaxWidth = 0; + int totalMargin = 0; + while (w) { + //honor fixed width parents + if (w->maximumWidth() == w->minimumWidth()) + toolBarMaxWidth = qMax(toolBarMaxWidth, w->maximumWidth()); + if (w->layout() && w->windowType() == Qt::Widget) { + totalMargin += w->layout()->contentsMargins().left() + + w->layout()->contentsMargins().right(); + } + w = w->parentWidget(); + } + totalMargin += 2 * pixelMetric(QStyle::PM_ToolBarFrameWidth); + + if (toolBarMaxWidth == 0) + toolBarMaxWidth = + QApplication::desktop()->availableGeometry(widget->parentWidget()).width(); + //Reduce the margins, toolbar frame, item spacing and internal margin from available area + toolBarMaxWidth -= totalMargin; + + //ensure that buttons are side-by-side and not on top of each other + const int toolButtonWidth = (toolBarMaxWidth / visibleButtons) + - pixelMetric(QStyle::PM_ToolBarItemSpacing) + - pixelMetric(QStyle::PM_ToolBarItemMargin) + //toolbar frame needs to be reduced again, since QToolBarLayout adds it for each toolbar action + - 2 * pixelMetric(QStyle::PM_ToolBarFrameWidth) - 1; + sz.setWidth(qMax(toolButtonWidth, sz.width())); + } + } + } break; case CT_PushButton: sz = QCommonStyle::sizeFromContents( ct, opt, csz, widget); -- cgit v0.12 From faf0e9966c319ac774db3d4967d902772c30e526 Mon Sep 17 00:00:00 2001 From: Sami Merila Date: Thu, 18 Nov 2010 13:06:10 +0200 Subject: Tactile Feedback plugin is not compiled in latest Sym^3 RnD envs Due to somewhat questionable .pro-file flagging, the plugin is not currently compiled at all for latest Sym^3 environments. Flagging is now more bulletproof (not 3.1 & not 3.2), so even if the upcoming platform versions change, this should work in the future. Task-number: QTBUG-15428 Reviewed-by: Mikka Heikkinen --- src/plugins/s60/feedback/feedback.pro | 2 +- src/plugins/s60/s60.pro | 2 +- src/s60installs/s60installs.pro | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/plugins/s60/feedback/feedback.pro b/src/plugins/s60/feedback/feedback.pro index 1069220..5e577ec 100644 --- a/src/plugins/s60/feedback/feedback.pro +++ b/src/plugins/s60/feedback/feedback.pro @@ -6,7 +6,7 @@ QTDIR_build:DESTDIR = $$QT_BUILD_TREE/plugins/s60/feedback INCLUDEPATH += $$APP_LAYER_SYSTEMINCLUDE -contains(S60_VERSION, 5.0)|contains(S60_VERSION, symbian3) { +!contains(S60_VERSION, 3.1):!contains(S60_VERSION, 3.2) { HEADERS += qtactileFeedback.h SOURCES += qtactileFeedback_s60.cpp diff --git a/src/plugins/s60/s60.pro b/src/plugins/s60/s60.pro index ffcd170..1ddf326 100644 --- a/src/plugins/s60/s60.pro +++ b/src/plugins/s60/s60.pro @@ -6,7 +6,7 @@ symbian { SUBDIRS += 3_1 3_2 } - contains(S60_VERSION, 5.0)|contains(S60_VERSION, symbian3) { + !contains(S60_VERSION, 3.1):!contains(S60_VERSION, 3.2) { SUBDIRS += feedback } diff --git a/src/s60installs/s60installs.pro b/src/s60installs/s60installs.pro index 65b8781..7827fb6 100644 --- a/src/s60installs/s60installs.pro +++ b/src/s60installs/s60installs.pro @@ -87,7 +87,7 @@ symbian: { DEPLOYMENT += bearer_plugin } - contains(S60_VERSION, 5.0)|contains(S60_VERSION, symbian3) { + !contains(S60_VERSION, 3.1):!contains(S60_VERSION, 3.2) { feedback_plugin.sources = $$QT_BUILD_TREE/plugins/s60/feedback/qtactilefeedback$${QT_LIBINFIX}.dll feedback_plugin.path = c:$$QT_PLUGINS_BASE_DIR/feedback DEPLOYMENT += feedback_plugin -- cgit v0.12 From 9f18a1ad5ce32dd397642a4c03fa1fcb21fb9456 Mon Sep 17 00:00:00 2001 From: Mike McQuaid Date: Thu, 18 Nov 2010 05:40:36 +0000 Subject: Check correctly before including SSE4.2 header. Previously, this failed machines that only had SSE4.1 but not SSE4.2 due to an assumption that nmmintrin.h could be included when only using SSE4.1. Fixes http://bugreports.qt.nokia.com/browse/QTBUG-13623. Merge-request: 929 Reviewed-by: Benjamin Poulain --- src/corelib/tools/qsimd_p.h | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/corelib/tools/qsimd_p.h b/src/corelib/tools/qsimd_p.h index 87fa770..2dbed76 100644 --- a/src/corelib/tools/qsimd_p.h +++ b/src/corelib/tools/qsimd_p.h @@ -87,9 +87,13 @@ QT_BEGIN_HEADER #include #endif -// SSE4.1 and SSE4.2 intrinsics -#if (defined(QT_HAVE_SSE4_1) || defined(QT_HAVE_SSE4_2)) && (defined(__SSE4_1__) || defined(Q_CC_MSVC)) +// SSE4.1 intrinsics +#if defined(QT_HAVE_SSE4_1) && (defined(__SSE4_1__) || defined(Q_CC_MSVC)) #include +#endif + +// SSE4.2 intrinsics +#if defined(QT_HAVE_SSE4_2) && (defined(__SSE4_2__) || defined(Q_CC_MSVC)) #include #endif -- cgit v0.12 From 36ac9c61e73944cd75d09f5751dd8ed053571b9b Mon Sep 17 00:00:00 2001 From: Joona Petrell Date: Thu, 18 Nov 2010 20:57:20 +1000 Subject: Add missing symbols in QtGui emulator def file --- src/s60installs/bwins/QtGuiu.def | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/s60installs/bwins/QtGuiu.def b/src/s60installs/bwins/QtGuiu.def index c91b22c..dc8a865 100644 --- a/src/s60installs/bwins/QtGuiu.def +++ b/src/s60installs/bwins/QtGuiu.def @@ -12898,4 +12898,10 @@ EXPORTS ?qmljsDebugArgumentsString@QApplicationPrivate@@SA?AVQString@@XZ @ 12897 NONAME ; class QString QApplicationPrivate::qmljsDebugArgumentsString(void) ?convertToPostscriptFontFamilyName@QFontEngine@@SA?AVQByteArray@@ABV2@@Z @ 12898 NONAME ; class QByteArray QFontEngine::convertToPostscriptFontFamilyName(class QByteArray const &) ?lastResortFont@QFont@@QBE?AVQString@@XZ @ 12899 NONAME ; class QString QFont::lastResortFont(void) const + ?setFontEngine@QStaticTextItem@@QAEXPAVQFontEngine@@@Z @ 12900 NONAME ; void QStaticTextItem::setFontEngine(class QFontEngine *) + ??0QStaticTextItem@@QAE@ABV0@@Z @ 12901 NONAME ; QStaticTextItem::QStaticTextItem(class QStaticTextItem const &) + ??4QStaticTextItem@@QAEXABV0@@Z @ 12902 NONAME ; void QStaticTextItem::operator=(class QStaticTextItem const &) + ?fontEngine@QStaticTextItem@@QBEPAVQFontEngine@@XZ @ 12903 NONAME ; class QFontEngine * QStaticTextItem::fontEngine(void) const + ?reactivateDeferredActiveObjects@QEventDispatcherS60@@UAEXXZ @ 12904 NONAME ; void QEventDispatcherS60::reactivateDeferredActiveObjects(void) + ?userData@QStaticTextItem@@QBEPAVQStaticTextUserData@@XZ @ 12905 NONAME ; class QStaticTextUserData * QStaticTextItem::userData(void) const -- cgit v0.12 From 31feffb92570c6e13618cc2d0d03a5f243a7e350 Mon Sep 17 00:00:00 2001 From: Sami Merila Date: Thu, 18 Nov 2010 13:06:10 +0200 Subject: Tactile Feedback plugin is not compiled in latest Sym^3 RnD envs Due to somewhat questionable .pro-file flagging, the plugin is not currently compiled at all for latest Sym^3 environments. Flagging is now more bulletproof (not 3.1 & not 3.2), so even if the upcoming platform versions change, this should work in the future. Task-number: QTBUG-15428 Reviewed-by: Miikka Heikkinen --- src/plugins/s60/feedback/feedback.pro | 2 +- src/plugins/s60/s60.pro | 2 +- src/s60installs/s60installs.pro | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/plugins/s60/feedback/feedback.pro b/src/plugins/s60/feedback/feedback.pro index 1069220..5e577ec 100644 --- a/src/plugins/s60/feedback/feedback.pro +++ b/src/plugins/s60/feedback/feedback.pro @@ -6,7 +6,7 @@ QTDIR_build:DESTDIR = $$QT_BUILD_TREE/plugins/s60/feedback INCLUDEPATH += $$APP_LAYER_SYSTEMINCLUDE -contains(S60_VERSION, 5.0)|contains(S60_VERSION, symbian3) { +!contains(S60_VERSION, 3.1):!contains(S60_VERSION, 3.2) { HEADERS += qtactileFeedback.h SOURCES += qtactileFeedback_s60.cpp diff --git a/src/plugins/s60/s60.pro b/src/plugins/s60/s60.pro index ffcd170..1ddf326 100644 --- a/src/plugins/s60/s60.pro +++ b/src/plugins/s60/s60.pro @@ -6,7 +6,7 @@ symbian { SUBDIRS += 3_1 3_2 } - contains(S60_VERSION, 5.0)|contains(S60_VERSION, symbian3) { + !contains(S60_VERSION, 3.1):!contains(S60_VERSION, 3.2) { SUBDIRS += feedback } diff --git a/src/s60installs/s60installs.pro b/src/s60installs/s60installs.pro index 65b8781..7827fb6 100644 --- a/src/s60installs/s60installs.pro +++ b/src/s60installs/s60installs.pro @@ -87,7 +87,7 @@ symbian: { DEPLOYMENT += bearer_plugin } - contains(S60_VERSION, 5.0)|contains(S60_VERSION, symbian3) { + !contains(S60_VERSION, 3.1):!contains(S60_VERSION, 3.2) { feedback_plugin.sources = $$QT_BUILD_TREE/plugins/s60/feedback/qtactilefeedback$${QT_LIBINFIX}.dll feedback_plugin.path = c:$$QT_PLUGINS_BASE_DIR/feedback DEPLOYMENT += feedback_plugin -- cgit v0.12 From 7196045b78b33cf135683d5c0b4e164f95231791 Mon Sep 17 00:00:00 2001 From: "Bradley T. Hughes" Date: Thu, 18 Nov 2010 12:42:14 +0100 Subject: Don't let posted events starve native dialogs (regression) After commit eb1015c7bbf135af3656110a4d112377c1209db8, it is possible for posted events to starve some of the (most likely internal) messages used by native dialogs. This commit reverts eb1015c7bbf135af3656110a4d112377c1209db8, and instead introduces a Windows timer to keep sendPostedEvents() happening while the event queue is very active. The GetMessage() hook we install will eventually see when the queue is empty and we can use PostMessage() again, which will then stop this timer. This fixes the regression reported in QTBUG-14655, as well as all of the other reported regressions and problems since the initial commit 31f1ff91028dd7f90925d5b3737e4d88b5fb07aa (which ensures that posted events are sent even when Windows is spinning the message loop). Task-number: QTBUG-14655 Reviewed-by: joao --- src/corelib/kernel/qeventdispatcher_win.cpp | 48 ++++++++++++++++++++--------- 1 file changed, 34 insertions(+), 14 deletions(-) diff --git a/src/corelib/kernel/qeventdispatcher_win.cpp b/src/corelib/kernel/qeventdispatcher_win.cpp index a719e72..3dccda6 100644 --- a/src/corelib/kernel/qeventdispatcher_win.cpp +++ b/src/corelib/kernel/qeventdispatcher_win.cpp @@ -84,7 +84,8 @@ extern uint qGlobalPostedEventsCount(); enum { WM_QT_SOCKETNOTIFIER = WM_USER, - WM_QT_SENDPOSTEDEVENTS = WM_USER + 1 + WM_QT_SENDPOSTEDEVENTS = WM_USER + 1, + SendPostedEventsWindowsTimerId = ~1u }; #if defined(Q_OS_WINCE) @@ -353,7 +354,7 @@ public: // for controlling when to send posted events QAtomicInt serialNumber; - int lastSerialNumber; + int lastSerialNumber, sendPostedEventsWindowsTimerId; QAtomicInt wakeUps; // timers @@ -378,7 +379,7 @@ public: QEventDispatcherWin32Private::QEventDispatcherWin32Private() : threadId(GetCurrentThreadId()), interrupt(false), internalHwnd(0), getMessageHook(0), - serialNumber(0), lastSerialNumber(0), wakeUps(0) + serialNumber(0), lastSerialNumber(0), sendPostedEventsWindowsTimerId(0), wakeUps(0) { resolveTimerAPI(); } @@ -485,17 +486,21 @@ LRESULT QT_WIN_CALLBACK qt_internal_proc(HWND hwnd, UINT message, WPARAM wp, LPA } } return 0; - } else if (message == WM_TIMER) { - Q_ASSERT(d != 0); - d->sendTimerEvent(wp); - return 0; - } else if (message == WM_QT_SENDPOSTEDEVENTS) { + } else if (message == WM_QT_SENDPOSTEDEVENTS + // we also use a Windows timer to send posted events when the message queue is full + || (message == WM_TIMER + && d->sendPostedEventsWindowsTimerId != 0 + && wp == d->sendPostedEventsWindowsTimerId)) { int localSerialNumber = d->serialNumber; if (localSerialNumber != d->lastSerialNumber) { d->lastSerialNumber = localSerialNumber; QCoreApplicationPrivate::sendPostedEvents(0, 0, d->threadData); } return 0; + } else if (message == WM_TIMER) { + Q_ASSERT(d != 0); + d->sendTimerEvent(wp); + return 0; } return DefWindowProc(hwnd, message, wp, lp); @@ -507,21 +512,36 @@ LRESULT QT_WIN_CALLBACK qt_GetMessageHook(int code, WPARAM wp, LPARAM lp) QEventDispatcherWin32 *q = qobject_cast(QAbstractEventDispatcher::instance()); Q_ASSERT(q != 0); if (q) { + MSG *msg = (MSG *) lp; QEventDispatcherWin32Private *d = q->d_func(); int localSerialNumber = d->serialNumber; - MSG unused; - if ((HIWORD(GetQueueStatus(QS_INPUT | QS_RAWINPUT)) == 0 - && PeekMessage(&unused, 0, WM_TIMER, WM_TIMER, PM_NOREMOVE) == 0)) { - // no more input or timer events in the message queue or more than 10ms has elapsed since - // we send posted events, we can allow posted events to be sent now + if (HIWORD(GetQueueStatus(QS_TIMER | QS_INPUT | QS_RAWINPUT)) == 0) { + // no more input or timer events in the message queue, we can allow posted events to be sent normally now + if (d->sendPostedEventsWindowsTimerId != 0) { + // stop the timer to send posted events, since we now allow the WM_QT_SENDPOSTEDEVENTS message + KillTimer(d->internalHwnd, d->sendPostedEventsWindowsTimerId); + d->sendPostedEventsWindowsTimerId = 0; + } (void) d->wakeUps.fetchAndStoreRelease(0); - MSG *msg = (MSG *) lp; if (localSerialNumber != d->lastSerialNumber // if this message IS the one that triggers sendPostedEvents(), no need to post it again && (msg->hwnd != d->internalHwnd || msg->message != WM_QT_SENDPOSTEDEVENTS)) { PostMessage(d->internalHwnd, WM_QT_SENDPOSTEDEVENTS, 0, 0); } + } else if (d->sendPostedEventsWindowsTimerId == 0 + && localSerialNumber != d->lastSerialNumber + // if this message IS the one that triggers sendPostedEvents(), no need to post it again + && (msg->hwnd != d->internalHwnd + || msg->message != WM_QT_SENDPOSTEDEVENTS)) { + // start a special timer to continue delivering posted events while + // there are still input and timer messages in the message queue + d->sendPostedEventsWindowsTimerId = SetTimer(d->internalHwnd, + SendPostedEventsWindowsTimerId, + USER_TIMER_MINIMUM, + NULL); + // we don't check the return value of SetTimer()... if creating the timer failed, there's little + // we can do. we just have to accept that posted events will be starved } } } -- cgit v0.12 From 0ced71e4dddc12240b22fd5786ed41a529e49c47 Mon Sep 17 00:00:00 2001 From: Marco Bubke Date: Thu, 18 Nov 2010 13:35:44 +0100 Subject: Fix parent bug for QDeclarativeOpenMetaObject The dynamic meta object was not called because no parent meta object was called. Reviewed-By: Aaron Kennedy --- src/declarative/util/qdeclarativeopenmetaobject.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/declarative/util/qdeclarativeopenmetaobject.cpp b/src/declarative/util/qdeclarativeopenmetaobject.cpp index 40485bd..c611435 100644 --- a/src/declarative/util/qdeclarativeopenmetaobject.cpp +++ b/src/declarative/util/qdeclarativeopenmetaobject.cpp @@ -186,6 +186,7 @@ QDeclarativeOpenMetaObject::QDeclarativeOpenMetaObject(QObject *obj, bool automa d->type->d->referers.insert(this); QObjectPrivate *op = QObjectPrivate::get(obj); + d->parent = static_cast(op->metaObject); *static_cast(this) = *d->type->d->mem; op->metaObject = this; } @@ -201,6 +202,7 @@ QDeclarativeOpenMetaObject::QDeclarativeOpenMetaObject(QObject *obj, QDeclarativ d->type->d->referers.insert(this); QObjectPrivate *op = QObjectPrivate::get(obj); + d->parent = static_cast(op->metaObject); *static_cast(this) = *d->type->d->mem; op->metaObject = this; } -- cgit v0.12 From dfd5ee41532b55ef6aaa5fb7ed3b586fbac80fce Mon Sep 17 00:00:00 2001 From: Miikka Heikkinen Date: Thu, 18 Nov 2010 12:39:09 +0200 Subject: Make epocroot resolving compatible with more build environments This commit prepares epocroot.cpp and registry.cpp to be compilable by lrelease and corelib. Task-number: QTBUG-15393 Reviewed-by: axis --- tools/shared/symbian/epocroot.cpp | 100 ++++++++++++++++++-------------------- tools/shared/windows/registry.cpp | 8 +-- 2 files changed, 51 insertions(+), 57 deletions(-) diff --git a/tools/shared/symbian/epocroot.cpp b/tools/shared/symbian/epocroot.cpp index ae1dcb1..9d7d465 100644 --- a/tools/shared/symbian/epocroot.cpp +++ b/tools/shared/symbian/epocroot.cpp @@ -64,23 +64,13 @@ // Stored as a static value in order to avoid unnecessary re-evaluation. static QString epocRootValue; -#ifdef QT_BUILD_QMAKE -std::ostream &operator<<(std::ostream &s, const QString &val) { - s << val.toLocal8Bit().data(); - return s; -} -#else -// Operator implemented in configureapp.cpp -std::ostream &operator<<(std::ostream &s, const QString &val); -#endif - QString getDevicesXmlPath() { // Note that the following call will return a null string on platforms other // than Windows. If support is required on other platforms for devices.xml, // an alternative mechanism for retrieving the location of this file will // be required. - return readRegistryKey(SYMBIAN_SDKS_REG_HANDLE, SYMBIAN_SDKS_REG_SUBKEY); + return readRegistryKey(SYMBIAN_SDKS_REG_HANDLE, QLatin1String(SYMBIAN_SDKS_REG_SUBKEY)); } /** @@ -92,7 +82,8 @@ void checkEpocRootExists(const QString &source) if (!epocRootValue.isEmpty()) { QDir dir(epocRootValue); if (!dir.exists()) { - std::cerr << "Warning: " << source << " is set to an invalid path: " << epocRootValue << std::endl; + qWarning("Warning: %s is set to an invalid path: '%s'", qPrintable(source), + qPrintable(epocRootValue)); epocRootValue = QString(); } } @@ -103,10 +94,10 @@ void checkEpocRootExists(const QString &source) */ static void fixEpocRoot(QString &path) { - path.replace("\\", "/"); + path.replace(QLatin1Char('\\'), QLatin1Char('/')); - if (!path.size() || path[path.size()-1] != QChar('/')) { - path += QChar('/'); + if (!path.size() || path[path.size()-1] != QLatin1Char('/')) { + path += QLatin1Char('/'); } } @@ -118,17 +109,15 @@ QString epocRoot() if (epocRootValue.isEmpty()) { // 1. If environment variable EPOCROOT is set and points to an existent // directory, this is returned. - epocRootValue = qgetenv("EPOCROOT"); - checkEpocRootExists("EPOCROOT"); + epocRootValue = QString::fromLocal8Bit(qgetenv("EPOCROOT").constData()); + checkEpocRootExists(QLatin1String("EPOCROOT environment variable")); if (epocRootValue.isEmpty()) { // 2. The location of devices.xml is specified by a registry key. If this // file exists, it is parsed. QString devicesXmlPath = getDevicesXmlPath(); - if (devicesXmlPath.isEmpty()) { - std::cerr << "Error: Symbian SDK registry key not found" << std::endl; - } else { - devicesXmlPath += "/devices.xml"; + if (!devicesXmlPath.isEmpty()) { + devicesXmlPath += QLatin1String("/devices.xml"); QFile devicesFile(devicesXmlPath); if (devicesFile.open(QIODevice::ReadOnly)) { @@ -138,87 +127,90 @@ QString epocRoot() // 4. If a device element marked as default is found in devices.xml and its // epocroot value points to an existent directory, this is returned. - const QString epocDeviceValue = qgetenv("EPOCDEVICE"); + const QString epocDeviceValue = QString::fromLocal8Bit(qgetenv("EPOCDEVICE").constData()); bool epocDeviceFound = false; QXmlStreamReader xml(&devicesFile); while (!xml.atEnd()) { xml.readNext(); - if (xml.isStartElement() && xml.name() == "devices") { - if (xml.attributes().value("version") == "1.0") { - while (!(xml.isEndElement() && xml.name() == "devices") && !xml.atEnd()) { + if (xml.isStartElement() && xml.name() == QLatin1String("devices")) { + if (xml.attributes().value(QLatin1String("version")) == QLatin1String("1.0")) { + while (!(xml.isEndElement() && xml.name() == QLatin1String("devices")) && !xml.atEnd()) { xml.readNext(); - if (xml.isStartElement() && xml.name() == "device") { - const bool isDefault = xml.attributes().value("default") == "yes"; - const QString id = xml.attributes().value("id").toString(); - const QString name = xml.attributes().value("name").toString(); - const QString alias = xml.attributes().value("alias").toString(); - bool epocDeviceMatch = (id + ":" + name) == epocDeviceValue; + if (xml.isStartElement() && xml.name() == QLatin1String("device")) { + const bool isDefault = xml.attributes().value(QLatin1String("default")) == QLatin1String("yes"); + const QString id = xml.attributes().value(QLatin1String("id")).toString(); + const QString name = xml.attributes().value(QLatin1String("name")).toString(); + const QString alias = xml.attributes().value(QLatin1String("alias")).toString(); + bool epocDeviceMatch = QString(id + QLatin1String(":") + name) == epocDeviceValue; if (!alias.isEmpty()) epocDeviceMatch |= alias == epocDeviceValue; epocDeviceFound |= epocDeviceMatch; if((epocDeviceValue.isEmpty() && isDefault) || epocDeviceMatch) { // Found a matching device - while (!(xml.isEndElement() && xml.name() == "device") && !xml.atEnd()) { + while (!(xml.isEndElement() && xml.name() == QLatin1String("device")) && !xml.atEnd()) { xml.readNext(); - if (xml.isStartElement() && xml.name() == "epocroot") { + if (xml.isStartElement() && xml.name() == QLatin1String("epocroot")) { epocRootValue = xml.readElementText(); const QString deviceSource = epocDeviceValue.isEmpty() - ? "default device" - : "EPOCDEVICE (" + epocDeviceValue + ")"; + ? QLatin1String("default device") + : QString(QLatin1String("EPOCDEVICE (") + epocDeviceValue + QLatin1String(")")); checkEpocRootExists(deviceSource); } } if (epocRootValue.isEmpty()) - xml.raiseError("No epocroot element found"); + xml.raiseError(QLatin1String("No epocroot element found")); } } } } else { - xml.raiseError("Invalid 'devices' element version"); + xml.raiseError(QLatin1String("Invalid 'devices' element version")); } } } if (xml.hasError()) { - std::cerr << "Error: \"" << xml.errorString() << "\" when parsing devices.xml" << std::endl; + qWarning("Warning: Error \"%s\" when parsing devices.xml", + qPrintable(xml.errorString())); } else { if (epocRootValue.isEmpty()) { if (!epocDeviceValue.isEmpty()) { if (epocDeviceFound) { - std::cerr << "Error: missing or invalid epocroot attribute " - << "in device '" << epocDeviceValue << "'"; + qWarning("Warning: Missing or invalid epocroot attribute in device '%s' in devices.xml.", + qPrintable(epocDeviceValue)); } else { - std::cerr << "Error: no device matching EPOCDEVICE (" - << epocDeviceValue << ")"; + qWarning("Warning: No device matching EPOCDEVICE (%s) in devices.xml.", + qPrintable(epocDeviceValue)); } } else { if (epocDeviceFound) { - std::cerr << "Error: missing or invalid epocroot attribute " - << "in default device"; + qWarning("Warning: Missing or invalid epocroot attribute in default device in devices.xml."); } else { - std::cerr << "Error: no default device"; + qWarning("Warning: No default device set in devices.xml."); } } - std::cerr << " found in devices.xml file." << std::endl; } } } else { - std::cerr << "Error: could not open file " << devicesXmlPath << std::endl; + qWarning("Warning: Could not open file: '%s'.", qPrintable(devicesXmlPath)); } } } if (epocRootValue.isEmpty()) { // 5. An empty string is returned. - std::cerr << "Error: failed to find epoc root" << std::endl - << "Either" << std::endl - << " 1. Set EPOCROOT environment variable to a valid value" << std::endl - << " or 2. Ensure that the HKEY_LOCAL_MACHINE\\" SYMBIAN_SDKS_REG_SUBKEY - " registry key is set, and then" << std::endl - << " a. Set EPOCDEVICE environment variable to a valid device" << std::endl - << " or b. Specify a default device in the devices.xml file." << std::endl; + qWarning("Warning: failed to resolve epocroot." +#ifdef Q_OS_WIN32 + "\nEither\n" + " 1. Set EPOCROOT environment variable to a valid value.\n" + " or 2. Ensure that the HKEY_LOCAL_MACHINE\\" SYMBIAN_SDKS_REG_SUBKEY + " registry key is set, and then\n" + " a. Set EPOCDEVICE environment variable to a valid device\n" + " or b. Specify a default device in the devices.xml file."); +#else + " Set EPOCROOT environment variable to a valid value."); +#endif } else { fixEpocRoot(epocRootValue); } diff --git a/tools/shared/windows/registry.cpp b/tools/shared/windows/registry.cpp index 67d9b56..2373839 100644 --- a/tools/shared/windows/registry.cpp +++ b/tools/shared/windows/registry.cpp @@ -42,6 +42,7 @@ #include #include "registry.h" +#ifdef Q_OS_WIN32 /*! Returns the path part of a registry key. e.g. @@ -73,10 +74,11 @@ static QString keyName(const QString &rKey) return rKey; QString res(rKey.mid(idx + 1)); - if (res == "Default" || res == ".") - res = ""; + if (res == QLatin1String("Default") || res == QLatin1String(".")) + res = QString(); return res; } +#endif QString readRegistryKey(HKEY parentHandle, const QString &rSubkey) { @@ -128,7 +130,7 @@ QString readRegistryKey(HKEY parentHandle, const QString &rSubkey) break; l.append(s); } - result = l.join(", "); + result = l.join(QLatin1String(", ")); break; } -- cgit v0.12 From bc09d5b11cd45e975ec745b508c703b75b019a4e Mon Sep 17 00:00:00 2001 From: Miikka Heikkinen Date: Thu, 18 Nov 2010 15:23:03 +0200 Subject: Resolve EPOCROOT in qt.conf using same logic as in .pro Previously it was only possible to use EPOCROOT in qt.conf via env variable, while qmake & configure could resolve it also via devices.xml. Changed qt.conf parsing to support $${EPOCROOT} tag and use same resolving logic as qmake & configure. Task-number: QTBUG-15393 Reviewed-by: axis --- qmake/Makefile.unix | 2 +- qmake/Makefile.win32 | 3 ++- qmake/Makefile.win32-g++ | 2 +- qmake/Makefile.win32-g++-sh | 2 +- qmake/qmake.pri | 2 +- src/corelib/global/global.pri | 2 ++ src/corelib/global/qlibraryinfo.cpp | 12 ++++++++++++ tools/linguist/lrelease/lrelease.pro | 1 + tools/shared/symbian/epocroot.pri | 11 +++++++++++ 9 files changed, 32 insertions(+), 5 deletions(-) create mode 100644 tools/shared/symbian/epocroot.pri diff --git a/qmake/Makefile.unix b/qmake/Makefile.unix index 8d56fc8..d941dc4 100644 --- a/qmake/Makefile.unix +++ b/qmake/Makefile.unix @@ -68,7 +68,7 @@ CPPFLAGS = -I. -Igenerators -Igenerators/unix -Igenerators/win32 -Igenerators/ma -I$(BUILD_PATH)/src/corelib/global -I$(BUILD_PATH)/src/corelib/xml \ -I$(SOURCE_PATH)/tools/shared \ -DQT_NO_PCRE \ - -DQT_BUILD_QMAKE -DQT_BOOTSTRAPPED \ + -DQT_BUILD_QMAKE -DQT_BOOTSTRAPPED -DQLIBRARYINFO_EPOCROOT \ -DQT_NO_TEXTCODEC -DQT_NO_UNICODETABLES -DQT_NO_COMPONENT -DQT_NO_STL \ -DQT_NO_COMPRESS -I$(QMAKESPEC) -DHAVE_QCONFIG_CPP -DQT_NO_THREAD -DQT_NO_QOBJECT \ -DQT_NO_GEOM_VARIANT $(OPENSOURCE_CXXFLAGS) diff --git a/qmake/Makefile.win32 b/qmake/Makefile.win32 index 4d0121c..c04bcb2 100644 --- a/qmake/Makefile.win32 +++ b/qmake/Makefile.win32 @@ -40,7 +40,8 @@ CFLAGS_BARE = -c -Fo./ \ -I$(SOURCE_PATH)\tools\shared \ -DQT_NO_TEXTCODEC -DQT_NO_UNICODETABLES -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL \ -DQT_NO_COMPRESS -DUNICODE -DHAVE_QCONFIG_CPP -DQT_BUILD_QMAKE -DQT_NO_THREAD \ - -DQT_NO_QOBJECT -DQT_NO_GEOM_VARIANT -DQT_NO_DATASTREAM -DQT_NO_PCRE -DQT_BOOTSTRAPPED + -DQT_NO_QOBJECT -DQT_NO_GEOM_VARIANT -DQT_NO_DATASTREAM -DQT_NO_PCRE -DQT_BOOTSTRAPPED \ + -DQLIBRARYINFO_EPOCROOT CFLAGS = -Yuqmake_pch.h -FIqmake_pch.h -Fpqmake_pch.pch $(CFLAGS_BARE) $(CFLAGS) CXXFLAGS_BARE = $(CFLAGS_BARE) diff --git a/qmake/Makefile.win32-g++ b/qmake/Makefile.win32-g++ index f313f9e..29fbd0a 100644 --- a/qmake/Makefile.win32-g++ +++ b/qmake/Makefile.win32-g++ @@ -25,7 +25,7 @@ CFLAGS = -c -o$@ -O \ -DQT_NO_TEXTCODEC -DQT_NO_UNICODETABLES -DQT_LITE_COMPONENT -DQT_NO_PCRE \ -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -DUNICODE -DHAVE_QCONFIG_CPP \ -DQT_BUILD_QMAKE -DQT_NO_THREAD -DQT_NO_QOBJECT -DQT_NO_GEOM_VARIANT -DQT_NO_DATASTREAM \ - -DQT_BOOTSTRAPPED + -DQT_BOOTSTRAPPED -DQLIBRARYINFO_EPOCROOT CXXFLAGS = $(CFLAGS) LFLAGS = -static-libgcc -static-libstdc++ -s LIBS = -lole32 -luuid diff --git a/qmake/Makefile.win32-g++-sh b/qmake/Makefile.win32-g++-sh index af54288..9c7942c 100644 --- a/qmake/Makefile.win32-g++-sh +++ b/qmake/Makefile.win32-g++-sh @@ -25,7 +25,7 @@ CFLAGS = -c -o$@ -O \ -DQT_NO_TEXTCODEC -DQT_NO_UNICODETABLES -DQT_LITE_COMPONENT -DQT_NO_PCRE \ -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -DUNICODE -DHAVE_QCONFIG_CPP \ -DQT_BUILD_QMAKE -DQT_NO_THREAD -DQT_NO_QOBJECT -DQT_NO_GEOM_VARIANT -DQT_NO_DATASTREAM \ - -DQT_BOOTSTRAPPED + -DQT_BOOTSTRAPPED -DQLIBRARYINFO_EPOCROOT CXXFLAGS = $(CFLAGS) LFLAGS = -static-libgcc -static-libstdc++ -s LIBS = -lole32 -luuid diff --git a/qmake/qmake.pri b/qmake/qmake.pri index 36c5d36..7cf94cb 100644 --- a/qmake/qmake.pri +++ b/qmake/qmake.pri @@ -3,7 +3,7 @@ CONFIG += depend_includepath QMAKE_INCREMENTAL = SKIP_DEPENDS += qconfig.h qmodules.h DEFINES += QT_NO_TEXTCODEC QT_NO_LIBRARY QT_NO_STL QT_NO_COMPRESS QT_NO_UNICODETABLES \ - QT_NO_GEOM_VARIANT QT_NO_DATASTREAM + QT_NO_GEOM_VARIANT QT_NO_DATASTREAM QLIBRARYINFO_EPOCROOT #qmake code SOURCES += project.cpp property.cpp main.cpp generators/makefile.cpp \ diff --git a/src/corelib/global/global.pri b/src/corelib/global/global.pri index 4800716..86800ef 100644 --- a/src/corelib/global/global.pri +++ b/src/corelib/global/global.pri @@ -27,3 +27,5 @@ linux*:!static:!linux-armcc:!linux-gcce { # Compensate for lack of platform defines in Symbian3 and Symbian4 symbian: DEFINES += SYMBIAN_VERSION_$$upper($$replace(SYMBIAN_VERSION,\\.,_)) + +include(../../../tools/shared/symbian/epocroot.pri) diff --git a/src/corelib/global/qlibraryinfo.cpp b/src/corelib/global/qlibraryinfo.cpp index 957abbf..acacf7c 100644 --- a/src/corelib/global/qlibraryinfo.cpp +++ b/src/corelib/global/qlibraryinfo.cpp @@ -62,6 +62,10 @@ QT_END_NAMESPACE # include "private/qcore_mac_p.h" #endif +#ifdef QLIBRARYINFO_EPOCROOT +# include "symbian/epocroot.h" +#endif + #include "qconfig.cpp" QT_BEGIN_NAMESPACE @@ -433,6 +437,14 @@ QLibraryInfo::location(LibraryLocation loc) QString::fromLocal8Bit(qgetenv(ret.mid(rep + 2, reg_var.matchedLength() - 3).toLatin1().constData()).constData())); } + +#ifdef QLIBRARYINFO_EPOCROOT + // $${EPOCROOT} is a special case, resolve it similarly to qmake. + QRegExp epocrootMatcher(QLatin1String("\\$\\$\\{EPOCROOT\\}")); + if ((rep = epocrootMatcher.indexIn(ret)) != -1) + ret.replace(rep, epocrootMatcher.matchedLength(), epocRoot()); +#endif + config->endGroup(); } } diff --git a/tools/linguist/lrelease/lrelease.pro b/tools/linguist/lrelease/lrelease.pro index 6beafa3..89694be 100644 --- a/tools/linguist/lrelease/lrelease.pro +++ b/tools/linguist/lrelease/lrelease.pro @@ -15,6 +15,7 @@ macx:SOURCES += $$QT_SOURCE_TREE/src/corelib/io/qsettings_mac.cpp include(../../../src/tools/bootstrap/bootstrap.pri) include(../shared/formats.pri) include(../shared/proparser.pri) +include(../../shared/symbian/epocroot.pri) win32:LIBS += -ladvapi32 # for qsettings_win.cpp diff --git a/tools/shared/symbian/epocroot.pri b/tools/shared/symbian/epocroot.pri new file mode 100644 index 0000000..117836e --- /dev/null +++ b/tools/shared/symbian/epocroot.pri @@ -0,0 +1,11 @@ +# Epocroot resolving is only required for tools, so omit it from all mobile/embedded builds +!symbian:!wince*:!embedded { +HEADERS += \ + $$QT_SOURCE_TREE/tools/shared/symbian/epocroot.h \ + $$QT_SOURCE_TREE/tools/shared/windows/registry.h +SOURCES += \ + $$QT_SOURCE_TREE/tools/shared/symbian/epocroot.cpp \ + $$QT_SOURCE_TREE/tools/shared/windows/registry.cpp +INCLUDEPATH += $$QT_SOURCE_TREE/tools/shared +DEFINES += QLIBRARYINFO_EPOCROOT +} -- cgit v0.12 From 8a298f78a8050bffff1d3c0135aa432a85747c2e Mon Sep 17 00:00:00 2001 From: Miikka Heikkinen Date: Thu, 18 Nov 2010 16:59:42 +0200 Subject: Add symbian scope for qfiledialog_symbian.cpp Missing symbian scope caused build break on non-symbian platforms. Reviewed-by: Janne Koskinen --- src/gui/dialogs/dialogs.pri | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/dialogs/dialogs.pri b/src/gui/dialogs/dialogs.pri index c7cb794..443c5e9 100644 --- a/src/gui/dialogs/dialogs.pri +++ b/src/gui/dialogs/dialogs.pri @@ -108,7 +108,7 @@ SOURCES += \ dialogs/qwizard.cpp \ dialogs/qprintpreviewdialog.cpp -contains(QT_CONFIG, s60) { +symbian:contains(QT_CONFIG, s60) { LIBS += -lcommondialogs \ -lavkon \ -lplatformenv \ -- cgit v0.12 From d4cd9c899e705ff01f597f0007def8fbd3ab8b39 Mon Sep 17 00:00:00 2001 From: Alan Alpert Date: Fri, 19 Nov 2010 09:19:41 +1000 Subject: Add a test on QWS Without a single test, it fails anyways. Task-number: QTBUG-14792 --- tests/auto/declarative/qmlvisual/TEST_GUIDELINES | 2 +- tests/auto/declarative/qmlvisual/tst_qmlvisual.cpp | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/tests/auto/declarative/qmlvisual/TEST_GUIDELINES b/tests/auto/declarative/qmlvisual/TEST_GUIDELINES index cb53b6e..469832f 100644 --- a/tests/auto/declarative/qmlvisual/TEST_GUIDELINES +++ b/tests/auto/declarative/qmlvisual/TEST_GUIDELINES @@ -4,4 +4,4 @@ Guidelines for creating new visual tests: 2. Keep it short. It is hoped that these tests can be run regularly, perhaps even for every commit, and if you add up ten seconds for every time someone commits a change to QML then we'll be sitting here for a long time. Completeness is more important than haste, but consider the most time efficient ways to achieve said completeness. Do not forget about snapshot mode (tst_qmlvisual -help for details on -recordsnapshot) when testing that a static scene looks right. -3. Avoid text. Text is relatively unstable due to platform specific peculiarities. If you need to identify an area, consider a unique color as opposed to a unique text label. If you must use Text, TextEdit, or TextInput, use the test-friendlier versions in the 'shared' directory. +3. Avoid text. Text is relatively unstable due to platform specific peculiarities. If you need to identify an area, consider a unique color as opposed to a unique text label. If you must use Text, TextEdit, or TextInput, use the test-friendlier versions in the 'shared' directory. Also keep in mind that text anti-aliasing is disabled during tests for greater consistency, and you should never use point sizes in tests. Text autotests can thus only test some aspects of the elements. diff --git a/tests/auto/declarative/qmlvisual/tst_qmlvisual.cpp b/tests/auto/declarative/qmlvisual/tst_qmlvisual.cpp index 8d4d0d1..2a15102 100644 --- a/tests/auto/declarative/qmlvisual/tst_qmlvisual.cpp +++ b/tests/auto/declarative/qmlvisual/tst_qmlvisual.cpp @@ -104,14 +104,16 @@ void tst_qmlvisual::visual_data() QStringList files; files << findQmlFiles(QDir(QT_TEST_SOURCE_DIR)); if (qgetenv("QMLVISUAL_ALL") != "1") { - //Text on X11 varies per distro - and the CI system is currently using something outdated. #if defined(Q_WS_X11) + //Text on X11 varies per distro - and the CI system is currently using something outdated. foreach(const QString &str, files.filter(QRegExp(".*text.*"))) files.removeAll(str); #endif - //We don't want QWS test results to mire down the CI system #if defined(Q_WS_QWS) + //We don't want QWS test results to mire down the CI system files.clear(); + //Needs at least one test data or it fails anyways + files << QT_TEST_SOURCE_DIR "/selftest_noimages/selftest_noimages.qml"; #endif } -- cgit v0.12 From 519264c692f77f6da2fb8a9ac2ddb1d70b39cc90 Mon Sep 17 00:00:00 2001 From: Martin Jones Date: Fri, 19 Nov 2010 10:55:22 +1000 Subject: Doc: clarify Flickable children vs. contentItem children. --- src/declarative/graphicsitems/qdeclarativeflickable.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/declarative/graphicsitems/qdeclarativeflickable.cpp b/src/declarative/graphicsitems/qdeclarativeflickable.cpp index 3a3189c..1870647 100644 --- a/src/declarative/graphicsitems/qdeclarativeflickable.cpp +++ b/src/declarative/graphicsitems/qdeclarativeflickable.cpp @@ -386,6 +386,13 @@ void QDeclarativeFlickablePrivate::updateBeginningEnd() \snippet doc/src/snippets/declarative/flickable.qml document \clearfloat + + Items declared as children of a Flickable are automatically parented to the + Flickable's \l contentItem. This should be taken into account when + operating on the children of the Flickable; it is usually the children of + \c contentItem that are relevant. For example, the bound of Items added + to the Flickable will be available by \c contentItem.childrenRect + \section1 Limitations \note Due to an implementation detail, items placed inside a Flickable cannot anchor to it by -- cgit v0.12 From f3a80c1128a04c9eb04a28b2fe8b468113731c43 Mon Sep 17 00:00:00 2001 From: Joona Petrell Date: Fri, 19 Nov 2010 13:29:48 +1000 Subject: Add missing symbols to QtOpenGL emulator def file --- src/s60installs/bwins/QtOpenGLu.def | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/s60installs/bwins/QtOpenGLu.def b/src/s60installs/bwins/QtOpenGLu.def index fa340e4..620fcb9 100644 --- a/src/s60installs/bwins/QtOpenGLu.def +++ b/src/s60installs/bwins/QtOpenGLu.def @@ -8,7 +8,7 @@ EXPORTS ?d_func@QGLShader@@AAEPAVQGLShaderPrivate@@XZ @ 7 NONAME ; class QGLShaderPrivate * QGLShader::d_func(void) ?bindToDynamicTexture@QGLPixelBuffer@@QAE_NI@Z @ 8 NONAME ; bool QGLPixelBuffer::bindToDynamicTexture(unsigned int) ??0QGLWidget@@QAE@PAVQGLContext@@PAVQWidget@@PBV0@V?$QFlags@W4WindowType@Qt@@@@@Z @ 9 NONAME ; QGLWidget::QGLWidget(class QGLContext *, class QWidget *, class QGLWidget const *, class QFlags) - ??_EQGLFormat@@QAE@I@Z @ 10 NONAME ; QGLFormat::~QGLFormat(unsigned int) + ??_EQGLFormat@@QAE@I@Z @ 10 NONAME ABSENT ; QGLFormat::~QGLFormat(unsigned int) ?drawPixmapFragments@QGL2PaintEngineEx@@UAEXPBVPixmapFragment@QPainter@@HABVQPixmap@@V?$QFlags@W4PixmapFragmentHint@QPainter@@@@@Z @ 11 NONAME ; void QGL2PaintEngineEx::drawPixmapFragments(class QPainter::PixmapFragment const *, int, class QPixmap const &, class QFlags) ?paintEngine@QGLWidget@@UBEPAVQPaintEngine@@XZ @ 12 NONAME ; class QPaintEngine * QGLWidget::paintEngine(void) const ?setPreferredPaintEngine@QGL@@YAXW4Type@QPaintEngine@@@Z @ 13 NONAME ; void QGL::setPreferredPaintEngine(enum QPaintEngine::Type) @@ -107,7 +107,7 @@ EXPORTS ??0QGLContext@@QAE@ABVQGLFormat@@@Z @ 106 NONAME ; QGLContext::QGLContext(class QGLFormat const &) ?geometryOutputVertexCount@QGLShaderProgram@@QBEHXZ @ 107 NONAME ; int QGLShaderProgram::geometryOutputVertexCount(void) const ?setAccum@QGLFormat@@QAEX_N@Z @ 108 NONAME ; void QGLFormat::setAccum(bool) - ??0QGLSignalProxy@@QAE@XZ @ 109 NONAME ; QGLSignalProxy::QGLSignalProxy(void) + ??0QGLSignalProxy@@QAE@XZ @ 109 NONAME ABSENT ; QGLSignalProxy::QGLSignalProxy(void) ?isUninitialized@QGLPixmapData@@ABE_NXZ @ 110 NONAME ; bool QGLPixmapData::isUninitialized(void) const ??0QGLFramebufferObjectFormat@@QAE@XZ @ 111 NONAME ; QGLFramebufferObjectFormat::QGLFramebufferObjectFormat(void) ??8@YA_NABVQGLFormat@@0@Z @ 112 NONAME ; bool operator==(class QGLFormat const &, class QGLFormat const &) @@ -496,7 +496,7 @@ EXPORTS ?setUniformValue@QGLShaderProgram@@QAEXPBDABVQSize@@@Z @ 495 NONAME ; void QGLShaderProgram::setUniformValue(char const *, class QSize const &) ?convertToGLFormat@QGLWidget@@SA?AVQImage@@ABV2@@Z @ 496 NONAME ; class QImage QGLWidget::convertToGLFormat(class QImage const &) ?staticMetaObject@QGLTextureGlyphCache@@2UQMetaObject@@B @ 497 NONAME ; struct QMetaObject const QGLTextureGlyphCache::staticMetaObject - ??_EQGLContextResource@@QAE@I@Z @ 498 NONAME ; QGLContextResource::~QGLContextResource(unsigned int) + ??_EQGLContextResource@@QAE@I@Z @ 498 NONAME ABSENT ; QGLContextResource::~QGLContextResource(unsigned int) ?handle@QGLColormap@@IAEKXZ @ 499 NONAME ; unsigned long QGLColormap::handle(void) ?isCreated@QGLBuffer@@QBE_NXZ @ 500 NONAME ; bool QGLBuffer::isCreated(void) const ?setColormap@QGLWidget@@QAEXABVQGLColormap@@@Z @ 501 NONAME ; void QGLWidget::setColormap(class QGLColormap const &) @@ -698,4 +698,9 @@ EXPORTS ?setProfile@QGLFormat@@QAEXW4OpenGLContextProfile@1@@Z @ 697 NONAME ; void QGLFormat::setProfile(enum QGLFormat::OpenGLContextProfile) ?updateDynamicTexture@QGLPixelBuffer@@QBEXI@Z @ 698 NONAME ; void QGLPixelBuffer::updateDynamicTexture(unsigned int) const ?setUniformValue@QGLShaderProgram@@QAEXHH@Z @ 699 NONAME ; void QGLShaderProgram::setUniformValue(int, int) + ?maxTextureHeight@QGLTextureGlyphCache@@UBEHXZ @ 700 NONAME ; int QGLTextureGlyphCache::maxTextureHeight(void) const + ?initializeOffscreenTexture@QGLWindowSurface@@AAE_NABVQSize@@@Z @ 701 NONAME ; bool QGLWindowSurface::initializeOffscreenTexture(class QSize const &) + ?maxTextureWidth@QGLTextureGlyphCache@@UBEHXZ @ 702 NONAME ; int QGLTextureGlyphCache::maxTextureWidth(void) const + ?filterMode@QGLTextureGlyphCache@@QBE?AW4FilterMode@1@XZ @ 703 NONAME ; enum QGLTextureGlyphCache::FilterMode QGLTextureGlyphCache::filterMode(void) const + ?setFilterMode@QGLTextureGlyphCache@@QAEXW4FilterMode@1@@Z @ 704 NONAME ; void QGLTextureGlyphCache::setFilterMode(enum QGLTextureGlyphCache::FilterMode) -- cgit v0.12 From abfdba11b8948497765c24670becf39e2ce1ff6d Mon Sep 17 00:00:00 2001 From: Joona Petrell Date: Fri, 19 Nov 2010 14:40:33 +1000 Subject: Add missing symbols to QtOpenGL arm def file --- src/s60installs/eabi/QtOpenGLu.def | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/s60installs/eabi/QtOpenGLu.def b/src/s60installs/eabi/QtOpenGLu.def index 7ceade4..c92d99e 100644 --- a/src/s60installs/eabi/QtOpenGLu.def +++ b/src/s60installs/eabi/QtOpenGLu.def @@ -702,4 +702,9 @@ EXPORTS _ZeqRK9QGLFormatS1_ @ 701 NONAME _Zls6QDebugRK9QGLFormat @ 702 NONAME _ZneRK9QGLFormatS1_ @ 703 NONAME + _ZN16QGLWindowSurface26initializeOffscreenTextureERK5QSize @ 704 NONAME + _ZNK20QGLTextureGlyphCache15maxTextureWidthEv @ 705 NONAME + _ZNK20QGLTextureGlyphCache16maxTextureHeightEv @ 706 NONAME + _ZThn8_NK20QGLTextureGlyphCache15maxTextureWidthEv @ 707 NONAME + _ZThn8_NK20QGLTextureGlyphCache16maxTextureHeightEv @ 708 NONAME -- cgit v0.12 From ac62887fe00eb22ea00622d4c3dab5ff40417e76 Mon Sep 17 00:00:00 2001 From: Aaron Kennedy Date: Fri, 19 Nov 2010 16:23:52 +1000 Subject: Don't leak QML compiled data objects Task-number: QTBUG-14761 --- src/declarative/qml/qdeclarativecompileddata.cpp | 4 ++-- src/declarative/qml/qdeclarativecompiler.cpp | 2 -- src/declarative/qml/qdeclarativecompiler_p.h | 4 +--- 3 files changed, 3 insertions(+), 7 deletions(-) diff --git a/src/declarative/qml/qdeclarativecompileddata.cpp b/src/declarative/qml/qdeclarativecompileddata.cpp index a4ecc77..690f499 100644 --- a/src/declarative/qml/qdeclarativecompileddata.cpp +++ b/src/declarative/qml/qdeclarativecompileddata.cpp @@ -169,8 +169,8 @@ QDeclarativeCompiledData::QDeclarativeCompiledData(QDeclarativeEngine *engine) QDeclarativeCompiledData::~QDeclarativeCompiledData() { for (int ii = 0; ii < types.count(); ++ii) { - if (types.at(ii).ref) - types.at(ii).ref->release(); + if (types.at(ii).component) + types.at(ii).component->release(); } for (int ii = 0; ii < propertyCaches.count(); ++ii) diff --git a/src/declarative/qml/qdeclarativecompiler.cpp b/src/declarative/qml/qdeclarativecompiler.cpp index b2740b8..645402e 100644 --- a/src/declarative/qml/qdeclarativecompiler.cpp +++ b/src/declarative/qml/qdeclarativecompiler.cpp @@ -591,8 +591,6 @@ bool QDeclarativeCompiler::compile(QDeclarativeEngine *engine, } } else if (tref.typeData) { ref.component = tref.typeData->compiledData(); - ref.ref = tref.typeData; - ref.ref->addref(); } ref.className = parserRef->name.toUtf8(); out->types << ref; diff --git a/src/declarative/qml/qdeclarativecompiler_p.h b/src/declarative/qml/qdeclarativecompiler_p.h index 43a0901..5cd1fd2 100644 --- a/src/declarative/qml/qdeclarativecompiler_p.h +++ b/src/declarative/qml/qdeclarativecompiler_p.h @@ -89,14 +89,12 @@ public: struct TypeReference { TypeReference() - : type(0), component(0), ref(0) {} + : type(0), component(0) {} QByteArray className; QDeclarativeType *type; -// QDeclarativeComponent *component; QDeclarativeCompiledData *component; - QDeclarativeRefCount *ref; QObject *createInstance(QDeclarativeContextData *, const QBitField &, QList *) const; const QMetaObject *metaObject() const; }; -- cgit v0.12 From 1119a86b9752a1a58dade499a2884b89b2275a57 Mon Sep 17 00:00:00 2001 From: Aaron Kennedy Date: Fri, 19 Nov 2010 16:34:05 +1000 Subject: Allow testing of raster engine on Mac from qmlviewer --- tools/qml/main.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/tools/qml/main.cpp b/tools/qml/main.cpp index 579f1ab..209c72f 100644 --- a/tools/qml/main.cpp +++ b/tools/qml/main.cpp @@ -155,7 +155,11 @@ void usage() qWarning(" -I ........................... prepend to the module import search path,"); qWarning(" display path if is empty"); qWarning(" -P ........................... prepend to the plugin search path"); +#if defined(Q_WS_MAC) + qWarning(" -no-opengl ............................... don't use a QGLWidget for the viewport"); +#else qWarning(" -opengl .................................. use a QGLWidget for the viewport"); +#endif qWarning(" -script ........................... set the script to use"); qWarning(" -scriptopts |help ............... set the script options to use"); @@ -370,8 +374,13 @@ static void parseCommandLineOptions(const QStringList &arguments) } else if (arg == "-translation") { if (lastArg) usage(); opts.translationFile = arguments.at(++i); +#if defined(Q_WS_MAC) + } else if (arg == "-no-opengl") { + opts.useGL = false; +#else } else if (arg == "-opengl") { opts.useGL = true; +#endif } else if (arg == "-qmlbrowser") { opts.useNativeFileBrowser = false; } else if (arg == "-warnings") { -- cgit v0.12 From a26d41fc2732e225dc9a1b5eb5224cc499ae87b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan-Arve=20S=C3=A6ther?= Date: Thu, 18 Nov 2010 15:06:45 +0100 Subject: Improve performance of hfw in qgridlayoutengine by adding more caching. The previous code tried to do caching of queries with constraints too, but it's usecase was rather limited. The caching worked for the simple case of effectiveSizeHint(Qt::PreferredSize, QSize(10, -1)); effectiveSizeHint(Qt::PreferredSize, QSize(10, -1)); // uses cache The problem was that if somebody called this sequence: effectiveSizeHint(Qt::PreferredSize, QSize(10, -1)); effectiveSizeHint(Qt::PreferredSize, QSize(-1, -1)); effectiveSizeHint(Qt::PreferredSize, QSize(10, -1)); Each call would disregard the cache because the constraint was different. Now the pattern is used in the qgridlayoutengine itself when we calculate hfw: (yes, height-for-width). First, we ask for the horizontal size hints with no constraints. Then, we'll ask for the vertical size hints with constraints. Since horizontal and vertical ultimately comes from the same function (effectiveSizeHint) it will invalidate the cache each time. The solution is to add another cache for the sizeHints with constraints. The most notable improvement is in the hfw, nested case. Result: RESULT : tst_QGraphicsLinearLayout::heightForWidth():"hfw, nested": 546 msecs per iteration (total: 546, iterations: 1) RESULT : tst_QGraphicsLinearLayout::heightForWidth():"hfw, nested": 0.000029 msecs per iteration (total: 62, iterations: 2097152) Improvement: 18,827,586 times faster (!!) --- src/gui/graphicsview/qgraphicslayoutitem.cpp | 35 ++++-- src/gui/graphicsview/qgraphicslayoutitem_p.h | 2 + .../qgraphicslinearlayout.pro | 6 + .../tst_qgraphicslinearlayout.cpp | 133 +++++++++++++++++++++ 4 files changed, 165 insertions(+), 11 deletions(-) create mode 100644 tests/benchmarks/gui/graphicsview/qgraphicslinearlayout/qgraphicslinearlayout.pro create mode 100644 tests/benchmarks/gui/graphicsview/qgraphicslinearlayout/tst_qgraphicslinearlayout.cpp diff --git a/src/gui/graphicsview/qgraphicslayoutitem.cpp b/src/gui/graphicsview/qgraphicslayoutitem.cpp index e43f7fa..016cfbf 100644 --- a/src/gui/graphicsview/qgraphicslayoutitem.cpp +++ b/src/gui/graphicsview/qgraphicslayoutitem.cpp @@ -137,19 +137,28 @@ void QGraphicsLayoutItemPrivate::init() QSizeF *QGraphicsLayoutItemPrivate::effectiveSizeHints(const QSizeF &constraint) const { Q_Q(const QGraphicsLayoutItem); - if (!sizeHintCacheDirty && cachedConstraint == constraint) - return cachedSizeHints; + QSizeF *sizeHintCache; + const bool hasConstraint = constraint.width() >= 0 || constraint.height() >= 0; + if (hasConstraint) { + if (!sizeHintWithConstraintCacheDirty && constraint == cachedConstraint) + return cachedSizeHintsWithConstraints; + sizeHintCache = cachedSizeHintsWithConstraints; + } else { + if (!sizeHintCacheDirty) + return cachedSizeHints; + sizeHintCache = cachedSizeHints; + } for (int i = 0; i < Qt::NSizeHints; ++i) { - cachedSizeHints[i] = constraint; + sizeHintCache[i] = constraint; if (userSizeHints) - combineSize(cachedSizeHints[i], userSizeHints[i]); + combineSize(sizeHintCache[i], userSizeHints[i]); } - QSizeF &minS = cachedSizeHints[Qt::MinimumSize]; - QSizeF &prefS = cachedSizeHints[Qt::PreferredSize]; - QSizeF &maxS = cachedSizeHints[Qt::MaximumSize]; - QSizeF &descentS = cachedSizeHints[Qt::MinimumDescent]; + QSizeF &minS = sizeHintCache[Qt::MinimumSize]; + QSizeF &prefS = sizeHintCache[Qt::PreferredSize]; + QSizeF &maxS = sizeHintCache[Qt::MaximumSize]; + QSizeF &descentS = sizeHintCache[Qt::MinimumDescent]; normalizeHints(minS.rwidth(), prefS.rwidth(), maxS.rwidth(), descentS.rwidth()); normalizeHints(minS.rheight(), prefS.rheight(), maxS.rheight(), descentS.rheight()); @@ -175,9 +184,13 @@ QSizeF *QGraphicsLayoutItemPrivate::effectiveSizeHints(const QSizeF &constraint) // Not supported yet // COMBINE_SIZE(descentS, q->sizeHint(Qt::MinimumDescent, constraint)); - cachedConstraint = constraint; - sizeHintCacheDirty = false; - return cachedSizeHints; + if (hasConstraint) { + cachedConstraint = constraint; + sizeHintWithConstraintCacheDirty = false; + } else { + sizeHintCacheDirty = false; + } + return sizeHintCache; } diff --git a/src/gui/graphicsview/qgraphicslayoutitem_p.h b/src/gui/graphicsview/qgraphicslayoutitem_p.h index b752e03..d72ee9f 100644 --- a/src/gui/graphicsview/qgraphicslayoutitem_p.h +++ b/src/gui/graphicsview/qgraphicslayoutitem_p.h @@ -85,8 +85,10 @@ public: QSizeF *userSizeHints; mutable QSizeF cachedSizeHints[Qt::NSizeHints]; mutable QSizeF cachedConstraint; + mutable QSizeF cachedSizeHintsWithConstraints[Qt::NSizeHints]; mutable quint32 sizeHintCacheDirty : 1; + mutable quint32 sizeHintWithConstraintCacheDirty : 1; quint32 isLayout : 1; quint32 ownedByLayout : 1; diff --git a/tests/benchmarks/gui/graphicsview/qgraphicslinearlayout/qgraphicslinearlayout.pro b/tests/benchmarks/gui/graphicsview/qgraphicslinearlayout/qgraphicslinearlayout.pro new file mode 100644 index 0000000..ff85fe8 --- /dev/null +++ b/tests/benchmarks/gui/graphicsview/qgraphicslinearlayout/qgraphicslinearlayout.pro @@ -0,0 +1,6 @@ +load(qttest_p4) +TEMPLATE = app +TARGET = tst_bench_qgraphicslinearlayout + +SOURCES += tst_qgraphicslinearlayout.cpp + diff --git a/tests/benchmarks/gui/graphicsview/qgraphicslinearlayout/tst_qgraphicslinearlayout.cpp b/tests/benchmarks/gui/graphicsview/qgraphicslinearlayout/tst_qgraphicslinearlayout.cpp new file mode 100644 index 0000000..0dd9543 --- /dev/null +++ b/tests/benchmarks/gui/graphicsview/qgraphicslinearlayout/tst_qgraphicslinearlayout.cpp @@ -0,0 +1,133 @@ +/**************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the test suite of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the Technology Preview License Agreement accompanying +** this package. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** +** +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include +#include +#include +#include + +class tst_QGraphicsLinearLayout : public QObject +{ + Q_OBJECT +public: + tst_QGraphicsLinearLayout() {} + ~tst_QGraphicsLinearLayout() {} + +private slots: + void heightForWidth_data(); + void heightForWidth(); +}; + + +struct MySquareWidget : public QGraphicsWidget +{ + MySquareWidget() {} + virtual QSizeF sizeHint ( Qt::SizeHint which, const QSizeF & constraint = QSizeF() ) const + { + if (which != Qt::PreferredSize) + return QGraphicsWidget::sizeHint(which, constraint); + if (constraint.width() < 0) + return QGraphicsWidget::sizeHint(which, constraint); + return QSizeF(constraint.width(), constraint.width()); + } +}; + +void tst_QGraphicsLinearLayout::heightForWidth_data() +{ + QTest::addColumn("hfw"); + QTest::addColumn("nested"); + + QTest::newRow("hfw") << true << false; + QTest::newRow("hfw, nested") << true << true; + QTest::newRow("not hfw") << false << false; + QTest::newRow("not hfw, nested") << false << true; +} + +void tst_QGraphicsLinearLayout::heightForWidth() +{ + QFETCH(bool, hfw); + QFETCH(bool, nested); + + QGraphicsScene scene; + QGraphicsWidget *form = new QGraphicsWidget; + scene.addItem(form); + + QGraphicsLinearLayout *outerlayout = 0; + if (nested) { + outerlayout = new QGraphicsLinearLayout(form); + for(int i = 0; i < 8; i++) { + QGraphicsLinearLayout *layout = new QGraphicsLinearLayout(Qt::Vertical); + outerlayout->addItem(layout); + outerlayout = layout; + } + } + + QGraphicsLinearLayout *qlayout = 0; + qlayout = new QGraphicsLinearLayout(Qt::Vertical); + if (nested) + outerlayout->addItem(qlayout); + else + form->setLayout(qlayout); + + MySquareWidget *widget = new MySquareWidget; + for (int i = 0; i < 1; i++) { + widget = new MySquareWidget; + QSizePolicy sizepolicy = widget->sizePolicy(); + sizepolicy.setHeightForWidth(hfw); + widget->setSizePolicy(sizepolicy); + qlayout->addItem(widget); + } + // make sure only one iteration is done. + // run with tst_QGraphicsLinearLayout.exe "heightForWidth" -tickcounter -iterations 6 + // this will iterate 6 times the whole test, (not only the benchmark) + // which should reduce warmup time and give a realistic picture of the performance of + // effectiveSizeHint() + QSizeF constraint(hfw ? 100 : -1, -1); + QBENCHMARK { + (void)form->effectiveSizeHint(Qt::PreferredSize, constraint); + } + +} + + +QTEST_MAIN(tst_QGraphicsLinearLayout) + +#include "tst_qgraphicslinearlayout.moc" -- cgit v0.12 From 1960713543e2a5fee76df7dbf06ea70cf277d696 Mon Sep 17 00:00:00 2001 From: Alan Alpert Date: Fri, 19 Nov 2010 18:29:11 +1000 Subject: Initial commit of qmlvisualaids A tool to make it easier to do the platform visual updating. Needs to be streamlined at least a little in order to make it feasible to stay up to date. Task-number: QTBUG-14792 --- .../qmlvisual/shared/qmlvisualaids/Button.qml | 19 +++++ .../qmlvisual/shared/qmlvisualaids/Comparison.qml | 75 +++++++++++++++++ .../qmlvisual/shared/qmlvisualaids/main.cpp | 14 ++++ .../qmlvisual/shared/qmlvisualaids/mainwindow.cpp | 74 +++++++++++++++++ .../qmlvisual/shared/qmlvisualaids/mainwindow.h | 31 +++++++ .../qmlvisual/shared/qmlvisualaids/qmlvisual.pro | 26 ++++++ .../qmlvisual/shared/qmlvisualaids/qmlvisual.qrc | 6 ++ .../qmlvisual/shared/qmlvisualaids/testmodel.cpp | 96 ++++++++++++++++++++++ .../qmlvisual/shared/qmlvisualaids/testmodel.h | 50 +++++++++++ 9 files changed, 391 insertions(+) create mode 100644 tests/auto/declarative/qmlvisual/shared/qmlvisualaids/Button.qml create mode 100644 tests/auto/declarative/qmlvisual/shared/qmlvisualaids/Comparison.qml create mode 100644 tests/auto/declarative/qmlvisual/shared/qmlvisualaids/main.cpp create mode 100644 tests/auto/declarative/qmlvisual/shared/qmlvisualaids/mainwindow.cpp create mode 100644 tests/auto/declarative/qmlvisual/shared/qmlvisualaids/mainwindow.h create mode 100644 tests/auto/declarative/qmlvisual/shared/qmlvisualaids/qmlvisual.pro create mode 100644 tests/auto/declarative/qmlvisual/shared/qmlvisualaids/qmlvisual.qrc create mode 100644 tests/auto/declarative/qmlvisual/shared/qmlvisualaids/testmodel.cpp create mode 100644 tests/auto/declarative/qmlvisual/shared/qmlvisualaids/testmodel.h diff --git a/tests/auto/declarative/qmlvisual/shared/qmlvisualaids/Button.qml b/tests/auto/declarative/qmlvisual/shared/qmlvisualaids/Button.qml new file mode 100644 index 0000000..600079f --- /dev/null +++ b/tests/auto/declarative/qmlvisual/shared/qmlvisualaids/Button.qml @@ -0,0 +1,19 @@ +import Qt 4.7 + +Rectangle { + width: txt.width + 16 + height: txt.height + 8 + radius: 4 + border.color: "black" + property alias caption: txt.text + signal triggered + Text{ + id: txt + text: "Button" + anchors.centerIn: parent + } + MouseArea{ + anchors.fill: parent + onClicked: parent.triggered() + } +} diff --git a/tests/auto/declarative/qmlvisual/shared/qmlvisualaids/Comparison.qml b/tests/auto/declarative/qmlvisual/shared/qmlvisualaids/Comparison.qml new file mode 100644 index 0000000..43b10d4 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/shared/qmlvisualaids/Comparison.qml @@ -0,0 +1,75 @@ +import Qt 4.7 + +Item{ + width: 1000 + height:800 + Row{ + spacing: 4 + Button{ + caption: "run" + onTriggered: test.runTest() + } + + Button{ + caption: "update" + onTriggered: test.updateVisuals() + } + + Button{ + caption: "platform" + onTriggered: test.updatePlatformVisuals() + } + } + + Rectangle { + y: 180 + width: 1000 + height: 620 + Row{ + id: grid + spacing: 4 + Text{ + width: 300 + height: 200 + text: test.testName + clip: true; wrapMode: Text.WordWrap + } + Text{ + width: 300 + height: 200 + text: test.testCase + clip: true; wrapMode: Text.WordWrap + } + Text{ + width: 300 + height: 200 + text: test.testScript + clip: true; wrapMode: Text.WordWrap + } + } + Item{ + y: 200 + Row{ + ListView{ + width: 200; height: 400 + delegate: Rectangle{ width: 200; height: 200; color: "blue"; Image{ source: modelData }} + model: test.goodImages; + } + ListView{ + width: 200; height: 400 + delegate: Rectangle{ width: 200; height: 200; color: "blue"; Image{ source: modelData }} + model: test.diffImages; + } + ListView{ + width: 200; height: 400 + delegate: Rectangle{ width: 200; height: 200; color: "blue"; Image{ source: modelData }} + model: test.badImages; + } + } + } + MouseArea{ + anchors.fill: parent + onClicked: test.moveOn(); + } + } +} diff --git a/tests/auto/declarative/qmlvisual/shared/qmlvisualaids/main.cpp b/tests/auto/declarative/qmlvisual/shared/qmlvisualaids/main.cpp new file mode 100644 index 0000000..2d35350 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/shared/qmlvisualaids/main.cpp @@ -0,0 +1,14 @@ +#include +#include +#include "mainwindow.h" +#include +#include +#include + +int main(int argc, char *argv[]) +{ + QApplication a(argc, argv); + MainWindow *m = new MainWindow; + m->show(); + return a.exec(); +} diff --git a/tests/auto/declarative/qmlvisual/shared/qmlvisualaids/mainwindow.cpp b/tests/auto/declarative/qmlvisual/shared/qmlvisualaids/mainwindow.cpp new file mode 100644 index 0000000..49614ec --- /dev/null +++ b/tests/auto/declarative/qmlvisual/shared/qmlvisualaids/mainwindow.cpp @@ -0,0 +1,74 @@ +#include "mainwindow.h" +#include +#include + +MainWindow::MainWindow(QWidget *parent) : + QMainWindow(parent), testIdx(-1) +{ + createMenus(); + view = new QDeclarativeView(this); + setCentralWidget(view); + view->setResizeMode(QDeclarativeView::SizeViewToRootObject); + curTest = new TestModel(this); + connect(curTest, SIGNAL(moveOn()), + this, SLOT(runTests())); + + view->engine()->rootContext()->setContextProperty("test", curTest); + view->setSource(QUrl("qrc:qml/Comparison.qml")); +} + +void MainWindow::runAllTests() +{ + tests.clear(); + testIdx = 0; + + QString visualTest = "./tst_qmlvisual";//TODO: Crossplatform + + QProcess p;//TODO: Error checking here + p.setProcessChannelMode(QProcess::MergedChannels); + p.start(visualTest, QStringList()); + p.waitForFinished(-1);//Can't time out, because it takes an indeterminate and long time + + QString output = QString(p.readAllStandardOutput()); + QRegExp re("QDeclarativeTester\\( \"([^\"]*)\" \\)"); + int offset=0; + while((offset = re.indexIn(output, offset)) != -1){ + tests << re.cap(1); + offset++; + } + + if(tests.count()) + QMessageBox::information(this, "Test Results", QString("Tests completed. %1 test failures occurred.").arg(tests.count())); + else + QMessageBox::information(this, "Test Results", "Tests completed. All tests passed!"); + + runTests(); +} + +void MainWindow::runTests() +{ + if(testIdx >= tests.size()) + testIdx = -1; + if(testIdx == -1) + return; + showFixScreen(tests[testIdx++]); +} + +void MainWindow::showFixScreen(const QString &path) +{ + if(curTest->setTest(path)){ + view->engine()->rootContext()->setContextProperty("test", curTest); //signal connects to runTests + }else{ + QMessageBox::critical(this, "Test Error", QString("Cannot find test %1.").arg(path)); + runTests(); + } +} + +void MainWindow::createMenus() +{ + QMenu *tests = this->menuBar()->addMenu("Tests"); + tests->addAction("Run All", this, SLOT(runAllTests())); + tests->addSeparator(); + tests->addAction("About Qt...", qApp, SLOT(aboutQt())); + tests->addAction("Quit", qApp, SLOT(quit())); +} diff --git a/tests/auto/declarative/qmlvisual/shared/qmlvisualaids/mainwindow.h b/tests/auto/declarative/qmlvisual/shared/qmlvisualaids/mainwindow.h new file mode 100644 index 0000000..0209064 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/shared/qmlvisualaids/mainwindow.h @@ -0,0 +1,31 @@ +#ifndef MAINWINDOW_H +#define MAINWINDOW_H + +#include +#include +#include +#include +#include "testmodel.h" + +class MainWindow : public QMainWindow +{ + Q_OBJECT +public: + explicit MainWindow(QWidget *parent = 0); + void createMenus(); + +signals: + +public slots: + void runTests(); + void runAllTests(); + void showFixScreen(const QString& path); + +private: + QDeclarativeView* view; + TestModel *curTest; + QStringList tests; + int testIdx; +}; + +#endif // MAINWINDOW_H diff --git a/tests/auto/declarative/qmlvisual/shared/qmlvisualaids/qmlvisual.pro b/tests/auto/declarative/qmlvisual/shared/qmlvisualaids/qmlvisual.pro new file mode 100644 index 0000000..d18c235 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/shared/qmlvisualaids/qmlvisual.pro @@ -0,0 +1,26 @@ +#------------------------------------------------- +# +# Project created by QtCreator 2010-11-19T09:48:39 +# +#------------------------------------------------- + +QT += core gui declarative + +TARGET = ../../qmlvisualaids +TEMPLATE = app + + +SOURCES += main.cpp \ + testmodel.cpp \ + mainwindow.cpp + +HEADERS += \ + testmodel.h \ + mainwindow.h + +OTHER_FILES += \ + Comparison.qml \ + Button.qml + +RESOURCES += \ + qmlvisual.qrc diff --git a/tests/auto/declarative/qmlvisual/shared/qmlvisualaids/qmlvisual.qrc b/tests/auto/declarative/qmlvisual/shared/qmlvisualaids/qmlvisual.qrc new file mode 100644 index 0000000..d79b64c --- /dev/null +++ b/tests/auto/declarative/qmlvisual/shared/qmlvisualaids/qmlvisual.qrc @@ -0,0 +1,6 @@ + + + Comparison.qml + Button.qml + + diff --git a/tests/auto/declarative/qmlvisual/shared/qmlvisualaids/testmodel.cpp b/tests/auto/declarative/qmlvisual/shared/qmlvisualaids/testmodel.cpp new file mode 100644 index 0000000..4aec14b --- /dev/null +++ b/tests/auto/declarative/qmlvisual/shared/qmlvisualaids/testmodel.cpp @@ -0,0 +1,96 @@ +#include "testmodel.h" +#include +#include +#include + +TestModel::TestModel(QObject *parent) : + QObject(parent), _testName("Invalid") +{ + +} + +//testPath is the path to the test script, and assumes the file under test has the same name and is in the dir above +bool TestModel::setTest(const QString &testPath) +{ + _good.clear(); + _bad.clear(); + _diff.clear(); + + _testScriptPath = testPath; + if(!_testScriptPath.endsWith(".qml")) + _testScriptPath += ".qml"; + _testName = _testScriptPath.split('/').last(); + + //Assumed that the test case is in the directory above and has the same name as the script + _testPath = _testScriptPath.left(_testScriptPath.lastIndexOf('/', _testScriptPath.lastIndexOf('/') - 1)) + + '/' + _testName; + + bool ret = QFile::exists(_testPath) && QFile::exists(_testScriptPath); + if(!ret) + return ret; + + QFile test(_testPath); + test.open(QFile::ReadOnly | QFile::Text); + _testCase = test.readAll(); + + QFile script(_testScriptPath); + script.open(QFile::ReadOnly | QFile::Text); + _testScript = script.readAll(); + + QString base = _testScriptPath; + base.chop(4);//remove .qml, replace with .%1.png + base += ".%1.png"; + int c = 0; + while (QFile::exists(base.arg(c))) { + _good << "file://" + base.arg(c); + if(QFile::exists(base.arg(c) + ".reject.png")) + _bad << "file://" + base.arg(c) + ".reject.png"; + else + _bad << ""; + + if(QFile::exists(base.arg(c) + ".diff.png")) + _diff << "file://" + base.arg(c) + ".diff.png"; + else + _diff << ""; + + c++; + } + + return ret; +} + +//returns true iff running the test changed the failure images. +bool TestModel::runTest() +{ + launchTester("-play"); + return false;//TODO: Actually check that +} + +void TestModel::updateVisuals() +{ + launchTester("-updatevisuals"); +} + +void TestModel::updatePlatformVisuals() +{ + launchTester("-updateplatformvisuals"); +} + +void TestModel::launchTester(const QString &args) +{ + QStringList arguments; + arguments << args << _testPath; + + QString visualTest; +#if defined(Q_WS_WIN) || defined(Q_WS_S60) + visualTest = "tst_qmlvisual.exe"; +#else + visualTest = "./tst_qmlvisual"; +#endif + + QProcess p; + p.setProcessChannelMode(QProcess::ForwardedChannels); + p.start(visualTest, arguments); + p.waitForFinished(); +} + diff --git a/tests/auto/declarative/qmlvisual/shared/qmlvisualaids/testmodel.h b/tests/auto/declarative/qmlvisual/shared/qmlvisualaids/testmodel.h new file mode 100644 index 0000000..fd64dc2 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/shared/qmlvisualaids/testmodel.h @@ -0,0 +1,50 @@ +#ifndef TESTMODEL_H +#define TESTMODEL_H + +#include +#include +#include + +class TestModel : public QObject +{ + Q_OBJECT + Q_PROPERTY(int snapshotCount READ snapshotCount CONSTANT) + Q_PROPERTY(QStringList goodImages READ goodImages CONSTANT)//List of image locatoins + Q_PROPERTY(QStringList badImages READ badImages CONSTANT) + Q_PROPERTY(QStringList diffImages READ diffImages CONSTANT) + Q_PROPERTY(QString testName READ testName CONSTANT) //The qml file name + Q_PROPERTY(QString testCase READ testCase CONSTANT) //The actual contents, not the location + Q_PROPERTY(QString testScript READ testScript CONSTANT) //The actual contents, not the location +public: + explicit TestModel(QObject *parent = 0); + bool setTest(const QString &testPath);//testPath is the path to the test script, and assumes the file under test has the same name and is in the dir above + + int snapshotCount() { return _count; } + QString testCase() { return _testCase; } + QString testName() { return _testName; } + QString testScript() {return _testScript; } + QStringList goodImages() {return _good;} + QStringList badImages() { return _bad; } + QStringList diffImages() {return _diff;} + +signals: + void moveOn(); + +public slots: + bool runTest();//returns true iff running the test changed the failure images. + void updateVisuals(); + void updatePlatformVisuals(); + +private: + void launchTester(const QString &args); + + int _count; + QStringList _good,_bad,_diff; + QString _testCase; + QString _testScript; + QString _testPath; + QString _testScriptPath; + QString _testName; +}; + +#endif // TESTMODEL_H -- cgit v0.12 From 18205faa87abd85d0848291738821666928b5769 Mon Sep 17 00:00:00 2001 From: Alan Alpert Date: Fri, 19 Nov 2010 19:31:01 +1000 Subject: Move qmlvisualaids to another repo Moved to a personal repo, since its fate is a little uncertain so it shouldn't draw this much attention. Task-number: QTBUG-14792 --- .../qmlvisual/shared/qmlvisualaids/Button.qml | 19 ----- .../qmlvisual/shared/qmlvisualaids/Comparison.qml | 75 ----------------- .../qmlvisual/shared/qmlvisualaids/main.cpp | 14 ---- .../qmlvisual/shared/qmlvisualaids/mainwindow.cpp | 74 ----------------- .../qmlvisual/shared/qmlvisualaids/mainwindow.h | 31 ------- .../qmlvisual/shared/qmlvisualaids/qmlvisual.pro | 26 ------ .../qmlvisual/shared/qmlvisualaids/qmlvisual.qrc | 6 -- .../qmlvisual/shared/qmlvisualaids/testmodel.cpp | 96 ---------------------- .../qmlvisual/shared/qmlvisualaids/testmodel.h | 50 ----------- 9 files changed, 391 deletions(-) delete mode 100644 tests/auto/declarative/qmlvisual/shared/qmlvisualaids/Button.qml delete mode 100644 tests/auto/declarative/qmlvisual/shared/qmlvisualaids/Comparison.qml delete mode 100644 tests/auto/declarative/qmlvisual/shared/qmlvisualaids/main.cpp delete mode 100644 tests/auto/declarative/qmlvisual/shared/qmlvisualaids/mainwindow.cpp delete mode 100644 tests/auto/declarative/qmlvisual/shared/qmlvisualaids/mainwindow.h delete mode 100644 tests/auto/declarative/qmlvisual/shared/qmlvisualaids/qmlvisual.pro delete mode 100644 tests/auto/declarative/qmlvisual/shared/qmlvisualaids/qmlvisual.qrc delete mode 100644 tests/auto/declarative/qmlvisual/shared/qmlvisualaids/testmodel.cpp delete mode 100644 tests/auto/declarative/qmlvisual/shared/qmlvisualaids/testmodel.h diff --git a/tests/auto/declarative/qmlvisual/shared/qmlvisualaids/Button.qml b/tests/auto/declarative/qmlvisual/shared/qmlvisualaids/Button.qml deleted file mode 100644 index 600079f..0000000 --- a/tests/auto/declarative/qmlvisual/shared/qmlvisualaids/Button.qml +++ /dev/null @@ -1,19 +0,0 @@ -import Qt 4.7 - -Rectangle { - width: txt.width + 16 - height: txt.height + 8 - radius: 4 - border.color: "black" - property alias caption: txt.text - signal triggered - Text{ - id: txt - text: "Button" - anchors.centerIn: parent - } - MouseArea{ - anchors.fill: parent - onClicked: parent.triggered() - } -} diff --git a/tests/auto/declarative/qmlvisual/shared/qmlvisualaids/Comparison.qml b/tests/auto/declarative/qmlvisual/shared/qmlvisualaids/Comparison.qml deleted file mode 100644 index 43b10d4..0000000 --- a/tests/auto/declarative/qmlvisual/shared/qmlvisualaids/Comparison.qml +++ /dev/null @@ -1,75 +0,0 @@ -import Qt 4.7 - -Item{ - width: 1000 - height:800 - Row{ - spacing: 4 - Button{ - caption: "run" - onTriggered: test.runTest() - } - - Button{ - caption: "update" - onTriggered: test.updateVisuals() - } - - Button{ - caption: "platform" - onTriggered: test.updatePlatformVisuals() - } - } - - Rectangle { - y: 180 - width: 1000 - height: 620 - Row{ - id: grid - spacing: 4 - Text{ - width: 300 - height: 200 - text: test.testName - clip: true; wrapMode: Text.WordWrap - } - Text{ - width: 300 - height: 200 - text: test.testCase - clip: true; wrapMode: Text.WordWrap - } - Text{ - width: 300 - height: 200 - text: test.testScript - clip: true; wrapMode: Text.WordWrap - } - } - Item{ - y: 200 - Row{ - ListView{ - width: 200; height: 400 - delegate: Rectangle{ width: 200; height: 200; color: "blue"; Image{ source: modelData }} - model: test.goodImages; - } - ListView{ - width: 200; height: 400 - delegate: Rectangle{ width: 200; height: 200; color: "blue"; Image{ source: modelData }} - model: test.diffImages; - } - ListView{ - width: 200; height: 400 - delegate: Rectangle{ width: 200; height: 200; color: "blue"; Image{ source: modelData }} - model: test.badImages; - } - } - } - MouseArea{ - anchors.fill: parent - onClicked: test.moveOn(); - } - } -} diff --git a/tests/auto/declarative/qmlvisual/shared/qmlvisualaids/main.cpp b/tests/auto/declarative/qmlvisual/shared/qmlvisualaids/main.cpp deleted file mode 100644 index 2d35350..0000000 --- a/tests/auto/declarative/qmlvisual/shared/qmlvisualaids/main.cpp +++ /dev/null @@ -1,14 +0,0 @@ -#include -#include -#include "mainwindow.h" -#include -#include -#include - -int main(int argc, char *argv[]) -{ - QApplication a(argc, argv); - MainWindow *m = new MainWindow; - m->show(); - return a.exec(); -} diff --git a/tests/auto/declarative/qmlvisual/shared/qmlvisualaids/mainwindow.cpp b/tests/auto/declarative/qmlvisual/shared/qmlvisualaids/mainwindow.cpp deleted file mode 100644 index 49614ec..0000000 --- a/tests/auto/declarative/qmlvisual/shared/qmlvisualaids/mainwindow.cpp +++ /dev/null @@ -1,74 +0,0 @@ -#include "mainwindow.h" -#include -#include - -MainWindow::MainWindow(QWidget *parent) : - QMainWindow(parent), testIdx(-1) -{ - createMenus(); - view = new QDeclarativeView(this); - setCentralWidget(view); - view->setResizeMode(QDeclarativeView::SizeViewToRootObject); - curTest = new TestModel(this); - connect(curTest, SIGNAL(moveOn()), - this, SLOT(runTests())); - - view->engine()->rootContext()->setContextProperty("test", curTest); - view->setSource(QUrl("qrc:qml/Comparison.qml")); -} - -void MainWindow::runAllTests() -{ - tests.clear(); - testIdx = 0; - - QString visualTest = "./tst_qmlvisual";//TODO: Crossplatform - - QProcess p;//TODO: Error checking here - p.setProcessChannelMode(QProcess::MergedChannels); - p.start(visualTest, QStringList()); - p.waitForFinished(-1);//Can't time out, because it takes an indeterminate and long time - - QString output = QString(p.readAllStandardOutput()); - QRegExp re("QDeclarativeTester\\( \"([^\"]*)\" \\)"); - int offset=0; - while((offset = re.indexIn(output, offset)) != -1){ - tests << re.cap(1); - offset++; - } - - if(tests.count()) - QMessageBox::information(this, "Test Results", QString("Tests completed. %1 test failures occurred.").arg(tests.count())); - else - QMessageBox::information(this, "Test Results", "Tests completed. All tests passed!"); - - runTests(); -} - -void MainWindow::runTests() -{ - if(testIdx >= tests.size()) - testIdx = -1; - if(testIdx == -1) - return; - showFixScreen(tests[testIdx++]); -} - -void MainWindow::showFixScreen(const QString &path) -{ - if(curTest->setTest(path)){ - view->engine()->rootContext()->setContextProperty("test", curTest); //signal connects to runTests - }else{ - QMessageBox::critical(this, "Test Error", QString("Cannot find test %1.").arg(path)); - runTests(); - } -} - -void MainWindow::createMenus() -{ - QMenu *tests = this->menuBar()->addMenu("Tests"); - tests->addAction("Run All", this, SLOT(runAllTests())); - tests->addSeparator(); - tests->addAction("About Qt...", qApp, SLOT(aboutQt())); - tests->addAction("Quit", qApp, SLOT(quit())); -} diff --git a/tests/auto/declarative/qmlvisual/shared/qmlvisualaids/mainwindow.h b/tests/auto/declarative/qmlvisual/shared/qmlvisualaids/mainwindow.h deleted file mode 100644 index 0209064..0000000 --- a/tests/auto/declarative/qmlvisual/shared/qmlvisualaids/mainwindow.h +++ /dev/null @@ -1,31 +0,0 @@ -#ifndef MAINWINDOW_H -#define MAINWINDOW_H - -#include -#include -#include -#include -#include "testmodel.h" - -class MainWindow : public QMainWindow -{ - Q_OBJECT -public: - explicit MainWindow(QWidget *parent = 0); - void createMenus(); - -signals: - -public slots: - void runTests(); - void runAllTests(); - void showFixScreen(const QString& path); - -private: - QDeclarativeView* view; - TestModel *curTest; - QStringList tests; - int testIdx; -}; - -#endif // MAINWINDOW_H diff --git a/tests/auto/declarative/qmlvisual/shared/qmlvisualaids/qmlvisual.pro b/tests/auto/declarative/qmlvisual/shared/qmlvisualaids/qmlvisual.pro deleted file mode 100644 index d18c235..0000000 --- a/tests/auto/declarative/qmlvisual/shared/qmlvisualaids/qmlvisual.pro +++ /dev/null @@ -1,26 +0,0 @@ -#------------------------------------------------- -# -# Project created by QtCreator 2010-11-19T09:48:39 -# -#------------------------------------------------- - -QT += core gui declarative - -TARGET = ../../qmlvisualaids -TEMPLATE = app - - -SOURCES += main.cpp \ - testmodel.cpp \ - mainwindow.cpp - -HEADERS += \ - testmodel.h \ - mainwindow.h - -OTHER_FILES += \ - Comparison.qml \ - Button.qml - -RESOURCES += \ - qmlvisual.qrc diff --git a/tests/auto/declarative/qmlvisual/shared/qmlvisualaids/qmlvisual.qrc b/tests/auto/declarative/qmlvisual/shared/qmlvisualaids/qmlvisual.qrc deleted file mode 100644 index d79b64c..0000000 --- a/tests/auto/declarative/qmlvisual/shared/qmlvisualaids/qmlvisual.qrc +++ /dev/null @@ -1,6 +0,0 @@ - - - Comparison.qml - Button.qml - - diff --git a/tests/auto/declarative/qmlvisual/shared/qmlvisualaids/testmodel.cpp b/tests/auto/declarative/qmlvisual/shared/qmlvisualaids/testmodel.cpp deleted file mode 100644 index 4aec14b..0000000 --- a/tests/auto/declarative/qmlvisual/shared/qmlvisualaids/testmodel.cpp +++ /dev/null @@ -1,96 +0,0 @@ -#include "testmodel.h" -#include -#include -#include - -TestModel::TestModel(QObject *parent) : - QObject(parent), _testName("Invalid") -{ - -} - -//testPath is the path to the test script, and assumes the file under test has the same name and is in the dir above -bool TestModel::setTest(const QString &testPath) -{ - _good.clear(); - _bad.clear(); - _diff.clear(); - - _testScriptPath = testPath; - if(!_testScriptPath.endsWith(".qml")) - _testScriptPath += ".qml"; - _testName = _testScriptPath.split('/').last(); - - //Assumed that the test case is in the directory above and has the same name as the script - _testPath = _testScriptPath.left(_testScriptPath.lastIndexOf('/', _testScriptPath.lastIndexOf('/') - 1)) - + '/' + _testName; - - bool ret = QFile::exists(_testPath) && QFile::exists(_testScriptPath); - if(!ret) - return ret; - - QFile test(_testPath); - test.open(QFile::ReadOnly | QFile::Text); - _testCase = test.readAll(); - - QFile script(_testScriptPath); - script.open(QFile::ReadOnly | QFile::Text); - _testScript = script.readAll(); - - QString base = _testScriptPath; - base.chop(4);//remove .qml, replace with .%1.png - base += ".%1.png"; - int c = 0; - while (QFile::exists(base.arg(c))) { - _good << "file://" + base.arg(c); - if(QFile::exists(base.arg(c) + ".reject.png")) - _bad << "file://" + base.arg(c) + ".reject.png"; - else - _bad << ""; - - if(QFile::exists(base.arg(c) + ".diff.png")) - _diff << "file://" + base.arg(c) + ".diff.png"; - else - _diff << ""; - - c++; - } - - return ret; -} - -//returns true iff running the test changed the failure images. -bool TestModel::runTest() -{ - launchTester("-play"); - return false;//TODO: Actually check that -} - -void TestModel::updateVisuals() -{ - launchTester("-updatevisuals"); -} - -void TestModel::updatePlatformVisuals() -{ - launchTester("-updateplatformvisuals"); -} - -void TestModel::launchTester(const QString &args) -{ - QStringList arguments; - arguments << args << _testPath; - - QString visualTest; -#if defined(Q_WS_WIN) || defined(Q_WS_S60) - visualTest = "tst_qmlvisual.exe"; -#else - visualTest = "./tst_qmlvisual"; -#endif - - QProcess p; - p.setProcessChannelMode(QProcess::ForwardedChannels); - p.start(visualTest, arguments); - p.waitForFinished(); -} - diff --git a/tests/auto/declarative/qmlvisual/shared/qmlvisualaids/testmodel.h b/tests/auto/declarative/qmlvisual/shared/qmlvisualaids/testmodel.h deleted file mode 100644 index fd64dc2..0000000 --- a/tests/auto/declarative/qmlvisual/shared/qmlvisualaids/testmodel.h +++ /dev/null @@ -1,50 +0,0 @@ -#ifndef TESTMODEL_H -#define TESTMODEL_H - -#include -#include -#include - -class TestModel : public QObject -{ - Q_OBJECT - Q_PROPERTY(int snapshotCount READ snapshotCount CONSTANT) - Q_PROPERTY(QStringList goodImages READ goodImages CONSTANT)//List of image locatoins - Q_PROPERTY(QStringList badImages READ badImages CONSTANT) - Q_PROPERTY(QStringList diffImages READ diffImages CONSTANT) - Q_PROPERTY(QString testName READ testName CONSTANT) //The qml file name - Q_PROPERTY(QString testCase READ testCase CONSTANT) //The actual contents, not the location - Q_PROPERTY(QString testScript READ testScript CONSTANT) //The actual contents, not the location -public: - explicit TestModel(QObject *parent = 0); - bool setTest(const QString &testPath);//testPath is the path to the test script, and assumes the file under test has the same name and is in the dir above - - int snapshotCount() { return _count; } - QString testCase() { return _testCase; } - QString testName() { return _testName; } - QString testScript() {return _testScript; } - QStringList goodImages() {return _good;} - QStringList badImages() { return _bad; } - QStringList diffImages() {return _diff;} - -signals: - void moveOn(); - -public slots: - bool runTest();//returns true iff running the test changed the failure images. - void updateVisuals(); - void updatePlatformVisuals(); - -private: - void launchTester(const QString &args); - - int _count; - QStringList _good,_bad,_diff; - QString _testCase; - QString _testScript; - QString _testPath; - QString _testScriptPath; - QString _testName; -}; - -#endif // TESTMODEL_H -- cgit v0.12 From ba4eafaa3bd46cfad891a4bbf1dd7dccefc4702e Mon Sep 17 00:00:00 2001 From: Harald Fernengel Date: Fri, 19 Nov 2010 10:58:09 +0100 Subject: silence compiler warnings Silence shadowing warnings from gcc. --- src/sql/models/qsqlrelationaldelegate.h | 10 +++++----- src/testlib/qtesttouch.h | 4 ++-- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/sql/models/qsqlrelationaldelegate.h b/src/sql/models/qsqlrelationaldelegate.h index 7600e52..96760e1 100644 --- a/src/sql/models/qsqlrelationaldelegate.h +++ b/src/sql/models/qsqlrelationaldelegate.h @@ -59,23 +59,23 @@ class QSqlRelationalDelegate: public QItemDelegate { public: -explicit QSqlRelationalDelegate(QObject *parent = 0) - : QItemDelegate(parent) +explicit QSqlRelationalDelegate(QObject *aParent = 0) + : QItemDelegate(aParent) {} ~QSqlRelationalDelegate() {} -QWidget *createEditor(QWidget *parent, +QWidget *createEditor(QWidget *aParent, const QStyleOptionViewItem &option, const QModelIndex &index) const { const QSqlRelationalTableModel *sqlModel = qobject_cast(index.model()); QSqlTableModel *childModel = sqlModel ? sqlModel->relationModel(index.column()) : 0; if (!childModel) - return QItemDelegate::createEditor(parent, option, index); + return QItemDelegate::createEditor(aParent, option, index); - QComboBox *combo = new QComboBox(parent); + QComboBox *combo = new QComboBox(aParent); combo->setModel(childModel); combo->setModelColumn(childModel->fieldIndex(sqlModel->relation(index.column()).displayColumn())); combo->installEventFilter(const_cast(this)); diff --git a/src/testlib/qtesttouch.h b/src/testlib/qtesttouch.h index 1beef85..6c58e4c 100644 --- a/src/testlib/qtesttouch.h +++ b/src/testlib/qtesttouch.h @@ -106,8 +106,8 @@ namespace QTest } private: - QTouchEventSequence(QWidget *widget, QTouchEvent::DeviceType deviceType) - : targetWidget(widget), deviceType(deviceType) + QTouchEventSequence(QWidget *widget, QTouchEvent::DeviceType aDeviceType) + : targetWidget(widget), deviceType(aDeviceType) { } QTouchEventSequence(const QTouchEventSequence &v); -- cgit v0.12 From 4258dd04e25c8831be9e8a7dc45b52d34782cb35 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan-Arve=20S=C3=A6ther?= Date: Fri, 19 Nov 2010 11:19:32 +0100 Subject: Fix the tests that got affected by the behaviour added in 604c51f1fc5c79 Task-number: QTBUG-13551 Task-number: QTBUG-7756 --- tests/auto/qgraphicsgridlayout/tst_qgraphicsgridlayout.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/auto/qgraphicsgridlayout/tst_qgraphicsgridlayout.cpp b/tests/auto/qgraphicsgridlayout/tst_qgraphicsgridlayout.cpp index 2e52c4e..35ea059 100644 --- a/tests/auto/qgraphicsgridlayout/tst_qgraphicsgridlayout.cpp +++ b/tests/auto/qgraphicsgridlayout/tst_qgraphicsgridlayout.cpp @@ -2541,7 +2541,7 @@ void tst_QGraphicsGridLayout::geometries_data() .sizeHint(Qt::MaximumSize, QSizeF(5000,5000)) .heightForWidth(hfw1) ) - << QSizeF(160, 401) + << QSizeF(160, 350) << (RectList() << QRectF( 0, 0, 80, 100) << QRectF( 80, 0, 80, 100) << QRectF( 0, 100, 80, 100) << QRectF( 80, 100, 80, 250) @@ -2566,7 +2566,7 @@ void tst_QGraphicsGridLayout::geometries_data() .sizeHint(Qt::MaximumSize, QSizeF(5000,5000)) .heightForWidth(hfw1) ) - << QSizeF(500, 401) + << QSizeF(500, 200) << (RectList() << QRectF( 0, 0, 100, 100) << QRectF(100, 0, 100, 100) << QRectF( 0, 100, 100, 100) << QRectF(100, 100, 400, 50) -- cgit v0.12 From 4e9b721af573e7d1a16b35778059b374520cf055 Mon Sep 17 00:00:00 2001 From: Sam Magnuson Date: Fri, 19 Nov 2010 11:24:58 +0100 Subject: Compile with QT_NO_PROXYSCREEN. Merge-request: 931 Reviewed-by: Oswald Buddenhagen --- src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.cpp b/src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.cpp index 2eeee24..fbc539b 100644 --- a/src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.cpp +++ b/src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.cpp @@ -344,9 +344,11 @@ void QDirectFBWindowSurface::flush(QWidget *widget, const QRegion ®ion, if (!win) return; +#ifndef QT_NO_QWS_PROXYSCREEN QWExtra *extra = qt_widget_private(widget)->extraData(); if (extra && extra->proxyWidget) return; +#endif const quint8 windowOpacity = quint8(win->windowOpacity() * 0xff); const QRect windowGeometry = geometry(); -- cgit v0.12 From 00e99440596d8bf648aefdfbb00e80004e328033 Mon Sep 17 00:00:00 2001 From: Titta Heikkala Date: Fri, 19 Nov 2010 09:47:55 +0200 Subject: Corrected ASCII comparison and removed extra braces Corrected ASCII comparison and removed extra braces based on comments Task-number: QT-3917 Reviewed-by: Janne Koskinen Merge-request: 918 Reviewed-by: Janne Koskinen --- src/gui/dialogs/qfiledialog.cpp | 3 +-- src/gui/dialogs/qfiledialog_symbian.cpp | 32 ++++++++++++++------------------ 2 files changed, 15 insertions(+), 20 deletions(-) diff --git a/src/gui/dialogs/qfiledialog.cpp b/src/gui/dialogs/qfiledialog.cpp index 1db9789..f3f7469 100644 --- a/src/gui/dialogs/qfiledialog.cpp +++ b/src/gui/dialogs/qfiledialog.cpp @@ -1964,9 +1964,8 @@ QString QFileDialog::getExistingDirectory(QWidget *parent, if (qt_filedialog_existing_directory_hook && !(options & DontUseNativeDialog)) return qt_filedialog_existing_directory_hook(parent, caption, dir, options); #if defined(Q_WS_S60) - if (QSysInfo::s60Version() > QSysInfo::SV_S60_5_0 && !(options & DontUseNativeDialog)) { + if (QSysInfo::s60Version() > QSysInfo::SV_S60_5_0 && !(options & DontUseNativeDialog)) return qtSymbianGetExistingDirectory(caption, dir); - } #endif QFileDialogArgs args; args.parent = parent; diff --git a/src/gui/dialogs/qfiledialog_symbian.cpp b/src/gui/dialogs/qfiledialog_symbian.cpp index 0277e1c..1f70305 100644 --- a/src/gui/dialogs/qfiledialog_symbian.cpp +++ b/src/gui/dialogs/qfiledialog_symbian.cpp @@ -86,26 +86,25 @@ public: TBool Accept(const TDesC &/*aDriveAndPath*/, const TEntry &aEntry) const { - if (aEntry.IsDir()) { + if (aEntry.IsDir()) return ETrue; - } - if (filterList.isEmpty()) { - //No filter for files, all can be accepted + + //If no filter for files, all can be accepted + if (filterList.isEmpty()) return ETrue; - } - if (filterList == QStringList(QLatin1String("(*)"))) { + + if (filterList == QStringList(QLatin1String("(*)"))) return ETrue; - } + for (int i = 0; i < filterList.size(); ++i) { QString extension = filterList.at(i); //remove '*' from the beginning of the extension - if (extension.left(1) == "*"){ - extension = extension.right(extension.size() - 1); - } + if (extension.at(0) == QLatin1Char('*')) + extension = extension.mid(1); + QString fileName = qt_TDesC2QString(aEntry.iName); - if (fileName.right(extension.size()) == extension) { + if (fileName.endsWith(extension)) return ETrue; - } } return EFalse; } @@ -140,18 +139,15 @@ static QString launchSymbianDialog(const QString dialogCaption, const QString st select = AknCommonDialogsDynMem::RunSelectDlgLD(types, target, startFolder, NULL, NULL, titlePtr, extensionFilter); CleanupStack::Pop(extensionFilter); - } - else if (dialogMode == DialogSave) { + } else if (dialogMode == DialogSave) { select = AknCommonDialogsDynMem::RunSaveDlgLD(types, target, startFolder, NULL, NULL, titlePtr); - } - else if (dialogMode == DialogFolder) { + } else if (dialogMode == DialogFolder) { select = AknCommonDialogsDynMem::RunFolderSelectDlgLD(types, target, startFolder, 0, 0, titlePtr, NULL, NULL); } - if (select) { + if (select) selection.append(qt_TDesC2QString(target)); - } ); #endif return selection; -- cgit v0.12 From b0691b5a95c80ecd94867873e912e6952a2ec1b4 Mon Sep 17 00:00:00 2001 From: Sami Merila Date: Fri, 19 Nov 2010 12:45:46 +0200 Subject: QS60Style: Null pointer crash when using itemviews in some cases QS60Style attempts to use null pointer when drawing CE_ItemViewItem, if the parameter widget is provided as null. This leads to, for example, Chart example app crash in startup. Reviewed-by: Janne Anttila --- src/gui/styles/qs60style.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/gui/styles/qs60style.cpp b/src/gui/styles/qs60style.cpp index 5fe9050..22cb7d6 100644 --- a/src/gui/styles/qs60style.cpp +++ b/src/gui/styles/qs60style.cpp @@ -1438,10 +1438,11 @@ void QS60Style::drawControl(ControlElement element, const QStyleOption *option, const QRect iconRect = subElementRect(SE_ItemViewItemDecoration, &voptAdj, widget); QRect textRect = subElementRect(SE_ItemViewItemText, &voptAdj, widget); const QAbstractItemView *itemView = qobject_cast(widget); - const bool singleSelection = - (itemView->selectionMode() == QAbstractItemView::SingleSelection || - itemView->selectionMode() == QAbstractItemView::NoSelection); - const bool selectItems = (itemView->selectionBehavior() == QAbstractItemView::SelectItems); + + const bool singleSelection = itemView && + ((itemView->selectionMode() == QAbstractItemView::SingleSelection || + itemView->selectionMode() == QAbstractItemView::NoSelection)); + const bool selectItems = itemView && (itemView->selectionBehavior() == QAbstractItemView::SelectItems); // draw themed background for itemview unless background brush has been defined. if (vopt->backgroundBrush == Qt::NoBrush) { -- cgit v0.12 From 1be70363b77b0a2ff75a23b5973861922f7a85c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan-Arve=20S=C3=A6ther?= Date: Fri, 19 Nov 2010 11:47:42 +0100 Subject: Fix code style --- .../graphicsview/qgraphicslinearlayout/tst_qgraphicslinearlayout.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/benchmarks/gui/graphicsview/qgraphicslinearlayout/tst_qgraphicslinearlayout.cpp b/tests/benchmarks/gui/graphicsview/qgraphicslinearlayout/tst_qgraphicslinearlayout.cpp index 0dd9543..dc415fb 100644 --- a/tests/benchmarks/gui/graphicsview/qgraphicslinearlayout/tst_qgraphicslinearlayout.cpp +++ b/tests/benchmarks/gui/graphicsview/qgraphicslinearlayout/tst_qgraphicslinearlayout.cpp @@ -93,7 +93,7 @@ void tst_QGraphicsLinearLayout::heightForWidth() QGraphicsLinearLayout *outerlayout = 0; if (nested) { outerlayout = new QGraphicsLinearLayout(form); - for(int i = 0; i < 8; i++) { + for (int i = 0; i < 8; i++) { QGraphicsLinearLayout *layout = new QGraphicsLinearLayout(Qt::Vertical); outerlayout->addItem(layout); outerlayout = layout; -- cgit v0.12 From becc25ad78a89199764a54f45248e4113600f0af Mon Sep 17 00:00:00 2001 From: Sami Merila Date: Fri, 19 Nov 2010 12:52:06 +0200 Subject: QS60Style: Null pointer crash when using itemviews in some cases (pt2) Also remove accidentally added whitespaces. Task-number: QTBUG-15455 Reviewed-by: TrustMe --- src/gui/styles/qs60style.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/gui/styles/qs60style.cpp b/src/gui/styles/qs60style.cpp index a58c8e5..2f09529 100644 --- a/src/gui/styles/qs60style.cpp +++ b/src/gui/styles/qs60style.cpp @@ -1438,8 +1438,8 @@ void QS60Style::drawControl(ControlElement element, const QStyleOption *option, const QRect iconRect = subElementRect(SE_ItemViewItemDecoration, &voptAdj, widget); QRect textRect = subElementRect(SE_ItemViewItemText, &voptAdj, widget); const QAbstractItemView *itemView = qobject_cast(widget); - - const bool singleSelection = itemView && + + const bool singleSelection = itemView && ((itemView->selectionMode() == QAbstractItemView::SingleSelection || itemView->selectionMode() == QAbstractItemView::NoSelection)); const bool selectItems = itemView && (itemView->selectionBehavior() == QAbstractItemView::SelectItems); -- cgit v0.12 From 72f161739b270b01807f97cd853030440f0fd430 Mon Sep 17 00:00:00 2001 From: Eskil Abrahamsen Blomfeldt Date: Fri, 19 Nov 2010 12:38:36 +0100 Subject: Fix possible corrupted text when gl glyph cache becomes full When the OpenGL glyph cache filled up (the max texture size on the hardware was exceeded) the characters would be drawn as black blocks instead. As a work-around for this, the cache will now be cleared and repopulated whenever this happens, meaning that once in a while (when a lot of different glyphs have been drawn in a font) there will be a performance hit. A more complete solution is described in QTBUG-13784, but this requires so much refactoring that it was deemed too risky for a patch release. This patch fixes the problem with a small penalty and low risk. Task-number: QT-3971 Reviewed-by: Samuel --- src/gui/painting/qtextureglyphcache.cpp | 13 ++++++++++--- src/gui/painting/qtextureglyphcache_p.h | 2 +- .../gl2paintengineex/qpaintengineex_opengl2.cpp | 9 +++++++-- src/opengl/gl2paintengineex/qtextureglyphcache_gl.cpp | 19 ++++++++++++++++++- src/opengl/gl2paintengineex/qtextureglyphcache_gl_p.h | 2 ++ 5 files changed, 38 insertions(+), 7 deletions(-) diff --git a/src/gui/painting/qtextureglyphcache.cpp b/src/gui/painting/qtextureglyphcache.cpp index b609f7b..2cd7780 100644 --- a/src/gui/painting/qtextureglyphcache.cpp +++ b/src/gui/painting/qtextureglyphcache.cpp @@ -65,7 +65,7 @@ static inline int qt_next_power_of_two(int v) return v; } -void QTextureGlyphCache::populate(QFontEngine *fontEngine, int numGlyphs, const glyph_t *glyphs, +bool QTextureGlyphCache::populate(QFontEngine *fontEngine, int numGlyphs, const glyph_t *glyphs, const QFixedPoint *) { #ifdef CACHE_DEBUG @@ -119,7 +119,7 @@ void QTextureGlyphCache::populate(QFontEngine *fontEngine, int numGlyphs, const rowHeight = qMax(rowHeight, glyph_height); } if (listItemCoordinates.isEmpty()) - return; + return true; rowHeight += margin * 2 + paddingDoubled; if (isNull()) @@ -150,6 +150,13 @@ void QTextureGlyphCache::populate(QFontEngine *fontEngine, int numGlyphs, const int new_height = m_h*2; while (new_height < m_cy + c.h) new_height *= 2; + + if (new_height > maxTextureHeight()) { + // We can't make a new texture of the required size, so + // bail out + return false; + } + // if no room in the current texture - realloc a larger texture resizeTextureData(m_w, new_height); m_h = new_height; @@ -165,7 +172,7 @@ void QTextureGlyphCache::populate(QFontEngine *fontEngine, int numGlyphs, const ++iter; } - + return true; } QImage QTextureGlyphCache::textureMapForGlyph(glyph_t g) const diff --git a/src/gui/painting/qtextureglyphcache_p.h b/src/gui/painting/qtextureglyphcache_p.h index e6d2b22..f84d1e6 100644 --- a/src/gui/painting/qtextureglyphcache_p.h +++ b/src/gui/painting/qtextureglyphcache_p.h @@ -96,7 +96,7 @@ public: int baseLineY; }; - void populate(QFontEngine *fontEngine, int numGlyphs, const glyph_t *glyphs, + bool populate(QFontEngine *fontEngine, int numGlyphs, const glyph_t *glyphs, const QFixedPoint *positions); virtual void createTextureData(int width, int height) = 0; diff --git a/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp b/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp index 37552ac..3ddc15a 100644 --- a/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp +++ b/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp @@ -1499,8 +1499,13 @@ void QGL2PaintEngineExPrivate::drawCachedGlyphs(QFontEngineGlyphCache::Type glyp // cache so this text is performed before we test if the cache size has changed. if (recreateVertexArrays) { cache->setPaintEnginePrivate(this); - cache->populate(staticTextItem->fontEngine(), staticTextItem->numGlyphs, - staticTextItem->glyphs, staticTextItem->glyphPositions); + if (!cache->populate(staticTextItem->fontEngine(), staticTextItem->numGlyphs, + staticTextItem->glyphs, staticTextItem->glyphPositions)) { + // No space in cache. We need to clear the cache and try again + cache->clear(); + cache->populate(staticTextItem->fontEngine(), staticTextItem->numGlyphs, + staticTextItem->glyphs, staticTextItem->glyphPositions); + } } if (cache->width() == 0 || cache->height() == 0) diff --git a/src/opengl/gl2paintengineex/qtextureglyphcache_gl.cpp b/src/opengl/gl2paintengineex/qtextureglyphcache_gl.cpp index 28e8c40..705ad09 100644 --- a/src/opengl/gl2paintengineex/qtextureglyphcache_gl.cpp +++ b/src/opengl/gl2paintengineex/qtextureglyphcache_gl.cpp @@ -78,7 +78,7 @@ void QGLTextureGlyphCache::setContext(QGLContext *context) SLOT(contextDestroyed(const QGLContext*))); } -QGLTextureGlyphCache::~QGLTextureGlyphCache() +void QGLTextureGlyphCache::clear() { if (ctx) { QGLShareContextScope scope(ctx); @@ -88,7 +88,24 @@ QGLTextureGlyphCache::~QGLTextureGlyphCache() if (m_width || m_height) glDeleteTextures(1, &m_texture); + + m_fbo = 0; + m_texture = 0; + m_width = 0; + m_height = 0; + m_w = 0; + m_h = 0; + m_cx = 0; + m_cy = 0; + m_currentRowHeight = 0; + coords.clear(); } + +} + +QGLTextureGlyphCache::~QGLTextureGlyphCache() +{ + clear(); } void QGLTextureGlyphCache::createTextureData(int width, int height) diff --git a/src/opengl/gl2paintengineex/qtextureglyphcache_gl_p.h b/src/opengl/gl2paintengineex/qtextureglyphcache_gl_p.h index fa2b091..aaef350 100644 --- a/src/opengl/gl2paintengineex/qtextureglyphcache_gl_p.h +++ b/src/opengl/gl2paintengineex/qtextureglyphcache_gl_p.h @@ -124,6 +124,8 @@ public Q_SLOTS: } } + void clear(); + private: QGLContext *ctx; -- cgit v0.12 From eaa0529642c90de3ebc07d819c0c0e8ed96a79be Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Fri, 19 Nov 2010 13:29:04 +0100 Subject: Fix compilation with Sun Studio 12.1. Error was: "tst_qdbusconnection.cpp", line 301: Error: Could not find a match for QTest::qCompare(QObject*, MyObject*, const char[29], const char[5], const char[24], int) needed in tst_QDBusConnection::registerObject(). "tst_qdbusconnection.cpp", line 498: Error: Could not find a match for QTest::qCompare(QObject*, TestObject*, const char[39], const char[12], const char[24], int) needed in tst_QDBusConnection::callSelf(). Task-number: QTBUG-15324 Patch-by: Pavel Heimlich Reviewed-by: Thiago Macieira --- tests/auto/qdbusconnection/tst_qdbusconnection.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/auto/qdbusconnection/tst_qdbusconnection.cpp b/tests/auto/qdbusconnection/tst_qdbusconnection.cpp index 96209b1..599abbd 100644 --- a/tests/auto/qdbusconnection/tst_qdbusconnection.cpp +++ b/tests/auto/qdbusconnection/tst_qdbusconnection.cpp @@ -298,7 +298,7 @@ void tst_QDBusConnection::registerObject() // register one object at root: MyObject obj; QVERIFY(con.registerObject(path, &obj, QDBusConnection::ExportAllSlots)); - QCOMPARE(con.objectRegisteredAt(path), &obj); + QCOMPARE(con.objectRegisteredAt(path), static_cast(&obj)); QVERIFY(callMethod(con, path)); QCOMPARE(obj.path, path); } @@ -495,7 +495,7 @@ void tst_QDBusConnection::callSelf() QDBusConnection connection = QDBusConnection::sessionBus(); QVERIFY(connection.registerObject("/test", &testObject, QDBusConnection::ExportAllContents)); - QCOMPARE(connection.objectRegisteredAt("/test"), &testObject); + QCOMPARE(connection.objectRegisteredAt("/test"), static_cast(&testObject)); QVERIFY(connection.registerService(serviceName())); QDBusInterface interface(serviceName(), "/test"); QVERIFY(interface.isValid()); -- cgit v0.12 From 4b380543cc973d575a3ed0c77918adbe5b6133f0 Mon Sep 17 00:00:00 2001 From: Miikka Heikkinen Date: Fri, 19 Nov 2010 14:53:29 +0200 Subject: Fixed namespace issues related to epocroot.cpp Task-number: QTBUG-15393 Reviewed-by: axis --- .../symbian/initprojectdeploy_symbian.cpp | 12 ++-- qmake/generators/symbian/symbiancommon.cpp | 4 +- qmake/generators/symbian/symmake.cpp | 10 +-- qmake/generators/symbian/symmake_abld.cpp | 4 +- qmake/generators/symbian/symmake_sbsv2.cpp | 8 +-- qmake/generators/win32/msvc_vcproj.cpp | 6 +- qmake/project.cpp | 4 +- qmake/qmake.pri | 4 +- src/corelib/global/qlibraryinfo.cpp | 4 +- tools/configure/configure.pro | 4 +- tools/configure/environment.cpp | 10 +-- tools/shared/symbian/epocroot.cpp | 17 ++--- tools/shared/symbian/epocroot.h | 67 ----------------- tools/shared/symbian/epocroot.pri | 4 +- tools/shared/symbian/epocroot_p.h | 83 ++++++++++++++++++++++ tools/shared/windows/registry.cpp | 7 +- tools/shared/windows/registry.h | 64 ----------------- tools/shared/windows/registry_p.h | 80 +++++++++++++++++++++ 18 files changed, 214 insertions(+), 178 deletions(-) delete mode 100644 tools/shared/symbian/epocroot.h create mode 100644 tools/shared/symbian/epocroot_p.h delete mode 100644 tools/shared/windows/registry.h create mode 100644 tools/shared/windows/registry_p.h diff --git a/qmake/generators/symbian/initprojectdeploy_symbian.cpp b/qmake/generators/symbian/initprojectdeploy_symbian.cpp index 22a4a82..81236d4 100644 --- a/qmake/generators/symbian/initprojectdeploy_symbian.cpp +++ b/qmake/generators/symbian/initprojectdeploy_symbian.cpp @@ -47,7 +47,7 @@ #include // Included from tools/shared -#include +#include #define SYSBIN_DIR "/sys/bin" #define HW_Z_DIR "epoc32/data/z" @@ -75,7 +75,7 @@ static bool isPlugin(const QFileInfo& info, const QString& devicePath) && (devicePath.size() < 8 || (0 != devicePath.compare(QLatin1String(SYSBIN_DIR), Qt::CaseInsensitive) && 0 != devicePath.mid(1).compare(QLatin1String(":" SYSBIN_DIR), Qt::CaseInsensitive) - && 0 != devicePath.compare(epocRoot() + QLatin1String(HW_Z_DIR SYSBIN_DIR))))) { + && 0 != devicePath.compare(qt_epocRoot() + QLatin1String(HW_Z_DIR SYSBIN_DIR))))) { return true; } else { return false; @@ -182,7 +182,7 @@ void initProjectDeploySymbian(QMakeProject* project, QString deploymentDrive; if (0 == platform.compare(QLatin1String(ROM_DEPLOYMENT_PLATFORM))) { - deploymentDrive = epocRoot() + HW_Z_DIR; + deploymentDrive = qt_epocRoot() + HW_Z_DIR; } else { deploymentDrive = targetPathHasDriveLetter ? targetPath.left(2) : QLatin1String("c:"); } @@ -225,9 +225,9 @@ void initProjectDeploySymbian(QMakeProject* project, } else { if (0 == platform.compare(QLatin1String(EMULATOR_DEPLOYMENT_PLATFORM))) { if (devicePathHasDriveLetter) { - devicePath = epocRoot() + "epoc32/winscw/" + devicePath.remove(1, 1); + devicePath = qt_epocRoot() + "epoc32/winscw/" + devicePath.remove(1, 1); } else { - devicePath = epocRoot() + "epoc32/winscw/c" + devicePath; + devicePath = qt_epocRoot() + "epoc32/winscw/c" + devicePath; } } else { if (devicePathHasDriveLetter @@ -278,7 +278,7 @@ void initProjectDeploySymbian(QMakeProject* project, // Executables and libraries are deployed to \sys\bin QFileInfo targetPath; if (epocBuild) - targetPath.setFile(epocRoot() + "epoc32/release/" + platform + "/" + build + "/"); + targetPath.setFile(qt_epocRoot() + "epoc32/release/" + platform + "/" + build + "/"); else targetPath.setFile(info.path() + QDir::separator()); if(devicePathHasDriveLetter) { diff --git a/qmake/generators/symbian/symbiancommon.cpp b/qmake/generators/symbian/symbiancommon.cpp index 2244a98..602bcc2 100644 --- a/qmake/generators/symbian/symbiancommon.cpp +++ b/qmake/generators/symbian/symbiancommon.cpp @@ -44,7 +44,7 @@ #include // Included from tools/shared -#include +#include #define RESOURCE_DIRECTORY_RESOURCE "\\\\resource\\\\apps\\\\" @@ -417,7 +417,7 @@ void SymbianCommonGenerator::generatePkgFile(const QString &iconFile, QString zDir; remoteTestPath = QString("!:\\private\\%1").arg(privateDirUid); if (epocBuild) - zDir = epocRoot() + QLatin1String("epoc32/data/z"); + zDir = qt_epocRoot() + QLatin1String("epoc32/data/z"); DeploymentList depList; initProjectDeploySymbian(project, depList, remoteTestPath, true, epocBuild, "$(PLATFORM)", "$(TARGET)", generatedDirs, generatedFiles); diff --git a/qmake/generators/symbian/symmake.cpp b/qmake/generators/symbian/symmake.cpp index e1426ab..7bebd56 100644 --- a/qmake/generators/symbian/symmake.cpp +++ b/qmake/generators/symbian/symmake.cpp @@ -50,7 +50,7 @@ #include // Included from tools/shared -#include +#include #define RESOURCE_DIRECTORY_MMP "/resource/apps" #define REGISTRATION_RESOURCE_DIRECTORY_HW "/private/10003a3f/import/apps" @@ -87,10 +87,10 @@ QString SymbianMakefileGenerator::fixPathForMmp(const QString& origPath, const Q { static QString epocRootStr; if (epocRootStr.isEmpty()) { - epocRootStr = epocRoot(); + epocRootStr = qt_epocRoot(); QFileInfo efi(epocRootStr); if (!efi.exists() || epocRootStr.isEmpty()) { - fprintf(stderr, "Unable to resolve epocRoot '%s' to real dir on current drive, defaulting to '/' for mmp paths\n", qPrintable(epocRoot())); + fprintf(stderr, "Unable to resolve epocRoot '%s' to real dir on current drive, defaulting to '/' for mmp paths\n", qPrintable(qt_epocRoot())); epocRootStr = "/"; } else { epocRootStr = efi.absoluteFilePath(); @@ -122,7 +122,7 @@ QString SymbianMakefileGenerator::absolutizePath(const QString& origPath) // Prepend epocroot to any paths beginning with "/epoc32/" QString resultPath = QDir::fromNativeSeparators(origPath); if (resultPath.startsWith("/epoc32/", Qt::CaseInsensitive)) - resultPath = QDir::fromNativeSeparators(epocRoot()) + resultPath.mid(1); + resultPath = QDir::fromNativeSeparators(qt_epocRoot()) + resultPath.mid(1); QFileInfo fi(fileInfo(resultPath)); @@ -719,7 +719,7 @@ void SymbianMakefileGenerator::writeMmpFileLibraryPart(QTextStream& t) // Hacky way to find out what kind of library it is. Check the // ARMV5 build directory for library type. We default to shared // library, since that is more common. - QString udebStaticLibLocation(epocRoot()); + QString udebStaticLibLocation(qt_epocRoot()); QString urelStaticLibLocation(udebStaticLibLocation); udebStaticLibLocation += QString("epoc32/release/armv5/udeb/%1.lib").arg(lib); urelStaticLibLocation += QString("epoc32/release/armv5/urel/%1.lib").arg(lib); diff --git a/qmake/generators/symbian/symmake_abld.cpp b/qmake/generators/symbian/symmake_abld.cpp index 7059a52..cd64325 100644 --- a/qmake/generators/symbian/symmake_abld.cpp +++ b/qmake/generators/symbian/symmake_abld.cpp @@ -49,7 +49,7 @@ #include // Included from tools/shared -#include +#include #define DO_NOTHING_TARGET "do_nothing" #define CREATE_TEMPS_TARGET "create_temps" @@ -431,7 +431,7 @@ bool SymbianAbldMakefileGenerator::writeDeploymentTargets(QTextStream &t, bool i else t << WINSCW_DEPLOYMENT_TARGET ":" << endl; - QString remoteTestPath = epocRoot() + QString remoteTestPath = qt_epocRoot() + QDir::toNativeSeparators(QLatin1String(isRom ? "epoc32/data/z/private/" : "epoc32/winscw/c/private/")) + privateDirUid; diff --git a/qmake/generators/symbian/symmake_sbsv2.cpp b/qmake/generators/symbian/symmake_sbsv2.cpp index b3f8ba2..f4a6132 100644 --- a/qmake/generators/symbian/symmake_sbsv2.cpp +++ b/qmake/generators/symbian/symmake_sbsv2.cpp @@ -49,7 +49,7 @@ #include // Included from tools/shared -#include +#include SymbianSbsv2MakefileGenerator::SymbianSbsv2MakefileGenerator() : SymbianMakefileGenerator() { } SymbianSbsv2MakefileGenerator::~SymbianSbsv2MakefileGenerator() { } @@ -82,7 +82,7 @@ void SymbianSbsv2MakefileGenerator::exportFlm() QDir sourceDir = QDir(QLibraryInfo::location(QLibraryInfo::PrefixPath) + FLM_SOURCE_DIR); QFileInfoList sourceInfos = sourceDir.entryInfoList(QDir::Files); - QDir destDir(epocRoot() + FLM_DEST_DIR); + QDir destDir(qt_epocRoot() + FLM_DEST_DIR); if (!destDir.exists()) { if (destDir.mkpath(destDir.absolutePath())) generatedDirs << destDir.absolutePath(); @@ -630,7 +630,7 @@ void SymbianSbsv2MakefileGenerator::writeBldInfExtensionRulesPart(QTextStream& t t << endl; // Write deployment rules - QString remoteTestPath = epocRoot() + QLatin1String("epoc32/winscw/c/private/") + privateDirUid; + QString remoteTestPath = qt_epocRoot() + QLatin1String("epoc32/winscw/c/private/") + privateDirUid; DeploymentList depList; //write emulator deployment @@ -641,7 +641,7 @@ void SymbianSbsv2MakefileGenerator::writeBldInfExtensionRulesPart(QTextStream& t t << "#endif" << endl; //write ROM deployment - remoteTestPath = epocRoot() + QLatin1String("epoc32/data/z/private/") + privateDirUid; + remoteTestPath = qt_epocRoot() + QLatin1String("epoc32/data/z/private/") + privateDirUid; depList.clear(); initProjectDeploySymbian(project, depList, remoteTestPath, false, true, QLatin1String(ROM_DEPLOYMENT_PLATFORM), QString(), generatedDirs, generatedFiles); diff --git a/qmake/generators/win32/msvc_vcproj.cpp b/qmake/generators/win32/msvc_vcproj.cpp index a8ff306..6f27515 100644 --- a/qmake/generators/win32/msvc_vcproj.cpp +++ b/qmake/generators/win32/msvc_vcproj.cpp @@ -67,7 +67,7 @@ QT_END_NAMESPACE #ifdef Q_OS_WIN32 #include -#include +#include QT_BEGIN_NAMESPACE @@ -119,7 +119,7 @@ DotNET which_dotnet_version() int installed = 0; int i = 0; for(; dotNetCombo[i].version; ++i) { - QString path = readRegistryKey(HKEY_LOCAL_MACHINE, dotNetCombo[i].regKey); + QString path = qt_readRegistryKey(HKEY_LOCAL_MACHINE, dotNetCombo[i].regKey); if(!path.isEmpty()) { ++installed; current_version = dotNetCombo[i].version; @@ -136,7 +136,7 @@ DotNET which_dotnet_version() i = installed = 0; for(; dotNetCombo[i].version; ++i) { - QString productPath = readRegistryKey(HKEY_LOCAL_MACHINE, dotNetCombo[i].regKey).toLower(); + QString productPath = qt_readRegistryKey(HKEY_LOCAL_MACHINE, dotNetCombo[i].regKey).toLower(); if (productPath.isEmpty()) continue; QStringList::iterator it; diff --git a/qmake/project.cpp b/qmake/project.cpp index fe08b7b..2586c57 100644 --- a/qmake/project.cpp +++ b/qmake/project.cpp @@ -64,7 +64,7 @@ #include // Included from tools/shared -#include +#include #ifdef Q_OS_WIN32 #define QT_POPEN _popen @@ -3118,7 +3118,7 @@ QStringList &QMakeProject::values(const QString &_var, QMapendGroup(); diff --git a/tools/configure/configure.pro b/tools/configure/configure.pro index 810f006..0a49fbe 100644 --- a/tools/configure/configure.pro +++ b/tools/configure/configure.pro @@ -63,8 +63,8 @@ HEADERS = configureapp.h environment.h tools.h\ $$QT_SOURCE_TREE/src/corelib/tools/qunicodetables_p.h \ $$QT_SOURCE_TREE/src/corelib/xml/qxmlstream.h \ $$QT_SOURCE_TREE/src/corelib/xml/qxmlutils_p.h \ - $$QT_SOURCE_TREE/tools/shared/symbian/epocroot.h \ - $$QT_SOURCE_TREE/tools/shared/windows/registry.h + $$QT_SOURCE_TREE/tools/shared/symbian/epocroot_p.h \ + $$QT_SOURCE_TREE/tools/shared/windows/registry_p.h SOURCES = main.cpp configureapp.cpp environment.cpp tools.cpp \ diff --git a/tools/configure/environment.cpp b/tools/configure/environment.cpp index 03fd0cc..1866ef4 100644 --- a/tools/configure/environment.cpp +++ b/tools/configure/environment.cpp @@ -60,8 +60,8 @@ using namespace std; #include #endif -#include // from tools/shared -#include // from tools/shared +#include // from tools/shared +#include // from tools/shared QT_BEGIN_NAMESPACE @@ -163,7 +163,7 @@ Compiler Environment::detectCompiler() QString paths = qgetenv("PATH"); QStringList pathlist = paths.toLower().split(";"); for(int i = 0; compiler_info[i].compiler; ++i) { - QString productPath = readRegistryKey(HKEY_LOCAL_MACHINE, compiler_info[i].regKey).toLower(); + QString productPath = qt_readRegistryKey(HKEY_LOCAL_MACHINE, compiler_info[i].regKey).toLower(); if (productPath.length()) { QStringList::iterator it; for(it = pathlist.begin(); it != pathlist.end(); ++it) { @@ -466,8 +466,8 @@ bool Environment::rmdir(const QString &name) QString Environment::symbianEpocRoot() { - // Call function defined in tools/shared/symbian/epocroot.h - return ::epocRoot(); + // Call function defined in tools/shared/symbian/epocroot_p.h + return ::qt_epocRoot(); } QT_END_NAMESPACE diff --git a/tools/shared/symbian/epocroot.cpp b/tools/shared/symbian/epocroot.cpp index 9d7d465..eabae98 100644 --- a/tools/shared/symbian/epocroot.cpp +++ b/tools/shared/symbian/epocroot.cpp @@ -39,13 +39,13 @@ ** ****************************************************************************/ -#include - #include #include -#include "epocroot.h" -#include "../windows/registry.h" +#include "epocroot_p.h" +#include "../windows/registry_p.h" + +QT_BEGIN_NAMESPACE // Registry key under which the location of the Symbian devices.xml file is // stored. @@ -64,20 +64,20 @@ // Stored as a static value in order to avoid unnecessary re-evaluation. static QString epocRootValue; -QString getDevicesXmlPath() +static QString getDevicesXmlPath() { // Note that the following call will return a null string on platforms other // than Windows. If support is required on other platforms for devices.xml, // an alternative mechanism for retrieving the location of this file will // be required. - return readRegistryKey(SYMBIAN_SDKS_REG_HANDLE, QLatin1String(SYMBIAN_SDKS_REG_SUBKEY)); + return qt_readRegistryKey(SYMBIAN_SDKS_REG_HANDLE, QLatin1String(SYMBIAN_SDKS_REG_SUBKEY)); } /** * Checks whether epocRootValue points to an existent directory. * If not, epocRootValue is set to an empty string and an error message is printed. */ -void checkEpocRootExists(const QString &source) +static void checkEpocRootExists(const QString &source) { if (!epocRootValue.isEmpty()) { QDir dir(epocRootValue); @@ -104,7 +104,7 @@ static void fixEpocRoot(QString &path) /** * Determine the epoc root for the currently active SDK. */ -QString epocRoot() +QString qt_epocRoot() { if (epocRootValue.isEmpty()) { // 1. If environment variable EPOCROOT is set and points to an existent @@ -219,3 +219,4 @@ QString epocRoot() return epocRootValue; } +QT_END_NAMESPACE diff --git a/tools/shared/symbian/epocroot.h b/tools/shared/symbian/epocroot.h deleted file mode 100644 index 9846485..0000000 --- a/tools/shared/symbian/epocroot.h +++ /dev/null @@ -1,67 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the qmake application 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 SYMBIAN_EPOCROOT_H -#define SYMBIAN_EPOCROOT_H - -#include - -/** - * Determine the epoc root for the currently active SDK. - * - * The algorithm used is as follows: - * 1. If environment variable EPOCROOT is set and points to an existent - * directory, this is returned. - * 2. The location of devices.xml is specified by a registry key. If this - * file exists, it is parsed. - * 3. If the EPOCDEVICE environment variable is set and a corresponding - * entry is found in devices.xml, and its epocroot value points to an - * existent directory, it is returned. - * 4. If a device element marked as default is found in devices.xml and its - * epocroot value points to an existent directory, this is returned. - * 5. An empty string is returned. - * - * Any return value other than the empty string therefore is guaranteed to - * point to an existent directory. - */ -QString epocRoot(); - -#endif // EPOCROOT_H diff --git a/tools/shared/symbian/epocroot.pri b/tools/shared/symbian/epocroot.pri index 117836e..f0f0dab 100644 --- a/tools/shared/symbian/epocroot.pri +++ b/tools/shared/symbian/epocroot.pri @@ -1,8 +1,8 @@ # Epocroot resolving is only required for tools, so omit it from all mobile/embedded builds !symbian:!wince*:!embedded { HEADERS += \ - $$QT_SOURCE_TREE/tools/shared/symbian/epocroot.h \ - $$QT_SOURCE_TREE/tools/shared/windows/registry.h + $$QT_SOURCE_TREE/tools/shared/symbian/epocroot_p.h \ + $$QT_SOURCE_TREE/tools/shared/windows/registry_p.h SOURCES += \ $$QT_SOURCE_TREE/tools/shared/symbian/epocroot.cpp \ $$QT_SOURCE_TREE/tools/shared/windows/registry.cpp diff --git a/tools/shared/symbian/epocroot_p.h b/tools/shared/symbian/epocroot_p.h new file mode 100644 index 0000000..c97b593 --- /dev/null +++ b/tools/shared/symbian/epocroot_p.h @@ -0,0 +1,83 @@ +/**************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the qmake application 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 QT_SYMBIAN_EPOCROOT_H +#define QT_SYMBIAN_EPOCROOT_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include + +QT_BEGIN_NAMESPACE + +/** + * Determine the epoc root for the currently active SDK. + * + * The algorithm used is as follows: + * 1. If environment variable EPOCROOT is set and points to an existent + * directory, this is returned. + * 2. The location of devices.xml is specified by a registry key. If this + * file exists, it is parsed. + * 3. If the EPOCDEVICE environment variable is set and a corresponding + * entry is found in devices.xml, and its epocroot value points to an + * existent directory, it is returned. + * 4. If a device element marked as default is found in devices.xml and its + * epocroot value points to an existent directory, this is returned. + * 5. An empty string is returned. + * + * Any return value other than the empty string therefore is guaranteed to + * point to an existent directory. + */ +QString qt_epocRoot(); + +QT_END_NAMESPACE + +#endif // QT_SYMBIAN_EPOCROOT_H + diff --git a/tools/shared/windows/registry.cpp b/tools/shared/windows/registry.cpp index 2373839..48e9ae6 100644 --- a/tools/shared/windows/registry.cpp +++ b/tools/shared/windows/registry.cpp @@ -40,7 +40,9 @@ ****************************************************************************/ #include -#include "registry.h" +#include "registry_p.h" + +QT_BEGIN_NAMESPACE #ifdef Q_OS_WIN32 /*! @@ -80,7 +82,7 @@ static QString keyName(const QString &rKey) } #endif -QString readRegistryKey(HKEY parentHandle, const QString &rSubkey) +QString qt_readRegistryKey(HKEY parentHandle, const QString &rSubkey) { QString result; @@ -160,4 +162,5 @@ QString readRegistryKey(HKEY parentHandle, const QString &rSubkey) return result; } +QT_END_NAMESPACE diff --git a/tools/shared/windows/registry.h b/tools/shared/windows/registry.h deleted file mode 100644 index 3896527..0000000 --- a/tools/shared/windows/registry.h +++ /dev/null @@ -1,64 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the qmake application 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 WINDOWS_REGISTRY_H -#define WINDOWS_REGISTRY_H - -#include - -#ifdef Q_OS_WIN32 - #include -#else - typedef void* HKEY; -#endif - -#include - -/** - * Read a value from the Windows registry. - * - * If the key is not found, or the registry cannot be accessed (for example - * if this code is compiled for a platform other than Windows), a null - * string is returned. - */ -QString readRegistryKey(HKEY parentHandle, const QString &rSubkey); - -#endif // WINDOWS_REGISTRY_H diff --git a/tools/shared/windows/registry_p.h b/tools/shared/windows/registry_p.h new file mode 100644 index 0000000..4aae5f9 --- /dev/null +++ b/tools/shared/windows/registry_p.h @@ -0,0 +1,80 @@ +/**************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the qmake application 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 QT_WINDOWS_REGISTRY_H +#define QT_WINDOWS_REGISTRY_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +QT_BEGIN_NAMESPACE + +#include + +#ifdef Q_OS_WIN32 + #include +#else + typedef void* HKEY; +#endif + +#include + +/** + * Read a value from the Windows registry. + * + * If the key is not found, or the registry cannot be accessed (for example + * if this code is compiled for a platform other than Windows), a null + * string is returned. + */ +QString qt_readRegistryKey(HKEY parentHandle, const QString &rSubkey); + +QT_END_NAMESPACE + +#endif // QT_WINDOWS_REGISTRY_H + -- cgit v0.12 From 649719c29bc3b33ab6a5eb9577d53bd0ba897550 Mon Sep 17 00:00:00 2001 From: Eskil Abrahamsen Blomfeldt Date: Fri, 19 Nov 2010 14:38:58 +0100 Subject: Fix possible missing glyphs in raster engine glyph cache Two possible failures when using the glyph cache on raster engine and populating the cache with very many glyphs: 1. Change 72f161739b270b01807f97cd853030440f0fd430 caused the maximum height of the glyph cache to be 32768, which was not sufficient for large fonts with very many characters (e.g. Chinese text) 2. Since we are using QPainter to draw into the glyph cache for RGB32 glyphcaches, and QPainter does not support very high coordinates, we need to create a reference image that references a section of the glyph cache and paint into that instead. Task-number: QT-3971 Reviewed-by: Samuel --- src/gui/painting/qtextureglyphcache.cpp | 21 ++++++++++++--------- src/gui/painting/qtextureglyphcache_p.h | 2 +- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/src/gui/painting/qtextureglyphcache.cpp b/src/gui/painting/qtextureglyphcache.cpp index 2cd7780..2daa1f0 100644 --- a/src/gui/painting/qtextureglyphcache.cpp +++ b/src/gui/painting/qtextureglyphcache.cpp @@ -151,11 +151,11 @@ bool QTextureGlyphCache::populate(QFontEngine *fontEngine, int numGlyphs, const while (new_height < m_cy + c.h) new_height *= 2; - if (new_height > maxTextureHeight()) { - // We can't make a new texture of the required size, so - // bail out - return false; - } + if (maxTextureHeight() > 0 && new_height > maxTextureHeight()) { + // We can't make a new texture of the required size, so + // bail out + return false; + } // if no room in the current texture - realloc a larger texture resizeTextureData(m_w, new_height); @@ -266,11 +266,14 @@ void QImageTextureGlyphCache::fillTexture(const Coord &c, glyph_t g) } #endif - if (m_type == QFontEngineGlyphCache::Raster_RGBMask) { - QPainter p(&m_image); + if (m_type == QFontEngineGlyphCache::Raster_RGBMask) { + QImage ref(m_image.bits() + (c.x * 4 + c.y * m_image.bytesPerLine()), + qMax(mask.width(), c.w), qMax(mask.height(), c.h), m_image.bytesPerLine(), + m_image.format()); + QPainter p(&ref); p.setCompositionMode(QPainter::CompositionMode_Source); - p.fillRect(c.x, c.y, c.w, c.h, QColor(0,0,0,0)); // TODO optimize this - p.drawImage(c.x, c.y, mask); + p.fillRect(0, 0, c.w, c.h, QColor(0,0,0,0)); // TODO optimize this + p.drawImage(0, 0, mask); p.end(); } else if (m_type == QFontEngineGlyphCache::Raster_Mono) { if (mask.depth() > 1) { diff --git a/src/gui/painting/qtextureglyphcache_p.h b/src/gui/painting/qtextureglyphcache_p.h index f84d1e6..94cb555 100644 --- a/src/gui/painting/qtextureglyphcache_p.h +++ b/src/gui/painting/qtextureglyphcache_p.h @@ -118,7 +118,7 @@ public: QImage textureMapForGlyph(glyph_t g) const; virtual int maxTextureWidth() const { return QT_DEFAULT_TEXTURE_GLYPH_CACHE_WIDTH; } - virtual int maxTextureHeight() const { return 32768; } + virtual int maxTextureHeight() const { return -1; } protected: QFontEngine *m_current_fontengine; -- cgit v0.12 From f234f248fa8f0d2bb74a14f5ee3cb489f256c0f2 Mon Sep 17 00:00:00 2001 From: axis Date: Fri, 19 Nov 2010 11:15:55 +0100 Subject: Fixed handling of QInputMethodEvents with nonzero replacementLength. These types of events replace text that is already in the widget, but WebKit did not check for replacementLength at all. RevBy: Janne Koskinen Task: QT-4303 Task: https://bugs.webkit.org/show_bug.cgi?id=49787 AutoTest: Included --- src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp | 10 ++++++++-- .../webkit/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp | 14 ++++++++++++++ 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp b/src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp index ff92f0b..d9a2cbe 100644 --- a/src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp +++ b/src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp @@ -1257,9 +1257,15 @@ void QWebPagePrivate::inputMethodEvent(QInputMethodEvent *ev) } } - if (!ev->commitString().isEmpty()) + if (renderTextControl && ev->replacementLength() > 0) { + renderTextControl->setSelectionStart(qMax(renderTextControl->selectionStart() + ev->replacementStart(), 0)); + renderTextControl->setSelectionEnd(qMin(renderTextControl->selectionStart() + ev->replacementLength(), static_cast(renderTextControl->text().length()))); + // Commit regardless of whether commitString is empty, to get rid of selection. editor->confirmComposition(ev->commitString()); - else if (!ev->preeditString().isEmpty()) { + } else if (!ev->commitString().isEmpty()) { + editor->confirmComposition(ev->commitString()); + } + if (!ev->preeditString().isEmpty()) { QString preedit = ev->preeditString(); editor->setComposition(preedit, underlines, preedit.length(), 0); } diff --git a/src/3rdparty/webkit/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp b/src/3rdparty/webkit/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp index 55ee42a..b566365 100644 --- a/src/3rdparty/webkit/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp +++ b/src/3rdparty/webkit/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp @@ -1494,6 +1494,20 @@ void tst_QWebPage::inputMethods() QCOMPARE(value, QString("QtWebKit")); #endif + { + QList attributes; + QInputMethodEvent event(QString(), attributes); + event.setCommitString("XXX", 0, 0); + page->event(&event); + event.setCommitString(QString(), -2, 2); // Erase two characters. + page->event(&event); + event.setCommitString(QString(), -1, 1); // Erase one character. + page->event(&event); + variant = page->inputMethodQuery(Qt::ImSurroundingText); + value = variant.value(); + QCOMPARE(value, QString("QtWebKit")); + } + //ImhHiddenText QMouseEvent evpresPassword(QEvent::MouseButtonPress, inputs.at(1).geometry().center(), Qt::LeftButton, Qt::NoButton, Qt::NoModifier); page->event(&evpresPassword); -- cgit v0.12 From c82ba87a0e8e416099e95898386ea25c790c3da3 Mon Sep 17 00:00:00 2001 From: Sergio Ahumada Date: Fri, 19 Nov 2010 16:16:46 +0100 Subject: Doc: Fixing typo. --- tests/auto/qkeysequence/tst_qkeysequence.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/auto/qkeysequence/tst_qkeysequence.cpp b/tests/auto/qkeysequence/tst_qkeysequence.cpp index 60f022f..55c7edf 100644 --- a/tests/auto/qkeysequence/tst_qkeysequence.cpp +++ b/tests/auto/qkeysequence/tst_qkeysequence.cpp @@ -405,7 +405,7 @@ void tst_QKeySequence::mnemonic() #ifndef QT_NO_DEBUG if (warning) { - QString str = QString::fromLatin1("QKeySequence::mnemonic: \"%1\" contains multiple occurences of '&'").arg(string); + QString str = QString::fromLatin1("QKeySequence::mnemonic: \"%1\" contains multiple occurrences of '&'").arg(string); QTest::ignoreMessage(QtWarningMsg, qPrintable(str)); // qWarning(qPrintable(str)); } -- cgit v0.12 From 9743d1ae8dcec6b64bf497e76bd49a029c8f3ecc Mon Sep 17 00:00:00 2001 From: David Boddie Date: Fri, 19 Nov 2010 20:12:04 +0100 Subject: Doc: Documented that border width does not affect rectangle geometry. Task-number: QTBUG-15458 --- src/declarative/graphicsitems/qdeclarativerectangle.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/declarative/graphicsitems/qdeclarativerectangle.cpp b/src/declarative/graphicsitems/qdeclarativerectangle.cpp index fc3954f..7686dde 100644 --- a/src/declarative/graphicsitems/qdeclarativerectangle.cpp +++ b/src/declarative/graphicsitems/qdeclarativerectangle.cpp @@ -260,6 +260,9 @@ void QDeclarativeRectangle::doUpdate() A width of 1 creates a thin line. For no line, use a width of 0 or a transparent color. + \note The width of the rectangle's border does not affect the geometry of the + rectangle itself or its position relative to other items if anchors are used. + If \c border.width is an odd number, the rectangle is painted at a half-pixel offset to retain border smoothness. Also, the border is rendered evenly on either side of the rectangle's boundaries, and the spare pixel is rendered to the right and below the -- cgit v0.12 From e6d15b58a7f5ac086e1af2d8735caeabaaa6159c Mon Sep 17 00:00:00 2001 From: Aaron Kennedy Date: Mon, 22 Nov 2010 10:32:02 +1000 Subject: Doc Task-number: QTBUG-15456 --- doc/src/declarative/qtbinding.qdoc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/doc/src/declarative/qtbinding.qdoc b/doc/src/declarative/qtbinding.qdoc index 8a969eb..fb457be 100644 --- a/doc/src/declarative/qtbinding.qdoc +++ b/doc/src/declarative/qtbinding.qdoc @@ -448,7 +448,8 @@ now be used from QML: \snippet doc/src/snippets/declarative/qtbinding/enums/standalone.qml 0 The C++ type must be registered with QML to use its enums. If your C++ type is not instantiable, it -can be registered using qmlRegisterUncreatableType(). +can be registered using qmlRegisterUncreatableType(). To be accessible from QML, the names of enum values +must begin with a capital letter. See the \l {Tutorial: Writing QML extensions with C++}{Writing QML extensions with C++} tutorial and the \l {Extending QML in C++} reference documentation for more information. -- cgit v0.12 From e6a09f87f3224588324218b6f9498bee81d178fc Mon Sep 17 00:00:00 2001 From: Peter Yard Date: Mon, 22 Nov 2010 14:48:17 +1000 Subject: Docs: QTBUG-10866 Description of how AutoConnection is resolved. --- doc/src/frameworks-technologies/threads.qdoc | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/doc/src/frameworks-technologies/threads.qdoc b/doc/src/frameworks-technologies/threads.qdoc index 3ef617c..001b29d 100644 --- a/doc/src/frameworks-technologies/threads.qdoc +++ b/doc/src/frameworks-technologies/threads.qdoc @@ -459,11 +459,10 @@ \list - \o \l{Qt::AutoConnection}{Auto Connection} (default) The behavior - is the same as the Direct Connection, if the emitter and - receiver are in the same thread. The behavior is the same as - the Queued Connection, if the emitter and receiver are in - different threads. + \o \l{Qt::AutoConnection}{Auto Connection} (default) If the signal is + emitted in the thread which the receiving object has affinity then + the behavior is the same as the Direct Connection. Otherwise, + the behavior is the same as the Queued Connection." \o \l{Qt::DirectConnection}{Direct Connection} The slot is invoked immediately, when the signal is emitted. The slot is executed -- cgit v0.12 From ea440d1897c7c9d69401ac293663fbc4f2866d08 Mon Sep 17 00:00:00 2001 From: Joaquim Rocha Date: Mon, 15 Nov 2010 13:46:40 +0100 Subject: Fix wrong error assumption when converting "0.0" to double The function qstrtod calls strtod without first resetting the errno but verifying it nonetheless. This could lead to situations where the errno was already set to ERANGE and hence it would mistakenly assume the conversion could not be done right. Merge-request: 2507 Reviewed-by: Harald Fernengel (cherry picked from commit 759c0b5ecf84201f36d44b4e6c46da1886d85dee) --- src/corelib/tools/qlocale.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/corelib/tools/qlocale.cpp b/src/corelib/tools/qlocale.cpp index d152682..83d6dcd 100644 --- a/src/corelib/tools/qlocale.cpp +++ b/src/corelib/tools/qlocale.cpp @@ -7308,6 +7308,7 @@ Q_CORE_EXPORT char *qdtoa( double d, int mode, int ndigits, int *decpt, int *sig Q_CORE_EXPORT double qstrtod(const char *s00, const char **se, bool *ok) { + errno = 0; double ret = strtod((char*)s00, (char**)se); if (ok) { if((ret == 0.0l && errno == ERANGE) -- cgit v0.12 From 7c66efddd3662a3b0a43f621519e5d5a2f3c50b4 Mon Sep 17 00:00:00 2001 From: Yann Bodson Date: Mon, 22 Nov 2010 16:37:47 +1000 Subject: Update qml visual tests on mac. Task-number: QTBUG-14792 --- .../data-X11/colorAnimation-visual.0.png | Bin 622 -> 0 bytes .../data-X11/colorAnimation-visual.1.png | Bin 627 -> 0 bytes .../data-X11/colorAnimation-visual.2.png | Bin 626 -> 0 bytes .../data-X11/colorAnimation-visual.3.png | Bin 625 -> 0 bytes .../data-X11/colorAnimation-visual.qml | 951 ----- .../data/colorAnimation-visual.0.png | Bin 627 -> 622 bytes .../data/colorAnimation-visual.1.png | Bin 626 -> 627 bytes .../data/colorAnimation-visual.2.png | Bin 625 -> 626 bytes .../data/colorAnimation-visual.3.png | Bin 0 -> 625 bytes .../colorAnimation/data/colorAnimation-visual.qml | 16 +- .../qmlvisual/focusscope/data-MAC/test3.0.png | Bin 1549 -> 0 bytes .../qmlvisual/focusscope/data-MAC/test3.1.png | Bin 1140 -> 0 bytes .../qmlvisual/focusscope/data-MAC/test3.2.png | Bin 1338 -> 0 bytes .../qmlvisual/focusscope/data-MAC/test3.3.png | Bin 1221 -> 0 bytes .../qmlvisual/focusscope/data-MAC/test3.qml | 1327 ------ .../align/data-MAC/multilineAlign.0.png | Bin 2388 -> 2569 bytes .../align/data-MAC/multilineAlign.qml | 120 +- .../baseline/data-MAC/parentanchor.0.png | Bin 0 -> 5648 bytes .../baseline/data-MAC/parentanchor.qml | 62 +- .../qdeclarativetext/data-MAC/qtbug_14865.0.png | Bin 1640 -> 1083 bytes .../qdeclarativetext/data-MAC/qtbug_14865.1.png | Bin 625 -> 1083 bytes .../qdeclarativetext/data-MAC/qtbug_14865.qml | 220 +- .../qdeclarativetext/elide/data-MAC/elide.0.png | Bin 1706 -> 1353 bytes .../qdeclarativetext/elide/data-MAC/elide.1.png | Bin 0 -> 1353 bytes .../qdeclarativetext/elide/data-MAC/elide.qml | 134 +- .../qdeclarativetext/elide/data-MAC/elide2.0.png | Bin 3564 -> 3572 bytes .../qdeclarativetext/elide/data-MAC/elide2.1.png | Bin 3271 -> 3320 bytes .../qdeclarativetext/elide/data-MAC/elide2.2.png | Bin 2549 -> 2953 bytes .../qdeclarativetext/elide/data-MAC/elide2.3.png | Bin 1574 -> 2386 bytes .../qdeclarativetext/elide/data-MAC/elide2.4.png | Bin 0 -> 1650 bytes .../qdeclarativetext/elide/data-MAC/elide2.qml | 490 +-- .../elide/data-MAC/multilength.0.png | Bin 2883 -> 2748 bytes .../elide/data-MAC/multilength.1.png | Bin 0 -> 3064 bytes .../elide/data-MAC/multilength.qml | 148 +- .../qdeclarativetext/font/data-MAC/plaintext.0.png | Bin 96247 -> 60155 bytes .../font/data-MAC/plaintext2.0.png | Bin 3481 -> 3805 bytes .../font/data-MAC/plaintext3.0.png | Bin 53503 -> 21056 bytes .../qdeclarativetext/font/data-MAC/richtext.0.png | Bin 118835 -> 62489 bytes .../qdeclarativetext/font/data-MAC/richtext2.0.png | Bin 0 -> 29962 bytes .../qdeclarativetext/font/data-MAC/richtext2.qml | 11 + .../data-MAC/cursorDelegate.0.png | Bin 3636 -> 1177 bytes .../data-MAC/cursorDelegate.1.png | Bin 3611 -> 1254 bytes .../data-MAC/cursorDelegate.2.png | Bin 3612 -> 1199 bytes .../data-MAC/cursorDelegate.3.png | Bin 3612 -> 1198 bytes .../data-MAC/cursorDelegate.4.png | Bin 3609 -> 1195 bytes .../data-MAC/cursorDelegate.5.png | Bin 3147 -> 1197 bytes .../data-MAC/cursorDelegate.qml | 658 +-- .../qdeclarativetextedit/data-MAC/qt-669.0.png | Bin 3273 -> 737 bytes .../qdeclarativetextedit/data-MAC/qt-669.1.png | Bin 3265 -> 740 bytes .../qdeclarativetextedit/data-MAC/qt-669.2.png | Bin 3266 -> 746 bytes .../qdeclarativetextedit/data-MAC/qt-669.3.png | Bin 3245 -> 739 bytes .../qdeclarativetextedit/data-MAC/qt-669.4.png | Bin 0 -> 737 bytes .../qdeclarativetextedit/data-MAC/qt-669.qml | 538 +-- .../data-MAC/usingMultilineEdit.0.png | Bin 5123 -> 1362 bytes .../data-MAC/usingMultilineEdit.1.png | Bin 5500 -> 1377 bytes .../data-MAC/usingMultilineEdit.10.png | Bin 8641 -> 2037 bytes .../data-MAC/usingMultilineEdit.11.png | Bin 8641 -> 2037 bytes .../data-MAC/usingMultilineEdit.12.png | Bin 0 -> 2037 bytes .../data-MAC/usingMultilineEdit.2.png | Bin 6163 -> 1461 bytes .../data-MAC/usingMultilineEdit.3.png | Bin 6785 -> 1577 bytes .../data-MAC/usingMultilineEdit.4.png | Bin 6943 -> 1704 bytes .../data-MAC/usingMultilineEdit.5.png | Bin 7043 -> 1778 bytes .../data-MAC/usingMultilineEdit.6.png | Bin 7428 -> 1797 bytes .../data-MAC/usingMultilineEdit.7.png | Bin 6860 -> 1859 bytes .../data-MAC/usingMultilineEdit.8.png | Bin 8659 -> 1835 bytes .../data-MAC/usingMultilineEdit.9.png | Bin 8641 -> 2028 bytes .../data-MAC/usingMultilineEdit.qml | 1452 +++---- .../qdeclarativetextedit/data-MAC/wrap.0.png | Bin 11626 -> 3756 bytes .../qdeclarativetextedit/data-MAC/wrap.1.png | Bin 11869 -> 3891 bytes .../qdeclarativetextedit/data-MAC/wrap.2.png | Bin 12264 -> 3964 bytes .../qdeclarativetextedit/data-MAC/wrap.3.png | Bin 12607 -> 4054 bytes .../qdeclarativetextedit/data-MAC/wrap.4.png | Bin 13243 -> 4132 bytes .../qdeclarativetextedit/data-MAC/wrap.5.png | Bin 13260 -> 4234 bytes .../qdeclarativetextedit/data-MAC/wrap.6.png | Bin 13260 -> 4238 bytes .../qdeclarativetextedit/data-MAC/wrap.7.png | Bin 0 -> 4238 bytes .../qdeclarativetextedit/data-MAC/wrap.qml | 858 ++-- .../data-MAC/cursorDelegate.0.png | Bin 3613 -> 1177 bytes .../data-MAC/cursorDelegate.1.png | Bin 4140 -> 1148 bytes .../data-MAC/cursorDelegate.2.png | Bin 3593 -> 1312 bytes .../data-MAC/cursorDelegate.3.png | Bin 3605 -> 1256 bytes .../data-MAC/cursorDelegate.4.png | Bin 3605 -> 1197 bytes .../data-MAC/cursorDelegate.5.png | Bin 805 -> 1197 bytes .../data-MAC/cursorDelegate.qml | 620 +-- .../qdeclarativetextinput/data-MAC/echoMode.0.png | Bin 703 -> 256 bytes .../qdeclarativetextinput/data-MAC/echoMode.1.png | Bin 1360 -> 715 bytes .../qdeclarativetextinput/data-MAC/echoMode.2.png | Bin 2031 -> 1295 bytes .../qdeclarativetextinput/data-MAC/echoMode.3.png | Bin 0 -> 1922 bytes .../qdeclarativetextinput/data-MAC/echoMode.qml | 340 +- .../qdeclarativetextinput/data-MAC/hAlign.0.png | Bin 0 -> 3987 bytes .../qdeclarativetextinput/data-MAC/hAlign.qml | 50 +- .../data-MAC/usingLineEdit.0.png | Bin 0 -> 1254 bytes .../data-MAC/usingLineEdit.1.png | Bin 0 -> 1328 bytes .../data-MAC/usingLineEdit.10.png | Bin 0 -> 1345 bytes .../data-MAC/usingLineEdit.11.png | Bin 0 -> 1433 bytes .../data-MAC/usingLineEdit.2.png | Bin 0 -> 1328 bytes .../data-MAC/usingLineEdit.3.png | Bin 0 -> 1328 bytes .../data-MAC/usingLineEdit.4.png | Bin 0 -> 1316 bytes .../data-MAC/usingLineEdit.5.png | Bin 0 -> 1318 bytes .../data-MAC/usingLineEdit.6.png | Bin 0 -> 1321 bytes .../data-MAC/usingLineEdit.7.png | Bin 0 -> 1316 bytes .../data-MAC/usingLineEdit.8.png | Bin 0 -> 1362 bytes .../data-MAC/usingLineEdit.9.png | Bin 0 -> 1423 bytes .../data-MAC/usingLineEdit.qml | 4335 ++++++++++++++++++++ 103 files changed, 7199 insertions(+), 5131 deletions(-) delete mode 100644 tests/auto/declarative/qmlvisual/animation/colorAnimation/data-X11/colorAnimation-visual.0.png delete mode 100644 tests/auto/declarative/qmlvisual/animation/colorAnimation/data-X11/colorAnimation-visual.1.png delete mode 100644 tests/auto/declarative/qmlvisual/animation/colorAnimation/data-X11/colorAnimation-visual.2.png delete mode 100644 tests/auto/declarative/qmlvisual/animation/colorAnimation/data-X11/colorAnimation-visual.3.png delete mode 100644 tests/auto/declarative/qmlvisual/animation/colorAnimation/data-X11/colorAnimation-visual.qml create mode 100644 tests/auto/declarative/qmlvisual/animation/colorAnimation/data/colorAnimation-visual.3.png delete mode 100644 tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.0.png delete mode 100644 tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.1.png delete mode 100644 tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.2.png delete mode 100644 tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.3.png delete mode 100644 tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.qml create mode 100644 tests/auto/declarative/qmlvisual/qdeclarativetext/baseline/data-MAC/parentanchor.0.png create mode 100644 tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide.1.png create mode 100644 tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.4.png create mode 100644 tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/multilength.1.png create mode 100644 tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/richtext2.0.png create mode 100644 tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/richtext2.qml create mode 100644 tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.4.png create mode 100644 tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.12.png create mode 100644 tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.7.png create mode 100644 tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.3.png create mode 100644 tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/hAlign.0.png create mode 100644 tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.0.png create mode 100644 tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.1.png create mode 100644 tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.10.png create mode 100644 tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.11.png create mode 100644 tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.2.png create mode 100644 tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.3.png create mode 100644 tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.4.png create mode 100644 tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.5.png create mode 100644 tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.6.png create mode 100644 tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.7.png create mode 100644 tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.8.png create mode 100644 tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.9.png create mode 100644 tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.qml diff --git a/tests/auto/declarative/qmlvisual/animation/colorAnimation/data-X11/colorAnimation-visual.0.png b/tests/auto/declarative/qmlvisual/animation/colorAnimation/data-X11/colorAnimation-visual.0.png deleted file mode 100644 index 99748a7..0000000 Binary files a/tests/auto/declarative/qmlvisual/animation/colorAnimation/data-X11/colorAnimation-visual.0.png and /dev/null differ diff --git a/tests/auto/declarative/qmlvisual/animation/colorAnimation/data-X11/colorAnimation-visual.1.png b/tests/auto/declarative/qmlvisual/animation/colorAnimation/data-X11/colorAnimation-visual.1.png deleted file mode 100644 index 5393dd8..0000000 Binary files a/tests/auto/declarative/qmlvisual/animation/colorAnimation/data-X11/colorAnimation-visual.1.png and /dev/null differ diff --git a/tests/auto/declarative/qmlvisual/animation/colorAnimation/data-X11/colorAnimation-visual.2.png b/tests/auto/declarative/qmlvisual/animation/colorAnimation/data-X11/colorAnimation-visual.2.png deleted file mode 100644 index 8c17bf7..0000000 Binary files a/tests/auto/declarative/qmlvisual/animation/colorAnimation/data-X11/colorAnimation-visual.2.png and /dev/null differ diff --git a/tests/auto/declarative/qmlvisual/animation/colorAnimation/data-X11/colorAnimation-visual.3.png b/tests/auto/declarative/qmlvisual/animation/colorAnimation/data-X11/colorAnimation-visual.3.png deleted file mode 100644 index 1317eef..0000000 Binary files a/tests/auto/declarative/qmlvisual/animation/colorAnimation/data-X11/colorAnimation-visual.3.png and /dev/null differ diff --git a/tests/auto/declarative/qmlvisual/animation/colorAnimation/data-X11/colorAnimation-visual.qml b/tests/auto/declarative/qmlvisual/animation/colorAnimation/data-X11/colorAnimation-visual.qml deleted file mode 100644 index dd2aeb4..0000000 --- a/tests/auto/declarative/qmlvisual/animation/colorAnimation/data-X11/colorAnimation-visual.qml +++ /dev/null @@ -1,951 +0,0 @@ -import Qt.VisualTest 4.7 - -VisualTest { - Frame { - msec: 0 - } - Frame { - msec: 16 - image: "colorAnimation-visual.0.png" - } - Frame { - msec: 32 - hash: "acc736435c9f84aa82941ba561bc5dbc" - } - Frame { - msec: 48 - hash: "acc736435c9f84aa82941ba561bc5dbc" - } - Frame { - msec: 64 - hash: "acc736435c9f84aa82941ba561bc5dbc" - } - Frame { - msec: 80 - hash: "acc736435c9f84aa82941ba561bc5dbc" - } - Frame { - msec: 96 - hash: "acc736435c9f84aa82941ba561bc5dbc" - } - Frame { - msec: 112 - hash: "acc736435c9f84aa82941ba561bc5dbc" - } - Frame { - msec: 128 - hash: "acc736435c9f84aa82941ba561bc5dbc" - } - Frame { - msec: 144 - hash: "acc736435c9f84aa82941ba561bc5dbc" - } - Frame { - msec: 160 - hash: "acc736435c9f84aa82941ba561bc5dbc" - } - Frame { - msec: 176 - hash: "acc736435c9f84aa82941ba561bc5dbc" - } - Frame { - msec: 192 - hash: "acc736435c9f84aa82941ba561bc5dbc" - } - Frame { - msec: 208 - hash: "acc736435c9f84aa82941ba561bc5dbc" - } - Frame { - msec: 224 - hash: "acc736435c9f84aa82941ba561bc5dbc" - } - Frame { - msec: 240 - hash: "acc736435c9f84aa82941ba561bc5dbc" - } - Frame { - msec: 256 - hash: "acc736435c9f84aa82941ba561bc5dbc" - } - Frame { - msec: 272 - hash: "acc736435c9f84aa82941ba561bc5dbc" - } - Frame { - msec: 288 - hash: "acc736435c9f84aa82941ba561bc5dbc" - } - Frame { - msec: 304 - hash: "acc736435c9f84aa82941ba561bc5dbc" - } - Frame { - msec: 320 - hash: "acc736435c9f84aa82941ba561bc5dbc" - } - Frame { - msec: 336 - hash: "acc736435c9f84aa82941ba561bc5dbc" - } - Frame { - msec: 352 - hash: "acc736435c9f84aa82941ba561bc5dbc" - } - Frame { - msec: 368 - hash: "acc736435c9f84aa82941ba561bc5dbc" - } - Frame { - msec: 384 - hash: "acc736435c9f84aa82941ba561bc5dbc" - } - Frame { - msec: 400 - hash: "acc736435c9f84aa82941ba561bc5dbc" - } - Frame { - msec: 416 - hash: "acc736435c9f84aa82941ba561bc5dbc" - } - Frame { - msec: 432 - hash: "acc736435c9f84aa82941ba561bc5dbc" - } - Frame { - msec: 448 - hash: "acc736435c9f84aa82941ba561bc5dbc" - } - Frame { - msec: 464 - hash: "acc736435c9f84aa82941ba561bc5dbc" - } - Frame { - msec: 480 - hash: "acc736435c9f84aa82941ba561bc5dbc" - } - Frame { - msec: 496 - hash: "acc736435c9f84aa82941ba561bc5dbc" - } - Frame { - msec: 512 - hash: "acc736435c9f84aa82941ba561bc5dbc" - } - Mouse { - type: 2 - button: 1 - buttons: 1 - x: 93; y: 136 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 528 - hash: "acc736435c9f84aa82941ba561bc5dbc" - } - Frame { - msec: 544 - hash: "acc736435c9f84aa82941ba561bc5dbc" - } - Frame { - msec: 560 - hash: "acc736435c9f84aa82941ba561bc5dbc" - } - Frame { - msec: 576 - hash: "acc736435c9f84aa82941ba561bc5dbc" - } - Frame { - msec: 592 - hash: "acc736435c9f84aa82941ba561bc5dbc" - } - Mouse { - type: 3 - button: 1 - buttons: 0 - x: 93; y: 136 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 608 - hash: "acc736435c9f84aa82941ba561bc5dbc" - } - Frame { - msec: 624 - hash: "e5bda0daf98288ce18db6ce06eda3ba0" - } - Frame { - msec: 640 - hash: "d35008f75b8c992f80fb16ba7203649d" - } - Frame { - msec: 656 - hash: "14f43e0784ddf42ea8550db88c501bf1" - } - Frame { - msec: 672 - hash: "02276e158b5391480b1bdeaadf1fb903" - } - Frame { - msec: 688 - hash: "35d9513eb97a2c482b7cd197de910934" - } - Frame { - msec: 704 - hash: "faf0fd681e60bb2489099f5df772b6cd" - } - Frame { - msec: 720 - hash: "a863d3e346f94785a3a392fdc91526eb" - } - Frame { - msec: 736 - hash: "fdf328d3f6eb8410da59a91345e41a44" - } - Frame { - msec: 752 - hash: "83514a3b10d5be8f6c3b128d0f3e0b1c" - } - Frame { - msec: 768 - hash: "ead0eae76cd00189075964671effbaea" - } - Frame { - msec: 784 - hash: "24d2457fcd51490fda23071bf9929d12" - } - Frame { - msec: 800 - hash: "1478683446cf543dacbe31d0b76a98a6" - } - Frame { - msec: 816 - hash: "99f7da1f31fe920f6c02add4042ae925" - } - Frame { - msec: 832 - hash: "22def892006cf66667770b0f17baf6c0" - } - Frame { - msec: 848 - hash: "6a36d5a77099bfd58baf285478ff04e4" - } - Frame { - msec: 864 - hash: "6258150666b59b20ab476724c07fc20c" - } - Frame { - msec: 880 - hash: "f1636315bc950a6dd400d9c7ed263b88" - } - Frame { - msec: 896 - hash: "18447ea8dc2e8da956788e5b3cf3790a" - } - Frame { - msec: 912 - hash: "1d2a6e65997a73e9e670356c8e8b63b2" - } - Frame { - msec: 928 - hash: "bed0242c0f9ef229d1392835286d5782" - } - Frame { - msec: 944 - hash: "88923c190e9e5beadef8a409c06df9d6" - } - Frame { - msec: 960 - hash: "2d133e7ee60c97386f57838b3f0976c7" - } - Frame { - msec: 976 - image: "colorAnimation-visual.1.png" - } - Frame { - msec: 992 - hash: "395195716d76bc0be7b2033ed37a7a1c" - } - Frame { - msec: 1008 - hash: "243dbffcf416926242bbcb7348974c4c" - } - Frame { - msec: 1024 - hash: "a755068679616d8ac65c2aa7431f2a19" - } - Frame { - msec: 1040 - hash: "e8249b35a47eb492cbdf2d91cc8426f0" - } - Frame { - msec: 1056 - hash: "15f3da1c0e6f0779b96859d51171dd27" - } - Frame { - msec: 1072 - hash: "258c0c756aac3de743b43051f2aace6b" - } - Frame { - msec: 1088 - hash: "a58b9fdf301d72b2cc5c93934cc8927b" - } - Frame { - msec: 1104 - hash: "a9181d30870d472521f8904818ce520f" - } - Frame { - msec: 1120 - hash: "7f9e94069ccf3897c26a71bd7becd903" - } - Frame { - msec: 1136 - hash: "bdf305c2f46cdb86dbf57b1e0cc5a65b" - } - Frame { - msec: 1152 - hash: "fe5b6865d7e4fc7d1d42c1e74f8666f7" - } - Frame { - msec: 1168 - hash: "734f0de45a6e34c9eab7ef606196f96a" - } - Frame { - msec: 1184 - hash: "02a361c4534fdf7f286dc3e6dc23275c" - } - Frame { - msec: 1200 - hash: "e649155ad69999c14b92f6561e4d1185" - } - Frame { - msec: 1216 - hash: "01af177084fab755d622973f64b92018" - } - Frame { - msec: 1232 - hash: "097cc4a082dfab995d213a3a73883c97" - } - Frame { - msec: 1248 - hash: "d7b4239a3280b1eb8e885e3f422df8e9" - } - Frame { - msec: 1264 - hash: "59893977994e34e83f91e7ce3ad65d6d" - } - Frame { - msec: 1280 - hash: "b68e3fbb5cdcd6bd96df7dec558db42b" - } - Frame { - msec: 1296 - hash: "94ad0580648f36a1e18a9ea7e249b04d" - } - Frame { - msec: 1312 - hash: "750a4c01d2f5806a89a1c6cc6a9b9a68" - } - Frame { - msec: 1328 - hash: "4f109f50f388f1bfa4bc6b03b3e6e514" - } - Frame { - msec: 1344 - hash: "c6168d5cf27a533e8ee636637667be47" - } - Frame { - msec: 1360 - hash: "f8120547bed987aa34c00da5a01a4d1e" - } - Frame { - msec: 1376 - hash: "cbff526136fa2c128c8b898fbbef9e5c" - } - Frame { - msec: 1392 - hash: "f29e52398fab1a239a63df4c32f2fc69" - } - Frame { - msec: 1408 - hash: "7178bfe86fd2fd513218b33760460f8d" - } - Frame { - msec: 1424 - hash: "ca83285bc8ac633403896fe976896eb0" - } - Frame { - msec: 1440 - hash: "96ba486c09cc69d5aa38c46c00df1181" - } - Frame { - msec: 1456 - hash: "b88eab335842787869f4a14824c19dd8" - } - Frame { - msec: 1472 - hash: "065aa59012729e1e1a246a2083142690" - } - Frame { - msec: 1488 - hash: "dd0e98c8398861002c5f178c5f9f612d" - } - Frame { - msec: 1504 - hash: "04192c2b545948048eccf4d81bbde198" - } - Frame { - msec: 1520 - hash: "bb7502c7208281ef9fd41714ab88a1a8" - } - Frame { - msec: 1536 - hash: "5397195471890d08b703dca101e5bc7c" - } - Frame { - msec: 1552 - hash: "4c678cdbebb2ffd2cbf012ca77800cde" - } - Frame { - msec: 1568 - hash: "0d7a34ecd0c7f52b2c015037bf1902c6" - } - Frame { - msec: 1584 - hash: "fd9d5048be749ac4369fda2d018b43ae" - } - Frame { - msec: 1600 - hash: "93ee03795cd57ae6f7fe3a020b039ad4" - } - Frame { - msec: 1616 - hash: "5e1118963f219c39761ca7fbf564a9ca" - } - Frame { - msec: 1632 - hash: "8f40038741903150136170503649d941" - } - Frame { - msec: 1648 - hash: "b087b7d0aa6224821f8e18718ff5e77d" - } - Frame { - msec: 1664 - hash: "aa46b04a3c67dc772265ed2901955565" - } - Frame { - msec: 1680 - hash: "ac024bf2aeb4becdf31a09fe0a6db8f3" - } - Frame { - msec: 1696 - hash: "13745a174e4d06e2108a5bf125ba50cc" - } - Frame { - msec: 1712 - hash: "bd972f0d8e230eca0b3fea1b8c960c08" - } - Frame { - msec: 1728 - hash: "cbdbec802a58e7ced0cf45b3ab0bc0ba" - } - Frame { - msec: 1744 - hash: "5128584c50305c7d218b81b8367fa3d5" - } - Frame { - msec: 1760 - hash: "a71461d3593f3685620668916de870bd" - } - Frame { - msec: 1776 - hash: "74ebac8f32cf044b58d9883dbcd9a722" - } - Frame { - msec: 1792 - hash: "fedc5b638f339b90fe59b478721e65b7" - } - Frame { - msec: 1808 - hash: "8593a81be812edf54ec94da8ae9c1314" - } - Frame { - msec: 1824 - hash: "4e9b083075bc5e9287a8abc982778b56" - } - Frame { - msec: 1840 - hash: "1d6f02aa99afa47d77fc49ab894b365a" - } - Frame { - msec: 1856 - hash: "a204feec783b3b05de4c209c21745826" - } - Frame { - msec: 1872 - hash: "665a2a8ff00b9663157802767f504754" - } - Frame { - msec: 1888 - hash: "624fb09ebe60cb87d767faf8d2420b1e" - } - Frame { - msec: 1904 - hash: "e5af0cdc33f3275a25abb09e9165f310" - } - Frame { - msec: 1920 - hash: "02bafb5a81ca66f7670ac93de5123860" - } - Frame { - msec: 1936 - image: "colorAnimation-visual.2.png" - } - Frame { - msec: 1952 - hash: "b5abd0dff1ab076faac7cc226e83f5d0" - } - Frame { - msec: 1968 - hash: "b759acc35bccff8efc2e6fe276ddc0f7" - } - Frame { - msec: 1984 - hash: "ce52e18c1f7732768779863b45314ff5" - } - Frame { - msec: 2000 - hash: "99d30652559dd6931e0c95543eeaa149" - } - Frame { - msec: 2016 - hash: "ffbd9a00e05e085b89296d19d5caec57" - } - Frame { - msec: 2032 - hash: "9c9d658b9c25602816b8066bf19105db" - } - Frame { - msec: 2048 - hash: "2b7fd058e6601e22a30bb7106b1c683b" - } - Frame { - msec: 2064 - hash: "f4c7e26b19ee0a3e7c9688685eb7bd05" - } - Frame { - msec: 2080 - hash: "0dc6d593bceff56b7f81f2a49d37fefb" - } - Frame { - msec: 2096 - hash: "9bfd7ad5091ccbdde43c593e133a7b10" - } - Frame { - msec: 2112 - hash: "2703b617937914a90ea42ebf249d79ee" - } - Frame { - msec: 2128 - hash: "b77e2983138254016c4cca53100f46fa" - } - Frame { - msec: 2144 - hash: "60c4dd24187d1281081479e586f02b37" - } - Frame { - msec: 2160 - hash: "62f2511abd99ef1231c9fa4b91d4abfe" - } - Frame { - msec: 2176 - hash: "e309b3353fd174e883d309571caddc98" - } - Frame { - msec: 2192 - hash: "1e2d6a134c7b12dde551b148ef4f088c" - } - Frame { - msec: 2208 - hash: "e5dc5450604a491cc24a0dcf5c278b58" - } - Frame { - msec: 2224 - hash: "c8dae97c10e1962c1e6a51ab3ab8579e" - } - Frame { - msec: 2240 - hash: "4e1b7e06f55fb084080689b474f1fe1d" - } - Frame { - msec: 2256 - hash: "b4639c907fa937bf15fac62421170cd8" - } - Frame { - msec: 2272 - hash: "c250208a0caeb5f6cb4d3aac3d7d350b" - } - Frame { - msec: 2288 - hash: "a73351eabecf0d71149efe31f197413e" - } - Frame { - msec: 2304 - hash: "479425f1b7aff79e4dfb7fca534af018" - } - Frame { - msec: 2320 - hash: "046d0f0040a52d1f26ba9f7c5de06ef4" - } - Frame { - msec: 2336 - hash: "655778bf13c6080903150b0eb43a7edc" - } - Frame { - msec: 2352 - hash: "72da0bbe81514870655fdd3354adac60" - } - Frame { - msec: 2368 - hash: "defe0bdf675c65fff55aaaced1e4dae7" - } - Frame { - msec: 2384 - hash: "c988628b6c3d3780e9a865c7694926cd" - } - Frame { - msec: 2400 - hash: "5ab17563655231089edd986ff13d6012" - } - Frame { - msec: 2416 - hash: "c1adff1d2e5800ed466d1691d3b17382" - } - Frame { - msec: 2432 - hash: "70129ba01fbb19592b9dc0d0a3b3e7df" - } - Frame { - msec: 2448 - hash: "0000829ef7ed908bf430d42904d59cc2" - } - Frame { - msec: 2464 - hash: "843d2927f50ab87b4a86b7a6aaeed91f" - } - Frame { - msec: 2480 - hash: "da86d21756025e7de8050586d5e2a1f8" - } - Frame { - msec: 2496 - hash: "48dd1bd6580133b0793fee327ea4f1e6" - } - Frame { - msec: 2512 - hash: "f0618193dcd0ba2837249515a1898b1c" - } - Frame { - msec: 2528 - hash: "a530184e57251065286c0cbba7301e9c" - } - Frame { - msec: 2544 - hash: "64a1d7203973d65dd342793007a61c58" - } - Frame { - msec: 2560 - hash: "5b830dfc6ba442772de87d75d5a578de" - } - Frame { - msec: 2576 - hash: "5563b056b0409b65f60dd16dd0dd890e" - } - Frame { - msec: 2592 - hash: "b8bcf9ad2ca8720c11563a23d8280804" - } - Frame { - msec: 2608 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 2624 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 2640 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 2656 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 2672 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 2688 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 2704 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 2720 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 2736 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 2752 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 2768 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 2784 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 2800 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 2816 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 2832 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 2848 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 2864 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 2880 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 2896 - image: "colorAnimation-visual.3.png" - } - Frame { - msec: 2912 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 2928 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 2944 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 2960 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 2976 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 2992 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 3008 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 3024 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 3040 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 3056 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 3072 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 3088 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 3104 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 3120 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 3136 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 3152 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 3168 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 3184 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 3200 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 3216 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 3232 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 3248 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 3264 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 3280 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 3296 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 3312 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 3328 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 3344 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 3360 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 3376 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 3392 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 3408 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 3424 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 3440 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 3456 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 3472 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 3488 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 3504 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 3520 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 3536 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 3552 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 3568 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 3584 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 3600 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 3616 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 3632 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Key { - type: 6 - key: 16777249 - modifiers: 0 - text: "" - autorep: false - count: 1 - } - Frame { - msec: 3648 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 3664 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 3680 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } -} diff --git a/tests/auto/declarative/qmlvisual/animation/colorAnimation/data/colorAnimation-visual.0.png b/tests/auto/declarative/qmlvisual/animation/colorAnimation/data/colorAnimation-visual.0.png index e6ea16d..2a79113 100644 Binary files a/tests/auto/declarative/qmlvisual/animation/colorAnimation/data/colorAnimation-visual.0.png and b/tests/auto/declarative/qmlvisual/animation/colorAnimation/data/colorAnimation-visual.0.png differ diff --git a/tests/auto/declarative/qmlvisual/animation/colorAnimation/data/colorAnimation-visual.1.png b/tests/auto/declarative/qmlvisual/animation/colorAnimation/data/colorAnimation-visual.1.png index b75ba61..ebd1802 100644 Binary files a/tests/auto/declarative/qmlvisual/animation/colorAnimation/data/colorAnimation-visual.1.png and b/tests/auto/declarative/qmlvisual/animation/colorAnimation/data/colorAnimation-visual.1.png differ diff --git a/tests/auto/declarative/qmlvisual/animation/colorAnimation/data/colorAnimation-visual.2.png b/tests/auto/declarative/qmlvisual/animation/colorAnimation/data/colorAnimation-visual.2.png index 4320f6f..9b8ecbb 100644 Binary files a/tests/auto/declarative/qmlvisual/animation/colorAnimation/data/colorAnimation-visual.2.png and b/tests/auto/declarative/qmlvisual/animation/colorAnimation/data/colorAnimation-visual.2.png differ diff --git a/tests/auto/declarative/qmlvisual/animation/colorAnimation/data/colorAnimation-visual.3.png b/tests/auto/declarative/qmlvisual/animation/colorAnimation/data/colorAnimation-visual.3.png new file mode 100644 index 0000000..277cb9e Binary files /dev/null and b/tests/auto/declarative/qmlvisual/animation/colorAnimation/data/colorAnimation-visual.3.png differ diff --git a/tests/auto/declarative/qmlvisual/animation/colorAnimation/data/colorAnimation-visual.qml b/tests/auto/declarative/qmlvisual/animation/colorAnimation/data/colorAnimation-visual.qml index 9611d27..2b664d4 100644 --- a/tests/auto/declarative/qmlvisual/animation/colorAnimation/data/colorAnimation-visual.qml +++ b/tests/auto/declarative/qmlvisual/animation/colorAnimation/data/colorAnimation-visual.qml @@ -6,7 +6,7 @@ VisualTest { } Frame { msec: 16 - hash: "acc736435c9f84aa82941ba561bc5dbc" + image: "colorAnimation-visual.0.png" } Frame { msec: 32 @@ -258,11 +258,11 @@ VisualTest { } Frame { msec: 960 - image: "colorAnimation-visual.0.png" + hash: "2d133e7ee60c97386f57838b3f0976c7" } Frame { msec: 976 - hash: "85b1821cc50f2a9f3ed6944f792b7a2f" + image: "colorAnimation-visual.1.png" } Frame { msec: 992 @@ -498,11 +498,11 @@ VisualTest { } Frame { msec: 1920 - image: "colorAnimation-visual.1.png" + hash: "02bafb5a81ca66f7670ac93de5123860" } Frame { msec: 1936 - hash: "e7aa6374c73832e57ceb2427a1e258aa" + image: "colorAnimation-visual.2.png" } Frame { msec: 1952 @@ -738,11 +738,11 @@ VisualTest { } Frame { msec: 2880 - image: "colorAnimation-visual.2.png" + hash: "8c0fcda4f8956394c53fc4ba18caa850" } Frame { msec: 2896 - hash: "8c0fcda4f8956394c53fc4ba18caa850" + image: "colorAnimation-visual.3.png" } Frame { msec: 2912 @@ -931,7 +931,7 @@ VisualTest { Key { type: 6 key: 16777249 - modifiers: 67108864 + modifiers: 0 text: "" autorep: false count: 1 diff --git a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.0.png b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.0.png deleted file mode 100644 index e469a79..0000000 Binary files a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.0.png and /dev/null differ diff --git a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.1.png b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.1.png deleted file mode 100644 index 905603f..0000000 Binary files a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.1.png and /dev/null differ diff --git a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.2.png b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.2.png deleted file mode 100644 index 5cbd3bd..0000000 Binary files a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.2.png and /dev/null differ diff --git a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.3.png b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.3.png deleted file mode 100644 index 851c1ba..0000000 Binary files a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.3.png and /dev/null differ diff --git a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.qml b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.qml deleted file mode 100644 index 0c9747e..0000000 --- a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.qml +++ /dev/null @@ -1,1327 +0,0 @@ -import Qt.VisualTest 4.7 - -VisualTest { - Frame { - msec: 0 - } - Frame { - msec: 16 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 32 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 48 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 64 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 80 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 96 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 112 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 128 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 144 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 160 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 176 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 192 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 208 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 224 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 240 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 256 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 272 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 288 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 304 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 320 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 336 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 352 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 368 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 384 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 400 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 416 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 432 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 448 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 464 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 480 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 496 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 512 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 528 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Key { - type: 6 - key: 16777236 - modifiers: 0 - text: "" - autorep: false - count: 1 - } - Frame { - msec: 544 - hash: "be06cc567f08fbc0cd60d753a19df162" - } - Frame { - msec: 560 - hash: "c4cf6807b423553872e848146e79efb3" - } - Frame { - msec: 576 - hash: "b83923f1eef68a4a8dd36acad0f4b592" - } - Frame { - msec: 592 - hash: "5599829a04f2c2a6c6181c5857762ba0" - } - Frame { - msec: 608 - hash: "95da52b5add95150dd446bc5055a2b60" - } - Key { - type: 7 - key: 16777236 - modifiers: 0 - text: "" - autorep: false - count: 1 - } - Frame { - msec: 624 - hash: "9bb2757c3b1bbc051edd9ebd240611f8" - } - Frame { - msec: 640 - hash: "25213fbced4c67f42ce35d07db93bb32" - } - Frame { - msec: 656 - hash: "2a9ded25ed2dbb9563f9c14084234a22" - } - Frame { - msec: 672 - hash: "2f532511a50d743aa1c7ebcc9b2b7350" - } - Frame { - msec: 688 - hash: "2f532511a50d743aa1c7ebcc9b2b7350" - } - Frame { - msec: 704 - hash: "2f532511a50d743aa1c7ebcc9b2b7350" - } - Frame { - msec: 720 - hash: "2f532511a50d743aa1c7ebcc9b2b7350" - } - Key { - type: 6 - key: 16777236 - modifiers: 0 - text: "" - autorep: false - count: 1 - } - Frame { - msec: 736 - hash: "8c9f7d72e077a7e75d185a2ecbdcc77c" - } - Frame { - msec: 752 - hash: "55a417e91f182ebd28dd7264d8b76363" - } - Frame { - msec: 768 - hash: "01a637de9f60c82bfd9140e852e17574" - } - Frame { - msec: 784 - hash: "01194b2c3489ea7298e961979064aab3" - } - Key { - type: 7 - key: 16777236 - modifiers: 0 - text: "" - autorep: false - count: 1 - } - Frame { - msec: 800 - hash: "f6126328d483536d3f161f71d40821df" - } - Frame { - msec: 816 - hash: "b99dd9793a63bbdab37cfe236d56c589" - } - Frame { - msec: 832 - hash: "825f39b42d0b2e0d894874713b731cfc" - } - Frame { - msec: 848 - hash: "7729b9c2133c52e50f43d6100a24e9c2" - } - Frame { - msec: 864 - hash: "e2f3bec9571b08b451309221b34ace5e" - } - Frame { - msec: 880 - hash: "e2f3bec9571b08b451309221b34ace5e" - } - Key { - type: 6 - key: 16777236 - modifiers: 0 - text: "" - autorep: false - count: 1 - } - Frame { - msec: 896 - hash: "8e59b002437ec17043d11c92556365fd" - } - Frame { - msec: 912 - hash: "3809a54af9c9a4b15aa8b82caa5b703f" - } - Frame { - msec: 928 - hash: "96cb1ab7123c54d4fa0d93b6501a439d" - } - Key { - type: 7 - key: 16777236 - modifiers: 0 - text: "" - autorep: false - count: 1 - } - Frame { - msec: 944 - hash: "de74cd5be709954522dd02945d6da9c9" - } - Frame { - msec: 960 - image: "test3.0.png" - } - Frame { - msec: 976 - hash: "d3ff94471da3620701d62b87f37fca8b" - } - Frame { - msec: 992 - hash: "15bccb078b9061ef50c73a974e2f43fa" - } - Frame { - msec: 1008 - hash: "ea2059d511fdab60e77e9261f81aadfb" - } - Frame { - msec: 1024 - hash: "ea2059d511fdab60e77e9261f81aadfb" - } - Frame { - msec: 1040 - hash: "ea2059d511fdab60e77e9261f81aadfb" - } - Frame { - msec: 1056 - hash: "ea2059d511fdab60e77e9261f81aadfb" - } - Key { - type: 6 - key: 16777236 - modifiers: 0 - text: "" - autorep: false - count: 1 - } - Frame { - msec: 1072 - hash: "5b68568968d0de3a9bad8d053045f45c" - } - Frame { - msec: 1088 - hash: "6b6da385fbc00e3542d7007524ff87f6" - } - Key { - type: 7 - key: 16777236 - modifiers: 0 - text: "" - autorep: false - count: 1 - } - Frame { - msec: 1104 - hash: "bba5021ad78a5a142cf54d4db8d8689e" - } - Frame { - msec: 1120 - hash: "5c223d5dcf028cd3bac18b21359253f3" - } - Frame { - msec: 1136 - hash: "c5b09a11d466fd90e1014f58755ec77b" - } - Frame { - msec: 1152 - hash: "f4ba8fcc4f955e25c2364d8ee1054d0d" - } - Frame { - msec: 1168 - hash: "2a6009e790cd98e3a67c107b0f08e00b" - } - Frame { - msec: 1184 - hash: "caa1b5ee40dc20c87516b7292a86f79b" - } - Frame { - msec: 1200 - hash: "200dd4ac9c40c6eb32ad43570995f17d" - } - Frame { - msec: 1216 - hash: "200dd4ac9c40c6eb32ad43570995f17d" - } - Key { - type: 6 - key: 16777236 - modifiers: 0 - text: "" - autorep: false - count: 1 - } - Frame { - msec: 1232 - hash: "2333dcdf0f46ade554e036caa5e3cb31" - } - Frame { - msec: 1248 - hash: "9b09c65db96f483dec7ba3a55b5a91e6" - } - Key { - type: 7 - key: 16777236 - modifiers: 0 - text: "" - autorep: false - count: 1 - } - Frame { - msec: 1264 - hash: "49fc76245e741968095ab689195da40c" - } - Frame { - msec: 1280 - hash: "4e991b92348d813f5a3a1080270a88a3" - } - Frame { - msec: 1296 - hash: "1e4a07fc966dab9ee0d39b25a4c43c09" - } - Frame { - msec: 1312 - hash: "ade33b908f2a5e6916a74bc00b08414e" - } - Frame { - msec: 1328 - hash: "481b41b7bc8fafcb40b7d09fcfc2e86e" - } - Frame { - msec: 1344 - hash: "68b528414ba662f14ea71511a01f8d33" - } - Frame { - msec: 1360 - hash: "68b528414ba662f14ea71511a01f8d33" - } - Frame { - msec: 1376 - hash: "68b528414ba662f14ea71511a01f8d33" - } - Frame { - msec: 1392 - hash: "68b528414ba662f14ea71511a01f8d33" - } - Frame { - msec: 1408 - hash: "68b528414ba662f14ea71511a01f8d33" - } - Frame { - msec: 1424 - hash: "68b528414ba662f14ea71511a01f8d33" - } - Frame { - msec: 1440 - hash: "68b528414ba662f14ea71511a01f8d33" - } - Frame { - msec: 1456 - hash: "68b528414ba662f14ea71511a01f8d33" - } - Frame { - msec: 1472 - hash: "68b528414ba662f14ea71511a01f8d33" - } - Frame { - msec: 1488 - hash: "68b528414ba662f14ea71511a01f8d33" - } - Key { - type: 6 - key: 16777236 - modifiers: 0 - text: "" - autorep: false - count: 1 - } - Frame { - msec: 1504 - hash: "2a8a2867f38ff05a9ef5fa50fe7de229" - } - Frame { - msec: 1520 - hash: "824ec4f9e596a67fe6ca17ea03529c1f" - } - Frame { - msec: 1536 - hash: "bf7d9c49d0a0ff4d03ceadf8d797a774" - } - Key { - type: 7 - key: 16777236 - modifiers: 0 - text: "" - autorep: false - count: 1 - } - Frame { - msec: 1552 - hash: "3e3c62601c2965e851e8b5c0adb73651" - } - Frame { - msec: 1568 - hash: "ed7357b2596da4683bb19cbf1dcd6458" - } - Frame { - msec: 1584 - hash: "32ed0774f926341af504b716bd9394e1" - } - Frame { - msec: 1600 - hash: "2d4ffbd7cf53ca4824d206d4a4608ebb" - } - Frame { - msec: 1616 - hash: "a7a0b6bd336f00a10818bdd9992a29bb" - } - Frame { - msec: 1632 - hash: "55801794958126a1890bc0122084ee20" - } - Frame { - msec: 1648 - hash: "55801794958126a1890bc0122084ee20" - } - Frame { - msec: 1664 - hash: "55801794958126a1890bc0122084ee20" - } - Frame { - msec: 1680 - hash: "55801794958126a1890bc0122084ee20" - } - Key { - type: 6 - key: 16777236 - modifiers: 0 - text: "" - autorep: false - count: 1 - } - Frame { - msec: 1696 - hash: "49573efd5a0bc65107a074fb35d67f63" - } - Frame { - msec: 1712 - hash: "c9bf07bc12f97c6d0eef816ce4423f5b" - } - Frame { - msec: 1728 - hash: "ab91f24c27d52123502815381e926cdc" - } - Frame { - msec: 1744 - hash: "32ca7e06569a63d56ab71c67c9f82d60" - } - Key { - type: 7 - key: 16777236 - modifiers: 0 - text: "" - autorep: false - count: 1 - } - Frame { - msec: 1760 - hash: "9e5f04f019ccd1f27b511faeb7470e10" - } - Frame { - msec: 1776 - hash: "5544186a3338dd788367fa4262815204" - } - Frame { - msec: 1792 - hash: "c01aa7b7363faf99f69b90be8843f059" - } - Frame { - msec: 1808 - hash: "6bd1ec848b817ef978b4dfae4eb23c1e" - } - Frame { - msec: 1824 - hash: "b75bd8d4e4f3fb5067b05ebf37f92e9b" - } - Frame { - msec: 1840 - hash: "b75bd8d4e4f3fb5067b05ebf37f92e9b" - } - Frame { - msec: 1856 - hash: "b75bd8d4e4f3fb5067b05ebf37f92e9b" - } - Frame { - msec: 1872 - hash: "b75bd8d4e4f3fb5067b05ebf37f92e9b" - } - Key { - type: 6 - key: 16777236 - modifiers: 0 - text: "" - autorep: false - count: 1 - } - Frame { - msec: 1888 - hash: "04a3efd4b810417632726048bdffa904" - } - Frame { - msec: 1904 - hash: "c347e7d3dccba41102e2b669c9e9c0a0" - } - Frame { - msec: 1920 - image: "test3.1.png" - } - Frame { - msec: 1936 - hash: "47c9794374c383e1f595e60ea6890e11" - } - Frame { - msec: 1952 - hash: "73cdfe34edab93baea779896169b4195" - } - Key { - type: 7 - key: 16777236 - modifiers: 0 - text: "" - autorep: false - count: 1 - } - Frame { - msec: 1968 - hash: "53add51d9e11a1fc4d0f6e3d1c6a70bc" - } - Frame { - msec: 1984 - hash: "90143346b171faf5bdb7d4d0c0556b24" - } - Frame { - msec: 2000 - hash: "e4e642507d3a631f5813a11cb7673c91" - } - Frame { - msec: 2016 - hash: "f5f1725edd19f1735139d178955533f8" - } - Frame { - msec: 2032 - hash: "f5f1725edd19f1735139d178955533f8" - } - Frame { - msec: 2048 - hash: "f5f1725edd19f1735139d178955533f8" - } - Frame { - msec: 2064 - hash: "f5f1725edd19f1735139d178955533f8" - } - Frame { - msec: 2080 - hash: "f5f1725edd19f1735139d178955533f8" - } - Frame { - msec: 2096 - hash: "f5f1725edd19f1735139d178955533f8" - } - Frame { - msec: 2112 - hash: "f5f1725edd19f1735139d178955533f8" - } - Frame { - msec: 2128 - hash: "f5f1725edd19f1735139d178955533f8" - } - Frame { - msec: 2144 - hash: "f5f1725edd19f1735139d178955533f8" - } - Frame { - msec: 2160 - hash: "f5f1725edd19f1735139d178955533f8" - } - Frame { - msec: 2176 - hash: "f5f1725edd19f1735139d178955533f8" - } - Frame { - msec: 2192 - hash: "f5f1725edd19f1735139d178955533f8" - } - Frame { - msec: 2208 - hash: "f5f1725edd19f1735139d178955533f8" - } - Frame { - msec: 2224 - hash: "f5f1725edd19f1735139d178955533f8" - } - Frame { - msec: 2240 - hash: "f5f1725edd19f1735139d178955533f8" - } - Frame { - msec: 2256 - hash: "f5f1725edd19f1735139d178955533f8" - } - Frame { - msec: 2272 - hash: "f5f1725edd19f1735139d178955533f8" - } - Frame { - msec: 2288 - hash: "f5f1725edd19f1735139d178955533f8" - } - Frame { - msec: 2304 - hash: "f5f1725edd19f1735139d178955533f8" - } - Frame { - msec: 2320 - hash: "f5f1725edd19f1735139d178955533f8" - } - Frame { - msec: 2336 - hash: "f5f1725edd19f1735139d178955533f8" - } - Frame { - msec: 2352 - hash: "f5f1725edd19f1735139d178955533f8" - } - Frame { - msec: 2368 - hash: "f5f1725edd19f1735139d178955533f8" - } - Frame { - msec: 2384 - hash: "f5f1725edd19f1735139d178955533f8" - } - Frame { - msec: 2400 - hash: "f5f1725edd19f1735139d178955533f8" - } - Frame { - msec: 2416 - hash: "f5f1725edd19f1735139d178955533f8" - } - Frame { - msec: 2432 - hash: "f5f1725edd19f1735139d178955533f8" - } - Frame { - msec: 2448 - hash: "f5f1725edd19f1735139d178955533f8" - } - Frame { - msec: 2464 - hash: "f5f1725edd19f1735139d178955533f8" - } - Key { - type: 6 - key: 16777234 - modifiers: 0 - text: "" - autorep: false - count: 1 - } - Frame { - msec: 2480 - hash: "512e992c6d621225735c37e2626714ad" - } - Frame { - msec: 2496 - hash: "1a708d62af48302e93dda0ef0822aebb" - } - Frame { - msec: 2512 - hash: "220660969092ba1b17addc6ba7148e06" - } - Frame { - msec: 2528 - hash: "9dcdd42efc9beb957abdeaf2ee01fc43" - } - Frame { - msec: 2544 - hash: "5995ac01ee680d6747dc78c36f70b577" - } - Key { - type: 7 - key: 16777234 - modifiers: 0 - text: "" - autorep: false - count: 1 - } - Frame { - msec: 2560 - hash: "c6eb964d8f4bf849df63eebdfbf6e286" - } - Frame { - msec: 2576 - hash: "cff1925a172e278a36068886f0efbcbf" - } - Frame { - msec: 2592 - hash: "4c725a05332806387713ab54302c559f" - } - Frame { - msec: 2608 - hash: "b75bd8d4e4f3fb5067b05ebf37f92e9b" - } - Frame { - msec: 2624 - hash: "b75bd8d4e4f3fb5067b05ebf37f92e9b" - } - Key { - type: 6 - key: 16777234 - modifiers: 0 - text: "" - autorep: false - count: 1 - } - Frame { - msec: 2640 - hash: "0cb7eeb24a6845d43ce0662c91b72bd3" - } - Frame { - msec: 2656 - hash: "6dedbf7dc59b05dc57355141de0b660d" - } - Frame { - msec: 2672 - hash: "5f82259afdabef688dd76729b5f847c7" - } - Frame { - msec: 2688 - hash: "b67d418427db34726ddada60f76178a6" - } - Frame { - msec: 2704 - hash: "780c9551f55fd46d294a1eef3b34aa34" - } - Key { - type: 7 - key: 16777234 - modifiers: 0 - text: "" - autorep: false - count: 1 - } - Frame { - msec: 2720 - hash: "521efe1778b2d2031071b55f30999de9" - } - Frame { - msec: 2736 - hash: "49539356de68b7cd2cea52986ed2bb67" - } - Frame { - msec: 2752 - hash: "55801794958126a1890bc0122084ee20" - } - Frame { - msec: 2768 - hash: "55801794958126a1890bc0122084ee20" - } - Frame { - msec: 2784 - hash: "55801794958126a1890bc0122084ee20" - } - Key { - type: 6 - key: 16777234 - modifiers: 0 - text: "" - autorep: false - count: 1 - } - Frame { - msec: 2800 - hash: "b08ee15bfd1916b9619a0a3eeeec90b6" - } - Frame { - msec: 2816 - hash: "3b4e65a0d4ee764d418d82a055ba9c87" - } - Frame { - msec: 2832 - hash: "269d37497b0cd292a5b03124d1687ff6" - } - Frame { - msec: 2848 - hash: "59fecd7ec62bf8c89e2222744d36e194" - } - Frame { - msec: 2864 - hash: "71deceeac8b42a70868bb3ff788543b5" - } - Key { - type: 7 - key: 16777234 - modifiers: 0 - text: "" - autorep: false - count: 1 - } - Frame { - msec: 2880 - image: "test3.2.png" - } - Frame { - msec: 2896 - hash: "ad790d242e84fec0bd75e1d7771682d7" - } - Frame { - msec: 2912 - hash: "c09f4fca4ae14e0e41d9b58c1b83096f" - } - Frame { - msec: 2928 - hash: "68b528414ba662f14ea71511a01f8d33" - } - Frame { - msec: 2944 - hash: "68b528414ba662f14ea71511a01f8d33" - } - Key { - type: 6 - key: 16777234 - modifiers: 0 - text: "" - autorep: false - count: 1 - } - Frame { - msec: 2960 - hash: "015bf8203d45e5d477242055a3f19bfb" - } - Frame { - msec: 2976 - hash: "ba2fb1258a2f3a81882780d3c7d5320a" - } - Frame { - msec: 2992 - hash: "3637ffd219d403ed433fd72cd68a9b23" - } - Frame { - msec: 3008 - hash: "b0d858f1d51872969022f717c12480ed" - } - Frame { - msec: 3024 - hash: "0504b13a8f7cd68a1d64a22e46ea8654" - } - Frame { - msec: 3040 - hash: "d07cffa36609433e4a677e373ee7a3ff" - } - Key { - type: 7 - key: 16777234 - modifiers: 0 - text: "" - autorep: false - count: 1 - } - Frame { - msec: 3056 - hash: "c1fd98ebc22e512f7199e0f319e88728" - } - Frame { - msec: 3072 - hash: "200dd4ac9c40c6eb32ad43570995f17d" - } - Frame { - msec: 3088 - hash: "200dd4ac9c40c6eb32ad43570995f17d" - } - Frame { - msec: 3104 - hash: "200dd4ac9c40c6eb32ad43570995f17d" - } - Frame { - msec: 3120 - hash: "200dd4ac9c40c6eb32ad43570995f17d" - } - Frame { - msec: 3136 - hash: "200dd4ac9c40c6eb32ad43570995f17d" - } - Key { - type: 6 - key: 16777234 - modifiers: 0 - text: "" - autorep: false - count: 1 - } - Frame { - msec: 3152 - hash: "5822b744b64944c515e8a01f52c7429f" - } - Frame { - msec: 3168 - hash: "7d4ab5a17e7d6184f124299053cf94e3" - } - Frame { - msec: 3184 - hash: "253cfd5001e4e4541d9cfd6370291cd2" - } - Key { - type: 7 - key: 16777234 - modifiers: 0 - text: "" - autorep: false - count: 1 - } - Frame { - msec: 3200 - hash: "1b1cab9d331c613dde896829027110f5" - } - Frame { - msec: 3216 - hash: "8127f681a5c475133cfca95483fef2ce" - } - Frame { - msec: 3232 - hash: "1a944877735fe3531d95b418dd75d576" - } - Frame { - msec: 3248 - hash: "47ddcfaed130bf7dd539d965ebebedc1" - } - Frame { - msec: 3264 - hash: "d0c37d1a7e97034d0f41ea6c2fff8f34" - } - Frame { - msec: 3280 - hash: "ea2059d511fdab60e77e9261f81aadfb" - } - Key { - type: 6 - key: 16777234 - modifiers: 0 - text: "" - autorep: false - count: 1 - } - Frame { - msec: 3296 - hash: "11a907436350afa5ff592880303b4344" - } - Frame { - msec: 3312 - hash: "39801aef92c2b1e0ca39bede36840911" - } - Frame { - msec: 3328 - hash: "93463b61a00078f488f3941bc4729100" - } - Frame { - msec: 3344 - hash: "f8d9cbe20b87017d81fbf627f3a3b2cd" - } - Key { - type: 7 - key: 16777234 - modifiers: 0 - text: "" - autorep: false - count: 1 - } - Frame { - msec: 3360 - hash: "2b8d37e7dcfb14394caf19aa8bc4b956" - } - Frame { - msec: 3376 - hash: "bf91006930a3f22f12b62787c57bb91b" - } - Frame { - msec: 3392 - hash: "7ce1d106e9d78a4a64f35f5982d32298" - } - Frame { - msec: 3408 - hash: "e2f3bec9571b08b451309221b34ace5e" - } - Frame { - msec: 3424 - hash: "e2f3bec9571b08b451309221b34ace5e" - } - Frame { - msec: 3440 - hash: "e2f3bec9571b08b451309221b34ace5e" - } - Key { - type: 6 - key: 16777234 - modifiers: 0 - text: "" - autorep: false - count: 1 - } - Frame { - msec: 3456 - hash: "71cd749e039a54aaaa05e1d3ccc738b4" - } - Frame { - msec: 3472 - hash: "39e7afb00d53e098c005a1d96a8cc727" - } - Key { - type: 7 - key: 16777234 - modifiers: 0 - text: "" - autorep: false - count: 1 - } - Frame { - msec: 3488 - hash: "a9d2fa99fc70919e55293c07427147a2" - } - Frame { - msec: 3504 - hash: "96bb62cd9ebc2eba9797605190820349" - } - Frame { - msec: 3520 - hash: "111b0d230c44d5d156e082a50c2a2a66" - } - Frame { - msec: 3536 - hash: "1085cebcc8fdaefb2ec03392763c7657" - } - Frame { - msec: 3552 - hash: "451d670f44ae42d8cbb6a12cc6469d61" - } - Frame { - msec: 3568 - hash: "5c65a7b6ed7b4e85bb883c671aae5136" - } - Frame { - msec: 3584 - hash: "2f532511a50d743aa1c7ebcc9b2b7350" - } - Key { - type: 6 - key: 16777234 - modifiers: 0 - text: "" - autorep: false - count: 1 - } - Frame { - msec: 3600 - hash: "41424200cb76a0d5d64f8919645f6afb" - } - Frame { - msec: 3616 - hash: "7a910e4b17fb7f5d10308e07ea8ce0a3" - } - Frame { - msec: 3632 - hash: "4d9cc5670105acf3bc080cba8e100376" - } - Frame { - msec: 3648 - hash: "a09d3b45bef532ed86d737839592ffc8" - } - Key { - type: 7 - key: 16777234 - modifiers: 0 - text: "" - autorep: false - count: 1 - } - Frame { - msec: 3664 - hash: "70179b7be24acd6d5d0d0de9d8fff74d" - } - Frame { - msec: 3680 - hash: "95964eef01bfc86216a8e91261b867ed" - } - Frame { - msec: 3696 - hash: "12b5e2bbfd573b2b8e33a745cd5af5a6" - } - Frame { - msec: 3712 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 3728 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 3744 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 3760 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 3776 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 3792 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 3808 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 3824 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 3840 - image: "test3.3.png" - } - Frame { - msec: 3856 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 3872 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 3888 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 3904 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 3920 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 3936 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 3952 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 3968 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 3984 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 4000 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 4016 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 4032 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 4048 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 4064 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 4080 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 4096 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 4112 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 4128 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 4144 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 4160 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 4176 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 4192 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 4208 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 4224 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 4240 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 4256 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } -} diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/align/data-MAC/multilineAlign.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/align/data-MAC/multilineAlign.0.png index 8b6329d..87bc640 100644 Binary files a/tests/auto/declarative/qmlvisual/qdeclarativetext/align/data-MAC/multilineAlign.0.png and b/tests/auto/declarative/qmlvisual/qdeclarativetext/align/data-MAC/multilineAlign.0.png differ diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/align/data-MAC/multilineAlign.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/align/data-MAC/multilineAlign.qml index 85c0cce..f56f498 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetext/align/data-MAC/multilineAlign.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/align/data-MAC/multilineAlign.qml @@ -6,242 +6,242 @@ VisualTest { } Frame { msec: 16 - hash: "75c15f88551f961727b547082216d0bb" + image: "multilineAlign.0.png" } Frame { msec: 32 - hash: "75c15f88551f961727b547082216d0bb" + hash: "7fb2062f5786da9323db4286688682a0" } Frame { msec: 48 - hash: "75c15f88551f961727b547082216d0bb" + hash: "7fb2062f5786da9323db4286688682a0" } Frame { msec: 64 - hash: "75c15f88551f961727b547082216d0bb" + hash: "7fb2062f5786da9323db4286688682a0" } Frame { msec: 80 - hash: "75c15f88551f961727b547082216d0bb" + hash: "7fb2062f5786da9323db4286688682a0" } Frame { msec: 96 - hash: "75c15f88551f961727b547082216d0bb" + hash: "7fb2062f5786da9323db4286688682a0" } Frame { msec: 112 - hash: "75c15f88551f961727b547082216d0bb" + hash: "7fb2062f5786da9323db4286688682a0" } Frame { msec: 128 - hash: "75c15f88551f961727b547082216d0bb" + hash: "7fb2062f5786da9323db4286688682a0" } Frame { msec: 144 - hash: "75c15f88551f961727b547082216d0bb" + hash: "7fb2062f5786da9323db4286688682a0" } Frame { msec: 160 - hash: "75c15f88551f961727b547082216d0bb" + hash: "7fb2062f5786da9323db4286688682a0" } Frame { msec: 176 - hash: "1a58de7b864ae75e65f69461155cbfb2" + hash: "c67a5ae840827487ab618ff2d4e9a056" } Frame { msec: 192 - hash: "1a58de7b864ae75e65f69461155cbfb2" + hash: "c67a5ae840827487ab618ff2d4e9a056" } Frame { msec: 208 - hash: "1a58de7b864ae75e65f69461155cbfb2" + hash: "c67a5ae840827487ab618ff2d4e9a056" } Frame { msec: 224 - hash: "1a58de7b864ae75e65f69461155cbfb2" + hash: "c67a5ae840827487ab618ff2d4e9a056" } Frame { msec: 240 - hash: "1a58de7b864ae75e65f69461155cbfb2" + hash: "c67a5ae840827487ab618ff2d4e9a056" } Frame { msec: 256 - hash: "1a58de7b864ae75e65f69461155cbfb2" + hash: "c67a5ae840827487ab618ff2d4e9a056" } Frame { msec: 272 - hash: "1a58de7b864ae75e65f69461155cbfb2" + hash: "c67a5ae840827487ab618ff2d4e9a056" } Frame { msec: 288 - hash: "1a58de7b864ae75e65f69461155cbfb2" + hash: "c67a5ae840827487ab618ff2d4e9a056" } Frame { msec: 304 - hash: "1a58de7b864ae75e65f69461155cbfb2" + hash: "c67a5ae840827487ab618ff2d4e9a056" } Frame { msec: 320 - hash: "1a58de7b864ae75e65f69461155cbfb2" + hash: "c67a5ae840827487ab618ff2d4e9a056" } Frame { msec: 336 - hash: "8a6b615ce522e7aa1011bc1d16193871" + hash: "c7986aca05835e238ee95be063bdd032" } Frame { msec: 352 - hash: "8a6b615ce522e7aa1011bc1d16193871" + hash: "c7986aca05835e238ee95be063bdd032" } Frame { msec: 368 - hash: "8a6b615ce522e7aa1011bc1d16193871" + hash: "c7986aca05835e238ee95be063bdd032" } Frame { msec: 384 - hash: "8a6b615ce522e7aa1011bc1d16193871" + hash: "c7986aca05835e238ee95be063bdd032" } Frame { msec: 400 - hash: "8a6b615ce522e7aa1011bc1d16193871" + hash: "c7986aca05835e238ee95be063bdd032" } Frame { msec: 416 - hash: "8a6b615ce522e7aa1011bc1d16193871" + hash: "c7986aca05835e238ee95be063bdd032" } Frame { msec: 432 - hash: "8a6b615ce522e7aa1011bc1d16193871" + hash: "c7986aca05835e238ee95be063bdd032" } Frame { msec: 448 - hash: "8a6b615ce522e7aa1011bc1d16193871" + hash: "c7986aca05835e238ee95be063bdd032" } Frame { msec: 464 - hash: "8a6b615ce522e7aa1011bc1d16193871" + hash: "c7986aca05835e238ee95be063bdd032" } Frame { msec: 480 - hash: "8a6b615ce522e7aa1011bc1d16193871" + hash: "c7986aca05835e238ee95be063bdd032" } Frame { msec: 496 - hash: "17141b7167d2249238c15cf751b3d8b6" + hash: "dd8ee9c060450beef6cc2494fa463e0a" } Frame { msec: 512 - hash: "17141b7167d2249238c15cf751b3d8b6" + hash: "dd8ee9c060450beef6cc2494fa463e0a" } Frame { msec: 528 - hash: "17141b7167d2249238c15cf751b3d8b6" + hash: "dd8ee9c060450beef6cc2494fa463e0a" } Frame { msec: 544 - hash: "17141b7167d2249238c15cf751b3d8b6" + hash: "dd8ee9c060450beef6cc2494fa463e0a" } Frame { msec: 560 - hash: "17141b7167d2249238c15cf751b3d8b6" + hash: "dd8ee9c060450beef6cc2494fa463e0a" } Frame { msec: 576 - hash: "17141b7167d2249238c15cf751b3d8b6" + hash: "dd8ee9c060450beef6cc2494fa463e0a" } Frame { msec: 592 - hash: "17141b7167d2249238c15cf751b3d8b6" + hash: "dd8ee9c060450beef6cc2494fa463e0a" } Frame { msec: 608 - hash: "17141b7167d2249238c15cf751b3d8b6" + hash: "dd8ee9c060450beef6cc2494fa463e0a" } Frame { msec: 624 - hash: "17141b7167d2249238c15cf751b3d8b6" + hash: "dd8ee9c060450beef6cc2494fa463e0a" } Frame { msec: 640 - hash: "17141b7167d2249238c15cf751b3d8b6" + hash: "dd8ee9c060450beef6cc2494fa463e0a" } Frame { msec: 656 - hash: "92e4f7c09e41b5fb97feb0093e8d9c1f" + hash: "f55ebe08f1b538d085cda157f566859e" } Frame { msec: 672 - hash: "92e4f7c09e41b5fb97feb0093e8d9c1f" + hash: "f55ebe08f1b538d085cda157f566859e" } Frame { msec: 688 - hash: "92e4f7c09e41b5fb97feb0093e8d9c1f" + hash: "f55ebe08f1b538d085cda157f566859e" } Frame { msec: 704 - hash: "92e4f7c09e41b5fb97feb0093e8d9c1f" + hash: "f55ebe08f1b538d085cda157f566859e" } Frame { msec: 720 - hash: "92e4f7c09e41b5fb97feb0093e8d9c1f" + hash: "f55ebe08f1b538d085cda157f566859e" } Frame { msec: 736 - hash: "92e4f7c09e41b5fb97feb0093e8d9c1f" + hash: "f55ebe08f1b538d085cda157f566859e" } Frame { msec: 752 - hash: "92e4f7c09e41b5fb97feb0093e8d9c1f" + hash: "f55ebe08f1b538d085cda157f566859e" } Frame { msec: 768 - hash: "92e4f7c09e41b5fb97feb0093e8d9c1f" + hash: "f55ebe08f1b538d085cda157f566859e" } Frame { msec: 784 - hash: "92e4f7c09e41b5fb97feb0093e8d9c1f" + hash: "f55ebe08f1b538d085cda157f566859e" } Frame { msec: 800 - hash: "92e4f7c09e41b5fb97feb0093e8d9c1f" + hash: "f55ebe08f1b538d085cda157f566859e" } Frame { msec: 816 - hash: "92e4f7c09e41b5fb97feb0093e8d9c1f" + hash: "f55ebe08f1b538d085cda157f566859e" } Frame { msec: 832 - hash: "92e4f7c09e41b5fb97feb0093e8d9c1f" + hash: "f55ebe08f1b538d085cda157f566859e" } Frame { msec: 848 - hash: "92e4f7c09e41b5fb97feb0093e8d9c1f" + hash: "f55ebe08f1b538d085cda157f566859e" } Frame { msec: 864 - hash: "92e4f7c09e41b5fb97feb0093e8d9c1f" + hash: "f55ebe08f1b538d085cda157f566859e" } Frame { msec: 880 - hash: "92e4f7c09e41b5fb97feb0093e8d9c1f" + hash: "f55ebe08f1b538d085cda157f566859e" } Frame { msec: 896 - hash: "92e4f7c09e41b5fb97feb0093e8d9c1f" + hash: "f55ebe08f1b538d085cda157f566859e" } Frame { msec: 912 - hash: "92e4f7c09e41b5fb97feb0093e8d9c1f" + hash: "f55ebe08f1b538d085cda157f566859e" } Frame { msec: 928 - hash: "92e4f7c09e41b5fb97feb0093e8d9c1f" + hash: "f55ebe08f1b538d085cda157f566859e" } Frame { msec: 944 - hash: "92e4f7c09e41b5fb97feb0093e8d9c1f" + hash: "f55ebe08f1b538d085cda157f566859e" } Frame { msec: 960 - image: "multilineAlign.0.png" + hash: "f55ebe08f1b538d085cda157f566859e" } } diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/baseline/data-MAC/parentanchor.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/baseline/data-MAC/parentanchor.0.png new file mode 100644 index 0000000..4b78165 Binary files /dev/null and b/tests/auto/declarative/qmlvisual/qdeclarativetext/baseline/data-MAC/parentanchor.0.png differ diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/baseline/data-MAC/parentanchor.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/baseline/data-MAC/parentanchor.qml index d7428dd..7c557e0 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetext/baseline/data-MAC/parentanchor.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/baseline/data-MAC/parentanchor.qml @@ -6,126 +6,126 @@ VisualTest { } Frame { msec: 16 - hash: "80e9ca4c4ffac9c032334a3369ef9db6" + image: "parentanchor.0.png" } Frame { msec: 32 - hash: "80e9ca4c4ffac9c032334a3369ef9db6" + hash: "455caf06270992e3367c2a5a4371b6ac" } Frame { msec: 48 - hash: "80e9ca4c4ffac9c032334a3369ef9db6" + hash: "455caf06270992e3367c2a5a4371b6ac" } Frame { msec: 64 - hash: "80e9ca4c4ffac9c032334a3369ef9db6" + hash: "455caf06270992e3367c2a5a4371b6ac" } Frame { msec: 80 - hash: "80e9ca4c4ffac9c032334a3369ef9db6" + hash: "455caf06270992e3367c2a5a4371b6ac" } Frame { msec: 96 - hash: "80e9ca4c4ffac9c032334a3369ef9db6" + hash: "455caf06270992e3367c2a5a4371b6ac" } Frame { msec: 112 - hash: "80e9ca4c4ffac9c032334a3369ef9db6" + hash: "455caf06270992e3367c2a5a4371b6ac" } Frame { msec: 128 - hash: "80e9ca4c4ffac9c032334a3369ef9db6" + hash: "455caf06270992e3367c2a5a4371b6ac" } Frame { msec: 144 - hash: "80e9ca4c4ffac9c032334a3369ef9db6" + hash: "455caf06270992e3367c2a5a4371b6ac" } Frame { msec: 160 - hash: "80e9ca4c4ffac9c032334a3369ef9db6" + hash: "455caf06270992e3367c2a5a4371b6ac" } Frame { msec: 176 - hash: "80e9ca4c4ffac9c032334a3369ef9db6" + hash: "455caf06270992e3367c2a5a4371b6ac" } Frame { msec: 192 - hash: "80e9ca4c4ffac9c032334a3369ef9db6" + hash: "455caf06270992e3367c2a5a4371b6ac" } Frame { msec: 208 - hash: "80e9ca4c4ffac9c032334a3369ef9db6" + hash: "455caf06270992e3367c2a5a4371b6ac" } Frame { msec: 224 - hash: "80e9ca4c4ffac9c032334a3369ef9db6" + hash: "455caf06270992e3367c2a5a4371b6ac" } Frame { msec: 240 - hash: "80e9ca4c4ffac9c032334a3369ef9db6" + hash: "455caf06270992e3367c2a5a4371b6ac" } Frame { msec: 256 - hash: "80e9ca4c4ffac9c032334a3369ef9db6" + hash: "455caf06270992e3367c2a5a4371b6ac" } Frame { msec: 272 - hash: "80e9ca4c4ffac9c032334a3369ef9db6" + hash: "455caf06270992e3367c2a5a4371b6ac" } Frame { msec: 288 - hash: "80e9ca4c4ffac9c032334a3369ef9db6" + hash: "455caf06270992e3367c2a5a4371b6ac" } Frame { msec: 304 - hash: "80e9ca4c4ffac9c032334a3369ef9db6" + hash: "455caf06270992e3367c2a5a4371b6ac" } Frame { msec: 320 - hash: "80e9ca4c4ffac9c032334a3369ef9db6" + hash: "455caf06270992e3367c2a5a4371b6ac" } Frame { msec: 336 - hash: "80e9ca4c4ffac9c032334a3369ef9db6" + hash: "455caf06270992e3367c2a5a4371b6ac" } Frame { msec: 352 - hash: "80e9ca4c4ffac9c032334a3369ef9db6" + hash: "455caf06270992e3367c2a5a4371b6ac" } Frame { msec: 368 - hash: "80e9ca4c4ffac9c032334a3369ef9db6" + hash: "455caf06270992e3367c2a5a4371b6ac" } Frame { msec: 384 - hash: "80e9ca4c4ffac9c032334a3369ef9db6" + hash: "455caf06270992e3367c2a5a4371b6ac" } Frame { msec: 400 - hash: "80e9ca4c4ffac9c032334a3369ef9db6" + hash: "455caf06270992e3367c2a5a4371b6ac" } Frame { msec: 416 - hash: "80e9ca4c4ffac9c032334a3369ef9db6" + hash: "455caf06270992e3367c2a5a4371b6ac" } Frame { msec: 432 - hash: "80e9ca4c4ffac9c032334a3369ef9db6" + hash: "455caf06270992e3367c2a5a4371b6ac" } Frame { msec: 448 - hash: "80e9ca4c4ffac9c032334a3369ef9db6" + hash: "455caf06270992e3367c2a5a4371b6ac" } Frame { msec: 464 - hash: "80e9ca4c4ffac9c032334a3369ef9db6" + hash: "455caf06270992e3367c2a5a4371b6ac" } Frame { msec: 480 - hash: "80e9ca4c4ffac9c032334a3369ef9db6" + hash: "455caf06270992e3367c2a5a4371b6ac" } Frame { msec: 496 - hash: "80e9ca4c4ffac9c032334a3369ef9db6" + hash: "455caf06270992e3367c2a5a4371b6ac" } } diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/data-MAC/qtbug_14865.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/data-MAC/qtbug_14865.0.png index 7547856..804a443 100644 Binary files a/tests/auto/declarative/qmlvisual/qdeclarativetext/data-MAC/qtbug_14865.0.png and b/tests/auto/declarative/qmlvisual/qdeclarativetext/data-MAC/qtbug_14865.0.png differ diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/data-MAC/qtbug_14865.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/data-MAC/qtbug_14865.1.png index 84430bb..804a443 100644 Binary files a/tests/auto/declarative/qmlvisual/qdeclarativetext/data-MAC/qtbug_14865.1.png and b/tests/auto/declarative/qmlvisual/qdeclarativetext/data-MAC/qtbug_14865.1.png differ diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/data-MAC/qtbug_14865.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/data-MAC/qtbug_14865.qml index 6b9986f..efdb916 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetext/data-MAC/qtbug_14865.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/data-MAC/qtbug_14865.qml @@ -6,442 +6,442 @@ VisualTest { } Frame { msec: 16 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + image: "qtbug_14865.0.png" } Frame { msec: 32 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 48 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 64 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 80 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 96 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 112 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 128 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 144 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 160 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 176 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 192 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 208 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 224 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 240 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 256 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 272 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 288 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 304 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 320 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 336 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 352 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 368 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 384 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 400 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 416 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 432 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 448 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 464 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 480 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 496 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 512 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 528 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 544 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 560 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 576 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 592 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 608 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 624 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 640 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 656 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 672 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 688 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 704 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 720 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 736 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 752 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 768 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 784 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 800 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 816 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 832 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 848 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 864 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 880 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 896 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 912 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 928 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 944 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 960 - image: "qtbug_14865.0.png" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 976 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + image: "qtbug_14865.1.png" } Frame { msec: 992 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 1008 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 1024 - hash: "eee4600ac08b458ac7ac2320e225674c" + hash: "3ccd3d26158a50d8f0567bafd7a23e06" } Frame { msec: 1040 - hash: "eee4600ac08b458ac7ac2320e225674c" + hash: "3ccd3d26158a50d8f0567bafd7a23e06" } Frame { msec: 1056 - hash: "eee4600ac08b458ac7ac2320e225674c" + hash: "3ccd3d26158a50d8f0567bafd7a23e06" } Frame { msec: 1072 - hash: "eee4600ac08b458ac7ac2320e225674c" + hash: "3ccd3d26158a50d8f0567bafd7a23e06" } Frame { msec: 1088 - hash: "eee4600ac08b458ac7ac2320e225674c" + hash: "3ccd3d26158a50d8f0567bafd7a23e06" } Frame { msec: 1104 - hash: "eee4600ac08b458ac7ac2320e225674c" + hash: "3ccd3d26158a50d8f0567bafd7a23e06" } Frame { msec: 1120 - hash: "eee4600ac08b458ac7ac2320e225674c" + hash: "3ccd3d26158a50d8f0567bafd7a23e06" } Frame { msec: 1136 - hash: "eee4600ac08b458ac7ac2320e225674c" + hash: "3ccd3d26158a50d8f0567bafd7a23e06" } Frame { msec: 1152 - hash: "eee4600ac08b458ac7ac2320e225674c" + hash: "3ccd3d26158a50d8f0567bafd7a23e06" } Frame { msec: 1168 - hash: "eee4600ac08b458ac7ac2320e225674c" + hash: "3ccd3d26158a50d8f0567bafd7a23e06" } Frame { msec: 1184 - hash: "eee4600ac08b458ac7ac2320e225674c" + hash: "3ccd3d26158a50d8f0567bafd7a23e06" } Frame { msec: 1200 - hash: "eee4600ac08b458ac7ac2320e225674c" + hash: "3ccd3d26158a50d8f0567bafd7a23e06" } Frame { msec: 1216 - hash: "eee4600ac08b458ac7ac2320e225674c" + hash: "3ccd3d26158a50d8f0567bafd7a23e06" } Frame { msec: 1232 - hash: "eee4600ac08b458ac7ac2320e225674c" + hash: "3ccd3d26158a50d8f0567bafd7a23e06" } Frame { msec: 1248 - hash: "eee4600ac08b458ac7ac2320e225674c" + hash: "3ccd3d26158a50d8f0567bafd7a23e06" } Frame { msec: 1264 - hash: "eee4600ac08b458ac7ac2320e225674c" + hash: "3ccd3d26158a50d8f0567bafd7a23e06" } Frame { msec: 1280 - hash: "eee4600ac08b458ac7ac2320e225674c" + hash: "3ccd3d26158a50d8f0567bafd7a23e06" } Frame { msec: 1296 - hash: "eee4600ac08b458ac7ac2320e225674c" + hash: "3ccd3d26158a50d8f0567bafd7a23e06" } Frame { msec: 1312 - hash: "eee4600ac08b458ac7ac2320e225674c" + hash: "3ccd3d26158a50d8f0567bafd7a23e06" } Frame { msec: 1328 - hash: "eee4600ac08b458ac7ac2320e225674c" + hash: "3ccd3d26158a50d8f0567bafd7a23e06" } Frame { msec: 1344 - hash: "eee4600ac08b458ac7ac2320e225674c" + hash: "3ccd3d26158a50d8f0567bafd7a23e06" } Frame { msec: 1360 - hash: "eee4600ac08b458ac7ac2320e225674c" + hash: "3ccd3d26158a50d8f0567bafd7a23e06" } Frame { msec: 1376 - hash: "eee4600ac08b458ac7ac2320e225674c" + hash: "3ccd3d26158a50d8f0567bafd7a23e06" } Frame { msec: 1392 - hash: "eee4600ac08b458ac7ac2320e225674c" + hash: "3ccd3d26158a50d8f0567bafd7a23e06" } Frame { msec: 1408 - hash: "eee4600ac08b458ac7ac2320e225674c" + hash: "3ccd3d26158a50d8f0567bafd7a23e06" } Frame { msec: 1424 - hash: "eee4600ac08b458ac7ac2320e225674c" + hash: "3ccd3d26158a50d8f0567bafd7a23e06" } Frame { msec: 1440 - hash: "eee4600ac08b458ac7ac2320e225674c" + hash: "3ccd3d26158a50d8f0567bafd7a23e06" } Frame { msec: 1456 - hash: "eee4600ac08b458ac7ac2320e225674c" + hash: "3ccd3d26158a50d8f0567bafd7a23e06" } Frame { msec: 1472 - hash: "eee4600ac08b458ac7ac2320e225674c" + hash: "3ccd3d26158a50d8f0567bafd7a23e06" } Frame { msec: 1488 - hash: "eee4600ac08b458ac7ac2320e225674c" + hash: "3ccd3d26158a50d8f0567bafd7a23e06" } Frame { msec: 1504 - hash: "eee4600ac08b458ac7ac2320e225674c" + hash: "3ccd3d26158a50d8f0567bafd7a23e06" } Frame { msec: 1520 - hash: "eee4600ac08b458ac7ac2320e225674c" + hash: "3ccd3d26158a50d8f0567bafd7a23e06" } Frame { msec: 1536 - hash: "eee4600ac08b458ac7ac2320e225674c" + hash: "3ccd3d26158a50d8f0567bafd7a23e06" } Frame { msec: 1552 - hash: "eee4600ac08b458ac7ac2320e225674c" + hash: "3ccd3d26158a50d8f0567bafd7a23e06" } Frame { msec: 1568 - hash: "eee4600ac08b458ac7ac2320e225674c" + hash: "3ccd3d26158a50d8f0567bafd7a23e06" } Frame { msec: 1584 - hash: "eee4600ac08b458ac7ac2320e225674c" + hash: "3ccd3d26158a50d8f0567bafd7a23e06" } Frame { msec: 1600 - hash: "eee4600ac08b458ac7ac2320e225674c" + hash: "3ccd3d26158a50d8f0567bafd7a23e06" } Frame { msec: 1616 - hash: "eee4600ac08b458ac7ac2320e225674c" + hash: "3ccd3d26158a50d8f0567bafd7a23e06" } Frame { msec: 1632 - hash: "eee4600ac08b458ac7ac2320e225674c" + hash: "3ccd3d26158a50d8f0567bafd7a23e06" } Frame { msec: 1648 - hash: "eee4600ac08b458ac7ac2320e225674c" + hash: "3ccd3d26158a50d8f0567bafd7a23e06" } Frame { msec: 1664 - hash: "eee4600ac08b458ac7ac2320e225674c" + hash: "3ccd3d26158a50d8f0567bafd7a23e06" } Frame { msec: 1680 - hash: "eee4600ac08b458ac7ac2320e225674c" + hash: "3ccd3d26158a50d8f0567bafd7a23e06" } Frame { msec: 1696 - hash: "eee4600ac08b458ac7ac2320e225674c" + hash: "3ccd3d26158a50d8f0567bafd7a23e06" } Frame { msec: 1712 - hash: "eee4600ac08b458ac7ac2320e225674c" + hash: "3ccd3d26158a50d8f0567bafd7a23e06" } Frame { msec: 1728 - hash: "eee4600ac08b458ac7ac2320e225674c" + hash: "3ccd3d26158a50d8f0567bafd7a23e06" } Frame { msec: 1744 - hash: "eee4600ac08b458ac7ac2320e225674c" + hash: "3ccd3d26158a50d8f0567bafd7a23e06" } Frame { msec: 1760 - hash: "eee4600ac08b458ac7ac2320e225674c" + hash: "3ccd3d26158a50d8f0567bafd7a23e06" } } diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide.0.png index 88e065b..99f0eb7 100644 Binary files a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide.0.png and b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide.0.png differ diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide.1.png new file mode 100644 index 0000000..99f0eb7 Binary files /dev/null and b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide.1.png differ diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide.qml index 96144e1..6dc7f4f 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide.qml @@ -6,274 +6,274 @@ VisualTest { } Frame { msec: 16 - hash: "7d056af7620fe8387955a1401a4f088a" + image: "elide.0.png" } Frame { msec: 32 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 48 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 64 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 80 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 96 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 112 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 128 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 144 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 160 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 176 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 192 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 208 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 224 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 240 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 256 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 272 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 288 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 304 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 320 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 336 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 352 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 368 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 384 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 400 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 416 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 432 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 448 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 464 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 480 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 496 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 512 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 528 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 544 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 560 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 576 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 592 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 608 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 624 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 640 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 656 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 672 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 688 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 704 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 720 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 736 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 752 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 768 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 784 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 800 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 816 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 832 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 848 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 864 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 880 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 896 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 912 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 928 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 944 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 960 - image: "elide.0.png" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 976 - hash: "7d056af7620fe8387955a1401a4f088a" + image: "elide.1.png" } Key { type: 6 key: 16777249 - modifiers: 0 + modifiers: 67108864 text: "" autorep: false count: 1 } Frame { msec: 992 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 1008 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 1024 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 1040 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 1056 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } } diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.0.png index 4df514a..0b08fba 100644 Binary files a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.0.png and b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.0.png differ diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.1.png index e752fec..dbf8cd3 100644 Binary files a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.1.png and b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.1.png differ diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.2.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.2.png index d2f8633..09646f8 100644 Binary files a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.2.png and b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.2.png differ diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.3.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.3.png index 0162321..b6734b4 100644 Binary files a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.3.png and b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.3.png differ diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.4.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.4.png new file mode 100644 index 0000000..861f6b0 Binary files /dev/null and b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.4.png differ diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.qml index b531942..026f880 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.qml @@ -6,986 +6,986 @@ VisualTest { } Frame { msec: 16 - hash: "90a45871fcfc509e60d4ee01527cde3b" + image: "elide2.0.png" } Frame { msec: 32 - hash: "90a45871fcfc509e60d4ee01527cde3b" + hash: "d482dd54c0f3876a11d80979ada91fa9" } Frame { msec: 48 - hash: "90a45871fcfc509e60d4ee01527cde3b" + hash: "d482dd54c0f3876a11d80979ada91fa9" } Frame { msec: 64 - hash: "90a45871fcfc509e60d4ee01527cde3b" + hash: "d482dd54c0f3876a11d80979ada91fa9" } Frame { msec: 80 - hash: "90a45871fcfc509e60d4ee01527cde3b" + hash: "d482dd54c0f3876a11d80979ada91fa9" } Frame { msec: 96 - hash: "90a45871fcfc509e60d4ee01527cde3b" + hash: "d482dd54c0f3876a11d80979ada91fa9" } Frame { msec: 112 - hash: "90a45871fcfc509e60d4ee01527cde3b" + hash: "3eb1cc8fa11ae88a3bf5004263805264" } Frame { msec: 128 - hash: "90a45871fcfc509e60d4ee01527cde3b" + hash: "3eb1cc8fa11ae88a3bf5004263805264" } Frame { msec: 144 - hash: "90a45871fcfc509e60d4ee01527cde3b" + hash: "3eb1cc8fa11ae88a3bf5004263805264" } Frame { msec: 160 - hash: "90a45871fcfc509e60d4ee01527cde3b" + hash: "3eb1cc8fa11ae88a3bf5004263805264" } Frame { msec: 176 - hash: "90a45871fcfc509e60d4ee01527cde3b" + hash: "3eb1cc8fa11ae88a3bf5004263805264" } Frame { msec: 192 - hash: "90a45871fcfc509e60d4ee01527cde3b" + hash: "b169f3828fafa79245bd5886d94a33b2" } Frame { msec: 208 - hash: "90a45871fcfc509e60d4ee01527cde3b" + hash: "b169f3828fafa79245bd5886d94a33b2" } Frame { msec: 224 - hash: "90a45871fcfc509e60d4ee01527cde3b" + hash: "b169f3828fafa79245bd5886d94a33b2" } Frame { msec: 240 - hash: "90a45871fcfc509e60d4ee01527cde3b" + hash: "b169f3828fafa79245bd5886d94a33b2" } Frame { msec: 256 - hash: "90a45871fcfc509e60d4ee01527cde3b" + hash: "c9a22f77cce333ea041730bc76d9bb96" } Frame { msec: 272 - hash: "90a45871fcfc509e60d4ee01527cde3b" + hash: "c9a22f77cce333ea041730bc76d9bb96" } Frame { msec: 288 - hash: "90a45871fcfc509e60d4ee01527cde3b" + hash: "c9a22f77cce333ea041730bc76d9bb96" } Frame { msec: 304 - hash: "90a45871fcfc509e60d4ee01527cde3b" + hash: "c9a22f77cce333ea041730bc76d9bb96" } Frame { msec: 320 - hash: "90a45871fcfc509e60d4ee01527cde3b" + hash: "958e5805b2bc2ffeaf8a6c8c24721dd5" } Frame { msec: 336 - hash: "90a45871fcfc509e60d4ee01527cde3b" + hash: "958e5805b2bc2ffeaf8a6c8c24721dd5" } Frame { msec: 352 - hash: "90a45871fcfc509e60d4ee01527cde3b" + hash: "958e5805b2bc2ffeaf8a6c8c24721dd5" } Frame { msec: 368 - hash: "90a45871fcfc509e60d4ee01527cde3b" + hash: "958e5805b2bc2ffeaf8a6c8c24721dd5" } Frame { msec: 384 - hash: "90a45871fcfc509e60d4ee01527cde3b" + hash: "958e5805b2bc2ffeaf8a6c8c24721dd5" } Frame { msec: 400 - hash: "90a45871fcfc509e60d4ee01527cde3b" + hash: "ed14c796dc2980f7a1bdedb15698ae01" } Frame { msec: 416 - hash: "90a45871fcfc509e60d4ee01527cde3b" + hash: "ed14c796dc2980f7a1bdedb15698ae01" } Frame { msec: 432 - hash: "90a45871fcfc509e60d4ee01527cde3b" + hash: "ed14c796dc2980f7a1bdedb15698ae01" } Frame { msec: 448 - hash: "90a45871fcfc509e60d4ee01527cde3b" + hash: "ed14c796dc2980f7a1bdedb15698ae01" } Frame { msec: 464 - hash: "90a45871fcfc509e60d4ee01527cde3b" + hash: "ed14c796dc2980f7a1bdedb15698ae01" } Frame { msec: 480 - hash: "90a45871fcfc509e60d4ee01527cde3b" + hash: "24d811c9b98b0cb140e7e82090e793ab" } Frame { msec: 496 - hash: "90a45871fcfc509e60d4ee01527cde3b" + hash: "24d811c9b98b0cb140e7e82090e793ab" } Frame { msec: 512 - hash: "90a45871fcfc509e60d4ee01527cde3b" + hash: "24d811c9b98b0cb140e7e82090e793ab" } Frame { msec: 528 - hash: "90a45871fcfc509e60d4ee01527cde3b" + hash: "24d811c9b98b0cb140e7e82090e793ab" } Frame { msec: 544 - hash: "90a45871fcfc509e60d4ee01527cde3b" + hash: "afa28a6a682128b1b44df31c78b63b04" } Frame { msec: 560 - hash: "90a45871fcfc509e60d4ee01527cde3b" + hash: "afa28a6a682128b1b44df31c78b63b04" } Frame { msec: 576 - hash: "90a45871fcfc509e60d4ee01527cde3b" + hash: "afa28a6a682128b1b44df31c78b63b04" } Frame { msec: 592 - hash: "90a45871fcfc509e60d4ee01527cde3b" + hash: "afa28a6a682128b1b44df31c78b63b04" } Frame { msec: 608 - hash: "90a45871fcfc509e60d4ee01527cde3b" + hash: "c43bba2d3406fabdafac344102d7d72c" } Frame { msec: 624 - hash: "90a45871fcfc509e60d4ee01527cde3b" + hash: "c43bba2d3406fabdafac344102d7d72c" } Frame { msec: 640 - hash: "90a45871fcfc509e60d4ee01527cde3b" + hash: "c43bba2d3406fabdafac344102d7d72c" } Frame { msec: 656 - hash: "c73bf21c0c9946e123372c660c78e7dd" + hash: "c43bba2d3406fabdafac344102d7d72c" } Frame { msec: 672 - hash: "c73bf21c0c9946e123372c660c78e7dd" + hash: "c43bba2d3406fabdafac344102d7d72c" } Frame { msec: 688 - hash: "c73bf21c0c9946e123372c660c78e7dd" + hash: "0e1fb18acb72ca1da6fd619e31dd2c86" } Frame { msec: 704 - hash: "bba29f9ce1a1d7dafdfe34b0ab952658" + hash: "0e1fb18acb72ca1da6fd619e31dd2c86" } Frame { msec: 720 - hash: "bba29f9ce1a1d7dafdfe34b0ab952658" + hash: "0e1fb18acb72ca1da6fd619e31dd2c86" } Frame { msec: 736 - hash: "bba29f9ce1a1d7dafdfe34b0ab952658" + hash: "0e1fb18acb72ca1da6fd619e31dd2c86" } Frame { msec: 752 - hash: "bba29f9ce1a1d7dafdfe34b0ab952658" + hash: "0e1fb18acb72ca1da6fd619e31dd2c86" } Frame { msec: 768 - hash: "bba29f9ce1a1d7dafdfe34b0ab952658" + hash: "d5780e5b30828f33d18c1f4e32ba8c3f" } Frame { msec: 784 - hash: "26f95496c4f1fa217d681a1ae79eff86" + hash: "d5780e5b30828f33d18c1f4e32ba8c3f" } Frame { msec: 800 - hash: "26f95496c4f1fa217d681a1ae79eff86" + hash: "d5780e5b30828f33d18c1f4e32ba8c3f" } Frame { msec: 816 - hash: "26f95496c4f1fa217d681a1ae79eff86" + hash: "d5780e5b30828f33d18c1f4e32ba8c3f" } Frame { msec: 832 - hash: "26f95496c4f1fa217d681a1ae79eff86" + hash: "28bdd1ab1c1af1b39a2f9d11be456682" } Frame { msec: 848 - hash: "96a83eae50a073573ace90239a64d326" + hash: "28bdd1ab1c1af1b39a2f9d11be456682" } Frame { msec: 864 - hash: "96a83eae50a073573ace90239a64d326" + hash: "28bdd1ab1c1af1b39a2f9d11be456682" } Frame { msec: 880 - hash: "7b15d75c611f24977f2a1b44ef9e16d8" + hash: "28bdd1ab1c1af1b39a2f9d11be456682" } Frame { msec: 896 - hash: "7b15d75c611f24977f2a1b44ef9e16d8" + hash: "28bdd1ab1c1af1b39a2f9d11be456682" } Frame { msec: 912 - hash: "7b15d75c611f24977f2a1b44ef9e16d8" + hash: "e34a9080716cebc0260e682960cc7c6e" } Frame { msec: 928 - hash: "7b15d75c611f24977f2a1b44ef9e16d8" + hash: "e34a9080716cebc0260e682960cc7c6e" } Frame { msec: 944 - hash: "7b15d75c611f24977f2a1b44ef9e16d8" + hash: "e34a9080716cebc0260e682960cc7c6e" } Frame { msec: 960 - image: "elide2.0.png" + hash: "e34a9080716cebc0260e682960cc7c6e" } Frame { msec: 976 - hash: "7b15d75c611f24977f2a1b44ef9e16d8" + image: "elide2.1.png" } Frame { msec: 992 - hash: "7b000cccb4e4cdaa53b025d235478b1c" + hash: "61959fc3d6f84a9fe88ec1a2979da9af" } Frame { msec: 1008 - hash: "7b000cccb4e4cdaa53b025d235478b1c" + hash: "61959fc3d6f84a9fe88ec1a2979da9af" } Frame { msec: 1024 - hash: "18366b01550fdd4a7dc7305a6289ac9b" + hash: "61959fc3d6f84a9fe88ec1a2979da9af" } Frame { msec: 1040 - hash: "18366b01550fdd4a7dc7305a6289ac9b" + hash: "47794b18771d6d558ebbca881de92377" } Frame { msec: 1056 - hash: "18366b01550fdd4a7dc7305a6289ac9b" + hash: "47794b18771d6d558ebbca881de92377" } Frame { msec: 1072 - hash: "18366b01550fdd4a7dc7305a6289ac9b" + hash: "47794b18771d6d558ebbca881de92377" } Frame { msec: 1088 - hash: "18366b01550fdd4a7dc7305a6289ac9b" + hash: "47794b18771d6d558ebbca881de92377" } Frame { msec: 1104 - hash: "cde86069e7f9809ef2c88cc6ea83910b" + hash: "47794b18771d6d558ebbca881de92377" } Frame { msec: 1120 - hash: "cde86069e7f9809ef2c88cc6ea83910b" + hash: "ba34b024ddb4e701d1d7f0c19e24d6cf" } Frame { msec: 1136 - hash: "cde86069e7f9809ef2c88cc6ea83910b" + hash: "ba34b024ddb4e701d1d7f0c19e24d6cf" } Frame { msec: 1152 - hash: "cde86069e7f9809ef2c88cc6ea83910b" + hash: "ba34b024ddb4e701d1d7f0c19e24d6cf" } Frame { msec: 1168 - hash: "b8c7416944cb741ceb4ee0e8545037b1" + hash: "ba34b024ddb4e701d1d7f0c19e24d6cf" } Frame { msec: 1184 - hash: "b8c7416944cb741ceb4ee0e8545037b1" + hash: "ba34b024ddb4e701d1d7f0c19e24d6cf" } Frame { msec: 1200 - hash: "b8c7416944cb741ceb4ee0e8545037b1" + hash: "e94344268d2a118053ecc3aef278d91d" } Frame { msec: 1216 - hash: "74a03bf98bb205d7962e0fcc025c4ed3" + hash: "e94344268d2a118053ecc3aef278d91d" } Frame { msec: 1232 - hash: "74a03bf98bb205d7962e0fcc025c4ed3" + hash: "e94344268d2a118053ecc3aef278d91d" } Frame { msec: 1248 - hash: "74a03bf98bb205d7962e0fcc025c4ed3" + hash: "e94344268d2a118053ecc3aef278d91d" } Frame { msec: 1264 - hash: "74a03bf98bb205d7962e0fcc025c4ed3" + hash: "df1959605d3bd74e84e51cbd4d322235" } Frame { msec: 1280 - hash: "0d286d7e274868e87f7de4367b69386e" + hash: "df1959605d3bd74e84e51cbd4d322235" } Frame { msec: 1296 - hash: "0d286d7e274868e87f7de4367b69386e" + hash: "df1959605d3bd74e84e51cbd4d322235" } Frame { msec: 1312 - hash: "892e9e8feeb15bbad5f38cb354aa7290" + hash: "df1959605d3bd74e84e51cbd4d322235" } Frame { msec: 1328 - hash: "892e9e8feeb15bbad5f38cb354aa7290" + hash: "26e1c8d13f0dd3713dce24211a8d26c1" } Frame { msec: 1344 - hash: "892e9e8feeb15bbad5f38cb354aa7290" + hash: "26e1c8d13f0dd3713dce24211a8d26c1" } Frame { msec: 1360 - hash: "06d6ad94b01af5b441fd64536f7740ff" + hash: "26e1c8d13f0dd3713dce24211a8d26c1" } Frame { msec: 1376 - hash: "06d6ad94b01af5b441fd64536f7740ff" + hash: "26e1c8d13f0dd3713dce24211a8d26c1" } Frame { msec: 1392 - hash: "06d6ad94b01af5b441fd64536f7740ff" + hash: "26e1c8d13f0dd3713dce24211a8d26c1" } Frame { msec: 1408 - hash: "0552844f7915835d3a35a01137d4c310" + hash: "fd1344db48093182eb2c2872ceb887df" } Frame { msec: 1424 - hash: "0552844f7915835d3a35a01137d4c310" + hash: "fd1344db48093182eb2c2872ceb887df" } Frame { msec: 1440 - hash: "0552844f7915835d3a35a01137d4c310" + hash: "fd1344db48093182eb2c2872ceb887df" } Frame { msec: 1456 - hash: "0552844f7915835d3a35a01137d4c310" + hash: "fd1344db48093182eb2c2872ceb887df" } Frame { msec: 1472 - hash: "0552844f7915835d3a35a01137d4c310" + hash: "fd1344db48093182eb2c2872ceb887df" } Frame { msec: 1488 - hash: "afdf5d4d9e49a82a395afad6b3fe4f86" + hash: "a4bf54bbb5bcbf54de6a7a2be9b73b81" } Frame { msec: 1504 - hash: "afdf5d4d9e49a82a395afad6b3fe4f86" + hash: "a4bf54bbb5bcbf54de6a7a2be9b73b81" } Frame { msec: 1520 - hash: "afdf5d4d9e49a82a395afad6b3fe4f86" + hash: "a4bf54bbb5bcbf54de6a7a2be9b73b81" } Frame { msec: 1536 - hash: "afdf5d4d9e49a82a395afad6b3fe4f86" + hash: "a4bf54bbb5bcbf54de6a7a2be9b73b81" } Frame { msec: 1552 - hash: "bb434e586d40ae0ebcb89cde55a4ca11" + hash: "072a6c0e64853f57487845f2ff376c12" } Frame { msec: 1568 - hash: "bb434e586d40ae0ebcb89cde55a4ca11" + hash: "072a6c0e64853f57487845f2ff376c12" } Frame { msec: 1584 - hash: "bb434e586d40ae0ebcb89cde55a4ca11" + hash: "072a6c0e64853f57487845f2ff376c12" } Frame { msec: 1600 - hash: "bb434e586d40ae0ebcb89cde55a4ca11" + hash: "072a6c0e64853f57487845f2ff376c12" } Frame { msec: 1616 - hash: "bb434e586d40ae0ebcb89cde55a4ca11" + hash: "072a6c0e64853f57487845f2ff376c12" } Frame { msec: 1632 - hash: "771561a07b3eb2396231b17343da7125" + hash: "d4183aba9cd5607ea1ff1572c78d33cc" } Frame { msec: 1648 - hash: "771561a07b3eb2396231b17343da7125" + hash: "d4183aba9cd5607ea1ff1572c78d33cc" } Frame { msec: 1664 - hash: "771561a07b3eb2396231b17343da7125" + hash: "d4183aba9cd5607ea1ff1572c78d33cc" } Frame { msec: 1680 - hash: "771561a07b3eb2396231b17343da7125" + hash: "d4183aba9cd5607ea1ff1572c78d33cc" } Frame { msec: 1696 - hash: "771561a07b3eb2396231b17343da7125" + hash: "31cb8e151b34187f712b269b38a317a7" } Frame { msec: 1712 - hash: "771561a07b3eb2396231b17343da7125" + hash: "31cb8e151b34187f712b269b38a317a7" } Frame { msec: 1728 - hash: "d3d23db79c5f2a374b267bcda8919d1e" + hash: "31cb8e151b34187f712b269b38a317a7" } Frame { msec: 1744 - hash: "d3d23db79c5f2a374b267bcda8919d1e" + hash: "31cb8e151b34187f712b269b38a317a7" } Key { type: 6 key: 16777249 - modifiers: 0 + modifiers: 67108864 text: "" autorep: false count: 1 } Frame { msec: 1760 - hash: "36a40dbdbb39122d30c26643e5924548" + hash: "31cb8e151b34187f712b269b38a317a7" } Frame { msec: 1776 - hash: "36a40dbdbb39122d30c26643e5924548" + hash: "e24ad0aed6a071d6da9f51af00c69300" } Frame { msec: 1792 - hash: "36a40dbdbb39122d30c26643e5924548" + hash: "e24ad0aed6a071d6da9f51af00c69300" } Frame { msec: 1808 - hash: "36a40dbdbb39122d30c26643e5924548" + hash: "e24ad0aed6a071d6da9f51af00c69300" } Frame { msec: 1824 - hash: "36a40dbdbb39122d30c26643e5924548" + hash: "e24ad0aed6a071d6da9f51af00c69300" } Frame { msec: 1840 - hash: "6a202f32d3d7a7c9edc97e55c2fe7aca" + hash: "760eea420a5eb52ccd1f6a29d6701338" } Frame { msec: 1856 - hash: "6a202f32d3d7a7c9edc97e55c2fe7aca" + hash: "760eea420a5eb52ccd1f6a29d6701338" } Frame { msec: 1872 - hash: "6a202f32d3d7a7c9edc97e55c2fe7aca" + hash: "760eea420a5eb52ccd1f6a29d6701338" } Frame { msec: 1888 - hash: "765b11a4fff9a7295440568899107159" + hash: "760eea420a5eb52ccd1f6a29d6701338" } Frame { msec: 1904 - hash: "765b11a4fff9a7295440568899107159" + hash: "760eea420a5eb52ccd1f6a29d6701338" } Frame { msec: 1920 - image: "elide2.1.png" + hash: "07cdcdb9b551750c4a742ee6dff9f3f9" } Frame { msec: 1936 - hash: "765b11a4fff9a7295440568899107159" + image: "elide2.2.png" } Frame { msec: 1952 - hash: "765b11a4fff9a7295440568899107159" + hash: "07cdcdb9b551750c4a742ee6dff9f3f9" } Frame { msec: 1968 - hash: "e2726e028d0a17a918a28d248a087d71" + hash: "07cdcdb9b551750c4a742ee6dff9f3f9" } Frame { msec: 1984 - hash: "e2726e028d0a17a918a28d248a087d71" + hash: "ec4dada16fb19fb4cf24367c9f25f161" } Frame { msec: 2000 - hash: "e2726e028d0a17a918a28d248a087d71" + hash: "ec4dada16fb19fb4cf24367c9f25f161" } Frame { msec: 2016 - hash: "e2726e028d0a17a918a28d248a087d71" + hash: "ec4dada16fb19fb4cf24367c9f25f161" } Frame { msec: 2032 - hash: "94243dc2a8013e86250c993103b2d789" + hash: "ec4dada16fb19fb4cf24367c9f25f161" } Frame { msec: 2048 - hash: "94243dc2a8013e86250c993103b2d789" + hash: "ec4dada16fb19fb4cf24367c9f25f161" } Frame { msec: 2064 - hash: "94243dc2a8013e86250c993103b2d789" + hash: "f5ef19dc69f8b6060056f7005f613ca3" } Frame { msec: 2080 - hash: "94243dc2a8013e86250c993103b2d789" + hash: "f5ef19dc69f8b6060056f7005f613ca3" } Frame { msec: 2096 - hash: "94243dc2a8013e86250c993103b2d789" + hash: "f5ef19dc69f8b6060056f7005f613ca3" } Frame { msec: 2112 - hash: "d8fdababa06e1cafa9047de16d5a07b5" + hash: "f5ef19dc69f8b6060056f7005f613ca3" } Frame { msec: 2128 - hash: "d8fdababa06e1cafa9047de16d5a07b5" + hash: "6bd00519ea14f0dd34d45de4deaaa65e" } Frame { msec: 2144 - hash: "d8fdababa06e1cafa9047de16d5a07b5" + hash: "6bd00519ea14f0dd34d45de4deaaa65e" } Frame { msec: 2160 - hash: "d8fdababa06e1cafa9047de16d5a07b5" + hash: "6bd00519ea14f0dd34d45de4deaaa65e" } Frame { msec: 2176 - hash: "d8fdababa06e1cafa9047de16d5a07b5" + hash: "6bd00519ea14f0dd34d45de4deaaa65e" } Frame { msec: 2192 - hash: "f31d3f99faff3289b38ec91a43108707" + hash: "6bd00519ea14f0dd34d45de4deaaa65e" } Frame { msec: 2208 - hash: "f31d3f99faff3289b38ec91a43108707" + hash: "1c3e491e889e408f705477f060103243" } Frame { msec: 2224 - hash: "f31d3f99faff3289b38ec91a43108707" + hash: "1c3e491e889e408f705477f060103243" } Frame { msec: 2240 - hash: "60468f768e70c91cd28dca9479ed7738" + hash: "1c3e491e889e408f705477f060103243" } Frame { msec: 2256 - hash: "60468f768e70c91cd28dca9479ed7738" + hash: "1c3e491e889e408f705477f060103243" } Frame { msec: 2272 - hash: "fd5e8714cdd406f5626682c15a6efa38" + hash: "80bc59211ffab64820e306e6eb13d2fc" } Frame { msec: 2288 - hash: "fd5e8714cdd406f5626682c15a6efa38" + hash: "80bc59211ffab64820e306e6eb13d2fc" } Frame { msec: 2304 - hash: "fd5e8714cdd406f5626682c15a6efa38" + hash: "80bc59211ffab64820e306e6eb13d2fc" } Frame { msec: 2320 - hash: "20f37569f7f3b374753b991b28d98e74" + hash: "80bc59211ffab64820e306e6eb13d2fc" } Frame { msec: 2336 - hash: "20f37569f7f3b374753b991b28d98e74" + hash: "80bc59211ffab64820e306e6eb13d2fc" } Frame { msec: 2352 - hash: "20f37569f7f3b374753b991b28d98e74" + hash: "7765c76dd2ef99e4d7286fcb3a172a07" } Frame { msec: 2368 - hash: "20f37569f7f3b374753b991b28d98e74" + hash: "7765c76dd2ef99e4d7286fcb3a172a07" } Frame { msec: 2384 - hash: "20f37569f7f3b374753b991b28d98e74" + hash: "7765c76dd2ef99e4d7286fcb3a172a07" } Frame { msec: 2400 - hash: "8ab72206d4ba87effd44844c67ab4d53" + hash: "7765c76dd2ef99e4d7286fcb3a172a07" } Frame { msec: 2416 - hash: "8ab72206d4ba87effd44844c67ab4d53" + hash: "7765c76dd2ef99e4d7286fcb3a172a07" } Frame { msec: 2432 - hash: "65fccdd3a8803ec1d70a12407366fb57" + hash: "8fedc4d5d4161922c1d9d50adcf67e4a" } Frame { msec: 2448 - hash: "65fccdd3a8803ec1d70a12407366fb57" + hash: "8fedc4d5d4161922c1d9d50adcf67e4a" } Frame { msec: 2464 - hash: "65fccdd3a8803ec1d70a12407366fb57" + hash: "8fedc4d5d4161922c1d9d50adcf67e4a" } Frame { msec: 2480 - hash: "65fccdd3a8803ec1d70a12407366fb57" + hash: "8fedc4d5d4161922c1d9d50adcf67e4a" } Frame { msec: 2496 - hash: "65fccdd3a8803ec1d70a12407366fb57" + hash: "4f26d7ab05e6d39a869be1259e33c739" } Frame { msec: 2512 - hash: "ea98cc56d2f402814d8c1b952c8bd9a0" + hash: "4f26d7ab05e6d39a869be1259e33c739" } Frame { msec: 2528 - hash: "ea98cc56d2f402814d8c1b952c8bd9a0" + hash: "4f26d7ab05e6d39a869be1259e33c739" } Frame { msec: 2544 - hash: "ea98cc56d2f402814d8c1b952c8bd9a0" + hash: "4f26d7ab05e6d39a869be1259e33c739" } Frame { msec: 2560 - hash: "ea98cc56d2f402814d8c1b952c8bd9a0" + hash: "d4ead42bcc2e283e513f1ab4f8a89f27" } Frame { msec: 2576 - hash: "6dd6532db6afba17d36930bfd71abb5d" + hash: "d4ead42bcc2e283e513f1ab4f8a89f27" } Frame { msec: 2592 - hash: "6dd6532db6afba17d36930bfd71abb5d" + hash: "d4ead42bcc2e283e513f1ab4f8a89f27" } Frame { msec: 2608 - hash: "6dd6532db6afba17d36930bfd71abb5d" + hash: "d4ead42bcc2e283e513f1ab4f8a89f27" } Frame { msec: 2624 - hash: "6dd6532db6afba17d36930bfd71abb5d" + hash: "d4ead42bcc2e283e513f1ab4f8a89f27" } Frame { msec: 2640 - hash: "6dd6532db6afba17d36930bfd71abb5d" + hash: "6d91b100f369381b24052e5a4466e24d" } Frame { msec: 2656 - hash: "70989ac02176a37beb2cf259cd2d9770" + hash: "6d91b100f369381b24052e5a4466e24d" } Frame { msec: 2672 - hash: "70989ac02176a37beb2cf259cd2d9770" + hash: "6d91b100f369381b24052e5a4466e24d" } Frame { msec: 2688 - hash: "70989ac02176a37beb2cf259cd2d9770" + hash: "6d91b100f369381b24052e5a4466e24d" } Frame { msec: 2704 - hash: "70989ac02176a37beb2cf259cd2d9770" + hash: "2d6082b41e3cfdc3be9c130311ac854a" } Frame { msec: 2720 - hash: "1c6d8786cb42afa2af611dec5ebdcda7" + hash: "2d6082b41e3cfdc3be9c130311ac854a" } Frame { msec: 2736 - hash: "1c6d8786cb42afa2af611dec5ebdcda7" + hash: "2d6082b41e3cfdc3be9c130311ac854a" } Frame { msec: 2752 - hash: "3e8215d2cb61404230284ddd0041a79c" + hash: "2d6082b41e3cfdc3be9c130311ac854a" } Frame { msec: 2768 - hash: "3e8215d2cb61404230284ddd0041a79c" + hash: "2d6082b41e3cfdc3be9c130311ac854a" } Frame { msec: 2784 - hash: "3e8215d2cb61404230284ddd0041a79c" + hash: "78732b58812f202768fa224aefce187d" } Frame { msec: 2800 - hash: "3e8215d2cb61404230284ddd0041a79c" + hash: "78732b58812f202768fa224aefce187d" } Frame { msec: 2816 - hash: "3e8215d2cb61404230284ddd0041a79c" + hash: "78732b58812f202768fa224aefce187d" } Frame { msec: 2832 - hash: "a4ed37665222950eab7fcb53dbe22bcf" + hash: "78732b58812f202768fa224aefce187d" } Frame { msec: 2848 - hash: "a4ed37665222950eab7fcb53dbe22bcf" + hash: "54d728d677cf3a07c4da7727a75e6c59" } Frame { msec: 2864 - hash: "a4ed37665222950eab7fcb53dbe22bcf" + hash: "54d728d677cf3a07c4da7727a75e6c59" } Frame { msec: 2880 - image: "elide2.2.png" + hash: "54d728d677cf3a07c4da7727a75e6c59" } Frame { msec: 2896 - hash: "a4ed37665222950eab7fcb53dbe22bcf" + image: "elide2.3.png" } Frame { msec: 2912 - hash: "a4ed37665222950eab7fcb53dbe22bcf" + hash: "54d728d677cf3a07c4da7727a75e6c59" } Frame { msec: 2928 - hash: "a7f26f5fbcc97f408974e4bc23fd0b70" + hash: "45ec3534077f6fa66d7710010cceb332" } Frame { msec: 2944 - hash: "a7f26f5fbcc97f408974e4bc23fd0b70" + hash: "45ec3534077f6fa66d7710010cceb332" } Frame { msec: 2960 - hash: "913478b8d5d05967efd1c83e80e773e2" + hash: "45ec3534077f6fa66d7710010cceb332" } Frame { msec: 2976 - hash: "913478b8d5d05967efd1c83e80e773e2" + hash: "45ec3534077f6fa66d7710010cceb332" } Frame { msec: 2992 - hash: "913478b8d5d05967efd1c83e80e773e2" + hash: "ef909728fa59292ffed1d047835439d6" } Frame { msec: 3008 - hash: "130749caf262b3055e7ac229b6b89548" + hash: "ef909728fa59292ffed1d047835439d6" } Frame { msec: 3024 - hash: "130749caf262b3055e7ac229b6b89548" + hash: "ef909728fa59292ffed1d047835439d6" } Frame { msec: 3040 - hash: "130749caf262b3055e7ac229b6b89548" + hash: "ef909728fa59292ffed1d047835439d6" } Frame { msec: 3056 - hash: "130749caf262b3055e7ac229b6b89548" + hash: "ef909728fa59292ffed1d047835439d6" } Frame { msec: 3072 - hash: "130749caf262b3055e7ac229b6b89548" + hash: "454741313d087e5d13ddeaf02663746f" } Frame { msec: 3088 - hash: "d7260d913c58065a671ff6b931bb2fb6" + hash: "454741313d087e5d13ddeaf02663746f" } Frame { msec: 3104 - hash: "d7260d913c58065a671ff6b931bb2fb6" + hash: "454741313d087e5d13ddeaf02663746f" } Frame { msec: 3120 - hash: "d7260d913c58065a671ff6b931bb2fb6" + hash: "454741313d087e5d13ddeaf02663746f" } Frame { msec: 3136 - hash: "d7260d913c58065a671ff6b931bb2fb6" + hash: "454741313d087e5d13ddeaf02663746f" } Frame { msec: 3152 - hash: "9059402dce5cb1813af8f7ebbd831bca" + hash: "02928f0a8f8f1011028114487b8dccf8" } Frame { msec: 3168 - hash: "9059402dce5cb1813af8f7ebbd831bca" + hash: "02928f0a8f8f1011028114487b8dccf8" } Frame { msec: 3184 - hash: "9059402dce5cb1813af8f7ebbd831bca" + hash: "02928f0a8f8f1011028114487b8dccf8" } Frame { msec: 3200 - hash: "80387fc8aedc0c490c689c3a1711fe9f" + hash: "02928f0a8f8f1011028114487b8dccf8" } Frame { msec: 3216 - hash: "80387fc8aedc0c490c689c3a1711fe9f" + hash: "e0fca67bb095c9891831cd9355b4880d" } Frame { msec: 3232 - hash: "80387fc8aedc0c490c689c3a1711fe9f" + hash: "e0fca67bb095c9891831cd9355b4880d" } Frame { msec: 3248 - hash: "f461bf58cbfd345a3f4e087cfcb0e9f0" + hash: "e0fca67bb095c9891831cd9355b4880d" } Frame { msec: 3264 - hash: "f461bf58cbfd345a3f4e087cfcb0e9f0" + hash: "e0fca67bb095c9891831cd9355b4880d" } Frame { msec: 3280 - hash: "d41a792b81cb891a91f2bff6dbee3bdd" + hash: "f5ae54931d953fc95cfbdbde1993bebe" } Frame { msec: 3296 - hash: "d41a792b81cb891a91f2bff6dbee3bdd" + hash: "f5ae54931d953fc95cfbdbde1993bebe" } Frame { msec: 3312 - hash: "d41a792b81cb891a91f2bff6dbee3bdd" + hash: "f5ae54931d953fc95cfbdbde1993bebe" } Frame { msec: 3328 - hash: "d41a792b81cb891a91f2bff6dbee3bdd" + hash: "f5ae54931d953fc95cfbdbde1993bebe" } Frame { msec: 3344 - hash: "d41a792b81cb891a91f2bff6dbee3bdd" + hash: "f5ae54931d953fc95cfbdbde1993bebe" } Frame { msec: 3360 - hash: "664ac430dd416e6d1ed7e001458202cf" + hash: "9afb0b2a185e2f825e9fad1c3644f6cb" } Frame { msec: 3376 - hash: "664ac430dd416e6d1ed7e001458202cf" + hash: "9afb0b2a185e2f825e9fad1c3644f6cb" } Frame { msec: 3392 - hash: "664ac430dd416e6d1ed7e001458202cf" + hash: "9afb0b2a185e2f825e9fad1c3644f6cb" } Frame { msec: 3408 - hash: "664ac430dd416e6d1ed7e001458202cf" + hash: "9afb0b2a185e2f825e9fad1c3644f6cb" } Frame { msec: 3424 - hash: "664ac430dd416e6d1ed7e001458202cf" + hash: "9afb0b2a185e2f825e9fad1c3644f6cb" } Frame { msec: 3440 - hash: "c7a9e47b613745858a76a57e1782b566" + hash: "f3f5a81d3b5f644a00cea6203f38994c" } Frame { msec: 3456 - hash: "c7a9e47b613745858a76a57e1782b566" + hash: "f3f5a81d3b5f644a00cea6203f38994c" } Frame { msec: 3472 - hash: "b90d46cbd9d7d1d82cb9abfbe27fc549" + hash: "f3f5a81d3b5f644a00cea6203f38994c" } Frame { msec: 3488 - hash: "b90d46cbd9d7d1d82cb9abfbe27fc549" + hash: "f3f5a81d3b5f644a00cea6203f38994c" } Frame { msec: 3504 - hash: "b90d46cbd9d7d1d82cb9abfbe27fc549" + hash: "bd9884712fd5afe67a3622c809bf4e76" } Frame { msec: 3520 - hash: "59c03ceae9b13576bd0e285234dfe264" + hash: "bd9884712fd5afe67a3622c809bf4e76" } Frame { msec: 3536 - hash: "59c03ceae9b13576bd0e285234dfe264" + hash: "bd9884712fd5afe67a3622c809bf4e76" } Frame { msec: 3552 - hash: "59c03ceae9b13576bd0e285234dfe264" + hash: "bd9884712fd5afe67a3622c809bf4e76" } Frame { msec: 3568 - hash: "59c03ceae9b13576bd0e285234dfe264" + hash: "c9324386954380a72ef4084d13e623b5" } Frame { msec: 3584 - hash: "59c03ceae9b13576bd0e285234dfe264" + hash: "c9324386954380a72ef4084d13e623b5" } Frame { msec: 3600 - hash: "b883d12eea2ec596cb6ee81f2d1db35f" + hash: "c9324386954380a72ef4084d13e623b5" } Frame { msec: 3616 - hash: "b883d12eea2ec596cb6ee81f2d1db35f" + hash: "c9324386954380a72ef4084d13e623b5" } Frame { msec: 3632 - hash: "b883d12eea2ec596cb6ee81f2d1db35f" + hash: "c9324386954380a72ef4084d13e623b5" } Frame { msec: 3648 - hash: "b883d12eea2ec596cb6ee81f2d1db35f" + hash: "6d05fd8e8690e44293af1809f359aa72" } Frame { msec: 3664 - hash: "9bd66e03c36c8cc279c9cfb1ea9e96a0" + hash: "6d05fd8e8690e44293af1809f359aa72" } Frame { msec: 3680 - hash: "9bd66e03c36c8cc279c9cfb1ea9e96a0" + hash: "6d05fd8e8690e44293af1809f359aa72" } Frame { msec: 3696 - hash: "9bd66e03c36c8cc279c9cfb1ea9e96a0" + hash: "6d05fd8e8690e44293af1809f359aa72" } Frame { msec: 3712 - hash: "9bd66e03c36c8cc279c9cfb1ea9e96a0" + hash: "6d05fd8e8690e44293af1809f359aa72" } Frame { msec: 3728 - hash: "9bd66e03c36c8cc279c9cfb1ea9e96a0" + hash: "2d7350a79f5a68d3e3dfc994c6e002ed" } Frame { msec: 3744 - hash: "ee357c3850d0f328db859e7b790bed83" + hash: "2d7350a79f5a68d3e3dfc994c6e002ed" } Frame { msec: 3760 - hash: "ee357c3850d0f328db859e7b790bed83" + hash: "2d7350a79f5a68d3e3dfc994c6e002ed" } Frame { msec: 3776 - hash: "f706095272153c1e9fc4a4825ba54d91" + hash: "2d7350a79f5a68d3e3dfc994c6e002ed" } Frame { msec: 3792 - hash: "f706095272153c1e9fc4a4825ba54d91" + hash: "edb5d50f23a293a7791122fc159aaaa0" } Frame { msec: 3808 - hash: "34f4d03164469f99bb7bcb365041cf8e" + hash: "edb5d50f23a293a7791122fc159aaaa0" } Frame { msec: 3824 - hash: "34f4d03164469f99bb7bcb365041cf8e" + hash: "edb5d50f23a293a7791122fc159aaaa0" } Frame { msec: 3840 - image: "elide2.3.png" + hash: "edb5d50f23a293a7791122fc159aaaa0" } Frame { msec: 3856 - hash: "34f4d03164469f99bb7bcb365041cf8e" + image: "elide2.4.png" } Frame { msec: 3872 - hash: "34f4d03164469f99bb7bcb365041cf8e" + hash: "a863480fec9abf817752c5eb62a2ddf4" } Frame { msec: 3888 - hash: "97cb5f52e1a5e82a15542b7e5f772fba" + hash: "a863480fec9abf817752c5eb62a2ddf4" } Frame { msec: 3904 - hash: "97cb5f52e1a5e82a15542b7e5f772fba" + hash: "a863480fec9abf817752c5eb62a2ddf4" } } diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/multilength.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/multilength.0.png index 8caaf5f..e1d3b75 100644 Binary files a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/multilength.0.png and b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/multilength.0.png differ diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/multilength.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/multilength.1.png new file mode 100644 index 0000000..8013dc9 Binary files /dev/null and b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/multilength.1.png differ diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/multilength.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/multilength.qml index 30df3fa..77a7b2f 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/multilength.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/multilength.qml @@ -6,298 +6,298 @@ VisualTest { } Frame { msec: 16 - hash: "2e258ad7cb0a2cd7c6c47a0b0a9563c1" + image: "multilength.0.png" } Frame { msec: 32 - hash: "d818e0f4f1011a2a8f1d0d803fa18bc0" + hash: "ef2b4cc93e5bf5e64d3338921fe36336" } Frame { msec: 48 - hash: "44b37be97bbd1f0e26d81f76d9643e51" + hash: "3ddbd1a53a36b0f8b36d87e742f3b1bd" } Frame { msec: 64 - hash: "3079a5cf6b8277ae3e1b29ae09d04adc" + hash: "f7acfdaf29a3d7bd179b30db784ca01b" } Frame { msec: 80 - hash: "ba899e6f18abb7105f915cef4e60f1e1" + hash: "b5277d02ed63180e845c60e1dd4da7d0" } Frame { msec: 96 - hash: "6d2d2b3dc8afa60e32a39449ba90f78d" + hash: "a7964577d77943d5a62c02ea1e689eb7" } Frame { msec: 112 - hash: "965af350a8fc20c7bcffb370802bc9d9" + hash: "fc597a07209bfea49227ec491b033af1" } Frame { msec: 128 - hash: "8e088db1ff0eb9f5c28268dee929928c" + hash: "429a7dd5a23a5012f1985bcddd27ba0c" } Frame { msec: 144 - hash: "a0ba6c6bd1e491778294346eeabd8138" + hash: "fbf845e137e0b389babdcd71a95c3060" } Frame { msec: 160 - hash: "068a018a5c017cb76ebf3721e0acdb35" + hash: "1d1272df3a53cb9860d23be3343a143e" } Frame { msec: 176 - hash: "efa65cae0a4d027c2ec508deecef8aa5" + hash: "cef05f6564b21fd2cbd02f6def604c0b" } Frame { msec: 192 - hash: "9c224e97aa56c6b203a48fb689d72c9a" + hash: "be0ca54bc7aa23c2b9c56e3a0444197a" } Frame { msec: 208 - hash: "4f78af1e82a2dd46bab2d237d4f574e5" + hash: "5372a7052d10b8c6c2204efdc88c2f48" } Frame { msec: 224 - hash: "7d022c13e3ef07ca0b6618ae8865dbf1" + hash: "43b775c558843c1334e86ca4fcf07ae2" } Frame { msec: 240 - hash: "1dc2ecf6cb92cd7d9e467de0049a8598" + hash: "10daf71511454ef4db3692a19ecbcbaa" } Frame { msec: 256 - hash: "262174926ac657c3cd788e2383b5842b" + hash: "5c545ecb0ddfaa5d6cde266be6fae35c" } Frame { msec: 272 - hash: "984c40aaa927f9e9e73ad228f057d3d9" + hash: "1a3c05b189c3adf87710eeb03296aec2" } Frame { msec: 288 - hash: "0c74101beaeb0a59c1e6b1bf751ca71d" + hash: "de2c6f4d3bf4d245e45e47a743808f5d" } Frame { msec: 304 - hash: "1c2dd6a6675014255e83c2ae734d717b" + hash: "7c71dcbd8e2be19ac2d090ab3e012a62" } Frame { msec: 320 - hash: "f6ac3e9e82a9a710f500f8053b6030ac" + hash: "3bd42257fe4a5d941a8755e66db94870" } Frame { msec: 336 - hash: "9676fdc060e5784e96534a962992c024" + hash: "d52f57a1f289d2c697fd1db2086a4df3" } Frame { msec: 352 - hash: "c46634183e4bde82419bf757bd674a72" + hash: "5d9e22ca6b6f8e4805a49fcf9c6a4dd6" } Frame { msec: 368 - hash: "d04d082f4a1602a308da7f373cbb4094" + hash: "cbafada44b434ac7fe64fdebef7a816e" } Frame { msec: 384 - hash: "a4178c9ffbb74f3f221fc63bee26ca35" + hash: "4ac900c005cfedb9e3367a4612334cc1" } Frame { msec: 400 - hash: "0667b13789a501995b2846f7d93fb973" + hash: "3dbe30edac497ca316bf39e55ff9580a" } Frame { msec: 416 - hash: "fda46bf0beecbb4326b2fc6f6926f0a7" + hash: "e892891c063172d513f4f8c0a0b2644f" } Frame { msec: 432 - hash: "85cbdea027d76dee1dad376679a40a22" + hash: "7c214a442c8f37d22f74343fdb7f7faa" } Frame { msec: 448 - hash: "0fd56200749ea5882e1bd714e9803d44" + hash: "c4461c6c26eb9689e640149b7755bf14" } Frame { msec: 464 - hash: "10bf5c477f64f442990716b7eec8fd70" + hash: "e7be611f007716a80698558d0600f5b6" } Frame { msec: 480 - hash: "7cbd8ba3f09c3d00051cd33006381afb" + hash: "5a3abaa7b36fcd7e2279318671597386" } Frame { msec: 496 - hash: "dca10161836025808cddce9fd93f2412" + hash: "2dba1fcba5bdce948fa56ffc02a7f80c" } Frame { msec: 512 - hash: "b949ec6303ccaafc203066c7f9b33ef2" + hash: "55043bcce83e4f8899b1a692fe30fa67" } Frame { msec: 528 - hash: "853c521bad75c08c0dfe3a00bed01136" + hash: "f92df1fb28a7da39ed907dd2bc177ab8" } Frame { msec: 544 - hash: "dd76c440dc8cfcb7305409483d21d65d" + hash: "7dcf90cd5f81999359ed389c7050d934" } Frame { msec: 560 - hash: "c9b70db4b94e4b0cc855102f43b8e731" + hash: "021014366809103b76bd5d472c43b062" } Frame { msec: 576 - hash: "d196057b8aa1e11ec9cf11032b57ca03" + hash: "fff5b2c8d63083d132c0f106fad84fa1" } Frame { msec: 592 - hash: "0fae715746a8a340a8f3c4428cf96783" + hash: "ab3a6a6c646d31be97884484a6647330" } Frame { msec: 608 - hash: "dd2e89d00ce85b167fbc822fedbfb449" + hash: "d46a168f89d94a32496b75ee5d3794e4" } Frame { msec: 624 - hash: "a5228adf745f580364eafcbbdd994178" + hash: "f7b62e86595a4d2c7f5a2cd52e0938b9" } Frame { msec: 640 - hash: "f750f588ee00805bc3757940f95de9ae" + hash: "df95a29a101889c50537cfb1b027f9a6" } Frame { msec: 656 - hash: "55a79fefc2bf6d42b442e68150e3a9bc" + hash: "4c6691ef37222260dce72868ae809d68" } Frame { msec: 672 - hash: "7b932e7585e66cc7cd31f858ce78a6e1" + hash: "ad816534dcf446a1456894ff2b1afa33" } Frame { msec: 688 - hash: "10f204c59a5bff0c49dfc7691c35cef8" + hash: "bfa9f9f833f38aedf766e061f3a18c48" } Frame { msec: 704 - hash: "cf901c80729eb0b83b46777e727d43e2" + hash: "f4a6786e9db58cf3fd3f3b896d3cf84f" } Frame { msec: 720 - hash: "f6bf6e11ef6a71d7e746fae1d0a44531" + hash: "e51e8b766e5d4a0f061dc6885fcf8eb3" } Frame { msec: 736 - hash: "4a8795196ece8c0ef18319008dbc0f2f" + hash: "eab6d261429c36c4e37005f37b7823d5" } Frame { msec: 752 - hash: "44d32f0b5377ad3b08928413f20e95e1" + hash: "3cc5db209a98daef06127bae53b1929d" } Frame { msec: 768 - hash: "9e0dd160a465573cbac831a14e36ba6d" + hash: "230cd6e6ca18a921a21379dd85e24822" } Frame { msec: 784 - hash: "fb2e2522cee569632d9682aa04e7ca08" + hash: "e3a877e8f01bf17fe6ea8b9fbb780f14" } Frame { msec: 800 - hash: "71b0e8d7671cee10f4f71a80abcde7ec" + hash: "a19f504a81409dea775481f21f992ba6" } Frame { msec: 816 - hash: "4affee92d320d6eca9995ddd8989627f" + hash: "e77cc3ab14551638e704a1493189d5d1" } Frame { msec: 832 - hash: "b3e5e26a34cd491d3cd23f4e611266e2" + hash: "613bdf9d32358ab0db310ae1e2246d52" } Frame { msec: 848 - hash: "aa185efe8d0c4c61d4df55266830cfd8" + hash: "d4fab0193f567cce4ad1e1cf6b156ce5" } Frame { msec: 864 - hash: "19c01ead1135f84b4b3a32583815fd10" + hash: "03ce3083411d10b14ac0bb85b22bfbd1" } Frame { msec: 880 - hash: "a231a722225c26ff764f16570d1e6beb" + hash: "4be10fb14abf82705d8071cf75956ece" } Frame { msec: 896 - hash: "466fce12d10bd4b714d4ead14d1c5839" + hash: "4c1f150fb5ba1194ad198eb32f705af6" } Frame { msec: 912 - hash: "158650554c8467ed7d93c3c11177e041" + hash: "5ddfd98c8a49eefe08ae33d0c0ea52ff" } Frame { msec: 928 - hash: "ac16910bc816ca6c76a78160dda8380d" + hash: "f2018d16f38e113c9477c19431e3d1e4" } Frame { msec: 944 - hash: "23ac6eeb0c9bd48dbc844b1263a18cbb" + hash: "9fe6406d65978dba74716f1ba02bdf76" } Frame { msec: 960 - image: "multilength.0.png" + hash: "265d92edca113f465e624079c266b213" } Frame { msec: 976 - hash: "3da0b9d963113cfb58152bac1c757065" + image: "multilength.1.png" } Frame { msec: 992 - hash: "e1a33345ee1372069d9282406f1e5605" + hash: "6beb60f7645be5f1d07449610b5e13b0" } Frame { msec: 1008 - hash: "da872c570bccf17e88ac7db1d6d076ae" + hash: "55c34cb290732a1fa94b5037477fd882" } Frame { msec: 1024 - hash: "6feea54c6a7f9895001efeff177f9be9" + hash: "4d6ed8044e3ac5da61cf61f4d08c5a19" } Frame { msec: 1040 - hash: "09049b33ca46a2fc2d06855e29ae66bf" + hash: "83657cfa447060a01d5fbdb890ad3fb9" } Frame { msec: 1056 - hash: "cd96d789f57ac1d425942416337174f1" + hash: "b04b6cb7e5e464ecee15a2c9803a857f" } Frame { msec: 1072 - hash: "0a763dd626e27ad14963aecfb8d7673c" + hash: "ea4f1707e49527f6cae0a3df1b75137b" } Frame { msec: 1088 - hash: "3d81f68bb7aac95b66b0cd0defbb3657" + hash: "ae4893aca919be2d89f1107185b5fe9a" } Frame { msec: 1104 - hash: "469b862006f99dfefcca803bc49287e3" + hash: "d991c469947a94ffcfb63716226fa912" } Frame { msec: 1120 - hash: "c3f698102bd46231430ab9e8029b8192" + hash: "df63c1dba0399d1fe5e7b9c9c794b598" } Frame { msec: 1136 - hash: "421a9b4848a59281aea73c08a7219a33" + hash: "305d263f68b4ccd78bffccd887870f97" } Frame { msec: 1152 - hash: "0066eaa302678a4be35dca0c3ed33b1c" + hash: "f4d1f7245b519d623defdc12e76285d2" } Frame { msec: 1168 - hash: "4cceb05bfeb231189b66f1fbdfaeccd3" + hash: "5a47e6498ddf8a02cb1df7a3510bac37" } Frame { msec: 1184 - hash: "ccf229cdd6fde7ef663791d27a008bee" + hash: "358b9b6be7f8379815d8ee828eed3e43" } } diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/plaintext.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/plaintext.0.png index cd436b5..591c1ef 100644 Binary files a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/plaintext.0.png and b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/plaintext.0.png differ diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/plaintext2.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/plaintext2.0.png index e47b479..dc90e0d 100644 Binary files a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/plaintext2.0.png and b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/plaintext2.0.png differ diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/plaintext3.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/plaintext3.0.png index 0d3c672..c787029 100644 Binary files a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/plaintext3.0.png and b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/plaintext3.0.png differ diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/richtext.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/richtext.0.png index ba833a2..fdd64ac 100644 Binary files a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/richtext.0.png and b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/richtext.0.png differ diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/richtext2.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/richtext2.0.png new file mode 100644 index 0000000..1286e54 Binary files /dev/null and b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/richtext2.0.png differ diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/richtext2.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/richtext2.qml new file mode 100644 index 0000000..afae3f8 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/richtext2.qml @@ -0,0 +1,11 @@ +import Qt.VisualTest 4.7 + +VisualTest { + Frame { + msec: 0 + } + Frame { + msec: 16 + image: "richtext2.0.png" + } +} diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.0.png index f41c165..adbdfa7 100644 Binary files a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.0.png and b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.0.png differ diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.1.png index 539e4df..d3fbdc6 100644 Binary files a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.1.png and b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.1.png differ diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.2.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.2.png index 47ceaac..9a96d46 100644 Binary files a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.2.png and b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.2.png differ diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.3.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.3.png index e24a453..2026aca 100644 Binary files a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.3.png and b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.3.png differ diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.4.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.4.png index ecf8335..c435029 100644 Binary files a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.4.png and b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.4.png differ diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.5.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.5.png index 3d8709f..70f273d 100644 Binary files a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.5.png and b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.5.png differ diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.qml index ff5db41..0f3bd2c 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.qml @@ -6,87 +6,87 @@ VisualTest { } Frame { msec: 16 - hash: "c1bb09480464b7813bc10b0093d14745" + image: "cursorDelegate.0.png" } Frame { msec: 32 - hash: "9d0e449506ce93052216b7a952af3dea" + hash: "b742ebe441dde1f30dab6d19954a9e8c" } Frame { msec: 48 - hash: "52641f9d6dfba8bf2b94aa37ade140d1" + hash: "d3be942cfb93c4a5d5aa906410125d02" } Frame { msec: 64 - hash: "7610775f69a461d5487e8bc3db6b6e1f" + hash: "062574e74354b104db2ee6d3c3af5802" } Frame { msec: 80 - hash: "afe0c3fdcb498f1f6b877c5d808b2555" + hash: "575dd420067e4ebe5733eb4e35a447ab" } Frame { msec: 96 - hash: "97dabf3984492d2f868b36c3e7bfce50" + hash: "4213f35c4cd233a08d98ba0380b7ab0a" } Frame { msec: 112 - hash: "869624c2ae63b0a447401a955a6fefb1" + hash: "505e740aacf4ca7e6ad24367ddad8678" } Frame { msec: 128 - hash: "7031966f014d4acd5b00c46c89f61403" + hash: "007e76fb247e11a442802c7cfb4e6a24" } Frame { msec: 144 - hash: "bd5395e7e0aa0d50cb30504f9961c954" + hash: "5cf6cb0afffb791da1c4d0fe00cf6326" } Frame { msec: 160 - hash: "a7142c3c1eb9c934e0b258c163fcdfec" + hash: "aff4097bd39c87c5d1459d99f314dade" } Frame { msec: 176 - hash: "373c57edb812db59f40710305d80e9e9" + hash: "009dc0c6ff28333ac2fdfa3d79ad2fd6" } Frame { msec: 192 - hash: "78b16507899c3c8de04b55389ea0ad49" + hash: "4bf8e82220ea0d0c4298d5374e149de2" } Frame { msec: 208 - hash: "b0fd95dc2ac09a1cbd67ad0f86682666" + hash: "938a6eea45c4412e847a8700172d80ac" } Frame { msec: 224 - hash: "5f073a4a89413b6a6c5d6ff52717bb2f" + hash: "6502416042993d05dd514119512ed61f" } Frame { msec: 240 - hash: "82e61a4d3f58ee5104893e254a77f13e" + hash: "5d6702b9475e69bda2ed38f6e2d583d9" } Frame { msec: 256 - hash: "a8fe05178e6339454d57575692fa3df3" + hash: "8e5fdc8e6cc38089d1e8ff5e91a5c894" } Frame { msec: 272 - hash: "192f80add5f612b07dcb8d69f2161648" + hash: "c0249d07bcf25af69bf929b4d5ac00a3" } Frame { msec: 288 - hash: "cfd85885f59ea80b0b0152446a829fec" + hash: "efe333c2b8cccea0bd7135484049db06" } Frame { msec: 304 - hash: "a7295dcc92f80a5f343bf05076a03748" + hash: "57e49e9094691a204f7507b0231352b3" } Frame { msec: 320 - hash: "2b0b30cfb1c1e4ed8a51d36fb7ccdf57" + hash: "d0a45bd3cfc5e4e6f9a48534c768daba" } Frame { msec: 336 - hash: "419c538908d0226ff4485f1094eaa08e" + hash: "6960ab817c67a61af31cc187efe65016" } Key { type: 6 @@ -98,27 +98,27 @@ VisualTest { } Frame { msec: 352 - hash: "8afe64448d42419f97ca207487b3b0f8" + hash: "3b0d483ff765f36a196411967b6dfd70" } Frame { msec: 368 - hash: "86091218d2d066d8f95a460426266369" + hash: "559713749d65246b185c0c91eb7ad39e" } Frame { msec: 384 - hash: "fc45978cac92b6cdeeecc2dd4c29aa53" + hash: "9aea32722fd4f8b0cde3c06c61cecde6" } Frame { msec: 400 - hash: "03a90ae5cbe68cc210e303c78a14e065" + hash: "25dfa32ce92b6044f5ea68411ab5de5b" } Frame { msec: 416 - hash: "15603a997aa02afb688aa74cd930f3b4" + hash: "dab689ed2bbe663df309548e615e8621" } Frame { msec: 432 - hash: "90bf6b2bf89e1440f0c4d1044c1bd22c" + hash: "26ad44cef380ff9f64c12180fb54c695" } Key { type: 6 @@ -130,19 +130,19 @@ VisualTest { } Frame { msec: 448 - hash: "4dbdc16538cbbf1a87c6a54e09e02b16" + hash: "5e8bbcd46b5692e66963387b80971e90" } Frame { msec: 464 - hash: "2011ee59d2ec4bb0ae0d63727f091648" + hash: "747df5357daa951fbedeadf909f9dbf3" } Frame { msec: 480 - hash: "c526315dd5eec117266c68a7b6b64a3f" + hash: "af99069cdddfa9d099fbe25ba586e138" } Frame { msec: 496 - hash: "c526315dd5eec117266c68a7b6b64a3f" + hash: "af99069cdddfa9d099fbe25ba586e138" } Key { type: 6 @@ -154,35 +154,35 @@ VisualTest { } Frame { msec: 512 - hash: "7fc65284b99fc548de0985d94a145fa7" + hash: "cb6ca047657a99dbbb037c1c45b40866" } Frame { msec: 528 - hash: "7fc65284b99fc548de0985d94a145fa7" + hash: "cb6ca047657a99dbbb037c1c45b40866" } Frame { msec: 544 - hash: "7fc65284b99fc548de0985d94a145fa7" + hash: "cb6ca047657a99dbbb037c1c45b40866" } Frame { msec: 560 - hash: "7fc65284b99fc548de0985d94a145fa7" + hash: "cb6ca047657a99dbbb037c1c45b40866" } Frame { msec: 576 - hash: "b4205f141a7a6b646cf641ba922d588b" + hash: "1684711d2c492de2093357168b8726c6" } Frame { msec: 592 - hash: "94c3adf5da700bb63ed6eaf0adf8d037" + hash: "6d960ca89faec6e3d81f78911b9b5ecf" } Frame { msec: 608 - hash: "62c4757a2e26341655e27417f85ba6d8" + hash: "1fdd91b57f5832d5c4d797d150892156" } Frame { msec: 624 - hash: "9de2ce48334b088c0a0960a581f43a36" + hash: "4e0f1ec936cacf3ab6fbc7899a6bc92d" } Key { type: 7 @@ -194,15 +194,15 @@ VisualTest { } Frame { msec: 640 - hash: "9ca827d4812521d1590ca6e7117bd788" + hash: "9e67145b58051fd7dc4a18ee0e6a72ad" } Frame { msec: 656 - hash: "66f65cd7215ea89e60d8f60337fffe97" + hash: "14dfb4b356ec851275ddd8e93f04e2d2" } Frame { msec: 672 - hash: "05caae5e0d092c4d0595286aa4baa6a0" + hash: "e9b8f691ad62d10877aacb94f98ea308" } Key { type: 6 @@ -214,31 +214,31 @@ VisualTest { } Frame { msec: 688 - hash: "2282153f3ae493aa6ad5377b12d88043" + hash: "a44b5f63ec1f98b6bc34e95214c9d79e" } Frame { msec: 704 - hash: "aee2503a5d4ec61795b0486da5c53867" + hash: "6bc0e035c90b74de024d379388fd7014" } Frame { msec: 720 - hash: "f564e1ae90bc6b1ea4bc84f1729eb487" + hash: "61d8f417f7ca5cba2e98a7a7427ea635" } Frame { msec: 736 - hash: "f5c70adef5725a0574b63dd5ab7d7b12" + hash: "f50adb10f55bcd4c2eb0955f6e1ff78e" } Frame { msec: 752 - hash: "74ed3230417c69b0dc82ce9cfe4b6cd0" + hash: "9e160aefac79a9804f6cb8622e45ba71" } Frame { msec: 768 - hash: "374270279bcc00167d2b63bf9a658785" + hash: "6555a0bd60dbbad66283fe37b2f0c362" } Frame { msec: 784 - hash: "68445a2b5470e44baf7af95efc20ba33" + hash: "0cacc38d86ebf497d31b01556b8a5924" } Key { type: 7 @@ -250,63 +250,63 @@ VisualTest { } Frame { msec: 800 - hash: "5add6c9527edf6bbdb3a79b8a524db70" + hash: "b2fe1d5cb5e0a5f07d84ff7a494ae07a" } Frame { msec: 816 - hash: "01a96c8407fa2c0f9e7a822249ac9adc" + hash: "2c6dbd777bba27b481a8a6ef34d213f9" } Frame { msec: 832 - hash: "6b9af295d8f2fb5ba8d9c234596d0a88" + hash: "989e53620edc6b9b0990545459e7f787" } Frame { msec: 848 - hash: "3837442e90c2a1534e21d21bfc3b46e1" + hash: "a89686a7802da3fd07a265a5814255f4" } Frame { msec: 864 - hash: "afd7d2494dae8e7ef40a165ccc627313" + hash: "9f707497eb0c224c8b0a3bba1533217a" } Frame { msec: 880 - hash: "6e7058d540b26d3c5f15804f2f93b835" + hash: "29df155c0b75de8e1bd6361372a51797" } Frame { msec: 896 - hash: "ffa489a15db741d8b835d998336bc1b3" + hash: "fb7cbeb1e3689cc38acf7a02d671a955" } Frame { msec: 912 - hash: "5a0308d1d2a6a36e16ddb312294fcbf8" + hash: "9045ada282ec37b1681cef89dfcc8f67" } Frame { msec: 928 - hash: "bd56ed24908c7e8ec4e5ebc75a19ca86" + hash: "b3816b225eaf5ab49bb31f86ecdd52cb" } Frame { msec: 944 - hash: "7bd56b12087226100da27776f8943427" + hash: "0956fccb8e1bf2c218a9e39947846aaa" } Frame { msec: 960 - image: "cursorDelegate.0.png" + hash: "01f4ba2e0b4eb018c620efa5e92ec9fe" } Frame { msec: 976 - hash: "f48a56350bba266c2f19deb46d39e174" + image: "cursorDelegate.1.png" } Frame { msec: 992 - hash: "9587bb118f2eb2bf8bb3cfc40ed18310" + hash: "c19ec2d067d30a6d42056c9799b0c0c3" } Frame { msec: 1008 - hash: "0f9e9622427ebaf85369b3013ae9aaf0" + hash: "43a9d066887a89372136619ae8eec100" } Frame { msec: 1024 - hash: "0f9e9622427ebaf85369b3013ae9aaf0" + hash: "43a9d066887a89372136619ae8eec100" } Key { type: 7 @@ -318,39 +318,39 @@ VisualTest { } Frame { msec: 1040 - hash: "9587bb118f2eb2bf8bb3cfc40ed18310" + hash: "c19ec2d067d30a6d42056c9799b0c0c3" } Frame { msec: 1056 - hash: "f48a56350bba266c2f19deb46d39e174" + hash: "8303d8b19e6e5b249aaf2ffbb6d29f91" } Frame { msec: 1072 - hash: "8234f16d07e76aeedb6ca14d622453cb" + hash: "01f4ba2e0b4eb018c620efa5e92ec9fe" } Frame { msec: 1088 - hash: "7bd56b12087226100da27776f8943427" + hash: "0956fccb8e1bf2c218a9e39947846aaa" } Frame { msec: 1104 - hash: "bd56ed24908c7e8ec4e5ebc75a19ca86" + hash: "b3816b225eaf5ab49bb31f86ecdd52cb" } Frame { msec: 1120 - hash: "5a0308d1d2a6a36e16ddb312294fcbf8" + hash: "9045ada282ec37b1681cef89dfcc8f67" } Frame { msec: 1136 - hash: "ffa489a15db741d8b835d998336bc1b3" + hash: "fb7cbeb1e3689cc38acf7a02d671a955" } Frame { msec: 1152 - hash: "6e7058d540b26d3c5f15804f2f93b835" + hash: "29df155c0b75de8e1bd6361372a51797" } Frame { msec: 1168 - hash: "afd7d2494dae8e7ef40a165ccc627313" + hash: "9f707497eb0c224c8b0a3bba1533217a" } Key { type: 6 @@ -362,31 +362,31 @@ VisualTest { } Frame { msec: 1184 - hash: "1d5c9458d568df773dbff4e333e14de0" + hash: "9f712a688504fff9719b38c067b32c50" } Frame { msec: 1200 - hash: "8eef242d89b7e2eff7678030f9fd808e" + hash: "24f1467e3be5f4d0509800bef97f4401" } Frame { msec: 1216 - hash: "97dc6ebbf64a19f5026c02ea4c79d63b" + hash: "d56e5fd86addad3bc53417b82ff68829" } Frame { msec: 1232 - hash: "52d2135428c3c2bf85f0fa7c2ba01a25" + hash: "f1c60934ef284840e61fd46c758dd14b" } Frame { msec: 1248 - hash: "c713bd1d1ab2df81292020e6e822546c" + hash: "7be9fc54278572116f9bd9be8f6994a4" } Frame { msec: 1264 - hash: "0c61ff34510168e324c53786720dd953" + hash: "0e0ea7ca1b8479d62ae81fb53a1ec264" } Frame { msec: 1280 - hash: "ba1488f2d9d4482cdf41c40af7642030" + hash: "f8b19dbaeec469896a081687d80a2ac4" } Key { type: 7 @@ -398,95 +398,95 @@ VisualTest { } Frame { msec: 1296 - hash: "91d2da369579bb72641d4e7e7cd696f5" + hash: "a28665925ec121a2bf01733e0a20e18b" } Frame { msec: 1312 - hash: "1cf1d30d6def868a60f434fe84c23c47" + hash: "baa0c601f3d84e344847dcb7f3bd18cf" } Frame { msec: 1328 - hash: "ba5b3005af3c44caaf7272cbb56e60da" + hash: "a80d59a1e5af45bc799c19200a3c44ec" } Frame { msec: 1344 - hash: "116ab7576b5e45e6009920854ff87f39" + hash: "2a6f833e2fd2930c8ec49016809d8cf6" } Frame { msec: 1360 - hash: "294c76d6f63c230af666b0b86e0c9844" + hash: "efdc2daad00aaec2c39541261d6d1a98" } Frame { msec: 1376 - hash: "c721a5b17b1eb4a063fa3b727d13ba62" + hash: "65b75f2a074d4ac5d84fb762d1762231" } Frame { msec: 1392 - hash: "a98bd750b67a0ef8831c9c66a0b06a28" + hash: "2a170e51a83e902d2699501877225ee3" } Frame { msec: 1408 - hash: "7739509b0f5e62207ba62262d8822388" + hash: "1e4c78e279ff4ab7a875e4d67f68f8ca" } Frame { msec: 1424 - hash: "62d70a7e3ce290c52d37090bf899377c" + hash: "fd515cf3ec7b987e0e36c02f1da5b8a7" } Frame { msec: 1440 - hash: "3f3c1137c02e14796c3a4537337d1dd8" + hash: "54126910ea7a303ea3e7726309d8bf39" } Frame { msec: 1456 - hash: "4997a45af699c1face114c72a9ce067d" + hash: "89263867df0cfa623f80e1578532d98d" } Frame { msec: 1472 - hash: "093cce71722904a32b030478f3af49bb" + hash: "1bf04aafab1177182eec9a0ff459cd7b" } Frame { msec: 1488 - hash: "093cce71722904a32b030478f3af49bb" + hash: "1bf04aafab1177182eec9a0ff459cd7b" } Frame { msec: 1504 - hash: "093cce71722904a32b030478f3af49bb" + hash: "1bf04aafab1177182eec9a0ff459cd7b" } Frame { msec: 1520 - hash: "093cce71722904a32b030478f3af49bb" + hash: "1bf04aafab1177182eec9a0ff459cd7b" } Frame { msec: 1536 - hash: "093cce71722904a32b030478f3af49bb" + hash: "1bf04aafab1177182eec9a0ff459cd7b" } Frame { msec: 1552 - hash: "093cce71722904a32b030478f3af49bb" + hash: "1bf04aafab1177182eec9a0ff459cd7b" } Frame { msec: 1568 - hash: "a4810a97e51259350bb1543dffc156af" + hash: "c824a8bbf60514c20713b1fa583451b2" } Frame { msec: 1584 - hash: "838871072acbefc1c8c488f47312da9b" + hash: "f6282cd20d7f3f64415a0a24df578964" } Frame { msec: 1600 - hash: "8cfe8847729878519669caa8b702d910" + hash: "a4633c7dc825f20a7ada2079712f7b5e" } Frame { msec: 1616 - hash: "a2fd8e049d03b87a306bb5b81e3f7311" + hash: "240c839fc986573523b30567afe05623" } Frame { msec: 1632 - hash: "29bd4d5e36cb6b232f513b6bb0c00b28" + hash: "9e3098ea355a80e7e439f3cdecd15b77" } Frame { msec: 1648 - hash: "9637f14efb2e355bfe886d7c5f2a8d38" + hash: "d8ec7fd807f345509703f4ecf94b583d" } Key { type: 6 @@ -498,35 +498,35 @@ VisualTest { } Frame { msec: 1664 - hash: "0365fa8845c3c1e53ef35d22423eb973" + hash: "5b6e0bedeca1784610081762850813a1" } Frame { msec: 1680 - hash: "bf88d5d2cd2ff062c1cc8a391a238b1d" + hash: "13a596d7aefa3c8ce61660dd5ce27627" } Frame { msec: 1696 - hash: "46b22f33eb80f013e44da11153441864" + hash: "295bbee587f2fdbadab7aa4e3900b6e0" } Frame { msec: 1712 - hash: "05ae42e3a0296a569dec147c76be273d" + hash: "645da4001b1489b12e0bb5dd1b5c114b" } Frame { msec: 1728 - hash: "1a8cc65973d08bb949f7a71b0bb8be1a" + hash: "8e7e4f5b8eb437ab92e466b1d79aee01" } Frame { msec: 1744 - hash: "ca3bde8cd8de81c4210fcfd000fe0f5e" + hash: "1a7ec33aa8a19a36a7fc99c3040e427a" } Frame { msec: 1760 - hash: "e06d104d1ed451eea4c1d9bdae9d10f4" + hash: "85f6c7d9f86910e7cceeaf9efc375355" } Frame { msec: 1776 - hash: "c95153ae401ad8a2e839905841c074f3" + hash: "8e54b0699d681cfbfc3b605b010c6b76" } Key { type: 6 @@ -538,35 +538,35 @@ VisualTest { } Frame { msec: 1792 - hash: "82e61a4d3f58ee5104893e254a77f13e" + hash: "5d6702b9475e69bda2ed38f6e2d583d9" } Frame { msec: 1808 - hash: "5f073a4a89413b6a6c5d6ff52717bb2f" + hash: "6502416042993d05dd514119512ed61f" } Frame { msec: 1824 - hash: "b0fd95dc2ac09a1cbd67ad0f86682666" + hash: "938a6eea45c4412e847a8700172d80ac" } Frame { msec: 1840 - hash: "78b16507899c3c8de04b55389ea0ad49" + hash: "4bf8e82220ea0d0c4298d5374e149de2" } Frame { msec: 1856 - hash: "373c57edb812db59f40710305d80e9e9" + hash: "009dc0c6ff28333ac2fdfa3d79ad2fd6" } Frame { msec: 1872 - hash: "a7142c3c1eb9c934e0b258c163fcdfec" + hash: "aff4097bd39c87c5d1459d99f314dade" } Frame { msec: 1888 - hash: "bd5395e7e0aa0d50cb30504f9961c954" + hash: "5cf6cb0afffb791da1c4d0fe00cf6326" } Frame { msec: 1904 - hash: "7031966f014d4acd5b00c46c89f61403" + hash: "007e76fb247e11a442802c7cfb4e6a24" } Key { type: 7 @@ -578,83 +578,83 @@ VisualTest { } Frame { msec: 1920 - image: "cursorDelegate.1.png" + hash: "505e740aacf4ca7e6ad24367ddad8678" } Frame { msec: 1936 - hash: "97dabf3984492d2f868b36c3e7bfce50" + image: "cursorDelegate.2.png" } Frame { msec: 1952 - hash: "afe0c3fdcb498f1f6b877c5d808b2555" + hash: "575dd420067e4ebe5733eb4e35a447ab" } Frame { msec: 1968 - hash: "7610775f69a461d5487e8bc3db6b6e1f" + hash: "062574e74354b104db2ee6d3c3af5802" } Frame { msec: 1984 - hash: "52641f9d6dfba8bf2b94aa37ade140d1" + hash: "d3be942cfb93c4a5d5aa906410125d02" } Frame { msec: 2000 - hash: "9d0e449506ce93052216b7a952af3dea" + hash: "b742ebe441dde1f30dab6d19954a9e8c" } Frame { msec: 2016 - hash: "c1bb09480464b7813bc10b0093d14745" + hash: "bbe3a292c59e2f7ae6b8877f6736c96e" } Frame { msec: 2032 - hash: "9d0e449506ce93052216b7a952af3dea" + hash: "b742ebe441dde1f30dab6d19954a9e8c" } Frame { msec: 2048 - hash: "52641f9d6dfba8bf2b94aa37ade140d1" + hash: "d3be942cfb93c4a5d5aa906410125d02" } Frame { msec: 2064 - hash: "7610775f69a461d5487e8bc3db6b6e1f" + hash: "062574e74354b104db2ee6d3c3af5802" } Frame { msec: 2080 - hash: "afe0c3fdcb498f1f6b877c5d808b2555" + hash: "575dd420067e4ebe5733eb4e35a447ab" } Frame { msec: 2096 - hash: "97dabf3984492d2f868b36c3e7bfce50" + hash: "4213f35c4cd233a08d98ba0380b7ab0a" } Frame { msec: 2112 - hash: "869624c2ae63b0a447401a955a6fefb1" + hash: "505e740aacf4ca7e6ad24367ddad8678" } Frame { msec: 2128 - hash: "7031966f014d4acd5b00c46c89f61403" + hash: "007e76fb247e11a442802c7cfb4e6a24" } Frame { msec: 2144 - hash: "bd5395e7e0aa0d50cb30504f9961c954" + hash: "5cf6cb0afffb791da1c4d0fe00cf6326" } Frame { msec: 2160 - hash: "a7142c3c1eb9c934e0b258c163fcdfec" + hash: "aff4097bd39c87c5d1459d99f314dade" } Frame { msec: 2176 - hash: "373c57edb812db59f40710305d80e9e9" + hash: "009dc0c6ff28333ac2fdfa3d79ad2fd6" } Frame { msec: 2192 - hash: "78b16507899c3c8de04b55389ea0ad49" + hash: "4bf8e82220ea0d0c4298d5374e149de2" } Frame { msec: 2208 - hash: "b0fd95dc2ac09a1cbd67ad0f86682666" + hash: "938a6eea45c4412e847a8700172d80ac" } Frame { msec: 2224 - hash: "5f073a4a89413b6a6c5d6ff52717bb2f" + hash: "6502416042993d05dd514119512ed61f" } Key { type: 7 @@ -666,35 +666,35 @@ VisualTest { } Frame { msec: 2240 - hash: "82e61a4d3f58ee5104893e254a77f13e" + hash: "5d6702b9475e69bda2ed38f6e2d583d9" } Frame { msec: 2256 - hash: "a8fe05178e6339454d57575692fa3df3" + hash: "8e5fdc8e6cc38089d1e8ff5e91a5c894" } Frame { msec: 2272 - hash: "192f80add5f612b07dcb8d69f2161648" + hash: "c0249d07bcf25af69bf929b4d5ac00a3" } Frame { msec: 2288 - hash: "cfd85885f59ea80b0b0152446a829fec" + hash: "efe333c2b8cccea0bd7135484049db06" } Frame { msec: 2304 - hash: "a7295dcc92f80a5f343bf05076a03748" + hash: "57e49e9094691a204f7507b0231352b3" } Frame { msec: 2320 - hash: "2b0b30cfb1c1e4ed8a51d36fb7ccdf57" + hash: "d0a45bd3cfc5e4e6f9a48534c768daba" } Frame { msec: 2336 - hash: "419c538908d0226ff4485f1094eaa08e" + hash: "6960ab817c67a61af31cc187efe65016" } Frame { msec: 2352 - hash: "8afe64448d42419f97ca207487b3b0f8" + hash: "3b0d483ff765f36a196411967b6dfd70" } Key { type: 6 @@ -706,35 +706,35 @@ VisualTest { } Frame { msec: 2368 - hash: "86091218d2d066d8f95a460426266369" + hash: "559713749d65246b185c0c91eb7ad39e" } Frame { msec: 2384 - hash: "fc45978cac92b6cdeeecc2dd4c29aa53" + hash: "9aea32722fd4f8b0cde3c06c61cecde6" } Frame { msec: 2400 - hash: "03a90ae5cbe68cc210e303c78a14e065" + hash: "25dfa32ce92b6044f5ea68411ab5de5b" } Frame { msec: 2416 - hash: "15603a997aa02afb688aa74cd930f3b4" + hash: "dab689ed2bbe663df309548e615e8621" } Frame { msec: 2432 - hash: "90bf6b2bf89e1440f0c4d1044c1bd22c" + hash: "26ad44cef380ff9f64c12180fb54c695" } Frame { msec: 2448 - hash: "4dbdc16538cbbf1a87c6a54e09e02b16" + hash: "5e8bbcd46b5692e66963387b80971e90" } Frame { msec: 2464 - hash: "2011ee59d2ec4bb0ae0d63727f091648" + hash: "747df5357daa951fbedeadf909f9dbf3" } Frame { msec: 2480 - hash: "c526315dd5eec117266c68a7b6b64a3f" + hash: "af99069cdddfa9d099fbe25ba586e138" } Key { type: 7 @@ -746,95 +746,95 @@ VisualTest { } Frame { msec: 2496 - hash: "c526315dd5eec117266c68a7b6b64a3f" + hash: "af99069cdddfa9d099fbe25ba586e138" } Frame { msec: 2512 - hash: "c526315dd5eec117266c68a7b6b64a3f" + hash: "af99069cdddfa9d099fbe25ba586e138" } Frame { msec: 2528 - hash: "c526315dd5eec117266c68a7b6b64a3f" + hash: "af99069cdddfa9d099fbe25ba586e138" } Frame { msec: 2544 - hash: "c526315dd5eec117266c68a7b6b64a3f" + hash: "af99069cdddfa9d099fbe25ba586e138" } Frame { msec: 2560 - hash: "c526315dd5eec117266c68a7b6b64a3f" + hash: "af99069cdddfa9d099fbe25ba586e138" } Frame { msec: 2576 - hash: "02996bef06c74f34cf8be4cf4d1392d5" + hash: "1568d4b93d2a284c46f23a0cb17acc24" } Frame { msec: 2592 - hash: "2d8cb2d213ce22132ba63a829c07f768" + hash: "0665a6cfc09981cd8a7ffd0d02e6fbdc" } Frame { msec: 2608 - hash: "0a16c282a18fdc657ea48fb208dea494" + hash: "49892aa44c8e3584239d245a7ca98af3" } Frame { msec: 2624 - hash: "86baec52ccb8ae818439c637c5be1514" + hash: "c9def393bb5d6c447c45b127d32b5e50" } Frame { msec: 2640 - hash: "72e2415581ba2a96b8f23cf8f5985afb" + hash: "679d94007b33197ce7decb4df6e8343c" } Frame { msec: 2656 - hash: "7776d964b2b5f80bac51a29d298a067f" + hash: "817987bcd9f1147ba047333b42ed289d" } Frame { msec: 2672 - hash: "3b5d0a9f961c2102a4118a8e2d2793ae" + hash: "fdd9331015c289b8e33b094999b11dce" } Frame { msec: 2688 - hash: "048b5e51d9bcf8d1b24c8f8f98b7b4e4" + hash: "e4fa13ba2770c0d390945ee4505fea9b" } Frame { msec: 2704 - hash: "d30e5d7c27b72ec95c41a87741061a3f" + hash: "69965c88d2273acf680af243610efcf3" } Frame { msec: 2720 - hash: "0374cc41cdb6528e212f678e0e049f2b" + hash: "6cbeb6787a0a7fb7f654f877e41eed57" } Frame { msec: 2736 - hash: "c80bc90c90b02d1d42176f16fa992f27" + hash: "e7528c074b3c65afe3873a3cdf96f041" } Frame { msec: 2752 - hash: "70182707dbdf87a2c8db556f030bec17" + hash: "c06c72abe46087f0db87a84fdcbcf601" } Frame { msec: 2768 - hash: "0c6c0c3d27d87128d65b40789714dd6b" + hash: "b6840f1d7cf2caed17d763b782553071" } Frame { msec: 2784 - hash: "46e1debee4ca606492a36de6191f4594" + hash: "71fdb77c4133f37180d581e4b1fe9c83" } Frame { msec: 2800 - hash: "f327bb2ea12b2baffc0a98d44a0ded16" + hash: "f5e2075ed86f146e0162ae4f0a9c6b90" } Frame { msec: 2816 - hash: "15bc04b65bde5e8ca69b6a1f88647c16" + hash: "5e76b741f49bd279b9f62ae3f474e5b5" } Frame { msec: 2832 - hash: "27156c3309835ec20a02877f1188e14a" + hash: "28c8003699352c3c9563556939d49cd8" } Frame { msec: 2848 - hash: "a163019c9feff0f4d1bb4aaedcd2ecd4" + hash: "15ab751c8463326c870dc9ee1af3c1d7" } Key { type: 6 @@ -846,35 +846,35 @@ VisualTest { } Frame { msec: 2864 - hash: "c5569c3c06bcf01b7e69e7f7ad6203ef" + hash: "6035ef1252d4f28b965b0bf4771540e4" } Frame { msec: 2880 - image: "cursorDelegate.2.png" + hash: "7c79170b07db90ca94f5642f3c0d3998" } Frame { msec: 2896 - hash: "5d1c41e371b1a95426882b3991383b6b" + image: "cursorDelegate.3.png" } Frame { msec: 2912 - hash: "4b9581a767fc1c94451780c044baf003" + hash: "3b4d1f5e1506c851887c86883eb1a6ac" } Frame { msec: 2928 - hash: "39978ba9bb1a535d7735228c650add38" + hash: "5aff09b0e9078ca6d4ed93694d1fa6f9" } Frame { msec: 2944 - hash: "1a2afe394227dcf2da118559e2e58fd7" + hash: "16813ebf88f881a4cebf75a2325dc064" } Frame { msec: 2960 - hash: "2f6bdb7af9bf9334231180b6113b125f" + hash: "5b901505bb1ab80cd4d5bc85b73ae8ad" } Frame { msec: 2976 - hash: "85017ca5ca286830e2745abf2f1f963a" + hash: "04c7f2e959c31bf6d3e7bea25d27eb87" } Key { type: 7 @@ -886,63 +886,63 @@ VisualTest { } Frame { msec: 2992 - hash: "3760b42a25e332c6df49bd92109dae98" + hash: "408bb423b93cb48afb97a7744848fc5e" } Frame { msec: 3008 - hash: "7c0347f97f9e4d7fcf47a90b336d264a" + hash: "1a58d66b4d42736eea49a602923a0941" } Frame { msec: 3024 - hash: "7c0347f97f9e4d7fcf47a90b336d264a" + hash: "1a58d66b4d42736eea49a602923a0941" } Frame { msec: 3040 - hash: "3760b42a25e332c6df49bd92109dae98" + hash: "408bb423b93cb48afb97a7744848fc5e" } Frame { msec: 3056 - hash: "85017ca5ca286830e2745abf2f1f963a" + hash: "04c7f2e959c31bf6d3e7bea25d27eb87" } Frame { msec: 3072 - hash: "2f6bdb7af9bf9334231180b6113b125f" + hash: "5b901505bb1ab80cd4d5bc85b73ae8ad" } Frame { msec: 3088 - hash: "1a2afe394227dcf2da118559e2e58fd7" + hash: "16813ebf88f881a4cebf75a2325dc064" } Frame { msec: 3104 - hash: "39978ba9bb1a535d7735228c650add38" + hash: "5aff09b0e9078ca6d4ed93694d1fa6f9" } Frame { msec: 3120 - hash: "4b9581a767fc1c94451780c044baf003" + hash: "3b4d1f5e1506c851887c86883eb1a6ac" } Frame { msec: 3136 - hash: "5d1c41e371b1a95426882b3991383b6b" + hash: "6a0a21ed890b475ce506714cc0501381" } Frame { msec: 3152 - hash: "73c771b964becb418289e0674571eb6f" + hash: "7c79170b07db90ca94f5642f3c0d3998" } Frame { msec: 3168 - hash: "c5569c3c06bcf01b7e69e7f7ad6203ef" + hash: "6035ef1252d4f28b965b0bf4771540e4" } Frame { msec: 3184 - hash: "7c55078e04b56c9aba7d227917323021" + hash: "9529b5b70b76541ec82be173deedadfb" } Frame { msec: 3200 - hash: "01c6b78b296c00e4597ae1bd36a65f3a" + hash: "174bbd347422c46923d6a5831cb5cd94" } Frame { msec: 3216 - hash: "67e9271f71b2d6d9eb2e230953db06c5" + hash: "1eb95daf505b817161f1a251cdde1b3c" } Key { type: 6 @@ -954,31 +954,31 @@ VisualTest { } Frame { msec: 3232 - hash: "642a6f4d7b3f467263b8e033578927af" + hash: "10f59fadaa27f78b7a1fb25d3a30adf7" } Frame { msec: 3248 - hash: "9f000f97b33427860cb5daeb259c72ea" + hash: "b87417c77b43bdbfdc3d8293c9a23216" } Frame { msec: 3264 - hash: "d74e3f977b5decb89dda46ea608a933a" + hash: "64345c713d61638bcc32f277208f2665" } Frame { msec: 3280 - hash: "f4e446cd96a3eb1a0df83cf032e7a0b2" + hash: "753dbe02fa95ee2b1387b98d7d456dcf" } Frame { msec: 3296 - hash: "abe715855a79a8ced43000884c4bf04b" + hash: "fce9a58aaf8d5cadbb029194317dcae3" } Frame { msec: 3312 - hash: "29fd5c17b9a169c1850aa538b4006084" + hash: "367083bd88443558002601acbc355b1a" } Frame { msec: 3328 - hash: "cefdcaebb9c319ac358b0d7fc9424327" + hash: "8e6ffccf321fa30faec432a4b4138967" } Key { type: 7 @@ -990,103 +990,103 @@ VisualTest { } Frame { msec: 3344 - hash: "85bfa23957bb5cd947e0819ffa442ea3" + hash: "4dd4e0dafeed0fc11790145d39f7c85f" } Frame { msec: 3360 - hash: "48f18d9d12331dc8725ea9e4b7f79823" + hash: "d612765c6b43035ea4e4683f968a18d3" } Frame { msec: 3376 - hash: "63cde59ffbbe2b9087ca228733de18dd" + hash: "fa77d4d8d339b78e5a28dcf69336c116" } Frame { msec: 3392 - hash: "73f5d4594f23ff4aac5e42aee00dce81" + hash: "34cf572a432bdd6dcfcc4fdfa032a800" } Frame { msec: 3408 - hash: "51a1b8e79d209643d55d4cecc6a70ed0" + hash: "150b5a2f2e916b7023764c481c768492" } Frame { msec: 3424 - hash: "7f2ae476246b23d79997a2545723ff62" + hash: "fbc93f511d6f3093c2ecf624a2c63749" } Frame { msec: 3440 - hash: "996da2eff9302908a55308dbcc8fb3c2" + hash: "f9e0bd08b722c16493a8886a19920dda" } Frame { msec: 3456 - hash: "264f34128dfe563126b9f187c65df61e" + hash: "f499f4b3017c88c63f0a2035ad527a0e" } Frame { msec: 3472 - hash: "c526315dd5eec117266c68a7b6b64a3f" + hash: "af99069cdddfa9d099fbe25ba586e138" } Frame { msec: 3488 - hash: "c526315dd5eec117266c68a7b6b64a3f" + hash: "af99069cdddfa9d099fbe25ba586e138" } Frame { msec: 3504 - hash: "c526315dd5eec117266c68a7b6b64a3f" + hash: "af99069cdddfa9d099fbe25ba586e138" } Frame { msec: 3520 - hash: "c526315dd5eec117266c68a7b6b64a3f" + hash: "af99069cdddfa9d099fbe25ba586e138" } Frame { msec: 3536 - hash: "c526315dd5eec117266c68a7b6b64a3f" + hash: "af99069cdddfa9d099fbe25ba586e138" } Frame { msec: 3552 - hash: "c526315dd5eec117266c68a7b6b64a3f" + hash: "af99069cdddfa9d099fbe25ba586e138" } Frame { msec: 3568 - hash: "70d6b73499c36138bee63e07afb0b186" + hash: "68d331f508b43e756d6e30ba9b60f9aa" } Frame { msec: 3584 - hash: "66500c2cc3d69b9fb48dc46e384aca6d" + hash: "c9147c159aebb7aa51d4bac28f96cb57" } Frame { msec: 3600 - hash: "6ccc70f6120acb53152b71bcf95514ca" + hash: "0636b7c5cc215882c60b50f62133c715" } Frame { msec: 3616 - hash: "5c10e6b0e541fe913b589601a55ea6ce" + hash: "10b52296e40380a915f7538d21d321a4" } Frame { msec: 3632 - hash: "2c62584e4c09c1d22f9016aa6fa74e10" + hash: "9c56e2c5e04e8767b70d357558e179de" } Frame { msec: 3648 - hash: "fd8f53e36a86ae22deb4f7af5aa1eb81" + hash: "0b1538af23c78cc779174df9fd01f60b" } Frame { msec: 3664 - hash: "e33226eb0e81a64bed7bcdb50e99cd13" + hash: "1632c7df93f1a735236eaa2464e75ba6" } Frame { msec: 3680 - hash: "a7053a2b7bc9f4749c290bace6b55634" + hash: "a08e8b921e61c79d57c0bc4fa5e79914" } Frame { msec: 3696 - hash: "782cb4e647e849ac7299d41f04bc89e3" + hash: "8220951034b6f1a5755bedd53b947b4a" } Frame { msec: 3712 - hash: "0f7d04fe594ae027364a7c2b570c5a27" + hash: "f4c18c333796ff10218fa9145781ea7f" } Frame { msec: 3728 - hash: "dfb00adcdc2f68bfb691bce47845b0e7" + hash: "7547d3bb0f9c4a53396cfe0252436395" } Key { type: 6 @@ -1098,31 +1098,31 @@ VisualTest { } Frame { msec: 3744 - hash: "cfd85885f59ea80b0b0152446a829fec" + hash: "efe333c2b8cccea0bd7135484049db06" } Frame { msec: 3760 - hash: "192f80add5f612b07dcb8d69f2161648" + hash: "c0249d07bcf25af69bf929b4d5ac00a3" } Frame { msec: 3776 - hash: "a8fe05178e6339454d57575692fa3df3" + hash: "8e5fdc8e6cc38089d1e8ff5e91a5c894" } Frame { msec: 3792 - hash: "82e61a4d3f58ee5104893e254a77f13e" + hash: "5d6702b9475e69bda2ed38f6e2d583d9" } Frame { msec: 3808 - hash: "5f073a4a89413b6a6c5d6ff52717bb2f" + hash: "6502416042993d05dd514119512ed61f" } Frame { msec: 3824 - hash: "b0fd95dc2ac09a1cbd67ad0f86682666" + hash: "938a6eea45c4412e847a8700172d80ac" } Frame { msec: 3840 - image: "cursorDelegate.3.png" + hash: "4bf8e82220ea0d0c4298d5374e149de2" } Key { type: 7 @@ -1134,59 +1134,59 @@ VisualTest { } Frame { msec: 3856 - hash: "373c57edb812db59f40710305d80e9e9" + image: "cursorDelegate.4.png" } Frame { msec: 3872 - hash: "a7142c3c1eb9c934e0b258c163fcdfec" + hash: "aff4097bd39c87c5d1459d99f314dade" } Frame { msec: 3888 - hash: "bd5395e7e0aa0d50cb30504f9961c954" + hash: "5cf6cb0afffb791da1c4d0fe00cf6326" } Frame { msec: 3904 - hash: "7031966f014d4acd5b00c46c89f61403" + hash: "007e76fb247e11a442802c7cfb4e6a24" } Frame { msec: 3920 - hash: "869624c2ae63b0a447401a955a6fefb1" + hash: "505e740aacf4ca7e6ad24367ddad8678" } Frame { msec: 3936 - hash: "97dabf3984492d2f868b36c3e7bfce50" + hash: "4213f35c4cd233a08d98ba0380b7ab0a" } Frame { msec: 3952 - hash: "afe0c3fdcb498f1f6b877c5d808b2555" + hash: "575dd420067e4ebe5733eb4e35a447ab" } Frame { msec: 3968 - hash: "7610775f69a461d5487e8bc3db6b6e1f" + hash: "062574e74354b104db2ee6d3c3af5802" } Frame { msec: 3984 - hash: "52641f9d6dfba8bf2b94aa37ade140d1" + hash: "d3be942cfb93c4a5d5aa906410125d02" } Frame { msec: 4000 - hash: "9d0e449506ce93052216b7a952af3dea" + hash: "b742ebe441dde1f30dab6d19954a9e8c" } Frame { msec: 4016 - hash: "c1bb09480464b7813bc10b0093d14745" + hash: "bbe3a292c59e2f7ae6b8877f6736c96e" } Frame { msec: 4032 - hash: "9d0e449506ce93052216b7a952af3dea" + hash: "b742ebe441dde1f30dab6d19954a9e8c" } Frame { msec: 4048 - hash: "52641f9d6dfba8bf2b94aa37ade140d1" + hash: "d3be942cfb93c4a5d5aa906410125d02" } Frame { msec: 4064 - hash: "7610775f69a461d5487e8bc3db6b6e1f" + hash: "062574e74354b104db2ee6d3c3af5802" } Key { type: 7 @@ -1198,302 +1198,302 @@ VisualTest { } Frame { msec: 4080 - hash: "afe0c3fdcb498f1f6b877c5d808b2555" + hash: "575dd420067e4ebe5733eb4e35a447ab" } Frame { msec: 4096 - hash: "97dabf3984492d2f868b36c3e7bfce50" + hash: "4213f35c4cd233a08d98ba0380b7ab0a" } Frame { msec: 4112 - hash: "869624c2ae63b0a447401a955a6fefb1" + hash: "505e740aacf4ca7e6ad24367ddad8678" } Frame { msec: 4128 - hash: "7031966f014d4acd5b00c46c89f61403" + hash: "007e76fb247e11a442802c7cfb4e6a24" } Frame { msec: 4144 - hash: "bd5395e7e0aa0d50cb30504f9961c954" + hash: "5cf6cb0afffb791da1c4d0fe00cf6326" } Frame { msec: 4160 - hash: "a7142c3c1eb9c934e0b258c163fcdfec" + hash: "aff4097bd39c87c5d1459d99f314dade" } Frame { msec: 4176 - hash: "373c57edb812db59f40710305d80e9e9" + hash: "009dc0c6ff28333ac2fdfa3d79ad2fd6" } Frame { msec: 4192 - hash: "78b16507899c3c8de04b55389ea0ad49" + hash: "4bf8e82220ea0d0c4298d5374e149de2" } Frame { msec: 4208 - hash: "b0fd95dc2ac09a1cbd67ad0f86682666" + hash: "938a6eea45c4412e847a8700172d80ac" } Frame { msec: 4224 - hash: "5f073a4a89413b6a6c5d6ff52717bb2f" + hash: "6502416042993d05dd514119512ed61f" } Frame { msec: 4240 - hash: "82e61a4d3f58ee5104893e254a77f13e" + hash: "5d6702b9475e69bda2ed38f6e2d583d9" } Frame { msec: 4256 - hash: "a8fe05178e6339454d57575692fa3df3" + hash: "8e5fdc8e6cc38089d1e8ff5e91a5c894" } Frame { msec: 4272 - hash: "192f80add5f612b07dcb8d69f2161648" + hash: "c0249d07bcf25af69bf929b4d5ac00a3" } Frame { msec: 4288 - hash: "cfd85885f59ea80b0b0152446a829fec" + hash: "efe333c2b8cccea0bd7135484049db06" } Frame { msec: 4304 - hash: "a7295dcc92f80a5f343bf05076a03748" + hash: "57e49e9094691a204f7507b0231352b3" } Frame { msec: 4320 - hash: "2b0b30cfb1c1e4ed8a51d36fb7ccdf57" + hash: "d0a45bd3cfc5e4e6f9a48534c768daba" } Frame { msec: 4336 - hash: "419c538908d0226ff4485f1094eaa08e" + hash: "6960ab817c67a61af31cc187efe65016" } Frame { msec: 4352 - hash: "8afe64448d42419f97ca207487b3b0f8" + hash: "3b0d483ff765f36a196411967b6dfd70" } Frame { msec: 4368 - hash: "86091218d2d066d8f95a460426266369" + hash: "559713749d65246b185c0c91eb7ad39e" } Frame { msec: 4384 - hash: "fc45978cac92b6cdeeecc2dd4c29aa53" + hash: "9aea32722fd4f8b0cde3c06c61cecde6" } Frame { msec: 4400 - hash: "03a90ae5cbe68cc210e303c78a14e065" + hash: "25dfa32ce92b6044f5ea68411ab5de5b" } Frame { msec: 4416 - hash: "15603a997aa02afb688aa74cd930f3b4" + hash: "dab689ed2bbe663df309548e615e8621" } Frame { msec: 4432 - hash: "90bf6b2bf89e1440f0c4d1044c1bd22c" + hash: "26ad44cef380ff9f64c12180fb54c695" } Frame { msec: 4448 - hash: "4dbdc16538cbbf1a87c6a54e09e02b16" + hash: "5e8bbcd46b5692e66963387b80971e90" } Frame { msec: 4464 - hash: "2011ee59d2ec4bb0ae0d63727f091648" + hash: "747df5357daa951fbedeadf909f9dbf3" } Frame { msec: 4480 - hash: "c526315dd5eec117266c68a7b6b64a3f" + hash: "af99069cdddfa9d099fbe25ba586e138" } Frame { msec: 4496 - hash: "c526315dd5eec117266c68a7b6b64a3f" + hash: "af99069cdddfa9d099fbe25ba586e138" } Frame { msec: 4512 - hash: "c526315dd5eec117266c68a7b6b64a3f" + hash: "af99069cdddfa9d099fbe25ba586e138" } Frame { msec: 4528 - hash: "c526315dd5eec117266c68a7b6b64a3f" + hash: "af99069cdddfa9d099fbe25ba586e138" } Frame { msec: 4544 - hash: "c526315dd5eec117266c68a7b6b64a3f" + hash: "af99069cdddfa9d099fbe25ba586e138" } Frame { msec: 4560 - hash: "c526315dd5eec117266c68a7b6b64a3f" + hash: "af99069cdddfa9d099fbe25ba586e138" } Frame { msec: 4576 - hash: "02996bef06c74f34cf8be4cf4d1392d5" + hash: "1568d4b93d2a284c46f23a0cb17acc24" } Frame { msec: 4592 - hash: "2d8cb2d213ce22132ba63a829c07f768" + hash: "0665a6cfc09981cd8a7ffd0d02e6fbdc" } Frame { msec: 4608 - hash: "0a16c282a18fdc657ea48fb208dea494" + hash: "49892aa44c8e3584239d245a7ca98af3" } Frame { msec: 4624 - hash: "86baec52ccb8ae818439c637c5be1514" + hash: "c9def393bb5d6c447c45b127d32b5e50" } Frame { msec: 4640 - hash: "72e2415581ba2a96b8f23cf8f5985afb" + hash: "679d94007b33197ce7decb4df6e8343c" } Frame { msec: 4656 - hash: "7776d964b2b5f80bac51a29d298a067f" + hash: "817987bcd9f1147ba047333b42ed289d" } Frame { msec: 4672 - hash: "3b5d0a9f961c2102a4118a8e2d2793ae" + hash: "fdd9331015c289b8e33b094999b11dce" } Frame { msec: 4688 - hash: "048b5e51d9bcf8d1b24c8f8f98b7b4e4" + hash: "e4fa13ba2770c0d390945ee4505fea9b" } Frame { msec: 4704 - hash: "d30e5d7c27b72ec95c41a87741061a3f" + hash: "69965c88d2273acf680af243610efcf3" } Frame { msec: 4720 - hash: "0374cc41cdb6528e212f678e0e049f2b" + hash: "6cbeb6787a0a7fb7f654f877e41eed57" } Frame { msec: 4736 - hash: "c80bc90c90b02d1d42176f16fa992f27" + hash: "e7528c074b3c65afe3873a3cdf96f041" } Frame { msec: 4752 - hash: "70182707dbdf87a2c8db556f030bec17" + hash: "c06c72abe46087f0db87a84fdcbcf601" } Frame { msec: 4768 - hash: "0c6c0c3d27d87128d65b40789714dd6b" + hash: "b6840f1d7cf2caed17d763b782553071" } Frame { msec: 4784 - hash: "46e1debee4ca606492a36de6191f4594" + hash: "71fdb77c4133f37180d581e4b1fe9c83" } Frame { msec: 4800 - image: "cursorDelegate.4.png" + hash: "f5e2075ed86f146e0162ae4f0a9c6b90" } Frame { msec: 4816 - hash: "15bc04b65bde5e8ca69b6a1f88647c16" + image: "cursorDelegate.5.png" } Frame { msec: 4832 - hash: "27156c3309835ec20a02877f1188e14a" + hash: "28c8003699352c3c9563556939d49cd8" } Frame { msec: 4848 - hash: "a163019c9feff0f4d1bb4aaedcd2ecd4" + hash: "15ab751c8463326c870dc9ee1af3c1d7" } Frame { msec: 4864 - hash: "35f243da98f9934d5ac0a7cc1fde73ef" + hash: "b745b2aee5ec623163ea22614b8ab54b" } Frame { msec: 4880 - hash: "42d393d75e0c1d5aea0e1694190e4507" + hash: "b3f3b8e325dcd56b696eab7228c3db09" } Frame { msec: 4896 - hash: "0ec47c6c74efd66d339d9be13148e334" + hash: "12ba65e0f70a670b2832235391d3ed05" } Frame { msec: 4912 - hash: "2e7597e8d03f0a05cf96fe7e2a3ee540" + hash: "9dfac03113b662a63bddcac9c7ae8f64" } Frame { msec: 4928 - hash: "093c9e5ac431284de7e81e082868c5db" + hash: "085bbc44102ae0d1d62531f6b6dbda98" } Frame { msec: 4944 - hash: "60ae71c4a6c905f47b2b457d9167153b" + hash: "007887862e2234f4c308778ecac5e16b" } Frame { msec: 4960 - hash: "e4be7897b1b30ab916a53df2998282d7" + hash: "61e8e34755db1fb99b44830676ad95ad" } Frame { msec: 4976 - hash: "c082b97799dffdb73ad65b2920507e9c" + hash: "48c8b1b0d549f7b6d85a81803b9fe31d" } Frame { msec: 4992 - hash: "aadaab0547a4f15c533589b531f39504" + hash: "834cf51445f88394e33a3f3f0a5569f4" } Frame { msec: 5008 - hash: "847f0a1faf094e73d533692fa47a030a" + hash: "a43224f77583bb7235895506f49daee6" } Frame { msec: 5024 - hash: "847f0a1faf094e73d533692fa47a030a" + hash: "a43224f77583bb7235895506f49daee6" } Frame { msec: 5040 - hash: "aadaab0547a4f15c533589b531f39504" + hash: "834cf51445f88394e33a3f3f0a5569f4" } Frame { msec: 5056 - hash: "c082b97799dffdb73ad65b2920507e9c" + hash: "48c8b1b0d549f7b6d85a81803b9fe31d" } Frame { msec: 5072 - hash: "e4be7897b1b30ab916a53df2998282d7" + hash: "61e8e34755db1fb99b44830676ad95ad" } Frame { msec: 5088 - hash: "60ae71c4a6c905f47b2b457d9167153b" + hash: "007887862e2234f4c308778ecac5e16b" } Frame { msec: 5104 - hash: "093c9e5ac431284de7e81e082868c5db" + hash: "085bbc44102ae0d1d62531f6b6dbda98" } Frame { msec: 5120 - hash: "2e7597e8d03f0a05cf96fe7e2a3ee540" + hash: "9dfac03113b662a63bddcac9c7ae8f64" } Frame { msec: 5136 - hash: "0ec47c6c74efd66d339d9be13148e334" + hash: "12ba65e0f70a670b2832235391d3ed05" } Frame { msec: 5152 - hash: "42d393d75e0c1d5aea0e1694190e4507" + hash: "b3f3b8e325dcd56b696eab7228c3db09" } Frame { msec: 5168 - hash: "35f243da98f9934d5ac0a7cc1fde73ef" + hash: "b745b2aee5ec623163ea22614b8ab54b" } Frame { msec: 5184 - hash: "a163019c9feff0f4d1bb4aaedcd2ecd4" + hash: "15ab751c8463326c870dc9ee1af3c1d7" } Frame { msec: 5200 - hash: "27156c3309835ec20a02877f1188e14a" + hash: "28c8003699352c3c9563556939d49cd8" } Frame { msec: 5216 - hash: "15bc04b65bde5e8ca69b6a1f88647c16" + hash: "5e76b741f49bd279b9f62ae3f474e5b5" } Frame { msec: 5232 - hash: "f327bb2ea12b2baffc0a98d44a0ded16" + hash: "f5e2075ed86f146e0162ae4f0a9c6b90" } Frame { msec: 5248 - hash: "46e1debee4ca606492a36de6191f4594" + hash: "71fdb77c4133f37180d581e4b1fe9c83" } Frame { msec: 5264 - hash: "0c6c0c3d27d87128d65b40789714dd6b" + hash: "b6840f1d7cf2caed17d763b782553071" } } diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.0.png index dfd30f6..852fc66 100644 Binary files a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.0.png and b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.0.png differ diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.1.png index 9d4eb9b..4b283d0 100644 Binary files a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.1.png and b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.1.png differ diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.2.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.2.png index 968517e..342fe05 100644 Binary files a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.2.png and b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.2.png differ diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.3.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.3.png index eb62c19..fb4a774 100644 Binary files a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.3.png and b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.3.png differ diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.4.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.4.png new file mode 100644 index 0000000..852fc66 Binary files /dev/null and b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.4.png differ diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.qml index a7df61f..d7b26cb 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.qml @@ -6,99 +6,99 @@ VisualTest { } Frame { msec: 16 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + image: "qt-669.0.png" } Frame { msec: 32 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 48 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 64 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 80 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 96 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 112 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 128 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 144 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 160 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 176 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 192 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 208 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 224 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 240 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 256 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 272 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 288 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 304 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 320 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 336 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 352 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 368 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 384 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Key { type: 6 @@ -110,15 +110,15 @@ VisualTest { } Frame { msec: 400 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Frame { msec: 416 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Frame { msec: 432 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Key { type: 7 @@ -130,27 +130,27 @@ VisualTest { } Frame { msec: 448 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Frame { msec: 464 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Frame { msec: 480 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Frame { msec: 496 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Frame { msec: 512 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Frame { msec: 528 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Key { type: 6 @@ -162,15 +162,15 @@ VisualTest { } Frame { msec: 544 - hash: "ddf97bfd6216415dd2a56871f19c2d49" + hash: "e2a49d72741ba08c258bb70d3a13c7f6" } Frame { msec: 560 - hash: "ddf97bfd6216415dd2a56871f19c2d49" + hash: "e2a49d72741ba08c258bb70d3a13c7f6" } Frame { msec: 576 - hash: "ddf97bfd6216415dd2a56871f19c2d49" + hash: "e2a49d72741ba08c258bb70d3a13c7f6" } Key { type: 7 @@ -182,27 +182,27 @@ VisualTest { } Frame { msec: 592 - hash: "ddf97bfd6216415dd2a56871f19c2d49" + hash: "e2a49d72741ba08c258bb70d3a13c7f6" } Frame { msec: 608 - hash: "ddf97bfd6216415dd2a56871f19c2d49" + hash: "e2a49d72741ba08c258bb70d3a13c7f6" } Frame { msec: 624 - hash: "ddf97bfd6216415dd2a56871f19c2d49" + hash: "e2a49d72741ba08c258bb70d3a13c7f6" } Frame { msec: 640 - hash: "ddf97bfd6216415dd2a56871f19c2d49" + hash: "e2a49d72741ba08c258bb70d3a13c7f6" } Frame { msec: 656 - hash: "ddf97bfd6216415dd2a56871f19c2d49" + hash: "e2a49d72741ba08c258bb70d3a13c7f6" } Frame { msec: 672 - hash: "ddf97bfd6216415dd2a56871f19c2d49" + hash: "e2a49d72741ba08c258bb70d3a13c7f6" } Key { type: 6 @@ -214,19 +214,19 @@ VisualTest { } Frame { msec: 688 - hash: "5a7abe3d30f7dc66c2cda37b03ff339f" + hash: "e5fd0e8d81d75fb53e21b6daa8e0fc7f" } Frame { msec: 704 - hash: "5a7abe3d30f7dc66c2cda37b03ff339f" + hash: "e5fd0e8d81d75fb53e21b6daa8e0fc7f" } Frame { msec: 720 - hash: "5a7abe3d30f7dc66c2cda37b03ff339f" + hash: "e5fd0e8d81d75fb53e21b6daa8e0fc7f" } Frame { msec: 736 - hash: "5a7abe3d30f7dc66c2cda37b03ff339f" + hash: "e5fd0e8d81d75fb53e21b6daa8e0fc7f" } Key { type: 7 @@ -238,23 +238,23 @@ VisualTest { } Frame { msec: 752 - hash: "5a7abe3d30f7dc66c2cda37b03ff339f" + hash: "e5fd0e8d81d75fb53e21b6daa8e0fc7f" } Frame { msec: 768 - hash: "5a7abe3d30f7dc66c2cda37b03ff339f" + hash: "e5fd0e8d81d75fb53e21b6daa8e0fc7f" } Frame { msec: 784 - hash: "5a7abe3d30f7dc66c2cda37b03ff339f" + hash: "e5fd0e8d81d75fb53e21b6daa8e0fc7f" } Frame { msec: 800 - hash: "5a7abe3d30f7dc66c2cda37b03ff339f" + hash: "e5fd0e8d81d75fb53e21b6daa8e0fc7f" } Frame { msec: 816 - hash: "5a7abe3d30f7dc66c2cda37b03ff339f" + hash: "e5fd0e8d81d75fb53e21b6daa8e0fc7f" } Key { type: 6 @@ -266,19 +266,19 @@ VisualTest { } Frame { msec: 832 - hash: "94d3da7909c84467c62deb2861104d21" + hash: "86e1ba72951c0c193bfd2cd2162c500e" } Frame { msec: 848 - hash: "94d3da7909c84467c62deb2861104d21" + hash: "86e1ba72951c0c193bfd2cd2162c500e" } Frame { msec: 864 - hash: "94d3da7909c84467c62deb2861104d21" + hash: "86e1ba72951c0c193bfd2cd2162c500e" } Frame { msec: 880 - hash: "94d3da7909c84467c62deb2861104d21" + hash: "86e1ba72951c0c193bfd2cd2162c500e" } Key { type: 7 @@ -290,19 +290,19 @@ VisualTest { } Frame { msec: 896 - hash: "94d3da7909c84467c62deb2861104d21" + hash: "86e1ba72951c0c193bfd2cd2162c500e" } Frame { msec: 912 - hash: "94d3da7909c84467c62deb2861104d21" + hash: "86e1ba72951c0c193bfd2cd2162c500e" } Frame { msec: 928 - hash: "94d3da7909c84467c62deb2861104d21" + hash: "86e1ba72951c0c193bfd2cd2162c500e" } Frame { msec: 944 - hash: "94d3da7909c84467c62deb2861104d21" + hash: "86e1ba72951c0c193bfd2cd2162c500e" } Key { type: 6 @@ -314,19 +314,19 @@ VisualTest { } Frame { msec: 960 - image: "qt-669.0.png" + hash: "a719560bf7912aa6cf4e8e5bfc13cb06" } Frame { msec: 976 - hash: "0873eebe3bbcb864644811670642028e" + image: "qt-669.1.png" } Frame { msec: 992 - hash: "0873eebe3bbcb864644811670642028e" + hash: "a719560bf7912aa6cf4e8e5bfc13cb06" } Frame { msec: 1008 - hash: "0873eebe3bbcb864644811670642028e" + hash: "a719560bf7912aa6cf4e8e5bfc13cb06" } Key { type: 7 @@ -338,23 +338,23 @@ VisualTest { } Frame { msec: 1024 - hash: "0873eebe3bbcb864644811670642028e" + hash: "a719560bf7912aa6cf4e8e5bfc13cb06" } Frame { msec: 1040 - hash: "0873eebe3bbcb864644811670642028e" + hash: "a719560bf7912aa6cf4e8e5bfc13cb06" } Frame { msec: 1056 - hash: "0873eebe3bbcb864644811670642028e" + hash: "a719560bf7912aa6cf4e8e5bfc13cb06" } Frame { msec: 1072 - hash: "0873eebe3bbcb864644811670642028e" + hash: "a719560bf7912aa6cf4e8e5bfc13cb06" } Frame { msec: 1088 - hash: "0873eebe3bbcb864644811670642028e" + hash: "a719560bf7912aa6cf4e8e5bfc13cb06" } Key { type: 6 @@ -366,15 +366,15 @@ VisualTest { } Frame { msec: 1104 - hash: "a88ac2f56d3d75a277b0855e2baeda33" + hash: "f531e8dd89482e3d7c501d0b3a8b3392" } Frame { msec: 1120 - hash: "a88ac2f56d3d75a277b0855e2baeda33" + hash: "f531e8dd89482e3d7c501d0b3a8b3392" } Frame { msec: 1136 - hash: "a88ac2f56d3d75a277b0855e2baeda33" + hash: "f531e8dd89482e3d7c501d0b3a8b3392" } Key { type: 7 @@ -386,23 +386,23 @@ VisualTest { } Frame { msec: 1152 - hash: "a88ac2f56d3d75a277b0855e2baeda33" + hash: "f531e8dd89482e3d7c501d0b3a8b3392" } Frame { msec: 1168 - hash: "a88ac2f56d3d75a277b0855e2baeda33" + hash: "f531e8dd89482e3d7c501d0b3a8b3392" } Frame { msec: 1184 - hash: "a88ac2f56d3d75a277b0855e2baeda33" + hash: "f531e8dd89482e3d7c501d0b3a8b3392" } Frame { msec: 1200 - hash: "a88ac2f56d3d75a277b0855e2baeda33" + hash: "f531e8dd89482e3d7c501d0b3a8b3392" } Frame { msec: 1216 - hash: "a88ac2f56d3d75a277b0855e2baeda33" + hash: "f531e8dd89482e3d7c501d0b3a8b3392" } Key { type: 6 @@ -414,19 +414,19 @@ VisualTest { } Frame { msec: 1232 - hash: "22bdd816325b5466ca937cf2535a3ef8" + hash: "fca9d1748195f0d4388694baf901c498" } Frame { msec: 1248 - hash: "22bdd816325b5466ca937cf2535a3ef8" + hash: "fca9d1748195f0d4388694baf901c498" } Frame { msec: 1264 - hash: "22bdd816325b5466ca937cf2535a3ef8" + hash: "fca9d1748195f0d4388694baf901c498" } Frame { msec: 1280 - hash: "22bdd816325b5466ca937cf2535a3ef8" + hash: "fca9d1748195f0d4388694baf901c498" } Key { type: 7 @@ -438,19 +438,19 @@ VisualTest { } Frame { msec: 1296 - hash: "22bdd816325b5466ca937cf2535a3ef8" + hash: "fca9d1748195f0d4388694baf901c498" } Frame { msec: 1312 - hash: "22bdd816325b5466ca937cf2535a3ef8" + hash: "fca9d1748195f0d4388694baf901c498" } Frame { msec: 1328 - hash: "22bdd816325b5466ca937cf2535a3ef8" + hash: "fca9d1748195f0d4388694baf901c498" } Frame { msec: 1344 - hash: "22bdd816325b5466ca937cf2535a3ef8" + hash: "fca9d1748195f0d4388694baf901c498" } Key { type: 6 @@ -462,19 +462,19 @@ VisualTest { } Frame { msec: 1360 - hash: "2ce295d30754b14d889795d2192fef41" + hash: "9ec7c9965d3ce810553b1182b746d148" } Frame { msec: 1376 - hash: "2ce295d30754b14d889795d2192fef41" + hash: "9ec7c9965d3ce810553b1182b746d148" } Frame { msec: 1392 - hash: "2ce295d30754b14d889795d2192fef41" + hash: "9ec7c9965d3ce810553b1182b746d148" } Frame { msec: 1408 - hash: "2ce295d30754b14d889795d2192fef41" + hash: "9ec7c9965d3ce810553b1182b746d148" } Key { type: 7 @@ -486,23 +486,23 @@ VisualTest { } Frame { msec: 1424 - hash: "2ce295d30754b14d889795d2192fef41" + hash: "9ec7c9965d3ce810553b1182b746d148" } Frame { msec: 1440 - hash: "2ce295d30754b14d889795d2192fef41" + hash: "9ec7c9965d3ce810553b1182b746d148" } Frame { msec: 1456 - hash: "2ce295d30754b14d889795d2192fef41" + hash: "9ec7c9965d3ce810553b1182b746d148" } Frame { msec: 1472 - hash: "2ce295d30754b14d889795d2192fef41" + hash: "9ec7c9965d3ce810553b1182b746d148" } Frame { msec: 1488 - hash: "2ce295d30754b14d889795d2192fef41" + hash: "9ec7c9965d3ce810553b1182b746d148" } Key { type: 6 @@ -514,15 +514,15 @@ VisualTest { } Frame { msec: 1504 - hash: "ab021c71945620eba0b0cd70c7cffe5d" + hash: "389d0ac399e709482600181b4869be43" } Frame { msec: 1520 - hash: "ab021c71945620eba0b0cd70c7cffe5d" + hash: "389d0ac399e709482600181b4869be43" } Frame { msec: 1536 - hash: "ab021c71945620eba0b0cd70c7cffe5d" + hash: "389d0ac399e709482600181b4869be43" } Key { type: 7 @@ -534,79 +534,79 @@ VisualTest { } Frame { msec: 1552 - hash: "ab021c71945620eba0b0cd70c7cffe5d" + hash: "389d0ac399e709482600181b4869be43" } Frame { msec: 1568 - hash: "ab021c71945620eba0b0cd70c7cffe5d" + hash: "389d0ac399e709482600181b4869be43" } Frame { msec: 1584 - hash: "ab021c71945620eba0b0cd70c7cffe5d" + hash: "389d0ac399e709482600181b4869be43" } Frame { msec: 1600 - hash: "ab021c71945620eba0b0cd70c7cffe5d" + hash: "389d0ac399e709482600181b4869be43" } Frame { msec: 1616 - hash: "ab021c71945620eba0b0cd70c7cffe5d" + hash: "389d0ac399e709482600181b4869be43" } Frame { msec: 1632 - hash: "ab021c71945620eba0b0cd70c7cffe5d" + hash: "389d0ac399e709482600181b4869be43" } Frame { msec: 1648 - hash: "ab021c71945620eba0b0cd70c7cffe5d" + hash: "389d0ac399e709482600181b4869be43" } Frame { msec: 1664 - hash: "ab021c71945620eba0b0cd70c7cffe5d" + hash: "389d0ac399e709482600181b4869be43" } Frame { msec: 1680 - hash: "ab021c71945620eba0b0cd70c7cffe5d" + hash: "389d0ac399e709482600181b4869be43" } Frame { msec: 1696 - hash: "ab021c71945620eba0b0cd70c7cffe5d" + hash: "389d0ac399e709482600181b4869be43" } Frame { msec: 1712 - hash: "ab021c71945620eba0b0cd70c7cffe5d" + hash: "389d0ac399e709482600181b4869be43" } Frame { msec: 1728 - hash: "ab021c71945620eba0b0cd70c7cffe5d" + hash: "389d0ac399e709482600181b4869be43" } Frame { msec: 1744 - hash: "ab021c71945620eba0b0cd70c7cffe5d" + hash: "389d0ac399e709482600181b4869be43" } Frame { msec: 1760 - hash: "ab021c71945620eba0b0cd70c7cffe5d" + hash: "389d0ac399e709482600181b4869be43" } Frame { msec: 1776 - hash: "ab021c71945620eba0b0cd70c7cffe5d" + hash: "389d0ac399e709482600181b4869be43" } Frame { msec: 1792 - hash: "ab021c71945620eba0b0cd70c7cffe5d" + hash: "389d0ac399e709482600181b4869be43" } Frame { msec: 1808 - hash: "ab021c71945620eba0b0cd70c7cffe5d" + hash: "389d0ac399e709482600181b4869be43" } Frame { msec: 1824 - hash: "ab021c71945620eba0b0cd70c7cffe5d" + hash: "389d0ac399e709482600181b4869be43" } Frame { msec: 1840 - hash: "ab021c71945620eba0b0cd70c7cffe5d" + hash: "389d0ac399e709482600181b4869be43" } Key { type: 6 @@ -618,39 +618,39 @@ VisualTest { } Frame { msec: 1856 - hash: "2ce295d30754b14d889795d2192fef41" + hash: "9ec7c9965d3ce810553b1182b746d148" } Frame { msec: 1872 - hash: "2ce295d30754b14d889795d2192fef41" + hash: "9ec7c9965d3ce810553b1182b746d148" } Frame { msec: 1888 - hash: "2ce295d30754b14d889795d2192fef41" + hash: "9ec7c9965d3ce810553b1182b746d148" } Frame { msec: 1904 - hash: "2ce295d30754b14d889795d2192fef41" + hash: "9ec7c9965d3ce810553b1182b746d148" } Frame { msec: 1920 - image: "qt-669.1.png" + hash: "9ec7c9965d3ce810553b1182b746d148" } Frame { msec: 1936 - hash: "2ce295d30754b14d889795d2192fef41" + image: "qt-669.2.png" } Frame { msec: 1952 - hash: "2ce295d30754b14d889795d2192fef41" + hash: "9ec7c9965d3ce810553b1182b746d148" } Frame { msec: 1968 - hash: "2ce295d30754b14d889795d2192fef41" + hash: "9ec7c9965d3ce810553b1182b746d148" } Frame { msec: 1984 - hash: "2ce295d30754b14d889795d2192fef41" + hash: "9ec7c9965d3ce810553b1182b746d148" } Key { type: 7 @@ -662,23 +662,23 @@ VisualTest { } Frame { msec: 2000 - hash: "2ce295d30754b14d889795d2192fef41" + hash: "9ec7c9965d3ce810553b1182b746d148" } Frame { msec: 2016 - hash: "2ce295d30754b14d889795d2192fef41" + hash: "9ec7c9965d3ce810553b1182b746d148" } Frame { msec: 2032 - hash: "2ce295d30754b14d889795d2192fef41" + hash: "9ec7c9965d3ce810553b1182b746d148" } Frame { msec: 2048 - hash: "2ce295d30754b14d889795d2192fef41" + hash: "9ec7c9965d3ce810553b1182b746d148" } Frame { msec: 2064 - hash: "2ce295d30754b14d889795d2192fef41" + hash: "9ec7c9965d3ce810553b1182b746d148" } Key { type: 6 @@ -690,23 +690,23 @@ VisualTest { } Frame { msec: 2080 - hash: "22bdd816325b5466ca937cf2535a3ef8" + hash: "fca9d1748195f0d4388694baf901c498" } Frame { msec: 2096 - hash: "22bdd816325b5466ca937cf2535a3ef8" + hash: "fca9d1748195f0d4388694baf901c498" } Frame { msec: 2112 - hash: "22bdd816325b5466ca937cf2535a3ef8" + hash: "fca9d1748195f0d4388694baf901c498" } Frame { msec: 2128 - hash: "22bdd816325b5466ca937cf2535a3ef8" + hash: "fca9d1748195f0d4388694baf901c498" } Frame { msec: 2144 - hash: "22bdd816325b5466ca937cf2535a3ef8" + hash: "fca9d1748195f0d4388694baf901c498" } Key { type: 7 @@ -718,23 +718,23 @@ VisualTest { } Frame { msec: 2160 - hash: "22bdd816325b5466ca937cf2535a3ef8" + hash: "fca9d1748195f0d4388694baf901c498" } Frame { msec: 2176 - hash: "22bdd816325b5466ca937cf2535a3ef8" + hash: "fca9d1748195f0d4388694baf901c498" } Frame { msec: 2192 - hash: "22bdd816325b5466ca937cf2535a3ef8" + hash: "fca9d1748195f0d4388694baf901c498" } Frame { msec: 2208 - hash: "22bdd816325b5466ca937cf2535a3ef8" + hash: "fca9d1748195f0d4388694baf901c498" } Frame { msec: 2224 - hash: "22bdd816325b5466ca937cf2535a3ef8" + hash: "fca9d1748195f0d4388694baf901c498" } Key { type: 6 @@ -746,11 +746,11 @@ VisualTest { } Frame { msec: 2240 - hash: "a88ac2f56d3d75a277b0855e2baeda33" + hash: "f531e8dd89482e3d7c501d0b3a8b3392" } Frame { msec: 2256 - hash: "a88ac2f56d3d75a277b0855e2baeda33" + hash: "f531e8dd89482e3d7c501d0b3a8b3392" } Key { type: 7 @@ -762,23 +762,23 @@ VisualTest { } Frame { msec: 2272 - hash: "a88ac2f56d3d75a277b0855e2baeda33" + hash: "f531e8dd89482e3d7c501d0b3a8b3392" } Frame { msec: 2288 - hash: "a88ac2f56d3d75a277b0855e2baeda33" + hash: "f531e8dd89482e3d7c501d0b3a8b3392" } Frame { msec: 2304 - hash: "a88ac2f56d3d75a277b0855e2baeda33" + hash: "f531e8dd89482e3d7c501d0b3a8b3392" } Frame { msec: 2320 - hash: "a88ac2f56d3d75a277b0855e2baeda33" + hash: "f531e8dd89482e3d7c501d0b3a8b3392" } Frame { msec: 2336 - hash: "a88ac2f56d3d75a277b0855e2baeda33" + hash: "f531e8dd89482e3d7c501d0b3a8b3392" } Key { type: 6 @@ -790,15 +790,15 @@ VisualTest { } Frame { msec: 2352 - hash: "0873eebe3bbcb864644811670642028e" + hash: "a719560bf7912aa6cf4e8e5bfc13cb06" } Frame { msec: 2368 - hash: "0873eebe3bbcb864644811670642028e" + hash: "a719560bf7912aa6cf4e8e5bfc13cb06" } Frame { msec: 2384 - hash: "0873eebe3bbcb864644811670642028e" + hash: "a719560bf7912aa6cf4e8e5bfc13cb06" } Key { type: 7 @@ -810,55 +810,55 @@ VisualTest { } Frame { msec: 2400 - hash: "0873eebe3bbcb864644811670642028e" + hash: "a719560bf7912aa6cf4e8e5bfc13cb06" } Frame { msec: 2416 - hash: "0873eebe3bbcb864644811670642028e" + hash: "a719560bf7912aa6cf4e8e5bfc13cb06" } Frame { msec: 2432 - hash: "0873eebe3bbcb864644811670642028e" + hash: "a719560bf7912aa6cf4e8e5bfc13cb06" } Frame { msec: 2448 - hash: "0873eebe3bbcb864644811670642028e" + hash: "a719560bf7912aa6cf4e8e5bfc13cb06" } Frame { msec: 2464 - hash: "0873eebe3bbcb864644811670642028e" + hash: "a719560bf7912aa6cf4e8e5bfc13cb06" } Frame { msec: 2480 - hash: "0873eebe3bbcb864644811670642028e" + hash: "a719560bf7912aa6cf4e8e5bfc13cb06" } Frame { msec: 2496 - hash: "0873eebe3bbcb864644811670642028e" + hash: "a719560bf7912aa6cf4e8e5bfc13cb06" } Frame { msec: 2512 - hash: "0873eebe3bbcb864644811670642028e" + hash: "a719560bf7912aa6cf4e8e5bfc13cb06" } Frame { msec: 2528 - hash: "0873eebe3bbcb864644811670642028e" + hash: "a719560bf7912aa6cf4e8e5bfc13cb06" } Frame { msec: 2544 - hash: "0873eebe3bbcb864644811670642028e" + hash: "a719560bf7912aa6cf4e8e5bfc13cb06" } Frame { msec: 2560 - hash: "0873eebe3bbcb864644811670642028e" + hash: "a719560bf7912aa6cf4e8e5bfc13cb06" } Frame { msec: 2576 - hash: "0873eebe3bbcb864644811670642028e" + hash: "a719560bf7912aa6cf4e8e5bfc13cb06" } Frame { msec: 2592 - hash: "0873eebe3bbcb864644811670642028e" + hash: "a719560bf7912aa6cf4e8e5bfc13cb06" } Key { type: 6 @@ -870,23 +870,23 @@ VisualTest { } Frame { msec: 2608 - hash: "94d3da7909c84467c62deb2861104d21" + hash: "86e1ba72951c0c193bfd2cd2162c500e" } Frame { msec: 2624 - hash: "94d3da7909c84467c62deb2861104d21" + hash: "86e1ba72951c0c193bfd2cd2162c500e" } Frame { msec: 2640 - hash: "94d3da7909c84467c62deb2861104d21" + hash: "86e1ba72951c0c193bfd2cd2162c500e" } Frame { msec: 2656 - hash: "94d3da7909c84467c62deb2861104d21" + hash: "86e1ba72951c0c193bfd2cd2162c500e" } Frame { msec: 2672 - hash: "94d3da7909c84467c62deb2861104d21" + hash: "86e1ba72951c0c193bfd2cd2162c500e" } Key { type: 7 @@ -898,23 +898,23 @@ VisualTest { } Frame { msec: 2688 - hash: "94d3da7909c84467c62deb2861104d21" + hash: "86e1ba72951c0c193bfd2cd2162c500e" } Frame { msec: 2704 - hash: "94d3da7909c84467c62deb2861104d21" + hash: "86e1ba72951c0c193bfd2cd2162c500e" } Frame { msec: 2720 - hash: "94d3da7909c84467c62deb2861104d21" + hash: "86e1ba72951c0c193bfd2cd2162c500e" } Frame { msec: 2736 - hash: "94d3da7909c84467c62deb2861104d21" + hash: "86e1ba72951c0c193bfd2cd2162c500e" } Frame { msec: 2752 - hash: "94d3da7909c84467c62deb2861104d21" + hash: "86e1ba72951c0c193bfd2cd2162c500e" } Key { type: 6 @@ -926,15 +926,15 @@ VisualTest { } Frame { msec: 2768 - hash: "5a7abe3d30f7dc66c2cda37b03ff339f" + hash: "e5fd0e8d81d75fb53e21b6daa8e0fc7f" } Frame { msec: 2784 - hash: "5a7abe3d30f7dc66c2cda37b03ff339f" + hash: "e5fd0e8d81d75fb53e21b6daa8e0fc7f" } Frame { msec: 2800 - hash: "5a7abe3d30f7dc66c2cda37b03ff339f" + hash: "e5fd0e8d81d75fb53e21b6daa8e0fc7f" } Key { type: 7 @@ -946,19 +946,19 @@ VisualTest { } Frame { msec: 2816 - hash: "5a7abe3d30f7dc66c2cda37b03ff339f" + hash: "e5fd0e8d81d75fb53e21b6daa8e0fc7f" } Frame { msec: 2832 - hash: "5a7abe3d30f7dc66c2cda37b03ff339f" + hash: "e5fd0e8d81d75fb53e21b6daa8e0fc7f" } Frame { msec: 2848 - hash: "5a7abe3d30f7dc66c2cda37b03ff339f" + hash: "e5fd0e8d81d75fb53e21b6daa8e0fc7f" } Frame { msec: 2864 - hash: "5a7abe3d30f7dc66c2cda37b03ff339f" + hash: "e5fd0e8d81d75fb53e21b6daa8e0fc7f" } Key { type: 6 @@ -970,19 +970,19 @@ VisualTest { } Frame { msec: 2880 - image: "qt-669.2.png" + hash: "e2a49d72741ba08c258bb70d3a13c7f6" } Frame { msec: 2896 - hash: "ddf97bfd6216415dd2a56871f19c2d49" + image: "qt-669.3.png" } Frame { msec: 2912 - hash: "ddf97bfd6216415dd2a56871f19c2d49" + hash: "e2a49d72741ba08c258bb70d3a13c7f6" } Frame { msec: 2928 - hash: "ddf97bfd6216415dd2a56871f19c2d49" + hash: "e2a49d72741ba08c258bb70d3a13c7f6" } Key { type: 7 @@ -994,23 +994,23 @@ VisualTest { } Frame { msec: 2944 - hash: "ddf97bfd6216415dd2a56871f19c2d49" + hash: "e2a49d72741ba08c258bb70d3a13c7f6" } Frame { msec: 2960 - hash: "ddf97bfd6216415dd2a56871f19c2d49" + hash: "e2a49d72741ba08c258bb70d3a13c7f6" } Frame { msec: 2976 - hash: "ddf97bfd6216415dd2a56871f19c2d49" + hash: "e2a49d72741ba08c258bb70d3a13c7f6" } Frame { msec: 2992 - hash: "ddf97bfd6216415dd2a56871f19c2d49" + hash: "e2a49d72741ba08c258bb70d3a13c7f6" } Frame { msec: 3008 - hash: "ddf97bfd6216415dd2a56871f19c2d49" + hash: "e2a49d72741ba08c258bb70d3a13c7f6" } Key { type: 6 @@ -1022,23 +1022,23 @@ VisualTest { } Frame { msec: 3024 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Frame { msec: 3040 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Frame { msec: 3056 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Frame { msec: 3072 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Frame { msec: 3088 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Key { type: 7 @@ -1050,155 +1050,155 @@ VisualTest { } Frame { msec: 3104 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Frame { msec: 3120 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Frame { msec: 3136 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Frame { msec: 3152 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Frame { msec: 3168 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Frame { msec: 3184 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Frame { msec: 3200 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Frame { msec: 3216 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Frame { msec: 3232 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Frame { msec: 3248 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Frame { msec: 3264 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Frame { msec: 3280 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Frame { msec: 3296 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Frame { msec: 3312 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Frame { msec: 3328 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Frame { msec: 3344 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Frame { msec: 3360 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Frame { msec: 3376 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Frame { msec: 3392 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Frame { msec: 3408 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Frame { msec: 3424 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Frame { msec: 3440 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Frame { msec: 3456 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Frame { msec: 3472 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Frame { msec: 3488 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Frame { msec: 3504 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Frame { msec: 3520 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Frame { msec: 3536 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Frame { msec: 3552 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Frame { msec: 3568 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Frame { msec: 3584 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Frame { msec: 3600 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Frame { msec: 3616 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Frame { msec: 3632 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Frame { msec: 3648 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Frame { msec: 3664 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Frame { msec: 3680 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Frame { msec: 3696 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Key { type: 6 @@ -1210,27 +1210,27 @@ VisualTest { } Frame { msec: 3712 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 3728 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 3744 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 3760 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 3776 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 3792 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Key { type: 7 @@ -1242,130 +1242,130 @@ VisualTest { } Frame { msec: 3808 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 3824 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 3840 - image: "qt-669.3.png" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 3856 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + image: "qt-669.4.png" } Frame { msec: 3872 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 3888 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 3904 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 3920 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 3936 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 3952 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 3968 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 3984 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 4000 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 4016 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 4032 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 4048 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 4064 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 4080 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 4096 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 4112 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 4128 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 4144 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 4160 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 4176 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 4192 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 4208 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 4224 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 4240 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 4256 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 4272 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 4288 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 4304 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } } diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.0.png index 5049c3f..0b4ca4e 100644 Binary files a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.0.png and b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.0.png differ diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.1.png index ee6e16a..251beb6 100644 Binary files a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.1.png and b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.1.png differ diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.10.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.10.png index d9d2252..5cd2d7d 100644 Binary files a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.10.png and b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.10.png differ diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.11.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.11.png index d9d2252..5cd2d7d 100644 Binary files a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.11.png and b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.11.png differ diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.12.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.12.png new file mode 100644 index 0000000..5cd2d7d Binary files /dev/null and b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.12.png differ diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.2.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.2.png index cf99d98..bf6a44e 100644 Binary files a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.2.png and b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.2.png differ diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.3.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.3.png index e3937f0..1089578 100644 Binary files a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.3.png and b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.3.png differ diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.4.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.4.png index 2fe3337..c9113de 100644 Binary files a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.4.png and b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.4.png differ diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.5.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.5.png index 97b9913..47b4744 100644 Binary files a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.5.png and b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.5.png differ diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.6.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.6.png index 08e059f..c518204 100644 Binary files a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.6.png and b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.6.png differ diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.7.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.7.png index bbc5ba2..9f1c26a 100644 Binary files a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.7.png and b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.7.png differ diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.8.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.8.png index 465b64e..cd8d0a5 100644 Binary files a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.8.png and b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.8.png differ diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.9.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.9.png index d9d2252..8f5f872 100644 Binary files a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.9.png and b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.9.png differ diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.qml index a8173be..a064bf3 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.qml @@ -6,83 +6,83 @@ VisualTest { } Frame { msec: 16 - hash: "e742c08c259034e879b95eea60794e77" + image: "usingMultilineEdit.0.png" } Frame { msec: 32 - hash: "e742c08c259034e879b95eea60794e77" + hash: "9d5bfe023a03fde612678d000e7d4135" } Frame { msec: 48 - hash: "e742c08c259034e879b95eea60794e77" + hash: "9d5bfe023a03fde612678d000e7d4135" } Frame { msec: 64 - hash: "e742c08c259034e879b95eea60794e77" + hash: "9d5bfe023a03fde612678d000e7d4135" } Frame { msec: 80 - hash: "e742c08c259034e879b95eea60794e77" + hash: "9d5bfe023a03fde612678d000e7d4135" } Frame { msec: 96 - hash: "e742c08c259034e879b95eea60794e77" + hash: "9d5bfe023a03fde612678d000e7d4135" } Frame { msec: 112 - hash: "e742c08c259034e879b95eea60794e77" + hash: "9d5bfe023a03fde612678d000e7d4135" } Frame { msec: 128 - hash: "e742c08c259034e879b95eea60794e77" + hash: "9d5bfe023a03fde612678d000e7d4135" } Frame { msec: 144 - hash: "e742c08c259034e879b95eea60794e77" + hash: "9d5bfe023a03fde612678d000e7d4135" } Frame { msec: 160 - hash: "e742c08c259034e879b95eea60794e77" + hash: "9d5bfe023a03fde612678d000e7d4135" } Frame { msec: 176 - hash: "e742c08c259034e879b95eea60794e77" + hash: "9d5bfe023a03fde612678d000e7d4135" } Frame { msec: 192 - hash: "e742c08c259034e879b95eea60794e77" + hash: "9d5bfe023a03fde612678d000e7d4135" } Frame { msec: 208 - hash: "e742c08c259034e879b95eea60794e77" + hash: "9d5bfe023a03fde612678d000e7d4135" } Frame { msec: 224 - hash: "e742c08c259034e879b95eea60794e77" + hash: "9d5bfe023a03fde612678d000e7d4135" } Frame { msec: 240 - hash: "e742c08c259034e879b95eea60794e77" + hash: "9d5bfe023a03fde612678d000e7d4135" } Frame { msec: 256 - hash: "e742c08c259034e879b95eea60794e77" + hash: "9d5bfe023a03fde612678d000e7d4135" } Frame { msec: 272 - hash: "e742c08c259034e879b95eea60794e77" + hash: "9d5bfe023a03fde612678d000e7d4135" } Frame { msec: 288 - hash: "e742c08c259034e879b95eea60794e77" + hash: "9d5bfe023a03fde612678d000e7d4135" } Frame { msec: 304 - hash: "e742c08c259034e879b95eea60794e77" + hash: "9d5bfe023a03fde612678d000e7d4135" } Frame { msec: 320 - hash: "e742c08c259034e879b95eea60794e77" + hash: "9d5bfe023a03fde612678d000e7d4135" } Mouse { type: 2 @@ -94,23 +94,23 @@ VisualTest { } Frame { msec: 336 - hash: "e742c08c259034e879b95eea60794e77" + hash: "9d5bfe023a03fde612678d000e7d4135" } Frame { msec: 352 - hash: "e742c08c259034e879b95eea60794e77" + hash: "9d5bfe023a03fde612678d000e7d4135" } Frame { msec: 368 - hash: "e742c08c259034e879b95eea60794e77" + hash: "9d5bfe023a03fde612678d000e7d4135" } Frame { msec: 384 - hash: "e742c08c259034e879b95eea60794e77" + hash: "9d5bfe023a03fde612678d000e7d4135" } Frame { msec: 400 - hash: "e742c08c259034e879b95eea60794e77" + hash: "9d5bfe023a03fde612678d000e7d4135" } Mouse { type: 3 @@ -122,63 +122,63 @@ VisualTest { } Frame { msec: 416 - hash: "e742c08c259034e879b95eea60794e77" + hash: "9d5bfe023a03fde612678d000e7d4135" } Frame { msec: 432 - hash: "e742c08c259034e879b95eea60794e77" + hash: "9d5bfe023a03fde612678d000e7d4135" } Frame { msec: 448 - hash: "e742c08c259034e879b95eea60794e77" + hash: "9d5bfe023a03fde612678d000e7d4135" } Frame { msec: 464 - hash: "e742c08c259034e879b95eea60794e77" + hash: "9d5bfe023a03fde612678d000e7d4135" } Frame { msec: 480 - hash: "e742c08c259034e879b95eea60794e77" + hash: "9d5bfe023a03fde612678d000e7d4135" } Frame { msec: 496 - hash: "e742c08c259034e879b95eea60794e77" + hash: "9d5bfe023a03fde612678d000e7d4135" } Frame { msec: 512 - hash: "e742c08c259034e879b95eea60794e77" + hash: "9d5bfe023a03fde612678d000e7d4135" } Frame { msec: 528 - hash: "e742c08c259034e879b95eea60794e77" + hash: "9d5bfe023a03fde612678d000e7d4135" } Frame { msec: 544 - hash: "e742c08c259034e879b95eea60794e77" + hash: "9d5bfe023a03fde612678d000e7d4135" } Frame { msec: 560 - hash: "e742c08c259034e879b95eea60794e77" + hash: "9d5bfe023a03fde612678d000e7d4135" } Frame { msec: 576 - hash: "e742c08c259034e879b95eea60794e77" + hash: "9d5bfe023a03fde612678d000e7d4135" } Frame { msec: 592 - hash: "e742c08c259034e879b95eea60794e77" + hash: "9d5bfe023a03fde612678d000e7d4135" } Frame { msec: 608 - hash: "e742c08c259034e879b95eea60794e77" + hash: "9d5bfe023a03fde612678d000e7d4135" } Frame { msec: 624 - hash: "e742c08c259034e879b95eea60794e77" + hash: "9d5bfe023a03fde612678d000e7d4135" } Frame { msec: 640 - hash: "e742c08c259034e879b95eea60794e77" + hash: "9d5bfe023a03fde612678d000e7d4135" } Mouse { type: 2 @@ -190,11 +190,11 @@ VisualTest { } Frame { msec: 656 - hash: "3eaecb73d32414207c898a36c9c41da3" + hash: "73232e1c199b5dda158a7e765386a716" } Frame { msec: 672 - hash: "3eaecb73d32414207c898a36c9c41da3" + hash: "73232e1c199b5dda158a7e765386a716" } Mouse { type: 3 @@ -206,159 +206,159 @@ VisualTest { } Frame { msec: 688 - hash: "3eaecb73d32414207c898a36c9c41da3" + hash: "73232e1c199b5dda158a7e765386a716" } Frame { msec: 704 - hash: "3eaecb73d32414207c898a36c9c41da3" + hash: "73232e1c199b5dda158a7e765386a716" } Frame { msec: 720 - hash: "3eaecb73d32414207c898a36c9c41da3" + hash: "73232e1c199b5dda158a7e765386a716" } Frame { msec: 736 - hash: "3eaecb73d32414207c898a36c9c41da3" + hash: "73232e1c199b5dda158a7e765386a716" } Frame { msec: 752 - hash: "3eaecb73d32414207c898a36c9c41da3" + hash: "73232e1c199b5dda158a7e765386a716" } Frame { msec: 768 - hash: "3eaecb73d32414207c898a36c9c41da3" + hash: "73232e1c199b5dda158a7e765386a716" } Frame { msec: 784 - hash: "3eaecb73d32414207c898a36c9c41da3" + hash: "73232e1c199b5dda158a7e765386a716" } Frame { msec: 800 - hash: "3eaecb73d32414207c898a36c9c41da3" + hash: "73232e1c199b5dda158a7e765386a716" } Frame { msec: 816 - hash: "3eaecb73d32414207c898a36c9c41da3" + hash: "73232e1c199b5dda158a7e765386a716" } Frame { msec: 832 - hash: "3eaecb73d32414207c898a36c9c41da3" + hash: "73232e1c199b5dda158a7e765386a716" } Frame { msec: 848 - hash: "3eaecb73d32414207c898a36c9c41da3" + hash: "73232e1c199b5dda158a7e765386a716" } Frame { msec: 864 - hash: "3eaecb73d32414207c898a36c9c41da3" + hash: "73232e1c199b5dda158a7e765386a716" } Frame { msec: 880 - hash: "3eaecb73d32414207c898a36c9c41da3" + hash: "73232e1c199b5dda158a7e765386a716" } Frame { msec: 896 - hash: "3eaecb73d32414207c898a36c9c41da3" + hash: "73232e1c199b5dda158a7e765386a716" } Frame { msec: 912 - hash: "3eaecb73d32414207c898a36c9c41da3" + hash: "73232e1c199b5dda158a7e765386a716" } Frame { msec: 928 - hash: "3eaecb73d32414207c898a36c9c41da3" + hash: "73232e1c199b5dda158a7e765386a716" } Frame { msec: 944 - hash: "3eaecb73d32414207c898a36c9c41da3" + hash: "73232e1c199b5dda158a7e765386a716" } Frame { msec: 960 - image: "usingMultilineEdit.0.png" + hash: "73232e1c199b5dda158a7e765386a716" } Frame { msec: 976 - hash: "3eaecb73d32414207c898a36c9c41da3" + image: "usingMultilineEdit.1.png" } Frame { msec: 992 - hash: "3eaecb73d32414207c898a36c9c41da3" + hash: "73232e1c199b5dda158a7e765386a716" } Frame { msec: 1008 - hash: "3eaecb73d32414207c898a36c9c41da3" + hash: "73232e1c199b5dda158a7e765386a716" } Frame { msec: 1024 - hash: "3eaecb73d32414207c898a36c9c41da3" + hash: "73232e1c199b5dda158a7e765386a716" } Frame { msec: 1040 - hash: "3eaecb73d32414207c898a36c9c41da3" + hash: "73232e1c199b5dda158a7e765386a716" } Frame { msec: 1056 - hash: "3eaecb73d32414207c898a36c9c41da3" + hash: "73232e1c199b5dda158a7e765386a716" } Frame { msec: 1072 - hash: "3eaecb73d32414207c898a36c9c41da3" + hash: "73232e1c199b5dda158a7e765386a716" } Frame { msec: 1088 - hash: "3eaecb73d32414207c898a36c9c41da3" + hash: "73232e1c199b5dda158a7e765386a716" } Frame { msec: 1104 - hash: "3eaecb73d32414207c898a36c9c41da3" + hash: "73232e1c199b5dda158a7e765386a716" } Frame { msec: 1120 - hash: "3eaecb73d32414207c898a36c9c41da3" + hash: "73232e1c199b5dda158a7e765386a716" } Frame { msec: 1136 - hash: "3eaecb73d32414207c898a36c9c41da3" + hash: "73232e1c199b5dda158a7e765386a716" } Frame { msec: 1152 - hash: "3eaecb73d32414207c898a36c9c41da3" + hash: "73232e1c199b5dda158a7e765386a716" } Frame { msec: 1168 - hash: "3eaecb73d32414207c898a36c9c41da3" + hash: "73232e1c199b5dda158a7e765386a716" } Frame { msec: 1184 - hash: "3eaecb73d32414207c898a36c9c41da3" + hash: "73232e1c199b5dda158a7e765386a716" } Frame { msec: 1200 - hash: "3eaecb73d32414207c898a36c9c41da3" + hash: "73232e1c199b5dda158a7e765386a716" } Frame { msec: 1216 - hash: "3eaecb73d32414207c898a36c9c41da3" + hash: "73232e1c199b5dda158a7e765386a716" } Frame { msec: 1232 - hash: "3eaecb73d32414207c898a36c9c41da3" + hash: "73232e1c199b5dda158a7e765386a716" } Frame { msec: 1248 - hash: "3eaecb73d32414207c898a36c9c41da3" + hash: "73232e1c199b5dda158a7e765386a716" } Frame { msec: 1264 - hash: "3eaecb73d32414207c898a36c9c41da3" + hash: "73232e1c199b5dda158a7e765386a716" } Frame { msec: 1280 - hash: "3eaecb73d32414207c898a36c9c41da3" + hash: "73232e1c199b5dda158a7e765386a716" } Frame { msec: 1296 - hash: "3eaecb73d32414207c898a36c9c41da3" + hash: "73232e1c199b5dda158a7e765386a716" } Key { type: 6 @@ -370,23 +370,23 @@ VisualTest { } Frame { msec: 1312 - hash: "c101a1d74691605f2740452950693e43" + hash: "75aa32bf4bfdda0dfcf04768bf931da6" } Frame { msec: 1328 - hash: "c101a1d74691605f2740452950693e43" + hash: "75aa32bf4bfdda0dfcf04768bf931da6" } Frame { msec: 1344 - hash: "c101a1d74691605f2740452950693e43" + hash: "75aa32bf4bfdda0dfcf04768bf931da6" } Frame { msec: 1360 - hash: "c101a1d74691605f2740452950693e43" + hash: "75aa32bf4bfdda0dfcf04768bf931da6" } Frame { msec: 1376 - hash: "c101a1d74691605f2740452950693e43" + hash: "75aa32bf4bfdda0dfcf04768bf931da6" } Key { type: 7 @@ -398,7 +398,7 @@ VisualTest { } Frame { msec: 1392 - hash: "c101a1d74691605f2740452950693e43" + hash: "75aa32bf4bfdda0dfcf04768bf931da6" } Key { type: 6 @@ -410,19 +410,19 @@ VisualTest { } Frame { msec: 1408 - hash: "e3e33c9f73352079db2f5e96c0069974" + hash: "7243b903b5b7d8c323a233ae13a2ddf3" } Frame { msec: 1424 - hash: "e3e33c9f73352079db2f5e96c0069974" + hash: "7243b903b5b7d8c323a233ae13a2ddf3" } Frame { msec: 1440 - hash: "e3e33c9f73352079db2f5e96c0069974" + hash: "7243b903b5b7d8c323a233ae13a2ddf3" } Frame { msec: 1456 - hash: "e3e33c9f73352079db2f5e96c0069974" + hash: "7243b903b5b7d8c323a233ae13a2ddf3" } Key { type: 7 @@ -434,27 +434,27 @@ VisualTest { } Frame { msec: 1472 - hash: "e3e33c9f73352079db2f5e96c0069974" + hash: "7243b903b5b7d8c323a233ae13a2ddf3" } Frame { msec: 1488 - hash: "e3e33c9f73352079db2f5e96c0069974" + hash: "7243b903b5b7d8c323a233ae13a2ddf3" } Frame { msec: 1504 - hash: "e3e33c9f73352079db2f5e96c0069974" + hash: "7243b903b5b7d8c323a233ae13a2ddf3" } Frame { msec: 1520 - hash: "e3e33c9f73352079db2f5e96c0069974" + hash: "7243b903b5b7d8c323a233ae13a2ddf3" } Frame { msec: 1536 - hash: "e3e33c9f73352079db2f5e96c0069974" + hash: "7243b903b5b7d8c323a233ae13a2ddf3" } Frame { msec: 1552 - hash: "e3e33c9f73352079db2f5e96c0069974" + hash: "7243b903b5b7d8c323a233ae13a2ddf3" } Key { type: 6 @@ -466,15 +466,15 @@ VisualTest { } Frame { msec: 1568 - hash: "0e79208365ec4b5a609d13b9e6c5c8d8" + hash: "676834a4ee84cb251c6ed102be89ea2e" } Frame { msec: 1584 - hash: "0e79208365ec4b5a609d13b9e6c5c8d8" + hash: "676834a4ee84cb251c6ed102be89ea2e" } Frame { msec: 1600 - hash: "0e79208365ec4b5a609d13b9e6c5c8d8" + hash: "676834a4ee84cb251c6ed102be89ea2e" } Key { type: 7 @@ -486,7 +486,7 @@ VisualTest { } Frame { msec: 1616 - hash: "0e79208365ec4b5a609d13b9e6c5c8d8" + hash: "676834a4ee84cb251c6ed102be89ea2e" } Key { type: 6 @@ -498,23 +498,23 @@ VisualTest { } Frame { msec: 1632 - hash: "5485c9cf4050ef8c1dda227d27326f78" + hash: "74a81081cd0547624cc4168e824b48b8" } Frame { msec: 1648 - hash: "5485c9cf4050ef8c1dda227d27326f78" + hash: "74a81081cd0547624cc4168e824b48b8" } Frame { msec: 1664 - hash: "5485c9cf4050ef8c1dda227d27326f78" + hash: "74a81081cd0547624cc4168e824b48b8" } Frame { msec: 1680 - hash: "5485c9cf4050ef8c1dda227d27326f78" + hash: "74a81081cd0547624cc4168e824b48b8" } Frame { msec: 1696 - hash: "5485c9cf4050ef8c1dda227d27326f78" + hash: "74a81081cd0547624cc4168e824b48b8" } Key { type: 7 @@ -526,11 +526,11 @@ VisualTest { } Frame { msec: 1712 - hash: "5485c9cf4050ef8c1dda227d27326f78" + hash: "74a81081cd0547624cc4168e824b48b8" } Frame { msec: 1728 - hash: "5485c9cf4050ef8c1dda227d27326f78" + hash: "74a81081cd0547624cc4168e824b48b8" } Key { type: 6 @@ -542,15 +542,15 @@ VisualTest { } Frame { msec: 1744 - hash: "1063a2e6164b372ba364c15c1c8b6ade" + hash: "4c736b2bffb38df898478e3d0ce37fb0" } Frame { msec: 1760 - hash: "1063a2e6164b372ba364c15c1c8b6ade" + hash: "4c736b2bffb38df898478e3d0ce37fb0" } Frame { msec: 1776 - hash: "1063a2e6164b372ba364c15c1c8b6ade" + hash: "4c736b2bffb38df898478e3d0ce37fb0" } Key { type: 7 @@ -562,15 +562,15 @@ VisualTest { } Frame { msec: 1792 - hash: "1063a2e6164b372ba364c15c1c8b6ade" + hash: "4c736b2bffb38df898478e3d0ce37fb0" } Frame { msec: 1808 - hash: "1063a2e6164b372ba364c15c1c8b6ade" + hash: "4c736b2bffb38df898478e3d0ce37fb0" } Frame { msec: 1824 - hash: "1063a2e6164b372ba364c15c1c8b6ade" + hash: "4c736b2bffb38df898478e3d0ce37fb0" } Key { type: 6 @@ -582,23 +582,23 @@ VisualTest { } Frame { msec: 1840 - hash: "213c0057171a86bd4e2d898fac4d6642" + hash: "fd070c77e33e1498bacf0076903d33d7" } Frame { msec: 1856 - hash: "213c0057171a86bd4e2d898fac4d6642" + hash: "fd070c77e33e1498bacf0076903d33d7" } Frame { msec: 1872 - hash: "213c0057171a86bd4e2d898fac4d6642" + hash: "fd070c77e33e1498bacf0076903d33d7" } Frame { msec: 1888 - hash: "213c0057171a86bd4e2d898fac4d6642" + hash: "fd070c77e33e1498bacf0076903d33d7" } Frame { msec: 1904 - hash: "213c0057171a86bd4e2d898fac4d6642" + hash: "fd070c77e33e1498bacf0076903d33d7" } Key { type: 7 @@ -618,19 +618,19 @@ VisualTest { } Frame { msec: 1920 - image: "usingMultilineEdit.1.png" + hash: "2ce31e62bfe5c1a62621fe4ea6bb07ab" } Frame { msec: 1936 - hash: "df9766751a5698f84f98faa0ac0e6f1a" + image: "usingMultilineEdit.2.png" } Frame { msec: 1952 - hash: "df9766751a5698f84f98faa0ac0e6f1a" + hash: "2ce31e62bfe5c1a62621fe4ea6bb07ab" } Frame { msec: 1968 - hash: "df9766751a5698f84f98faa0ac0e6f1a" + hash: "2ce31e62bfe5c1a62621fe4ea6bb07ab" } Key { type: 6 @@ -642,11 +642,11 @@ VisualTest { } Frame { msec: 1984 - hash: "47cb63f13c81ac6557ecc68d4e6f9c99" + hash: "77f7b91dba63e20e92b47575ae2f1a85" } Frame { msec: 2000 - hash: "47cb63f13c81ac6557ecc68d4e6f9c99" + hash: "77f7b91dba63e20e92b47575ae2f1a85" } Key { type: 7 @@ -658,7 +658,7 @@ VisualTest { } Frame { msec: 2016 - hash: "47cb63f13c81ac6557ecc68d4e6f9c99" + hash: "77f7b91dba63e20e92b47575ae2f1a85" } Key { type: 6 @@ -670,11 +670,11 @@ VisualTest { } Frame { msec: 2032 - hash: "4f39251d7a0071a67435d088f46fc4fe" + hash: "6c881ac1c94b6648ce1a2c39e477906c" } Frame { msec: 2048 - hash: "4f39251d7a0071a67435d088f46fc4fe" + hash: "6c881ac1c94b6648ce1a2c39e477906c" } Key { type: 7 @@ -686,19 +686,19 @@ VisualTest { } Frame { msec: 2064 - hash: "4f39251d7a0071a67435d088f46fc4fe" + hash: "6c881ac1c94b6648ce1a2c39e477906c" } Frame { msec: 2080 - hash: "4f39251d7a0071a67435d088f46fc4fe" + hash: "6c881ac1c94b6648ce1a2c39e477906c" } Frame { msec: 2096 - hash: "4f39251d7a0071a67435d088f46fc4fe" + hash: "6c881ac1c94b6648ce1a2c39e477906c" } Frame { msec: 2112 - hash: "4f39251d7a0071a67435d088f46fc4fe" + hash: "6c881ac1c94b6648ce1a2c39e477906c" } Key { type: 7 @@ -710,11 +710,11 @@ VisualTest { } Frame { msec: 2128 - hash: "4f39251d7a0071a67435d088f46fc4fe" + hash: "6c881ac1c94b6648ce1a2c39e477906c" } Frame { msec: 2144 - hash: "4f39251d7a0071a67435d088f46fc4fe" + hash: "6c881ac1c94b6648ce1a2c39e477906c" } Key { type: 6 @@ -726,27 +726,27 @@ VisualTest { } Frame { msec: 2160 - hash: "722715a78e99d0f1f9a2830090c98f3c" + hash: "8799a9ee6ae4334c0e595c75160cbb35" } Frame { msec: 2176 - hash: "722715a78e99d0f1f9a2830090c98f3c" + hash: "8799a9ee6ae4334c0e595c75160cbb35" } Frame { msec: 2192 - hash: "722715a78e99d0f1f9a2830090c98f3c" + hash: "8799a9ee6ae4334c0e595c75160cbb35" } Frame { msec: 2208 - hash: "722715a78e99d0f1f9a2830090c98f3c" + hash: "8799a9ee6ae4334c0e595c75160cbb35" } Frame { msec: 2224 - hash: "722715a78e99d0f1f9a2830090c98f3c" + hash: "8799a9ee6ae4334c0e595c75160cbb35" } Frame { msec: 2240 - hash: "722715a78e99d0f1f9a2830090c98f3c" + hash: "8799a9ee6ae4334c0e595c75160cbb35" } Key { type: 7 @@ -766,23 +766,23 @@ VisualTest { } Frame { msec: 2256 - hash: "aa085c20f74a765297f7904680c7591e" + hash: "1947b07da95b6fb20dfa0189d2e099f4" } Frame { msec: 2272 - hash: "aa085c20f74a765297f7904680c7591e" + hash: "1947b07da95b6fb20dfa0189d2e099f4" } Frame { msec: 2288 - hash: "aa085c20f74a765297f7904680c7591e" + hash: "1947b07da95b6fb20dfa0189d2e099f4" } Frame { msec: 2304 - hash: "aa085c20f74a765297f7904680c7591e" + hash: "1947b07da95b6fb20dfa0189d2e099f4" } Frame { msec: 2320 - hash: "aa085c20f74a765297f7904680c7591e" + hash: "1947b07da95b6fb20dfa0189d2e099f4" } Key { type: 7 @@ -794,11 +794,11 @@ VisualTest { } Frame { msec: 2336 - hash: "aa085c20f74a765297f7904680c7591e" + hash: "1947b07da95b6fb20dfa0189d2e099f4" } Frame { msec: 2352 - hash: "aa085c20f74a765297f7904680c7591e" + hash: "1947b07da95b6fb20dfa0189d2e099f4" } Key { type: 6 @@ -810,19 +810,19 @@ VisualTest { } Frame { msec: 2368 - hash: "0cc1397ce700d4a84647dddee65241b3" + hash: "f4831fddbb6dccd2add6c381abe18ff5" } Frame { msec: 2384 - hash: "0cc1397ce700d4a84647dddee65241b3" + hash: "f4831fddbb6dccd2add6c381abe18ff5" } Frame { msec: 2400 - hash: "0cc1397ce700d4a84647dddee65241b3" + hash: "f4831fddbb6dccd2add6c381abe18ff5" } Frame { msec: 2416 - hash: "0cc1397ce700d4a84647dddee65241b3" + hash: "f4831fddbb6dccd2add6c381abe18ff5" } Key { type: 7 @@ -834,7 +834,7 @@ VisualTest { } Frame { msec: 2432 - hash: "0cc1397ce700d4a84647dddee65241b3" + hash: "f4831fddbb6dccd2add6c381abe18ff5" } Key { type: 6 @@ -846,27 +846,27 @@ VisualTest { } Frame { msec: 2448 - hash: "ac693aa9030cc388dce9004916734aed" + hash: "c8e601e39d6399c3bcbe99080e10e77b" } Frame { msec: 2464 - hash: "ac693aa9030cc388dce9004916734aed" + hash: "c8e601e39d6399c3bcbe99080e10e77b" } Frame { msec: 2480 - hash: "ac693aa9030cc388dce9004916734aed" + hash: "c8e601e39d6399c3bcbe99080e10e77b" } Frame { msec: 2496 - hash: "ac693aa9030cc388dce9004916734aed" + hash: "c8e601e39d6399c3bcbe99080e10e77b" } Frame { msec: 2512 - hash: "ac693aa9030cc388dce9004916734aed" + hash: "c8e601e39d6399c3bcbe99080e10e77b" } Frame { msec: 2528 - hash: "ac693aa9030cc388dce9004916734aed" + hash: "c8e601e39d6399c3bcbe99080e10e77b" } Key { type: 7 @@ -878,7 +878,7 @@ VisualTest { } Frame { msec: 2544 - hash: "ac693aa9030cc388dce9004916734aed" + hash: "c8e601e39d6399c3bcbe99080e10e77b" } Key { type: 6 @@ -890,19 +890,19 @@ VisualTest { } Frame { msec: 2560 - hash: "e1f1b75892dc186e7f9546661722e259" + hash: "895b6084f9cd58d0746270468d037fc3" } Frame { msec: 2576 - hash: "e1f1b75892dc186e7f9546661722e259" + hash: "895b6084f9cd58d0746270468d037fc3" } Frame { msec: 2592 - hash: "e1f1b75892dc186e7f9546661722e259" + hash: "895b6084f9cd58d0746270468d037fc3" } Frame { msec: 2608 - hash: "e1f1b75892dc186e7f9546661722e259" + hash: "895b6084f9cd58d0746270468d037fc3" } Key { type: 7 @@ -914,23 +914,23 @@ VisualTest { } Frame { msec: 2624 - hash: "e1f1b75892dc186e7f9546661722e259" + hash: "895b6084f9cd58d0746270468d037fc3" } Frame { msec: 2640 - hash: "e1f1b75892dc186e7f9546661722e259" + hash: "895b6084f9cd58d0746270468d037fc3" } Frame { msec: 2656 - hash: "e1f1b75892dc186e7f9546661722e259" + hash: "895b6084f9cd58d0746270468d037fc3" } Frame { msec: 2672 - hash: "e1f1b75892dc186e7f9546661722e259" + hash: "895b6084f9cd58d0746270468d037fc3" } Frame { msec: 2688 - hash: "e1f1b75892dc186e7f9546661722e259" + hash: "895b6084f9cd58d0746270468d037fc3" } Key { type: 6 @@ -942,27 +942,27 @@ VisualTest { } Frame { msec: 2704 - hash: "4c1829c6c263cf290e0e71035f678589" + hash: "ded3a272885f24140fb8d21835ae6b3a" } Frame { msec: 2720 - hash: "4c1829c6c263cf290e0e71035f678589" + hash: "ded3a272885f24140fb8d21835ae6b3a" } Frame { msec: 2736 - hash: "4c1829c6c263cf290e0e71035f678589" + hash: "ded3a272885f24140fb8d21835ae6b3a" } Frame { msec: 2752 - hash: "4c1829c6c263cf290e0e71035f678589" + hash: "ded3a272885f24140fb8d21835ae6b3a" } Frame { msec: 2768 - hash: "4c1829c6c263cf290e0e71035f678589" + hash: "ded3a272885f24140fb8d21835ae6b3a" } Frame { msec: 2784 - hash: "4c1829c6c263cf290e0e71035f678589" + hash: "ded3a272885f24140fb8d21835ae6b3a" } Key { type: 6 @@ -974,7 +974,7 @@ VisualTest { } Frame { msec: 2800 - hash: "fa5cf022b185f178d0121b442af01c00" + hash: "9339ea22fd115b8ae025c0b3a588ca1c" } Key { type: 7 @@ -986,19 +986,19 @@ VisualTest { } Frame { msec: 2816 - hash: "fa5cf022b185f178d0121b442af01c00" + hash: "9339ea22fd115b8ae025c0b3a588ca1c" } Frame { msec: 2832 - hash: "fa5cf022b185f178d0121b442af01c00" + hash: "9339ea22fd115b8ae025c0b3a588ca1c" } Frame { msec: 2848 - hash: "fa5cf022b185f178d0121b442af01c00" + hash: "9339ea22fd115b8ae025c0b3a588ca1c" } Frame { msec: 2864 - hash: "fa5cf022b185f178d0121b442af01c00" + hash: "9339ea22fd115b8ae025c0b3a588ca1c" } Key { type: 7 @@ -1010,19 +1010,19 @@ VisualTest { } Frame { msec: 2880 - image: "usingMultilineEdit.2.png" + hash: "9339ea22fd115b8ae025c0b3a588ca1c" } Frame { msec: 2896 - hash: "fa5cf022b185f178d0121b442af01c00" + image: "usingMultilineEdit.3.png" } Frame { msec: 2912 - hash: "fa5cf022b185f178d0121b442af01c00" + hash: "9339ea22fd115b8ae025c0b3a588ca1c" } Frame { msec: 2928 - hash: "fa5cf022b185f178d0121b442af01c00" + hash: "9339ea22fd115b8ae025c0b3a588ca1c" } Key { type: 6 @@ -1034,15 +1034,15 @@ VisualTest { } Frame { msec: 2944 - hash: "b0748cac94695eb95774e0cdfabf47cc" + hash: "1f219781fb7a7682d27cb875900d077a" } Frame { msec: 2960 - hash: "b0748cac94695eb95774e0cdfabf47cc" + hash: "1f219781fb7a7682d27cb875900d077a" } Frame { msec: 2976 - hash: "b0748cac94695eb95774e0cdfabf47cc" + hash: "1f219781fb7a7682d27cb875900d077a" } Key { type: 7 @@ -1062,19 +1062,19 @@ VisualTest { } Frame { msec: 2992 - hash: "b05fc4c21113146463372b1ea981e265" + hash: "20bd65f158440301e6cf14463e498368" } Frame { msec: 3008 - hash: "b05fc4c21113146463372b1ea981e265" + hash: "20bd65f158440301e6cf14463e498368" } Frame { msec: 3024 - hash: "b05fc4c21113146463372b1ea981e265" + hash: "20bd65f158440301e6cf14463e498368" } Frame { msec: 3040 - hash: "b05fc4c21113146463372b1ea981e265" + hash: "20bd65f158440301e6cf14463e498368" } Key { type: 7 @@ -1086,7 +1086,7 @@ VisualTest { } Frame { msec: 3056 - hash: "b05fc4c21113146463372b1ea981e265" + hash: "20bd65f158440301e6cf14463e498368" } Key { type: 6 @@ -1098,15 +1098,15 @@ VisualTest { } Frame { msec: 3072 - hash: "01b789845bf308fc896d53bbbfe0dd01" + hash: "3e73d53051a3175393f4ecb486645bf9" } Frame { msec: 3088 - hash: "01b789845bf308fc896d53bbbfe0dd01" + hash: "3e73d53051a3175393f4ecb486645bf9" } Frame { msec: 3104 - hash: "01b789845bf308fc896d53bbbfe0dd01" + hash: "3e73d53051a3175393f4ecb486645bf9" } Key { type: 6 @@ -1118,7 +1118,7 @@ VisualTest { } Frame { msec: 3120 - hash: "01b789845bf308fc896d53bbbfe0dd01" + hash: "3e73d53051a3175393f4ecb486645bf9" } Key { type: 7 @@ -1130,11 +1130,11 @@ VisualTest { } Frame { msec: 3136 - hash: "01b789845bf308fc896d53bbbfe0dd01" + hash: "3e73d53051a3175393f4ecb486645bf9" } Frame { msec: 3152 - hash: "01b789845bf308fc896d53bbbfe0dd01" + hash: "3e73d53051a3175393f4ecb486645bf9" } Key { type: 6 @@ -1146,19 +1146,19 @@ VisualTest { } Frame { msec: 3168 - hash: "433d805d957203918fc4a8edfc93290e" + hash: "6f566097d23557bef60969852cd3515e" } Frame { msec: 3184 - hash: "433d805d957203918fc4a8edfc93290e" + hash: "6f566097d23557bef60969852cd3515e" } Frame { msec: 3200 - hash: "433d805d957203918fc4a8edfc93290e" + hash: "6f566097d23557bef60969852cd3515e" } Frame { msec: 3216 - hash: "433d805d957203918fc4a8edfc93290e" + hash: "6f566097d23557bef60969852cd3515e" } Key { type: 7 @@ -1170,7 +1170,7 @@ VisualTest { } Frame { msec: 3232 - hash: "433d805d957203918fc4a8edfc93290e" + hash: "6f566097d23557bef60969852cd3515e" } Key { type: 7 @@ -1190,19 +1190,19 @@ VisualTest { } Frame { msec: 3248 - hash: "1ebec912ac11b11d2ba7e5abdfb9ef6d" + hash: "4767592fe68e8d32d286cf5eaf4510ff" } Frame { msec: 3264 - hash: "1ebec912ac11b11d2ba7e5abdfb9ef6d" + hash: "4767592fe68e8d32d286cf5eaf4510ff" } Frame { msec: 3280 - hash: "1ebec912ac11b11d2ba7e5abdfb9ef6d" + hash: "4767592fe68e8d32d286cf5eaf4510ff" } Frame { msec: 3296 - hash: "1ebec912ac11b11d2ba7e5abdfb9ef6d" + hash: "4767592fe68e8d32d286cf5eaf4510ff" } Key { type: 7 @@ -1214,7 +1214,7 @@ VisualTest { } Frame { msec: 3312 - hash: "1ebec912ac11b11d2ba7e5abdfb9ef6d" + hash: "4767592fe68e8d32d286cf5eaf4510ff" } Key { type: 6 @@ -1226,23 +1226,23 @@ VisualTest { } Frame { msec: 3328 - hash: "b4bc12141255c91630e775fcf4935f22" + hash: "d7fd1a19be4f061fc39c4accf18ba0dc" } Frame { msec: 3344 - hash: "b4bc12141255c91630e775fcf4935f22" + hash: "d7fd1a19be4f061fc39c4accf18ba0dc" } Frame { msec: 3360 - hash: "b4bc12141255c91630e775fcf4935f22" + hash: "d7fd1a19be4f061fc39c4accf18ba0dc" } Frame { msec: 3376 - hash: "b4bc12141255c91630e775fcf4935f22" + hash: "d7fd1a19be4f061fc39c4accf18ba0dc" } Frame { msec: 3392 - hash: "b4bc12141255c91630e775fcf4935f22" + hash: "d7fd1a19be4f061fc39c4accf18ba0dc" } Key { type: 7 @@ -1254,7 +1254,7 @@ VisualTest { } Frame { msec: 3408 - hash: "b4bc12141255c91630e775fcf4935f22" + hash: "d7fd1a19be4f061fc39c4accf18ba0dc" } Key { type: 6 @@ -1266,23 +1266,23 @@ VisualTest { } Frame { msec: 3424 - hash: "8d83a3f76fd8b77c6dd9fdfb573d9c52" + hash: "03e74ddf4c94d322c1b1b35419157948" } Frame { msec: 3440 - hash: "8d83a3f76fd8b77c6dd9fdfb573d9c52" + hash: "03e74ddf4c94d322c1b1b35419157948" } Frame { msec: 3456 - hash: "8d83a3f76fd8b77c6dd9fdfb573d9c52" + hash: "03e74ddf4c94d322c1b1b35419157948" } Frame { msec: 3472 - hash: "8d83a3f76fd8b77c6dd9fdfb573d9c52" + hash: "03e74ddf4c94d322c1b1b35419157948" } Frame { msec: 3488 - hash: "8d83a3f76fd8b77c6dd9fdfb573d9c52" + hash: "03e74ddf4c94d322c1b1b35419157948" } Key { type: 7 @@ -1302,27 +1302,27 @@ VisualTest { } Frame { msec: 3504 - hash: "3f154d5eace7e0e688fe609d7eebe80d" + hash: "32712a89ba577f55319fe90873668138" } Frame { msec: 3520 - hash: "3f154d5eace7e0e688fe609d7eebe80d" + hash: "32712a89ba577f55319fe90873668138" } Frame { msec: 3536 - hash: "3f154d5eace7e0e688fe609d7eebe80d" + hash: "32712a89ba577f55319fe90873668138" } Frame { msec: 3552 - hash: "3f154d5eace7e0e688fe609d7eebe80d" + hash: "32712a89ba577f55319fe90873668138" } Frame { msec: 3568 - hash: "3f154d5eace7e0e688fe609d7eebe80d" + hash: "32712a89ba577f55319fe90873668138" } Frame { msec: 3584 - hash: "3f154d5eace7e0e688fe609d7eebe80d" + hash: "32712a89ba577f55319fe90873668138" } Key { type: 7 @@ -1334,7 +1334,7 @@ VisualTest { } Frame { msec: 3600 - hash: "3f154d5eace7e0e688fe609d7eebe80d" + hash: "32712a89ba577f55319fe90873668138" } Key { type: 6 @@ -1346,19 +1346,19 @@ VisualTest { } Frame { msec: 3616 - hash: "8cecca2b1a586b7121692a8f618a1a50" + hash: "9f1cf9784c0659f4902d632542fe9d52" } Frame { msec: 3632 - hash: "8cecca2b1a586b7121692a8f618a1a50" + hash: "9f1cf9784c0659f4902d632542fe9d52" } Frame { msec: 3648 - hash: "8cecca2b1a586b7121692a8f618a1a50" + hash: "9f1cf9784c0659f4902d632542fe9d52" } Frame { msec: 3664 - hash: "8cecca2b1a586b7121692a8f618a1a50" + hash: "9f1cf9784c0659f4902d632542fe9d52" } Key { type: 6 @@ -1370,7 +1370,7 @@ VisualTest { } Frame { msec: 3680 - hash: "90bd87209b6d26785689779641b1f506" + hash: "b350f3b710a0d36ba56bdce6c86f902e" } Key { type: 7 @@ -1382,15 +1382,15 @@ VisualTest { } Frame { msec: 3696 - hash: "90bd87209b6d26785689779641b1f506" + hash: "b350f3b710a0d36ba56bdce6c86f902e" } Frame { msec: 3712 - hash: "90bd87209b6d26785689779641b1f506" + hash: "b350f3b710a0d36ba56bdce6c86f902e" } Frame { msec: 3728 - hash: "90bd87209b6d26785689779641b1f506" + hash: "b350f3b710a0d36ba56bdce6c86f902e" } Key { type: 7 @@ -1402,63 +1402,63 @@ VisualTest { } Frame { msec: 3744 - hash: "90bd87209b6d26785689779641b1f506" + hash: "b350f3b710a0d36ba56bdce6c86f902e" } Frame { msec: 3760 - hash: "90bd87209b6d26785689779641b1f506" + hash: "b350f3b710a0d36ba56bdce6c86f902e" } Frame { msec: 3776 - hash: "90bd87209b6d26785689779641b1f506" + hash: "b350f3b710a0d36ba56bdce6c86f902e" } Frame { msec: 3792 - hash: "90bd87209b6d26785689779641b1f506" + hash: "b350f3b710a0d36ba56bdce6c86f902e" } Frame { msec: 3808 - hash: "90bd87209b6d26785689779641b1f506" + hash: "b350f3b710a0d36ba56bdce6c86f902e" } Frame { msec: 3824 - hash: "90bd87209b6d26785689779641b1f506" + hash: "b350f3b710a0d36ba56bdce6c86f902e" } Frame { msec: 3840 - image: "usingMultilineEdit.3.png" + hash: "b350f3b710a0d36ba56bdce6c86f902e" } Frame { msec: 3856 - hash: "90bd87209b6d26785689779641b1f506" + image: "usingMultilineEdit.4.png" } Frame { msec: 3872 - hash: "90bd87209b6d26785689779641b1f506" + hash: "b350f3b710a0d36ba56bdce6c86f902e" } Frame { msec: 3888 - hash: "90bd87209b6d26785689779641b1f506" + hash: "b350f3b710a0d36ba56bdce6c86f902e" } Frame { msec: 3904 - hash: "90bd87209b6d26785689779641b1f506" + hash: "b350f3b710a0d36ba56bdce6c86f902e" } Frame { msec: 3920 - hash: "90bd87209b6d26785689779641b1f506" + hash: "b350f3b710a0d36ba56bdce6c86f902e" } Frame { msec: 3936 - hash: "90bd87209b6d26785689779641b1f506" + hash: "b350f3b710a0d36ba56bdce6c86f902e" } Frame { msec: 3952 - hash: "90bd87209b6d26785689779641b1f506" + hash: "b350f3b710a0d36ba56bdce6c86f902e" } Frame { msec: 3968 - hash: "90bd87209b6d26785689779641b1f506" + hash: "b350f3b710a0d36ba56bdce6c86f902e" } Key { type: 6 @@ -1470,23 +1470,23 @@ VisualTest { } Frame { msec: 3984 - hash: "7fac93ef3184d5a844448c75b0aa8e18" + hash: "2b44bf2548bd887f22e5689946e24de5" } Frame { msec: 4000 - hash: "7fac93ef3184d5a844448c75b0aa8e18" + hash: "2b44bf2548bd887f22e5689946e24de5" } Frame { msec: 4016 - hash: "7fac93ef3184d5a844448c75b0aa8e18" + hash: "2b44bf2548bd887f22e5689946e24de5" } Frame { msec: 4032 - hash: "7fac93ef3184d5a844448c75b0aa8e18" + hash: "2b44bf2548bd887f22e5689946e24de5" } Frame { msec: 4048 - hash: "7fac93ef3184d5a844448c75b0aa8e18" + hash: "2b44bf2548bd887f22e5689946e24de5" } Key { type: 6 @@ -1498,7 +1498,7 @@ VisualTest { } Frame { msec: 4064 - hash: "591366861f9e23276042250d5b1da7f9" + hash: "925c7c96166cc75dc92bd280fd354e43" } Key { type: 7 @@ -1510,19 +1510,19 @@ VisualTest { } Frame { msec: 4080 - hash: "591366861f9e23276042250d5b1da7f9" + hash: "925c7c96166cc75dc92bd280fd354e43" } Frame { msec: 4096 - hash: "591366861f9e23276042250d5b1da7f9" + hash: "925c7c96166cc75dc92bd280fd354e43" } Frame { msec: 4112 - hash: "591366861f9e23276042250d5b1da7f9" + hash: "925c7c96166cc75dc92bd280fd354e43" } Frame { msec: 4128 - hash: "591366861f9e23276042250d5b1da7f9" + hash: "925c7c96166cc75dc92bd280fd354e43" } Key { type: 6 @@ -1534,11 +1534,11 @@ VisualTest { } Frame { msec: 4144 - hash: "c5c33e5f4429698b1a1bc084a41d303d" + hash: "61d6f7583f143917b86adcad6a5ba909" } Frame { msec: 4160 - hash: "c5c33e5f4429698b1a1bc084a41d303d" + hash: "61d6f7583f143917b86adcad6a5ba909" } Key { type: 7 @@ -1550,15 +1550,15 @@ VisualTest { } Frame { msec: 4176 - hash: "c5c33e5f4429698b1a1bc084a41d303d" + hash: "61d6f7583f143917b86adcad6a5ba909" } Frame { msec: 4192 - hash: "c5c33e5f4429698b1a1bc084a41d303d" + hash: "61d6f7583f143917b86adcad6a5ba909" } Frame { msec: 4208 - hash: "c5c33e5f4429698b1a1bc084a41d303d" + hash: "61d6f7583f143917b86adcad6a5ba909" } Key { type: 6 @@ -1570,11 +1570,11 @@ VisualTest { } Frame { msec: 4224 - hash: "36223521c9ab06661239329c14e4fabe" + hash: "679e0940be9c40435aebb05a6e0da685" } Frame { msec: 4240 - hash: "36223521c9ab06661239329c14e4fabe" + hash: "679e0940be9c40435aebb05a6e0da685" } Key { type: 7 @@ -1586,11 +1586,11 @@ VisualTest { } Frame { msec: 4256 - hash: "36223521c9ab06661239329c14e4fabe" + hash: "679e0940be9c40435aebb05a6e0da685" } Frame { msec: 4272 - hash: "36223521c9ab06661239329c14e4fabe" + hash: "679e0940be9c40435aebb05a6e0da685" } Key { type: 7 @@ -1602,27 +1602,27 @@ VisualTest { } Frame { msec: 4288 - hash: "36223521c9ab06661239329c14e4fabe" + hash: "679e0940be9c40435aebb05a6e0da685" } Frame { msec: 4304 - hash: "36223521c9ab06661239329c14e4fabe" + hash: "679e0940be9c40435aebb05a6e0da685" } Frame { msec: 4320 - hash: "36223521c9ab06661239329c14e4fabe" + hash: "679e0940be9c40435aebb05a6e0da685" } Frame { msec: 4336 - hash: "36223521c9ab06661239329c14e4fabe" + hash: "679e0940be9c40435aebb05a6e0da685" } Frame { msec: 4352 - hash: "36223521c9ab06661239329c14e4fabe" + hash: "679e0940be9c40435aebb05a6e0da685" } Frame { msec: 4368 - hash: "36223521c9ab06661239329c14e4fabe" + hash: "679e0940be9c40435aebb05a6e0da685" } Key { type: 6 @@ -1634,23 +1634,23 @@ VisualTest { } Frame { msec: 4384 - hash: "22ab171b9805302b729afd314e55a0f4" + hash: "e819d25f605ec1347e89de65682edb7d" } Frame { msec: 4400 - hash: "22ab171b9805302b729afd314e55a0f4" + hash: "e819d25f605ec1347e89de65682edb7d" } Frame { msec: 4416 - hash: "22ab171b9805302b729afd314e55a0f4" + hash: "e819d25f605ec1347e89de65682edb7d" } Frame { msec: 4432 - hash: "22ab171b9805302b729afd314e55a0f4" + hash: "e819d25f605ec1347e89de65682edb7d" } Frame { msec: 4448 - hash: "22ab171b9805302b729afd314e55a0f4" + hash: "e819d25f605ec1347e89de65682edb7d" } Key { type: 7 @@ -1662,7 +1662,7 @@ VisualTest { } Frame { msec: 4464 - hash: "22ab171b9805302b729afd314e55a0f4" + hash: "e819d25f605ec1347e89de65682edb7d" } Key { type: 6 @@ -1674,23 +1674,23 @@ VisualTest { } Frame { msec: 4480 - hash: "beaad223234484e21f824ceb7f1edc2a" + hash: "ef65860a90a96d521a860c4e73e833ee" } Frame { msec: 4496 - hash: "beaad223234484e21f824ceb7f1edc2a" + hash: "ef65860a90a96d521a860c4e73e833ee" } Frame { msec: 4512 - hash: "beaad223234484e21f824ceb7f1edc2a" + hash: "ef65860a90a96d521a860c4e73e833ee" } Frame { msec: 4528 - hash: "beaad223234484e21f824ceb7f1edc2a" + hash: "ef65860a90a96d521a860c4e73e833ee" } Frame { msec: 4544 - hash: "beaad223234484e21f824ceb7f1edc2a" + hash: "ef65860a90a96d521a860c4e73e833ee" } Key { type: 7 @@ -1702,15 +1702,15 @@ VisualTest { } Frame { msec: 4560 - hash: "beaad223234484e21f824ceb7f1edc2a" + hash: "ef65860a90a96d521a860c4e73e833ee" } Frame { msec: 4576 - hash: "beaad223234484e21f824ceb7f1edc2a" + hash: "ef65860a90a96d521a860c4e73e833ee" } Frame { msec: 4592 - hash: "beaad223234484e21f824ceb7f1edc2a" + hash: "ef65860a90a96d521a860c4e73e833ee" } Key { type: 6 @@ -1722,63 +1722,63 @@ VisualTest { } Frame { msec: 4608 - hash: "beaad223234484e21f824ceb7f1edc2a" + hash: "ef65860a90a96d521a860c4e73e833ee" } Frame { msec: 4624 - hash: "beaad223234484e21f824ceb7f1edc2a" + hash: "ef65860a90a96d521a860c4e73e833ee" } Frame { msec: 4640 - hash: "beaad223234484e21f824ceb7f1edc2a" + hash: "ef65860a90a96d521a860c4e73e833ee" } Frame { msec: 4656 - hash: "beaad223234484e21f824ceb7f1edc2a" + hash: "ef65860a90a96d521a860c4e73e833ee" } Frame { msec: 4672 - hash: "beaad223234484e21f824ceb7f1edc2a" + hash: "ef65860a90a96d521a860c4e73e833ee" } Frame { msec: 4688 - hash: "beaad223234484e21f824ceb7f1edc2a" + hash: "ef65860a90a96d521a860c4e73e833ee" } Frame { msec: 4704 - hash: "beaad223234484e21f824ceb7f1edc2a" + hash: "ef65860a90a96d521a860c4e73e833ee" } Frame { msec: 4720 - hash: "beaad223234484e21f824ceb7f1edc2a" + hash: "ef65860a90a96d521a860c4e73e833ee" } Frame { msec: 4736 - hash: "beaad223234484e21f824ceb7f1edc2a" + hash: "ef65860a90a96d521a860c4e73e833ee" } Frame { msec: 4752 - hash: "beaad223234484e21f824ceb7f1edc2a" + hash: "ef65860a90a96d521a860c4e73e833ee" } Frame { msec: 4768 - hash: "beaad223234484e21f824ceb7f1edc2a" + hash: "ef65860a90a96d521a860c4e73e833ee" } Frame { msec: 4784 - hash: "beaad223234484e21f824ceb7f1edc2a" + hash: "ef65860a90a96d521a860c4e73e833ee" } Frame { msec: 4800 - image: "usingMultilineEdit.4.png" + hash: "ef65860a90a96d521a860c4e73e833ee" } Frame { msec: 4816 - hash: "beaad223234484e21f824ceb7f1edc2a" + image: "usingMultilineEdit.5.png" } Frame { msec: 4832 - hash: "beaad223234484e21f824ceb7f1edc2a" + hash: "ef65860a90a96d521a860c4e73e833ee" } Key { type: 6 @@ -1790,31 +1790,31 @@ VisualTest { } Frame { msec: 4848 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 4864 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 4880 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 4896 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 4912 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 4928 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 4944 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Key { type: 7 @@ -1826,19 +1826,19 @@ VisualTest { } Frame { msec: 4960 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 4976 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 4992 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 5008 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Key { type: 7 @@ -1850,191 +1850,191 @@ VisualTest { } Frame { msec: 5024 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 5040 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 5056 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 5072 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 5088 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 5104 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 5120 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 5136 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 5152 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 5168 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 5184 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 5200 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 5216 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 5232 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 5248 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 5264 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 5280 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 5296 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 5312 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 5328 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 5344 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 5360 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 5376 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 5392 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 5408 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 5424 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 5440 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 5456 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 5472 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 5488 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 5504 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 5520 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 5536 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 5552 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 5568 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 5584 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 5600 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 5616 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 5632 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 5648 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 5664 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 5680 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 5696 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 5712 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 5728 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 5744 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 5760 - image: "usingMultilineEdit.5.png" + hash: "84497b5307b95f59693b71dc13c838ef" } Mouse { type: 2 @@ -2046,19 +2046,19 @@ VisualTest { } Frame { msec: 5776 - hash: "476040951352f144bda4ed7fb817cd7f" + image: "usingMultilineEdit.6.png" } Frame { msec: 5792 - hash: "476040951352f144bda4ed7fb817cd7f" + hash: "a3d9bdf8086303458ae5d35294551894" } Frame { msec: 5808 - hash: "476040951352f144bda4ed7fb817cd7f" + hash: "a3d9bdf8086303458ae5d35294551894" } Frame { msec: 5824 - hash: "476040951352f144bda4ed7fb817cd7f" + hash: "a3d9bdf8086303458ae5d35294551894" } Mouse { type: 5 @@ -2078,7 +2078,7 @@ VisualTest { } Frame { msec: 5840 - hash: "476040951352f144bda4ed7fb817cd7f" + hash: "a3d9bdf8086303458ae5d35294551894" } Mouse { type: 5 @@ -2098,7 +2098,7 @@ VisualTest { } Frame { msec: 5856 - hash: "9ecb1e68ab724c6f83b1a37aa1cb15c4" + hash: "ee9722d220435828b919fa4d8e314b78" } Mouse { type: 5 @@ -2118,7 +2118,7 @@ VisualTest { } Frame { msec: 5872 - hash: "9ecb1e68ab724c6f83b1a37aa1cb15c4" + hash: "ee9722d220435828b919fa4d8e314b78" } Mouse { type: 5 @@ -2138,7 +2138,7 @@ VisualTest { } Frame { msec: 5888 - hash: "9ecb1e68ab724c6f83b1a37aa1cb15c4" + hash: "8a06a84965166774ff160984ed05b5ad" } Mouse { type: 5 @@ -2158,7 +2158,7 @@ VisualTest { } Frame { msec: 5904 - hash: "173735fb4be11da603fb8ae8cffc609d" + hash: "0a9ec173aa0436b9b9edf3f20946ae5a" } Mouse { type: 5 @@ -2178,7 +2178,7 @@ VisualTest { } Frame { msec: 5920 - hash: "173735fb4be11da603fb8ae8cffc609d" + hash: "0a9ec173aa0436b9b9edf3f20946ae5a" } Mouse { type: 5 @@ -2198,7 +2198,7 @@ VisualTest { } Frame { msec: 5936 - hash: "b337a09f359fb2a237731c66ab95c92c" + hash: "5511590b6b6826d8e863956220eee2e4" } Mouse { type: 5 @@ -2218,7 +2218,7 @@ VisualTest { } Frame { msec: 5952 - hash: "32719becb40f8c6bd49b5f5754786913" + hash: "4d413c13e43c57809af8ee83a165dcb1" } Mouse { type: 5 @@ -2238,7 +2238,7 @@ VisualTest { } Frame { msec: 5968 - hash: "e6bff88d0a5e2e7df4b3355749ecc902" + hash: "cc0c5811bc845540c2c550cefe45ab1c" } Mouse { type: 5 @@ -2250,7 +2250,7 @@ VisualTest { } Frame { msec: 5984 - hash: "e6bff88d0a5e2e7df4b3355749ecc902" + hash: "cc0c5811bc845540c2c550cefe45ab1c" } Mouse { type: 5 @@ -2270,7 +2270,7 @@ VisualTest { } Frame { msec: 6000 - hash: "e6bff88d0a5e2e7df4b3355749ecc902" + hash: "cc0c5811bc845540c2c550cefe45ab1c" } Mouse { type: 5 @@ -2290,7 +2290,7 @@ VisualTest { } Frame { msec: 6016 - hash: "e6bff88d0a5e2e7df4b3355749ecc902" + hash: "cc0c5811bc845540c2c550cefe45ab1c" } Mouse { type: 5 @@ -2310,7 +2310,7 @@ VisualTest { } Frame { msec: 6032 - hash: "e6bff88d0a5e2e7df4b3355749ecc902" + hash: "cc0c5811bc845540c2c550cefe45ab1c" } Mouse { type: 5 @@ -2330,7 +2330,7 @@ VisualTest { } Frame { msec: 6048 - hash: "e6bff88d0a5e2e7df4b3355749ecc902" + hash: "cc0c5811bc845540c2c550cefe45ab1c" } Mouse { type: 5 @@ -2350,7 +2350,7 @@ VisualTest { } Frame { msec: 6064 - hash: "e6bff88d0a5e2e7df4b3355749ecc902" + hash: "cc0c5811bc845540c2c550cefe45ab1c" } Mouse { type: 5 @@ -2370,7 +2370,7 @@ VisualTest { } Frame { msec: 6080 - hash: "e6bff88d0a5e2e7df4b3355749ecc902" + hash: "cc0c5811bc845540c2c550cefe45ab1c" } Mouse { type: 5 @@ -2390,7 +2390,7 @@ VisualTest { } Frame { msec: 6096 - hash: "e6bff88d0a5e2e7df4b3355749ecc902" + hash: "cc0c5811bc845540c2c550cefe45ab1c" } Mouse { type: 5 @@ -2410,7 +2410,7 @@ VisualTest { } Frame { msec: 6112 - hash: "e6bff88d0a5e2e7df4b3355749ecc902" + hash: "cc0c5811bc845540c2c550cefe45ab1c" } Mouse { type: 5 @@ -2430,7 +2430,7 @@ VisualTest { } Frame { msec: 6128 - hash: "e6bff88d0a5e2e7df4b3355749ecc902" + hash: "cc0c5811bc845540c2c550cefe45ab1c" } Mouse { type: 5 @@ -2450,7 +2450,7 @@ VisualTest { } Frame { msec: 6144 - hash: "e6bff88d0a5e2e7df4b3355749ecc902" + hash: "cc0c5811bc845540c2c550cefe45ab1c" } Mouse { type: 5 @@ -2470,7 +2470,7 @@ VisualTest { } Frame { msec: 6160 - hash: "e6bff88d0a5e2e7df4b3355749ecc902" + hash: "cc0c5811bc845540c2c550cefe45ab1c" } Mouse { type: 5 @@ -2490,7 +2490,7 @@ VisualTest { } Frame { msec: 6176 - hash: "e6bff88d0a5e2e7df4b3355749ecc902" + hash: "cc0c5811bc845540c2c550cefe45ab1c" } Mouse { type: 5 @@ -2502,23 +2502,23 @@ VisualTest { } Frame { msec: 6192 - hash: "e6bff88d0a5e2e7df4b3355749ecc902" + hash: "cc0c5811bc845540c2c550cefe45ab1c" } Frame { msec: 6208 - hash: "e6bff88d0a5e2e7df4b3355749ecc902" + hash: "cc0c5811bc845540c2c550cefe45ab1c" } Frame { msec: 6224 - hash: "e6bff88d0a5e2e7df4b3355749ecc902" + hash: "cc0c5811bc845540c2c550cefe45ab1c" } Frame { msec: 6240 - hash: "e6bff88d0a5e2e7df4b3355749ecc902" + hash: "cc0c5811bc845540c2c550cefe45ab1c" } Frame { msec: 6256 - hash: "e6bff88d0a5e2e7df4b3355749ecc902" + hash: "cc0c5811bc845540c2c550cefe45ab1c" } Mouse { type: 5 @@ -2530,7 +2530,7 @@ VisualTest { } Frame { msec: 6272 - hash: "e6bff88d0a5e2e7df4b3355749ecc902" + hash: "cc0c5811bc845540c2c550cefe45ab1c" } Mouse { type: 5 @@ -2550,7 +2550,7 @@ VisualTest { } Frame { msec: 6288 - hash: "e6bff88d0a5e2e7df4b3355749ecc902" + hash: "cc0c5811bc845540c2c550cefe45ab1c" } Mouse { type: 5 @@ -2570,7 +2570,7 @@ VisualTest { } Frame { msec: 6304 - hash: "e6bff88d0a5e2e7df4b3355749ecc902" + hash: "cc0c5811bc845540c2c550cefe45ab1c" } Mouse { type: 5 @@ -2590,7 +2590,7 @@ VisualTest { } Frame { msec: 6320 - hash: "e6bff88d0a5e2e7df4b3355749ecc902" + hash: "cc0c5811bc845540c2c550cefe45ab1c" } Mouse { type: 5 @@ -2610,7 +2610,7 @@ VisualTest { } Frame { msec: 6336 - hash: "e6bff88d0a5e2e7df4b3355749ecc902" + hash: "cc0c5811bc845540c2c550cefe45ab1c" } Mouse { type: 5 @@ -2630,7 +2630,7 @@ VisualTest { } Frame { msec: 6352 - hash: "e6bff88d0a5e2e7df4b3355749ecc902" + hash: "cc0c5811bc845540c2c550cefe45ab1c" } Mouse { type: 5 @@ -2650,7 +2650,7 @@ VisualTest { } Frame { msec: 6368 - hash: "e6bff88d0a5e2e7df4b3355749ecc902" + hash: "cc0c5811bc845540c2c550cefe45ab1c" } Mouse { type: 5 @@ -2670,7 +2670,7 @@ VisualTest { } Frame { msec: 6384 - hash: "5de7bbfdf96d84c8fbe74b4817a3c88a" + hash: "b35bc1db0fd5b95bb830a9be9ded1659" } Mouse { type: 5 @@ -2682,7 +2682,7 @@ VisualTest { } Frame { msec: 6400 - hash: "5de7bbfdf96d84c8fbe74b4817a3c88a" + hash: "b35bc1db0fd5b95bb830a9be9ded1659" } Mouse { type: 5 @@ -2702,7 +2702,7 @@ VisualTest { } Frame { msec: 6416 - hash: "056d22660f6feedfb453755978aa4c1d" + hash: "576bbe32d2b6f582cbb0102d2b0e079b" } Mouse { type: 5 @@ -2722,7 +2722,7 @@ VisualTest { } Frame { msec: 6432 - hash: "9d8568931fdca572dd31ea62ebbaf76a" + hash: "15a7ee7f58f286ae22385c2817b9b697" } Mouse { type: 5 @@ -2742,7 +2742,7 @@ VisualTest { } Frame { msec: 6448 - hash: "29aa2da8a830d5605a8d2d2543097177" + hash: "5cd516c20c91c407ca9932ea89afd100" } Mouse { type: 5 @@ -2754,7 +2754,7 @@ VisualTest { } Frame { msec: 6464 - hash: "154e312998b32cc09daf1693d07eda2f" + hash: "40ce8b3c3588727a37e03dd83cb3d536" } Mouse { type: 5 @@ -2774,7 +2774,7 @@ VisualTest { } Frame { msec: 6480 - hash: "5b3a17fd92fe5117aa405d4c737e6673" + hash: "a3d9bdf8086303458ae5d35294551894" } Mouse { type: 5 @@ -2794,7 +2794,7 @@ VisualTest { } Frame { msec: 6496 - hash: "5b3a17fd92fe5117aa405d4c737e6673" + hash: "384cc9f557dd56079a54c1f0460bf96f" } Mouse { type: 5 @@ -2814,7 +2814,7 @@ VisualTest { } Frame { msec: 6512 - hash: "5b3a17fd92fe5117aa405d4c737e6673" + hash: "384cc9f557dd56079a54c1f0460bf96f" } Mouse { type: 5 @@ -2834,7 +2834,7 @@ VisualTest { } Frame { msec: 6528 - hash: "5b3a17fd92fe5117aa405d4c737e6673" + hash: "384cc9f557dd56079a54c1f0460bf96f" } Mouse { type: 5 @@ -2854,7 +2854,7 @@ VisualTest { } Frame { msec: 6544 - hash: "5b3a17fd92fe5117aa405d4c737e6673" + hash: "384cc9f557dd56079a54c1f0460bf96f" } Mouse { type: 5 @@ -2874,7 +2874,7 @@ VisualTest { } Frame { msec: 6560 - hash: "5b3a17fd92fe5117aa405d4c737e6673" + hash: "384cc9f557dd56079a54c1f0460bf96f" } Mouse { type: 5 @@ -2894,7 +2894,7 @@ VisualTest { } Frame { msec: 6576 - hash: "5b3a17fd92fe5117aa405d4c737e6673" + hash: "384cc9f557dd56079a54c1f0460bf96f" } Mouse { type: 5 @@ -2914,27 +2914,27 @@ VisualTest { } Frame { msec: 6592 - hash: "5b3a17fd92fe5117aa405d4c737e6673" + hash: "384cc9f557dd56079a54c1f0460bf96f" } Frame { msec: 6608 - hash: "5b3a17fd92fe5117aa405d4c737e6673" + hash: "384cc9f557dd56079a54c1f0460bf96f" } Frame { msec: 6624 - hash: "5b3a17fd92fe5117aa405d4c737e6673" + hash: "384cc9f557dd56079a54c1f0460bf96f" } Frame { msec: 6640 - hash: "5b3a17fd92fe5117aa405d4c737e6673" + hash: "384cc9f557dd56079a54c1f0460bf96f" } Frame { msec: 6656 - hash: "5b3a17fd92fe5117aa405d4c737e6673" + hash: "384cc9f557dd56079a54c1f0460bf96f" } Frame { msec: 6672 - hash: "5b3a17fd92fe5117aa405d4c737e6673" + hash: "384cc9f557dd56079a54c1f0460bf96f" } Mouse { type: 5 @@ -2954,7 +2954,7 @@ VisualTest { } Frame { msec: 6688 - hash: "5b3a17fd92fe5117aa405d4c737e6673" + hash: "384cc9f557dd56079a54c1f0460bf96f" } Mouse { type: 5 @@ -2974,7 +2974,7 @@ VisualTest { } Frame { msec: 6704 - hash: "5b3a17fd92fe5117aa405d4c737e6673" + hash: "384cc9f557dd56079a54c1f0460bf96f" } Mouse { type: 5 @@ -2994,7 +2994,7 @@ VisualTest { } Frame { msec: 6720 - image: "usingMultilineEdit.6.png" + hash: "384cc9f557dd56079a54c1f0460bf96f" } Mouse { type: 5 @@ -3014,7 +3014,7 @@ VisualTest { } Frame { msec: 6736 - hash: "5b3a17fd92fe5117aa405d4c737e6673" + image: "usingMultilineEdit.7.png" } Mouse { type: 5 @@ -3034,7 +3034,7 @@ VisualTest { } Frame { msec: 6752 - hash: "5b3a17fd92fe5117aa405d4c737e6673" + hash: "384cc9f557dd56079a54c1f0460bf96f" } Mouse { type: 5 @@ -3054,7 +3054,7 @@ VisualTest { } Frame { msec: 6768 - hash: "5b3a17fd92fe5117aa405d4c737e6673" + hash: "384cc9f557dd56079a54c1f0460bf96f" } Mouse { type: 5 @@ -3074,7 +3074,7 @@ VisualTest { } Frame { msec: 6784 - hash: "5b3a17fd92fe5117aa405d4c737e6673" + hash: "384cc9f557dd56079a54c1f0460bf96f" } Mouse { type: 5 @@ -3094,7 +3094,7 @@ VisualTest { } Frame { msec: 6800 - hash: "5b3a17fd92fe5117aa405d4c737e6673" + hash: "384cc9f557dd56079a54c1f0460bf96f" } Mouse { type: 5 @@ -3114,7 +3114,7 @@ VisualTest { } Frame { msec: 6816 - hash: "5b3a17fd92fe5117aa405d4c737e6673" + hash: "384cc9f557dd56079a54c1f0460bf96f" } Mouse { type: 5 @@ -3134,7 +3134,7 @@ VisualTest { } Frame { msec: 6832 - hash: "5b3a17fd92fe5117aa405d4c737e6673" + hash: "384cc9f557dd56079a54c1f0460bf96f" } Mouse { type: 5 @@ -3154,7 +3154,7 @@ VisualTest { } Frame { msec: 6848 - hash: "476040951352f144bda4ed7fb817cd7f" + hash: "a3d9bdf8086303458ae5d35294551894" } Mouse { type: 5 @@ -3174,7 +3174,7 @@ VisualTest { } Frame { msec: 6864 - hash: "2cb10cb75beb454df7918b6948c6ad8a" + hash: "a3d9bdf8086303458ae5d35294551894" } Mouse { type: 5 @@ -3194,7 +3194,7 @@ VisualTest { } Frame { msec: 6880 - hash: "2cb10cb75beb454df7918b6948c6ad8a" + hash: "a3d9bdf8086303458ae5d35294551894" } Mouse { type: 3 @@ -3206,55 +3206,55 @@ VisualTest { } Frame { msec: 6896 - hash: "2cb10cb75beb454df7918b6948c6ad8a" + hash: "a3d9bdf8086303458ae5d35294551894" } Frame { msec: 6912 - hash: "2cb10cb75beb454df7918b6948c6ad8a" + hash: "a3d9bdf8086303458ae5d35294551894" } Frame { msec: 6928 - hash: "2cb10cb75beb454df7918b6948c6ad8a" + hash: "a3d9bdf8086303458ae5d35294551894" } Frame { msec: 6944 - hash: "2cb10cb75beb454df7918b6948c6ad8a" + hash: "a3d9bdf8086303458ae5d35294551894" } Frame { msec: 6960 - hash: "2cb10cb75beb454df7918b6948c6ad8a" + hash: "a3d9bdf8086303458ae5d35294551894" } Frame { msec: 6976 - hash: "2cb10cb75beb454df7918b6948c6ad8a" + hash: "a3d9bdf8086303458ae5d35294551894" } Frame { msec: 6992 - hash: "2cb10cb75beb454df7918b6948c6ad8a" + hash: "a3d9bdf8086303458ae5d35294551894" } Frame { msec: 7008 - hash: "2cb10cb75beb454df7918b6948c6ad8a" + hash: "a3d9bdf8086303458ae5d35294551894" } Frame { msec: 7024 - hash: "2cb10cb75beb454df7918b6948c6ad8a" + hash: "a3d9bdf8086303458ae5d35294551894" } Frame { msec: 7040 - hash: "2cb10cb75beb454df7918b6948c6ad8a" + hash: "a3d9bdf8086303458ae5d35294551894" } Frame { msec: 7056 - hash: "2cb10cb75beb454df7918b6948c6ad8a" + hash: "a3d9bdf8086303458ae5d35294551894" } Frame { msec: 7072 - hash: "2cb10cb75beb454df7918b6948c6ad8a" + hash: "a3d9bdf8086303458ae5d35294551894" } Frame { msec: 7088 - hash: "2cb10cb75beb454df7918b6948c6ad8a" + hash: "a3d9bdf8086303458ae5d35294551894" } Mouse { type: 2 @@ -3266,23 +3266,23 @@ VisualTest { } Frame { msec: 7104 - hash: "eafa794e0c09cc2558575bafa945ecdf" + hash: "a5755969d822cae00af992085c419a17" } Frame { msec: 7120 - hash: "eafa794e0c09cc2558575bafa945ecdf" + hash: "a5755969d822cae00af992085c419a17" } Frame { msec: 7136 - hash: "eafa794e0c09cc2558575bafa945ecdf" + hash: "a5755969d822cae00af992085c419a17" } Frame { msec: 7152 - hash: "eafa794e0c09cc2558575bafa945ecdf" + hash: "a5755969d822cae00af992085c419a17" } Frame { msec: 7168 - hash: "eafa794e0c09cc2558575bafa945ecdf" + hash: "a5755969d822cae00af992085c419a17" } Mouse { type: 3 @@ -3294,103 +3294,103 @@ VisualTest { } Frame { msec: 7184 - hash: "eafa794e0c09cc2558575bafa945ecdf" + hash: "a5755969d822cae00af992085c419a17" } Frame { msec: 7200 - hash: "eafa794e0c09cc2558575bafa945ecdf" + hash: "a5755969d822cae00af992085c419a17" } Frame { msec: 7216 - hash: "eafa794e0c09cc2558575bafa945ecdf" + hash: "a5755969d822cae00af992085c419a17" } Frame { msec: 7232 - hash: "eafa794e0c09cc2558575bafa945ecdf" + hash: "a5755969d822cae00af992085c419a17" } Frame { msec: 7248 - hash: "eafa794e0c09cc2558575bafa945ecdf" + hash: "a5755969d822cae00af992085c419a17" } Frame { msec: 7264 - hash: "eafa794e0c09cc2558575bafa945ecdf" + hash: "a5755969d822cae00af992085c419a17" } Frame { msec: 7280 - hash: "eafa794e0c09cc2558575bafa945ecdf" + hash: "a5755969d822cae00af992085c419a17" } Frame { msec: 7296 - hash: "eafa794e0c09cc2558575bafa945ecdf" + hash: "a5755969d822cae00af992085c419a17" } Frame { msec: 7312 - hash: "eafa794e0c09cc2558575bafa945ecdf" + hash: "a5755969d822cae00af992085c419a17" } Frame { msec: 7328 - hash: "eafa794e0c09cc2558575bafa945ecdf" + hash: "a5755969d822cae00af992085c419a17" } Frame { msec: 7344 - hash: "eafa794e0c09cc2558575bafa945ecdf" + hash: "a5755969d822cae00af992085c419a17" } Frame { msec: 7360 - hash: "eafa794e0c09cc2558575bafa945ecdf" + hash: "a5755969d822cae00af992085c419a17" } Frame { msec: 7376 - hash: "eafa794e0c09cc2558575bafa945ecdf" + hash: "a5755969d822cae00af992085c419a17" } Frame { msec: 7392 - hash: "eafa794e0c09cc2558575bafa945ecdf" + hash: "a5755969d822cae00af992085c419a17" } Frame { msec: 7408 - hash: "eafa794e0c09cc2558575bafa945ecdf" + hash: "a5755969d822cae00af992085c419a17" } Frame { msec: 7424 - hash: "eafa794e0c09cc2558575bafa945ecdf" + hash: "a5755969d822cae00af992085c419a17" } Frame { msec: 7440 - hash: "eafa794e0c09cc2558575bafa945ecdf" + hash: "a5755969d822cae00af992085c419a17" } Frame { msec: 7456 - hash: "eafa794e0c09cc2558575bafa945ecdf" + hash: "a5755969d822cae00af992085c419a17" } Frame { msec: 7472 - hash: "eafa794e0c09cc2558575bafa945ecdf" + hash: "a5755969d822cae00af992085c419a17" } Frame { msec: 7488 - hash: "eafa794e0c09cc2558575bafa945ecdf" + hash: "a5755969d822cae00af992085c419a17" } Frame { msec: 7504 - hash: "eafa794e0c09cc2558575bafa945ecdf" + hash: "a5755969d822cae00af992085c419a17" } Frame { msec: 7520 - hash: "eafa794e0c09cc2558575bafa945ecdf" + hash: "a5755969d822cae00af992085c419a17" } Frame { msec: 7536 - hash: "eafa794e0c09cc2558575bafa945ecdf" + hash: "a5755969d822cae00af992085c419a17" } Frame { msec: 7552 - hash: "eafa794e0c09cc2558575bafa945ecdf" + hash: "a5755969d822cae00af992085c419a17" } Frame { msec: 7568 - hash: "eafa794e0c09cc2558575bafa945ecdf" + hash: "a5755969d822cae00af992085c419a17" } Key { type: 6 @@ -3402,15 +3402,15 @@ VisualTest { } Frame { msec: 7584 - hash: "0444d714b801f88685df9722390faf4f" + hash: "2395700fc4c3080e99b8871518113778" } Frame { msec: 7600 - hash: "0444d714b801f88685df9722390faf4f" + hash: "2395700fc4c3080e99b8871518113778" } Frame { msec: 7616 - hash: "0444d714b801f88685df9722390faf4f" + hash: "2395700fc4c3080e99b8871518113778" } Key { type: 7 @@ -3422,27 +3422,27 @@ VisualTest { } Frame { msec: 7632 - hash: "0444d714b801f88685df9722390faf4f" + hash: "2395700fc4c3080e99b8871518113778" } Frame { msec: 7648 - hash: "0444d714b801f88685df9722390faf4f" + hash: "2395700fc4c3080e99b8871518113778" } Frame { msec: 7664 - hash: "0444d714b801f88685df9722390faf4f" + hash: "2395700fc4c3080e99b8871518113778" } Frame { msec: 7680 - image: "usingMultilineEdit.7.png" + hash: "2395700fc4c3080e99b8871518113778" } Frame { msec: 7696 - hash: "0444d714b801f88685df9722390faf4f" + image: "usingMultilineEdit.8.png" } Frame { msec: 7712 - hash: "0444d714b801f88685df9722390faf4f" + hash: "2395700fc4c3080e99b8871518113778" } Key { type: 6 @@ -3454,63 +3454,63 @@ VisualTest { } Frame { msec: 7728 - hash: "250a49b60ad8e9b901977e01063ec20a" + hash: "71e055a9dbd940b3445d5ad9e277b483" } Frame { msec: 7744 - hash: "250a49b60ad8e9b901977e01063ec20a" + hash: "71e055a9dbd940b3445d5ad9e277b483" } Frame { msec: 7760 - hash: "250a49b60ad8e9b901977e01063ec20a" + hash: "71e055a9dbd940b3445d5ad9e277b483" } Frame { msec: 7776 - hash: "250a49b60ad8e9b901977e01063ec20a" + hash: "71e055a9dbd940b3445d5ad9e277b483" } Frame { msec: 7792 - hash: "250a49b60ad8e9b901977e01063ec20a" + hash: "71e055a9dbd940b3445d5ad9e277b483" } Frame { msec: 7808 - hash: "250a49b60ad8e9b901977e01063ec20a" + hash: "71e055a9dbd940b3445d5ad9e277b483" } Frame { msec: 7824 - hash: "250a49b60ad8e9b901977e01063ec20a" + hash: "71e055a9dbd940b3445d5ad9e277b483" } Frame { msec: 7840 - hash: "250a49b60ad8e9b901977e01063ec20a" + hash: "71e055a9dbd940b3445d5ad9e277b483" } Frame { msec: 7856 - hash: "250a49b60ad8e9b901977e01063ec20a" + hash: "71e055a9dbd940b3445d5ad9e277b483" } Frame { msec: 7872 - hash: "250a49b60ad8e9b901977e01063ec20a" + hash: "71e055a9dbd940b3445d5ad9e277b483" } Frame { msec: 7888 - hash: "250a49b60ad8e9b901977e01063ec20a" + hash: "71e055a9dbd940b3445d5ad9e277b483" } Frame { msec: 7904 - hash: "250a49b60ad8e9b901977e01063ec20a" + hash: "71e055a9dbd940b3445d5ad9e277b483" } Frame { msec: 7920 - hash: "250a49b60ad8e9b901977e01063ec20a" + hash: "71e055a9dbd940b3445d5ad9e277b483" } Frame { msec: 7936 - hash: "250a49b60ad8e9b901977e01063ec20a" + hash: "71e055a9dbd940b3445d5ad9e277b483" } Frame { msec: 7952 - hash: "250a49b60ad8e9b901977e01063ec20a" + hash: "71e055a9dbd940b3445d5ad9e277b483" } Key { type: 7 @@ -3530,11 +3530,11 @@ VisualTest { } Frame { msec: 7968 - hash: "bec2aea61fef64475e638848b96d28c3" + hash: "2ed8cb467e60f2fb253abb37bdc18a9a" } Frame { msec: 7984 - hash: "bec2aea61fef64475e638848b96d28c3" + hash: "2ed8cb467e60f2fb253abb37bdc18a9a" } Key { type: 7 @@ -3554,11 +3554,11 @@ VisualTest { } Frame { msec: 8000 - hash: "54177e0d53373636850e18399640fee8" + hash: "5783992a07652cfc53bfa0e1f36c1415" } Frame { msec: 8016 - hash: "54177e0d53373636850e18399640fee8" + hash: "5783992a07652cfc53bfa0e1f36c1415" } Key { type: 7 @@ -3578,11 +3578,11 @@ VisualTest { } Frame { msec: 8032 - hash: "81c03bd9dfd562e9f13784c906fa0d9e" + hash: "0fa5790dcbcb740d530b6333063629d6" } Frame { msec: 8048 - hash: "81c03bd9dfd562e9f13784c906fa0d9e" + hash: "0fa5790dcbcb740d530b6333063629d6" } Key { type: 7 @@ -3602,11 +3602,11 @@ VisualTest { } Frame { msec: 8064 - hash: "2547fbe956bab6566c2b9137c0edc841" + hash: "00ae3b5d61a83fdd16fc05b7c3fde8ed" } Frame { msec: 8080 - hash: "2547fbe956bab6566c2b9137c0edc841" + hash: "00ae3b5d61a83fdd16fc05b7c3fde8ed" } Key { type: 6 @@ -3626,31 +3626,31 @@ VisualTest { } Frame { msec: 8096 - hash: "2547fbe956bab6566c2b9137c0edc841" + hash: "00ae3b5d61a83fdd16fc05b7c3fde8ed" } Frame { msec: 8112 - hash: "2547fbe956bab6566c2b9137c0edc841" + hash: "00ae3b5d61a83fdd16fc05b7c3fde8ed" } Frame { msec: 8128 - hash: "2547fbe956bab6566c2b9137c0edc841" + hash: "00ae3b5d61a83fdd16fc05b7c3fde8ed" } Frame { msec: 8144 - hash: "2547fbe956bab6566c2b9137c0edc841" + hash: "00ae3b5d61a83fdd16fc05b7c3fde8ed" } Frame { msec: 8160 - hash: "2547fbe956bab6566c2b9137c0edc841" + hash: "00ae3b5d61a83fdd16fc05b7c3fde8ed" } Frame { msec: 8176 - hash: "2547fbe956bab6566c2b9137c0edc841" + hash: "00ae3b5d61a83fdd16fc05b7c3fde8ed" } Frame { msec: 8192 - hash: "2547fbe956bab6566c2b9137c0edc841" + hash: "00ae3b5d61a83fdd16fc05b7c3fde8ed" } Key { type: 6 @@ -3662,19 +3662,19 @@ VisualTest { } Frame { msec: 8208 - hash: "c757d4e60d18ce16f87c66e42cc81a99" + hash: "8f59f9f91dbcf608143925ff1f974151" } Frame { msec: 8224 - hash: "c757d4e60d18ce16f87c66e42cc81a99" + hash: "8f59f9f91dbcf608143925ff1f974151" } Frame { msec: 8240 - hash: "c757d4e60d18ce16f87c66e42cc81a99" + hash: "8f59f9f91dbcf608143925ff1f974151" } Frame { msec: 8256 - hash: "c757d4e60d18ce16f87c66e42cc81a99" + hash: "8f59f9f91dbcf608143925ff1f974151" } Key { type: 7 @@ -3686,19 +3686,19 @@ VisualTest { } Frame { msec: 8272 - hash: "c757d4e60d18ce16f87c66e42cc81a99" + hash: "8f59f9f91dbcf608143925ff1f974151" } Frame { msec: 8288 - hash: "c757d4e60d18ce16f87c66e42cc81a99" + hash: "8f59f9f91dbcf608143925ff1f974151" } Frame { msec: 8304 - hash: "c757d4e60d18ce16f87c66e42cc81a99" + hash: "8f59f9f91dbcf608143925ff1f974151" } Frame { msec: 8320 - hash: "c757d4e60d18ce16f87c66e42cc81a99" + hash: "8f59f9f91dbcf608143925ff1f974151" } Key { type: 6 @@ -3710,19 +3710,19 @@ VisualTest { } Frame { msec: 8336 - hash: "2ef578193024153dc85a2a92d10dc6c0" + hash: "fc48aa2746eaaf31312de3c37d821ff0" } Frame { msec: 8352 - hash: "2ef578193024153dc85a2a92d10dc6c0" + hash: "fc48aa2746eaaf31312de3c37d821ff0" } Frame { msec: 8368 - hash: "2ef578193024153dc85a2a92d10dc6c0" + hash: "fc48aa2746eaaf31312de3c37d821ff0" } Frame { msec: 8384 - hash: "2ef578193024153dc85a2a92d10dc6c0" + hash: "fc48aa2746eaaf31312de3c37d821ff0" } Key { type: 7 @@ -3734,23 +3734,23 @@ VisualTest { } Frame { msec: 8400 - hash: "2ef578193024153dc85a2a92d10dc6c0" + hash: "fc48aa2746eaaf31312de3c37d821ff0" } Frame { msec: 8416 - hash: "2ef578193024153dc85a2a92d10dc6c0" + hash: "fc48aa2746eaaf31312de3c37d821ff0" } Frame { msec: 8432 - hash: "2ef578193024153dc85a2a92d10dc6c0" + hash: "fc48aa2746eaaf31312de3c37d821ff0" } Frame { msec: 8448 - hash: "2ef578193024153dc85a2a92d10dc6c0" + hash: "fc48aa2746eaaf31312de3c37d821ff0" } Frame { msec: 8464 - hash: "2ef578193024153dc85a2a92d10dc6c0" + hash: "fc48aa2746eaaf31312de3c37d821ff0" } Key { type: 6 @@ -3762,19 +3762,19 @@ VisualTest { } Frame { msec: 8480 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 8496 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 8512 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 8528 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Key { type: 7 @@ -3786,35 +3786,35 @@ VisualTest { } Frame { msec: 8544 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 8560 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 8576 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 8592 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 8608 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 8624 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 8640 - image: "usingMultilineEdit.8.png" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 8656 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + image: "usingMultilineEdit.9.png" } Key { type: 7 @@ -3826,139 +3826,139 @@ VisualTest { } Frame { msec: 8672 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 8688 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 8704 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 8720 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 8736 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 8752 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 8768 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 8784 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 8800 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 8816 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 8832 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 8848 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 8864 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 8880 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 8896 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 8912 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 8928 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 8944 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 8960 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 8976 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 8992 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 9008 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 9024 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 9040 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 9056 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 9072 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 9088 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 9104 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 9120 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 9136 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 9152 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 9168 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 9184 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 9200 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Mouse { type: 2 @@ -3970,11 +3970,11 @@ VisualTest { } Frame { msec: 9216 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 9232 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Mouse { type: 5 @@ -3986,7 +3986,7 @@ VisualTest { } Frame { msec: 9248 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Mouse { type: 5 @@ -4006,7 +4006,7 @@ VisualTest { } Frame { msec: 9264 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Mouse { type: 5 @@ -4026,7 +4026,7 @@ VisualTest { } Frame { msec: 9280 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Mouse { type: 3 @@ -4038,43 +4038,43 @@ VisualTest { } Frame { msec: 9296 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 9312 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 9328 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 9344 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 9360 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 9376 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 9392 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 9408 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 9424 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 9440 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Mouse { type: 2 @@ -4086,27 +4086,27 @@ VisualTest { } Frame { msec: 9456 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 9472 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 9488 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 9504 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 9520 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 9536 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Mouse { type: 3 @@ -4118,35 +4118,35 @@ VisualTest { } Frame { msec: 9552 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 9568 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 9584 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 9600 - image: "usingMultilineEdit.9.png" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 9616 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + image: "usingMultilineEdit.10.png" } Frame { msec: 9632 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 9648 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 9664 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Key { type: 6 @@ -4158,111 +4158,111 @@ VisualTest { } Frame { msec: 9680 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 9696 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 9712 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 9728 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 9744 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 9760 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 9776 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 9792 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 9808 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 9824 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 9840 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 9856 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 9872 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 9888 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 9904 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 9920 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 9936 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 9952 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 9968 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 9984 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 10000 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 10016 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 10032 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 10048 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 10064 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 10080 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 10096 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Key { type: 6 @@ -4274,35 +4274,35 @@ VisualTest { } Frame { msec: 10112 - hash: "2ef5e7b2c0edc631765ea12d1f7abf33" + hash: "2ccfdac58b836aa89d2a75d0bdca6624" } Frame { msec: 10128 - hash: "2ef5e7b2c0edc631765ea12d1f7abf33" + hash: "2ccfdac58b836aa89d2a75d0bdca6624" } Frame { msec: 10144 - hash: "2ef5e7b2c0edc631765ea12d1f7abf33" + hash: "2ccfdac58b836aa89d2a75d0bdca6624" } Frame { msec: 10160 - hash: "2ef5e7b2c0edc631765ea12d1f7abf33" + hash: "2ccfdac58b836aa89d2a75d0bdca6624" } Frame { msec: 10176 - hash: "2ef5e7b2c0edc631765ea12d1f7abf33" + hash: "2ccfdac58b836aa89d2a75d0bdca6624" } Frame { msec: 10192 - hash: "2ef5e7b2c0edc631765ea12d1f7abf33" + hash: "2ccfdac58b836aa89d2a75d0bdca6624" } Frame { msec: 10208 - hash: "2ef5e7b2c0edc631765ea12d1f7abf33" + hash: "2ccfdac58b836aa89d2a75d0bdca6624" } Frame { msec: 10224 - hash: "2ef5e7b2c0edc631765ea12d1f7abf33" + hash: "2ccfdac58b836aa89d2a75d0bdca6624" } Key { type: 7 @@ -4314,35 +4314,35 @@ VisualTest { } Frame { msec: 10240 - hash: "2ef5e7b2c0edc631765ea12d1f7abf33" + hash: "2ccfdac58b836aa89d2a75d0bdca6624" } Frame { msec: 10256 - hash: "2ef5e7b2c0edc631765ea12d1f7abf33" + hash: "2ccfdac58b836aa89d2a75d0bdca6624" } Frame { msec: 10272 - hash: "2ef5e7b2c0edc631765ea12d1f7abf33" + hash: "2ccfdac58b836aa89d2a75d0bdca6624" } Frame { msec: 10288 - hash: "2ef5e7b2c0edc631765ea12d1f7abf33" + hash: "2ccfdac58b836aa89d2a75d0bdca6624" } Frame { msec: 10304 - hash: "2ef5e7b2c0edc631765ea12d1f7abf33" + hash: "2ccfdac58b836aa89d2a75d0bdca6624" } Frame { msec: 10320 - hash: "2ef5e7b2c0edc631765ea12d1f7abf33" + hash: "2ccfdac58b836aa89d2a75d0bdca6624" } Frame { msec: 10336 - hash: "2ef5e7b2c0edc631765ea12d1f7abf33" + hash: "2ccfdac58b836aa89d2a75d0bdca6624" } Frame { msec: 10352 - hash: "2ef5e7b2c0edc631765ea12d1f7abf33" + hash: "2ccfdac58b836aa89d2a75d0bdca6624" } Key { type: 6 @@ -4354,27 +4354,27 @@ VisualTest { } Frame { msec: 10368 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 10384 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 10400 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 10416 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 10432 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 10448 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Key { type: 7 @@ -4386,51 +4386,51 @@ VisualTest { } Frame { msec: 10464 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 10480 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 10496 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 10512 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 10528 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 10544 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 10560 - image: "usingMultilineEdit.10.png" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 10576 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + image: "usingMultilineEdit.11.png" } Frame { msec: 10592 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 10608 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 10624 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 10640 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Key { type: 7 @@ -4442,246 +4442,246 @@ VisualTest { } Frame { msec: 10656 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 10672 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 10688 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 10704 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 10720 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 10736 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 10752 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 10768 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 10784 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 10800 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 10816 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 10832 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 10848 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 10864 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 10880 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 10896 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 10912 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 10928 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 10944 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 10960 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 10976 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 10992 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 11008 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 11024 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 11040 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 11056 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 11072 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 11088 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 11104 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 11120 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 11136 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 11152 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 11168 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 11184 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 11200 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 11216 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 11232 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 11248 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 11264 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 11280 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 11296 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 11312 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 11328 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 11344 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 11360 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 11376 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 11392 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 11408 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 11424 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 11440 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 11456 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 11472 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 11488 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 11504 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 11520 - image: "usingMultilineEdit.11.png" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 11536 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + image: "usingMultilineEdit.12.png" } Frame { msec: 11552 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 11568 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 11584 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 11600 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 11616 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } } diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.0.png index 61606b2..a61ba5a 100644 Binary files a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.0.png and b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.0.png differ diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.1.png index a4b28fc..2a28c96 100644 Binary files a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.1.png and b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.1.png differ diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.2.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.2.png index 5be6bbb..d1ddaa6 100644 Binary files a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.2.png and b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.2.png differ diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.3.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.3.png index a220f65..493c5cd 100644 Binary files a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.3.png and b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.3.png differ diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.4.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.4.png index 6946707..2b2ce59 100644 Binary files a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.4.png and b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.4.png differ diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.5.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.5.png index 4eeb8ec..044eea4 100644 Binary files a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.5.png and b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.5.png differ diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.6.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.6.png index 4eeb8ec..f0748b2 100644 Binary files a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.6.png and b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.6.png differ diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.7.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.7.png new file mode 100644 index 0000000..f0748b2 Binary files /dev/null and b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.7.png differ diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.qml index f1bb5a9..f5af59f 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.qml @@ -6,7 +6,7 @@ VisualTest { } Frame { msec: 16 - hash: "b6611676a7d38162d5c0210ea9d0e291" + image: "wrap.0.png" } Key { type: 6 @@ -18,7 +18,7 @@ VisualTest { } Frame { msec: 32 - hash: "b7fc43d4344c8d39f4240dadead86b1e" + hash: "2b7fa5ced204393f05bf68d33e0ca2ad" } Key { type: 7 @@ -30,11 +30,11 @@ VisualTest { } Frame { msec: 48 - hash: "b7fc43d4344c8d39f4240dadead86b1e" + hash: "2b7fa5ced204393f05bf68d33e0ca2ad" } Frame { msec: 64 - hash: "b7fc43d4344c8d39f4240dadead86b1e" + hash: "2b7fa5ced204393f05bf68d33e0ca2ad" } Key { type: 7 @@ -46,11 +46,11 @@ VisualTest { } Frame { msec: 80 - hash: "b7fc43d4344c8d39f4240dadead86b1e" + hash: "2b7fa5ced204393f05bf68d33e0ca2ad" } Frame { msec: 96 - hash: "b7fc43d4344c8d39f4240dadead86b1e" + hash: "2b7fa5ced204393f05bf68d33e0ca2ad" } Key { type: 6 @@ -62,15 +62,15 @@ VisualTest { } Frame { msec: 112 - hash: "23006a07263b8b3240c4080fb1d587e9" + hash: "5fe2c4c01922f0b0d3f65152bd80f689" } Frame { msec: 128 - hash: "23006a07263b8b3240c4080fb1d587e9" + hash: "5fe2c4c01922f0b0d3f65152bd80f689" } Frame { msec: 144 - hash: "23006a07263b8b3240c4080fb1d587e9" + hash: "5fe2c4c01922f0b0d3f65152bd80f689" } Key { type: 6 @@ -82,15 +82,15 @@ VisualTest { } Frame { msec: 160 - hash: "8a60fd38fb9c171a15bf7e6e51bee664" + hash: "9645f4ad60570c8a95e9ae6dda3f5060" } Frame { msec: 176 - hash: "8a60fd38fb9c171a15bf7e6e51bee664" + hash: "9645f4ad60570c8a95e9ae6dda3f5060" } Frame { msec: 192 - hash: "8a60fd38fb9c171a15bf7e6e51bee664" + hash: "9645f4ad60570c8a95e9ae6dda3f5060" } Key { type: 7 @@ -102,11 +102,11 @@ VisualTest { } Frame { msec: 208 - hash: "8a60fd38fb9c171a15bf7e6e51bee664" + hash: "9645f4ad60570c8a95e9ae6dda3f5060" } Frame { msec: 224 - hash: "8a60fd38fb9c171a15bf7e6e51bee664" + hash: "9645f4ad60570c8a95e9ae6dda3f5060" } Key { type: 6 @@ -118,7 +118,7 @@ VisualTest { } Frame { msec: 240 - hash: "33cdfa214f071848ed374407b4601c5a" + hash: "f28f446cb8de8af0a49ae6e728c996fc" } Key { type: 7 @@ -130,19 +130,19 @@ VisualTest { } Frame { msec: 256 - hash: "33cdfa214f071848ed374407b4601c5a" + hash: "f28f446cb8de8af0a49ae6e728c996fc" } Frame { msec: 272 - hash: "33cdfa214f071848ed374407b4601c5a" + hash: "f28f446cb8de8af0a49ae6e728c996fc" } Frame { msec: 288 - hash: "33cdfa214f071848ed374407b4601c5a" + hash: "f28f446cb8de8af0a49ae6e728c996fc" } Frame { msec: 304 - hash: "33cdfa214f071848ed374407b4601c5a" + hash: "f28f446cb8de8af0a49ae6e728c996fc" } Key { type: 7 @@ -154,11 +154,11 @@ VisualTest { } Frame { msec: 320 - hash: "33cdfa214f071848ed374407b4601c5a" + hash: "f28f446cb8de8af0a49ae6e728c996fc" } Frame { msec: 336 - hash: "33cdfa214f071848ed374407b4601c5a" + hash: "f28f446cb8de8af0a49ae6e728c996fc" } Key { type: 6 @@ -170,19 +170,19 @@ VisualTest { } Frame { msec: 352 - hash: "80794c72fe7dda72997122a89f33e6e4" + hash: "98c390c519cd0476de17be8bb49b0f65" } Frame { msec: 368 - hash: "80794c72fe7dda72997122a89f33e6e4" + hash: "98c390c519cd0476de17be8bb49b0f65" } Frame { msec: 384 - hash: "80794c72fe7dda72997122a89f33e6e4" + hash: "98c390c519cd0476de17be8bb49b0f65" } Frame { msec: 400 - hash: "80794c72fe7dda72997122a89f33e6e4" + hash: "98c390c519cd0476de17be8bb49b0f65" } Key { type: 7 @@ -194,19 +194,19 @@ VisualTest { } Frame { msec: 416 - hash: "80794c72fe7dda72997122a89f33e6e4" + hash: "98c390c519cd0476de17be8bb49b0f65" } Frame { msec: 432 - hash: "80794c72fe7dda72997122a89f33e6e4" + hash: "98c390c519cd0476de17be8bb49b0f65" } Frame { msec: 448 - hash: "80794c72fe7dda72997122a89f33e6e4" + hash: "98c390c519cd0476de17be8bb49b0f65" } Frame { msec: 464 - hash: "80794c72fe7dda72997122a89f33e6e4" + hash: "98c390c519cd0476de17be8bb49b0f65" } Key { type: 6 @@ -218,19 +218,19 @@ VisualTest { } Frame { msec: 480 - hash: "bfcd901aee3d9db796597834bec1f173" + hash: "d842a866459f3ecb4fa4fc1426a05411" } Frame { msec: 496 - hash: "bfcd901aee3d9db796597834bec1f173" + hash: "d842a866459f3ecb4fa4fc1426a05411" } Frame { msec: 512 - hash: "bfcd901aee3d9db796597834bec1f173" + hash: "d842a866459f3ecb4fa4fc1426a05411" } Frame { msec: 528 - hash: "bfcd901aee3d9db796597834bec1f173" + hash: "d842a866459f3ecb4fa4fc1426a05411" } Key { type: 6 @@ -250,23 +250,23 @@ VisualTest { } Frame { msec: 544 - hash: "965102cb74dcf695b950616ce5c42875" + hash: "4c858bfd2e8ba7a959bbf2d1e17865e7" } Frame { msec: 560 - hash: "965102cb74dcf695b950616ce5c42875" + hash: "4c858bfd2e8ba7a959bbf2d1e17865e7" } Frame { msec: 576 - hash: "965102cb74dcf695b950616ce5c42875" + hash: "4c858bfd2e8ba7a959bbf2d1e17865e7" } Frame { msec: 592 - hash: "965102cb74dcf695b950616ce5c42875" + hash: "4c858bfd2e8ba7a959bbf2d1e17865e7" } Frame { msec: 608 - hash: "965102cb74dcf695b950616ce5c42875" + hash: "4c858bfd2e8ba7a959bbf2d1e17865e7" } Key { type: 7 @@ -286,19 +286,19 @@ VisualTest { } Frame { msec: 624 - hash: "73556f0cf2c8d77881a7d3881025e343" + hash: "9eed9c764b2c5b73a60df84fc0d68756" } Frame { msec: 640 - hash: "73556f0cf2c8d77881a7d3881025e343" + hash: "9eed9c764b2c5b73a60df84fc0d68756" } Frame { msec: 656 - hash: "73556f0cf2c8d77881a7d3881025e343" + hash: "9eed9c764b2c5b73a60df84fc0d68756" } Frame { msec: 672 - hash: "73556f0cf2c8d77881a7d3881025e343" + hash: "9eed9c764b2c5b73a60df84fc0d68756" } Key { type: 7 @@ -310,11 +310,11 @@ VisualTest { } Frame { msec: 688 - hash: "73556f0cf2c8d77881a7d3881025e343" + hash: "9eed9c764b2c5b73a60df84fc0d68756" } Frame { msec: 704 - hash: "73556f0cf2c8d77881a7d3881025e343" + hash: "9eed9c764b2c5b73a60df84fc0d68756" } Key { type: 6 @@ -326,23 +326,23 @@ VisualTest { } Frame { msec: 720 - hash: "a75bdb09a48b90936d2d4de647e7323d" + hash: "7a1d64574a0a6b90695629fd443274e6" } Frame { msec: 736 - hash: "a75bdb09a48b90936d2d4de647e7323d" + hash: "7a1d64574a0a6b90695629fd443274e6" } Frame { msec: 752 - hash: "a75bdb09a48b90936d2d4de647e7323d" + hash: "7a1d64574a0a6b90695629fd443274e6" } Frame { msec: 768 - hash: "a75bdb09a48b90936d2d4de647e7323d" + hash: "7a1d64574a0a6b90695629fd443274e6" } Frame { msec: 784 - hash: "a75bdb09a48b90936d2d4de647e7323d" + hash: "7a1d64574a0a6b90695629fd443274e6" } Key { type: 7 @@ -354,7 +354,7 @@ VisualTest { } Frame { msec: 800 - hash: "a75bdb09a48b90936d2d4de647e7323d" + hash: "7a1d64574a0a6b90695629fd443274e6" } Key { type: 6 @@ -366,15 +366,15 @@ VisualTest { } Frame { msec: 816 - hash: "f37ab5f03e7cf86e3589fc0711b23a53" + hash: "31e9c4500448142ee2be3171a2bd5385" } Frame { msec: 832 - hash: "f37ab5f03e7cf86e3589fc0711b23a53" + hash: "31e9c4500448142ee2be3171a2bd5385" } Frame { msec: 848 - hash: "f37ab5f03e7cf86e3589fc0711b23a53" + hash: "31e9c4500448142ee2be3171a2bd5385" } Key { type: 7 @@ -386,15 +386,15 @@ VisualTest { } Frame { msec: 864 - hash: "f37ab5f03e7cf86e3589fc0711b23a53" + hash: "31e9c4500448142ee2be3171a2bd5385" } Frame { msec: 880 - hash: "f37ab5f03e7cf86e3589fc0711b23a53" + hash: "31e9c4500448142ee2be3171a2bd5385" } Frame { msec: 896 - hash: "f37ab5f03e7cf86e3589fc0711b23a53" + hash: "31e9c4500448142ee2be3171a2bd5385" } Key { type: 6 @@ -406,27 +406,27 @@ VisualTest { } Frame { msec: 912 - hash: "219e5edd5f138cd113f0b929460cf074" + hash: "7fcfd3706ba11c43ac0a4c2f96b1d80d" } Frame { msec: 928 - hash: "219e5edd5f138cd113f0b929460cf074" + hash: "7fcfd3706ba11c43ac0a4c2f96b1d80d" } Frame { msec: 944 - hash: "219e5edd5f138cd113f0b929460cf074" + hash: "7fcfd3706ba11c43ac0a4c2f96b1d80d" } Frame { msec: 960 - image: "wrap.0.png" + hash: "7fcfd3706ba11c43ac0a4c2f96b1d80d" } Frame { msec: 976 - hash: "219e5edd5f138cd113f0b929460cf074" + image: "wrap.1.png" } Frame { msec: 992 - hash: "219e5edd5f138cd113f0b929460cf074" + hash: "7fcfd3706ba11c43ac0a4c2f96b1d80d" } Key { type: 6 @@ -446,23 +446,23 @@ VisualTest { } Frame { msec: 1008 - hash: "79cf23a46fbbeddbef10ef2a62533342" + hash: "c05191599361c4171c086630f9608cd0" } Frame { msec: 1024 - hash: "79cf23a46fbbeddbef10ef2a62533342" + hash: "c05191599361c4171c086630f9608cd0" } Frame { msec: 1040 - hash: "79cf23a46fbbeddbef10ef2a62533342" + hash: "c05191599361c4171c086630f9608cd0" } Frame { msec: 1056 - hash: "79cf23a46fbbeddbef10ef2a62533342" + hash: "c05191599361c4171c086630f9608cd0" } Frame { msec: 1072 - hash: "79cf23a46fbbeddbef10ef2a62533342" + hash: "c05191599361c4171c086630f9608cd0" } Key { type: 7 @@ -474,31 +474,31 @@ VisualTest { } Frame { msec: 1088 - hash: "79cf23a46fbbeddbef10ef2a62533342" + hash: "c05191599361c4171c086630f9608cd0" } Frame { msec: 1104 - hash: "79cf23a46fbbeddbef10ef2a62533342" + hash: "c05191599361c4171c086630f9608cd0" } Frame { msec: 1120 - hash: "79cf23a46fbbeddbef10ef2a62533342" + hash: "c05191599361c4171c086630f9608cd0" } Frame { msec: 1136 - hash: "79cf23a46fbbeddbef10ef2a62533342" + hash: "c05191599361c4171c086630f9608cd0" } Frame { msec: 1152 - hash: "79cf23a46fbbeddbef10ef2a62533342" + hash: "c05191599361c4171c086630f9608cd0" } Frame { msec: 1168 - hash: "79cf23a46fbbeddbef10ef2a62533342" + hash: "c05191599361c4171c086630f9608cd0" } Frame { msec: 1184 - hash: "79cf23a46fbbeddbef10ef2a62533342" + hash: "c05191599361c4171c086630f9608cd0" } Key { type: 6 @@ -510,23 +510,23 @@ VisualTest { } Frame { msec: 1200 - hash: "ccb17209d85c7e49fbb0b5f9134fc39c" + hash: "088e0567dd568019ccb2114d3108a1dd" } Frame { msec: 1216 - hash: "ccb17209d85c7e49fbb0b5f9134fc39c" + hash: "088e0567dd568019ccb2114d3108a1dd" } Frame { msec: 1232 - hash: "ccb17209d85c7e49fbb0b5f9134fc39c" + hash: "088e0567dd568019ccb2114d3108a1dd" } Frame { msec: 1248 - hash: "ccb17209d85c7e49fbb0b5f9134fc39c" + hash: "088e0567dd568019ccb2114d3108a1dd" } Frame { msec: 1264 - hash: "ccb17209d85c7e49fbb0b5f9134fc39c" + hash: "088e0567dd568019ccb2114d3108a1dd" } Key { type: 7 @@ -546,11 +546,11 @@ VisualTest { } Frame { msec: 1280 - hash: "29aaa213e4b146199289b5383528bc88" + hash: "35fde81ed66c4804b2b31c0d93fb010a" } Frame { msec: 1296 - hash: "29aaa213e4b146199289b5383528bc88" + hash: "35fde81ed66c4804b2b31c0d93fb010a" } Key { type: 6 @@ -562,15 +562,15 @@ VisualTest { } Frame { msec: 1312 - hash: "7f9da386497bca2dc19b1c3ab475f453" + hash: "0b212b2b1354e99db328c30d4c8e8b4e" } Frame { msec: 1328 - hash: "7f9da386497bca2dc19b1c3ab475f453" + hash: "0b212b2b1354e99db328c30d4c8e8b4e" } Frame { msec: 1344 - hash: "7f9da386497bca2dc19b1c3ab475f453" + hash: "0b212b2b1354e99db328c30d4c8e8b4e" } Key { type: 7 @@ -582,11 +582,11 @@ VisualTest { } Frame { msec: 1360 - hash: "7f9da386497bca2dc19b1c3ab475f453" + hash: "0b212b2b1354e99db328c30d4c8e8b4e" } Frame { msec: 1376 - hash: "7f9da386497bca2dc19b1c3ab475f453" + hash: "0b212b2b1354e99db328c30d4c8e8b4e" } Key { type: 7 @@ -598,19 +598,19 @@ VisualTest { } Frame { msec: 1392 - hash: "7f9da386497bca2dc19b1c3ab475f453" + hash: "0b212b2b1354e99db328c30d4c8e8b4e" } Frame { msec: 1408 - hash: "7f9da386497bca2dc19b1c3ab475f453" + hash: "0b212b2b1354e99db328c30d4c8e8b4e" } Frame { msec: 1424 - hash: "7f9da386497bca2dc19b1c3ab475f453" + hash: "0b212b2b1354e99db328c30d4c8e8b4e" } Frame { msec: 1440 - hash: "7f9da386497bca2dc19b1c3ab475f453" + hash: "0b212b2b1354e99db328c30d4c8e8b4e" } Key { type: 6 @@ -622,23 +622,23 @@ VisualTest { } Frame { msec: 1456 - hash: "eb683a6b2a9ed2cf4ea5cb424670c9d2" + hash: "1d19bc237d8de1598a629f2aea7e8e97" } Frame { msec: 1472 - hash: "eb683a6b2a9ed2cf4ea5cb424670c9d2" + hash: "1d19bc237d8de1598a629f2aea7e8e97" } Frame { msec: 1488 - hash: "eb683a6b2a9ed2cf4ea5cb424670c9d2" + hash: "1d19bc237d8de1598a629f2aea7e8e97" } Frame { msec: 1504 - hash: "eb683a6b2a9ed2cf4ea5cb424670c9d2" + hash: "1d19bc237d8de1598a629f2aea7e8e97" } Frame { msec: 1520 - hash: "eb683a6b2a9ed2cf4ea5cb424670c9d2" + hash: "1d19bc237d8de1598a629f2aea7e8e97" } Key { type: 7 @@ -650,11 +650,11 @@ VisualTest { } Frame { msec: 1536 - hash: "eb683a6b2a9ed2cf4ea5cb424670c9d2" + hash: "1d19bc237d8de1598a629f2aea7e8e97" } Frame { msec: 1552 - hash: "eb683a6b2a9ed2cf4ea5cb424670c9d2" + hash: "1d19bc237d8de1598a629f2aea7e8e97" } Key { type: 6 @@ -666,23 +666,23 @@ VisualTest { } Frame { msec: 1568 - hash: "c5c789ca287cf673be808f3e10e054a2" + hash: "df3025b2de2cf6cee2b918c6d13834c6" } Frame { msec: 1584 - hash: "c5c789ca287cf673be808f3e10e054a2" + hash: "df3025b2de2cf6cee2b918c6d13834c6" } Frame { msec: 1600 - hash: "c5c789ca287cf673be808f3e10e054a2" + hash: "df3025b2de2cf6cee2b918c6d13834c6" } Frame { msec: 1616 - hash: "c5c789ca287cf673be808f3e10e054a2" + hash: "df3025b2de2cf6cee2b918c6d13834c6" } Frame { msec: 1632 - hash: "c5c789ca287cf673be808f3e10e054a2" + hash: "df3025b2de2cf6cee2b918c6d13834c6" } Key { type: 6 @@ -702,23 +702,23 @@ VisualTest { } Frame { msec: 1648 - hash: "5e39fc7058b64afa7036002a2dae8976" + hash: "b19baef8a5d8efd96d5ec9e729a9d42a" } Frame { msec: 1664 - hash: "5e39fc7058b64afa7036002a2dae8976" + hash: "b19baef8a5d8efd96d5ec9e729a9d42a" } Frame { msec: 1680 - hash: "5e39fc7058b64afa7036002a2dae8976" + hash: "b19baef8a5d8efd96d5ec9e729a9d42a" } Frame { msec: 1696 - hash: "5e39fc7058b64afa7036002a2dae8976" + hash: "b19baef8a5d8efd96d5ec9e729a9d42a" } Frame { msec: 1712 - hash: "5e39fc7058b64afa7036002a2dae8976" + hash: "b19baef8a5d8efd96d5ec9e729a9d42a" } Key { type: 6 @@ -730,15 +730,15 @@ VisualTest { } Frame { msec: 1728 - hash: "687e69083430812cd42eff708229a176" + hash: "914e61f38d7f2b5a465037d6ef1ddaba" } Frame { msec: 1744 - hash: "687e69083430812cd42eff708229a176" + hash: "914e61f38d7f2b5a465037d6ef1ddaba" } Frame { msec: 1760 - hash: "687e69083430812cd42eff708229a176" + hash: "914e61f38d7f2b5a465037d6ef1ddaba" } Key { type: 7 @@ -750,7 +750,7 @@ VisualTest { } Frame { msec: 1776 - hash: "687e69083430812cd42eff708229a176" + hash: "914e61f38d7f2b5a465037d6ef1ddaba" } Key { type: 6 @@ -762,11 +762,11 @@ VisualTest { } Frame { msec: 1792 - hash: "f33cd379acd2785298aa74f78e22bdfb" + hash: "e816134a8fef0bbee8e94c0f9561750b" } Frame { msec: 1808 - hash: "f33cd379acd2785298aa74f78e22bdfb" + hash: "e816134a8fef0bbee8e94c0f9561750b" } Key { type: 7 @@ -778,19 +778,19 @@ VisualTest { } Frame { msec: 1824 - hash: "f33cd379acd2785298aa74f78e22bdfb" + hash: "e816134a8fef0bbee8e94c0f9561750b" } Frame { msec: 1840 - hash: "f33cd379acd2785298aa74f78e22bdfb" + hash: "e816134a8fef0bbee8e94c0f9561750b" } Frame { msec: 1856 - hash: "f33cd379acd2785298aa74f78e22bdfb" + hash: "e816134a8fef0bbee8e94c0f9561750b" } Frame { msec: 1872 - hash: "f33cd379acd2785298aa74f78e22bdfb" + hash: "e816134a8fef0bbee8e94c0f9561750b" } Key { type: 7 @@ -802,23 +802,23 @@ VisualTest { } Frame { msec: 1888 - hash: "f33cd379acd2785298aa74f78e22bdfb" + hash: "e816134a8fef0bbee8e94c0f9561750b" } Frame { msec: 1904 - hash: "f33cd379acd2785298aa74f78e22bdfb" + hash: "e816134a8fef0bbee8e94c0f9561750b" } Frame { msec: 1920 - image: "wrap.1.png" + hash: "e816134a8fef0bbee8e94c0f9561750b" } Frame { msec: 1936 - hash: "f33cd379acd2785298aa74f78e22bdfb" + image: "wrap.2.png" } Frame { msec: 1952 - hash: "f33cd379acd2785298aa74f78e22bdfb" + hash: "e816134a8fef0bbee8e94c0f9561750b" } Key { type: 6 @@ -830,27 +830,27 @@ VisualTest { } Frame { msec: 1968 - hash: "205e79eb4a7e515ffa5bd24677408e79" + hash: "9552729028c8e129e19c06ff35bb085b" } Frame { msec: 1984 - hash: "205e79eb4a7e515ffa5bd24677408e79" + hash: "9552729028c8e129e19c06ff35bb085b" } Frame { msec: 2000 - hash: "205e79eb4a7e515ffa5bd24677408e79" + hash: "9552729028c8e129e19c06ff35bb085b" } Frame { msec: 2016 - hash: "205e79eb4a7e515ffa5bd24677408e79" + hash: "9552729028c8e129e19c06ff35bb085b" } Frame { msec: 2032 - hash: "205e79eb4a7e515ffa5bd24677408e79" + hash: "9552729028c8e129e19c06ff35bb085b" } Frame { msec: 2048 - hash: "205e79eb4a7e515ffa5bd24677408e79" + hash: "9552729028c8e129e19c06ff35bb085b" } Key { type: 6 @@ -862,7 +862,7 @@ VisualTest { } Frame { msec: 2064 - hash: "2c1570a63d3eff7346c58356610a2f44" + hash: "2dbdfe3bd309b98af7ed8980725f3ee7" } Key { type: 7 @@ -874,15 +874,15 @@ VisualTest { } Frame { msec: 2080 - hash: "2c1570a63d3eff7346c58356610a2f44" + hash: "2dbdfe3bd309b98af7ed8980725f3ee7" } Frame { msec: 2096 - hash: "2c1570a63d3eff7346c58356610a2f44" + hash: "2dbdfe3bd309b98af7ed8980725f3ee7" } Frame { msec: 2112 - hash: "2c1570a63d3eff7346c58356610a2f44" + hash: "2dbdfe3bd309b98af7ed8980725f3ee7" } Key { type: 7 @@ -894,27 +894,27 @@ VisualTest { } Frame { msec: 2128 - hash: "2c1570a63d3eff7346c58356610a2f44" + hash: "2dbdfe3bd309b98af7ed8980725f3ee7" } Frame { msec: 2144 - hash: "2c1570a63d3eff7346c58356610a2f44" + hash: "2dbdfe3bd309b98af7ed8980725f3ee7" } Frame { msec: 2160 - hash: "2c1570a63d3eff7346c58356610a2f44" + hash: "2dbdfe3bd309b98af7ed8980725f3ee7" } Frame { msec: 2176 - hash: "2c1570a63d3eff7346c58356610a2f44" + hash: "2dbdfe3bd309b98af7ed8980725f3ee7" } Frame { msec: 2192 - hash: "2c1570a63d3eff7346c58356610a2f44" + hash: "2dbdfe3bd309b98af7ed8980725f3ee7" } Frame { msec: 2208 - hash: "2c1570a63d3eff7346c58356610a2f44" + hash: "2dbdfe3bd309b98af7ed8980725f3ee7" } Key { type: 6 @@ -926,23 +926,23 @@ VisualTest { } Frame { msec: 2224 - hash: "8202436b4e184adc69cdf7dd735afe33" + hash: "28748f90f61954b94377768788f1634d" } Frame { msec: 2240 - hash: "8202436b4e184adc69cdf7dd735afe33" + hash: "28748f90f61954b94377768788f1634d" } Frame { msec: 2256 - hash: "8202436b4e184adc69cdf7dd735afe33" + hash: "28748f90f61954b94377768788f1634d" } Frame { msec: 2272 - hash: "8202436b4e184adc69cdf7dd735afe33" + hash: "28748f90f61954b94377768788f1634d" } Frame { msec: 2288 - hash: "8202436b4e184adc69cdf7dd735afe33" + hash: "28748f90f61954b94377768788f1634d" } Key { type: 6 @@ -954,7 +954,7 @@ VisualTest { } Frame { msec: 2304 - hash: "855069b52f6714d54f4005751b8e2930" + hash: "2cf8ad2ba8ddcde4dd8549f034a77005" } Key { type: 7 @@ -966,15 +966,15 @@ VisualTest { } Frame { msec: 2320 - hash: "855069b52f6714d54f4005751b8e2930" + hash: "2cf8ad2ba8ddcde4dd8549f034a77005" } Frame { msec: 2336 - hash: "855069b52f6714d54f4005751b8e2930" + hash: "2cf8ad2ba8ddcde4dd8549f034a77005" } Frame { msec: 2352 - hash: "855069b52f6714d54f4005751b8e2930" + hash: "2cf8ad2ba8ddcde4dd8549f034a77005" } Key { type: 6 @@ -986,11 +986,11 @@ VisualTest { } Frame { msec: 2368 - hash: "6e1a97a3e491f24e34d4b24bf3091afc" + hash: "95b6ce7c01461847a3f7aff88aa8ad9d" } Frame { msec: 2384 - hash: "6e1a97a3e491f24e34d4b24bf3091afc" + hash: "95b6ce7c01461847a3f7aff88aa8ad9d" } Key { type: 7 @@ -1002,15 +1002,15 @@ VisualTest { } Frame { msec: 2400 - hash: "6e1a97a3e491f24e34d4b24bf3091afc" + hash: "95b6ce7c01461847a3f7aff88aa8ad9d" } Frame { msec: 2416 - hash: "6e1a97a3e491f24e34d4b24bf3091afc" + hash: "95b6ce7c01461847a3f7aff88aa8ad9d" } Frame { msec: 2432 - hash: "6e1a97a3e491f24e34d4b24bf3091afc" + hash: "95b6ce7c01461847a3f7aff88aa8ad9d" } Key { type: 7 @@ -1022,15 +1022,15 @@ VisualTest { } Frame { msec: 2448 - hash: "6e1a97a3e491f24e34d4b24bf3091afc" + hash: "95b6ce7c01461847a3f7aff88aa8ad9d" } Frame { msec: 2464 - hash: "6e1a97a3e491f24e34d4b24bf3091afc" + hash: "95b6ce7c01461847a3f7aff88aa8ad9d" } Frame { msec: 2480 - hash: "6e1a97a3e491f24e34d4b24bf3091afc" + hash: "95b6ce7c01461847a3f7aff88aa8ad9d" } Key { type: 6 @@ -1042,19 +1042,19 @@ VisualTest { } Frame { msec: 2496 - hash: "12eb5152181e0bff993dc1be087969f9" + hash: "81872138f3cafb1cf06009df77af1461" } Frame { msec: 2512 - hash: "12eb5152181e0bff993dc1be087969f9" + hash: "81872138f3cafb1cf06009df77af1461" } Frame { msec: 2528 - hash: "12eb5152181e0bff993dc1be087969f9" + hash: "81872138f3cafb1cf06009df77af1461" } Frame { msec: 2544 - hash: "12eb5152181e0bff993dc1be087969f9" + hash: "81872138f3cafb1cf06009df77af1461" } Key { type: 7 @@ -1066,27 +1066,27 @@ VisualTest { } Frame { msec: 2560 - hash: "12eb5152181e0bff993dc1be087969f9" + hash: "81872138f3cafb1cf06009df77af1461" } Frame { msec: 2576 - hash: "12eb5152181e0bff993dc1be087969f9" + hash: "81872138f3cafb1cf06009df77af1461" } Frame { msec: 2592 - hash: "12eb5152181e0bff993dc1be087969f9" + hash: "81872138f3cafb1cf06009df77af1461" } Frame { msec: 2608 - hash: "12eb5152181e0bff993dc1be087969f9" + hash: "81872138f3cafb1cf06009df77af1461" } Frame { msec: 2624 - hash: "12eb5152181e0bff993dc1be087969f9" + hash: "81872138f3cafb1cf06009df77af1461" } Frame { msec: 2640 - hash: "12eb5152181e0bff993dc1be087969f9" + hash: "81872138f3cafb1cf06009df77af1461" } Key { type: 6 @@ -1098,19 +1098,19 @@ VisualTest { } Frame { msec: 2656 - hash: "8a77655cae6c04453e6dc8a2321d1a32" + hash: "dfa35c08894d7ed748b8846fa3ce8fac" } Frame { msec: 2672 - hash: "8a77655cae6c04453e6dc8a2321d1a32" + hash: "dfa35c08894d7ed748b8846fa3ce8fac" } Frame { msec: 2688 - hash: "8a77655cae6c04453e6dc8a2321d1a32" + hash: "dfa35c08894d7ed748b8846fa3ce8fac" } Frame { msec: 2704 - hash: "8a77655cae6c04453e6dc8a2321d1a32" + hash: "dfa35c08894d7ed748b8846fa3ce8fac" } Key { type: 7 @@ -1122,15 +1122,15 @@ VisualTest { } Frame { msec: 2720 - hash: "8a77655cae6c04453e6dc8a2321d1a32" + hash: "dfa35c08894d7ed748b8846fa3ce8fac" } Frame { msec: 2736 - hash: "8a77655cae6c04453e6dc8a2321d1a32" + hash: "dfa35c08894d7ed748b8846fa3ce8fac" } Frame { msec: 2752 - hash: "8a77655cae6c04453e6dc8a2321d1a32" + hash: "dfa35c08894d7ed748b8846fa3ce8fac" } Key { type: 6 @@ -1142,23 +1142,23 @@ VisualTest { } Frame { msec: 2768 - hash: "c42349fe4b75e5d56a04ec6462cb0780" + hash: "9decac3d9243bebdc7699fcb77a31f21" } Frame { msec: 2784 - hash: "c42349fe4b75e5d56a04ec6462cb0780" + hash: "9decac3d9243bebdc7699fcb77a31f21" } Frame { msec: 2800 - hash: "c42349fe4b75e5d56a04ec6462cb0780" + hash: "9decac3d9243bebdc7699fcb77a31f21" } Frame { msec: 2816 - hash: "c42349fe4b75e5d56a04ec6462cb0780" + hash: "9decac3d9243bebdc7699fcb77a31f21" } Frame { msec: 2832 - hash: "c42349fe4b75e5d56a04ec6462cb0780" + hash: "9decac3d9243bebdc7699fcb77a31f21" } Key { type: 6 @@ -1178,19 +1178,19 @@ VisualTest { } Frame { msec: 2848 - hash: "973c163b1ea4e6189e788b7f37013185" + hash: "6a1bb7dd22f3e090008ba265c30f9c2d" } Frame { msec: 2864 - hash: "973c163b1ea4e6189e788b7f37013185" + hash: "6a1bb7dd22f3e090008ba265c30f9c2d" } Frame { msec: 2880 - image: "wrap.2.png" + hash: "6a1bb7dd22f3e090008ba265c30f9c2d" } Frame { msec: 2896 - hash: "973c163b1ea4e6189e788b7f37013185" + image: "wrap.3.png" } Key { type: 6 @@ -1202,11 +1202,11 @@ VisualTest { } Frame { msec: 2912 - hash: "a847abc1ef9a41a741f8dce6bc68e6a1" + hash: "ee39b3014e140aff2f974f3b919f85f4" } Frame { msec: 2928 - hash: "a847abc1ef9a41a741f8dce6bc68e6a1" + hash: "ee39b3014e140aff2f974f3b919f85f4" } Key { type: 7 @@ -1218,11 +1218,11 @@ VisualTest { } Frame { msec: 2944 - hash: "a847abc1ef9a41a741f8dce6bc68e6a1" + hash: "ee39b3014e140aff2f974f3b919f85f4" } Frame { msec: 2960 - hash: "a847abc1ef9a41a741f8dce6bc68e6a1" + hash: "ee39b3014e140aff2f974f3b919f85f4" } Key { type: 7 @@ -1234,35 +1234,35 @@ VisualTest { } Frame { msec: 2976 - hash: "a847abc1ef9a41a741f8dce6bc68e6a1" + hash: "ee39b3014e140aff2f974f3b919f85f4" } Frame { msec: 2992 - hash: "a847abc1ef9a41a741f8dce6bc68e6a1" + hash: "ee39b3014e140aff2f974f3b919f85f4" } Frame { msec: 3008 - hash: "a847abc1ef9a41a741f8dce6bc68e6a1" + hash: "ee39b3014e140aff2f974f3b919f85f4" } Frame { msec: 3024 - hash: "a847abc1ef9a41a741f8dce6bc68e6a1" + hash: "ee39b3014e140aff2f974f3b919f85f4" } Frame { msec: 3040 - hash: "a847abc1ef9a41a741f8dce6bc68e6a1" + hash: "ee39b3014e140aff2f974f3b919f85f4" } Frame { msec: 3056 - hash: "a847abc1ef9a41a741f8dce6bc68e6a1" + hash: "ee39b3014e140aff2f974f3b919f85f4" } Frame { msec: 3072 - hash: "a847abc1ef9a41a741f8dce6bc68e6a1" + hash: "ee39b3014e140aff2f974f3b919f85f4" } Frame { msec: 3088 - hash: "a847abc1ef9a41a741f8dce6bc68e6a1" + hash: "ee39b3014e140aff2f974f3b919f85f4" } Key { type: 6 @@ -1274,23 +1274,23 @@ VisualTest { } Frame { msec: 3104 - hash: "93d3b56a5070a84164169ab1869d6ed0" + hash: "d448179ec6bba91f3f70be821710a8c7" } Frame { msec: 3120 - hash: "93d3b56a5070a84164169ab1869d6ed0" + hash: "d448179ec6bba91f3f70be821710a8c7" } Frame { msec: 3136 - hash: "93d3b56a5070a84164169ab1869d6ed0" + hash: "d448179ec6bba91f3f70be821710a8c7" } Frame { msec: 3152 - hash: "93d3b56a5070a84164169ab1869d6ed0" + hash: "d448179ec6bba91f3f70be821710a8c7" } Frame { msec: 3168 - hash: "93d3b56a5070a84164169ab1869d6ed0" + hash: "d448179ec6bba91f3f70be821710a8c7" } Key { type: 7 @@ -1302,23 +1302,23 @@ VisualTest { } Frame { msec: 3184 - hash: "93d3b56a5070a84164169ab1869d6ed0" + hash: "d448179ec6bba91f3f70be821710a8c7" } Frame { msec: 3200 - hash: "93d3b56a5070a84164169ab1869d6ed0" + hash: "d448179ec6bba91f3f70be821710a8c7" } Frame { msec: 3216 - hash: "93d3b56a5070a84164169ab1869d6ed0" + hash: "d448179ec6bba91f3f70be821710a8c7" } Frame { msec: 3232 - hash: "93d3b56a5070a84164169ab1869d6ed0" + hash: "d448179ec6bba91f3f70be821710a8c7" } Frame { msec: 3248 - hash: "93d3b56a5070a84164169ab1869d6ed0" + hash: "d448179ec6bba91f3f70be821710a8c7" } Key { type: 6 @@ -1330,15 +1330,15 @@ VisualTest { } Frame { msec: 3264 - hash: "60480b61f29a34c790da8fe1bfd98755" + hash: "e30b5aa9b5d08fba758fe781812f096d" } Frame { msec: 3280 - hash: "60480b61f29a34c790da8fe1bfd98755" + hash: "e30b5aa9b5d08fba758fe781812f096d" } Frame { msec: 3296 - hash: "60480b61f29a34c790da8fe1bfd98755" + hash: "e30b5aa9b5d08fba758fe781812f096d" } Key { type: 7 @@ -1350,15 +1350,15 @@ VisualTest { } Frame { msec: 3312 - hash: "60480b61f29a34c790da8fe1bfd98755" + hash: "e30b5aa9b5d08fba758fe781812f096d" } Frame { msec: 3328 - hash: "60480b61f29a34c790da8fe1bfd98755" + hash: "e30b5aa9b5d08fba758fe781812f096d" } Frame { msec: 3344 - hash: "60480b61f29a34c790da8fe1bfd98755" + hash: "e30b5aa9b5d08fba758fe781812f096d" } Key { type: 6 @@ -1370,23 +1370,23 @@ VisualTest { } Frame { msec: 3360 - hash: "c6f235590c03170581dfabc07bf9c20b" + hash: "ba932735c5079ad6562050b6e332d2e7" } Frame { msec: 3376 - hash: "c6f235590c03170581dfabc07bf9c20b" + hash: "ba932735c5079ad6562050b6e332d2e7" } Frame { msec: 3392 - hash: "c6f235590c03170581dfabc07bf9c20b" + hash: "ba932735c5079ad6562050b6e332d2e7" } Frame { msec: 3408 - hash: "c6f235590c03170581dfabc07bf9c20b" + hash: "ba932735c5079ad6562050b6e332d2e7" } Frame { msec: 3424 - hash: "c6f235590c03170581dfabc07bf9c20b" + hash: "ba932735c5079ad6562050b6e332d2e7" } Key { type: 7 @@ -1398,15 +1398,15 @@ VisualTest { } Frame { msec: 3440 - hash: "c6f235590c03170581dfabc07bf9c20b" + hash: "ba932735c5079ad6562050b6e332d2e7" } Frame { msec: 3456 - hash: "c6f235590c03170581dfabc07bf9c20b" + hash: "ba932735c5079ad6562050b6e332d2e7" } Frame { msec: 3472 - hash: "c6f235590c03170581dfabc07bf9c20b" + hash: "ba932735c5079ad6562050b6e332d2e7" } Key { type: 6 @@ -1418,19 +1418,19 @@ VisualTest { } Frame { msec: 3488 - hash: "10a29af771a5c17b1443b10abd45c9aa" + hash: "01dacbcc21c541e0cbf272ee01292b7c" } Frame { msec: 3504 - hash: "10a29af771a5c17b1443b10abd45c9aa" + hash: "01dacbcc21c541e0cbf272ee01292b7c" } Frame { msec: 3520 - hash: "10a29af771a5c17b1443b10abd45c9aa" + hash: "01dacbcc21c541e0cbf272ee01292b7c" } Frame { msec: 3536 - hash: "10a29af771a5c17b1443b10abd45c9aa" + hash: "01dacbcc21c541e0cbf272ee01292b7c" } Key { type: 7 @@ -1442,11 +1442,11 @@ VisualTest { } Frame { msec: 3552 - hash: "10a29af771a5c17b1443b10abd45c9aa" + hash: "01dacbcc21c541e0cbf272ee01292b7c" } Frame { msec: 3568 - hash: "10a29af771a5c17b1443b10abd45c9aa" + hash: "01dacbcc21c541e0cbf272ee01292b7c" } Key { type: 6 @@ -1458,27 +1458,27 @@ VisualTest { } Frame { msec: 3584 - hash: "68449dbef331f4bdf4c4bc443ec98e89" + hash: "7b493045fb2b7373525ce570d86542d7" } Frame { msec: 3600 - hash: "68449dbef331f4bdf4c4bc443ec98e89" + hash: "7b493045fb2b7373525ce570d86542d7" } Frame { msec: 3616 - hash: "68449dbef331f4bdf4c4bc443ec98e89" + hash: "7b493045fb2b7373525ce570d86542d7" } Frame { msec: 3632 - hash: "68449dbef331f4bdf4c4bc443ec98e89" + hash: "7b493045fb2b7373525ce570d86542d7" } Frame { msec: 3648 - hash: "68449dbef331f4bdf4c4bc443ec98e89" + hash: "7b493045fb2b7373525ce570d86542d7" } Frame { msec: 3664 - hash: "68449dbef331f4bdf4c4bc443ec98e89" + hash: "7b493045fb2b7373525ce570d86542d7" } Key { type: 6 @@ -1490,7 +1490,7 @@ VisualTest { } Frame { msec: 3680 - hash: "5c773045e3ccab933749a3f6a74dc25a" + hash: "7c11ac5b8dfee4708b7b49c2a1a7db57" } Key { type: 7 @@ -1502,23 +1502,23 @@ VisualTest { } Frame { msec: 3696 - hash: "5c773045e3ccab933749a3f6a74dc25a" + hash: "7c11ac5b8dfee4708b7b49c2a1a7db57" } Frame { msec: 3712 - hash: "5c773045e3ccab933749a3f6a74dc25a" + hash: "7c11ac5b8dfee4708b7b49c2a1a7db57" } Frame { msec: 3728 - hash: "5c773045e3ccab933749a3f6a74dc25a" + hash: "7c11ac5b8dfee4708b7b49c2a1a7db57" } Frame { msec: 3744 - hash: "5c773045e3ccab933749a3f6a74dc25a" + hash: "7c11ac5b8dfee4708b7b49c2a1a7db57" } Frame { msec: 3760 - hash: "5c773045e3ccab933749a3f6a74dc25a" + hash: "7c11ac5b8dfee4708b7b49c2a1a7db57" } Key { type: 7 @@ -1530,39 +1530,39 @@ VisualTest { } Frame { msec: 3776 - hash: "5c773045e3ccab933749a3f6a74dc25a" + hash: "7c11ac5b8dfee4708b7b49c2a1a7db57" } Frame { msec: 3792 - hash: "5c773045e3ccab933749a3f6a74dc25a" + hash: "7c11ac5b8dfee4708b7b49c2a1a7db57" } Frame { msec: 3808 - hash: "5c773045e3ccab933749a3f6a74dc25a" + hash: "7c11ac5b8dfee4708b7b49c2a1a7db57" } Frame { msec: 3824 - hash: "5c773045e3ccab933749a3f6a74dc25a" + hash: "7c11ac5b8dfee4708b7b49c2a1a7db57" } Frame { msec: 3840 - image: "wrap.3.png" + hash: "7c11ac5b8dfee4708b7b49c2a1a7db57" } Frame { msec: 3856 - hash: "5c773045e3ccab933749a3f6a74dc25a" + image: "wrap.4.png" } Frame { msec: 3872 - hash: "5c773045e3ccab933749a3f6a74dc25a" + hash: "7c11ac5b8dfee4708b7b49c2a1a7db57" } Frame { msec: 3888 - hash: "5c773045e3ccab933749a3f6a74dc25a" + hash: "7c11ac5b8dfee4708b7b49c2a1a7db57" } Frame { msec: 3904 - hash: "5c773045e3ccab933749a3f6a74dc25a" + hash: "7c11ac5b8dfee4708b7b49c2a1a7db57" } Key { type: 6 @@ -1574,23 +1574,23 @@ VisualTest { } Frame { msec: 3920 - hash: "f1ef12790a0548cfaa4176680566680d" + hash: "46a6db4f63965f019fc1966e2a6caf98" } Frame { msec: 3936 - hash: "f1ef12790a0548cfaa4176680566680d" + hash: "46a6db4f63965f019fc1966e2a6caf98" } Frame { msec: 3952 - hash: "f1ef12790a0548cfaa4176680566680d" + hash: "46a6db4f63965f019fc1966e2a6caf98" } Frame { msec: 3968 - hash: "f1ef12790a0548cfaa4176680566680d" + hash: "46a6db4f63965f019fc1966e2a6caf98" } Frame { msec: 3984 - hash: "f1ef12790a0548cfaa4176680566680d" + hash: "46a6db4f63965f019fc1966e2a6caf98" } Key { type: 7 @@ -1602,11 +1602,11 @@ VisualTest { } Frame { msec: 4000 - hash: "f1ef12790a0548cfaa4176680566680d" + hash: "46a6db4f63965f019fc1966e2a6caf98" } Frame { msec: 4016 - hash: "f1ef12790a0548cfaa4176680566680d" + hash: "46a6db4f63965f019fc1966e2a6caf98" } Key { type: 6 @@ -1618,15 +1618,15 @@ VisualTest { } Frame { msec: 4032 - hash: "22575a03b4c58e4391845d495c2ca48b" + hash: "abc8cf4650aa07a9a26ad04a082bc269" } Frame { msec: 4048 - hash: "22575a03b4c58e4391845d495c2ca48b" + hash: "abc8cf4650aa07a9a26ad04a082bc269" } Frame { msec: 4064 - hash: "22575a03b4c58e4391845d495c2ca48b" + hash: "abc8cf4650aa07a9a26ad04a082bc269" } Key { type: 7 @@ -1638,7 +1638,7 @@ VisualTest { } Frame { msec: 4080 - hash: "22575a03b4c58e4391845d495c2ca48b" + hash: "abc8cf4650aa07a9a26ad04a082bc269" } Key { type: 6 @@ -1650,19 +1650,19 @@ VisualTest { } Frame { msec: 4096 - hash: "3243dc4562f073136782415365b7b42d" + hash: "23ee54c88cd70b6c66137ce32702cf01" } Frame { msec: 4112 - hash: "3243dc4562f073136782415365b7b42d" + hash: "23ee54c88cd70b6c66137ce32702cf01" } Frame { msec: 4128 - hash: "3243dc4562f073136782415365b7b42d" + hash: "23ee54c88cd70b6c66137ce32702cf01" } Frame { msec: 4144 - hash: "3243dc4562f073136782415365b7b42d" + hash: "23ee54c88cd70b6c66137ce32702cf01" } Key { type: 7 @@ -1674,15 +1674,15 @@ VisualTest { } Frame { msec: 4160 - hash: "3243dc4562f073136782415365b7b42d" + hash: "23ee54c88cd70b6c66137ce32702cf01" } Frame { msec: 4176 - hash: "3243dc4562f073136782415365b7b42d" + hash: "23ee54c88cd70b6c66137ce32702cf01" } Frame { msec: 4192 - hash: "3243dc4562f073136782415365b7b42d" + hash: "23ee54c88cd70b6c66137ce32702cf01" } Key { type: 6 @@ -1694,23 +1694,23 @@ VisualTest { } Frame { msec: 4208 - hash: "44cd04d2a2bf12654cb96ec9af92b9aa" + hash: "dc0899573a995421b57a6689d300a421" } Frame { msec: 4224 - hash: "44cd04d2a2bf12654cb96ec9af92b9aa" + hash: "dc0899573a995421b57a6689d300a421" } Frame { msec: 4240 - hash: "44cd04d2a2bf12654cb96ec9af92b9aa" + hash: "dc0899573a995421b57a6689d300a421" } Frame { msec: 4256 - hash: "44cd04d2a2bf12654cb96ec9af92b9aa" + hash: "dc0899573a995421b57a6689d300a421" } Frame { msec: 4272 - hash: "44cd04d2a2bf12654cb96ec9af92b9aa" + hash: "dc0899573a995421b57a6689d300a421" } Key { type: 6 @@ -1722,7 +1722,7 @@ VisualTest { } Frame { msec: 4288 - hash: "cf1eb35cb9a793769303abee0a2fcad8" + hash: "4d42c63a0324c1573818ebb081d8927f" } Key { type: 7 @@ -1734,15 +1734,15 @@ VisualTest { } Frame { msec: 4304 - hash: "cf1eb35cb9a793769303abee0a2fcad8" + hash: "4d42c63a0324c1573818ebb081d8927f" } Frame { msec: 4320 - hash: "cf1eb35cb9a793769303abee0a2fcad8" + hash: "4d42c63a0324c1573818ebb081d8927f" } Frame { msec: 4336 - hash: "cf1eb35cb9a793769303abee0a2fcad8" + hash: "4d42c63a0324c1573818ebb081d8927f" } Key { type: 7 @@ -1754,23 +1754,23 @@ VisualTest { } Frame { msec: 4352 - hash: "cf1eb35cb9a793769303abee0a2fcad8" + hash: "4d42c63a0324c1573818ebb081d8927f" } Frame { msec: 4368 - hash: "cf1eb35cb9a793769303abee0a2fcad8" + hash: "4d42c63a0324c1573818ebb081d8927f" } Frame { msec: 4384 - hash: "cf1eb35cb9a793769303abee0a2fcad8" + hash: "4d42c63a0324c1573818ebb081d8927f" } Frame { msec: 4400 - hash: "cf1eb35cb9a793769303abee0a2fcad8" + hash: "4d42c63a0324c1573818ebb081d8927f" } Frame { msec: 4416 - hash: "cf1eb35cb9a793769303abee0a2fcad8" + hash: "4d42c63a0324c1573818ebb081d8927f" } Key { type: 6 @@ -1782,15 +1782,15 @@ VisualTest { } Frame { msec: 4432 - hash: "252838a495502ba5b836ffd1b20711f4" + hash: "9d2239e4b71da17a6f8f2ef979f4bf85" } Frame { msec: 4448 - hash: "252838a495502ba5b836ffd1b20711f4" + hash: "9d2239e4b71da17a6f8f2ef979f4bf85" } Frame { msec: 4464 - hash: "252838a495502ba5b836ffd1b20711f4" + hash: "9d2239e4b71da17a6f8f2ef979f4bf85" } Key { type: 7 @@ -1802,23 +1802,23 @@ VisualTest { } Frame { msec: 4480 - hash: "252838a495502ba5b836ffd1b20711f4" + hash: "9d2239e4b71da17a6f8f2ef979f4bf85" } Frame { msec: 4496 - hash: "252838a495502ba5b836ffd1b20711f4" + hash: "9d2239e4b71da17a6f8f2ef979f4bf85" } Frame { msec: 4512 - hash: "252838a495502ba5b836ffd1b20711f4" + hash: "9d2239e4b71da17a6f8f2ef979f4bf85" } Frame { msec: 4528 - hash: "252838a495502ba5b836ffd1b20711f4" + hash: "9d2239e4b71da17a6f8f2ef979f4bf85" } Frame { msec: 4544 - hash: "252838a495502ba5b836ffd1b20711f4" + hash: "9d2239e4b71da17a6f8f2ef979f4bf85" } Key { type: 6 @@ -1830,19 +1830,19 @@ VisualTest { } Frame { msec: 4560 - hash: "4010bb0f50630f067974e6ddb3177693" + hash: "289059d77547c9ec548b33d8bbe9fca9" } Frame { msec: 4576 - hash: "4010bb0f50630f067974e6ddb3177693" + hash: "289059d77547c9ec548b33d8bbe9fca9" } Frame { msec: 4592 - hash: "4010bb0f50630f067974e6ddb3177693" + hash: "289059d77547c9ec548b33d8bbe9fca9" } Frame { msec: 4608 - hash: "4010bb0f50630f067974e6ddb3177693" + hash: "289059d77547c9ec548b33d8bbe9fca9" } Key { type: 7 @@ -1854,19 +1854,19 @@ VisualTest { } Frame { msec: 4624 - hash: "4010bb0f50630f067974e6ddb3177693" + hash: "289059d77547c9ec548b33d8bbe9fca9" } Frame { msec: 4640 - hash: "4010bb0f50630f067974e6ddb3177693" + hash: "289059d77547c9ec548b33d8bbe9fca9" } Frame { msec: 4656 - hash: "4010bb0f50630f067974e6ddb3177693" + hash: "289059d77547c9ec548b33d8bbe9fca9" } Frame { msec: 4672 - hash: "4010bb0f50630f067974e6ddb3177693" + hash: "289059d77547c9ec548b33d8bbe9fca9" } Key { type: 6 @@ -1878,19 +1878,19 @@ VisualTest { } Frame { msec: 4688 - hash: "14dc6ee8cd3b4747650f2a458b42a6e3" + hash: "4b60bfb67c5007b4054241e581ce92ac" } Frame { msec: 4704 - hash: "14dc6ee8cd3b4747650f2a458b42a6e3" + hash: "4b60bfb67c5007b4054241e581ce92ac" } Frame { msec: 4720 - hash: "14dc6ee8cd3b4747650f2a458b42a6e3" + hash: "4b60bfb67c5007b4054241e581ce92ac" } Frame { msec: 4736 - hash: "14dc6ee8cd3b4747650f2a458b42a6e3" + hash: "4b60bfb67c5007b4054241e581ce92ac" } Key { type: 7 @@ -1902,15 +1902,15 @@ VisualTest { } Frame { msec: 4752 - hash: "14dc6ee8cd3b4747650f2a458b42a6e3" + hash: "4b60bfb67c5007b4054241e581ce92ac" } Frame { msec: 4768 - hash: "14dc6ee8cd3b4747650f2a458b42a6e3" + hash: "4b60bfb67c5007b4054241e581ce92ac" } Frame { msec: 4784 - hash: "14dc6ee8cd3b4747650f2a458b42a6e3" + hash: "4b60bfb67c5007b4054241e581ce92ac" } Key { type: 6 @@ -1922,11 +1922,11 @@ VisualTest { } Frame { msec: 4800 - image: "wrap.4.png" + hash: "dbabce81e44f912d6a30ff4cc3289da8" } Frame { msec: 4816 - hash: "7d4a56854715772c92706522d2dcac56" + image: "wrap.5.png" } Key { type: 7 @@ -1938,19 +1938,19 @@ VisualTest { } Frame { msec: 4832 - hash: "7d4a56854715772c92706522d2dcac56" + hash: "dbabce81e44f912d6a30ff4cc3289da8" } Frame { msec: 4848 - hash: "7d4a56854715772c92706522d2dcac56" + hash: "dbabce81e44f912d6a30ff4cc3289da8" } Frame { msec: 4864 - hash: "7d4a56854715772c92706522d2dcac56" + hash: "dbabce81e44f912d6a30ff4cc3289da8" } Frame { msec: 4880 - hash: "7d4a56854715772c92706522d2dcac56" + hash: "dbabce81e44f912d6a30ff4cc3289da8" } Key { type: 6 @@ -1962,19 +1962,19 @@ VisualTest { } Frame { msec: 4896 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 4912 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 4928 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 4944 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Key { type: 7 @@ -1986,482 +1986,482 @@ VisualTest { } Frame { msec: 4960 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 4976 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 4992 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5008 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5024 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5040 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5056 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5072 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5088 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5104 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5120 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5136 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5152 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5168 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5184 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5200 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5216 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5232 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5248 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5264 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5280 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5296 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5312 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5328 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5344 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5360 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5376 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5392 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5408 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5424 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5440 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5456 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5472 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5488 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5504 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5520 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5536 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5552 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5568 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5584 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5600 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5616 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5632 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5648 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5664 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5680 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5696 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5712 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5728 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5744 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5760 - image: "wrap.5.png" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5776 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + image: "wrap.6.png" } Frame { msec: 5792 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5808 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5824 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5840 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5856 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5872 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5888 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5904 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5920 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5936 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5952 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5968 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5984 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6000 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6016 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6032 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6048 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6064 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6080 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6096 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6112 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6128 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6144 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6160 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6176 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6192 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6208 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6224 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6240 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6256 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6272 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6288 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6304 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6320 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6336 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6352 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6368 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6384 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6400 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6416 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6432 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6448 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6464 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6480 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6496 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6512 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6528 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6544 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6560 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6576 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6592 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6608 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6624 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6640 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6656 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6672 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6688 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6704 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6720 - image: "wrap.6.png" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6736 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + image: "wrap.7.png" } Frame { msec: 6752 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6768 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6784 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6800 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6816 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6832 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6848 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6864 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } } diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.0.png index 1d96795..b65bc37 100644 Binary files a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.0.png and b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.0.png differ diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.1.png index a3a9bfa..ebaa011 100644 Binary files a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.1.png and b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.1.png differ diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.2.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.2.png index b50028c..57ee370 100644 Binary files a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.2.png and b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.2.png differ diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.3.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.3.png index 1c4876e..4b70b4a 100644 Binary files a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.3.png and b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.3.png differ diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.4.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.4.png index 9d110cb..18ae753 100644 Binary files a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.4.png and b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.4.png differ diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.5.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.5.png index 9289dc0..2b463f0 100644 Binary files a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.5.png and b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.5.png differ diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.qml index bd4af6a..6b8ba9b 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.qml @@ -6,115 +6,115 @@ VisualTest { } Frame { msec: 16 - hash: "c0ffaa97d1be341fafafc18762f5cb67" + image: "cursorDelegate.0.png" } Frame { msec: 32 - hash: "c0ffaa97d1be341fafafc18762f5cb67" + hash: "a7af287992f894f9cf76e834b922f5b3" } Frame { msec: 48 - hash: "c0ffaa97d1be341fafafc18762f5cb67" + hash: "a7af287992f894f9cf76e834b922f5b3" } Frame { msec: 64 - hash: "c0ffaa97d1be341fafafc18762f5cb67" + hash: "a7af287992f894f9cf76e834b922f5b3" } Frame { msec: 80 - hash: "c0ffaa97d1be341fafafc18762f5cb67" + hash: "a7af287992f894f9cf76e834b922f5b3" } Frame { msec: 96 - hash: "c0ffaa97d1be341fafafc18762f5cb67" + hash: "a7af287992f894f9cf76e834b922f5b3" } Frame { msec: 112 - hash: "c0ffaa97d1be341fafafc18762f5cb67" + hash: "a7af287992f894f9cf76e834b922f5b3" } Frame { msec: 128 - hash: "c0ffaa97d1be341fafafc18762f5cb67" + hash: "a7af287992f894f9cf76e834b922f5b3" } Frame { msec: 144 - hash: "c0ffaa97d1be341fafafc18762f5cb67" + hash: "a7af287992f894f9cf76e834b922f5b3" } Frame { msec: 160 - hash: "c0ffaa97d1be341fafafc18762f5cb67" + hash: "a7af287992f894f9cf76e834b922f5b3" } Frame { msec: 176 - hash: "c0ffaa97d1be341fafafc18762f5cb67" + hash: "a7af287992f894f9cf76e834b922f5b3" } Frame { msec: 192 - hash: "c0ffaa97d1be341fafafc18762f5cb67" + hash: "a7af287992f894f9cf76e834b922f5b3" } Frame { msec: 208 - hash: "c0ffaa97d1be341fafafc18762f5cb67" + hash: "a7af287992f894f9cf76e834b922f5b3" } Frame { msec: 224 - hash: "c0ffaa97d1be341fafafc18762f5cb67" + hash: "a7af287992f894f9cf76e834b922f5b3" } Frame { msec: 240 - hash: "c0ffaa97d1be341fafafc18762f5cb67" + hash: "a7af287992f894f9cf76e834b922f5b3" } Frame { msec: 256 - hash: "c0ffaa97d1be341fafafc18762f5cb67" + hash: "a7af287992f894f9cf76e834b922f5b3" } Frame { msec: 272 - hash: "c0ffaa97d1be341fafafc18762f5cb67" + hash: "a7af287992f894f9cf76e834b922f5b3" } Frame { msec: 288 - hash: "c0ffaa97d1be341fafafc18762f5cb67" + hash: "a7af287992f894f9cf76e834b922f5b3" } Frame { msec: 304 - hash: "c0ffaa97d1be341fafafc18762f5cb67" + hash: "a7af287992f894f9cf76e834b922f5b3" } Frame { msec: 320 - hash: "c0ffaa97d1be341fafafc18762f5cb67" + hash: "a7af287992f894f9cf76e834b922f5b3" } Frame { msec: 336 - hash: "c0ffaa97d1be341fafafc18762f5cb67" + hash: "a7af287992f894f9cf76e834b922f5b3" } Frame { msec: 352 - hash: "c0ffaa97d1be341fafafc18762f5cb67" + hash: "a7af287992f894f9cf76e834b922f5b3" } Frame { msec: 368 - hash: "c0ffaa97d1be341fafafc18762f5cb67" + hash: "a7af287992f894f9cf76e834b922f5b3" } Frame { msec: 384 - hash: "c0ffaa97d1be341fafafc18762f5cb67" + hash: "a7af287992f894f9cf76e834b922f5b3" } Frame { msec: 400 - hash: "c0ffaa97d1be341fafafc18762f5cb67" + hash: "a7af287992f894f9cf76e834b922f5b3" } Frame { msec: 416 - hash: "c0ffaa97d1be341fafafc18762f5cb67" + hash: "a7af287992f894f9cf76e834b922f5b3" } Frame { msec: 432 - hash: "c0ffaa97d1be341fafafc18762f5cb67" + hash: "a7af287992f894f9cf76e834b922f5b3" } Frame { msec: 448 - hash: "c0ffaa97d1be341fafafc18762f5cb67" + hash: "a7af287992f894f9cf76e834b922f5b3" } Key { type: 6 @@ -126,23 +126,23 @@ VisualTest { } Frame { msec: 464 - hash: "eadbfc95de35a0d1880809b2bbaec562" + hash: "74b6ebfbe8246f0b2b43f88d9f6028d1" } Frame { msec: 480 - hash: "eadbfc95de35a0d1880809b2bbaec562" + hash: "74b6ebfbe8246f0b2b43f88d9f6028d1" } Frame { msec: 496 - hash: "eadbfc95de35a0d1880809b2bbaec562" + hash: "74b6ebfbe8246f0b2b43f88d9f6028d1" } Frame { msec: 512 - hash: "eadbfc95de35a0d1880809b2bbaec562" + hash: "74b6ebfbe8246f0b2b43f88d9f6028d1" } Frame { msec: 528 - hash: "227cbfe5fc07906060951e19ebb3ad30" + hash: "0f0e9ced5d2f9f20a2b5f1b5bde0be62" } Key { type: 7 @@ -154,19 +154,19 @@ VisualTest { } Frame { msec: 544 - hash: "066256a59ad290b3725193955e3c48a6" + hash: "bec7fff73d6d869d2d15b3ea35fa0605" } Frame { msec: 560 - hash: "6709f77cbcde82886d1c5a07f06b55a5" + hash: "e3afffc91ed0a78a0022421e6d1bd0d2" } Frame { msec: 576 - hash: "da0028083048837b4756a2d3ff468378" + hash: "45f44411121d335ed7a844803313e566" } Frame { msec: 592 - hash: "5f265351bed34357d603794d868dbcbc" + hash: "b951279da53fe76ab62ca9837ecbd7a6" } Key { type: 6 @@ -178,19 +178,19 @@ VisualTest { } Frame { msec: 608 - hash: "3b8030849229e90b69842219e8b2d3f1" + hash: "b5678202f08099b09ce88cef5eeea20a" } Frame { msec: 624 - hash: "0b08356d9b00313b2d892175dd93095a" + hash: "93f6663d083a2bd3b4079241f3fc0159" } Frame { msec: 640 - hash: "4780555b277d65e3e4c0c60817b63eb4" + hash: "8c802943d3030214cb7af7fd1db1c813" } Frame { msec: 656 - hash: "6b31c8f0569d01d97a371423a0f379c0" + hash: "01396c0332523ba2a8971a99c6962516" } Key { type: 7 @@ -202,19 +202,19 @@ VisualTest { } Frame { msec: 672 - hash: "e9a5695636f7957d33f1c902a37a605d" + hash: "fc5dd253219d1a8aca7fcf31be0e7d69" } Frame { msec: 688 - hash: "27a783cd4ef5caab382721a98f7966da" + hash: "545071a58d8db4f73e1cb6981e9ec62e" } Frame { msec: 704 - hash: "c50598c0a5f8d501fd3ac9cddecee506" + hash: "13bc1aa8ce4fc3d9ba9a6c3046e14c92" } Frame { msec: 720 - hash: "2a2d0e202bc3bf7991409391a2ce2934" + hash: "ba7d13545fb7384dcb3edd32979c9442" } Key { type: 6 @@ -226,19 +226,19 @@ VisualTest { } Frame { msec: 736 - hash: "2d97b8503c739b210615971ad08c2714" + hash: "8f9e1abd8eb2d072907b910630e93c9a" } Frame { msec: 752 - hash: "f27fd7f1d8c6dfb7393ab0d39ed5cd02" + hash: "003d0e4a01909aa51cb1967738383ede" } Frame { msec: 768 - hash: "32d256543e3e1ba722860e5143af9f09" + hash: "223cce18cef44b3945d0a1d45554c5c1" } Frame { msec: 784 - hash: "9123b724613ef4d3d8431afde6e9eb6b" + hash: "fcd7f862bdce75d7e6df574ff0146ca6" } Key { type: 7 @@ -250,23 +250,23 @@ VisualTest { } Frame { msec: 800 - hash: "be5249a7effc94ec2be3d6053eba7b45" + hash: "21f5e3696987222106b00f0efe3bb165" } Frame { msec: 816 - hash: "57f2c119c9eca3d1e4acd2f775af5207" + hash: "6380ce26303da8180dff8fcc88caaf1d" } Frame { msec: 832 - hash: "23b79a2630448e99f27a657fd9789354" + hash: "52bfa995405a3d6523d97b2c36428d89" } Frame { msec: 848 - hash: "c8faab137cbc014aef5e3212889d00b8" + hash: "7169d69c2adb50bf80c075e30eb8e965" } Frame { msec: 864 - hash: "c9616f6fde5d6a8ecf346ece9952f09b" + hash: "f5ad55885a4fc2b47a5420e9e0d7c59c" } Key { type: 6 @@ -278,15 +278,15 @@ VisualTest { } Frame { msec: 880 - hash: "11a861ca71d789e3d97d599608a793be" + hash: "831081f829df0a226c75389bc457a768" } Frame { msec: 896 - hash: "5a6c57df0c33b83985aeb194f291ad6c" + hash: "2306a9c9cb570bc922f120f2f63e26e4" } Frame { msec: 912 - hash: "2c047359db6946cb740462b0d6c695be" + hash: "23d6728fe34436e53a449e26962c3ad5" } Key { type: 7 @@ -298,23 +298,23 @@ VisualTest { } Frame { msec: 928 - hash: "d0bb54caf661be021be8fe2691de24e8" + hash: "db2de48337701cbb36a14e32f1846683" } Frame { msec: 944 - hash: "80f0a60239f4d81b18b9cb3e80faf346" + hash: "04bb83a694d293fd4ba956fc79db79e7" } Frame { msec: 960 - image: "cursorDelegate.0.png" + hash: "7a1a71b2d7e42934163990d5c011c464" } Frame { msec: 976 - hash: "c526315dd5eec117266c68a7b6b64a3f" + image: "cursorDelegate.1.png" } Frame { msec: 992 - hash: "c526315dd5eec117266c68a7b6b64a3f" + hash: "af99069cdddfa9d099fbe25ba586e138" } Key { type: 6 @@ -326,15 +326,15 @@ VisualTest { } Frame { msec: 1008 - hash: "c526315dd5eec117266c68a7b6b64a3f" + hash: "af99069cdddfa9d099fbe25ba586e138" } Frame { msec: 1024 - hash: "c526315dd5eec117266c68a7b6b64a3f" + hash: "af99069cdddfa9d099fbe25ba586e138" } Frame { msec: 1040 - hash: "c526315dd5eec117266c68a7b6b64a3f" + hash: "af99069cdddfa9d099fbe25ba586e138" } Key { type: 7 @@ -346,23 +346,23 @@ VisualTest { } Frame { msec: 1056 - hash: "c526315dd5eec117266c68a7b6b64a3f" + hash: "af99069cdddfa9d099fbe25ba586e138" } Frame { msec: 1072 - hash: "5f6cc0c97e4748aeeaa4a00c8a8c8928" + hash: "20f1db4245d1689e980371d7b1bcb903" } Frame { msec: 1088 - hash: "b1d71160d9a8a8edeb4cf7e00df36cfc" + hash: "6a3629223845d352ba02e3ad8569f698" } Frame { msec: 1104 - hash: "5bfd4269145cc0962e0fa9c294e8f5aa" + hash: "ee3dd4535fcf24249c41ebebb5f4fca6" } Frame { msec: 1120 - hash: "4e22c95802d83f0099017c6be9d93214" + hash: "7bf5df6a807da0c8d316420ced34e267" } Key { type: 6 @@ -374,23 +374,23 @@ VisualTest { } Frame { msec: 1136 - hash: "0f31d8f4867af7c2f4fb8e86aa077afd" + hash: "4f5ce98428d5fba11a6322f88cab14c3" } Frame { msec: 1152 - hash: "21a552133320008a4d4f77752a3cfb55" + hash: "14406e8d0e120a0f30864fa8793f2e8d" } Frame { msec: 1168 - hash: "3a30a4a785de21da0ff939e303202a81" + hash: "6e891d584ce4f636708cee1111193878" } Frame { msec: 1184 - hash: "b0e3ed2468538aacec354cb96d90c362" + hash: "cd6bbc72108cfffd043a31d0d3655851" } Frame { msec: 1200 - hash: "56bf6e3fe47e52046b443481fc17a3ec" + hash: "d4069e606ab2b10c90e6f567be462c10" } Key { type: 7 @@ -402,27 +402,27 @@ VisualTest { } Frame { msec: 1216 - hash: "ce80807cde9b902ebf33281fce50d9fb" + hash: "de8e00d6116b1aa900478a41c7ac78f1" } Frame { msec: 1232 - hash: "ed67b18b5f7b90d3bcd9f662e70dc7b8" + hash: "5a0c4e31eb9ecb2ffc9380d474861846" } Frame { msec: 1248 - hash: "930950ce5c6b12da47eea1b92d5176eb" + hash: "bbacdb359c6206b50a859169b106ec92" } Frame { msec: 1264 - hash: "5a2eeca0f1533d323cc4d7ffbb7ad6aa" + hash: "c4f4ed5a4842f1bbdda67a27d74fd5f4" } Frame { msec: 1280 - hash: "3f7f3ef2d4c1353dfe7027930505f4fd" + hash: "4deb6d0a83b14abef80f2bfa0491cbd0" } Frame { msec: 1296 - hash: "1a3a781ac5a1e90a4415944e0c54ea4e" + hash: "9caca7068ce5b289d70c39667e87a57f" } Key { type: 6 @@ -434,7 +434,7 @@ VisualTest { } Frame { msec: 1312 - hash: "d11dae0dd461fc82a73bf319905320d4" + hash: "e3ca7a8a860efc3811b8befe0a97d7f1" } Key { type: 6 @@ -446,19 +446,19 @@ VisualTest { } Frame { msec: 1328 - hash: "00957049ea51866138cfc33451f12e17" + hash: "ddb3dcb40f412c087d0ae21b5a8e47aa" } Frame { msec: 1344 - hash: "386847af9b173db7ef1554d2c85c748e" + hash: "325d8356c3e14467c54d03d096a3c1a5" } Frame { msec: 1360 - hash: "4b715060d29d6228a40217bc769fc140" + hash: "83f4c541b94180863e538e6c0a0e1ae0" } Frame { msec: 1376 - hash: "e58a9a3623afa08819351c22435ba03f" + hash: "16623dc34067800f3c7d6aabe1076927" } Key { type: 6 @@ -470,31 +470,31 @@ VisualTest { } Frame { msec: 1392 - hash: "6378e3faf5578818fc282de2a077da59" + hash: "e7319b080b621c5d176d6913cd9a8f7e" } Frame { msec: 1408 - hash: "07efb3687d29e65680e1cc831762348f" + hash: "353a200418b2cc0fbe925329224e658a" } Frame { msec: 1424 - hash: "5292e7c95b3c5b11e4088b5010984257" + hash: "98fd3f1fc108de1d78f07587f9e94ec4" } Frame { msec: 1440 - hash: "ffe95603f5fe9d63abb3b77c399c3b11" + hash: "f75fbda5a1403f7b1dd8e9d05e30ebeb" } Frame { msec: 1456 - hash: "ad7cb73893c27b69704c5b821738a3c1" + hash: "c2742ff9a04bbae6c6de13f08d514913" } Frame { msec: 1472 - hash: "e25971a61888ded93b651891ec9661b0" + hash: "a73b65c18ba10e6b6d310fc325d7ccb2" } Frame { msec: 1488 - hash: "80f90b3623bf34544438dd00abee7037" + hash: "bbe72b26a6f3f518a3c8b6cd9e8dbfd1" } Key { type: 7 @@ -506,51 +506,51 @@ VisualTest { } Frame { msec: 1504 - hash: "797dd70572e532d4acb374230b2c8efe" + hash: "679205439a359f3ffb05f631a1979596" } Frame { msec: 1520 - hash: "0673db1283d874a5711520f272572cf8" + hash: "7ada5f6a58a6a7f9a3b4199a412fccfd" } Frame { msec: 1536 - hash: "fbc8434912f08a93b5f884258bc754b7" + hash: "66749c0e5b97cec02f4908a709201604" } Frame { msec: 1552 - hash: "e41ebaf8f2114a6e8f38f731ea164e8a" + hash: "373bfac053f5cfeceabe2979f3e6f444" } Frame { msec: 1568 - hash: "d14bdb5bf1b4756166ecf6f3255bf3cc" + hash: "c7ab2bcdcd1b7fd25ac775c4dd382635" } Frame { msec: 1584 - hash: "5fb04569aa0e530b898a3c11725b947e" + hash: "3116b1a0cf1724bdae2cb71b9e15c73e" } Frame { msec: 1600 - hash: "03d24457fae160864fec985765f6d8d1" + hash: "9bdc4513c30bf2d1eca61317cc22ebaa" } Frame { msec: 1616 - hash: "56dad740bb9032d113a0dacbe986c9c0" + hash: "bbecf871ff569ac1020272c1ccc9aa14" } Frame { msec: 1632 - hash: "70d9acda83aa7db59780cf56f03e38ec" + hash: "beef5a84dcc7794cf0aabfc8b7f811bc" } Frame { msec: 1648 - hash: "a272e39bc1af0f4d1bab9c3f64e746e2" + hash: "2db7161f3591ef0b3f1e3cb2aa357c8b" } Frame { msec: 1664 - hash: "cf0379de604b9bb33b4456cb89e09afd" + hash: "b8b5ffef5e52a8ae94ddb5ec3328fa0e" } Frame { msec: 1680 - hash: "332e7a10d75c0d21a24fc8be34269629" + hash: "b65c4657ffb97a59455f2c3e23e3eb51" } Key { type: 6 @@ -562,31 +562,31 @@ VisualTest { } Frame { msec: 1696 - hash: "c07eb71d90e74393205338bc946c1e43" + hash: "9702981b8eb5f035f2f4da6708ad1a92" } Frame { msec: 1712 - hash: "984477de7c103ff3aebc2634785dce09" + hash: "a6f46dd869daf69c5a5a3c887ae35a05" } Frame { msec: 1728 - hash: "958f79dd7c57387042746df2ca01779e" + hash: "902c0f174b16b1b0d419c13220937e06" } Frame { msec: 1744 - hash: "53bb3f0718d6333ca40dc279b6300b85" + hash: "97a5ea7449a1f313d0d5e818edc29bf6" } Frame { msec: 1760 - hash: "c16877cb99997cc47f1fff5af1d22bd7" + hash: "d5b69638452ea2260861c17991fc8bef" } Frame { msec: 1776 - hash: "dea3e1eb6c72f0d37398e3e301a23c19" + hash: "5fa21c53d65b078d1b30830d99a0fbaf" } Frame { msec: 1792 - hash: "6bb7918f0794e6a7cbdb8847cdcf6e35" + hash: "668de1d2fa5780f5088637d919db0a0d" } Key { type: 7 @@ -598,19 +598,19 @@ VisualTest { } Frame { msec: 1808 - hash: "6858cd874abb1ed2fec34862f76044fa" + hash: "1989592754c28456aa917562fa3620bd" } Frame { msec: 1824 - hash: "47b546ea0d5b1d4573991d4738c37f4d" + hash: "89cd0ef7c366bbcee8e4404e9a2285a7" } Frame { msec: 1840 - hash: "6c9e636dee2bb5f2a72a2c08ab9fb970" + hash: "d062d4b132ee3086a00220d47e8907fc" } Frame { msec: 1856 - hash: "42c2b2a7f41c88ae7bb19403e2460a17" + hash: "198bd9fc763c70fb84bdae122f0bdd8b" } Key { type: 7 @@ -622,7 +622,7 @@ VisualTest { } Frame { msec: 1872 - hash: "80b7986af693b89dc4d4f9533dae85cb" + hash: "304f7f6cef5b09c09db1284b8095e9a2" } Key { type: 6 @@ -634,43 +634,43 @@ VisualTest { } Frame { msec: 1888 - hash: "631bea21dde9b7647f5843bc3513f3ba" + hash: "565003fef7b9810ffe95c3bbeeda5bbc" } Frame { msec: 1904 - hash: "cc40335abbea0d589180096f7d8f5426" + hash: "2fa85a19ba2bb7d04264a246c4982eb4" } Frame { msec: 1920 - image: "cursorDelegate.1.png" + hash: "7be44eca358924dc11c5123e406f1c99" } Frame { msec: 1936 - hash: "1c03b5384a889fe233eb1c6d14a55f36" + image: "cursorDelegate.2.png" } Frame { msec: 1952 - hash: "7762cc4e6cf681311f5296de698c950b" + hash: "a08502b3fbb425c7b1cad93e4bc5701e" } Frame { msec: 1968 - hash: "678eed1d1fec30b02156d690777397c1" + hash: "fba3a88b7fe6f7583daf07db78f3598c" } Frame { msec: 1984 - hash: "96f51fee5c7baf78a3465420d63a9e5f" + hash: "509d75aa56bcdb6718c18b56e138ef3c" } Frame { msec: 2000 - hash: "96f51fee5c7baf78a3465420d63a9e5f" + hash: "509d75aa56bcdb6718c18b56e138ef3c" } Frame { msec: 2016 - hash: "96f51fee5c7baf78a3465420d63a9e5f" + hash: "509d75aa56bcdb6718c18b56e138ef3c" } Frame { msec: 2032 - hash: "96f51fee5c7baf78a3465420d63a9e5f" + hash: "509d75aa56bcdb6718c18b56e138ef3c" } Key { type: 7 @@ -682,7 +682,7 @@ VisualTest { } Frame { msec: 2048 - hash: "96f51fee5c7baf78a3465420d63a9e5f" + hash: "509d75aa56bcdb6718c18b56e138ef3c" } Key { type: 7 @@ -694,27 +694,27 @@ VisualTest { } Frame { msec: 2064 - hash: "678eed1d1fec30b02156d690777397c1" + hash: "fba3a88b7fe6f7583daf07db78f3598c" } Frame { msec: 2080 - hash: "7762cc4e6cf681311f5296de698c950b" + hash: "a08502b3fbb425c7b1cad93e4bc5701e" } Frame { msec: 2096 - hash: "1c03b5384a889fe233eb1c6d14a55f36" + hash: "86ad5a9e06d19ea79e0fc9f7f36cdb0f" } Frame { msec: 2112 - hash: "2cd264339edc0338fc610e0d766425cc" + hash: "7be44eca358924dc11c5123e406f1c99" } Frame { msec: 2128 - hash: "cc40335abbea0d589180096f7d8f5426" + hash: "2fa85a19ba2bb7d04264a246c4982eb4" } Frame { msec: 2144 - hash: "631bea21dde9b7647f5843bc3513f3ba" + hash: "565003fef7b9810ffe95c3bbeeda5bbc" } Key { type: 6 @@ -726,27 +726,27 @@ VisualTest { } Frame { msec: 2160 - hash: "c5199c908df1f550d7c4f133eb926134" + hash: "39c81c6efdbc32b6e0378810404bef2c" } Frame { msec: 2176 - hash: "483eca22c50750e7591785ed60813d1f" + hash: "756f36cf41c2bae3a8a8716701e55e37" } Frame { msec: 2192 - hash: "4091de379d8f6ccc7f19ea39f6c7993a" + hash: "fb09d44a5a5b5b795d562512e9547301" } Frame { msec: 2208 - hash: "cd58c0d4f7248315a787542b0edcb4fb" + hash: "183538d04cf009f100a1e49a3229c143" } Frame { msec: 2224 - hash: "458895f9ede4d56e0b851c6ed124405d" + hash: "2ec91bfdb0f106a526f6bde3eb0ed7ce" } Frame { msec: 2240 - hash: "29a28a97fc78a1b01252b852fb0446e2" + hash: "f34175acc261ad79bc9d2083af04ae10" } Key { type: 7 @@ -758,31 +758,31 @@ VisualTest { } Frame { msec: 2256 - hash: "4fd9f22ad06e02b68319c298c2286e36" + hash: "39a59b2e9e0bee87d3ba50e1408bea1c" } Frame { msec: 2272 - hash: "a588e9dbeabd7519cd0cf2d26a123529" + hash: "db61ba19d56b69d148aeb182de596713" } Frame { msec: 2288 - hash: "bb74f706477e277284fad50752f078b5" + hash: "e0b07106a5adc1603788444d48b9c3db" } Frame { msec: 2304 - hash: "38f16a7deeaea6828edd15b00024fc19" + hash: "1dd5625fb6a0ddbaa3919a1702695e9c" } Frame { msec: 2320 - hash: "30c4aa33a6672f4df24186ad1e28bcf9" + hash: "d7d39e8f717bab17aaf8a12e4f9e0dfc" } Frame { msec: 2336 - hash: "7f2ac0854ddbcca94a2ad160ead5d4d3" + hash: "d7a226b40a049dee56755af9206246b4" } Frame { msec: 2352 - hash: "e1c083d0235ff5a2e002ce78f43009b0" + hash: "37d2d2830f6ae6bf0c8fb29c5d4f521a" } Key { type: 6 @@ -802,23 +802,23 @@ VisualTest { } Frame { msec: 2368 - hash: "eaee6483a2a4a0b09a8e40bb1785a498" + hash: "21008b3a5179e25f9b132a4c05b8b8c4" } Frame { msec: 2384 - hash: "26530bded6311640c4d3f6d1485fa7d3" + hash: "a6f05fb5206a456bea790ba7ba31868c" } Frame { msec: 2400 - hash: "e54102edbf6cc0c9a32b09858f760ee5" + hash: "754e2fca1b3ed5ee9875aafb1a0c62d3" } Frame { msec: 2416 - hash: "27434828de3ba8f6a3b83f042b70eb8b" + hash: "75d1ae9c60573f9e27cd7c2d1706cbfc" } Frame { msec: 2432 - hash: "fdf68e988b988d068ea78a5a09ef349e" + hash: "c78608cde907bc09760d858795b43bbf" } Key { type: 6 @@ -830,23 +830,23 @@ VisualTest { } Frame { msec: 2448 - hash: "0e1e9a2cf891cf65f30ead539becf408" + hash: "348438b012690f63956e6a865c4173c5" } Frame { msec: 2464 - hash: "46602c03632f6a47c9d523e1ea61baaf" + hash: "b0c970656fdb5af48efc4bf0e1879f36" } Frame { msec: 2480 - hash: "5c758ee2aa3f92b6506533f6d615bc20" + hash: "7291a68c8e790f58e2440dfbe896c36d" } Frame { msec: 2496 - hash: "25edbdaae72e03426c9dfa75c08c33e6" + hash: "9bcbf9f7b35987c3acbd80031a688279" } Frame { msec: 2512 - hash: "a4bd11f15594932b996a069f3098c596" + hash: "48a00bd3f844e863338898bd28d845a4" } Key { type: 7 @@ -858,23 +858,23 @@ VisualTest { } Frame { msec: 2528 - hash: "e4090b920ce2456149155f61fb586a6f" + hash: "dc5f63ee9e8d50f744f7b375a52e32c3" } Frame { msec: 2544 - hash: "ce71f4dc76f90fa300d715ed77e8a5a8" + hash: "f52d2f475a335a75fad0a0f84e812809" } Frame { msec: 2560 - hash: "59414694d42a3942c4832fd7a3e93145" + hash: "bc54cefc8f0b84fc2432b0fb01203b9c" } Frame { msec: 2576 - hash: "1213fc9d9c1d58ceefc213a59f970679" + hash: "e6f14d1181a0db90d2c2891fd6e82883" } Frame { msec: 2592 - hash: "bbfa8471ab3fa5fc146946a6c8e0ce86" + hash: "1edc2fff7b3d76bbe2615810a5d15d41" } Key { type: 6 @@ -886,15 +886,15 @@ VisualTest { } Frame { msec: 2608 - hash: "22a49c3b5234b4b7a2b935d58027f834" + hash: "5bc156937a29989a3a39761b58958fbd" } Frame { msec: 2624 - hash: "7b81c14d5350fb55775c1cb0f3945c46" + hash: "071d45235a669e870356efc60ba8016c" } Frame { msec: 2640 - hash: "8ebf266de0df228e47cc6e5a8758a6ea" + hash: "1d588fb1f8321e4b437f924077fa7d60" } Key { type: 7 @@ -906,23 +906,23 @@ VisualTest { } Frame { msec: 2656 - hash: "6344eb333dc28672f863bcb7ca5d6cfe" + hash: "ca9aff6590dda45a66cdca601dccaf59" } Frame { msec: 2672 - hash: "8efc9b4a6c27b8918cba629a5a1c0f24" + hash: "2553146fff0d367cc6fa2d11f0a5c83a" } Frame { msec: 2688 - hash: "b586c24ce0c04391a9095c0ac4b7a05a" + hash: "05bd919cd91ff449027b188d9a24b61f" } Frame { msec: 2704 - hash: "191413fe51a6887ae92c135252fdeeae" + hash: "35d6ce9ecef79d006d6416c3b0d75e79" } Frame { msec: 2720 - hash: "fc0b37abf12827af41e7037eab8ba5c8" + hash: "1459a2410a971e344d4dacccff1eb7da" } Key { type: 6 @@ -934,19 +934,19 @@ VisualTest { } Frame { msec: 2736 - hash: "5efe28d02b93e094192d7fd6fe753acd" + hash: "bd04cc87db0138b57bf0feeafa7630f5" } Frame { msec: 2752 - hash: "dadc1f7b14fbf9f8a174821c4197da46" + hash: "81521187d5d88b62f4f7578ea4ee5f68" } Frame { msec: 2768 - hash: "124deac57a3eeaef4cb3c0c802bacc05" + hash: "f2f8d1e8232787da1e36d7e8a27b6d93" } Frame { msec: 2784 - hash: "e022a6d66a7b37d72885a7a7f6919433" + hash: "a5dbd1f572419ca4a4b91629e522867f" } Key { type: 7 @@ -958,75 +958,75 @@ VisualTest { } Frame { msec: 2800 - hash: "5faa6543469753948b1636351d044329" + hash: "23ab256301d7190f56c4f0af7f57bcc2" } Frame { msec: 2816 - hash: "a7dcf5a0b9bb00105eed173b498cb95c" + hash: "3a106a01b1cf6b53b5f8721415538f15" } Frame { msec: 2832 - hash: "29ac83d169af2c74ffd134d771c88718" + hash: "881f4de48cf79636f5cb292f4cacf842" } Frame { msec: 2848 - hash: "0a04648fdc90ec86fb55ad3a165573c4" + hash: "4abe8abf4f29a31220c03af143ef9978" } Frame { msec: 2864 - hash: "d699c713ba939612f1e552e48db19b18" + hash: "50db0e06ceb12795d3e11b2c4a04df9c" } Frame { msec: 2880 - image: "cursorDelegate.2.png" + hash: "39f759d5b58ffdaa79d438f932a72582" } Frame { msec: 2896 - hash: "adf564652cfae394869755ff2fe5b534" + image: "cursorDelegate.3.png" } Frame { msec: 2912 - hash: "d1453f663217ee45a8462b7d077d7f6a" + hash: "0cf83e3a000b8ae6a21ef64e5470430f" } Frame { msec: 2928 - hash: "9f1461d63ccc49f83e58245ba75685e1" + hash: "07116cd7cf46fc692542ac57c3e30aea" } Frame { msec: 2944 - hash: "8cece1543e7e9190eefaa92c2024cbd1" + hash: "bd92a36fad90de909b5a29a6fead2160" } Frame { msec: 2960 - hash: "555abf8bc3fdb1eef85b1e4bd54932a3" + hash: "95c4d0cc52903dc70c9118e26cd58b7b" } Frame { msec: 2976 - hash: "7fc65284b99fc548de0985d94a145fa7" + hash: "cb6ca047657a99dbbb037c1c45b40866" } Frame { msec: 2992 - hash: "7fc65284b99fc548de0985d94a145fa7" + hash: "cb6ca047657a99dbbb037c1c45b40866" } Frame { msec: 3008 - hash: "7fc65284b99fc548de0985d94a145fa7" + hash: "cb6ca047657a99dbbb037c1c45b40866" } Frame { msec: 3024 - hash: "7fc65284b99fc548de0985d94a145fa7" + hash: "cb6ca047657a99dbbb037c1c45b40866" } Frame { msec: 3040 - hash: "7fc65284b99fc548de0985d94a145fa7" + hash: "cb6ca047657a99dbbb037c1c45b40866" } Frame { msec: 3056 - hash: "7fc65284b99fc548de0985d94a145fa7" + hash: "cb6ca047657a99dbbb037c1c45b40866" } Frame { msec: 3072 - hash: "555abf8bc3fdb1eef85b1e4bd54932a3" + hash: "95c4d0cc52903dc70c9118e26cd58b7b" } Key { type: 6 @@ -1038,23 +1038,23 @@ VisualTest { } Frame { msec: 3088 - hash: "996da2eff9302908a55308dbcc8fb3c2" + hash: "f9e0bd08b722c16493a8886a19920dda" } Frame { msec: 3104 - hash: "6ccc70f6120acb53152b71bcf95514ca" + hash: "0636b7c5cc215882c60b50f62133c715" } Frame { msec: 3120 - hash: "51a1b8e79d209643d55d4cecc6a70ed0" + hash: "150b5a2f2e916b7023764c481c768492" } Frame { msec: 3136 - hash: "944dc7026c6487838ede9ef94003ec90" + hash: "14bc879f562ace9d2d1a3f3980a72e1f" } Frame { msec: 3152 - hash: "4abbd51b620ac4ea91af95bc2d0881d7" + hash: "2bdc09121f13e95e15e331ac90fbbe5e" } Key { type: 7 @@ -1066,27 +1066,27 @@ VisualTest { } Frame { msec: 3168 - hash: "ba721988a1708b8c0762d706820c48fc" + hash: "b701aa41aff9df45cc4b35d23789ad46" } Frame { msec: 3184 - hash: "5dba56a5bb5f8a6539a0066af35c73b8" + hash: "ad77330d51b1251576905a45fdbdf576" } Frame { msec: 3200 - hash: "bc3efeeebe7075cd09a6e57eef43d610" + hash: "4ab6780997a5a598d2da7fbbc19877b7" } Frame { msec: 3216 - hash: "0bd9f7de32b01d8144280bf252d9a18f" + hash: "43b324d0e4882147d316a5dc16eff4a5" } Frame { msec: 3232 - hash: "29db710e47b13f26e2bf92568d52bf52" + hash: "4379bfd0da6fedac77e2111d9fdc5ecb" } Frame { msec: 3248 - hash: "a27c65c0a49deb18b0766bba41a32e54" + hash: "ca35937be71e1f982cedd33bdd09d127" } Key { type: 6 @@ -1098,31 +1098,31 @@ VisualTest { } Frame { msec: 3264 - hash: "484ee552e1a9c5eafcfe1ac583fcdffd" + hash: "f6bac38774fa8a09084c045e34fd1732" } Frame { msec: 3280 - hash: "40b336a0e337b66d813089a82a88c712" + hash: "6d8b58612860febb13800958cab3aecd" } Frame { msec: 3296 - hash: "b7a8d4b8bb2b83e4c886aa51c1a73895" + hash: "7f921d2293cf547de3b5573dbf98d5bb" } Frame { msec: 3312 - hash: "43b3bf8425e7a6b7115d8e6a0bcfd677" + hash: "18771337bbe826b5a34bd9705c79f56a" } Frame { msec: 3328 - hash: "e2ce168241b043db74867fe7ed6de956" + hash: "3dd49406c4b39980908d8869dc3c060a" } Frame { msec: 3344 - hash: "0c713bbd7bb694d87f0fe14f87098b9b" + hash: "8cae649565b5655d606f216334a0b5b5" } Frame { msec: 3360 - hash: "316f6bd365ca4b4f2e6fbf34a047e307" + hash: "27c59b474d706ce79b5d075713c1ea88" } Key { type: 7 @@ -1134,39 +1134,39 @@ VisualTest { } Frame { msec: 3376 - hash: "421fb8881fe7b300dcec0f44ff1743e3" + hash: "6d70d654998bbc0a2431ca7c4a58cd3c" } Frame { msec: 3392 - hash: "e8376079434393467b47a56ff00efb2b" + hash: "bf55fffd1727c0d076e05e274dcebb0d" } Frame { msec: 3408 - hash: "63259de84a6e07d42c9df94ec2a25920" + hash: "d5b0696cbe2969723bb2fe740deeb81f" } Frame { msec: 3424 - hash: "f9194d82b81f5ac58862c382caf5cf59" + hash: "27968050a9cf7d57d016274709086be1" } Frame { msec: 3440 - hash: "e185f2594f038532a37b351384dc97ea" + hash: "3bc037fd17d0d394b82ba19914f31b90" } Frame { msec: 3456 - hash: "91edc3ca1e6c532bd92006a761073da2" + hash: "117d7ad2d2ae47f3a0c2a68928534b76" } Frame { msec: 3472 - hash: "b47390495539756048ccc71047ebef7b" + hash: "a538ce971f34a497c05258da2567a208" } Frame { msec: 3488 - hash: "7c83d3bdb9abf8ab2cfe7f9464673a49" + hash: "91e2e5cc6efcffc9e58646a008a57c9d" } Frame { msec: 3504 - hash: "b686f4013f45885ab794aba9ff491286" + hash: "13db17cc3c6513014a95210a443e5842" } Key { type: 7 @@ -1178,11 +1178,11 @@ VisualTest { } Frame { msec: 3520 - hash: "0c55d6ea330b7365825864d4bdacafcb" + hash: "03325597bd4e7d7b6f7c84c848018872" } Frame { msec: 3536 - hash: "2bb72f191201572308e461021872fb4c" + hash: "e96dc6d611d23553b363a765195604f9" } Key { type: 7 @@ -1194,358 +1194,358 @@ VisualTest { } Frame { msec: 3552 - hash: "81b04a84982698ee80d13d392742edd3" + hash: "942476dd6fb7a4f3d10c398503cb7b90" } Frame { msec: 3568 - hash: "63f582dc2a9f707c1ec99f4285d13a84" + hash: "cbe34fd18b6355ae9be469a594b44192" } Frame { msec: 3584 - hash: "f91cb29101f80f5dcb1e9e8c82e823b7" + hash: "3dce89f398d2c856bcd32da34867ebd8" } Frame { msec: 3600 - hash: "fdf68e988b988d068ea78a5a09ef349e" + hash: "c78608cde907bc09760d858795b43bbf" } Frame { msec: 3616 - hash: "27434828de3ba8f6a3b83f042b70eb8b" + hash: "75d1ae9c60573f9e27cd7c2d1706cbfc" } Frame { msec: 3632 - hash: "e54102edbf6cc0c9a32b09858f760ee5" + hash: "754e2fca1b3ed5ee9875aafb1a0c62d3" } Frame { msec: 3648 - hash: "26530bded6311640c4d3f6d1485fa7d3" + hash: "a6f05fb5206a456bea790ba7ba31868c" } Frame { msec: 3664 - hash: "eaee6483a2a4a0b09a8e40bb1785a498" + hash: "21008b3a5179e25f9b132a4c05b8b8c4" } Frame { msec: 3680 - hash: "e1c083d0235ff5a2e002ce78f43009b0" + hash: "37d2d2830f6ae6bf0c8fb29c5d4f521a" } Frame { msec: 3696 - hash: "7f2ac0854ddbcca94a2ad160ead5d4d3" + hash: "d7a226b40a049dee56755af9206246b4" } Frame { msec: 3712 - hash: "30c4aa33a6672f4df24186ad1e28bcf9" + hash: "d7d39e8f717bab17aaf8a12e4f9e0dfc" } Frame { msec: 3728 - hash: "38f16a7deeaea6828edd15b00024fc19" + hash: "1dd5625fb6a0ddbaa3919a1702695e9c" } Frame { msec: 3744 - hash: "bb74f706477e277284fad50752f078b5" + hash: "e0b07106a5adc1603788444d48b9c3db" } Frame { msec: 3760 - hash: "a588e9dbeabd7519cd0cf2d26a123529" + hash: "db61ba19d56b69d148aeb182de596713" } Frame { msec: 3776 - hash: "4fd9f22ad06e02b68319c298c2286e36" + hash: "39a59b2e9e0bee87d3ba50e1408bea1c" } Frame { msec: 3792 - hash: "29a28a97fc78a1b01252b852fb0446e2" + hash: "f34175acc261ad79bc9d2083af04ae10" } Frame { msec: 3808 - hash: "458895f9ede4d56e0b851c6ed124405d" + hash: "2ec91bfdb0f106a526f6bde3eb0ed7ce" } Frame { msec: 3824 - hash: "cd58c0d4f7248315a787542b0edcb4fb" + hash: "183538d04cf009f100a1e49a3229c143" } Frame { msec: 3840 - image: "cursorDelegate.3.png" + hash: "fb09d44a5a5b5b795d562512e9547301" } Frame { msec: 3856 - hash: "483eca22c50750e7591785ed60813d1f" + image: "cursorDelegate.4.png" } Frame { msec: 3872 - hash: "c5199c908df1f550d7c4f133eb926134" + hash: "39c81c6efdbc32b6e0378810404bef2c" } Frame { msec: 3888 - hash: "efaa5e4483ed9cfec792e8f270b5079e" + hash: "23d9a9a6a9d032c7e447407193ca51ef" } Frame { msec: 3904 - hash: "7ffcff87e27dcb0be0047eb6fbcc9549" + hash: "bdd00cfe933985fe77626114902ce823" } Frame { msec: 3920 - hash: "04339417259ddee10134e1479729ae1b" + hash: "1d25c2753ccabdaaf47a669c28d9e2cb" } Frame { msec: 3936 - hash: "0f1e6a0d9db7b6b8b874333682866ffa" + hash: "20fde9bbe26ebede31fc8c21dec3fcc5" } Frame { msec: 3952 - hash: "66500c2cc3d69b9fb48dc46e384aca6d" + hash: "c9147c159aebb7aa51d4bac28f96cb57" } Frame { msec: 3968 - hash: "70d6b73499c36138bee63e07afb0b186" + hash: "68d331f508b43e756d6e30ba9b60f9aa" } Frame { msec: 3984 - hash: "c526315dd5eec117266c68a7b6b64a3f" + hash: "af99069cdddfa9d099fbe25ba586e138" } Frame { msec: 4000 - hash: "c526315dd5eec117266c68a7b6b64a3f" + hash: "af99069cdddfa9d099fbe25ba586e138" } Frame { msec: 4016 - hash: "c526315dd5eec117266c68a7b6b64a3f" + hash: "af99069cdddfa9d099fbe25ba586e138" } Frame { msec: 4032 - hash: "c526315dd5eec117266c68a7b6b64a3f" + hash: "af99069cdddfa9d099fbe25ba586e138" } Frame { msec: 4048 - hash: "c526315dd5eec117266c68a7b6b64a3f" + hash: "af99069cdddfa9d099fbe25ba586e138" } Frame { msec: 4064 - hash: "70d6b73499c36138bee63e07afb0b186" + hash: "68d331f508b43e756d6e30ba9b60f9aa" } Frame { msec: 4080 - hash: "66500c2cc3d69b9fb48dc46e384aca6d" + hash: "c9147c159aebb7aa51d4bac28f96cb57" } Frame { msec: 4096 - hash: "0f1e6a0d9db7b6b8b874333682866ffa" + hash: "20fde9bbe26ebede31fc8c21dec3fcc5" } Frame { msec: 4112 - hash: "04339417259ddee10134e1479729ae1b" + hash: "1d25c2753ccabdaaf47a669c28d9e2cb" } Frame { msec: 4128 - hash: "7ffcff87e27dcb0be0047eb6fbcc9549" + hash: "bdd00cfe933985fe77626114902ce823" } Frame { msec: 4144 - hash: "efaa5e4483ed9cfec792e8f270b5079e" + hash: "23d9a9a6a9d032c7e447407193ca51ef" } Frame { msec: 4160 - hash: "c5199c908df1f550d7c4f133eb926134" + hash: "39c81c6efdbc32b6e0378810404bef2c" } Frame { msec: 4176 - hash: "483eca22c50750e7591785ed60813d1f" + hash: "756f36cf41c2bae3a8a8716701e55e37" } Frame { msec: 4192 - hash: "4091de379d8f6ccc7f19ea39f6c7993a" + hash: "fb09d44a5a5b5b795d562512e9547301" } Frame { msec: 4208 - hash: "cd58c0d4f7248315a787542b0edcb4fb" + hash: "183538d04cf009f100a1e49a3229c143" } Frame { msec: 4224 - hash: "458895f9ede4d56e0b851c6ed124405d" + hash: "2ec91bfdb0f106a526f6bde3eb0ed7ce" } Frame { msec: 4240 - hash: "29a28a97fc78a1b01252b852fb0446e2" + hash: "f34175acc261ad79bc9d2083af04ae10" } Frame { msec: 4256 - hash: "4fd9f22ad06e02b68319c298c2286e36" + hash: "39a59b2e9e0bee87d3ba50e1408bea1c" } Frame { msec: 4272 - hash: "a588e9dbeabd7519cd0cf2d26a123529" + hash: "db61ba19d56b69d148aeb182de596713" } Frame { msec: 4288 - hash: "bb74f706477e277284fad50752f078b5" + hash: "e0b07106a5adc1603788444d48b9c3db" } Frame { msec: 4304 - hash: "38f16a7deeaea6828edd15b00024fc19" + hash: "1dd5625fb6a0ddbaa3919a1702695e9c" } Frame { msec: 4320 - hash: "30c4aa33a6672f4df24186ad1e28bcf9" + hash: "d7d39e8f717bab17aaf8a12e4f9e0dfc" } Frame { msec: 4336 - hash: "7f2ac0854ddbcca94a2ad160ead5d4d3" + hash: "d7a226b40a049dee56755af9206246b4" } Frame { msec: 4352 - hash: "e1c083d0235ff5a2e002ce78f43009b0" + hash: "37d2d2830f6ae6bf0c8fb29c5d4f521a" } Frame { msec: 4368 - hash: "eaee6483a2a4a0b09a8e40bb1785a498" + hash: "21008b3a5179e25f9b132a4c05b8b8c4" } Frame { msec: 4384 - hash: "26530bded6311640c4d3f6d1485fa7d3" + hash: "a6f05fb5206a456bea790ba7ba31868c" } Frame { msec: 4400 - hash: "e54102edbf6cc0c9a32b09858f760ee5" + hash: "754e2fca1b3ed5ee9875aafb1a0c62d3" } Frame { msec: 4416 - hash: "27434828de3ba8f6a3b83f042b70eb8b" + hash: "75d1ae9c60573f9e27cd7c2d1706cbfc" } Frame { msec: 4432 - hash: "fdf68e988b988d068ea78a5a09ef349e" + hash: "c78608cde907bc09760d858795b43bbf" } Frame { msec: 4448 - hash: "f91cb29101f80f5dcb1e9e8c82e823b7" + hash: "3dce89f398d2c856bcd32da34867ebd8" } Frame { msec: 4464 - hash: "63f582dc2a9f707c1ec99f4285d13a84" + hash: "cbe34fd18b6355ae9be469a594b44192" } Frame { msec: 4480 - hash: "81b04a84982698ee80d13d392742edd3" + hash: "942476dd6fb7a4f3d10c398503cb7b90" } Frame { msec: 4496 - hash: "2bb72f191201572308e461021872fb4c" + hash: "e96dc6d611d23553b363a765195604f9" } Frame { msec: 4512 - hash: "0c55d6ea330b7365825864d4bdacafcb" + hash: "03325597bd4e7d7b6f7c84c848018872" } Frame { msec: 4528 - hash: "b686f4013f45885ab794aba9ff491286" + hash: "13db17cc3c6513014a95210a443e5842" } Frame { msec: 4544 - hash: "7c83d3bdb9abf8ab2cfe7f9464673a49" + hash: "91e2e5cc6efcffc9e58646a008a57c9d" } Frame { msec: 4560 - hash: "b47390495539756048ccc71047ebef7b" + hash: "a538ce971f34a497c05258da2567a208" } Frame { msec: 4576 - hash: "91edc3ca1e6c532bd92006a761073da2" + hash: "117d7ad2d2ae47f3a0c2a68928534b76" } Frame { msec: 4592 - hash: "e185f2594f038532a37b351384dc97ea" + hash: "3bc037fd17d0d394b82ba19914f31b90" } Frame { msec: 4608 - hash: "f9194d82b81f5ac58862c382caf5cf59" + hash: "27968050a9cf7d57d016274709086be1" } Frame { msec: 4624 - hash: "63259de84a6e07d42c9df94ec2a25920" + hash: "d5b0696cbe2969723bb2fe740deeb81f" } Frame { msec: 4640 - hash: "e8376079434393467b47a56ff00efb2b" + hash: "bf55fffd1727c0d076e05e274dcebb0d" } Frame { msec: 4656 - hash: "421fb8881fe7b300dcec0f44ff1743e3" + hash: "6d70d654998bbc0a2431ca7c4a58cd3c" } Frame { msec: 4672 - hash: "316f6bd365ca4b4f2e6fbf34a047e307" + hash: "27c59b474d706ce79b5d075713c1ea88" } Frame { msec: 4688 - hash: "0c713bbd7bb694d87f0fe14f87098b9b" + hash: "8cae649565b5655d606f216334a0b5b5" } Frame { msec: 4704 - hash: "e2ce168241b043db74867fe7ed6de956" + hash: "3dd49406c4b39980908d8869dc3c060a" } Frame { msec: 4720 - hash: "43b3bf8425e7a6b7115d8e6a0bcfd677" + hash: "18771337bbe826b5a34bd9705c79f56a" } Frame { msec: 4736 - hash: "b7a8d4b8bb2b83e4c886aa51c1a73895" + hash: "7f921d2293cf547de3b5573dbf98d5bb" } Frame { msec: 4752 - hash: "40b336a0e337b66d813089a82a88c712" + hash: "6d8b58612860febb13800958cab3aecd" } Frame { msec: 4768 - hash: "484ee552e1a9c5eafcfe1ac583fcdffd" + hash: "f6bac38774fa8a09084c045e34fd1732" } Frame { msec: 4784 - hash: "a27c65c0a49deb18b0766bba41a32e54" + hash: "ca35937be71e1f982cedd33bdd09d127" } Frame { msec: 4800 - image: "cursorDelegate.4.png" + hash: "4379bfd0da6fedac77e2111d9fdc5ecb" } Frame { msec: 4816 - hash: "0bd9f7de32b01d8144280bf252d9a18f" + image: "cursorDelegate.5.png" } Frame { msec: 4832 - hash: "bc3efeeebe7075cd09a6e57eef43d610" + hash: "4ab6780997a5a598d2da7fbbc19877b7" } Frame { msec: 4848 - hash: "5dba56a5bb5f8a6539a0066af35c73b8" + hash: "ad77330d51b1251576905a45fdbdf576" } Frame { msec: 4864 - hash: "ba721988a1708b8c0762d706820c48fc" + hash: "b701aa41aff9df45cc4b35d23789ad46" } Frame { msec: 4880 - hash: "4abbd51b620ac4ea91af95bc2d0881d7" + hash: "2bdc09121f13e95e15e331ac90fbbe5e" } Frame { msec: 4896 - hash: "944dc7026c6487838ede9ef94003ec90" + hash: "14bc879f562ace9d2d1a3f3980a72e1f" } Frame { msec: 4912 - hash: "51a1b8e79d209643d55d4cecc6a70ed0" + hash: "150b5a2f2e916b7023764c481c768492" } Frame { msec: 4928 - hash: "6ccc70f6120acb53152b71bcf95514ca" + hash: "0636b7c5cc215882c60b50f62133c715" } Frame { msec: 4944 - hash: "996da2eff9302908a55308dbcc8fb3c2" + hash: "f9e0bd08b722c16493a8886a19920dda" } Frame { msec: 4960 - hash: "264f34128dfe563126b9f187c65df61e" + hash: "f499f4b3017c88c63f0a2035ad527a0e" } } diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.0.png index 57a1599..5f632d0 100644 Binary files a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.0.png and b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.0.png differ diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.1.png index d327d5b..05dd690 100644 Binary files a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.1.png and b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.1.png differ diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.2.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.2.png index c1e3dce..eb74cc5 100644 Binary files a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.2.png and b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.2.png differ diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.3.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.3.png new file mode 100644 index 0000000..3aed06c Binary files /dev/null and b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.3.png differ diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.qml index 9a26f57..2de4a10 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.qml @@ -6,7 +6,7 @@ VisualTest { } Frame { msec: 16 - hash: "0e7c7dc19aab217751411568b58830ef" + image: "echoMode.0.png" } Frame { msec: 32 @@ -110,23 +110,23 @@ VisualTest { } Frame { msec: 368 - hash: "d3151ba24f0011bf1add83377f32ec85" + hash: "bc06530170cf26690a09ed9f6c4014fd" } Frame { msec: 384 - hash: "d3151ba24f0011bf1add83377f32ec85" + hash: "bc06530170cf26690a09ed9f6c4014fd" } Frame { msec: 400 - hash: "d3151ba24f0011bf1add83377f32ec85" + hash: "bc06530170cf26690a09ed9f6c4014fd" } Frame { msec: 416 - hash: "d3151ba24f0011bf1add83377f32ec85" + hash: "bc06530170cf26690a09ed9f6c4014fd" } Frame { msec: 432 - hash: "d3151ba24f0011bf1add83377f32ec85" + hash: "bc06530170cf26690a09ed9f6c4014fd" } Key { type: 7 @@ -138,27 +138,27 @@ VisualTest { } Frame { msec: 448 - hash: "d3151ba24f0011bf1add83377f32ec85" + hash: "bc06530170cf26690a09ed9f6c4014fd" } Frame { msec: 464 - hash: "d3151ba24f0011bf1add83377f32ec85" + hash: "bc06530170cf26690a09ed9f6c4014fd" } Frame { msec: 480 - hash: "d3151ba24f0011bf1add83377f32ec85" + hash: "bc06530170cf26690a09ed9f6c4014fd" } Frame { msec: 496 - hash: "d3151ba24f0011bf1add83377f32ec85" + hash: "bc06530170cf26690a09ed9f6c4014fd" } Frame { msec: 512 - hash: "d3151ba24f0011bf1add83377f32ec85" + hash: "bc06530170cf26690a09ed9f6c4014fd" } Frame { msec: 528 - hash: "d3151ba24f0011bf1add83377f32ec85" + hash: "bc06530170cf26690a09ed9f6c4014fd" } Key { type: 7 @@ -170,43 +170,43 @@ VisualTest { } Frame { msec: 544 - hash: "d3151ba24f0011bf1add83377f32ec85" + hash: "bc06530170cf26690a09ed9f6c4014fd" } Frame { msec: 560 - hash: "d3151ba24f0011bf1add83377f32ec85" + hash: "bc06530170cf26690a09ed9f6c4014fd" } Frame { msec: 576 - hash: "d3151ba24f0011bf1add83377f32ec85" + hash: "bc06530170cf26690a09ed9f6c4014fd" } Frame { msec: 592 - hash: "d3151ba24f0011bf1add83377f32ec85" + hash: "bc06530170cf26690a09ed9f6c4014fd" } Frame { msec: 608 - hash: "d3151ba24f0011bf1add83377f32ec85" + hash: "bc06530170cf26690a09ed9f6c4014fd" } Frame { msec: 624 - hash: "d3151ba24f0011bf1add83377f32ec85" + hash: "bc06530170cf26690a09ed9f6c4014fd" } Frame { msec: 640 - hash: "d3151ba24f0011bf1add83377f32ec85" + hash: "bc06530170cf26690a09ed9f6c4014fd" } Frame { msec: 656 - hash: "d3151ba24f0011bf1add83377f32ec85" + hash: "bc06530170cf26690a09ed9f6c4014fd" } Frame { msec: 672 - hash: "d3151ba24f0011bf1add83377f32ec85" + hash: "bc06530170cf26690a09ed9f6c4014fd" } Frame { msec: 688 - hash: "d3151ba24f0011bf1add83377f32ec85" + hash: "bc06530170cf26690a09ed9f6c4014fd" } Key { type: 6 @@ -218,23 +218,23 @@ VisualTest { } Frame { msec: 704 - hash: "6b7c333ce19fede43aee84cc66c4c1bc" + hash: "8c64a986ce7bd19dcc88785309456f4e" } Frame { msec: 720 - hash: "6b7c333ce19fede43aee84cc66c4c1bc" + hash: "8c64a986ce7bd19dcc88785309456f4e" } Frame { msec: 736 - hash: "6b7c333ce19fede43aee84cc66c4c1bc" + hash: "8c64a986ce7bd19dcc88785309456f4e" } Frame { msec: 752 - hash: "6b7c333ce19fede43aee84cc66c4c1bc" + hash: "8c64a986ce7bd19dcc88785309456f4e" } Frame { msec: 768 - hash: "6b7c333ce19fede43aee84cc66c4c1bc" + hash: "8c64a986ce7bd19dcc88785309456f4e" } Key { type: 7 @@ -246,23 +246,23 @@ VisualTest { } Frame { msec: 784 - hash: "6b7c333ce19fede43aee84cc66c4c1bc" + hash: "8c64a986ce7bd19dcc88785309456f4e" } Frame { msec: 800 - hash: "6b7c333ce19fede43aee84cc66c4c1bc" + hash: "8c64a986ce7bd19dcc88785309456f4e" } Frame { msec: 816 - hash: "6b7c333ce19fede43aee84cc66c4c1bc" + hash: "8c64a986ce7bd19dcc88785309456f4e" } Frame { msec: 832 - hash: "6b7c333ce19fede43aee84cc66c4c1bc" + hash: "8c64a986ce7bd19dcc88785309456f4e" } Frame { msec: 848 - hash: "6b7c333ce19fede43aee84cc66c4c1bc" + hash: "8c64a986ce7bd19dcc88785309456f4e" } Key { type: 6 @@ -274,15 +274,15 @@ VisualTest { } Frame { msec: 864 - hash: "a5386e9b39daa0a5aad8a8cd5191909b" + hash: "4cfca8edcb96b1d9986db4ee491bf857" } Frame { msec: 880 - hash: "a5386e9b39daa0a5aad8a8cd5191909b" + hash: "4cfca8edcb96b1d9986db4ee491bf857" } Frame { msec: 896 - hash: "a5386e9b39daa0a5aad8a8cd5191909b" + hash: "4cfca8edcb96b1d9986db4ee491bf857" } Key { type: 7 @@ -294,23 +294,23 @@ VisualTest { } Frame { msec: 912 - hash: "a5386e9b39daa0a5aad8a8cd5191909b" + hash: "4cfca8edcb96b1d9986db4ee491bf857" } Frame { msec: 928 - hash: "a5386e9b39daa0a5aad8a8cd5191909b" + hash: "4cfca8edcb96b1d9986db4ee491bf857" } Frame { msec: 944 - hash: "a5386e9b39daa0a5aad8a8cd5191909b" + hash: "4cfca8edcb96b1d9986db4ee491bf857" } Frame { msec: 960 - image: "echoMode.0.png" + hash: "4cfca8edcb96b1d9986db4ee491bf857" } Frame { msec: 976 - hash: "a5386e9b39daa0a5aad8a8cd5191909b" + image: "echoMode.1.png" } Key { type: 6 @@ -322,19 +322,19 @@ VisualTest { } Frame { msec: 992 - hash: "f9149723166015ed066b794cf86b27d0" + hash: "3d25316ea23ace5a88dbe8765b743eb3" } Frame { msec: 1008 - hash: "f9149723166015ed066b794cf86b27d0" + hash: "3d25316ea23ace5a88dbe8765b743eb3" } Frame { msec: 1024 - hash: "f9149723166015ed066b794cf86b27d0" + hash: "3d25316ea23ace5a88dbe8765b743eb3" } Frame { msec: 1040 - hash: "f9149723166015ed066b794cf86b27d0" + hash: "3d25316ea23ace5a88dbe8765b743eb3" } Key { type: 7 @@ -346,51 +346,51 @@ VisualTest { } Frame { msec: 1056 - hash: "f9149723166015ed066b794cf86b27d0" + hash: "3d25316ea23ace5a88dbe8765b743eb3" } Frame { msec: 1072 - hash: "f9149723166015ed066b794cf86b27d0" + hash: "3d25316ea23ace5a88dbe8765b743eb3" } Frame { msec: 1088 - hash: "f9149723166015ed066b794cf86b27d0" + hash: "3d25316ea23ace5a88dbe8765b743eb3" } Frame { msec: 1104 - hash: "f9149723166015ed066b794cf86b27d0" + hash: "3d25316ea23ace5a88dbe8765b743eb3" } Frame { msec: 1120 - hash: "f9149723166015ed066b794cf86b27d0" + hash: "3d25316ea23ace5a88dbe8765b743eb3" } Frame { msec: 1136 - hash: "f9149723166015ed066b794cf86b27d0" + hash: "3d25316ea23ace5a88dbe8765b743eb3" } Frame { msec: 1152 - hash: "f9149723166015ed066b794cf86b27d0" + hash: "3d25316ea23ace5a88dbe8765b743eb3" } Frame { msec: 1168 - hash: "f9149723166015ed066b794cf86b27d0" + hash: "3d25316ea23ace5a88dbe8765b743eb3" } Frame { msec: 1184 - hash: "f9149723166015ed066b794cf86b27d0" + hash: "3d25316ea23ace5a88dbe8765b743eb3" } Frame { msec: 1200 - hash: "f9149723166015ed066b794cf86b27d0" + hash: "3d25316ea23ace5a88dbe8765b743eb3" } Frame { msec: 1216 - hash: "f9149723166015ed066b794cf86b27d0" + hash: "3d25316ea23ace5a88dbe8765b743eb3" } Frame { msec: 1232 - hash: "f9149723166015ed066b794cf86b27d0" + hash: "3d25316ea23ace5a88dbe8765b743eb3" } Key { type: 6 @@ -402,15 +402,15 @@ VisualTest { } Frame { msec: 1248 - hash: "56dd8557435509e5a96c2f2907d474eb" + hash: "fea82a32ec46a88027cc9b0c00aa0aba" } Frame { msec: 1264 - hash: "56dd8557435509e5a96c2f2907d474eb" + hash: "fea82a32ec46a88027cc9b0c00aa0aba" } Frame { msec: 1280 - hash: "56dd8557435509e5a96c2f2907d474eb" + hash: "fea82a32ec46a88027cc9b0c00aa0aba" } Key { type: 7 @@ -422,15 +422,15 @@ VisualTest { } Frame { msec: 1296 - hash: "56dd8557435509e5a96c2f2907d474eb" + hash: "fea82a32ec46a88027cc9b0c00aa0aba" } Frame { msec: 1312 - hash: "56dd8557435509e5a96c2f2907d474eb" + hash: "fea82a32ec46a88027cc9b0c00aa0aba" } Frame { msec: 1328 - hash: "56dd8557435509e5a96c2f2907d474eb" + hash: "fea82a32ec46a88027cc9b0c00aa0aba" } Key { type: 6 @@ -442,39 +442,39 @@ VisualTest { } Frame { msec: 1344 - hash: "b311772a9bf92f4222b1c1c7ddbe96c4" + hash: "fffa6f462ea15fe3bdbf2c199881fce4" } Frame { msec: 1360 - hash: "b311772a9bf92f4222b1c1c7ddbe96c4" + hash: "fffa6f462ea15fe3bdbf2c199881fce4" } Frame { msec: 1376 - hash: "b311772a9bf92f4222b1c1c7ddbe96c4" + hash: "fffa6f462ea15fe3bdbf2c199881fce4" } Frame { msec: 1392 - hash: "b311772a9bf92f4222b1c1c7ddbe96c4" + hash: "fffa6f462ea15fe3bdbf2c199881fce4" } Frame { msec: 1408 - hash: "b311772a9bf92f4222b1c1c7ddbe96c4" + hash: "fffa6f462ea15fe3bdbf2c199881fce4" } Frame { msec: 1424 - hash: "b311772a9bf92f4222b1c1c7ddbe96c4" + hash: "fffa6f462ea15fe3bdbf2c199881fce4" } Frame { msec: 1440 - hash: "b311772a9bf92f4222b1c1c7ddbe96c4" + hash: "fffa6f462ea15fe3bdbf2c199881fce4" } Frame { msec: 1456 - hash: "b311772a9bf92f4222b1c1c7ddbe96c4" + hash: "fffa6f462ea15fe3bdbf2c199881fce4" } Frame { msec: 1472 - hash: "b311772a9bf92f4222b1c1c7ddbe96c4" + hash: "fffa6f462ea15fe3bdbf2c199881fce4" } Key { type: 7 @@ -486,7 +486,7 @@ VisualTest { } Frame { msec: 1488 - hash: "b311772a9bf92f4222b1c1c7ddbe96c4" + hash: "fffa6f462ea15fe3bdbf2c199881fce4" } Key { type: 6 @@ -498,19 +498,19 @@ VisualTest { } Frame { msec: 1504 - hash: "8feb240ad13e1e9d8392bfeb484261db" + hash: "d874584748e4aa14fd71730aa36d676c" } Frame { msec: 1520 - hash: "8feb240ad13e1e9d8392bfeb484261db" + hash: "d874584748e4aa14fd71730aa36d676c" } Frame { msec: 1536 - hash: "8feb240ad13e1e9d8392bfeb484261db" + hash: "d874584748e4aa14fd71730aa36d676c" } Frame { msec: 1552 - hash: "8feb240ad13e1e9d8392bfeb484261db" + hash: "d874584748e4aa14fd71730aa36d676c" } Key { type: 7 @@ -522,27 +522,27 @@ VisualTest { } Frame { msec: 1568 - hash: "8feb240ad13e1e9d8392bfeb484261db" + hash: "d874584748e4aa14fd71730aa36d676c" } Frame { msec: 1584 - hash: "8feb240ad13e1e9d8392bfeb484261db" + hash: "d874584748e4aa14fd71730aa36d676c" } Frame { msec: 1600 - hash: "8feb240ad13e1e9d8392bfeb484261db" + hash: "d874584748e4aa14fd71730aa36d676c" } Frame { msec: 1616 - hash: "8feb240ad13e1e9d8392bfeb484261db" + hash: "d874584748e4aa14fd71730aa36d676c" } Frame { msec: 1632 - hash: "8feb240ad13e1e9d8392bfeb484261db" + hash: "d874584748e4aa14fd71730aa36d676c" } Frame { msec: 1648 - hash: "8feb240ad13e1e9d8392bfeb484261db" + hash: "d874584748e4aa14fd71730aa36d676c" } Key { type: 6 @@ -554,23 +554,23 @@ VisualTest { } Frame { msec: 1664 - hash: "cd240ccffd4b4a6304b47cfd1e55cf49" + hash: "5eac6452c3c01de25633be412b2c9fd6" } Frame { msec: 1680 - hash: "cd240ccffd4b4a6304b47cfd1e55cf49" + hash: "5eac6452c3c01de25633be412b2c9fd6" } Frame { msec: 1696 - hash: "cd240ccffd4b4a6304b47cfd1e55cf49" + hash: "5eac6452c3c01de25633be412b2c9fd6" } Frame { msec: 1712 - hash: "cd240ccffd4b4a6304b47cfd1e55cf49" + hash: "5eac6452c3c01de25633be412b2c9fd6" } Frame { msec: 1728 - hash: "cd240ccffd4b4a6304b47cfd1e55cf49" + hash: "5eac6452c3c01de25633be412b2c9fd6" } Key { type: 6 @@ -582,7 +582,7 @@ VisualTest { } Frame { msec: 1744 - hash: "437370a412fccbeee3d1f095e32c3584" + hash: "8bf395bd43cf0483aea0ddf3e8ab8c56" } Key { type: 7 @@ -594,15 +594,15 @@ VisualTest { } Frame { msec: 1760 - hash: "437370a412fccbeee3d1f095e32c3584" + hash: "8bf395bd43cf0483aea0ddf3e8ab8c56" } Frame { msec: 1776 - hash: "437370a412fccbeee3d1f095e32c3584" + hash: "8bf395bd43cf0483aea0ddf3e8ab8c56" } Frame { msec: 1792 - hash: "437370a412fccbeee3d1f095e32c3584" + hash: "8bf395bd43cf0483aea0ddf3e8ab8c56" } Key { type: 7 @@ -614,19 +614,19 @@ VisualTest { } Frame { msec: 1808 - hash: "437370a412fccbeee3d1f095e32c3584" + hash: "8bf395bd43cf0483aea0ddf3e8ab8c56" } Frame { msec: 1824 - hash: "437370a412fccbeee3d1f095e32c3584" + hash: "8bf395bd43cf0483aea0ddf3e8ab8c56" } Frame { msec: 1840 - hash: "437370a412fccbeee3d1f095e32c3584" + hash: "8bf395bd43cf0483aea0ddf3e8ab8c56" } Frame { msec: 1856 - hash: "437370a412fccbeee3d1f095e32c3584" + hash: "8bf395bd43cf0483aea0ddf3e8ab8c56" } Key { type: 6 @@ -638,19 +638,19 @@ VisualTest { } Frame { msec: 1872 - hash: "eb4a45722e365b103ff5423117236fd3" + hash: "4a31bba56f9adaccf47e6335ed4e284f" } Frame { msec: 1888 - hash: "eb4a45722e365b103ff5423117236fd3" + hash: "4a31bba56f9adaccf47e6335ed4e284f" } Frame { msec: 1904 - hash: "eb4a45722e365b103ff5423117236fd3" + hash: "4a31bba56f9adaccf47e6335ed4e284f" } Frame { msec: 1920 - image: "echoMode.1.png" + hash: "4a31bba56f9adaccf47e6335ed4e284f" } Key { type: 7 @@ -662,27 +662,27 @@ VisualTest { } Frame { msec: 1936 - hash: "eb4a45722e365b103ff5423117236fd3" + image: "echoMode.2.png" } Frame { msec: 1952 - hash: "eb4a45722e365b103ff5423117236fd3" + hash: "4a31bba56f9adaccf47e6335ed4e284f" } Frame { msec: 1968 - hash: "eb4a45722e365b103ff5423117236fd3" + hash: "4a31bba56f9adaccf47e6335ed4e284f" } Frame { msec: 1984 - hash: "eb4a45722e365b103ff5423117236fd3" + hash: "4a31bba56f9adaccf47e6335ed4e284f" } Frame { msec: 2000 - hash: "eb4a45722e365b103ff5423117236fd3" + hash: "4a31bba56f9adaccf47e6335ed4e284f" } Frame { msec: 2016 - hash: "eb4a45722e365b103ff5423117236fd3" + hash: "4a31bba56f9adaccf47e6335ed4e284f" } Key { type: 6 @@ -694,11 +694,11 @@ VisualTest { } Frame { msec: 2032 - hash: "b53d0651627d008545e54063ceb8d689" + hash: "8bbabbbe84de490438d1111aa728c15f" } Frame { msec: 2048 - hash: "b53d0651627d008545e54063ceb8d689" + hash: "8bbabbbe84de490438d1111aa728c15f" } Key { type: 7 @@ -710,11 +710,11 @@ VisualTest { } Frame { msec: 2064 - hash: "b53d0651627d008545e54063ceb8d689" + hash: "8bbabbbe84de490438d1111aa728c15f" } Frame { msec: 2080 - hash: "b53d0651627d008545e54063ceb8d689" + hash: "8bbabbbe84de490438d1111aa728c15f" } Key { type: 6 @@ -726,19 +726,19 @@ VisualTest { } Frame { msec: 2096 - hash: "173b36137940b37001750e02d434b8e8" + hash: "5877f1d527fecaf1077ff5bd2fe1934f" } Frame { msec: 2112 - hash: "173b36137940b37001750e02d434b8e8" + hash: "5877f1d527fecaf1077ff5bd2fe1934f" } Frame { msec: 2128 - hash: "173b36137940b37001750e02d434b8e8" + hash: "5877f1d527fecaf1077ff5bd2fe1934f" } Frame { msec: 2144 - hash: "173b36137940b37001750e02d434b8e8" + hash: "5877f1d527fecaf1077ff5bd2fe1934f" } Key { type: 6 @@ -758,19 +758,19 @@ VisualTest { } Frame { msec: 2160 - hash: "2e636a964b4a1ab74ad3e23399c2ae8c" + hash: "1593ef669fdff28c33f54c12c7e7424e" } Frame { msec: 2176 - hash: "2e636a964b4a1ab74ad3e23399c2ae8c" + hash: "1593ef669fdff28c33f54c12c7e7424e" } Frame { msec: 2192 - hash: "2e636a964b4a1ab74ad3e23399c2ae8c" + hash: "1593ef669fdff28c33f54c12c7e7424e" } Frame { msec: 2208 - hash: "2e636a964b4a1ab74ad3e23399c2ae8c" + hash: "1593ef669fdff28c33f54c12c7e7424e" } Key { type: 6 @@ -782,7 +782,7 @@ VisualTest { } Frame { msec: 2224 - hash: "631c6034372c2e7675ebce0ec415f230" + hash: "da746581451954d7d941fbac825a1009" } Key { type: 7 @@ -794,23 +794,23 @@ VisualTest { } Frame { msec: 2240 - hash: "631c6034372c2e7675ebce0ec415f230" + hash: "da746581451954d7d941fbac825a1009" } Frame { msec: 2256 - hash: "631c6034372c2e7675ebce0ec415f230" + hash: "da746581451954d7d941fbac825a1009" } Frame { msec: 2272 - hash: "631c6034372c2e7675ebce0ec415f230" + hash: "da746581451954d7d941fbac825a1009" } Frame { msec: 2288 - hash: "631c6034372c2e7675ebce0ec415f230" + hash: "da746581451954d7d941fbac825a1009" } Frame { msec: 2304 - hash: "631c6034372c2e7675ebce0ec415f230" + hash: "da746581451954d7d941fbac825a1009" } Key { type: 7 @@ -822,11 +822,11 @@ VisualTest { } Frame { msec: 2320 - hash: "631c6034372c2e7675ebce0ec415f230" + hash: "da746581451954d7d941fbac825a1009" } Frame { msec: 2336 - hash: "631c6034372c2e7675ebce0ec415f230" + hash: "da746581451954d7d941fbac825a1009" } Key { type: 6 @@ -838,27 +838,27 @@ VisualTest { } Frame { msec: 2352 - hash: "ea5c3cdde73009e1bd46e71e4cc3bf0f" + hash: "3e008b7ead8459c1667f4f385d4c5372" } Frame { msec: 2368 - hash: "ea5c3cdde73009e1bd46e71e4cc3bf0f" + hash: "3e008b7ead8459c1667f4f385d4c5372" } Frame { msec: 2384 - hash: "ea5c3cdde73009e1bd46e71e4cc3bf0f" + hash: "3e008b7ead8459c1667f4f385d4c5372" } Frame { msec: 2400 - hash: "ea5c3cdde73009e1bd46e71e4cc3bf0f" + hash: "3e008b7ead8459c1667f4f385d4c5372" } Frame { msec: 2416 - hash: "ea5c3cdde73009e1bd46e71e4cc3bf0f" + hash: "3e008b7ead8459c1667f4f385d4c5372" } Frame { msec: 2432 - hash: "ea5c3cdde73009e1bd46e71e4cc3bf0f" + hash: "3e008b7ead8459c1667f4f385d4c5372" } Key { type: 7 @@ -870,19 +870,19 @@ VisualTest { } Frame { msec: 2448 - hash: "ea5c3cdde73009e1bd46e71e4cc3bf0f" + hash: "3e008b7ead8459c1667f4f385d4c5372" } Frame { msec: 2464 - hash: "ea5c3cdde73009e1bd46e71e4cc3bf0f" + hash: "3e008b7ead8459c1667f4f385d4c5372" } Frame { msec: 2480 - hash: "ea5c3cdde73009e1bd46e71e4cc3bf0f" + hash: "3e008b7ead8459c1667f4f385d4c5372" } Frame { msec: 2496 - hash: "ea5c3cdde73009e1bd46e71e4cc3bf0f" + hash: "3e008b7ead8459c1667f4f385d4c5372" } Key { type: 6 @@ -894,15 +894,15 @@ VisualTest { } Frame { msec: 2512 - hash: "91ef7f08d8fec2e0d353b1bf5da99c41" + hash: "1dbc7e1ab58dcec8691ff4195b0d581c" } Frame { msec: 2528 - hash: "91ef7f08d8fec2e0d353b1bf5da99c41" + hash: "1dbc7e1ab58dcec8691ff4195b0d581c" } Frame { msec: 2544 - hash: "91ef7f08d8fec2e0d353b1bf5da99c41" + hash: "1dbc7e1ab58dcec8691ff4195b0d581c" } Key { type: 7 @@ -914,130 +914,130 @@ VisualTest { } Frame { msec: 2560 - hash: "91ef7f08d8fec2e0d353b1bf5da99c41" + hash: "1dbc7e1ab58dcec8691ff4195b0d581c" } Frame { msec: 2576 - hash: "91ef7f08d8fec2e0d353b1bf5da99c41" + hash: "1dbc7e1ab58dcec8691ff4195b0d581c" } Frame { msec: 2592 - hash: "91ef7f08d8fec2e0d353b1bf5da99c41" + hash: "1dbc7e1ab58dcec8691ff4195b0d581c" } Frame { msec: 2608 - hash: "91ef7f08d8fec2e0d353b1bf5da99c41" + hash: "1dbc7e1ab58dcec8691ff4195b0d581c" } Frame { msec: 2624 - hash: "91ef7f08d8fec2e0d353b1bf5da99c41" + hash: "1dbc7e1ab58dcec8691ff4195b0d581c" } Frame { msec: 2640 - hash: "91ef7f08d8fec2e0d353b1bf5da99c41" + hash: "1dbc7e1ab58dcec8691ff4195b0d581c" } Frame { msec: 2656 - hash: "91ef7f08d8fec2e0d353b1bf5da99c41" + hash: "1dbc7e1ab58dcec8691ff4195b0d581c" } Frame { msec: 2672 - hash: "91ef7f08d8fec2e0d353b1bf5da99c41" + hash: "1dbc7e1ab58dcec8691ff4195b0d581c" } Frame { msec: 2688 - hash: "91ef7f08d8fec2e0d353b1bf5da99c41" + hash: "1dbc7e1ab58dcec8691ff4195b0d581c" } Frame { msec: 2704 - hash: "91ef7f08d8fec2e0d353b1bf5da99c41" + hash: "1dbc7e1ab58dcec8691ff4195b0d581c" } Frame { msec: 2720 - hash: "91ef7f08d8fec2e0d353b1bf5da99c41" + hash: "1dbc7e1ab58dcec8691ff4195b0d581c" } Frame { msec: 2736 - hash: "91ef7f08d8fec2e0d353b1bf5da99c41" + hash: "1dbc7e1ab58dcec8691ff4195b0d581c" } Frame { msec: 2752 - hash: "91ef7f08d8fec2e0d353b1bf5da99c41" + hash: "1dbc7e1ab58dcec8691ff4195b0d581c" } Frame { msec: 2768 - hash: "91ef7f08d8fec2e0d353b1bf5da99c41" + hash: "1dbc7e1ab58dcec8691ff4195b0d581c" } Frame { msec: 2784 - hash: "91ef7f08d8fec2e0d353b1bf5da99c41" + hash: "1dbc7e1ab58dcec8691ff4195b0d581c" } Frame { msec: 2800 - hash: "91ef7f08d8fec2e0d353b1bf5da99c41" + hash: "1dbc7e1ab58dcec8691ff4195b0d581c" } Frame { msec: 2816 - hash: "91ef7f08d8fec2e0d353b1bf5da99c41" + hash: "1dbc7e1ab58dcec8691ff4195b0d581c" } Frame { msec: 2832 - hash: "91ef7f08d8fec2e0d353b1bf5da99c41" + hash: "1dbc7e1ab58dcec8691ff4195b0d581c" } Frame { msec: 2848 - hash: "91ef7f08d8fec2e0d353b1bf5da99c41" + hash: "1dbc7e1ab58dcec8691ff4195b0d581c" } Frame { msec: 2864 - hash: "91ef7f08d8fec2e0d353b1bf5da99c41" + hash: "1dbc7e1ab58dcec8691ff4195b0d581c" } Frame { msec: 2880 - image: "echoMode.2.png" + hash: "1dbc7e1ab58dcec8691ff4195b0d581c" } Frame { msec: 2896 - hash: "91ef7f08d8fec2e0d353b1bf5da99c41" + image: "echoMode.3.png" } Frame { msec: 2912 - hash: "91ef7f08d8fec2e0d353b1bf5da99c41" + hash: "1dbc7e1ab58dcec8691ff4195b0d581c" } Frame { msec: 2928 - hash: "91ef7f08d8fec2e0d353b1bf5da99c41" + hash: "1dbc7e1ab58dcec8691ff4195b0d581c" } Frame { msec: 2944 - hash: "91ef7f08d8fec2e0d353b1bf5da99c41" + hash: "1dbc7e1ab58dcec8691ff4195b0d581c" } Frame { msec: 2960 - hash: "91ef7f08d8fec2e0d353b1bf5da99c41" + hash: "1dbc7e1ab58dcec8691ff4195b0d581c" } Frame { msec: 2976 - hash: "91ef7f08d8fec2e0d353b1bf5da99c41" + hash: "1dbc7e1ab58dcec8691ff4195b0d581c" } Frame { msec: 2992 - hash: "91ef7f08d8fec2e0d353b1bf5da99c41" + hash: "1dbc7e1ab58dcec8691ff4195b0d581c" } Frame { msec: 3008 - hash: "91ef7f08d8fec2e0d353b1bf5da99c41" + hash: "1dbc7e1ab58dcec8691ff4195b0d581c" } Frame { msec: 3024 - hash: "91ef7f08d8fec2e0d353b1bf5da99c41" + hash: "1dbc7e1ab58dcec8691ff4195b0d581c" } Frame { msec: 3040 - hash: "91ef7f08d8fec2e0d353b1bf5da99c41" + hash: "1dbc7e1ab58dcec8691ff4195b0d581c" } Frame { msec: 3056 - hash: "91ef7f08d8fec2e0d353b1bf5da99c41" + hash: "1dbc7e1ab58dcec8691ff4195b0d581c" } } diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/hAlign.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/hAlign.0.png new file mode 100644 index 0000000..6a32f0d Binary files /dev/null and b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/hAlign.0.png differ diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/hAlign.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/hAlign.qml index 4c402ea..fd64d64 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/hAlign.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/hAlign.qml @@ -6,102 +6,102 @@ VisualTest { } Frame { msec: 16 - hash: "840c5f54c105f90c7b0c2254fee2e434" + image: "hAlign.0.png" } Frame { msec: 32 - hash: "840c5f54c105f90c7b0c2254fee2e434" + hash: "043c40378d2707bd231a448cd242aa3c" } Frame { msec: 48 - hash: "840c5f54c105f90c7b0c2254fee2e434" + hash: "043c40378d2707bd231a448cd242aa3c" } Frame { msec: 64 - hash: "840c5f54c105f90c7b0c2254fee2e434" + hash: "043c40378d2707bd231a448cd242aa3c" } Frame { msec: 80 - hash: "840c5f54c105f90c7b0c2254fee2e434" + hash: "043c40378d2707bd231a448cd242aa3c" } Frame { msec: 96 - hash: "840c5f54c105f90c7b0c2254fee2e434" + hash: "043c40378d2707bd231a448cd242aa3c" } Frame { msec: 112 - hash: "840c5f54c105f90c7b0c2254fee2e434" + hash: "043c40378d2707bd231a448cd242aa3c" } Frame { msec: 128 - hash: "840c5f54c105f90c7b0c2254fee2e434" + hash: "043c40378d2707bd231a448cd242aa3c" } Frame { msec: 144 - hash: "840c5f54c105f90c7b0c2254fee2e434" + hash: "043c40378d2707bd231a448cd242aa3c" } Frame { msec: 160 - hash: "840c5f54c105f90c7b0c2254fee2e434" + hash: "043c40378d2707bd231a448cd242aa3c" } Frame { msec: 176 - hash: "840c5f54c105f90c7b0c2254fee2e434" + hash: "043c40378d2707bd231a448cd242aa3c" } Frame { msec: 192 - hash: "840c5f54c105f90c7b0c2254fee2e434" + hash: "043c40378d2707bd231a448cd242aa3c" } Frame { msec: 208 - hash: "840c5f54c105f90c7b0c2254fee2e434" + hash: "043c40378d2707bd231a448cd242aa3c" } Frame { msec: 224 - hash: "840c5f54c105f90c7b0c2254fee2e434" + hash: "043c40378d2707bd231a448cd242aa3c" } Frame { msec: 240 - hash: "840c5f54c105f90c7b0c2254fee2e434" + hash: "043c40378d2707bd231a448cd242aa3c" } Frame { msec: 256 - hash: "840c5f54c105f90c7b0c2254fee2e434" + hash: "043c40378d2707bd231a448cd242aa3c" } Frame { msec: 272 - hash: "840c5f54c105f90c7b0c2254fee2e434" + hash: "043c40378d2707bd231a448cd242aa3c" } Frame { msec: 288 - hash: "840c5f54c105f90c7b0c2254fee2e434" + hash: "043c40378d2707bd231a448cd242aa3c" } Frame { msec: 304 - hash: "840c5f54c105f90c7b0c2254fee2e434" + hash: "043c40378d2707bd231a448cd242aa3c" } Frame { msec: 320 - hash: "840c5f54c105f90c7b0c2254fee2e434" + hash: "043c40378d2707bd231a448cd242aa3c" } Frame { msec: 336 - hash: "840c5f54c105f90c7b0c2254fee2e434" + hash: "043c40378d2707bd231a448cd242aa3c" } Frame { msec: 352 - hash: "840c5f54c105f90c7b0c2254fee2e434" + hash: "043c40378d2707bd231a448cd242aa3c" } Frame { msec: 368 - hash: "840c5f54c105f90c7b0c2254fee2e434" + hash: "043c40378d2707bd231a448cd242aa3c" } Frame { msec: 384 - hash: "840c5f54c105f90c7b0c2254fee2e434" + hash: "043c40378d2707bd231a448cd242aa3c" } Frame { msec: 400 - hash: "840c5f54c105f90c7b0c2254fee2e434" + hash: "043c40378d2707bd231a448cd242aa3c" } } diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.0.png new file mode 100644 index 0000000..6ca52b6 Binary files /dev/null and b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.0.png differ diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.1.png new file mode 100644 index 0000000..31d6b2c Binary files /dev/null and b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.1.png differ diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.10.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.10.png new file mode 100644 index 0000000..d89e2d8 Binary files /dev/null and b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.10.png differ diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.11.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.11.png new file mode 100644 index 0000000..834516a Binary files /dev/null and b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.11.png differ diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.2.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.2.png new file mode 100644 index 0000000..31d6b2c Binary files /dev/null and b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.2.png differ diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.3.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.3.png new file mode 100644 index 0000000..31d6b2c Binary files /dev/null and b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.3.png differ diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.4.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.4.png new file mode 100644 index 0000000..8147bda Binary files /dev/null and b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.4.png differ diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.5.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.5.png new file mode 100644 index 0000000..c67e619 Binary files /dev/null and b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.5.png differ diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.6.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.6.png new file mode 100644 index 0000000..646855f Binary files /dev/null and b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.6.png differ diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.7.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.7.png new file mode 100644 index 0000000..c1a9d5c Binary files /dev/null and b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.7.png differ diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.8.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.8.png new file mode 100644 index 0000000..d6c92b7 Binary files /dev/null and b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.8.png differ diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.9.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.9.png new file mode 100644 index 0000000..e798d3b Binary files /dev/null and b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.9.png differ diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.qml new file mode 100644 index 0000000..a1a0821 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.qml @@ -0,0 +1,4335 @@ +import Qt.VisualTest 4.7 + +VisualTest { + Frame { + msec: 0 + } + Frame { + msec: 16 + image: "usingLineEdit.0.png" + } + Frame { + msec: 32 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 48 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 64 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 80 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 96 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 112 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 128 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 144 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 160 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 176 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 192 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 208 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 224 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 240 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 256 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 272 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 288 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 304 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 320 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 336 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 352 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 368 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 384 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 400 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 416 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 432 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 448 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 464 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 480 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 496 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 512 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 528 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 544 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 560 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 576 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 592 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 608 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 624 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 640 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 656 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 672 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 688 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 704 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 720 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 736 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 752 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 768 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 784 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 800 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 816 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 832 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 848 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 864 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 880 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 896 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 912 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 928 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Mouse { + type: 2 + button: 1 + buttons: 1 + x: 85; y: 11 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 944 + hash: "1e95a74868a748e11efdc6fbb500f6e8" + } + Mouse { + type: 3 + button: 1 + buttons: 0 + x: 85; y: 11 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 960 + hash: "1e95a74868a748e11efdc6fbb500f6e8" + } + Mouse { + type: 4 + button: 1 + buttons: 1 + x: 85; y: 11 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 976 + image: "usingLineEdit.1.png" + } + Frame { + msec: 992 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1008 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1024 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1040 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1056 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Mouse { + type: 3 + button: 1 + buttons: 0 + x: 85; y: 11 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1072 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1088 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1104 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1120 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1136 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1152 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1168 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1184 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1200 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1216 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1232 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1248 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1264 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1280 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1296 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1312 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1328 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1344 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1360 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Key { + type: 6 + key: 16777249 + modifiers: 67108864 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 1376 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1392 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1408 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1424 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1440 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1456 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1472 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1488 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1504 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1520 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1536 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1552 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1568 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1584 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1600 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1616 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1632 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1648 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1664 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1680 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1696 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1712 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1728 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1744 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1760 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1776 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1792 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1808 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1824 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1840 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1856 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1872 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1888 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1904 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1920 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1936 + image: "usingLineEdit.2.png" + } + Frame { + msec: 1952 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1968 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1984 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Key { + type: 6 + key: 67 + modifiers: 67108864 + text: "03" + autorep: false + count: 1 + } + Frame { + msec: 2000 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2016 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2032 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2048 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2064 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2080 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2096 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2112 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Key { + type: 7 + key: 16777249 + modifiers: 0 + text: "" + autorep: false + count: 1 + } + Key { + type: 7 + key: 67 + modifiers: 0 + text: "63" + autorep: false + count: 1 + } + Frame { + msec: 2128 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2144 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2160 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2176 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2192 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2208 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2224 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2240 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2256 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2272 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2288 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2304 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2320 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2336 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2352 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2368 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2384 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2400 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2416 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2432 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2448 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2464 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2480 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Key { + type: 6 + key: 16777233 + modifiers: 0 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 2496 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2512 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2528 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2544 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2560 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2576 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Key { + type: 7 + key: 16777233 + modifiers: 0 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 2592 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2608 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2624 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2640 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2656 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2672 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2688 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2704 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2720 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2736 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2752 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2768 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2784 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Key { + type: 6 + key: 16777249 + modifiers: 67108864 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 2800 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2816 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2832 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2848 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2864 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2880 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2896 + image: "usingLineEdit.3.png" + } + Frame { + msec: 2912 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2928 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2944 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2960 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2976 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2992 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 3008 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 3024 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 3040 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 3056 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 3072 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 3088 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 3104 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 3120 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 3136 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 3152 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 3168 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 3184 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 3200 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 3216 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Key { + type: 6 + key: 86 + modifiers: 67108864 + text: "16" + autorep: false + count: 1 + } + Frame { + msec: 3232 + hash: "4e24e7e6a205160479b0d23057a50b37" + } + Frame { + msec: 3248 + hash: "4e24e7e6a205160479b0d23057a50b37" + } + Frame { + msec: 3264 + hash: "4e24e7e6a205160479b0d23057a50b37" + } + Frame { + msec: 3280 + hash: "4e24e7e6a205160479b0d23057a50b37" + } + Frame { + msec: 3296 + hash: "4e24e7e6a205160479b0d23057a50b37" + } + Frame { + msec: 3312 + hash: "4e24e7e6a205160479b0d23057a50b37" + } + Frame { + msec: 3328 + hash: "4e24e7e6a205160479b0d23057a50b37" + } + Key { + type: 7 + key: 86 + modifiers: 67108864 + text: "16" + autorep: false + count: 1 + } + Frame { + msec: 3344 + hash: "4e24e7e6a205160479b0d23057a50b37" + } + Frame { + msec: 3360 + hash: "4e24e7e6a205160479b0d23057a50b37" + } + Frame { + msec: 3376 + hash: "4e24e7e6a205160479b0d23057a50b37" + } + Frame { + msec: 3392 + hash: "4e24e7e6a205160479b0d23057a50b37" + } + Frame { + msec: 3408 + hash: "4e24e7e6a205160479b0d23057a50b37" + } + Frame { + msec: 3424 + hash: "4e24e7e6a205160479b0d23057a50b37" + } + Frame { + msec: 3440 + hash: "4e24e7e6a205160479b0d23057a50b37" + } + Frame { + msec: 3456 + hash: "4e24e7e6a205160479b0d23057a50b37" + } + Frame { + msec: 3472 + hash: "4e24e7e6a205160479b0d23057a50b37" + } + Frame { + msec: 3488 + hash: "4e24e7e6a205160479b0d23057a50b37" + } + Frame { + msec: 3504 + hash: "4e24e7e6a205160479b0d23057a50b37" + } + Frame { + msec: 3520 + hash: "4e24e7e6a205160479b0d23057a50b37" + } + Frame { + msec: 3536 + hash: "4e24e7e6a205160479b0d23057a50b37" + } + Frame { + msec: 3552 + hash: "4e24e7e6a205160479b0d23057a50b37" + } + Key { + type: 6 + key: 86 + modifiers: 67108864 + text: "16" + autorep: false + count: 1 + } + Frame { + msec: 3568 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 3584 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 3600 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 3616 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 3632 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 3648 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 3664 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 3680 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Key { + type: 7 + key: 86 + modifiers: 67108864 + text: "16" + autorep: false + count: 1 + } + Frame { + msec: 3696 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 3712 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 3728 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 3744 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 3760 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 3776 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 3792 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 3808 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 3824 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 3840 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 3856 + image: "usingLineEdit.4.png" + } + Frame { + msec: 3872 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 3888 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 3904 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 3920 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 3936 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 3952 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 3968 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 3984 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 4000 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 4016 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 4032 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 4048 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 4064 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 4080 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 4096 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 4112 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 4128 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 4144 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 4160 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 4176 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 4192 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Key { + type: 7 + key: 16777249 + modifiers: 0 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 4208 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 4224 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 4240 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 4256 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 4272 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 4288 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 4304 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 4320 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 4336 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 4352 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 4368 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 4384 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 4400 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 4416 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 4432 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 4448 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 4464 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 4480 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 4496 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 4512 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 4528 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 4544 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 4560 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 4576 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 4592 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 4608 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 4624 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 4640 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 4656 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 4672 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 4688 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 4704 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Mouse { + type: 2 + button: 1 + buttons: 1 + x: 69; y: 40 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4720 + hash: "b7e9475cc88b099f9e17b67f4d0c8ed0" + } + Frame { + msec: 4736 + hash: "b7e9475cc88b099f9e17b67f4d0c8ed0" + } + Frame { + msec: 4752 + hash: "b7e9475cc88b099f9e17b67f4d0c8ed0" + } + Frame { + msec: 4768 + hash: "b7e9475cc88b099f9e17b67f4d0c8ed0" + } + Frame { + msec: 4784 + hash: "b7e9475cc88b099f9e17b67f4d0c8ed0" + } + Frame { + msec: 4800 + hash: "b7e9475cc88b099f9e17b67f4d0c8ed0" + } + Mouse { + type: 3 + button: 1 + buttons: 0 + x: 69; y: 40 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4816 + image: "usingLineEdit.5.png" + } + Frame { + msec: 4832 + hash: "b7e9475cc88b099f9e17b67f4d0c8ed0" + } + Frame { + msec: 4848 + hash: "b7e9475cc88b099f9e17b67f4d0c8ed0" + } + Frame { + msec: 4864 + hash: "b7e9475cc88b099f9e17b67f4d0c8ed0" + } + Frame { + msec: 4880 + hash: "b7e9475cc88b099f9e17b67f4d0c8ed0" + } + Frame { + msec: 4896 + hash: "b7e9475cc88b099f9e17b67f4d0c8ed0" + } + Frame { + msec: 4912 + hash: "b7e9475cc88b099f9e17b67f4d0c8ed0" + } + Frame { + msec: 4928 + hash: "b7e9475cc88b099f9e17b67f4d0c8ed0" + } + Frame { + msec: 4944 + hash: "b7e9475cc88b099f9e17b67f4d0c8ed0" + } + Frame { + msec: 4960 + hash: "b7e9475cc88b099f9e17b67f4d0c8ed0" + } + Frame { + msec: 4976 + hash: "b7e9475cc88b099f9e17b67f4d0c8ed0" + } + Frame { + msec: 4992 + hash: "b7e9475cc88b099f9e17b67f4d0c8ed0" + } + Frame { + msec: 5008 + hash: "b7e9475cc88b099f9e17b67f4d0c8ed0" + } + Frame { + msec: 5024 + hash: "b7e9475cc88b099f9e17b67f4d0c8ed0" + } + Frame { + msec: 5040 + hash: "b7e9475cc88b099f9e17b67f4d0c8ed0" + } + Frame { + msec: 5056 + hash: "b7e9475cc88b099f9e17b67f4d0c8ed0" + } + Frame { + msec: 5072 + hash: "b7e9475cc88b099f9e17b67f4d0c8ed0" + } + Frame { + msec: 5088 + hash: "b7e9475cc88b099f9e17b67f4d0c8ed0" + } + Frame { + msec: 5104 + hash: "b7e9475cc88b099f9e17b67f4d0c8ed0" + } + Frame { + msec: 5120 + hash: "b7e9475cc88b099f9e17b67f4d0c8ed0" + } + Frame { + msec: 5136 + hash: "b7e9475cc88b099f9e17b67f4d0c8ed0" + } + Frame { + msec: 5152 + hash: "b7e9475cc88b099f9e17b67f4d0c8ed0" + } + Frame { + msec: 5168 + hash: "b7e9475cc88b099f9e17b67f4d0c8ed0" + } + Frame { + msec: 5184 + hash: "b7e9475cc88b099f9e17b67f4d0c8ed0" + } + Frame { + msec: 5200 + hash: "b7e9475cc88b099f9e17b67f4d0c8ed0" + } + Frame { + msec: 5216 + hash: "b7e9475cc88b099f9e17b67f4d0c8ed0" + } + Frame { + msec: 5232 + hash: "b7e9475cc88b099f9e17b67f4d0c8ed0" + } + Frame { + msec: 5248 + hash: "b7e9475cc88b099f9e17b67f4d0c8ed0" + } + Frame { + msec: 5264 + hash: "b7e9475cc88b099f9e17b67f4d0c8ed0" + } + Frame { + msec: 5280 + hash: "b7e9475cc88b099f9e17b67f4d0c8ed0" + } + Frame { + msec: 5296 + hash: "b7e9475cc88b099f9e17b67f4d0c8ed0" + } + Frame { + msec: 5312 + hash: "b7e9475cc88b099f9e17b67f4d0c8ed0" + } + Frame { + msec: 5328 + hash: "b7e9475cc88b099f9e17b67f4d0c8ed0" + } + Frame { + msec: 5344 + hash: "b7e9475cc88b099f9e17b67f4d0c8ed0" + } + Frame { + msec: 5360 + hash: "b7e9475cc88b099f9e17b67f4d0c8ed0" + } + Key { + type: 6 + key: 16777236 + modifiers: 0 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 5376 + hash: "5435254889b22b00b043f0d748021369" + } + Frame { + msec: 5392 + hash: "5435254889b22b00b043f0d748021369" + } + Frame { + msec: 5408 + hash: "5435254889b22b00b043f0d748021369" + } + Frame { + msec: 5424 + hash: "5435254889b22b00b043f0d748021369" + } + Frame { + msec: 5440 + hash: "5435254889b22b00b043f0d748021369" + } + Frame { + msec: 5456 + hash: "5435254889b22b00b043f0d748021369" + } + Frame { + msec: 5472 + hash: "5435254889b22b00b043f0d748021369" + } + Frame { + msec: 5488 + hash: "5435254889b22b00b043f0d748021369" + } + Frame { + msec: 5504 + hash: "5435254889b22b00b043f0d748021369" + } + Frame { + msec: 5520 + hash: "5435254889b22b00b043f0d748021369" + } + Frame { + msec: 5536 + hash: "5435254889b22b00b043f0d748021369" + } + Frame { + msec: 5552 + hash: "5435254889b22b00b043f0d748021369" + } + Frame { + msec: 5568 + hash: "5435254889b22b00b043f0d748021369" + } + Frame { + msec: 5584 + hash: "5435254889b22b00b043f0d748021369" + } + Frame { + msec: 5600 + hash: "5435254889b22b00b043f0d748021369" + } + Frame { + msec: 5616 + hash: "5435254889b22b00b043f0d748021369" + } + Key { + type: 7 + key: 16777236 + modifiers: 0 + text: "" + autorep: false + count: 1 + } + Key { + type: 6 + key: 16777236 + modifiers: 0 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 5632 + hash: "94fa3848acc33accfb607ce31029f06d" + } + Frame { + msec: 5648 + hash: "94fa3848acc33accfb607ce31029f06d" + } + Key { + type: 7 + key: 16777236 + modifiers: 0 + text: "" + autorep: false + count: 1 + } + Key { + type: 6 + key: 16777236 + modifiers: 0 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 5664 + hash: "1ea423dd8084001f2357f1613a77daa4" + } + Frame { + msec: 5680 + hash: "1ea423dd8084001f2357f1613a77daa4" + } + Key { + type: 7 + key: 16777236 + modifiers: 0 + text: "" + autorep: false + count: 1 + } + Key { + type: 6 + key: 16777236 + modifiers: 0 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 5696 + hash: "b0f808e85cc5721473da7cd84b1987dc" + } + Frame { + msec: 5712 + hash: "b0f808e85cc5721473da7cd84b1987dc" + } + Key { + type: 7 + key: 16777236 + modifiers: 0 + text: "" + autorep: false + count: 1 + } + Key { + type: 6 + key: 16777236 + modifiers: 0 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 5728 + hash: "0667aaf2eb49c2375b831301fefb0035" + } + Frame { + msec: 5744 + hash: "0667aaf2eb49c2375b831301fefb0035" + } + Key { + type: 7 + key: 16777236 + modifiers: 0 + text: "" + autorep: false + count: 1 + } + Key { + type: 6 + key: 16777236 + modifiers: 0 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 5760 + hash: "7680aca6b9feccc7e73efa79c1473ce8" + } + Frame { + msec: 5776 + image: "usingLineEdit.6.png" + } + Key { + type: 7 + key: 16777236 + modifiers: 0 + text: "" + autorep: false + count: 1 + } + Key { + type: 6 + key: 16777236 + modifiers: 0 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 5792 + hash: "fbbc99bf6a697d60ef348148c0a48bc2" + } + Frame { + msec: 5808 + hash: "fbbc99bf6a697d60ef348148c0a48bc2" + } + Key { + type: 7 + key: 16777236 + modifiers: 0 + text: "" + autorep: false + count: 1 + } + Key { + type: 6 + key: 16777236 + modifiers: 0 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 5824 + hash: "9550d8fab2512470dd9dde62f3494450" + } + Frame { + msec: 5840 + hash: "9550d8fab2512470dd9dde62f3494450" + } + Key { + type: 7 + key: 16777236 + modifiers: 0 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 5856 + hash: "9550d8fab2512470dd9dde62f3494450" + } + Key { + type: 6 + key: 16777236 + modifiers: 0 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 5872 + hash: "ab79f5095d60f5cef526a074ef6d4e96" + } + Frame { + msec: 5888 + hash: "ab79f5095d60f5cef526a074ef6d4e96" + } + Key { + type: 7 + key: 16777236 + modifiers: 0 + text: "" + autorep: false + count: 1 + } + Key { + type: 6 + key: 16777236 + modifiers: 0 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 5904 + hash: "4e6ef470ed2c2a2418a4838c6e4ae64b" + } + Key { + type: 7 + key: 16777236 + modifiers: 0 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 5920 + hash: "4e6ef470ed2c2a2418a4838c6e4ae64b" + } + Frame { + msec: 5936 + hash: "4e6ef470ed2c2a2418a4838c6e4ae64b" + } + Frame { + msec: 5952 + hash: "4e6ef470ed2c2a2418a4838c6e4ae64b" + } + Frame { + msec: 5968 + hash: "4e6ef470ed2c2a2418a4838c6e4ae64b" + } + Frame { + msec: 5984 + hash: "4e6ef470ed2c2a2418a4838c6e4ae64b" + } + Frame { + msec: 6000 + hash: "4e6ef470ed2c2a2418a4838c6e4ae64b" + } + Frame { + msec: 6016 + hash: "4e6ef470ed2c2a2418a4838c6e4ae64b" + } + Frame { + msec: 6032 + hash: "4e6ef470ed2c2a2418a4838c6e4ae64b" + } + Frame { + msec: 6048 + hash: "4e6ef470ed2c2a2418a4838c6e4ae64b" + } + Key { + type: 6 + key: 16777249 + modifiers: 67108864 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 6064 + hash: "4e6ef470ed2c2a2418a4838c6e4ae64b" + } + Frame { + msec: 6080 + hash: "4e6ef470ed2c2a2418a4838c6e4ae64b" + } + Frame { + msec: 6096 + hash: "4e6ef470ed2c2a2418a4838c6e4ae64b" + } + Frame { + msec: 6112 + hash: "4e6ef470ed2c2a2418a4838c6e4ae64b" + } + Frame { + msec: 6128 + hash: "4e6ef470ed2c2a2418a4838c6e4ae64b" + } + Frame { + msec: 6144 + hash: "4e6ef470ed2c2a2418a4838c6e4ae64b" + } + Key { + type: 6 + key: 16777234 + modifiers: 67108864 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 6160 + hash: "ed2a8fae3e94e2f90232d172246d3783" + } + Frame { + msec: 6176 + hash: "ed2a8fae3e94e2f90232d172246d3783" + } + Frame { + msec: 6192 + hash: "ed2a8fae3e94e2f90232d172246d3783" + } + Frame { + msec: 6208 + hash: "ed2a8fae3e94e2f90232d172246d3783" + } + Frame { + msec: 6224 + hash: "ed2a8fae3e94e2f90232d172246d3783" + } + Frame { + msec: 6240 + hash: "ed2a8fae3e94e2f90232d172246d3783" + } + Frame { + msec: 6256 + hash: "ed2a8fae3e94e2f90232d172246d3783" + } + Frame { + msec: 6272 + hash: "ed2a8fae3e94e2f90232d172246d3783" + } + Frame { + msec: 6288 + hash: "ed2a8fae3e94e2f90232d172246d3783" + } + Frame { + msec: 6304 + hash: "ed2a8fae3e94e2f90232d172246d3783" + } + Frame { + msec: 6320 + hash: "ed2a8fae3e94e2f90232d172246d3783" + } + Frame { + msec: 6336 + hash: "ed2a8fae3e94e2f90232d172246d3783" + } + Frame { + msec: 6352 + hash: "ed2a8fae3e94e2f90232d172246d3783" + } + Frame { + msec: 6368 + hash: "ed2a8fae3e94e2f90232d172246d3783" + } + Frame { + msec: 6384 + hash: "ed2a8fae3e94e2f90232d172246d3783" + } + Frame { + msec: 6400 + hash: "ed2a8fae3e94e2f90232d172246d3783" + } + Key { + type: 7 + key: 16777234 + modifiers: 67108864 + text: "" + autorep: false + count: 1 + } + Key { + type: 6 + key: 16777234 + modifiers: 67108864 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 6416 + hash: "ed2a8fae3e94e2f90232d172246d3783" + } + Frame { + msec: 6432 + hash: "ed2a8fae3e94e2f90232d172246d3783" + } + Key { + type: 7 + key: 16777234 + modifiers: 67108864 + text: "" + autorep: false + count: 1 + } + Key { + type: 6 + key: 16777234 + modifiers: 67108864 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 6448 + hash: "ed2a8fae3e94e2f90232d172246d3783" + } + Frame { + msec: 6464 + hash: "ed2a8fae3e94e2f90232d172246d3783" + } + Key { + type: 7 + key: 16777234 + modifiers: 67108864 + text: "" + autorep: false + count: 1 + } + Key { + type: 6 + key: 16777234 + modifiers: 67108864 + text: "" + autorep: false + count: 1 + } + Key { + type: 7 + key: 16777234 + modifiers: 67108864 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 6480 + hash: "ed2a8fae3e94e2f90232d172246d3783" + } + Frame { + msec: 6496 + hash: "ed2a8fae3e94e2f90232d172246d3783" + } + Frame { + msec: 6512 + hash: "ed2a8fae3e94e2f90232d172246d3783" + } + Frame { + msec: 6528 + hash: "ed2a8fae3e94e2f90232d172246d3783" + } + Frame { + msec: 6544 + hash: "ed2a8fae3e94e2f90232d172246d3783" + } + Frame { + msec: 6560 + hash: "ed2a8fae3e94e2f90232d172246d3783" + } + Frame { + msec: 6576 + hash: "ed2a8fae3e94e2f90232d172246d3783" + } + Frame { + msec: 6592 + hash: "ed2a8fae3e94e2f90232d172246d3783" + } + Frame { + msec: 6608 + hash: "ed2a8fae3e94e2f90232d172246d3783" + } + Frame { + msec: 6624 + hash: "ed2a8fae3e94e2f90232d172246d3783" + } + Frame { + msec: 6640 + hash: "ed2a8fae3e94e2f90232d172246d3783" + } + Frame { + msec: 6656 + hash: "ed2a8fae3e94e2f90232d172246d3783" + } + Frame { + msec: 6672 + hash: "ed2a8fae3e94e2f90232d172246d3783" + } + Frame { + msec: 6688 + hash: "ed2a8fae3e94e2f90232d172246d3783" + } + Frame { + msec: 6704 + hash: "ed2a8fae3e94e2f90232d172246d3783" + } + Frame { + msec: 6720 + hash: "ed2a8fae3e94e2f90232d172246d3783" + } + Frame { + msec: 6736 + image: "usingLineEdit.7.png" + } + Frame { + msec: 6752 + hash: "ed2a8fae3e94e2f90232d172246d3783" + } + Frame { + msec: 6768 + hash: "ed2a8fae3e94e2f90232d172246d3783" + } + Frame { + msec: 6784 + hash: "ed2a8fae3e94e2f90232d172246d3783" + } + Key { + type: 6 + key: 16777234 + modifiers: 67108864 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 6800 + hash: "ed2a8fae3e94e2f90232d172246d3783" + } + Key { + type: 7 + key: 16777234 + modifiers: 67108864 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 6816 + hash: "ed2a8fae3e94e2f90232d172246d3783" + } + Frame { + msec: 6832 + hash: "ed2a8fae3e94e2f90232d172246d3783" + } + Frame { + msec: 6848 + hash: "ed2a8fae3e94e2f90232d172246d3783" + } + Frame { + msec: 6864 + hash: "ed2a8fae3e94e2f90232d172246d3783" + } + Frame { + msec: 6880 + hash: "ed2a8fae3e94e2f90232d172246d3783" + } + Frame { + msec: 6896 + hash: "ed2a8fae3e94e2f90232d172246d3783" + } + Frame { + msec: 6912 + hash: "ed2a8fae3e94e2f90232d172246d3783" + } + Frame { + msec: 6928 + hash: "ed2a8fae3e94e2f90232d172246d3783" + } + Frame { + msec: 6944 + hash: "ed2a8fae3e94e2f90232d172246d3783" + } + Key { + type: 6 + key: 16777236 + modifiers: 67108864 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 6960 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 6976 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 6992 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7008 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Key { + type: 7 + key: 16777236 + modifiers: 67108864 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 7024 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7040 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7056 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7072 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7088 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Key { + type: 6 + key: 16777236 + modifiers: 67108864 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 7104 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7120 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7136 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7152 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Key { + type: 7 + key: 16777236 + modifiers: 67108864 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 7168 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7184 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7200 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7216 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7232 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7248 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7264 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Key { + type: 6 + key: 16777236 + modifiers: 67108864 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 7280 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7296 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7312 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7328 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7344 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Key { + type: 7 + key: 16777236 + modifiers: 67108864 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 7360 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7376 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7392 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7408 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7424 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7440 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7456 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7472 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7488 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7504 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7520 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Key { + type: 7 + key: 16777249 + modifiers: 0 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 7536 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7552 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7568 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7584 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7600 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7616 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7632 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7648 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7664 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7680 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7696 + image: "usingLineEdit.8.png" + } + Frame { + msec: 7712 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7728 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7744 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7760 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7776 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7792 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7808 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7824 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7840 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7856 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7872 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7888 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7904 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7920 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7936 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7952 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7968 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7984 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 8000 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 8016 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 8032 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 8048 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 8064 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 8080 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 8096 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 8112 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 8128 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 8144 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 8160 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 8176 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 8192 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 8208 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 8224 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 8240 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 8256 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 8272 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 8288 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 8304 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 8320 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 8336 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 8352 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 8368 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 8384 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 8400 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 8416 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 8432 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 8448 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 8464 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 8480 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 8496 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Mouse { + type: 2 + button: 1 + buttons: 1 + x: 61; y: 38 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 8512 + hash: "e779fc73a3ca131452f62e889d5c96ea" + } + Frame { + msec: 8528 + hash: "e779fc73a3ca131452f62e889d5c96ea" + } + Frame { + msec: 8544 + hash: "e779fc73a3ca131452f62e889d5c96ea" + } + Frame { + msec: 8560 + hash: "e779fc73a3ca131452f62e889d5c96ea" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 60; y: 38 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 58; y: 38 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 8576 + hash: "e779fc73a3ca131452f62e889d5c96ea" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 46; y: 38 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 8592 + hash: "400b446983d944bac62889fb47e8d405" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 41; y: 38 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 40; y: 38 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 8608 + hash: "400b446983d944bac62889fb47e8d405" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 32; y: 38 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 8624 + hash: "769278730ba7e2a31333496a0c99499f" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 31; y: 38 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 30; y: 38 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 8640 + hash: "769278730ba7e2a31333496a0c99499f" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 29; y: 38 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 8656 + image: "usingLineEdit.9.png" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 28; y: 38 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 27; y: 38 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 8672 + hash: "c193a6f52a967c97961df08ebffe50c1" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 26; y: 38 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 8688 + hash: "c193a6f52a967c97961df08ebffe50c1" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 25; y: 38 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 24; y: 38 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 8704 + hash: "c193a6f52a967c97961df08ebffe50c1" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 23; y: 38 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 22; y: 38 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 8720 + hash: "c193a6f52a967c97961df08ebffe50c1" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 20; y: 38 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 19; y: 38 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 8736 + hash: "ce0d865bf18c5c3ff93bda82f95e97c2" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 18; y: 38 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 17; y: 38 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 8752 + hash: "ce0d865bf18c5c3ff93bda82f95e97c2" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 16; y: 38 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 15; y: 37 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 8768 + hash: "ce0d865bf18c5c3ff93bda82f95e97c2" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 14; y: 37 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 13; y: 37 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 8784 + hash: "ce0d865bf18c5c3ff93bda82f95e97c2" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 12; y: 37 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 11; y: 37 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 8800 + hash: "ce0d865bf18c5c3ff93bda82f95e97c2" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 10; y: 37 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 8; y: 37 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 8816 + hash: "af2a9c17451a89153e04418e056d9ea5" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 6; y: 37 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 5; y: 36 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 8832 + hash: "749a1ccf2050c809be5e3820d3b2fba9" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 3; y: 36 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 2; y: 36 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 8848 + hash: "74f183256682200a804baa620a6ce978" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 0; y: 36 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -1; y: 36 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 8864 + hash: "9d837fb68c47ac3659b93e9f77cea0af" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -2; y: 36 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -3; y: 36 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 8880 + hash: "2dc20ba694548e05c80383d0fcc429fc" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -5; y: 36 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -6; y: 36 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 8896 + hash: "0f5b95fbbdd932c8dbfaffd0cdd44dec" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -7; y: 36 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -9; y: 36 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 8912 + hash: "dd9e9d86eacd44b19c6c9c64c2abf007" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -10; y: 36 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -11; y: 36 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 8928 + hash: "7c67140abcbe7b8a36a7324016377272" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -12; y: 36 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -13; y: 36 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 8944 + hash: "a085e2633649f0328f109bc4143eaccc" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -14; y: 36 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -15; y: 36 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 8960 + hash: "a085e2633649f0328f109bc4143eaccc" + } + Frame { + msec: 8976 + hash: "a085e2633649f0328f109bc4143eaccc" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -16; y: 36 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -17; y: 36 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 8992 + hash: "a085e2633649f0328f109bc4143eaccc" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -18; y: 36 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9008 + hash: "a085e2633649f0328f109bc4143eaccc" + } + Frame { + msec: 9024 + hash: "a085e2633649f0328f109bc4143eaccc" + } + Frame { + msec: 9040 + hash: "a085e2633649f0328f109bc4143eaccc" + } + Frame { + msec: 9056 + hash: "a085e2633649f0328f109bc4143eaccc" + } + Frame { + msec: 9072 + hash: "a085e2633649f0328f109bc4143eaccc" + } + Frame { + msec: 9088 + hash: "a085e2633649f0328f109bc4143eaccc" + } + Frame { + msec: 9104 + hash: "a085e2633649f0328f109bc4143eaccc" + } + Frame { + msec: 9120 + hash: "a085e2633649f0328f109bc4143eaccc" + } + Frame { + msec: 9136 + hash: "a085e2633649f0328f109bc4143eaccc" + } + Frame { + msec: 9152 + hash: "a085e2633649f0328f109bc4143eaccc" + } + Frame { + msec: 9168 + hash: "a085e2633649f0328f109bc4143eaccc" + } + Frame { + msec: 9184 + hash: "a085e2633649f0328f109bc4143eaccc" + } + Frame { + msec: 9200 + hash: "a085e2633649f0328f109bc4143eaccc" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -17; y: 36 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9216 + hash: "a085e2633649f0328f109bc4143eaccc" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -16; y: 36 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9232 + hash: "a085e2633649f0328f109bc4143eaccc" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -14; y: 35 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -13; y: 35 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9248 + hash: "a085e2633649f0328f109bc4143eaccc" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -11; y: 35 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -10; y: 34 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9264 + hash: "a085e2633649f0328f109bc4143eaccc" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -8; y: 34 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -7; y: 34 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9280 + hash: "a085e2633649f0328f109bc4143eaccc" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -6; y: 33 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -5; y: 33 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9296 + hash: "a085e2633649f0328f109bc4143eaccc" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -3; y: 32 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -1; y: 32 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9312 + hash: "a085e2633649f0328f109bc4143eaccc" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 1; y: 31 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 3; y: 31 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9328 + hash: "a085e2633649f0328f109bc4143eaccc" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 4; y: 31 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 6; y: 30 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9344 + hash: "a085e2633649f0328f109bc4143eaccc" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 7; y: 30 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 8; y: 30 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9360 + hash: "a085e2633649f0328f109bc4143eaccc" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 10; y: 30 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 11; y: 30 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9376 + hash: "fe89231a1ac7f48eee7cea14167b6616" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 12; y: 30 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 14; y: 30 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9392 + hash: "fe89231a1ac7f48eee7cea14167b6616" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 15; y: 30 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 17; y: 30 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9408 + hash: "fe89231a1ac7f48eee7cea14167b6616" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 21; y: 30 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 24; y: 30 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9424 + hash: "e816757e030c8927d6721295f8685162" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 27; y: 31 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 30; y: 31 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9440 + hash: "48f3a7d217ff85ad6088e18c1b88d6d7" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 33; y: 32 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 35; y: 32 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9456 + hash: "48f3a7d217ff85ad6088e18c1b88d6d7" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 38; y: 32 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 39; y: 33 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9472 + hash: "6cb50f458ba606cc4204727a02e9191b" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 43; y: 33 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 45; y: 33 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9488 + hash: "6cb50f458ba606cc4204727a02e9191b" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 48; y: 33 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 50; y: 33 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9504 + hash: "936d1a2ceed861a48fb3dd0c54cb0982" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 51; y: 33 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 53; y: 33 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9520 + hash: "936d1a2ceed861a48fb3dd0c54cb0982" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 55; y: 33 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9536 + hash: "936d1a2ceed861a48fb3dd0c54cb0982" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 56; y: 33 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 58; y: 33 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9552 + hash: "9fb9dbff35b91d65e1e7ce569baede55" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 61; y: 33 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 64; y: 33 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9568 + hash: "9fb9dbff35b91d65e1e7ce569baede55" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 67; y: 33 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 70; y: 33 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9584 + hash: "78038f8df4ef17a164172c5bce16527d" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 73; y: 33 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 74; y: 34 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9600 + hash: "b390e534fe43678ff031ec9de32b50d0" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 76; y: 34 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9616 + image: "usingLineEdit.10.png" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 77; y: 34 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 78; y: 34 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9632 + hash: "b390e534fe43678ff031ec9de32b50d0" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 79; y: 34 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 80; y: 35 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9648 + hash: "b390e534fe43678ff031ec9de32b50d0" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 81; y: 35 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 84; y: 35 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9664 + hash: "94fa3848acc33accfb607ce31029f06d" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 85; y: 36 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 88; y: 36 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9680 + hash: "b0f808e85cc5721473da7cd84b1987dc" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 89; y: 37 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 91; y: 37 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9696 + hash: "7680aca6b9feccc7e73efa79c1473ce8" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 92; y: 37 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 94; y: 37 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9712 + hash: "ab79f5095d60f5cef526a074ef6d4e96" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 95; y: 37 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 96; y: 37 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9728 + hash: "35c718664fc8e817e26054c307f908f9" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 98; y: 38 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 100; y: 38 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9744 + hash: "23267fdc8202daba400140e51f5e3bdc" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 102; y: 38 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 104; y: 38 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9760 + hash: "0b2765ae503f0194e6e526ea6f9ed8f9" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 105; y: 39 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 108; y: 39 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9776 + hash: "6f6154528c95da216e1f3830de000195" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 109; y: 39 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 110; y: 39 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9792 + hash: "6f6154528c95da216e1f3830de000195" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 111; y: 39 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9808 + hash: "6f6154528c95da216e1f3830de000195" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 112; y: 40 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9824 + hash: "6f6154528c95da216e1f3830de000195" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 113; y: 40 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9840 + hash: "6f6154528c95da216e1f3830de000195" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 114; y: 40 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9856 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 9872 + hash: "6f6154528c95da216e1f3830de000195" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 115; y: 40 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9888 + hash: "6f6154528c95da216e1f3830de000195" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 116; y: 40 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9904 + hash: "6f6154528c95da216e1f3830de000195" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 117; y: 40 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9920 + hash: "6f6154528c95da216e1f3830de000195" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 118; y: 40 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9936 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 9952 + hash: "6f6154528c95da216e1f3830de000195" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 119; y: 40 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9968 + hash: "6f6154528c95da216e1f3830de000195" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 120; y: 40 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9984 + hash: "6f6154528c95da216e1f3830de000195" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 121; y: 40 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 10000 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10016 + hash: "6f6154528c95da216e1f3830de000195" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 122; y: 40 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 10032 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10048 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10064 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10080 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10096 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10112 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10128 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10144 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10160 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10176 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10192 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10208 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10224 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10240 + hash: "6f6154528c95da216e1f3830de000195" + } + Mouse { + type: 3 + button: 1 + buttons: 0 + x: 122; y: 40 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 10256 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10272 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10288 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10304 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10320 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10336 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10352 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10368 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10384 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10400 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10416 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10432 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10448 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10464 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10480 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10496 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10512 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10528 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10544 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10560 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10576 + image: "usingLineEdit.11.png" + } + Frame { + msec: 10592 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10608 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10624 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10640 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10656 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10672 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10688 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10704 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10720 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10736 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10752 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10768 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10784 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10800 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10816 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10832 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10848 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10864 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10880 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10896 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10912 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10928 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10944 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10960 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10976 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10992 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 11008 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 11024 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 11040 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 11056 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 11072 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 11088 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 11104 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 11120 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 11136 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 11152 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 11168 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 11184 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 11200 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 11216 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 11232 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 11248 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 11264 + hash: "6f6154528c95da216e1f3830de000195" + } +} -- cgit v0.12 From bafdb949583a3178449f68afe2e2621687e29de7 Mon Sep 17 00:00:00 2001 From: Michael Dominic K Date: Mon, 22 Nov 2010 10:03:00 +0100 Subject: Dynamically register the event number. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reviewed-by: Samuel Rødal --- tools/qmeegographicssystemhelper/qmeegoswitchevent.cpp | 12 +++++++++++- tools/qmeegographicssystemhelper/qmeegoswitchevent.h | 12 +++++++----- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/tools/qmeegographicssystemhelper/qmeegoswitchevent.cpp b/tools/qmeegographicssystemhelper/qmeegoswitchevent.cpp index b136ce8..22ea0fe 100644 --- a/tools/qmeegographicssystemhelper/qmeegoswitchevent.cpp +++ b/tools/qmeegographicssystemhelper/qmeegoswitchevent.cpp @@ -41,7 +41,9 @@ #include "qmeegoswitchevent.h" -QMeeGoSwitchEvent::QMeeGoSwitchEvent(const QString &graphicsSystemName, QMeeGoSwitchEvent::State s) : QEvent((QEvent::Type) QMeeGoSwitchEvent::SwitchEvent) +static int switchEventNumber = -1; + +QMeeGoSwitchEvent::QMeeGoSwitchEvent(const QString &graphicsSystemName, QMeeGoSwitchEvent::State s) : QEvent(QMeeGoSwitchEvent::eventNumber()) { name = graphicsSystemName; switchState = s; @@ -55,4 +57,12 @@ QString QMeeGoSwitchEvent::graphicsSystemName() const QMeeGoSwitchEvent::State QMeeGoSwitchEvent::state() const { return switchState; +} + +QEvent::Type QMeeGoSwitchEvent::eventNumber() +{ + if (switchEventNumber < 0) + switchEventNumber = QEvent::registerEventType(); + + return (QEvent::Type) switchEventNumber; } \ No newline at end of file diff --git a/tools/qmeegographicssystemhelper/qmeegoswitchevent.h b/tools/qmeegographicssystemhelper/qmeegoswitchevent.h index 2d8371e..0ddbd3d 100644 --- a/tools/qmeegographicssystemhelper/qmeegoswitchevent.h +++ b/tools/qmeegographicssystemhelper/qmeegoswitchevent.h @@ -62,11 +62,6 @@ public: DidSwitch }; - //! The event type id to use to detect this event. - enum Type { - SwitchEvent = QEvent::User + 1024 - }; - //! Constructor for the event. /*! Creates a new event with the given name and the given state. @@ -83,6 +78,13 @@ public: //! Returns the state represented by this event. State state() const; + //! Returns the event type/number for QMeeGoSwitchEvent. + /*! + The type is registered on first access. Use this to detect incoming + QMeeGoSwitchEvents. + */ + QEvent::Type eventNumber(); + private: QString name; State switchState; -- cgit v0.12 From 1ab855cd61581a073da86d2c64be0b889f004327 Mon Sep 17 00:00:00 2001 From: Olivier Goffart Date: Mon, 8 Nov 2010 21:48:52 +0100 Subject: Doc: Q_PROPERTY, implements the setter/getter in the example Some developer thought the implementation of the getters and setters needed to have some metaobject magic Also add a NOTIFY signal in the example Reviewed-by: Joao --- doc/src/snippets/code/doc_src_properties.qdoc | 17 ++++++++++++++--- doc/src/snippets/moc/myclass2.h | 7 +++++-- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/doc/src/snippets/code/doc_src_properties.qdoc b/doc/src/snippets/code/doc_src_properties.qdoc index 7704160..a4ed409 100644 --- a/doc/src/snippets/code/doc_src_properties.qdoc +++ b/doc/src/snippets/code/doc_src_properties.qdoc @@ -91,7 +91,7 @@ for (int i=0; i Date: Tue, 9 Nov 2010 11:17:45 +0100 Subject: Compile on OpenBSD Fail to compile since f3405a516ac30fc7dee1 Reviewed-by: Joao --- src/corelib/thread/qthread_unix.cpp | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/corelib/thread/qthread_unix.cpp b/src/corelib/thread/qthread_unix.cpp index a44a0e8..e3b587d 100644 --- a/src/corelib/thread/qthread_unix.cpp +++ b/src/corelib/thread/qthread_unix.cpp @@ -97,6 +97,11 @@ # define SCHED_IDLE 5 #endif +#if defined(Q_OS_DARWIN) || !defined(Q_OS_OPENBSD) && defined(_POSIX_THREAD_PRIORITY_SCHEDULING) && (_POSIX_THREAD_PRIORITY_SCHEDULING-0 >= 0) +#define QT_HAS_THREAD_PRIORITY_SCHEDULING +#endif + + QT_BEGIN_NAMESPACE #ifndef QT_NO_THREAD @@ -503,6 +508,7 @@ void QThread::usleep(unsigned long usecs) thread_sleep(&ti); } +#ifdef QT_HAS_THREAD_PRIORITY_SCHEDULING // Does some magic and calculate the Unix scheduler priorities // sched_policy is IN/OUT: it must be set to a valid policy before calling this function // sched_priority is OUT only @@ -533,6 +539,7 @@ static bool calculateUnixPriority(int priority, int *sched_policy, int *sched_pr *sched_priority = prio; return true; } +#endif void QThread::start(Priority priority) { @@ -553,7 +560,7 @@ void QThread::start(Priority priority) d->priority = priority; -#if defined(Q_OS_DARWIN) || !defined(Q_OS_OPENBSD) && !defined(Q_OS_SYMBIAN) && defined(_POSIX_THREAD_PRIORITY_SCHEDULING) && (_POSIX_THREAD_PRIORITY_SCHEDULING-0 >= 0) +#if defined(QT_HAS_THREAD_PRIORITY_SCHEDULING) && !defined(Q_OS_SYMBIAN) // ### Need to implement thread sheduling and priorities for symbian os. Implementation removed for now switch (priority) { case InheritPriority: @@ -594,7 +601,7 @@ void QThread::start(Priority priority) break; } } -#endif // _POSIX_THREAD_PRIORITY_SCHEDULING +#endif // QT_HAS_THREAD_PRIORITY_SCHEDULING #ifdef Q_OS_SYMBIAN if (d->stackSize == 0) @@ -757,7 +764,7 @@ void QThread::setPriority(Priority priority) // copied from start() with a few modifications: -#if defined(Q_OS_DARWIN) || !defined(Q_OS_OPENBSD) && defined(_POSIX_THREAD_PRIORITY_SCHEDULING) && (_POSIX_THREAD_PRIORITY_SCHEDULING-0 >= 0) +#ifdef QT_HAS_THREAD_PRIORITY_SCHEDULING int sched_policy; sched_param param; -- cgit v0.12 From 98337a5f32e58c0ea14e2b86b9fe8dcb22bfa4e3 Mon Sep 17 00:00:00 2001 From: Olivier Goffart Date: Fri, 5 Nov 2010 10:05:47 +0100 Subject: QMessageBox: change the documentation to reflect that it is application modal QMessageBox was documented to be window modal, but it is actually application modal. Changing the behaviour now would be dangerous, as QMessageBox reenter the event loop. So update the documentation. Task-bumber: QTBUG-14499 Reviewed-by: Joao Reviewed-by: Denis --- src/gui/dialogs/qmessagebox.cpp | 88 ++++++++++++++--------------------------- 1 file changed, 30 insertions(+), 58 deletions(-) diff --git a/src/gui/dialogs/qmessagebox.cpp b/src/gui/dialogs/qmessagebox.cpp index fe25b0f..2f8b9e2 100644 --- a/src/gui/dialogs/qmessagebox.cpp +++ b/src/gui/dialogs/qmessagebox.cpp @@ -776,10 +776,8 @@ QMessageBox::QMessageBox(QWidget *parent) added at any time using addButton(). The \a parent and \a f arguments are passed to the QDialog constructor. - If \a parent is 0, the message box is an \l{Qt::ApplicationModal} - {application modal} dialog box. If \a parent is a widget, the - message box is \l{Qt::WindowModal} {window modal} relative to \a - parent. + The message box is an \l{Qt::ApplicationModal} {application modal} + dialog box. On Mac OS X, if \a parent is not 0 and you want your message box to appear as a Qt::Sheet of that parent, set the message box's @@ -1549,10 +1547,8 @@ static QMessageBox::StandardButton showNewMessageBox(QWidget *parent, \key Esc was pressed instead, the \l{Default and Escape Keys} {escape button} is returned. - If \a parent is 0, the message box is an \l{Qt::ApplicationModal} - {application modal} dialog box. If \a parent is a widget, the - message box is \l{Qt::WindowModal} {window modal} relative to \a - parent. + The message box is an \l{Qt::ApplicationModal} {application modal} + dialog box. \sa question(), warning(), critical() */ @@ -1579,10 +1575,8 @@ QMessageBox::StandardButton QMessageBox::information(QWidget *parent, const QStr \key Esc was pressed instead, the \l{Default and Escape Keys} {escape button} is returned. - If \a parent is 0, the message box is an \l{Qt::ApplicationModal} - {application modal} dialog box. If \a parent is a widget, the - message box is \l{Qt::WindowModal} {window modal} relative to \a - parent. + The message box is an \l{Qt::ApplicationModal} {application modal} + dialog box. \sa information(), warning(), critical() */ @@ -1607,10 +1601,8 @@ QMessageBox::StandardButton QMessageBox::question(QWidget *parent, const QString \key Esc was pressed instead, the \l{Default and Escape Keys} {escape button} is returned. - If \a parent is 0, the message box is an \l{Qt::ApplicationModal} - {application modal} dialog box. If \a parent is a widget, the - message box is \l{Qt::WindowModal} {window modal} relative to \a - parent. + The message box is an \l{Qt::ApplicationModal} {application modal} + dialog box. \sa question(), information(), critical() */ @@ -1635,10 +1627,8 @@ QMessageBox::StandardButton QMessageBox::warning(QWidget *parent, const QString \key Esc was pressed instead, the \l{Default and Escape Keys} {escape button} is returned. - If \a parent is 0, the message box is an \l{Qt::ApplicationModal} - {application modal} dialog box. If \a parent is a widget, the - message box is \l{Qt::WindowModal} {window modal} relative to \a - parent. + The message box is an \l{Qt::ApplicationModal} {application modal} + dialog box. \warning Do not delete \a parent during the execution of the dialog. If you want to do this, you should create the dialog @@ -1670,7 +1660,7 @@ QMessageBox::StandardButton QMessageBox::critical(QWidget *parent, const QString The about box has a single button labelled "OK". On Mac OS X, the about box is popped up as a modeless window; on other platforms, - it is currently a window modal. + it is currently application modal. \sa QWidget::windowIcon(), QApplication::activeWindow() */ @@ -1723,7 +1713,7 @@ void QMessageBox::about(QWidget *parent, const QString &title, const QString &te QApplication provides this functionality as a slot. On Mac OS X, the about box is popped up as a modeless window; on - other platforms, it is currently window modal. + other platforms, it is currently application modal. \sa QApplication::aboutQt() */ @@ -1983,10 +1973,8 @@ void QMessageBoxPrivate::retranslateStrings() \snippet doc/src/snippets/dialogs/dialogs.cpp 2 - If \a parent is 0, the message box is an \l{Qt::ApplicationModal} - {application modal} dialog box. If \a parent is a widget, the - message box is \l{Qt::WindowModal} {window modal} relative to \a - parent. + The message box is an \l{Qt::ApplicationModal} {application modal} + dialog box. The \a parent and \a f arguments are passed to the QDialog constructor. @@ -2035,10 +2023,8 @@ QMessageBox::QMessageBox(const QString &title, const QString &text, Icon icon, Returns the identity (QMessageBox::Ok, or QMessageBox::No, etc.) of the button that was clicked. - If \a parent is 0, the message box is an \l{Qt::ApplicationModal} - {application modal} dialog box. If \a parent is a widget, the - message box is \l{Qt::WindowModal} {window modal} relative to \a - parent. + The message box is an \l{Qt::ApplicationModal} {application modal} + dialog box. \warning Do not delete \a parent during the execution of the dialog. If you want to do this, you should create the dialog @@ -2073,10 +2059,8 @@ int QMessageBox::information(QWidget *parent, const QString &title, const QStrin supply 0, 1 or 2 to make pressing \key Esc equivalent to clicking the relevant button. - If \a parent is 0, the message box is an \l{Qt::ApplicationModal} - {application modal} dialog box. If \a parent is a widget, the - message box is \l{Qt::WindowModal} {window modal} relative to \a - parent. + The message box is an \l{Qt::ApplicationModal} {application modal} + dialog box. \warning Do not delete \a parent during the execution of the dialog. If you want to do this, you should create the dialog @@ -2125,10 +2109,8 @@ int QMessageBox::information(QWidget *parent, const QString &title, const QStrin Returns the identity (QMessageBox::Yes, or QMessageBox::No, etc.) of the button that was clicked. - If \a parent is 0, the message box is an \l{Qt::ApplicationModal} - {application modal} dialog box. If \a parent is a widget, the - message box is \l{Qt::WindowModal} {window modal} relative to \a - parent. + The message box is an \l{Qt::ApplicationModal} {application modal} + dialog box. \warning Do not delete \a parent during the execution of the dialog. If you want to do this, you should create the dialog @@ -2163,10 +2145,8 @@ int QMessageBox::question(QWidget *parent, const QString &title, const QString& supply 0, 1 or 2 to make pressing Escape equivalent to clicking the relevant button. - If \a parent is 0, the message box is an \l{Qt::ApplicationModal} - {application modal} dialog box. If \a parent is a widget, the - message box is \l{Qt::WindowModal} {window modal} relative to \a - parent. + The message box is an \l{Qt::ApplicationModal} {application modal} + dialog box. \warning Do not delete \a parent during the execution of the dialog. If you want to do this, you should create the dialog @@ -2215,10 +2195,8 @@ int QMessageBox::question(QWidget *parent, const QString &title, const QString& Returns the identity (QMessageBox::Ok or QMessageBox::No or ...) of the button that was clicked. - If \a parent is 0, the message box is an \l{Qt::ApplicationModal} - {application modal} dialog box. If \a parent is a widget, the - message box is \l{Qt::WindowModal} {window modal} relative to \a - parent. + The message box is an \l{Qt::ApplicationModal} {application modal} + dialog box. \warning Do not delete \a parent during the execution of the dialog. If you want to do this, you should create the dialog @@ -2253,10 +2231,8 @@ int QMessageBox::warning(QWidget *parent, const QString &title, const QString& t supply 0, 1, or 2 to make pressing Escape equivalent to clicking the relevant button. - If \a parent is 0, the message box is an \l{Qt::ApplicationModal} - {application modal} dialog box. If \a parent is a widget, the - message box is \l{Qt::WindowModal} {window modal} relative to \a - parent. + The message box is an \l{Qt::ApplicationModal} {application modal} + dialog box. \warning Do not delete \a parent during the execution of the dialog. If you want to do this, you should create the dialog @@ -2304,10 +2280,8 @@ int QMessageBox::warning(QWidget *parent, const QString &title, const QString& t Returns the identity (QMessageBox::Ok, or QMessageBox::No, etc.) of the button that was clicked. - If \a parent is 0, the message box is an \l{Qt::ApplicationModal} - {application modal} dialog box. If \a parent is a widget, the - message box is \l{Qt::WindowModal} {window modal} relative to \a - parent. + The message box is an \l{Qt::ApplicationModal} {application modal} + dialog box. \warning Do not delete \a parent during the execution of the dialog. If you want to do this, you should create the dialog @@ -2343,10 +2317,8 @@ int QMessageBox::critical(QWidget *parent, const QString &title, const QString& supply 0, 1, or 2 to make pressing Escape equivalent to clicking the relevant button. - If \a parent is 0, the message box is an \l{Qt::ApplicationModal} - {application modal} dialog box. If \a parent is a widget, the - message box is \l{Qt::WindowModal} {window modal} relative to \a - parent. + The message box is an \l{Qt::ApplicationModal} {application modal} + dialog box. \warning Do not delete \a parent during the execution of the dialog. If you want to do this, you should create the dialog -- cgit v0.12 From 202433ee1fd377ac36dc55fb466b9fc616b4d4fd Mon Sep 17 00:00:00 2001 From: Olivier Goffart Date: Fri, 19 Nov 2010 09:57:18 +0100 Subject: QThread::exec(): Fix possibility to enter several time the event loop If one call exit() before calling exec(), this should prevent the event loop from starting once, but later calls to exec() should work. This is a regression against Qt 4.6 introduced when fixing QTBUG-1184 Task-number: QTBUG-15378 Reviewed-by: Joao Reviewed-by: Brad --- src/corelib/thread/qthread.cpp | 4 +++- tests/auto/qthread/tst_qthread.cpp | 40 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+), 1 deletion(-) diff --git a/src/corelib/thread/qthread.cpp b/src/corelib/thread/qthread.cpp index 69b70cb..6fb182b 100644 --- a/src/corelib/thread/qthread.cpp +++ b/src/corelib/thread/qthread.cpp @@ -482,8 +482,10 @@ int QThread::exec() Q_D(QThread); QMutexLocker locker(&d->mutex); d->data->quitNow = false; - if (d->exited) + if (d->exited) { + d->exited = false; return d->returnCode; + } locker.unlock(); QEventLoop eventLoop; diff --git a/tests/auto/qthread/tst_qthread.cpp b/tests/auto/qthread/tst_qthread.cpp index 843749a..85b8f04 100644 --- a/tests/auto/qthread/tst_qthread.cpp +++ b/tests/auto/qthread/tst_qthread.cpp @@ -106,6 +106,7 @@ private slots: void adoptMultipleThreads(); void QTBUG13810_exitAndStart(); + void QTBUG15378_exitAndExec(); void stressTest(); }; @@ -976,5 +977,44 @@ void tst_QThread::QTBUG13810_exitAndStart() } +void tst_QThread::QTBUG15378_exitAndExec() +{ + class Thread : public QThread { + public: + QSemaphore sem1; + QSemaphore sem2; + volatile int value; + void run() { + sem1.acquire(); + value = exec(); //First entrence + sem2.release(); + value = exec(); // Second loop + } + }; + Thread thread; + thread.value = 0; + thread.start(); + thread.exit(556); + thread.sem1.release(); //should exit the first loop + thread.sem2.acquire(); + QCOMPARE(int(thread.value), 556); + + //test that the thread is running by executing queued connected signal there + Syncronizer sync1; + sync1.moveToThread(&thread); + Syncronizer sync2; + sync2.moveToThread(&thread); + connect(&sync2, SIGNAL(propChanged(int)), &sync1, SLOT(setProp(int)), Qt::QueuedConnection); + connect(&sync1, SIGNAL(propChanged(int)), &thread, SLOT(quit()), Qt::QueuedConnection); + QMetaObject::invokeMethod(&sync2, "setProp", Qt::QueuedConnection , Q_ARG(int, 89)); + QTest::qWait(50); + while(!thread.wait(10)) + QTest::qWait(10); + QCOMPARE(sync2.m_prop, 89); + QCOMPARE(sync1.m_prop, 89); +} + + + QTEST_MAIN(tst_QThread) #include "tst_qthread.moc" -- cgit v0.12 From 4214d58abd394eea2793f05a554bd9885b53d418 Mon Sep 17 00:00:00 2001 From: "Bradley T. Hughes" Date: Mon, 22 Nov 2010 10:52:31 +0100 Subject: Compile when USER_TIMER_MINIMUM isn't defined Just user a value of zero instead. Windows will use USER_TIMER_MINIMUM anyways (according to the SetTimer() docs). Reviewed-by: trustme --- src/corelib/kernel/qeventdispatcher_win.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/corelib/kernel/qeventdispatcher_win.cpp b/src/corelib/kernel/qeventdispatcher_win.cpp index 3dccda6..4eb0073 100644 --- a/src/corelib/kernel/qeventdispatcher_win.cpp +++ b/src/corelib/kernel/qeventdispatcher_win.cpp @@ -538,7 +538,7 @@ LRESULT QT_WIN_CALLBACK qt_GetMessageHook(int code, WPARAM wp, LPARAM lp) // there are still input and timer messages in the message queue d->sendPostedEventsWindowsTimerId = SetTimer(d->internalHwnd, SendPostedEventsWindowsTimerId, - USER_TIMER_MINIMUM, + 0, // we specify zero, but Windows uses USER_TIMER_MINIMUM NULL); // we don't check the return value of SetTimer()... if creating the timer failed, there's little // we can do. we just have to accept that posted events will be starved -- cgit v0.12 From 348fef0a406006ac813732ad5b8a143d8a63e879 Mon Sep 17 00:00:00 2001 From: Miikka Heikkinen Date: Mon, 22 Nov 2010 12:55:43 +0200 Subject: Fix a build break when namespace is defined Reviewed-by: Jani Hautakangas --- src/opengl/gl2paintengineex/qtriangulator.cpp | 34 +++++++++++++-------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/src/opengl/gl2paintengineex/qtriangulator.cpp b/src/opengl/gl2paintengineex/qtriangulator.cpp index 4c3deb6..75d5ce2 100644 --- a/src/opengl/gl2paintengineex/qtriangulator.cpp +++ b/src/opengl/gl2paintengineex/qtriangulator.cpp @@ -339,7 +339,7 @@ static inline qint64 qPointDistanceFromLine(const QPodPoint &p, const QPodPoint static inline bool qPointIsLeftOfLine(const QPodPoint &p, const QPodPoint &v1, const QPodPoint &v2) { - return ::qPointDistanceFromLine(p, v1, v2) < 0; + return QT_PREPEND_NAMESPACE(qPointDistanceFromLine)(p, v1, v2) < 0; } // Return: @@ -1741,7 +1741,7 @@ bool QTriangulator::ComplexToSimple::calculateIntersection(int left, int righ Intersection intersection; intersection.leftEdge = left; intersection.rightEdge = right; - intersection.intersectionPoint = ::qIntersectionPoint(u1, u2, v1, v2); + intersection.intersectionPoint = QT_PREPEND_NAMESPACE(qIntersectionPoint)(u1, u2, v1, v2); if (!intersection.intersectionPoint.isValid()) return false; @@ -1767,10 +1767,10 @@ bool QTriangulator::ComplexToSimple::edgeIsLeftOfEdge(int leftEdgeIndex, int return true; if (upper.x > qMax(l.x, u.x)) return false; - qint64 d = ::qPointDistanceFromLine(upper, l, u); + qint64 d = QT_PREPEND_NAMESPACE(qPointDistanceFromLine)(upper, l, u); // d < 0: left, d > 0: right, d == 0: on top if (d == 0) - d = ::qPointDistanceFromLine(m_parent->m_vertices.at(leftEdge.lower()), l, u); + d = QT_PREPEND_NAMESPACE(qPointDistanceFromLine)(m_parent->m_vertices.at(leftEdge.lower()), l, u); return d < 0; } @@ -1814,7 +1814,7 @@ QPair::Node *, QRBTree::Node *> QTriangulator::ComplexToSim while (current) { const QPodPoint &v1 = m_parent->m_vertices.at(m_edges.at(current->data).lower()); const QPodPoint &v2 = m_parent->m_vertices.at(m_edges.at(current->data).upper()); - qint64 d = ::qPointDistanceFromLine(point, v1, v2); + qint64 d = QT_PREPEND_NAMESPACE(qPointDistanceFromLine)(point, v1, v2); if (d == 0) { result.first = result.second = current; break; @@ -1828,7 +1828,7 @@ QPair::Node *, QRBTree::Node *> QTriangulator::ComplexToSim while (current) { const QPodPoint &v1 = m_parent->m_vertices.at(m_edges.at(current->data).lower()); const QPodPoint &v2 = m_parent->m_vertices.at(m_edges.at(current->data).upper()); - qint64 d = ::qPointDistanceFromLine(point, v1, v2); + qint64 d = QT_PREPEND_NAMESPACE(qPointDistanceFromLine)(point, v1, v2); Q_ASSERT(d >= 0); if (d == 0) { result.first = current; @@ -1842,7 +1842,7 @@ QPair::Node *, QRBTree::Node *> QTriangulator::ComplexToSim while (current) { const QPodPoint &v1 = m_parent->m_vertices.at(m_edges.at(current->data).lower()); const QPodPoint &v2 = m_parent->m_vertices.at(m_edges.at(current->data).upper()); - qint64 d = ::qPointDistanceFromLine(point, v1, v2); + qint64 d = QT_PREPEND_NAMESPACE(qPointDistanceFromLine)(point, v1, v2); Q_ASSERT(d <= 0); if (d == 0) { result.second = current; @@ -1864,7 +1864,7 @@ QPair::Node *, QRBTree::Node *> QTriangulator::ComplexToSim while (current) { const QPodPoint &v1 = m_parent->m_vertices.at(m_edges.at(current->data).lower()); const QPodPoint &v2 = m_parent->m_vertices.at(m_edges.at(current->data).upper()); - qint64 d = ::qPointDistanceFromLine(point, v1, v2); + qint64 d = QT_PREPEND_NAMESPACE(qPointDistanceFromLine)(point, v1, v2); if (d == 0) break; if (d < 0) { @@ -1885,7 +1885,7 @@ QPair::Node *, QRBTree::Node *> QTriangulator::ComplexToSim while (current) { const QPodPoint &v1 = m_parent->m_vertices.at(m_edges.at(current->data).lower()); const QPodPoint &v2 = m_parent->m_vertices.at(m_edges.at(current->data).upper()); - qint64 d = ::qPointDistanceFromLine(point, v1, v2); + qint64 d = QT_PREPEND_NAMESPACE(qPointDistanceFromLine)(point, v1, v2); Q_ASSERT(d >= 0); if (d == 0) { current = current->left; @@ -1899,7 +1899,7 @@ QPair::Node *, QRBTree::Node *> QTriangulator::ComplexToSim while (current) { const QPodPoint &v1 = m_parent->m_vertices.at(m_edges.at(current->data).lower()); const QPodPoint &v2 = m_parent->m_vertices.at(m_edges.at(current->data).upper()); - qint64 d = ::qPointDistanceFromLine(point, v1, v2); + qint64 d = QT_PREPEND_NAMESPACE(qPointDistanceFromLine)(point, v1, v2); Q_ASSERT(d <= 0); if (d == 0) { current = current->right; @@ -1962,7 +1962,7 @@ void QTriangulator::ComplexToSimple::reorderEdgeListRange(QRBTree::Node template void QTriangulator::ComplexToSimple::sortEdgeList(const QPodPoint eventPoint) { - QIntersectionPoint eventPoint2 = ::qIntersectionPoint(eventPoint); + QIntersectionPoint eventPoint2 = QT_PREPEND_NAMESPACE(qIntersectionPoint)(eventPoint); while (!m_topIntersection.isEmpty() && m_topIntersection.top().intersectionPoint < eventPoint2) { Intersection intersection = m_topIntersection.pop(); @@ -2056,7 +2056,7 @@ void QTriangulator::ComplexToSimple::calculateIntersections() QPair::Node *, QRBTree::Node *> range = bounds(event.point); QRBTree::Node *leftNode = range.first ? m_edgeList.previous(range.first) : 0; int vertex = (event.type == Event::Upper ? m_edges.at(event.edge).upper() : m_edges.at(event.edge).lower()); - QIntersectionPoint eventPoint = ::qIntersectionPoint(event.point); + QIntersectionPoint eventPoint = QT_PREPEND_NAMESPACE(qIntersectionPoint)(event.point); if (range.first != 0) { splitEdgeListRange(range.first, range.second, vertex, eventPoint); @@ -2213,7 +2213,7 @@ void QTriangulator::ComplexToSimple::removeUnwantedEdgesAndConnect() while (current != b.second) { Q_ASSERT(current); Q_ASSERT(m_edges.at(current->data).node == current); - Q_ASSERT(::qIntersectionPoint(event.point).isOnLine(m_parent->m_vertices.at(m_edges.at(current->data).from), m_parent->m_vertices.at(m_edges.at(current->data).to))); + Q_ASSERT(QT_PREPEND_NAMESPACE(qIntersectionPoint)(event.point).isOnLine(m_parent->m_vertices.at(m_edges.at(current->data).from), m_parent->m_vertices.at(m_edges.at(current->data).to))); Q_ASSERT(m_parent->m_vertices.at(m_edges.at(current->data).from) == event.point || m_parent->m_vertices.at(m_edges.at(current->data).to) == event.point); insertEdgeIntoVectorIfWanted(orderedEdges, current->data); current = m_edgeList.next(current); @@ -2612,10 +2612,10 @@ bool QTriangulator::SimpleToMonotone::edgeIsLeftOfEdge(int leftEdgeIndex, int const Edge &rightEdge = m_edges.at(rightEdgeIndex); const QPodPoint &u = m_parent->m_vertices.at(rightEdge.upper()); const QPodPoint &l = m_parent->m_vertices.at(rightEdge.lower()); - qint64 d = ::qPointDistanceFromLine(m_parent->m_vertices.at(leftEdge.upper()), l, u); + qint64 d = QT_PREPEND_NAMESPACE(qPointDistanceFromLine)(m_parent->m_vertices.at(leftEdge.upper()), l, u); // d < 0: left, d > 0: right, d == 0: on top if (d == 0) - d = ::qPointDistanceFromLine(m_parent->m_vertices.at(leftEdge.lower()), l, u); + d = QT_PREPEND_NAMESPACE(qPointDistanceFromLine)(m_parent->m_vertices.at(leftEdge.lower()), l, u); return d < 0; } @@ -2645,7 +2645,7 @@ QRBTree::Node *QTriangulator::SimpleToMonotone::searchEdgeLeftOfPoint(in while (current) { const QPodPoint &p1 = m_parent->m_vertices.at(m_edges.at(current->data).lower()); const QPodPoint &p2 = m_parent->m_vertices.at(m_edges.at(current->data).upper()); - qint64 d = ::qPointDistanceFromLine(m_parent->m_vertices.at(pointIndex), p1, p2); + qint64 d = QT_PREPEND_NAMESPACE(qPointDistanceFromLine)(m_parent->m_vertices.at(pointIndex), p1, p2); if (d <= 0) { current = current->left; } else { @@ -2668,7 +2668,7 @@ void QTriangulator::SimpleToMonotone::classifyVertex(int i) const QPodPoint &p1 = m_parent->m_vertices.at(e1.from); const QPodPoint &p2 = m_parent->m_vertices.at(e2.from); const QPodPoint &p3 = m_parent->m_vertices.at(e2.to); - qint64 d = ::qPointDistanceFromLine(p1, p2, p3); + qint64 d = QT_PREPEND_NAMESPACE(qPointDistanceFromLine)(p1, p2, p3); Q_ASSERT(d != 0 || (!startOrSplit && !endOrMerge)); e2.type = RegularVertex; -- cgit v0.12 From 7abb03d75155cef86df58f117031b092b637876f Mon Sep 17 00:00:00 2001 From: Eskil Abrahamsen Blomfeldt Date: Mon, 22 Nov 2010 12:07:01 +0100 Subject: Round origin of text in OpenVG engine The origin of text needs to be rounded, just like the translation in the transform because text drawn at subpixel positions is unsupported on some devices. Since the font is integer-based, the advance-array does not need to be rounded. Task-number: QTBUG-15263 Reviewed-by: Jason Barron --- src/openvg/qpaintengine_vg.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/openvg/qpaintengine_vg.cpp b/src/openvg/qpaintengine_vg.cpp index aea203f..430575b 100644 --- a/src/openvg/qpaintengine_vg.cpp +++ b/src/openvg/qpaintengine_vg.cpp @@ -3543,8 +3543,8 @@ void QVGPaintEngine::drawStaticTextItem(QStaticTextItem *textItem) // Set the glyph drawing origin. VGfloat origin[2]; - origin[0] = positions[0].x.toReal(); - origin[1] = positions[0].y.toReal(); + origin[0] = positions[0].x.round().toReal(); + origin[1] = positions[0].y.round().toReal(); vgSetfv(VG_GLYPH_ORIGIN, 2, origin); // Fast anti-aliasing for paths, better for images. -- cgit v0.12 From d7d0b1528fd200fc3110093244b8265fdf457238 Mon Sep 17 00:00:00 2001 From: Miikka Heikkinen Date: Mon, 22 Nov 2010 15:14:25 +0200 Subject: Fix symbian-mmp.conf include path Use $$[QT_INSTALL_DATA] instead of $$[QT_INSTALL_PREFIX] when adding include path that points under mkspecs. Task-number: QTBUG-15501 Reviewed-by: axis --- mkspecs/common/symbian/symbian-mmp.conf | 4 ++-- mkspecs/features/symbian/stl.prf | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/mkspecs/common/symbian/symbian-mmp.conf b/mkspecs/common/symbian/symbian-mmp.conf index 1fbd302..4d554bd 100644 --- a/mkspecs/common/symbian/symbian-mmp.conf +++ b/mkspecs/common/symbian/symbian-mmp.conf @@ -18,8 +18,8 @@ MMP_RULES += $$MMP_RULES_DONT_EXPORT_ALL_CLASS_IMPEDIMENTA SYMBIAN_PLATFORMS = WINSCW GCCE ARMV5 ARMV6 INCLUDEPATH = \ - $$[QT_INSTALL_PREFIX]/mkspecs/common/symbian/stl-off \ - $$[QT_INSTALL_PREFIX]/mkspecs/common/symbian \ + $$[QT_INSTALL_DATA]/mkspecs/common/symbian/stl-off \ + $$[QT_INSTALL_DATA]/mkspecs/common/symbian \ $${EPOCROOT}epoc32/include \ $$OS_LAYER_LIBC_SYSTEMINCLUDE \ $$INCLUDEPATH diff --git a/mkspecs/features/symbian/stl.prf b/mkspecs/features/symbian/stl.prf index 65d4b93..1fd5e16 100644 --- a/mkspecs/features/symbian/stl.prf +++ b/mkspecs/features/symbian/stl.prf @@ -12,7 +12,7 @@ INCLUDEPATH += $$OS_LAYER_STDCPP_SYSTEMINCLUDE # Remove mkspecs/common/symbian/stl-off from beginning of includepath # in order to use new and delete operators from STL -INCLUDEPATH -= $$[QT_INSTALL_PREFIX]/mkspecs/common/symbian/stl-off +INCLUDEPATH -= $$[QT_INSTALL_DATA]/mkspecs/common/symbian/stl-off # libstdcppv5 is preferred over libstdcpp as it has/uses the throwing version of operator new # STDCPP turns on standard C++ new behaviour (ie. throwing new) -- cgit v0.12 From 37f4e51127081f393743b5023f61ec48674cf7a2 Mon Sep 17 00:00:00 2001 From: Olivier Goffart Date: Mon, 22 Nov 2010 20:37:18 +0100 Subject: tst_qthread: fix compilation --- tests/auto/qthread/tst_qthread.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/auto/qthread/tst_qthread.cpp b/tests/auto/qthread/tst_qthread.cpp index 85b8f04..b0efb5a 100644 --- a/tests/auto/qthread/tst_qthread.cpp +++ b/tests/auto/qthread/tst_qthread.cpp @@ -997,7 +997,8 @@ void tst_QThread::QTBUG15378_exitAndExec() thread.exit(556); thread.sem1.release(); //should exit the first loop thread.sem2.acquire(); - QCOMPARE(int(thread.value), 556); + int v = thread.value; + QCOMPARE(v, 556); //test that the thread is running by executing queued connected signal there Syncronizer sync1; -- cgit v0.12 From ea84d7431810951aff2d6f85dca5f4ae4aeb4490 Mon Sep 17 00:00:00 2001 From: Sergio Ahumada Date: Mon, 22 Nov 2010 22:49:36 +0100 Subject: Doc: Fixing typo --- src/gui/text/qfontengine_x11.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/text/qfontengine_x11.cpp b/src/gui/text/qfontengine_x11.cpp index b7e4be2..c06be3b 100644 --- a/src/gui/text/qfontengine_x11.cpp +++ b/src/gui/text/qfontengine_x11.cpp @@ -429,7 +429,7 @@ void QFontEngineXLFD::recalcAdvances(QGlyphLayout *glyphs, QTextEngine::ShaperFl { int i = glyphs->numGlyphs; XCharStruct *xcs; - // inlined for better perfomance + // inlined for better performance if (!_fs->per_char) { xcs = &_fs->min_bounds; while (i != 0) { -- cgit v0.12 From 787fd44a917f31d52b35cf168f2821d23d8be694 Mon Sep 17 00:00:00 2001 From: Damian Jansen Date: Tue, 23 Nov 2010 12:04:23 +1000 Subject: Prevent crash when calling reload() from within a .qml Task-number: QTBUG-15493 --- tools/qml/qmlruntime.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/qml/qmlruntime.cpp b/tools/qml/qmlruntime.cpp index 78bc409..7ea77d1 100644 --- a/tools/qml/qmlruntime.cpp +++ b/tools/qml/qmlruntime.cpp @@ -1012,7 +1012,7 @@ void QDeclarativeViewer::addPluginPath(const QString& plugin) void QDeclarativeViewer::reload() { - open(currentFileOrUrl); + launch(currentFileOrUrl); } void QDeclarativeViewer::openFile() -- cgit v0.12 From 52068f57f9c32098a90cc217730a530f85590f65 Mon Sep 17 00:00:00 2001 From: Martin Jones Date: Tue, 23 Nov 2010 13:44:39 +1000 Subject: Ensure WebView press delay timer is cancelled when grab is taken. Flickable steals the grab, but the timer was not stopped and the keepGrab flag is set and the mouse grabbed. This means that the WebView now has the grab and subsequent clicks on another element are ignored. Task-number: QTBUG-15529 Reviewed-by: Joona Petrell --- .../WebKit/qt/declarative/qdeclarativewebview.cpp | 10 + .../WebKit/qt/declarative/qdeclarativewebview_p.h | 2 + .../webview/flickable/data/flickweb.0.png | Bin 0 -> 2812 bytes .../webview/flickable/data/flickweb.1.png | Bin 0 -> 2812 bytes .../webview/flickable/data/flickweb.10.png | Bin 0 -> 2829 bytes .../webview/flickable/data/flickweb.2.png | Bin 0 -> 3466 bytes .../webview/flickable/data/flickweb.3.png | Bin 0 -> 2812 bytes .../webview/flickable/data/flickweb.4.png | Bin 0 -> 2829 bytes .../webview/flickable/data/flickweb.5.png | Bin 0 -> 2829 bytes .../webview/flickable/data/flickweb.6.png | Bin 0 -> 2768 bytes .../webview/flickable/data/flickweb.7.png | Bin 0 -> 2829 bytes .../webview/flickable/data/flickweb.8.png | Bin 0 -> 2829 bytes .../webview/flickable/data/flickweb.9.png | Bin 0 -> 2829 bytes .../qmlvisual/webview/flickable/data/flickweb.qml | 6083 ++++++++++++++++++++ .../qmlvisual/webview/flickable/flickweb.qml | 35 + .../qmlvisual/webview/flickable/qtlogo.png | Bin 0 -> 2738 bytes .../qmlvisual/webview/flickable/test.html | 3 + 17 files changed, 6133 insertions(+) create mode 100644 tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.0.png create mode 100644 tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.1.png create mode 100644 tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.10.png create mode 100644 tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.2.png create mode 100644 tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.3.png create mode 100644 tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.4.png create mode 100644 tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.5.png create mode 100644 tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.6.png create mode 100644 tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.7.png create mode 100644 tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.8.png create mode 100644 tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.9.png create mode 100644 tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.qml create mode 100644 tests/auto/declarative/qmlvisual/webview/flickable/flickweb.qml create mode 100644 tests/auto/declarative/qmlvisual/webview/flickable/qtlogo.png create mode 100644 tests/auto/declarative/qmlvisual/webview/flickable/test.html diff --git a/src/3rdparty/webkit/WebKit/qt/declarative/qdeclarativewebview.cpp b/src/3rdparty/webkit/WebKit/qt/declarative/qdeclarativewebview.cpp index e4f70de..7a8aae7 100644 --- a/src/3rdparty/webkit/WebKit/qt/declarative/qdeclarativewebview.cpp +++ b/src/3rdparty/webkit/WebKit/qt/declarative/qdeclarativewebview.cpp @@ -141,6 +141,16 @@ void GraphicsWebView::mouseMoveEvent(QGraphicsSceneMouseEvent* event) QGraphicsWebView::mouseMoveEvent(event); } +bool GraphicsWebView::sceneEvent(QEvent *event) +{ + bool rv = QGraphicsWebView::sceneEvent(event); + if (event->type() == QEvent::UngrabMouse) { + pressTimer.stop(); + parent->setKeepMouseGrab(false); + } + return rv; +} + /*! \qmlclass WebView QDeclarativeWebView \ingroup qml-view-elements diff --git a/src/3rdparty/webkit/WebKit/qt/declarative/qdeclarativewebview_p.h b/src/3rdparty/webkit/WebKit/qt/declarative/qdeclarativewebview_p.h index b2055bf..ca15a1e 100644 --- a/src/3rdparty/webkit/WebKit/qt/declarative/qdeclarativewebview_p.h +++ b/src/3rdparty/webkit/WebKit/qt/declarative/qdeclarativewebview_p.h @@ -70,6 +70,8 @@ protected: void mouseMoveEvent(QGraphicsSceneMouseEvent* event); void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event); void timerEvent(QTimerEvent* event); + bool sceneEvent(QEvent *event); + Q_SIGNALS: void doubleClick(int clickX, int clickY); private: diff --git a/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.0.png b/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.0.png new file mode 100644 index 0000000..513aab6 Binary files /dev/null and b/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.0.png differ diff --git a/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.1.png b/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.1.png new file mode 100644 index 0000000..513aab6 Binary files /dev/null and b/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.1.png differ diff --git a/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.10.png b/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.10.png new file mode 100644 index 0000000..bb22d01 Binary files /dev/null and b/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.10.png differ diff --git a/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.2.png b/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.2.png new file mode 100644 index 0000000..1357551 Binary files /dev/null and b/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.2.png differ diff --git a/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.3.png b/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.3.png new file mode 100644 index 0000000..513aab6 Binary files /dev/null and b/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.3.png differ diff --git a/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.4.png b/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.4.png new file mode 100644 index 0000000..bb22d01 Binary files /dev/null and b/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.4.png differ diff --git a/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.5.png b/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.5.png new file mode 100644 index 0000000..bb22d01 Binary files /dev/null and b/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.5.png differ diff --git a/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.6.png b/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.6.png new file mode 100644 index 0000000..c61ae3f Binary files /dev/null and b/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.6.png differ diff --git a/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.7.png b/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.7.png new file mode 100644 index 0000000..bb22d01 Binary files /dev/null and b/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.7.png differ diff --git a/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.8.png b/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.8.png new file mode 100644 index 0000000..bb22d01 Binary files /dev/null and b/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.8.png differ diff --git a/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.9.png b/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.9.png new file mode 100644 index 0000000..bb22d01 Binary files /dev/null and b/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.9.png differ diff --git a/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.qml b/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.qml new file mode 100644 index 0000000..c248167 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.qml @@ -0,0 +1,6083 @@ +import Qt.VisualTest 4.7 + +VisualTest { + Frame { + msec: 0 + } + Frame { + msec: 16 + image: "flickweb.0.png" + } + Frame { + msec: 32 + hash: "d045839439e4091210c745f0ea173e52" + } + Frame { + msec: 48 + hash: "d045839439e4091210c745f0ea173e52" + } + Frame { + msec: 64 + hash: "d045839439e4091210c745f0ea173e52" + } + Frame { + msec: 80 + hash: "d045839439e4091210c745f0ea173e52" + } + Frame { + msec: 96 + hash: "d045839439e4091210c745f0ea173e52" + } + Frame { + msec: 112 + hash: "d045839439e4091210c745f0ea173e52" + } + Frame { + msec: 128 + hash: "d045839439e4091210c745f0ea173e52" + } + Frame { + msec: 144 + hash: "d045839439e4091210c745f0ea173e52" + } + Frame { + msec: 160 + hash: "d045839439e4091210c745f0ea173e52" + } + Frame { + msec: 176 + hash: "d045839439e4091210c745f0ea173e52" + } + Frame { + msec: 192 + hash: "d045839439e4091210c745f0ea173e52" + } + Frame { + msec: 208 + hash: "d045839439e4091210c745f0ea173e52" + } + Frame { + msec: 224 + hash: "d045839439e4091210c745f0ea173e52" + } + Frame { + msec: 240 + hash: "d045839439e4091210c745f0ea173e52" + } + Frame { + msec: 256 + hash: "d045839439e4091210c745f0ea173e52" + } + Frame { + msec: 272 + hash: "d045839439e4091210c745f0ea173e52" + } + Frame { + msec: 288 + hash: "d045839439e4091210c745f0ea173e52" + } + Frame { + msec: 304 + hash: "d045839439e4091210c745f0ea173e52" + } + Frame { + msec: 320 + hash: "d045839439e4091210c745f0ea173e52" + } + Frame { + msec: 336 + hash: "d045839439e4091210c745f0ea173e52" + } + Frame { + msec: 352 + hash: "d045839439e4091210c745f0ea173e52" + } + Frame { + msec: 368 + hash: "d045839439e4091210c745f0ea173e52" + } + Frame { + msec: 384 + hash: "d045839439e4091210c745f0ea173e52" + } + Frame { + msec: 400 + hash: "d045839439e4091210c745f0ea173e52" + } + Frame { + msec: 416 + hash: "d045839439e4091210c745f0ea173e52" + } + Frame { + msec: 432 + hash: "d045839439e4091210c745f0ea173e52" + } + Frame { + msec: 448 + hash: "d045839439e4091210c745f0ea173e52" + } + Frame { + msec: 464 + hash: "d045839439e4091210c745f0ea173e52" + } + Frame { + msec: 480 + hash: "d045839439e4091210c745f0ea173e52" + } + Frame { + msec: 496 + hash: "d045839439e4091210c745f0ea173e52" + } + Frame { + msec: 512 + hash: "d045839439e4091210c745f0ea173e52" + } + Frame { + msec: 528 + hash: "d045839439e4091210c745f0ea173e52" + } + Frame { + msec: 544 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 0; y: 7 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 0; y: 7 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 560 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 12; y: 10 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 576 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 15; y: 11 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 592 + hash: "d045839439e4091210c745f0ea173e52" + } + Frame { + msec: 608 + hash: "d045839439e4091210c745f0ea173e52" + } + Frame { + msec: 624 + hash: "d045839439e4091210c745f0ea173e52" + } + Frame { + msec: 640 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 12; y: 10 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 11; y: 10 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 656 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 9; y: 10 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 672 + hash: "d045839439e4091210c745f0ea173e52" + } + Frame { + msec: 688 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 9; y: 11 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 704 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 9; y: 12 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 9; y: 15 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 720 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 9; y: 18 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 12; y: 24 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 736 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 14; y: 28 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 18; y: 35 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 752 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 19; y: 39 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 22; y: 43 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 768 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 22; y: 44 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 23; y: 44 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 784 + hash: "d045839439e4091210c745f0ea173e52" + } + Frame { + msec: 800 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 23; y: 43 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 816 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 24; y: 45 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 832 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 26; y: 47 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 28; y: 49 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 848 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 29; y: 51 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 32; y: 55 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 864 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 34; y: 57 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 36; y: 61 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 880 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 38; y: 62 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 41; y: 66 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 896 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 43; y: 68 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 48; y: 73 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 912 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 50; y: 76 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 57; y: 80 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 928 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 63; y: 85 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 66; y: 87 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 944 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 72; y: 91 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 74; y: 93 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 960 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 80; y: 97 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 82; y: 99 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 976 + image: "flickweb.1.png" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 86; y: 102 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 88; y: 103 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 992 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 91; y: 103 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 92; y: 104 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1008 + hash: "d045839439e4091210c745f0ea173e52" + } + Frame { + msec: 1024 + hash: "d045839439e4091210c745f0ea173e52" + } + Frame { + msec: 1040 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 92; y: 105 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1056 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 92; y: 106 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1072 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 92; y: 107 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 92; y: 108 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1088 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 92; y: 109 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1104 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 92; y: 110 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 92; y: 111 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1120 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 92; y: 112 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1136 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 92; y: 113 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 92; y: 114 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1152 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 92; y: 115 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 92; y: 116 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1168 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 92; y: 117 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1184 + hash: "d045839439e4091210c745f0ea173e52" + } + Frame { + msec: 1200 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 2 + button: 1 + buttons: 1 + x: 92; y: 117 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1216 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 92; y: 116 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 92; y: 115 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1232 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 91; y: 112 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 91; y: 111 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1248 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 90; y: 107 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 90; y: 104 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1264 + hash: "e891b00cd44578b4a8e635ffe4c6d3fd" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 90; y: 101 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 89; y: 96 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1280 + hash: "61a543282ffb5e751ea1d97f0c95b208" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 89; y: 93 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 89; y: 85 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1296 + hash: "102e4b664bade46ab3bbb611acee22c9" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 89; y: 81 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 87; y: 70 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1312 + hash: "6bf42ac28a14db681442aeb7ed0c7610" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 85; y: 60 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 3 + button: 1 + buttons: 0 + x: 85; y: 60 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 84; y: 56 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1328 + hash: "ef531060d6b75cec8a6e3c01b3f69cc0" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 84; y: 51 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 84; y: 49 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1344 + hash: "e839af9d67f6214f0901977b3aa96d1a" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 84; y: 46 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 84; y: 43 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1360 + hash: "b2d6b68f1f7229e8e65bb37e4c418a1b" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 84; y: 41 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 85; y: 39 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1376 + hash: "e4a562aa35aa532d15c9b129e22797bb" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 83; y: 38 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1392 + hash: "029d347e9c99dd4a9cec5120ac7fc25e" + } + Frame { + msec: 1408 + hash: "3c16a74e18a59630f35511ab5514c769" + } + Frame { + msec: 1424 + hash: "5dc472d6c5198d5a628510bd45a61a11" + } + Frame { + msec: 1440 + hash: "430d60127ed59dbc5904647424ead40d" + } + Frame { + msec: 1456 + hash: "cb27cfcfbbb77b55c2a8bf7e51c0af07" + } + Frame { + msec: 1472 + hash: "46f2eb33b0e8316c4123ddbee2f60ae2" + } + Frame { + msec: 1488 + hash: "1df306111ca012c9f405018778c0a12b" + } + Frame { + msec: 1504 + hash: "1eafab8fd457ad9acda068344178b4a8" + } + Frame { + msec: 1520 + hash: "286656898100e53d6d7728b51ce93df5" + } + Frame { + msec: 1536 + hash: "e2a88f0ba3030a430028147930989bbb" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 84; y: 38 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1552 + hash: "fb23cf265c4d253470c2515043bc5dd8" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 83; y: 38 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1568 + hash: "1dba4f0e5e5948b7133725ea8bbef3e7" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 83; y: 37 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 84; y: 38 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1584 + hash: "8578965c5ad012284e4e0a14a42da25e" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 84; y: 34 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1600 + hash: "3ef187decae08baa2ec92998c2cbb7f7" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 83; y: 31 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1616 + hash: "4e0491128eac0bbfa7a131b1f18f243c" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 83; y: 26 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1632 + hash: "c2d0799526e908204efbd3aa980e086c" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 83; y: 23 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1648 + hash: "cc87e09a6784d61680f8c6ab0d6a38fa" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 84; y: 22 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 85; y: 16 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1664 + hash: "13dec7e835b4f26970f98b66533f84f1" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 85; y: 14 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1680 + hash: "e5d2862bee024b64326b7d85e5e45399" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 85; y: 12 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1696 + hash: "0b1401ce4a91811ac9c3eec5f94b380d" + } + Frame { + msec: 1712 + hash: "0de290542c9d3e03ed78f51423011c16" + } + Frame { + msec: 1728 + hash: "4c9aa06ad1e246b4b026742fc8cf37bc" + } + Frame { + msec: 1744 + hash: "c33003a8262c2ba25510ece181e61bc9" + } + Frame { + msec: 1760 + hash: "c33003a8262c2ba25510ece181e61bc9" + } + Frame { + msec: 1776 + hash: "ad184fa88c4299b8911c9b7ada5b3736" + } + Mouse { + type: 2 + button: 1 + buttons: 1 + x: 85; y: 12 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 85; y: 13 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 85; y: 15 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1792 + hash: "ad184fa88c4299b8911c9b7ada5b3736" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 85; y: 17 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 85; y: 23 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1808 + hash: "c2d0799526e908204efbd3aa980e086c" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 85; y: 30 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 85; y: 34 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1824 + hash: "b343a9ed7e9740ec1725837fad766745" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 85; y: 41 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 85; y: 44 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1840 + hash: "b33260ad955474452f204ed5d468ef78" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 85; y: 51 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 86; y: 55 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1856 + hash: "9a647c54e378bd0ee35ef4164892722c" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 87; y: 61 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 88; y: 67 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 3 + button: 1 + buttons: 0 + x: 88; y: 67 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 89; y: 73 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1872 + hash: "dc553d1a7b678dffea41147fc6b841f6" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 89; y: 74 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 89; y: 78 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1888 + hash: "2d61b4fb1e5a8beb6e3c3cb53c21db42" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 89; y: 79 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 89; y: 82 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1904 + hash: "209faf0b20fd53d9a1c261c8cae9666f" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 90; y: 82 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 91; y: 83 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1920 + hash: "3497258aa07c76f0e31b5a492ee7e7cb" + } + Frame { + msec: 1936 + image: "flickweb.2.png" + } + Frame { + msec: 1952 + hash: "64c677ac4fea0e525279e86bf831d5d3" + } + Frame { + msec: 1968 + hash: "76c6c887fea94288e9fd975655e5181c" + } + Frame { + msec: 1984 + hash: "71b85e596c88b84a851a52aa3389e63a" + } + Frame { + msec: 2000 + hash: "e4a562aa35aa532d15c9b129e22797bb" + } + Frame { + msec: 2016 + hash: "148484dd95c88720cc5ef196334cb9a8" + } + Frame { + msec: 2032 + hash: "924c6254ffa1707b69174f49e4e95213" + } + Frame { + msec: 2048 + hash: "9e61907acedb27941d8be2befa364cfb" + } + Frame { + msec: 2064 + hash: "9e61907acedb27941d8be2befa364cfb" + } + Frame { + msec: 2080 + hash: "f2c4e99db1bb087a40b277ce8ce628f6" + } + Frame { + msec: 2096 + hash: "f2c4e99db1bb087a40b277ce8ce628f6" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 91; y: 82 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2112 + hash: "b2d6b68f1f7229e8e65bb37e4c418a1b" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 90; y: 82 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2128 + hash: "b2d6b68f1f7229e8e65bb37e4c418a1b" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 89; y: 81 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 88; y: 80 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2144 + hash: "b2d6b68f1f7229e8e65bb37e4c418a1b" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 87; y: 79 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 86; y: 77 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2160 + hash: "b2d6b68f1f7229e8e65bb37e4c418a1b" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 86; y: 76 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 86; y: 75 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2176 + hash: "b2d6b68f1f7229e8e65bb37e4c418a1b" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 85; y: 73 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 84; y: 71 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2192 + hash: "b2d6b68f1f7229e8e65bb37e4c418a1b" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 82; y: 68 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 81; y: 67 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2208 + hash: "b2d6b68f1f7229e8e65bb37e4c418a1b" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 76; y: 61 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 75; y: 59 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2224 + hash: "b2d6b68f1f7229e8e65bb37e4c418a1b" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 71; y: 54 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 70; y: 51 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2240 + hash: "b2d6b68f1f7229e8e65bb37e4c418a1b" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 70; y: 50 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 70; y: 49 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2256 + hash: "b2d6b68f1f7229e8e65bb37e4c418a1b" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 70; y: 47 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 69; y: 46 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2272 + hash: "b2d6b68f1f7229e8e65bb37e4c418a1b" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 68; y: 45 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 67; y: 43 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2288 + hash: "b2d6b68f1f7229e8e65bb37e4c418a1b" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 66; y: 43 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 65; y: 41 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2304 + hash: "b2d6b68f1f7229e8e65bb37e4c418a1b" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 64; y: 40 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 64; y: 39 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2320 + hash: "b2d6b68f1f7229e8e65bb37e4c418a1b" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 63; y: 38 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 63; y: 37 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2336 + hash: "b2d6b68f1f7229e8e65bb37e4c418a1b" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 63; y: 35 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 63; y: 34 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2352 + hash: "b2d6b68f1f7229e8e65bb37e4c418a1b" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 63; y: 33 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2368 + hash: "b2d6b68f1f7229e8e65bb37e4c418a1b" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 64; y: 32 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2384 + hash: "b2d6b68f1f7229e8e65bb37e4c418a1b" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 65; y: 32 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 65; y: 31 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2400 + hash: "b2d6b68f1f7229e8e65bb37e4c418a1b" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 66; y: 31 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 68; y: 31 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2416 + hash: "b2d6b68f1f7229e8e65bb37e4c418a1b" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 69; y: 30 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 71; y: 29 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2432 + hash: "b2d6b68f1f7229e8e65bb37e4c418a1b" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 73; y: 27 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 73; y: 26 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2448 + hash: "b2d6b68f1f7229e8e65bb37e4c418a1b" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 74; y: 24 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 74; y: 22 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2464 + hash: "b2d6b68f1f7229e8e65bb37e4c418a1b" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 74; y: 21 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 74; y: 20 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2480 + hash: "b2d6b68f1f7229e8e65bb37e4c418a1b" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 74; y: 18 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 74; y: 17 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2496 + hash: "b2d6b68f1f7229e8e65bb37e4c418a1b" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 74; y: 16 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 73; y: 15 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2512 + hash: "b2d6b68f1f7229e8e65bb37e4c418a1b" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 73; y: 14 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2528 + hash: "b2d6b68f1f7229e8e65bb37e4c418a1b" + } + Frame { + msec: 2544 + hash: "b2d6b68f1f7229e8e65bb37e4c418a1b" + } + Frame { + msec: 2560 + hash: "b2d6b68f1f7229e8e65bb37e4c418a1b" + } + Mouse { + type: 2 + button: 1 + buttons: 1 + x: 73; y: 14 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2576 + hash: "b2d6b68f1f7229e8e65bb37e4c418a1b" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 73; y: 15 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 72; y: 17 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2592 + hash: "b2d6b68f1f7229e8e65bb37e4c418a1b" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 72; y: 24 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 72; y: 29 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2608 + hash: "b2d6b68f1f7229e8e65bb37e4c418a1b" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 72; y: 40 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 71; y: 47 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2624 + hash: "c4dd48fca556c2760c8f81db7fea6938" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 70; y: 60 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 70; y: 78 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2640 + hash: "9dbad8cb2692807d67f74e7ac4a4a70e" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 70; y: 88 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 70; y: 96 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 3 + button: 1 + buttons: 0 + x: 70; y: 96 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2656 + hash: "152648affe4045a81f0d6ff9150889f1" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 70; y: 99 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 70; y: 102 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2672 + hash: "152648affe4045a81f0d6ff9150889f1" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 73; y: 103 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 74; y: 103 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2688 + hash: "152648affe4045a81f0d6ff9150889f1" + } + Frame { + msec: 2704 + hash: "152648affe4045a81f0d6ff9150889f1" + } + Frame { + msec: 2720 + hash: "152648affe4045a81f0d6ff9150889f1" + } + Frame { + msec: 2736 + hash: "152648affe4045a81f0d6ff9150889f1" + } + Frame { + msec: 2752 + hash: "152648affe4045a81f0d6ff9150889f1" + } + Frame { + msec: 2768 + hash: "c9eee2b7529b07a17151e7140444c099" + } + Frame { + msec: 2784 + hash: "c9eee2b7529b07a17151e7140444c099" + } + Frame { + msec: 2800 + hash: "c9eee2b7529b07a17151e7140444c099" + } + Frame { + msec: 2816 + hash: "c9eee2b7529b07a17151e7140444c099" + } + Frame { + msec: 2832 + hash: "c9eee2b7529b07a17151e7140444c099" + } + Frame { + msec: 2848 + hash: "c9eee2b7529b07a17151e7140444c099" + } + Frame { + msec: 2864 + hash: "d045839439e4091210c745f0ea173e52" + } + Frame { + msec: 2880 + hash: "d045839439e4091210c745f0ea173e52" + } + Frame { + msec: 2896 + image: "flickweb.3.png" + } + Frame { + msec: 2912 + hash: "d045839439e4091210c745f0ea173e52" + } + Frame { + msec: 2928 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 74; y: 102 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2944 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 74; y: 101 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 73; y: 98 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2960 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 69; y: 93 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 67; y: 91 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2976 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 62; y: 85 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 60; y: 83 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2992 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 56; y: 77 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 55; y: 75 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3008 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 52; y: 70 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 49; y: 67 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3024 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 49; y: 65 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 48; y: 61 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3040 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 48; y: 60 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 46; y: 56 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3056 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 45; y: 54 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 42; y: 50 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3072 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 39; y: 47 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 38; y: 45 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3088 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 37; y: 44 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 36; y: 43 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3104 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 35; y: 41 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 35; y: 40 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3120 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 33; y: 39 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 33; y: 38 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3136 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 32; y: 37 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3152 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 32; y: 36 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 31; y: 36 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3168 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 31; y: 35 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3184 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 30; y: 35 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 30; y: 33 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3200 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 28; y: 32 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 28; y: 31 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3216 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 26; y: 29 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 26; y: 28 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3232 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 25; y: 27 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3248 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 25; y: 26 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3264 + hash: "d045839439e4091210c745f0ea173e52" + } + Frame { + msec: 3280 + hash: "d045839439e4091210c745f0ea173e52" + } + Frame { + msec: 3296 + hash: "d045839439e4091210c745f0ea173e52" + } + Frame { + msec: 3312 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 2 + button: 1 + buttons: 1 + x: 25; y: 26 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3328 + hash: "d045839439e4091210c745f0ea173e52" + } + Frame { + msec: 3344 + hash: "d045839439e4091210c745f0ea173e52" + } + Frame { + msec: 3360 + hash: "d045839439e4091210c745f0ea173e52" + } + Frame { + msec: 3376 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 3 + button: 1 + buttons: 0 + x: 25; y: 26 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3392 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 25; y: 27 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3408 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 26; y: 27 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 26; y: 28 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3424 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 27; y: 28 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 27; y: 29 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3440 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 3456 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 3472 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 3488 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 3504 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 27; y: 30 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3520 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 28; y: 31 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 29; y: 34 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3536 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 31; y: 36 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 37; y: 43 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3552 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 40; y: 48 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 50; y: 59 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3568 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 55; y: 64 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 65; y: 73 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3584 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 69; y: 77 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 75; y: 83 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3600 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 78; y: 85 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 80; y: 86 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3616 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 82; y: 88 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 83; y: 89 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3632 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 85; y: 90 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3648 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 3664 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 3680 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 3696 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 3712 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 3728 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 3744 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 3760 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 85; y: 89 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3776 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 3792 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 84; y: 88 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 84; y: 87 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3808 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 85; y: 85 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 84; y: 83 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3824 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 3840 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 3856 + image: "flickweb.4.png" + } + Frame { + msec: 3872 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 3888 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 3904 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 3920 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 3936 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 3952 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 3968 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 3984 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 4000 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 4016 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 84; y: 84 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4032 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 84; y: 87 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4048 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 83; y: 88 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4064 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 4080 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 4096 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 4112 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 4128 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 83; y: 89 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4144 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 82; y: 90 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4160 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 82; y: 91 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 82; y: 92 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4176 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 82; y: 93 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 82; y: 95 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4192 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 82; y: 97 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 83; y: 100 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4208 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 83; y: 101 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 83; y: 105 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4224 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 83; y: 107 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 83; y: 110 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4240 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 83; y: 113 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 83; y: 114 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4256 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 83; y: 115 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 83; y: 116 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4272 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 83; y: 117 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4288 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 4304 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 4320 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 4336 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 4352 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 4368 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 4384 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 4400 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 4416 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 4432 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 4448 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 4464 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 4480 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 83; y: 116 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4496 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 4512 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 4528 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 4544 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 4560 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 4576 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 4592 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 4608 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 82; y: 116 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4624 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 4640 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 82; y: 117 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4656 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 4672 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 4688 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 82; y: 118 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4704 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 4720 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 4736 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 4752 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 4768 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 4784 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 83; y: 119 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4800 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 4816 + image: "flickweb.5.png" + } + Mouse { + type: 2 + button: 1 + buttons: 1 + x: 83; y: 119 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4832 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 4848 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 84; y: 119 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4864 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 85; y: 118 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 85; y: 117 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4880 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 86; y: 113 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 87; y: 111 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4896 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 89; y: 107 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 90; y: 104 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4912 + hash: "f10fa114e248809ed280788d03a3e234" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 92; y: 99 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 93; y: 95 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4928 + hash: "442357340d9690811d582f548f933d92" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 95; y: 88 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 98; y: 81 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 3 + button: 1 + buttons: 0 + x: 98; y: 81 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4944 + hash: "188b8f78b2a2180a8e96a8a05bb20fe2" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 98; y: 77 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 99; y: 69 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4960 + hash: "2b8ee42c5660f4f938cf10507690abbe" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 100; y: 66 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 101; y: 60 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4976 + hash: "3d4aab388f62e64c5f72c631fb8584aa" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 103; y: 59 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 104; y: 56 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4992 + hash: "439364cea3330411f526093d58ece463" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 104; y: 55 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 104; y: 53 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5008 + hash: "27653ec59651e6b3cb2ebf2bc81a975a" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 104; y: 52 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 104; y: 51 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5024 + hash: "d9c0fb2cbf968e0524291ae2570ca585" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 105; y: 50 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 105; y: 49 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5040 + hash: "ef75df694a972985f410e21182dbb12b" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 105; y: 48 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5056 + hash: "adda6aa851c1587c1bb2605809348725" + } + Frame { + msec: 5072 + hash: "196c12052069f0f8c775aa38d3291bef" + } + Frame { + msec: 5088 + hash: "eaa025b6aee87edf95643cc46880d0db" + } + Frame { + msec: 5104 + hash: "edeab897b82df47ae6deb858eca3087e" + } + Frame { + msec: 5120 + hash: "46e3b5da149cfc40036a860e74e0cd78" + } + Frame { + msec: 5136 + hash: "46e3b5da149cfc40036a860e74e0cd78" + } + Frame { + msec: 5152 + hash: "0fe9b13b9b0752ab4ad74f4e43f94d86" + } + Frame { + msec: 5168 + hash: "0fe9b13b9b0752ab4ad74f4e43f94d86" + } + Frame { + msec: 5184 + hash: "695e9c7292475cad011ca76799452042" + } + Frame { + msec: 5200 + hash: "695e9c7292475cad011ca76799452042" + } + Frame { + msec: 5216 + hash: "695e9c7292475cad011ca76799452042" + } + Frame { + msec: 5232 + hash: "695e9c7292475cad011ca76799452042" + } + Frame { + msec: 5248 + hash: "695e9c7292475cad011ca76799452042" + } + Frame { + msec: 5264 + hash: "695e9c7292475cad011ca76799452042" + } + Frame { + msec: 5280 + hash: "695e9c7292475cad011ca76799452042" + } + Frame { + msec: 5296 + hash: "695e9c7292475cad011ca76799452042" + } + Frame { + msec: 5312 + hash: "695e9c7292475cad011ca76799452042" + } + Frame { + msec: 5328 + hash: "695e9c7292475cad011ca76799452042" + } + Frame { + msec: 5344 + hash: "695e9c7292475cad011ca76799452042" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 105; y: 47 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 104; y: 46 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5360 + hash: "695e9c7292475cad011ca76799452042" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 103; y: 45 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 102; y: 45 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5376 + hash: "695e9c7292475cad011ca76799452042" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 102; y: 44 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5392 + hash: "695e9c7292475cad011ca76799452042" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 101; y: 43 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5408 + hash: "695e9c7292475cad011ca76799452042" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 101; y: 42 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 100; y: 42 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5424 + hash: "695e9c7292475cad011ca76799452042" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 99; y: 41 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 98; y: 40 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5440 + hash: "695e9c7292475cad011ca76799452042" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 98; y: 39 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5456 + hash: "695e9c7292475cad011ca76799452042" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 98; y: 38 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 98; y: 37 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5472 + hash: "695e9c7292475cad011ca76799452042" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 98; y: 36 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 98; y: 35 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5488 + hash: "695e9c7292475cad011ca76799452042" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 98; y: 33 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 98; y: 30 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5504 + hash: "695e9c7292475cad011ca76799452042" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 98; y: 29 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 98; y: 28 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5520 + hash: "695e9c7292475cad011ca76799452042" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 98; y: 26 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 98; y: 25 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5536 + hash: "695e9c7292475cad011ca76799452042" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 98; y: 24 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 98; y: 23 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5552 + hash: "695e9c7292475cad011ca76799452042" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 97; y: 23 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 97; y: 22 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5568 + hash: "695e9c7292475cad011ca76799452042" + } + Frame { + msec: 5584 + hash: "695e9c7292475cad011ca76799452042" + } + Frame { + msec: 5600 + hash: "695e9c7292475cad011ca76799452042" + } + Frame { + msec: 5616 + hash: "695e9c7292475cad011ca76799452042" + } + Frame { + msec: 5632 + hash: "695e9c7292475cad011ca76799452042" + } + Mouse { + type: 2 + button: 1 + buttons: 1 + x: 97; y: 22 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5648 + hash: "695e9c7292475cad011ca76799452042" + } + Frame { + msec: 5664 + hash: "695e9c7292475cad011ca76799452042" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 97; y: 24 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 97; y: 26 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5680 + hash: "695e9c7292475cad011ca76799452042" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 97; y: 28 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 97; y: 31 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5696 + hash: "695e9c7292475cad011ca76799452042" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 97; y: 37 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 97; y: 42 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5712 + hash: "27653ec59651e6b3cb2ebf2bc81a975a" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 97; y: 50 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 97; y: 58 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5728 + hash: "f2a68c3a60002a796b0cd595ae89e477" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 97; y: 63 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 97; y: 71 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5744 + hash: "2628ffe66f06c997d9c9b66febc04ce8" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 97; y: 75 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 98; y: 83 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5760 + hash: "9b68c76d622f7b883a13927a112179f0" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 99; y: 86 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 101; y: 91 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 3 + button: 1 + buttons: 0 + x: 101; y: 91 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5776 + image: "flickweb.6.png" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 103; y: 95 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 104; y: 95 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5792 + hash: "6d6d87355037ec4a15b2a81c8d48b74d" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 107; y: 95 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 107; y: 94 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5808 + hash: "6d6d87355037ec4a15b2a81c8d48b74d" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 107; y: 93 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5824 + hash: "6d6d87355037ec4a15b2a81c8d48b74d" + } + Frame { + msec: 5840 + hash: "6d6d87355037ec4a15b2a81c8d48b74d" + } + Frame { + msec: 5856 + hash: "34c3edc4500a268a326b5c2156c12f09" + } + Frame { + msec: 5872 + hash: "34c3edc4500a268a326b5c2156c12f09" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 106; y: 92 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 105; y: 91 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5888 + hash: "34c3edc4500a268a326b5c2156c12f09" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 104; y: 91 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 103; y: 90 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5904 + hash: "ac600900160ab37ec8a3e67eb82d0259" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 101; y: 89 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 100; y: 88 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5920 + hash: "ac600900160ab37ec8a3e67eb82d0259" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 99; y: 86 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 98; y: 86 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5936 + hash: "dc3cef419e3b7d59f450d3307aeebefa" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 97; y: 85 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 96; y: 85 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5952 + hash: "dc3cef419e3b7d59f450d3307aeebefa" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 94; y: 84 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 93; y: 83 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5968 + hash: "9b68c76d622f7b883a13927a112179f0" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 90; y: 82 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 86; y: 81 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5984 + hash: "9b68c76d622f7b883a13927a112179f0" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 85; y: 80 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 81; y: 79 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6000 + hash: "9b68c76d622f7b883a13927a112179f0" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 79; y: 78 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 76; y: 76 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6016 + hash: "9b68c76d622f7b883a13927a112179f0" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 75; y: 76 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 72; y: 73 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6032 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 68; y: 70 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 66; y: 68 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6048 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 63; y: 65 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 61; y: 63 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6064 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 58; y: 60 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 57; y: 59 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6080 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 54; y: 56 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 53; y: 54 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6096 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 51; y: 50 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 48; y: 46 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6112 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 48; y: 45 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 46; y: 41 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6128 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 45; y: 39 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 43; y: 36 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6144 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 43; y: 35 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 41; y: 32 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6160 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 40; y: 30 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 38; y: 28 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6176 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 36; y: 26 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 35; y: 24 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6192 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 33; y: 22 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 32; y: 21 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6208 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 31; y: 20 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 30; y: 19 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6224 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 29; y: 19 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 28; y: 18 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6240 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 27; y: 18 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 26; y: 17 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6256 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 25; y: 17 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6272 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 24; y: 17 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6288 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 6304 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 6320 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 6336 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 6352 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 2 + button: 1 + buttons: 1 + x: 24; y: 17 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6368 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 6384 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 6400 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 6416 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 3 + button: 1 + buttons: 0 + x: 24; y: 17 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6432 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 24; y: 18 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6448 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 25; y: 18 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 25; y: 19 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6464 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 26; y: 19 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 27; y: 20 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6480 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 28; y: 21 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6496 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 6512 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 6528 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 29; y: 22 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6544 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 30; y: 23 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 31; y: 24 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6560 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 32; y: 25 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 33; y: 25 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6576 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 34; y: 26 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 34; y: 27 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6592 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 37; y: 30 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 38; y: 31 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6608 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 41; y: 35 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 42; y: 37 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6624 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 45; y: 42 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 50; y: 46 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6640 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 52; y: 49 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 57; y: 53 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6656 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 60; y: 55 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 65; y: 58 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6672 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 66; y: 59 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 71; y: 61 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6688 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 75; y: 62 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 77; y: 63 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6704 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 80; y: 64 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 81; y: 64 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6720 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 83; y: 64 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 84; y: 64 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6736 + image: "flickweb.7.png" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 85; y: 64 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 86; y: 64 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6752 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 87; y: 64 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 88; y: 64 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6768 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 90; y: 64 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 93; y: 64 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6784 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 94; y: 64 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 99; y: 63 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6800 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 102; y: 63 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 106; y: 62 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6816 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 110; y: 62 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 116; y: 62 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6832 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 122; y: 62 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 124; y: 62 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6848 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 125; y: 62 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6864 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 6880 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 6896 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 6912 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 6928 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 6944 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 6960 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 6976 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 6992 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 7008 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 7024 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 7040 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 7056 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 7072 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 7088 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 126; y: 62 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 7104 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 127; y: 62 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 129; y: 64 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 7120 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 132; y: 65 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 134; y: 66 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 7136 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 139; y: 68 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 144; y: 69 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 7152 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 148; y: 69 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 154; y: 69 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 7168 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 158; y: 68 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 162; y: 66 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 7184 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 164; y: 65 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 165; y: 62 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 7200 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 165; y: 60 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 165; y: 54 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 7216 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 162; y: 45 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 159; y: 39 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 7232 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 151; y: 27 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 146; y: 22 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 7248 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 129; y: 3 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 7264 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 7280 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 7296 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 7312 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 7328 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 7344 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 7360 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 7376 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 7392 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 7408 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 7424 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 7440 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 7456 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 7472 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 7488 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 7504 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 7520 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 7536 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 7552 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 7568 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 7584 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 7600 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 7616 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 7632 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 7648 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 7664 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 7680 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 7696 + image: "flickweb.8.png" + } + Frame { + msec: 7712 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 7728 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 7744 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 7760 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 7776 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 7792 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 7808 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 7824 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 7840 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 7856 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 7872 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 7888 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 7904 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 7920 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 7936 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 7952 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 7968 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 7984 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8000 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8016 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8032 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8048 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8064 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8080 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8096 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8112 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8128 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8144 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8160 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8176 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8192 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8208 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8224 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8240 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8256 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8272 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8288 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8304 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8320 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8336 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8352 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8368 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8384 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8400 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8416 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8432 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8448 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8464 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8480 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8496 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8512 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8528 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8544 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8560 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8576 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8592 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8608 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8624 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8640 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8656 + image: "flickweb.9.png" + } + Frame { + msec: 8672 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8688 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8704 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8720 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8736 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8752 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8768 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8784 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8800 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8816 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8832 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8848 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8864 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8880 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8896 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8912 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8928 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8944 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8960 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8976 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8992 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 9008 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 9024 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 9040 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 9056 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 9072 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 9088 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 9104 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 9120 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 9136 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 9152 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 9168 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 9184 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 9200 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 9216 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 9232 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 9248 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 9264 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 9280 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 9296 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 9312 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 9328 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 9344 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 9360 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 9376 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 9392 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 9408 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 9424 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 9440 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 9456 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 9472 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 9488 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 9504 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 9520 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 9536 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 9552 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 9568 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 9584 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 9600 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 9616 + image: "flickweb.10.png" + } + Frame { + msec: 9632 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 9648 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 9664 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 9680 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 9696 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 9712 + hash: "98990f624351f88347b2eb010bb5cd13" + } +} diff --git a/tests/auto/declarative/qmlvisual/webview/flickable/flickweb.qml b/tests/auto/declarative/qmlvisual/webview/flickable/flickweb.qml new file mode 100644 index 0000000..6063226 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/webview/flickable/flickweb.qml @@ -0,0 +1,35 @@ +import QtQuick 1.0 +import QtWebKit 1.0 + +Flickable { + id: flickable + width: 320 + height: 200 + contentWidth: Math.max(flickable.width,webView.width) + contentHeight: Math.max(flickable.height,webView.height) + pressDelay: 100 + + WebView { + id: webView + transformOrigin: Item.TopLeft + smooth: false // We don't want smooth scaling, since we only scale during (fast) transitions + url: "test.html" + preferredWidth: flickable.width + preferredHeight: flickable.height + contentsScale: 1 + onContentsSizeChanged: { + // zoom out + contentsScale = Math.min(1,flickable.width / contentsSize.width) + } + } + + Rectangle { + id: button + width: 50; height: 50; color: "red" + MouseArea { + anchors.fill: parent + onPressed: button.color = "blue" + onReleased: button.color = "green" + } + } +} diff --git a/tests/auto/declarative/qmlvisual/webview/flickable/qtlogo.png b/tests/auto/declarative/qmlvisual/webview/flickable/qtlogo.png new file mode 100644 index 0000000..399bd0b Binary files /dev/null and b/tests/auto/declarative/qmlvisual/webview/flickable/qtlogo.png differ diff --git a/tests/auto/declarative/qmlvisual/webview/flickable/test.html b/tests/auto/declarative/qmlvisual/webview/flickable/test.html new file mode 100644 index 0000000..35eb718 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/webview/flickable/test.html @@ -0,0 +1,3 @@ + + + -- cgit v0.12 From cd7e76b2ac2894c7c18a3806f8074b03f581d5d2 Mon Sep 17 00:00:00 2001 From: Petri Latvala Date: Wed, 13 Oct 2010 10:25:14 +0300 Subject: Ignore .pc/ Reviewed-By: Rohan McGovern (cherry picked from commit 561a72c2568768f9adf34aa1077717f9311ce56d) --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index af52197..f9a4454 100644 --- a/.gitignore +++ b/.gitignore @@ -235,3 +235,5 @@ qtc-debugging-helper src/corelib/lib src/network/lib src/xml/lib/ + +.pc/ -- cgit v0.12 From 0df002ad600800a6c4ccadb969e1b1de7f8353e7 Mon Sep 17 00:00:00 2001 From: Jason Barron Date: Mon, 22 Nov 2010 14:56:14 +0100 Subject: Fix non-stroked filled paths in OpenVG paint engine. The QPainter::fillRect() functions are optimizations to avoid state changes in the paint engines. Since these functions should be completely independant of state, ideally they should only call functions that are also stateless. QVGPaintEngine::fillRect() has two different code paths for this. The vgClearRect() path of this function is stateless however in the case of non-opaque or complex fills, this code path cannot be used and instead we use the normal path fill function which is not entirely stateless because ensureTransform() will apply the aliased coordinate transform if the current state includes a stroked pen. To avoid this happening for a pure fill (no stroke) we temporary set the pen state to be Qt::NoPen such that the state used by ensureTransform() is correct. Task-number: QTBUG-14717 Reviewed-by: Jani Hautakangas --- src/openvg/qpaintengine_vg.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/openvg/qpaintengine_vg.cpp b/src/openvg/qpaintengine_vg.cpp index aea203f..03d756d 100644 --- a/src/openvg/qpaintengine_vg.cpp +++ b/src/openvg/qpaintengine_vg.cpp @@ -1502,7 +1502,10 @@ void QVGPaintEnginePrivate::fill(VGPath path, const QBrush& brush, VGint rule) return; ensureBrush(brush); setFillRule(rule); + QPen savedPen = currentPen; + currentPen = Qt::NoPen; ensurePathTransform(); + currentPen = savedPen; vgDrawPath(path, VG_FILL_PATH); } -- cgit v0.12 From a9467c8542ff745471e077ac8be554d3a0087e4a Mon Sep 17 00:00:00 2001 From: Milla Pohjanheimo Date: Fri, 19 Nov 2010 13:10:57 +0200 Subject: Native color dialog on symbian Native color dialog implementation for Symbian. During merge extra libraries removed. Task-number: QT-3917 Reviewed-by: Sami Merila Merge-Request: 932 Reviewed-by: Janne Koskinen --- src/gui/dialogs/dialogs.pri | 9 +-- src/gui/dialogs/qcolordialog.cpp | 21 ++++++ src/gui/dialogs/qcolordialog_symbian.cpp | 107 +++++++++++++++++++++++++++++++ 3 files changed, 131 insertions(+), 6 deletions(-) create mode 100644 src/gui/dialogs/qcolordialog_symbian.cpp diff --git a/src/gui/dialogs/dialogs.pri b/src/gui/dialogs/dialogs.pri index 443c5e9..c25b6d5 100644 --- a/src/gui/dialogs/dialogs.pri +++ b/src/gui/dialogs/dialogs.pri @@ -109,12 +109,9 @@ SOURCES += \ dialogs/qprintpreviewdialog.cpp symbian:contains(QT_CONFIG, s60) { - LIBS += -lcommondialogs \ - -lavkon \ - -lplatformenv \ - -lefsrv \ - -lgdi - SOURCES += dialogs/qfiledialog_symbian.cpp + LIBS += -lcommondialogs + SOURCES += dialogs/qfiledialog_symbian.cpp \ + dialogs/qcolordialog_symbian.cpp } FORMS += dialogs/qpagesetupwidget.ui diff --git a/src/gui/dialogs/qcolordialog.cpp b/src/gui/dialogs/qcolordialog.cpp index e9b5720..4ef2100 100644 --- a/src/gui/dialogs/qcolordialog.cpp +++ b/src/gui/dialogs/qcolordialog.cpp @@ -1952,6 +1952,12 @@ void QColorDialog::open(QObject *receiver, const char *member) \sa QDialog::open() */ +/* + For Symbian color dialogs +*/ +#ifdef Q_WS_S60 +extern QColor qtSymbianGetColor(const QColor &initial); +#endif /*! \since 4.5 @@ -1961,10 +1967,19 @@ void QColorDialog::open(QObject *receiver, const char *member) QColor::isValid()) color if the user cancels the dialog. The \a options argument allows you to customize the dialog. + + On Symbian, this static function will use the native color dialog and not a QColorDialog. + On Symbian the parameters \a title and \a parent has no relevance and the + \a options parameter is only used to define if the native color dialog is + used or not. */ QColor QColorDialog::getColor(const QColor &initial, QWidget *parent, const QString &title, ColorDialogOptions options) { +#ifdef Q_WS_S60 + if (!(options & DontUseNativeDialog)) + return qtSymbianGetColor(initial); +#endif QColorDialog dlg(parent); if (!title.isEmpty()) dlg.setWindowTitle(title); @@ -1979,10 +1994,16 @@ QColor QColorDialog::getColor(const QColor &initial, QWidget *parent, const QStr returns that color. The color is initially set to \a initial. The dialog is a child of \a parent. It returns an invalid (see QColor::isValid()) color if the user cancels the dialog. + + On Symbian, this static function will use the native + color dialog and not a QColorDialog. */ QColor QColorDialog::getColor(const QColor &initial, QWidget *parent) { +#ifdef Q_WS_S60 + return qtSymbianGetColor(initial); +#endif return getColor(initial, parent, QString(), ColorDialogOptions(0)); } diff --git a/src/gui/dialogs/qcolordialog_symbian.cpp b/src/gui/dialogs/qcolordialog_symbian.cpp new file mode 100644 index 0000000..3f8036c --- /dev/null +++ b/src/gui/dialogs/qcolordialog_symbian.cpp @@ -0,0 +1,107 @@ +/**************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the QtGui 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$ +** +****************************************************************************/ + +#include "qcolordialog_p.h" + +#ifndef QT_NO_COLORDIALOG + + +#include "qcolor.h" +#include "private/qguiplatformplugin_p.h" + +#ifdef Q_WS_S60 +#include +#endif + +#include "private/qt_s60_p.h" + +QT_BEGIN_NAMESPACE + +QColor launchSymbianColorDialog(QColor initial) +{ + QColor currentColor = QColor::Invalid; +#ifdef Q_WS_S60 + QT_TRAP_THROWING( + CArrayFixFlat* array = new( ELeave ) CArrayFixFlat(17); + CleanupStack::PushL(array); + array->AppendL(KRgbBlack); + array->AppendL(KRgbDarkGray); + array->AppendL(KRgbDarkRed); + array->AppendL(KRgbDarkGreen); + array->AppendL(KRgbDarkYellow); + array->AppendL(KRgbDarkBlue); + array->AppendL(KRgbDarkMagenta); + array->AppendL(KRgbDarkCyan); + array->AppendL(KRgbRed); + array->AppendL(KRgbGreen); + array->AppendL(KRgbYellow); + array->AppendL(KRgbBlue); + array->AppendL(KRgbMagenta); + array->AppendL(KRgbCyan); + array->AppendL(KRgbGray); + array->AppendL(KRgbWhite); + + TRgb initialColour(initial.red(), initial.green(), initial.blue(), initial.alpha()); + + TBool noneChosen = EFalse; // If true shows the default colour button + CAknColourSelectionGrid* colourSelectionGrid = + CAknColourSelectionGrid::NewL(array, EFalse, noneChosen, initialColour); + CleanupStack::PushL(colourSelectionGrid); + + if (colourSelectionGrid->ExecuteLD()) { + currentColor.setRgb(initialColour.Red(), initialColour.Green(), + initialColour.Blue(), initialColour.Alpha()); + } + CleanupStack::Pop(colourSelectionGrid); + CleanupStack::PopAndDestroy(array); + ); +#endif + return currentColor; +} + +QColor qtSymbianGetColor(const QColor &initial) +{ + return launchSymbianColorDialog(initial); +} + +QT_END_NAMESPACE + +#endif // QT_NO_COLORDIALOG -- cgit v0.12 From ea41bb4f6e097ee641e5fbee3242ccc5aa7e77b1 Mon Sep 17 00:00:00 2001 From: Joona Petrell Date: Tue, 23 Nov 2010 20:13:09 +1000 Subject: Update QtGui emulator def file for bug QT-3971 --- src/s60installs/bwins/QtGuiu.def | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/s60installs/bwins/QtGuiu.def b/src/s60installs/bwins/QtGuiu.def index dc8a865..6a33fc3 100644 --- a/src/s60installs/bwins/QtGuiu.def +++ b/src/s60installs/bwins/QtGuiu.def @@ -12852,7 +12852,7 @@ EXPORTS ?drawStaticText@QPainter@@QAEXABVQPointF@@ABVQStaticText@@@Z @ 12851 NONAME ; void QPainter::drawStaticText(class QPointF const &, class QStaticText const &) ?updateAll@QGraphicsViewPrivate@@QAEXXZ @ 12852 NONAME ; void QGraphicsViewPrivate::updateAll(void) ?updateMicroFocus@QGraphicsItem@@IAEXXZ @ 12853 NONAME ; void QGraphicsItem::updateMicroFocus(void) - ?populate@QTextureGlyphCache@@QAEXPAVQFontEngine@@HPBIPBUQFixedPoint@@@Z @ 12854 NONAME ; void QTextureGlyphCache::populate(class QFontEngine *, int, unsigned int const *, struct QFixedPoint const *) + ?populate@QTextureGlyphCache@@QAEXPAVQFontEngine@@HPBIPBUQFixedPoint@@@Z @ 12854 NONAME ABSENT ; void QTextureGlyphCache::populate(class QFontEngine *, int, unsigned int const *, struct QFixedPoint const *) ?hasPartialUpdateSupport@QWindowSurface@@QBE_NXZ @ 12855 NONAME ; bool QWindowSurface::hasPartialUpdateSupport(void) const ?scroll@QRuntimePixmapData@@UAE_NHHABVQRect@@@Z @ 12856 NONAME ; bool QRuntimePixmapData::scroll(int, int, class QRect const &) ?qt_draw_glyphs@@YAXPAVQPainter@@PBIPBVQPointF@@H@Z @ 12857 NONAME ; void qt_draw_glyphs(class QPainter *, unsigned int const *, class QPointF const *, int) @@ -12904,4 +12904,5 @@ EXPORTS ?fontEngine@QStaticTextItem@@QBEPAVQFontEngine@@XZ @ 12903 NONAME ; class QFontEngine * QStaticTextItem::fontEngine(void) const ?reactivateDeferredActiveObjects@QEventDispatcherS60@@UAEXXZ @ 12904 NONAME ; void QEventDispatcherS60::reactivateDeferredActiveObjects(void) ?userData@QStaticTextItem@@QBEPAVQStaticTextUserData@@XZ @ 12905 NONAME ; class QStaticTextUserData * QStaticTextItem::userData(void) const + ?populate@QTextureGlyphCache@@QAE_NPAVQFontEngine@@HPBIPBUQFixedPoint@@@Z @ 12906 NONAME ; bool QTextureGlyphCache::populate(class QFontEngine *, int, unsigned int const *, struct QFixedPoint const *) -- cgit v0.12 From f9c97d3a4ab7bbd0ca2f4cf33a53025af23fc47c Mon Sep 17 00:00:00 2001 From: Jason Barron Date: Tue, 23 Nov 2010 11:13:41 +0100 Subject: Fix QPixmap::fromImage() in the OpenVG pixmap backend. If QPixmap::fromImage() was called with a QImage that has an alpha channel and with the 'Qt::NoOpaqueDetection' image conversion flag set, then we would always create an opaque (RGB32) pixmap. This is incorrect. The fix is to check if the source QImage has an alpha channel and if so, use sourceFormat(), otherwise use RGB32. Task-number: QT-4278 Reviewed-by: Jani Hautakangas --- src/openvg/qpixmapdata_vg.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/openvg/qpixmapdata_vg.cpp b/src/openvg/qpixmapdata_vg.cpp index 509882b..c3c7def 100644 --- a/src/openvg/qpixmapdata_vg.cpp +++ b/src/openvg/qpixmapdata_vg.cpp @@ -214,7 +214,7 @@ void QVGPixmapData::createPixmapForImage(QImage &image, Qt::ImageConversionFlags else if (!(flags & Qt::NoOpaqueDetection) && const_cast(image).data_ptr()->checkForAlphaPixels()) format = sourceFormat(); else - format = QImage::Format_RGB32; + format = image.hasAlphaChannel() ? sourceFormat() : QImage::Format_RGB32; if (inPlace && image.data_ptr()->convertInPlace(format, flags)) source = image; -- cgit v0.12 From b5e5d6b39c01c4a3962d07d79c025c16aa1c24a5 Mon Sep 17 00:00:00 2001 From: Janne Koskinen Date: Tue, 23 Nov 2010 12:30:02 +0200 Subject: Fix spaces Remove extra spaces Reviewed-by: Miikka Heikkinen --- src/gui/dialogs/qcolordialog.cpp | 2 +- src/gui/dialogs/qcolordialog_symbian.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/gui/dialogs/qcolordialog.cpp b/src/gui/dialogs/qcolordialog.cpp index 4ef2100..a66a979 100644 --- a/src/gui/dialogs/qcolordialog.cpp +++ b/src/gui/dialogs/qcolordialog.cpp @@ -1968,7 +1968,7 @@ extern QColor qtSymbianGetColor(const QColor &initial); The \a options argument allows you to customize the dialog. - On Symbian, this static function will use the native color dialog and not a QColorDialog. + On Symbian, this static function will use the native color dialog and not a QColorDialog. On Symbian the parameters \a title and \a parent has no relevance and the \a options parameter is only used to define if the native color dialog is used or not. diff --git a/src/gui/dialogs/qcolordialog_symbian.cpp b/src/gui/dialogs/qcolordialog_symbian.cpp index 3f8036c..8f73f7c 100644 --- a/src/gui/dialogs/qcolordialog_symbian.cpp +++ b/src/gui/dialogs/qcolordialog_symbian.cpp @@ -79,7 +79,7 @@ QColor launchSymbianColorDialog(QColor initial) array->AppendL(KRgbGray); array->AppendL(KRgbWhite); - TRgb initialColour(initial.red(), initial.green(), initial.blue(), initial.alpha()); + TRgb initialColour(initial.red(), initial.green(), initial.blue(), initial.alpha()); TBool noneChosen = EFalse; // If true shows the default colour button CAknColourSelectionGrid* colourSelectionGrid = -- cgit v0.12 From 1689f5c557f686b7ad0ab68385402e928e590a13 Mon Sep 17 00:00:00 2001 From: Miikka Heikkinen Date: Tue, 23 Nov 2010 14:29:10 +0200 Subject: Use parent class function to generate Makefile headers in Symbian Qt Creator depends on some of the information generated into the makefile header by MakefileGenerator::writeHeader() function, so changed symmake*.cpp to use it instead of each having separate code for header generation. Task-number: QTBUG-15539 Reviewed-by: Janne Koskinen --- qmake/generators/symbian/symmake_abld.cpp | 11 +---------- qmake/generators/symbian/symmake_sbsv2.cpp | 12 ++---------- 2 files changed, 3 insertions(+), 20 deletions(-) diff --git a/qmake/generators/symbian/symmake_abld.cpp b/qmake/generators/symbian/symmake_abld.cpp index cd64325..eb39d36 100644 --- a/qmake/generators/symbian/symmake_abld.cpp +++ b/qmake/generators/symbian/symmake_abld.cpp @@ -184,16 +184,7 @@ void SymbianAbldMakefileGenerator::writeWrapperMakefile(QFile& wrapperFile, bool QTextStream t(&wrapperFile); - t << "# ==============================================================================" << endl; - t << "# Generated by qmake (" << qmake_version() << ") (Qt " << QT_VERSION_STR << ") on: "; - t << QDateTime::currentDateTime().toString() << endl; - t << "# This file is generated by qmake and should not be modified by the" << endl; - t << "# user." << endl; - t << "# Name : " << wrapperFile.fileName() << endl; - t << "# Description : Wrapper Makefile for calling Symbian build tools" << endl; - t << "#" << endl; - t << "# ==============================================================================" << "\n" << endl; - t << endl; + MakefileGenerator::writeHeader(t); t << "MAKEFILE = " << fileInfo(wrapperFile.fileName()).fileName() << endl; t << "QMAKE = " << var("QMAKE_QMAKE") << endl; diff --git a/qmake/generators/symbian/symmake_sbsv2.cpp b/qmake/generators/symbian/symmake_sbsv2.cpp index f4a6132..c4b51f2 100644 --- a/qmake/generators/symbian/symmake_sbsv2.cpp +++ b/qmake/generators/symbian/symmake_sbsv2.cpp @@ -324,16 +324,8 @@ void SymbianSbsv2MakefileGenerator::writeWrapperMakefile(QFile& wrapperFile, boo QTextStream t(&wrapperFile); - t << "# ==============================================================================" << endl; - t << "# Generated by qmake (" << qmake_version() << ") (Qt " << QT_VERSION_STR << ") on: "; - t << QDateTime::currentDateTime().toString() << endl; - t << "# This file is generated by qmake and should not be modified by the" << endl; - t << "# user." << endl; - t << "# Name : " << wrapperFile.fileName() << endl; - t << "# Description : Wrapper Makefile for calling Symbian build tools" << endl; - t << "#" << endl; - t << "# ==============================================================================" << "\n" << endl; - t << endl; + MakefileGenerator::writeHeader(t); + t << "MAKEFILE = " << fileInfo(wrapperFile.fileName()).fileName() << endl; t << "QMAKE = " << var("QMAKE_QMAKE") << endl; t << "DEL_FILE = " << var("QMAKE_DEL_FILE") << endl; -- cgit v0.12 From 5d0be38c15acf28969bd8bf984ab23a29fa8e354 Mon Sep 17 00:00:00 2001 From: Damian Jansen Date: Wed, 24 Nov 2010 10:51:29 +1000 Subject: Fix asynchronous reload call in test, broken by previous submit Task-number: QTBUG-15493 --- tests/auto/declarative/qdeclarativeviewer/tst_qdeclarativeviewer.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/auto/declarative/qdeclarativeviewer/tst_qdeclarativeviewer.cpp b/tests/auto/declarative/qdeclarativeviewer/tst_qdeclarativeviewer.cpp index 1c1c04b..21c7197 100644 --- a/tests/auto/declarative/qdeclarativeviewer/tst_qdeclarativeviewer.cpp +++ b/tests/auto/declarative/qdeclarativeviewer/tst_qdeclarativeviewer.cpp @@ -45,6 +45,7 @@ #include #include #include +#include #include "../../../shared/util.h" #include "qmlruntime.h" #include "deviceorientation.h" @@ -194,7 +195,9 @@ void tst_QDeclarativeViewer::loading() QCOMPARE(viewer->size(), QSize(250, 350)); QCOMPARE(viewer->size(), viewer->sizeHint()); + QSignalSpy statusSpy(viewer->view(), SIGNAL(statusChanged(QDeclarativeView::Status))); viewer->reload(); + QTRY_VERIFY(statusSpy.count() == 1); rootItem = qobject_cast(viewer->view()->rootObject()); QVERIFY(rootItem); -- cgit v0.12 From d32360bb33e830f8c17a6db1a31f529436c2915e Mon Sep 17 00:00:00 2001 From: Martin Jones Date: Wed, 24 Nov 2010 11:25:07 +1000 Subject: Avoid lockup in ListView when animating delegates. Animating delegates results in the content height changing, which may result in fixup being called if at the ends of the view, which may in turn cause refill to be called, which will change the content height, which repeats. Prevent this recusion from happening. Task-number: QTBUG-14821 Reviewed-by: Bea Lam --- .../graphicsitems/qdeclarativelistview.cpp | 8 ++++++ .../qdeclarativelistview/data/qtbug14821.qml | 31 ++++++++++++++++++++++ .../tst_qdeclarativelistview.cpp | 21 +++++++++++++++ 3 files changed, 60 insertions(+) create mode 100644 tests/auto/declarative/qdeclarativelistview/data/qtbug14821.qml diff --git a/src/declarative/graphicsitems/qdeclarativelistview.cpp b/src/declarative/graphicsitems/qdeclarativelistview.cpp index 6be49ba..450b6af 100644 --- a/src/declarative/graphicsitems/qdeclarativelistview.cpp +++ b/src/declarative/graphicsitems/qdeclarativelistview.cpp @@ -183,6 +183,7 @@ public: , ownModel(false), wrap(false), autoHighlight(true), haveHighlightRange(false) , correctFlick(false), inFlickCorrection(false), lazyRelease(false) , deferredRelease(false), layoutScheduled(false), currentIndexCleared(false) + , inViewportMoved(false) , minExtentDirty(true), maxExtentDirty(true) {} @@ -503,6 +504,7 @@ public: bool deferredRelease : 1; bool layoutScheduled : 1; bool currentIndexCleared : 1; + bool inViewportMoved : 1; mutable bool minExtentDirty : 1; mutable bool maxExtentDirty : 1; }; @@ -2281,6 +2283,10 @@ void QDeclarativeListView::viewportMoved() QDeclarativeFlickable::viewportMoved(); if (!d->itemCount) return; + // Recursion can occur due to refill changing the content size. + if (d->inViewportMoved) + return; + d->inViewportMoved = true; d->lazyRelease = true; refill(); if (d->flickingHorizontally || d->flickingVertically || d->movingHorizontally || d->movingVertically) @@ -2294,6 +2300,7 @@ void QDeclarativeListView::viewportMoved() pos = viewPos + d->highlightRangeEnd - d->highlight->size(); if (pos < viewPos + d->highlightRangeStart) pos = viewPos + d->highlightRangeStart; + d->highlightPosAnimator->stop(); d->highlight->setPosition(qRound(pos)); // update current index @@ -2341,6 +2348,7 @@ void QDeclarativeListView::viewportMoved() } d->inFlickCorrection = false; } + d->inViewportMoved = false; } qreal QDeclarativeListView::minYExtent() const diff --git a/tests/auto/declarative/qdeclarativelistview/data/qtbug14821.qml b/tests/auto/declarative/qdeclarativelistview/data/qtbug14821.qml new file mode 100644 index 0000000..e0303ec --- /dev/null +++ b/tests/auto/declarative/qdeclarativelistview/data/qtbug14821.qml @@ -0,0 +1,31 @@ +import QtQuick 1.0 + +ListView { + id: view + width: 300; height: 200 + focus: true + keyNavigationWraps: true + + model: 100 + + preferredHighlightBegin: 90 + preferredHighlightEnd: 110 + + highlightRangeMode: ListView.StrictlyEnforceRange + highlight: Component { + Rectangle { + border.color: "blue" + border.width: 3 + color: "transparent" + width: 300; height: 15 + } + } + + delegate: Component { + Item { + height: 15 + (view.currentIndex == index ? 20 : 0) + width: 200 + Text { text: 'Index: ' + index; anchors.verticalCenter: parent.verticalCenter } + } + } +} diff --git a/tests/auto/declarative/qdeclarativelistview/tst_qdeclarativelistview.cpp b/tests/auto/declarative/qdeclarativelistview/tst_qdeclarativelistview.cpp index a4b4f21..37d836d 100644 --- a/tests/auto/declarative/qdeclarativelistview/tst_qdeclarativelistview.cpp +++ b/tests/auto/declarative/qdeclarativelistview/tst_qdeclarativelistview.cpp @@ -101,6 +101,7 @@ private slots: void footer(); void resizeView(); void sizeLessThan1(); + void QTBUG_14821(); private: template void items(); @@ -1768,6 +1769,26 @@ void tst_QDeclarativeListView::sizeLessThan1() delete canvas; } +void tst_QDeclarativeListView::QTBUG_14821() +{ + QDeclarativeView *canvas = createView(); + + canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/qtbug14821.qml")); + qApp->processEvents(); + + QDeclarativeListView *listview = qobject_cast(canvas->rootObject()); + QVERIFY(listview != 0); + + QDeclarativeItem *contentItem = listview->contentItem(); + QVERIFY(contentItem != 0); + + listview->decrementCurrentIndex(); + QCOMPARE(listview->currentIndex(), 99); + + listview->incrementCurrentIndex(); + QCOMPARE(listview->currentIndex(), 0); +} + void tst_QDeclarativeListView::qListModelInterface_items() { items(); -- cgit v0.12 From e3da9407ad85a65abce72f8a32230ec4f2f95369 Mon Sep 17 00:00:00 2001 From: Bea Lam Date: Wed, 24 Nov 2010 13:50:27 +1000 Subject: Allow javascript date and regexp objects in WorkerScript messages Task-number: QTBUG-14666 Reviewed-by: Aaron Kennedy --- src/declarative/qml/qdeclarativeworkerscript.cpp | 13 +++++++++++++ .../tst_qdeclarativeworkerscript.cpp | 5 +++++ 2 files changed, 18 insertions(+) diff --git a/src/declarative/qml/qdeclarativeworkerscript.cpp b/src/declarative/qml/qdeclarativeworkerscript.cpp index be7ea0e..4b78020 100644 --- a/src/declarative/qml/qdeclarativeworkerscript.cpp +++ b/src/declarative/qml/qdeclarativeworkerscript.cpp @@ -52,6 +52,7 @@ #include #include #include +#include #include #include #include "qdeclarativenetworkaccessmanagerfactory.h" @@ -314,6 +315,12 @@ QVariant QDeclarativeWorkerScriptEnginePrivate::scriptValueToVariant(const QScri return QVariant(value.toString()); } else if (value.isNumber()) { return QVariant((qreal)value.toNumber()); + } else if (value.isDate()) { + return QVariant(value.toDateTime()); +#ifndef QT_NO_REGEXP + } else if (value.isRegExp()) { + return QVariant(value.toRegExp()); +#endif } else if (value.isArray()) { QVariantList list; @@ -364,6 +371,12 @@ QScriptValue QDeclarativeWorkerScriptEnginePrivate::variantToScriptValue(const Q return QScriptValue(value.toString()); } else if (value.userType() == QMetaType::QReal) { return QScriptValue(value.toReal()); + } else if (value.userType() == QVariant::DateTime) { + return engine->newDate(value.toDateTime()); +#ifndef QT_NO_REGEXP + } else if (value.userType() == QVariant::RegExp) { + return engine->newRegExp(value.toRegExp()); +#endif } else if (value.userType() == qMetaTypeId()) { QDeclarativeListModelWorkerAgent::VariantRef vr = qvariant_cast(value); if (vr.a->scriptEngine() == 0) diff --git a/tests/auto/declarative/qdeclarativeworkerscript/tst_qdeclarativeworkerscript.cpp b/tests/auto/declarative/qdeclarativeworkerscript/tst_qdeclarativeworkerscript.cpp index 3140265..5a6cf3c 100644 --- a/tests/auto/declarative/qdeclarativeworkerscript/tst_qdeclarativeworkerscript.cpp +++ b/tests/auto/declarative/qdeclarativeworkerscript/tst_qdeclarativeworkerscript.cpp @@ -137,6 +137,11 @@ void tst_QDeclarativeWorkerScript::messaging_data() QTest::newRow("real") << qVariantFromValue(10334.375); QTest::newRow("string") << qVariantFromValue(QString("More cheeeese, Gromit!")); QTest::newRow("variant list") << qVariantFromValue((QVariantList() << "a" << "b" << "c")); + QTest::newRow("date time") << qVariantFromValue(QDateTime::currentDateTime()); +#ifndef QT_NO_REGEXP + // QtScript's QScriptValue -> QRegExp uses RegExp2 pattern syntax + QTest::newRow("regexp") << qVariantFromValue(QRegExp("^\\d\\d?$", Qt::CaseInsensitive, QRegExp::RegExp2)); +#endif } void tst_QDeclarativeWorkerScript::messaging_sendQObjectList() -- cgit v0.12 From 810e21d9e404aa2fcb602cb68bfd892387b234e7 Mon Sep 17 00:00:00 2001 From: Martin Jones Date: Wed, 24 Nov 2010 14:28:18 +1000 Subject: Flickable and MouseArea were too eager to take/keep mouse grab. This meant that they would sometimes act upon a drag immediately, rather than waiting for a nested area to take the grab. This resulted in a short jump before future events were handled by the nested item. Task-number: QTBUG-15568 Reviewed-by: Bea Lam --- .../graphicsitems/qdeclarativeflickable.cpp | 16 +- .../graphicsitems/qdeclarativemousearea.cpp | 37 +- .../tst_qdeclarativemousearea.cpp | 7 + .../qdeclarativemousearea/data/nested.0.png | Bin 0 -> 1360 bytes .../qdeclarativemousearea/data/nested.1.png | Bin 0 -> 1367 bytes .../qdeclarativemousearea/data/nested.2.png | Bin 0 -> 1367 bytes .../qdeclarativemousearea/data/nested.3.png | Bin 0 -> 1372 bytes .../qdeclarativemousearea/data/nested.4.png | Bin 0 -> 1382 bytes .../qdeclarativemousearea/data/nested.5.png | Bin 0 -> 1379 bytes .../qdeclarativemousearea/data/nested.6.png | Bin 0 -> 1390 bytes .../qdeclarativemousearea/data/nested.7.png | Bin 0 -> 1379 bytes .../qdeclarativemousearea/data/nested.8.png | Bin 0 -> 1380 bytes .../qdeclarativemousearea/data/nested.9.png | Bin 0 -> 1379 bytes .../qdeclarativemousearea/data/nested.qml | 5039 ++++++++++++++++++++ .../qmlvisual/qdeclarativemousearea/nested.qml | 62 + 15 files changed, 5142 insertions(+), 19 deletions(-) create mode 100644 tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.0.png create mode 100644 tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.1.png create mode 100644 tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.2.png create mode 100644 tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.3.png create mode 100644 tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.4.png create mode 100644 tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.5.png create mode 100644 tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.6.png create mode 100644 tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.7.png create mode 100644 tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.8.png create mode 100644 tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.9.png create mode 100644 tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.qml create mode 100644 tests/auto/declarative/qmlvisual/qdeclarativemousearea/nested.qml diff --git a/src/declarative/graphicsitems/qdeclarativeflickable.cpp b/src/declarative/graphicsitems/qdeclarativeflickable.cpp index 1870647..377f3b5 100644 --- a/src/declarative/graphicsitems/qdeclarativeflickable.cpp +++ b/src/declarative/graphicsitems/qdeclarativeflickable.cpp @@ -281,7 +281,6 @@ void QDeclarativeFlickablePrivate::fixupY() void QDeclarativeFlickablePrivate::fixup(AxisData &data, qreal minExtent, qreal maxExtent) { - Q_Q(QDeclarativeFlickable); if (data.move.value() > minExtent || maxExtent > minExtent) { timeline.reset(data.move); if (data.move.value() != minExtent) { @@ -290,8 +289,7 @@ void QDeclarativeFlickablePrivate::fixup(AxisData &data, qreal minExtent, qreal timeline.move(data.move, minExtent - dist/2, QEasingCurve(QEasingCurve::InQuad), fixupDuration/4); timeline.move(data.move, minExtent, QEasingCurve(QEasingCurve::OutExpo), 3*fixupDuration/4); } else { - data.move.setValue(minExtent); - q->viewportMoved(); + timeline.set(data.move, minExtent); } } } else if (data.move.value() < maxExtent) { @@ -301,8 +299,7 @@ void QDeclarativeFlickablePrivate::fixup(AxisData &data, qreal minExtent, qreal timeline.move(data.move, maxExtent - dist/2, QEasingCurve(QEasingCurve::InQuad), fixupDuration/4); timeline.move(data.move, maxExtent, QEasingCurve(QEasingCurve::OutExpo), 3*fixupDuration/4); } else { - data.move.setValue(maxExtent); - q->viewportMoved(); + timeline.set(data.move, minExtent); } } vTime = timeline.time(); @@ -703,6 +700,9 @@ void QDeclarativeFlickablePrivate::handleMouseMoveEvent(QGraphicsSceneMouseEvent bool rejectY = false; bool rejectX = false; + bool stealY = false; + bool stealX = false; + if (q->yflick()) { int dy = int(event->pos().y() - pressPos.y()); if (qAbs(dy) > QApplication::startDragDistance() || QDeclarativeItemPrivate::elapsed(pressTime) > 200) { @@ -731,7 +731,7 @@ void QDeclarativeFlickablePrivate::handleMouseMoveEvent(QGraphicsSceneMouseEvent vMoved = true; } if (qAbs(dy) > QApplication::startDragDistance()) - stealMouse = true; + stealY = true; } } @@ -764,10 +764,12 @@ void QDeclarativeFlickablePrivate::handleMouseMoveEvent(QGraphicsSceneMouseEvent } if (qAbs(dx) > QApplication::startDragDistance()) - stealMouse = true; + stealX = true; } } + stealMouse = stealX || stealY; + if (!lastPos.isNull()) { qreal elapsed = qreal(QDeclarativeItemPrivate::restart(lastPosTime)) / 1000.; if (elapsed <= 0) diff --git a/src/declarative/graphicsitems/qdeclarativemousearea.cpp b/src/declarative/graphicsitems/qdeclarativemousearea.cpp index d9edd11..0a043a7 100644 --- a/src/declarative/graphicsitems/qdeclarativemousearea.cpp +++ b/src/declarative/graphicsitems/qdeclarativemousearea.cpp @@ -500,17 +500,9 @@ void QDeclarativeMouseArea::mouseMoveEvent(QGraphicsSceneMouseEvent *event) const int dragThreshold = QApplication::startDragDistance(); qreal dx = qAbs(curLocalPos.x() - startLocalPos.x()); qreal dy = qAbs(curLocalPos.y() - startLocalPos.y()); - if ((d->dragX && !(dx < dragThreshold)) || (d->dragY && !(dy < dragThreshold))) { + + if (keepMouseGrab() && d->stealMouse) d->drag->setActive(true); - d->stealMouse = true; - } - if (!keepMouseGrab()) { - if ((!d->dragY && dy < dragThreshold && d->dragX && dx > dragThreshold) - || (!d->dragX && dx < dragThreshold && d->dragY && dy > dragThreshold) - || (d->dragX && d->dragY)) { - setKeepMouseGrab(true); - } - } if (d->dragX && d->drag->active()) { qreal x = (curLocalPos.x() - startLocalPos.x()) + d->startX; @@ -528,6 +520,16 @@ void QDeclarativeMouseArea::mouseMoveEvent(QGraphicsSceneMouseEvent *event) y = drag()->ymax(); drag()->target()->setY(y); } + + if (!keepMouseGrab()) { + if ((!d->dragY && dy < dragThreshold && d->dragX && dx > dragThreshold) + || (!d->dragX && dx < dragThreshold && d->dragY && dy > dragThreshold) + || (d->dragX && d->dragY && (dx > dragThreshold || dy > dragThreshold))) { + setKeepMouseGrab(true); + d->stealMouse = true; + } + } + d->moved = true; } QDeclarativeMouseEvent me(d->lastPos.x(), d->lastPos.y(), d->lastButton, d->lastButtons, d->lastModifiers, false, d->longPress); @@ -618,6 +620,7 @@ bool QDeclarativeMouseArea::sceneEvent(QEvent *event) // if our mouse grab has been removed (probably by Flickable), fix our // state d->pressed = false; + d->stealMouse = false; setKeepMouseGrab(false); emit canceled(); emit pressedChanged(); @@ -672,8 +675,18 @@ bool QDeclarativeMouseArea::sendMouseEvent(QGraphicsSceneMouseEvent *event) return stealThisEvent; } if (mouseEvent.type() == QEvent::GraphicsSceneMouseRelease) { - d->stealMouse = false; - ungrabMouse(); + if (d->pressed) { + d->pressed = false; + d->stealMouse = false; + if (s && s->mouseGrabberItem() == this) + ungrabMouse(); + emit canceled(); + emit pressedChanged(); + if (d->hovered) { + d->hovered = false; + emit hoveredChanged(); + } + } } return false; } diff --git a/tests/auto/declarative/qdeclarativemousearea/tst_qdeclarativemousearea.cpp b/tests/auto/declarative/qdeclarativemousearea/tst_qdeclarativemousearea.cpp index 57a58e9..9d7cc05 100644 --- a/tests/auto/declarative/qdeclarativemousearea/tst_qdeclarativemousearea.cpp +++ b/tests/auto/declarative/qdeclarativemousearea/tst_qdeclarativemousearea.cpp @@ -216,7 +216,14 @@ void tst_QDeclarativeMouseArea::dragging() QCOMPARE(blackRect->x(), 50.0); QCOMPARE(blackRect->y(), 50.0); + // First move event triggers drag, second is acted upon. + // This is due to possibility of higher stacked area taking precedence. QGraphicsSceneMouseEvent moveEvent(QEvent::GraphicsSceneMouseMove); + moveEvent.setScenePos(QPointF(106, 106)); + moveEvent.setButton(Qt::LeftButton); + moveEvent.setButtons(Qt::LeftButton); + QApplication::sendEvent(scene, &moveEvent); + moveEvent.setScenePos(QPointF(110, 110)); moveEvent.setButton(Qt::LeftButton); moveEvent.setButtons(Qt::LeftButton); diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.0.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.0.png new file mode 100644 index 0000000..793fb0f Binary files /dev/null and b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.0.png differ diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.1.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.1.png new file mode 100644 index 0000000..5935b45 Binary files /dev/null and b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.1.png differ diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.2.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.2.png new file mode 100644 index 0000000..a205266 Binary files /dev/null and b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.2.png differ diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.3.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.3.png new file mode 100644 index 0000000..3d81ff2 Binary files /dev/null and b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.3.png differ diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.4.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.4.png new file mode 100644 index 0000000..ee2076e Binary files /dev/null and b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.4.png differ diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.5.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.5.png new file mode 100644 index 0000000..9017124 Binary files /dev/null and b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.5.png differ diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.6.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.6.png new file mode 100644 index 0000000..216dd7e Binary files /dev/null and b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.6.png differ diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.7.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.7.png new file mode 100644 index 0000000..27e8480 Binary files /dev/null and b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.7.png differ diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.8.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.8.png new file mode 100644 index 0000000..6b911c5 Binary files /dev/null and b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.8.png differ diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.9.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.9.png new file mode 100644 index 0000000..01858a5 Binary files /dev/null and b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.9.png differ diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.qml b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.qml new file mode 100644 index 0000000..cec1558 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.qml @@ -0,0 +1,5039 @@ +import Qt.VisualTest 4.7 + +VisualTest { + Frame { + msec: 0 + } + Frame { + msec: 16 + image: "nested.0.png" + } + Frame { + msec: 32 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 48 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 64 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 80 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 96 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 112 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 128 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 144 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 160 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 176 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 192 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 208 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 224 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 240 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 256 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 272 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 288 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 304 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 320 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 336 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 352 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 368 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 384 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 400 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 416 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 432 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 448 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 464 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 480 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 496 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 512 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 528 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 544 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 560 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 576 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 592 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 608 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 624 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 640 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 656 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 672 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 688 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 704 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 720 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 736 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 752 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 768 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 784 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 800 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 816 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 832 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 848 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 864 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Mouse { + type: 2 + button: 1 + buttons: 1 + x: 25; y: 62 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 880 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 26; y: 62 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 896 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 27; y: 62 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 912 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 28; y: 62 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 29; y: 62 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 928 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 30; y: 62 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 33; y: 63 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 944 + hash: "f5aa6257fd80c1e383bc2db84e41c354" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 35; y: 63 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 40; y: 63 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 960 + hash: "e96076794d3efc62a8fe2d2e543e97c7" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 42; y: 63 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 48; y: 63 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 976 + image: "nested.1.png" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 51; y: 63 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 58; y: 63 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 992 + hash: "ab955f6c6b210b66b27e244dc2150860" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 66; y: 64 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 70; y: 64 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1008 + hash: "b655247e73b0b8357dc9d355ba6f49a0" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 79; y: 64 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 83; y: 64 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1024 + hash: "08b67b7e28990cac8c9bd354b7d87698" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 91; y: 64 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 95; y: 64 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1040 + hash: "69cecfb41899e13c0bc5acb6f9bc666d" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 104; y: 64 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 107; y: 64 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1056 + hash: "8d1f0cd85fd3f2654f7c30a6d9ec2b99" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 115; y: 64 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 122; y: 64 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1072 + hash: "f8ddda87cfcf5dc9d8c6e940fbd295f3" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 126; y: 64 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 133; y: 64 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1088 + hash: "ab9d942c47a2cca5531f7b67df034161" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 136; y: 64 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 143; y: 64 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1104 + hash: "7ca5a03fdfac44c389315c3928631a2a" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 146; y: 64 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 151; y: 64 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1120 + hash: "ade955ed9d85fbbe72cf18bbc541c8bf" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 153; y: 64 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 158; y: 64 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1136 + hash: "6ad4afa3e3fcb578946fccbf4896761c" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 162; y: 64 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 163; y: 64 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1152 + hash: "3ebe78e37c1c66d0b8fc86c8191e39de" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 165; y: 64 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 166; y: 64 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1168 + hash: "6450917cc89a553cf509265eaf318efb" + } + Frame { + msec: 1184 + hash: "6450917cc89a553cf509265eaf318efb" + } + Frame { + msec: 1200 + hash: "6450917cc89a553cf509265eaf318efb" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 166; y: 63 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1216 + hash: "6450917cc89a553cf509265eaf318efb" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 164; y: 63 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 161; y: 63 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1232 + hash: "adfe54d5d28f7caf9ace117fd3573444" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 159; y: 63 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 156; y: 63 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1248 + hash: "f4963636cc4fbd8bfe6baf10540ed7e7" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 154; y: 63 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 149; y: 63 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1264 + hash: "1c2d2edb9214cc3857aa221330ee28ba" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 143; y: 63 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 139; y: 63 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1280 + hash: "750226c90e6c6cd0b3bdd3c3dc8da18f" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 131; y: 63 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 126; y: 63 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1296 + hash: "b6b5d177ab531460dc125afa82489a1d" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 115; y: 63 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 111; y: 63 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1312 + hash: "62d411a7b6c404393e4bfafab9c638a3" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 100; y: 63 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 91; y: 63 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1328 + hash: "e355997b3decd4deb686fece59c33c7c" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 86; y: 63 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 76; y: 63 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1344 + hash: "2ab73c8aac6a0e321686e97c9bb28f28" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 71; y: 63 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 61; y: 63 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1360 + hash: "55a887f9f45f71beb6b723191eb60a2f" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 56; y: 63 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 50; y: 63 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1376 + hash: "b2d49e34362994739d14fb8231ff82d6" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 47; y: 63 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 43; y: 64 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1392 + hash: "3964796876870035794b41501991b527" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 41; y: 64 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 40; y: 64 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1408 + hash: "e96076794d3efc62a8fe2d2e543e97c7" + } + Frame { + msec: 1424 + hash: "e96076794d3efc62a8fe2d2e543e97c7" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 41; y: 64 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1440 + hash: "7e524b3c43a987503ef102bdb9f11701" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 42; y: 64 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1456 + hash: "2a7c13e97c21e298541bb5ab8169ff13" + } + Frame { + msec: 1472 + hash: "2a7c13e97c21e298541bb5ab8169ff13" + } + Frame { + msec: 1488 + hash: "2a7c13e97c21e298541bb5ab8169ff13" + } + Frame { + msec: 1504 + hash: "2a7c13e97c21e298541bb5ab8169ff13" + } + Frame { + msec: 1520 + hash: "2a7c13e97c21e298541bb5ab8169ff13" + } + Frame { + msec: 1536 + hash: "2a7c13e97c21e298541bb5ab8169ff13" + } + Frame { + msec: 1552 + hash: "2a7c13e97c21e298541bb5ab8169ff13" + } + Mouse { + type: 3 + button: 1 + buttons: 0 + x: 42; y: 64 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1568 + hash: "2a7c13e97c21e298541bb5ab8169ff13" + } + Frame { + msec: 1584 + hash: "2a7c13e97c21e298541bb5ab8169ff13" + } + Frame { + msec: 1600 + hash: "2a7c13e97c21e298541bb5ab8169ff13" + } + Frame { + msec: 1616 + hash: "2a7c13e97c21e298541bb5ab8169ff13" + } + Frame { + msec: 1632 + hash: "2a7c13e97c21e298541bb5ab8169ff13" + } + Frame { + msec: 1648 + hash: "2a7c13e97c21e298541bb5ab8169ff13" + } + Frame { + msec: 1664 + hash: "2a7c13e97c21e298541bb5ab8169ff13" + } + Frame { + msec: 1680 + hash: "2a7c13e97c21e298541bb5ab8169ff13" + } + Frame { + msec: 1696 + hash: "2a7c13e97c21e298541bb5ab8169ff13" + } + Frame { + msec: 1712 + hash: "2a7c13e97c21e298541bb5ab8169ff13" + } + Frame { + msec: 1728 + hash: "2a7c13e97c21e298541bb5ab8169ff13" + } + Frame { + msec: 1744 + hash: "2a7c13e97c21e298541bb5ab8169ff13" + } + Frame { + msec: 1760 + hash: "2a7c13e97c21e298541bb5ab8169ff13" + } + Frame { + msec: 1776 + hash: "2a7c13e97c21e298541bb5ab8169ff13" + } + Frame { + msec: 1792 + hash: "2a7c13e97c21e298541bb5ab8169ff13" + } + Frame { + msec: 1808 + hash: "2a7c13e97c21e298541bb5ab8169ff13" + } + Frame { + msec: 1824 + hash: "2a7c13e97c21e298541bb5ab8169ff13" + } + Frame { + msec: 1840 + hash: "2a7c13e97c21e298541bb5ab8169ff13" + } + Frame { + msec: 1856 + hash: "2a7c13e97c21e298541bb5ab8169ff13" + } + Frame { + msec: 1872 + hash: "2a7c13e97c21e298541bb5ab8169ff13" + } + Frame { + msec: 1888 + hash: "2a7c13e97c21e298541bb5ab8169ff13" + } + Frame { + msec: 1904 + hash: "2a7c13e97c21e298541bb5ab8169ff13" + } + Frame { + msec: 1920 + hash: "2a7c13e97c21e298541bb5ab8169ff13" + } + Frame { + msec: 1936 + image: "nested.2.png" + } + Frame { + msec: 1952 + hash: "2a7c13e97c21e298541bb5ab8169ff13" + } + Mouse { + type: 2 + button: 1 + buttons: 1 + x: 38; y: 56 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1968 + hash: "2a7c13e97c21e298541bb5ab8169ff13" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 39; y: 57 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1984 + hash: "2a7c13e97c21e298541bb5ab8169ff13" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 39; y: 59 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 39; y: 60 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2000 + hash: "2a7c13e97c21e298541bb5ab8169ff13" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 40; y: 63 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 40; y: 65 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2016 + hash: "9178754b825d60b2174ed9431ea80586" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 41; y: 68 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 41; y: 70 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 45; y: 79 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2032 + hash: "89eff8fa9f8710d7cbc50b8d4b751148" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 47; y: 84 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 48; y: 86 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2048 + hash: "cdae8b46ecfc2b0c90264c120156cc46" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 50; y: 91 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 51; y: 93 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2064 + hash: "cf35919630eab647a28eb91d8a441704" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 53; y: 99 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 53; y: 102 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2080 + hash: "283256d50da8c855c50d5f8813d37afd" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 54; y: 107 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 54; y: 109 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2096 + hash: "2560cd67d507bc24c1000187f645531c" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 54; y: 113 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 54; y: 117 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2112 + hash: "6f6f7c299c4516c5231f5bfcd39b6db3" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 54; y: 119 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 54; y: 122 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2128 + hash: "e7989524238996cf59f420f4edf8f982" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 54; y: 124 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 54; y: 126 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2144 + hash: "34d8d456848807e854bcb25ffbde37d4" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 54; y: 127 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 54; y: 130 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2160 + hash: "433bd3983804b07484d38af2723f519e" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 53; y: 132 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 53; y: 134 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2176 + hash: "510e534a8a7b88041f7544e7e4992b8f" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 53; y: 137 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 52; y: 139 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2192 + hash: "25f43c457a5bf2b70a66ce91685ad4dc" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 51; y: 141 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 51; y: 142 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2208 + hash: "4119ab90627359420e25220618b76a69" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 51; y: 145 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 50; y: 146 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2224 + hash: "8a3cc888e96cf3e26e369723b442baf1" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 49; y: 147 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 49; y: 150 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2240 + hash: "980552e8ff9d87ccb40127b06b0f846f" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 48; y: 151 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 48; y: 153 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2256 + hash: "9ee23fc7cbca4467f984073d2af7cdf6" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 48; y: 154 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 48; y: 155 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2272 + hash: "032d65792ac867c9b9acef05bd993c54" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 48; y: 156 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2288 + hash: "be2f8d5a64034e75e23527c486e33029" + } + Frame { + msec: 2304 + hash: "be2f8d5a64034e75e23527c486e33029" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 49; y: 155 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2320 + hash: "3f65505e4d1f8534c9123b3dea15d43e" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 49; y: 154 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 49; y: 152 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2336 + hash: "e8b1799cf1926cb3b6cbf3adee80cffe" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 49; y: 149 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 49; y: 147 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2352 + hash: "31155b14cc0d3d47bbef4e199fdfcb46" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 51; y: 140 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 52; y: 132 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2368 + hash: "b89745a9a60a7ebeb1de0a7f96ad2ac3" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 53; y: 128 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 57; y: 118 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2384 + hash: "7e99fa1eba369d45f10778fe02356f09" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 59; y: 114 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 64; y: 103 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2400 + hash: "cd123f6b332f38f43abbf01469a41301" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 67; y: 98 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 71; y: 90 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2416 + hash: "353c0602dd2b670e19988117172855fc" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 76; y: 81 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 78; y: 78 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2432 + hash: "20df9d19fd2113fa8f8023d5b4328dc5" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 81; y: 70 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 82; y: 67 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2448 + hash: "10b34a758d5b3790dd36c9d95c47b157" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 84; y: 62 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 85; y: 60 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2464 + hash: "98a483e1eaa9145fd277fd85a9b0cf03" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 87; y: 57 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 88; y: 55 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2480 + hash: "e92edd52ff1ee78456fa1947a46e6570" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 89; y: 53 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 91; y: 52 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2496 + hash: "877384496d967f5f0ab1c817a2b316d6" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 92; y: 51 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 93; y: 51 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2512 + hash: "15673570ffe9a391f9214601ac9dc86c" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 94; y: 50 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 95; y: 50 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2528 + hash: "4b7f0094b19a4495bf913d2994889497" + } + Frame { + msec: 2544 + hash: "4b7f0094b19a4495bf913d2994889497" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 95; y: 49 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2560 + hash: "4b7f0094b19a4495bf913d2994889497" + } + Frame { + msec: 2576 + hash: "4b7f0094b19a4495bf913d2994889497" + } + Frame { + msec: 2592 + hash: "4b7f0094b19a4495bf913d2994889497" + } + Frame { + msec: 2608 + hash: "4b7f0094b19a4495bf913d2994889497" + } + Frame { + msec: 2624 + hash: "4b7f0094b19a4495bf913d2994889497" + } + Frame { + msec: 2640 + hash: "4b7f0094b19a4495bf913d2994889497" + } + Mouse { + type: 3 + button: 1 + buttons: 0 + x: 95; y: 49 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2656 + hash: "2994e98b8ea9a6883a7324e7e848345c" + } + Frame { + msec: 2672 + hash: "2994e98b8ea9a6883a7324e7e848345c" + } + Frame { + msec: 2688 + hash: "2994e98b8ea9a6883a7324e7e848345c" + } + Frame { + msec: 2704 + hash: "2994e98b8ea9a6883a7324e7e848345c" + } + Frame { + msec: 2720 + hash: "2994e98b8ea9a6883a7324e7e848345c" + } + Frame { + msec: 2736 + hash: "2994e98b8ea9a6883a7324e7e848345c" + } + Frame { + msec: 2752 + hash: "2994e98b8ea9a6883a7324e7e848345c" + } + Frame { + msec: 2768 + hash: "2994e98b8ea9a6883a7324e7e848345c" + } + Frame { + msec: 2784 + hash: "2994e98b8ea9a6883a7324e7e848345c" + } + Frame { + msec: 2800 + hash: "2994e98b8ea9a6883a7324e7e848345c" + } + Frame { + msec: 2816 + hash: "2994e98b8ea9a6883a7324e7e848345c" + } + Frame { + msec: 2832 + hash: "2994e98b8ea9a6883a7324e7e848345c" + } + Frame { + msec: 2848 + hash: "2994e98b8ea9a6883a7324e7e848345c" + } + Frame { + msec: 2864 + hash: "2994e98b8ea9a6883a7324e7e848345c" + } + Frame { + msec: 2880 + hash: "2994e98b8ea9a6883a7324e7e848345c" + } + Frame { + msec: 2896 + image: "nested.3.png" + } + Frame { + msec: 2912 + hash: "2994e98b8ea9a6883a7324e7e848345c" + } + Frame { + msec: 2928 + hash: "2994e98b8ea9a6883a7324e7e848345c" + } + Frame { + msec: 2944 + hash: "2994e98b8ea9a6883a7324e7e848345c" + } + Frame { + msec: 2960 + hash: "2994e98b8ea9a6883a7324e7e848345c" + } + Frame { + msec: 2976 + hash: "2994e98b8ea9a6883a7324e7e848345c" + } + Frame { + msec: 2992 + hash: "2994e98b8ea9a6883a7324e7e848345c" + } + Frame { + msec: 3008 + hash: "2994e98b8ea9a6883a7324e7e848345c" + } + Frame { + msec: 3024 + hash: "2994e98b8ea9a6883a7324e7e848345c" + } + Frame { + msec: 3040 + hash: "2994e98b8ea9a6883a7324e7e848345c" + } + Frame { + msec: 3056 + hash: "2994e98b8ea9a6883a7324e7e848345c" + } + Frame { + msec: 3072 + hash: "2994e98b8ea9a6883a7324e7e848345c" + } + Frame { + msec: 3088 + hash: "2994e98b8ea9a6883a7324e7e848345c" + } + Frame { + msec: 3104 + hash: "2994e98b8ea9a6883a7324e7e848345c" + } + Frame { + msec: 3120 + hash: "2994e98b8ea9a6883a7324e7e848345c" + } + Frame { + msec: 3136 + hash: "2994e98b8ea9a6883a7324e7e848345c" + } + Frame { + msec: 3152 + hash: "2994e98b8ea9a6883a7324e7e848345c" + } + Frame { + msec: 3168 + hash: "2994e98b8ea9a6883a7324e7e848345c" + } + Frame { + msec: 3184 + hash: "2994e98b8ea9a6883a7324e7e848345c" + } + Frame { + msec: 3200 + hash: "2994e98b8ea9a6883a7324e7e848345c" + } + Frame { + msec: 3216 + hash: "2994e98b8ea9a6883a7324e7e848345c" + } + Frame { + msec: 3232 + hash: "2994e98b8ea9a6883a7324e7e848345c" + } + Mouse { + type: 2 + button: 1 + buttons: 1 + x: 156; y: 74 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3248 + hash: "2994e98b8ea9a6883a7324e7e848345c" + } + Frame { + msec: 3264 + hash: "2994e98b8ea9a6883a7324e7e848345c" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 156; y: 73 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 157; y: 73 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3280 + hash: "2994e98b8ea9a6883a7324e7e848345c" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 158; y: 73 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 160; y: 73 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3296 + hash: "2994e98b8ea9a6883a7324e7e848345c" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 161; y: 73 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 163; y: 73 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3312 + hash: "df6cf21e99177a436e356f818996070c" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 166; y: 73 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 171; y: 74 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3328 + hash: "86f5e3fee147f47edd4a6d042aff0301" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 178; y: 75 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 181; y: 75 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3344 + hash: "589c1418a9179c868d904b1a5169a11b" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 189; y: 75 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 193; y: 75 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3360 + hash: "3141ad77d193e145b749759070e1e6ef" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 200; y: 75 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 204; y: 75 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3376 + hash: "5e34d4deeb6d80b336cacea39797e0ca" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 211; y: 75 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 217; y: 75 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3392 + hash: "b8795d844982bcf60a6713f91717648f" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 220; y: 75 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 224; y: 75 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3408 + hash: "857c63b24057ee0186c5136eddb71cb1" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 226; y: 75 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 227; y: 76 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3424 + hash: "49222ed0d1ebc8759d0a1dc65c3beec6" + } + Frame { + msec: 3440 + hash: "49222ed0d1ebc8759d0a1dc65c3beec6" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 227; y: 77 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 226; y: 77 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3456 + hash: "751847708a468f4f3e64e7cb5ebd1351" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 225; y: 78 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 224; y: 78 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3472 + hash: "4016f80a5219fcba6480645f71998d71" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 221; y: 80 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 220; y: 80 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3488 + hash: "beef05cd2a3d20bc66978fa4f0ac1d12" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 216; y: 82 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 214; y: 84 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3504 + hash: "e50a2661e93d34b55c8d2d39abc77e5a" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 209; y: 86 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 206; y: 86 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3520 + hash: "7beccbc2f091350bb5d9de1e2443021d" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 200; y: 88 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 192; y: 89 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3536 + hash: "1d39570bf07392f56b6dd24b0bf9e7bc" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 188; y: 90 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 180; y: 91 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3552 + hash: "62565b3e5aad3979b408207bbf36e615" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 176; y: 92 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 167; y: 92 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3568 + hash: "d9c6004921847fef16bb8c2f5d6b3b7d" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 162; y: 92 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 152; y: 92 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3584 + hash: "53da27301ad97ae52c65928615ec0cd7" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 142; y: 92 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 137; y: 90 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3600 + hash: "9772a776e84515984b4eec70dbd1c5a7" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 125; y: 88 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 119; y: 88 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3616 + hash: "9caa6583a716443c13e8fef3f2923d6e" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 109; y: 86 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 104; y: 85 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3632 + hash: "f162a18b2d3f0d5f6f01fc373c016f68" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 98; y: 84 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 96; y: 84 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3648 + hash: "58976e8e31beddf881c7cfa3ede54c09" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 94; y: 84 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 92; y: 83 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3664 + hash: "6625f7adb097bc170024083c42d74b4b" + } + Frame { + msec: 3680 + hash: "6625f7adb097bc170024083c42d74b4b" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 92; y: 82 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3696 + hash: "1d63f09ca27e9d70c3c0ea923a6cfba4" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 93; y: 82 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3712 + hash: "1d63f09ca27e9d70c3c0ea923a6cfba4" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 94; y: 81 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 96; y: 81 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3728 + hash: "a23c75fcaa0a28adb944bf192af65bff" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 98; y: 81 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 100; y: 81 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3744 + hash: "2b90fe8937dcc39d1d6add305cf36043" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 107; y: 81 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 111; y: 81 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3760 + hash: "7da82cfaf0f826ca9a41128278b6b09c" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 118; y: 81 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 122; y: 81 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3776 + hash: "a3f69d13d38b336fda33a86899564996" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 129; y: 80 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 135; y: 79 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3792 + hash: "dc562319e1d332ba34ac94bfc0c39c5e" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 138; y: 79 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 140; y: 78 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3808 + hash: "756482bee292668f56d813847b0ccd53" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 141; y: 77 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 142; y: 76 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3824 + hash: "06d250c4d18a70f8f7b1c10e22a1bc4c" + } + Frame { + msec: 3840 + hash: "06d250c4d18a70f8f7b1c10e22a1bc4c" + } + Frame { + msec: 3856 + image: "nested.4.png" + } + Frame { + msec: 3872 + hash: "06d250c4d18a70f8f7b1c10e22a1bc4c" + } + Mouse { + type: 3 + button: 1 + buttons: 0 + x: 142; y: 76 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3888 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 3904 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 3920 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 3936 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 3952 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 3968 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 3984 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 4000 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 4016 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 4032 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 4048 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 4064 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 4080 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 4096 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 4112 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 4128 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 4144 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 4160 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 4176 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 4192 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 4208 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 4224 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 4240 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 4256 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 4272 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 4288 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 4304 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 4320 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 4336 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 4352 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 4368 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 4384 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 4400 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 4416 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 4432 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 4448 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 4464 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 4480 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 4496 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 4512 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 4528 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 4544 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Mouse { + type: 2 + button: 1 + buttons: 1 + x: 16; y: 46 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4560 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 4576 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 16; y: 47 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 16; y: 48 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4592 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 16; y: 49 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 17; y: 50 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4608 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 17; y: 55 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 18; y: 56 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4624 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 20; y: 61 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 20; y: 64 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4640 + hash: "ff1f86b47e0d1db5db7d939df8349931" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 22; y: 70 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 23; y: 73 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4656 + hash: "f13393a4556e9e73c33f2bb74d8f7794" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 26; y: 80 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 28; y: 84 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4672 + hash: "8c9aa01516437184eb17d89348cca004" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 33; y: 91 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 40; y: 99 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4688 + hash: "8b6848cb722ff5ec02d957da1ee687e5" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 44; y: 102 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 53; y: 109 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4704 + hash: "552fde584d128f511788670031d79dd2" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 58; y: 112 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 64; y: 117 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4720 + hash: "55dc3a4242b46e602f823c0305e67ad2" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 68; y: 118 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 71; y: 120 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4736 + hash: "603b9b2ed6ff4273c3ab1cbe32afb19e" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 73; y: 120 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 3 + button: 1 + buttons: 0 + x: 73; y: 120 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4752 + hash: "157eda24ea8452a208aa7a6a22639c73" + } + Frame { + msec: 4768 + hash: "157eda24ea8452a208aa7a6a22639c73" + } + Frame { + msec: 4784 + hash: "c5005b83816c18b67448dfbccd0ab0b2" + } + Frame { + msec: 4800 + hash: "878512df863e5d60437b85fbd2a32eb1" + } + Frame { + msec: 4816 + image: "nested.5.png" + } + Frame { + msec: 4832 + hash: "02ab69b67b746ec0021295992a03ada1" + } + Frame { + msec: 4848 + hash: "c621382766d7bacab87055a73623a8ce" + } + Frame { + msec: 4864 + hash: "a8d1be78741d9afd88363bd19f1cbc6b" + } + Frame { + msec: 4880 + hash: "5a70275ff656766d73638d4dd4db4492" + } + Frame { + msec: 4896 + hash: "892ea0a00553524b79889d437eac9b6f" + } + Frame { + msec: 4912 + hash: "d818258bffc065430902ffa8f5668f86" + } + Frame { + msec: 4928 + hash: "6b844523522ace7545705ffb8ffe1da3" + } + Frame { + msec: 4944 + hash: "3906097bc49bad199b52c99dbf87f98f" + } + Frame { + msec: 4960 + hash: "a2bd859b5ca7f4fac8d62b1c9ab76aad" + } + Frame { + msec: 4976 + hash: "f374673e3511b1df8b50ff7ef6002b3a" + } + Frame { + msec: 4992 + hash: "c2eecfadd19418f469b1ab53a3ecae70" + } + Frame { + msec: 5008 + hash: "2b481965ece0f2e1795ef56aa5d6a752" + } + Frame { + msec: 5024 + hash: "c294f28000348365a2c37265132efdb5" + } + Frame { + msec: 5040 + hash: "c294f28000348365a2c37265132efdb5" + } + Frame { + msec: 5056 + hash: "4e9c18eab469b2da0cb92526d3d54501" + } + Frame { + msec: 5072 + hash: "4e9c18eab469b2da0cb92526d3d54501" + } + Frame { + msec: 5088 + hash: "4e9c18eab469b2da0cb92526d3d54501" + } + Frame { + msec: 5104 + hash: "4e9c18eab469b2da0cb92526d3d54501" + } + Frame { + msec: 5120 + hash: "3836449b99d88e2dea9a0eb9417faca5" + } + Frame { + msec: 5136 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 5152 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 5168 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 5184 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 5200 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 5216 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 5232 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 5248 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 5264 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 5280 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 5296 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 5312 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 5328 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 5344 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 5360 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 5376 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 5392 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 5408 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 5424 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 5440 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 5456 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 5472 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 5488 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 5504 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 5520 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 5536 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 5552 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 5568 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 5584 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 5600 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 5616 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 5632 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Mouse { + type: 2 + button: 1 + buttons: 1 + x: 20; y: 238 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 21; y: 238 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5648 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 22; y: 239 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 23; y: 239 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5664 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 27; y: 240 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 29; y: 240 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5680 + hash: "b56d132ac881e27d308009fb9a9d2d50" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 33; y: 241 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 36; y: 241 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5696 + hash: "6c65fca03ea127d554f15c80da76f21f" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 42; y: 242 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 45; y: 243 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5712 + hash: "e5d8939135d0e964609a09a437af58bc" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 53; y: 243 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 61; y: 243 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5728 + hash: "ab60a45ac475ef8d1177d831a6572d1f" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 66; y: 243 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 75; y: 243 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5744 + hash: "78b2e0c7dd8b8bcbd573dac79ff815e4" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 79; y: 243 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 89; y: 243 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5760 + hash: "ef9e89650d8e3d572285e2a2e2b09166" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 95; y: 243 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 106; y: 243 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5776 + image: "nested.6.png" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 118; y: 243 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 126; y: 243 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5792 + hash: "b83136fa3769e30ea47097b489e8f1dc" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 137; y: 241 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 143; y: 240 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5808 + hash: "fb892905b790a061ce5985c927db3cf5" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 154; y: 238 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 159; y: 237 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5824 + hash: "bc4358e21d2d31942e776adfd32ef1c6" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 170; y: 235 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 184; y: 234 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5840 + hash: "b42380a7fcf5e2fbfe4dddbe86ad7287" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 191; y: 232 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 201; y: 231 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5856 + hash: "4b3c12beb43a77ebaf458804b03c7b52" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 205; y: 231 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 208; y: 230 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5872 + hash: "a18be4d4ab28c0fd0c16696c4ecc03ef" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 209; y: 230 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 209; y: 229 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5888 + hash: "c5f100bc4b14e958c7d9bbff84e0a934" + } + Frame { + msec: 5904 + hash: "c5f100bc4b14e958c7d9bbff84e0a934" + } + Frame { + msec: 5920 + hash: "c5f100bc4b14e958c7d9bbff84e0a934" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 208; y: 229 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5936 + hash: "a18be4d4ab28c0fd0c16696c4ecc03ef" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 207; y: 229 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 207; y: 230 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5952 + hash: "a8b23e7dad1bdbaa3452335be0f07658" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 206; y: 230 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 204; y: 231 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5968 + hash: "4c1feb559a11912b06ed521bebba43d0" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 200; y: 232 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 194; y: 232 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5984 + hash: "ffb97bcedf72e02616272c1cad5c38d7" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 190; y: 232 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 181; y: 231 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6000 + hash: "99498ed9b4d519a2f842d407abdef90a" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 175; y: 230 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 163; y: 229 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6016 + hash: "1ca3f012adab899eba1dcb63d048345f" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 158; y: 228 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 145; y: 227 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6032 + hash: "8a81d49de887f314f67976a65f469169" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 132; y: 227 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 126; y: 227 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6048 + hash: "b83136fa3769e30ea47097b489e8f1dc" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 116; y: 227 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 112; y: 227 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6064 + hash: "12cdd297407257ae4bb13c87e24537fb" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 103; y: 227 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 99; y: 227 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6080 + hash: "a51ac0a1e9432671c88f7649c38d265d" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 90; y: 227 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 86; y: 227 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6096 + hash: "4ba4f854659161c765395cdee35594f2" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 77; y: 226 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 70; y: 225 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6112 + hash: "9907add9e28b4a8976f3727f99a4b6d4" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 66; y: 224 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 60; y: 223 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6128 + hash: "c2cb865c4a766b9c08328b374e940f29" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 59; y: 223 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 56; y: 223 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6144 + hash: "c97981263572ded23b328da45cf88012" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 55; y: 223 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 53; y: 223 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6160 + hash: "f4bae51c866ba1158f44529208514d6f" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 52; y: 222 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 50; y: 222 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6176 + hash: "35b4f1f9bb343f2b22bd7cdad6f28249" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 49; y: 223 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 48; y: 223 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6192 + hash: "84eba4cb400e5622463f5a1fa79be72b" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 47; y: 223 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 46; y: 223 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6208 + hash: "d38e882728c7efc906befe69b416082a" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 45; y: 223 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6224 + hash: "e5d8939135d0e964609a09a437af58bc" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 44; y: 223 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 43; y: 223 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6240 + hash: "6b6e06e8473d5703e217accd824b08d5" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 42; y: 223 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 40; y: 223 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6256 + hash: "8e38bc5b00e33e24f931b181dc77d3c1" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 39; y: 223 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 38; y: 223 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6272 + hash: "a173708b5380f42a2bdbf6ae69cdca20" + } + Frame { + msec: 6288 + hash: "a173708b5380f42a2bdbf6ae69cdca20" + } + Frame { + msec: 6304 + hash: "a173708b5380f42a2bdbf6ae69cdca20" + } + Frame { + msec: 6320 + hash: "a173708b5380f42a2bdbf6ae69cdca20" + } + Mouse { + type: 3 + button: 1 + buttons: 0 + x: 38; y: 223 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6336 + hash: "3561eaa9124b96b2a0afa022bc0fe581" + } + Frame { + msec: 6352 + hash: "3561eaa9124b96b2a0afa022bc0fe581" + } + Frame { + msec: 6368 + hash: "3561eaa9124b96b2a0afa022bc0fe581" + } + Frame { + msec: 6384 + hash: "3561eaa9124b96b2a0afa022bc0fe581" + } + Frame { + msec: 6400 + hash: "3561eaa9124b96b2a0afa022bc0fe581" + } + Frame { + msec: 6416 + hash: "3561eaa9124b96b2a0afa022bc0fe581" + } + Frame { + msec: 6432 + hash: "3561eaa9124b96b2a0afa022bc0fe581" + } + Frame { + msec: 6448 + hash: "3561eaa9124b96b2a0afa022bc0fe581" + } + Frame { + msec: 6464 + hash: "3561eaa9124b96b2a0afa022bc0fe581" + } + Frame { + msec: 6480 + hash: "3561eaa9124b96b2a0afa022bc0fe581" + } + Frame { + msec: 6496 + hash: "3561eaa9124b96b2a0afa022bc0fe581" + } + Frame { + msec: 6512 + hash: "3561eaa9124b96b2a0afa022bc0fe581" + } + Frame { + msec: 6528 + hash: "3561eaa9124b96b2a0afa022bc0fe581" + } + Frame { + msec: 6544 + hash: "3561eaa9124b96b2a0afa022bc0fe581" + } + Frame { + msec: 6560 + hash: "3561eaa9124b96b2a0afa022bc0fe581" + } + Frame { + msec: 6576 + hash: "3561eaa9124b96b2a0afa022bc0fe581" + } + Frame { + msec: 6592 + hash: "3561eaa9124b96b2a0afa022bc0fe581" + } + Frame { + msec: 6608 + hash: "3561eaa9124b96b2a0afa022bc0fe581" + } + Frame { + msec: 6624 + hash: "3561eaa9124b96b2a0afa022bc0fe581" + } + Frame { + msec: 6640 + hash: "3561eaa9124b96b2a0afa022bc0fe581" + } + Frame { + msec: 6656 + hash: "3561eaa9124b96b2a0afa022bc0fe581" + } + Frame { + msec: 6672 + hash: "3561eaa9124b96b2a0afa022bc0fe581" + } + Frame { + msec: 6688 + hash: "3561eaa9124b96b2a0afa022bc0fe581" + } + Frame { + msec: 6704 + hash: "3561eaa9124b96b2a0afa022bc0fe581" + } + Frame { + msec: 6720 + hash: "3561eaa9124b96b2a0afa022bc0fe581" + } + Frame { + msec: 6736 + image: "nested.7.png" + } + Frame { + msec: 6752 + hash: "3561eaa9124b96b2a0afa022bc0fe581" + } + Frame { + msec: 6768 + hash: "3561eaa9124b96b2a0afa022bc0fe581" + } + Frame { + msec: 6784 + hash: "3561eaa9124b96b2a0afa022bc0fe581" + } + Frame { + msec: 6800 + hash: "3561eaa9124b96b2a0afa022bc0fe581" + } + Frame { + msec: 6816 + hash: "3561eaa9124b96b2a0afa022bc0fe581" + } + Frame { + msec: 6832 + hash: "3561eaa9124b96b2a0afa022bc0fe581" + } + Frame { + msec: 6848 + hash: "3561eaa9124b96b2a0afa022bc0fe581" + } + Frame { + msec: 6864 + hash: "3561eaa9124b96b2a0afa022bc0fe581" + } + Frame { + msec: 6880 + hash: "3561eaa9124b96b2a0afa022bc0fe581" + } + Frame { + msec: 6896 + hash: "3561eaa9124b96b2a0afa022bc0fe581" + } + Frame { + msec: 6912 + hash: "3561eaa9124b96b2a0afa022bc0fe581" + } + Frame { + msec: 6928 + hash: "3561eaa9124b96b2a0afa022bc0fe581" + } + Frame { + msec: 6944 + hash: "3561eaa9124b96b2a0afa022bc0fe581" + } + Frame { + msec: 6960 + hash: "3561eaa9124b96b2a0afa022bc0fe581" + } + Frame { + msec: 6976 + hash: "3561eaa9124b96b2a0afa022bc0fe581" + } + Frame { + msec: 6992 + hash: "3561eaa9124b96b2a0afa022bc0fe581" + } + Frame { + msec: 7008 + hash: "3561eaa9124b96b2a0afa022bc0fe581" + } + Frame { + msec: 7024 + hash: "3561eaa9124b96b2a0afa022bc0fe581" + } + Frame { + msec: 7040 + hash: "3561eaa9124b96b2a0afa022bc0fe581" + } + Frame { + msec: 7056 + hash: "3561eaa9124b96b2a0afa022bc0fe581" + } + Frame { + msec: 7072 + hash: "3561eaa9124b96b2a0afa022bc0fe581" + } + Mouse { + type: 2 + button: 1 + buttons: 1 + x: 46; y: 225 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 7088 + hash: "3561eaa9124b96b2a0afa022bc0fe581" + } + Frame { + msec: 7104 + hash: "3561eaa9124b96b2a0afa022bc0fe581" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 46; y: 226 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 46; y: 227 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 7120 + hash: "3561eaa9124b96b2a0afa022bc0fe581" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 46; y: 228 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 46; y: 231 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 7136 + hash: "3561eaa9124b96b2a0afa022bc0fe581" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 46; y: 233 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 46; y: 238 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 7152 + hash: "35dd0f784c356be0050936ff75b0cdf7" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 47; y: 240 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 48; y: 245 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 7168 + hash: "9ac066a700eae45edf9b2f1ba12f0324" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 48; y: 248 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 49; y: 255 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 7184 + hash: "22a2a8bf257918820b0ab55ecb14b479" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 50; y: 259 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 51; y: 266 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 7200 + hash: "eb98237e06cde8ed2f18040ce9197d16" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 52; y: 272 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 52; y: 276 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 7216 + hash: "f0c7afe1bd25b9b573cbc69154c25862" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 53; y: 282 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 54; y: 285 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 7232 + hash: "d6a681b6de867db47f889e6f1ec03dcf" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 54; y: 291 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 54; y: 293 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 7248 + hash: "0ee281281c7654567a1debae7a13abe0" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 54; y: 299 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 54; y: 304 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 7264 + hash: "9d5f1c8cb0953c14bdd49aa88d2b225f" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 54; y: 306 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 54; y: 310 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 7280 + hash: "ae1c2a3ed67c5c10fc9d19de4de7b7eb" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 54; y: 312 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 53; y: 315 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 7296 + hash: "8505f9d060fc17fef2e91eb2add206bb" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 53; y: 316 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 53; y: 318 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 7312 + hash: "c32a6d546a3e4f2ee5349a7dad4b30af" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 53; y: 319 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 52; y: 320 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 7328 + hash: "222f6e8e8deab567f1e7d0aaf7035b60" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 51; y: 321 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 51; y: 322 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 7344 + hash: "f7011629f44015187849daad6a53cebf" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 51; y: 323 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 51; y: 324 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 7360 + hash: "56b00d9116a51c041483dd00db0aca90" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 50; y: 325 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 50; y: 326 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 7376 + hash: "93232fbcafe8e279b37781f51dfb923a" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 49; y: 328 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 48; y: 329 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 7392 + hash: "9fcf62eaacfc3477a4550c31f03c4782" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 48; y: 330 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 48; y: 331 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 7408 + hash: "dd669865fd36e42eec1d69860b29e7ce" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 47; y: 331 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 7424 + hash: "9247af334483b219ca9bbe98d8fc362e" + } + Frame { + msec: 7440 + hash: "9247af334483b219ca9bbe98d8fc362e" + } + Frame { + msec: 7456 + hash: "9247af334483b219ca9bbe98d8fc362e" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 47; y: 330 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 7472 + hash: "9247af334483b219ca9bbe98d8fc362e" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 47; y: 329 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 47; y: 328 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 7488 + hash: "69ef9255a29d65f26e5441594ea1bad9" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 48; y: 325 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 48; y: 323 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 7504 + hash: "055f73dd085d2f65a055ba4d9a8a7539" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 49; y: 318 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 49; y: 316 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 7520 + hash: "384da5b6a948a52d0519935a8e33f014" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 51; y: 309 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 54; y: 303 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 7536 + hash: "1caa0049be4033db45f0d2debb25268f" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 55; y: 299 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 3 + button: 1 + buttons: 0 + x: 55; y: 299 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 7552 + hash: "76b8d00b3a2a68fec277050a442c18ca" + } + Frame { + msec: 7568 + hash: "0ee281281c7654567a1debae7a13abe0" + } + Frame { + msec: 7584 + hash: "df1dbb027a8542aa6120cce7b69724a7" + } + Frame { + msec: 7600 + hash: "06a4d9b1d73362b3e29c6cf52fdb515c" + } + Frame { + msec: 7616 + hash: "876c0dc8a68a4c1253b7aed6316cb892" + } + Frame { + msec: 7632 + hash: "b46c74b1a2535099f0cdb8093bd49a4e" + } + Frame { + msec: 7648 + hash: "0ad09a7638aa6f2affe47db2a810196f" + } + Frame { + msec: 7664 + hash: "3710dde54d7e4a10a2c3ca2f891da7f5" + } + Frame { + msec: 7680 + hash: "8426a607c92fbfa508e81c620d90e919" + } + Frame { + msec: 7696 + image: "nested.8.png" + } + Frame { + msec: 7712 + hash: "1f38e34787c909d93d567f983a425257" + } + Frame { + msec: 7728 + hash: "7b09913793d4c79d948fdff1b72c7124" + } + Frame { + msec: 7744 + hash: "8a0d1484c073d8107b4bf9949edcdb18" + } + Frame { + msec: 7760 + hash: "4bad25465dfdcc41995216b0f6a5191b" + } + Frame { + msec: 7776 + hash: "6d39bbeb5f74273c1ed0231ac34fe094" + } + Frame { + msec: 7792 + hash: "8ccc2e33b8d6c67162326d229e9c17ab" + } + Frame { + msec: 7808 + hash: "3561eaa9124b96b2a0afa022bc0fe581" + } + Frame { + msec: 7824 + hash: "b87d739e49f0427d9da577ac5147fd21" + } + Frame { + msec: 7840 + hash: "7d0efbfceec35e591f9fae650288809b" + } + Frame { + msec: 7856 + hash: "7d0efbfceec35e591f9fae650288809b" + } + Frame { + msec: 7872 + hash: "ff5d2037d3cc7bb6930cabc3d53f0196" + } + Frame { + msec: 7888 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 7904 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 7920 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 7936 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 7952 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 7968 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 7984 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8000 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8016 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8032 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8048 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8064 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8080 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8096 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8112 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8128 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8144 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8160 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8176 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8192 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8208 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8224 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8240 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8256 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8272 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8288 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8304 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8320 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8336 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8352 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8368 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8384 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8400 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8416 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8432 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8448 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8464 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8480 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8496 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8512 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8528 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8544 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8560 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8576 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8592 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8608 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8624 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8640 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8656 + image: "nested.9.png" + } + Frame { + msec: 8672 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8688 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8704 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8720 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8736 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8752 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8768 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8784 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8800 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8816 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8832 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8848 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8864 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8880 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8896 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8912 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8928 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8944 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8960 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8976 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8992 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 9008 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 9024 + hash: "76624c57195c25b8abd4297e11c55980" + } +} diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/nested.qml b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/nested.qml new file mode 100644 index 0000000..b2d88d2 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/nested.qml @@ -0,0 +1,62 @@ +import QtQuick 1.0 + +/* + Test nested MouseArea with different drag axes. +*/ + +Rectangle{ + width:400 + height:360 + color: "white" + Flickable { + anchors.fill: parent + contentWidth: 600 + contentHeight: 600 + Rectangle{ + id: draggable + width:200; height:200; color: "lightsteelblue" + opacity: ma1.drag.active ? 0.5 : 1.0 + y:20 + MouseArea{ + id: ma1 + objectName: "one" + anchors.fill: parent + drag.target: draggable + drag.axis: "XandYAxis" + drag.filterChildren: true + drag.minimumX: 0 + drag.maximumX: 200 + drag.minimumY: 20 + drag.maximumY: 220 + Rectangle{ + id: draggable_inner + width:40; height:40; color: "red" + y:20 + MouseArea{ + objectName: "two" + anchors.fill: parent + drag.target: draggable_inner + drag.axis: "XAxis" + drag.minimumX: 0 + drag.maximumX: 360 + } + } + } + } + Rectangle{ + id: draggable3 + width:40; height:40; color: "green" + opacity: ma3.drag.active ? 0.5 : 1.0 + y:210 + MouseArea{ + id: ma3 + objectName: "three" + anchors.fill: parent + drag.target: draggable3 + drag.axis: "XAxis" + drag.minimumX: 0 + drag.maximumX: 360 + } + } + } +} -- cgit v0.12 From 5149da5a564c883209566f3baaeea15932eee1c2 Mon Sep 17 00:00:00 2001 From: Bea Lam Date: Wed, 24 Nov 2010 15:42:35 +1000 Subject: Fix incorrect example for Qt.rgba() --- doc/src/declarative/basictypes.qdoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/src/declarative/basictypes.qdoc b/doc/src/declarative/basictypes.qdoc index 8ab06ab..71192bf 100644 --- a/doc/src/declarative/basictypes.qdoc +++ b/doc/src/declarative/basictypes.qdoc @@ -166,7 +166,7 @@ \l{QML:Qt::lighter()}{Qt.lighter()} or \l{QML:Qt::tint()}{Qt.tint()} functions: \qml - Rectangle { color: Qt.rgba(255, 0, 0, 1) } + Rectangle { color: Qt.rgba(0.5, 0.5, 0, 1) } \endqml \sa {QML Basic Types} -- cgit v0.12 From fe8276e812c5fdc690715d7e36a6b6d70cba7d33 Mon Sep 17 00:00:00 2001 From: Jason McDonald Date: Wed, 24 Nov 2010 17:00:20 +1000 Subject: Prevent compilers optimizing eval timebomb code out of existence. The variable that holds the eval license key is a placeholder that is patched during package installation. Unfortunately, for a non-final package build, the placeholder is filled with nulls at compile-time and a clever compiler will optimize away most of the eval timebomb code due to a check in the eval code for the first character of the license key being null. This commit makes the variable that holds the license key volatile, to convince compilers that they cannot make assumptions about the contents of the variable when optimizing. Task-number: QT-3848 Acked-by: Thiago Macieira --- configure | 2 +- src/corelib/kernel/qtcore_eval.cpp | 4 ++-- tools/configure/configureapp.cpp | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/configure b/configure index 5aab180..059aa1a 100755 --- a/configure +++ b/configure @@ -4520,7 +4520,7 @@ if [ -n "$EVALKEY" ]; then rm -f "$outpath/src/corelib/global/qconfig_eval.cpp" cat > "$outpath/src/corelib/global/qconfig_eval.cpp" < Date: Wed, 24 Nov 2010 08:36:15 +0000 Subject: Fixed tst_qwidget::winIdChangeEvent During reparenting of a native widget, the winId is now first set to zero before being set to the new value. Reviewed-by: Jason Barron --- tests/auto/qwidget/tst_qwidget.cpp | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/tests/auto/qwidget/tst_qwidget.cpp b/tests/auto/qwidget/tst_qwidget.cpp index 09af941..5521873 100644 --- a/tests/auto/qwidget/tst_qwidget.cpp +++ b/tests/auto/qwidget/tst_qwidget.cpp @@ -4389,7 +4389,6 @@ class WinIdChangeWidget : public QWidget { public: WinIdChangeWidget(QWidget *p = 0) : QWidget(p) - , m_winIdChangeEventCount(0) { } @@ -4397,13 +4396,14 @@ protected: bool event(QEvent *e) { if (e->type() == QEvent::WinIdChange) { - ++m_winIdChangeEventCount; + m_winIdList.append(internalWinId()); return true; } return QWidget::event(e); } public: - int m_winIdChangeEventCount; + QList m_winIdList; + int winIdChangeEventCount() const { return m_winIdList.count(); } }; void tst_QWidget::winIdChangeEvent() @@ -4414,7 +4414,7 @@ void tst_QWidget::winIdChangeEvent() const WId winIdBefore = widget.internalWinId(); const WId winIdAfter = widget.winId(); QVERIFY(winIdBefore != winIdAfter); - QCOMPARE(widget.m_winIdChangeEventCount, 1); + QCOMPARE(widget.winIdChangeEventCount(), 1); } { @@ -4423,11 +4423,13 @@ void tst_QWidget::winIdChangeEvent() QWidget parent1, parent2; WinIdChangeWidget child(&parent1); const WId winIdBefore = child.winId(); - QCOMPARE(child.m_winIdChangeEventCount, 1); + QCOMPARE(child.winIdChangeEventCount(), 1); child.setParent(&parent2); const WId winIdAfter = child.internalWinId(); QVERIFY(winIdBefore != winIdAfter); - QCOMPARE(child.m_winIdChangeEventCount, 2); + QCOMPARE(child.winIdChangeEventCount(), 3); + // winId is set to zero during reparenting + QVERIFY(0 == child.m_winIdList[1]); } { @@ -4437,15 +4439,16 @@ void tst_QWidget::winIdChangeEvent() QWidget parent(&grandparent1); WinIdChangeWidget child(&parent); const WId winIdBefore = child.winId(); - QCOMPARE(child.m_winIdChangeEventCount, 1); + QCOMPARE(child.winIdChangeEventCount(), 1); parent.setParent(&grandparent2); const WId winIdAfter = child.internalWinId(); #ifdef Q_OS_SYMBIAN QVERIFY(winIdBefore != winIdAfter); - QCOMPARE(child.m_winIdChangeEventCount, 2); + QVERIFY(winIdAfter != 0); + QCOMPARE(child.winIdChangeEventCount(), 2); #else QCOMPARE(winIdBefore, winIdAfter); - QCOMPARE(child.m_winIdChangeEventCount, 1); + QCOMPARE(child.winIdChangeEventCount(), 1); #endif } @@ -4457,7 +4460,7 @@ void tst_QWidget::winIdChangeEvent() child.setParent(&parent2); const WId winIdAfter = child.internalWinId(); QCOMPARE(winIdBefore, winIdAfter); - QCOMPARE(child.m_winIdChangeEventCount, 0); + QCOMPARE(child.winIdChangeEventCount(), 0); } { @@ -4466,12 +4469,14 @@ void tst_QWidget::winIdChangeEvent() WinIdChangeWidget child(&parent); child.winId(); const WId winIdBefore = child.internalWinId(); - QCOMPARE(child.m_winIdChangeEventCount, 1); + QCOMPARE(child.winIdChangeEventCount(), 1); const Qt::WindowFlags flags = child.windowFlags(); child.setWindowFlags(flags | Qt::Window); const WId winIdAfter = child.internalWinId(); QVERIFY(winIdBefore != winIdAfter); - QCOMPARE(child.m_winIdChangeEventCount, 2); + QCOMPARE(child.winIdChangeEventCount(), 3); + // winId is set to zero during reparenting + QVERIFY(0 == child.m_winIdList[1]); } } -- cgit v0.12 From a17a8bfe860b6a055f60068ef04f9e31278cd6c4 Mon Sep 17 00:00:00 2001 From: Olivier Goffart Date: Tue, 23 Nov 2010 17:11:42 +0100 Subject: Enable the no-undefined flag on the linker for icc Reviewed-by: Thiago --- src/qbase.pri | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/qbase.pri b/src/qbase.pri index 4217618..8460b9c 100644 --- a/src/qbase.pri +++ b/src/qbase.pri @@ -36,7 +36,7 @@ CONFIG += qt warn_on depend_includepath CONFIG += qmake_cache target_qt CONFIG -= fix_output_dirs win32|mac:!macx-xcode:CONFIG += debug_and_release -linux*-g++*:QMAKE_LFLAGS += $$QMAKE_LFLAGS_NOUNDEF +linux*:QMAKE_LFLAGS += $$QMAKE_LFLAGS_NOUNDEF contains(QT_CONFIG, reduce_exports):CONFIG += hide_symbols unix:contains(QT_CONFIG, reduce_relocations):CONFIG += bsymbolic_functions -- cgit v0.12 From e1cde7c26b4923299b78e6165416788fbf8cd30e Mon Sep 17 00:00:00 2001 From: hawcroft Date: Thu, 25 Nov 2010 10:10:27 +1000 Subject: fix inf loop bug Task-number: QTBUG-15409 Reviewed-by: Andrew Den-Exter --- src/gui/kernel/qsound_s60.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/kernel/qsound_s60.cpp b/src/gui/kernel/qsound_s60.cpp index df2830b..accfce2 100644 --- a/src/gui/kernel/qsound_s60.cpp +++ b/src/gui/kernel/qsound_s60.cpp @@ -150,7 +150,7 @@ void QAuServerS60::playCompleted(QAuBucketS60 *bucket, int error) } else { // We don't have a way to inform about errors -> just decrement loops // in order that QSound::isFinished will return true; - while (decLoop(sound)) {} + while (decLoop(sound) > 0) {} if (staticPlayingSounds.removeAll(sound)) delete sound; } -- cgit v0.12