summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoraavit <qt-info@nokia.com>2010-11-19 12:30:09 (GMT)
committeraavit <qt-info@nokia.com>2010-11-19 12:30:09 (GMT)
commit8034cab2cce55b43dcc1100d0b22f8c85eb733c2 (patch)
tree5a1637fa48ce23e12c6a51490f6a481fd1ca1a5a
parente614223831f2b3cc9051ae88586370a7d5b63db2 (diff)
parent1d152964adec62d03ce2f4a45ca40ddbd05819ae (diff)
downloadQt-8034cab2cce55b43dcc1100d0b22f8c85eb733c2.zip
Qt-8034cab2cce55b43dcc1100d0b22f8c85eb733c2.tar.gz
Qt-8034cab2cce55b43dcc1100d0b22f8c85eb733c2.tar.bz2
Merge branch 'master' of scm.dev.nokia.troll.no:qt/oslo-staging-2
-rw-r--r--config.tests/symbian/audio/audio.pro1
-rw-r--r--config.tests/symbian/simple/simple.pro1
-rwxr-xr-xconfigure8
-rw-r--r--demos/chip/view.cpp54
-rw-r--r--demos/chip/view.h32
-rw-r--r--demos/declarative/minehunt/minehunt.cpp2
-rw-r--r--demos/declarative/minehunt/minehunt.pro3
-rw-r--r--demos/declarative/samegame/samegame.qml4
-rw-r--r--demos/qtdemo/xml/examples.xml1
-rw-r--r--doc/src/declarative/basictypes.qdoc85
-rw-r--r--doc/src/declarative/dynamicobjects.qdoc6
-rw-r--r--doc/src/declarative/elements.qdoc106
-rw-r--r--doc/src/declarative/extending-tutorial.qdoc20
-rw-r--r--doc/src/declarative/extending.qdoc9
-rw-r--r--doc/src/declarative/qtbinding.qdoc631
-rw-r--r--doc/src/getting-started/installation.qdoc263
-rw-r--r--doc/src/platforms/platform-notes.qdoc3
-rw-r--r--doc/src/snippets/code/doc_src_installation.qdoc13
-rw-r--r--doc/src/snippets/declarative/qtbinding/context-advanced/MyItem.qml46
-rw-r--r--doc/src/snippets/declarative/qtbinding/context-advanced/applicationdata.h52
-rw-r--r--doc/src/snippets/declarative/qtbinding/context-advanced/connections.qml (renamed from doc/src/snippets/declarative/qtbinding/stopwatch/stopwatch.cpp)28
-rw-r--r--doc/src/snippets/declarative/qtbinding/context-advanced/context-advanced.pro3
-rw-r--r--doc/src/snippets/declarative/qtbinding/context-advanced/main.cpp (renamed from doc/src/snippets/declarative/qtbinding/custompalette/main.cpp)17
-rw-r--r--doc/src/snippets/declarative/qtbinding/context/MyItem.qml45
-rw-r--r--doc/src/snippets/declarative/qtbinding/context/context.pro (renamed from doc/src/snippets/declarative/qtbinding/contextproperties/contextproperties.pro)0
-rw-r--r--doc/src/snippets/declarative/qtbinding/context/main.cpp56
-rw-r--r--doc/src/snippets/declarative/qtbinding/custompalette/custompalette.h79
-rw-r--r--doc/src/snippets/declarative/qtbinding/enums/enums.pro (renamed from doc/src/snippets/declarative/qtbinding/custompalette/custompalette.pro)2
-rw-r--r--doc/src/snippets/declarative/qtbinding/enums/imageviewer.h68
-rw-r--r--doc/src/snippets/declarative/qtbinding/enums/main.cpp73
-rw-r--r--doc/src/snippets/declarative/qtbinding/enums/standalone.qml49
-rw-r--r--doc/src/snippets/declarative/qtbinding/functions-cpp/MyItem.qml (renamed from doc/src/snippets/declarative/qtbinding/stopwatch/main.qml)13
-rw-r--r--doc/src/snippets/declarative/qtbinding/functions-cpp/functions-qml.pro3
-rw-r--r--doc/src/snippets/declarative/qtbinding/functions-cpp/main.cpp (renamed from doc/src/snippets/declarative/qtbinding/stopwatch/main.cpp)17
-rw-r--r--doc/src/snippets/declarative/qtbinding/functions-cpp/myclass.h (renamed from doc/src/snippets/declarative/qtbinding/custompalette/main.qml)29
-rw-r--r--doc/src/snippets/declarative/qtbinding/functions-qml/MyItem.qml (renamed from doc/src/snippets/declarative/qtbinding/contextproperties/main.qml)15
-rw-r--r--doc/src/snippets/declarative/qtbinding/functions-qml/functions-qml.pro2
-rw-r--r--doc/src/snippets/declarative/qtbinding/functions-qml/main.cpp63
-rw-r--r--doc/src/snippets/declarative/qtbinding/loading/MyItem.qml56
-rw-r--r--doc/src/snippets/declarative/qtbinding/loading/loading.pro2
-rw-r--r--doc/src/snippets/declarative/qtbinding/loading/main.cpp90
-rw-r--r--doc/src/snippets/declarative/qtbinding/newelements/imageviewer.h56
-rw-r--r--doc/src/snippets/declarative/qtbinding/newelements/main.cpp62
-rw-r--r--doc/src/snippets/declarative/qtbinding/newelements/newelements.pro3
-rw-r--r--doc/src/snippets/declarative/qtbinding/newelements/standalone.qml44
-rw-r--r--doc/src/snippets/declarative/qtbinding/properties-cpp/MyItem.qml54
-rw-r--r--doc/src/snippets/declarative/qtbinding/properties-cpp/applicationdata.h71
-rw-r--r--doc/src/snippets/declarative/qtbinding/properties-cpp/main.cpp58
-rw-r--r--doc/src/snippets/declarative/qtbinding/properties-cpp/properties-cpp.pro3
-rw-r--r--doc/src/snippets/declarative/qtbinding/properties-qml/MyItem.qml47
-rw-r--r--doc/src/snippets/declarative/qtbinding/properties-qml/main.cpp61
-rw-r--r--doc/src/snippets/declarative/qtbinding/properties-qml/properties-qml.pro2
-rw-r--r--doc/src/snippets/declarative/qtbinding/resources/main.qml5
-rw-r--r--doc/src/snippets/declarative/qtbinding/signals-cpp/MyItem.qml50
-rw-r--r--doc/src/snippets/declarative/qtbinding/signals-cpp/imageviewer.h64
-rw-r--r--doc/src/snippets/declarative/qtbinding/signals-cpp/main.cpp (renamed from doc/src/snippets/declarative/qtbinding/contextproperties/main.cpp)53
-rw-r--r--doc/src/snippets/declarative/qtbinding/signals-cpp/signals-cpp.pro3
-rw-r--r--doc/src/snippets/declarative/qtbinding/signals-cpp/standalone.qml48
-rw-r--r--doc/src/snippets/declarative/qtbinding/signals-qml/MyItem.qml55
-rw-r--r--doc/src/snippets/declarative/qtbinding/signals-qml/main.cpp59
-rw-r--r--doc/src/snippets/declarative/qtbinding/signals-qml/myclass.h (renamed from doc/src/snippets/declarative/qtbinding/stopwatch/stopwatch.h)20
-rw-r--r--doc/src/snippets/declarative/qtbinding/signals-qml/signals-qml.pro3
-rw-r--r--doc/src/snippets/declarative/qtbinding/stopwatch/stopwatch.pro3
-rw-r--r--examples/declarative/cppextensions/plugins/README2
-rw-r--r--examples/declarative/modelviews/listview/highlightranges.qml20
-rw-r--r--examples/webkit/imageanalyzer/imageanalyzer.h4
-rw-r--r--examples/webkit/imageanalyzer/mainwindow.h2
-rw-r--r--mkspecs/common/symbian/symbian.conf2
-rw-r--r--mkspecs/features/symbian/application_icon.prf12
-rw-r--r--mkspecs/features/symbian/default_post.prf16
-rw-r--r--mkspecs/features/symbian/qt_config.prf2
-rw-r--r--mkspecs/features/symbian/symbian_building.prf23
-rw-r--r--mkspecs/symbian-gcce/qmake.conf21
-rw-r--r--qmake/generators/symbian/symbiancommon.cpp4
-rw-r--r--src/3rdparty/harfbuzz/src/harfbuzz-indic.cpp2
-rw-r--r--src/corelib/animation/qabstractanimation.cpp146
-rw-r--r--src/corelib/animation/qabstractanimation.h31
-rw-r--r--src/corelib/animation/qabstractanimation_p.h52
-rw-r--r--src/corelib/concurrent/qtconcurrentrunbase.h25
-rw-r--r--src/corelib/global/qmalloc.cpp16
-rw-r--r--src/corelib/kernel/qcoreapplication.cpp9
-rw-r--r--src/corelib/kernel/qeventdispatcher_symbian.cpp9
-rw-r--r--src/corelib/kernel/qeventdispatcher_symbian_p.h4
-rw-r--r--src/corelib/tools/qbytearray.cpp10
-rw-r--r--src/corelib/tools/qlocale.cpp1
-rw-r--r--src/corelib/tools/qlocale.h2
-rw-r--r--src/declarative/debugger/qdeclarativedebughelper.cpp8
-rw-r--r--src/declarative/debugger/qdeclarativedebughelper_p.h6
-rw-r--r--src/declarative/debugger/qdeclarativedebugservice.cpp7
-rw-r--r--src/declarative/graphicsitems/qdeclarativeflickable.cpp44
-rw-r--r--src/declarative/graphicsitems/qdeclarativeflickable_p_p.h3
-rw-r--r--src/declarative/graphicsitems/qdeclarativeimage.cpp43
-rw-r--r--src/declarative/graphicsitems/qdeclarativeimage_p.h1
-rw-r--r--src/declarative/graphicsitems/qdeclarativeitem.cpp4
-rw-r--r--src/declarative/graphicsitems/qdeclarativelistview.cpp63
-rw-r--r--src/declarative/graphicsitems/qdeclarativeloader.cpp16
-rw-r--r--src/declarative/graphicsitems/qdeclarativerectangle.cpp3
-rw-r--r--src/declarative/graphicsitems/qdeclarativetext.cpp55
-rw-r--r--src/declarative/graphicsitems/qdeclarativetextinput.cpp23
-rw-r--r--src/declarative/graphicsitems/qdeclarativetextlayout.cpp17
-rw-r--r--src/declarative/graphicsitems/qdeclarativetextlayout_p.h1
-rw-r--r--src/declarative/qml/qdeclarativecomponent.cpp37
-rw-r--r--src/declarative/qml/qdeclarativecontext.cpp21
-rw-r--r--src/declarative/qml/qdeclarativeengine.cpp1
-rw-r--r--src/declarative/qml/qdeclarativeengine_p.h2
-rw-r--r--src/declarative/qml/qdeclarativeenginedebug.cpp3
-rw-r--r--src/declarative/qml/qdeclarativeparser_p.h2
-rw-r--r--src/declarative/qml/qdeclarativeprivate.h5
-rw-r--r--src/declarative/qml/qdeclarativeworkerscript.cpp30
-rw-r--r--src/declarative/qml/qmetaobjectbuilder.cpp12
-rw-r--r--src/declarative/util/qdeclarativefontloader.cpp16
-rw-r--r--src/declarative/util/qdeclarativestate.cpp12
-rw-r--r--src/declarative/util/qdeclarativestate_p.h3
-rw-r--r--src/declarative/util/qdeclarativestate_p_p.h2
-rw-r--r--src/declarative/util/qdeclarativetransition.cpp6
-rw-r--r--src/declarative/util/qdeclarativetransitionmanager.cpp16
-rw-r--r--src/gui/egl/qegl.cpp4
-rw-r--r--src/gui/graphicsview/qgraphicsproxywidget.cpp2
-rw-r--r--src/gui/graphicsview/qgraphicssceneevent.cpp2
-rw-r--r--src/gui/graphicsview/qgraphicsview.cpp7
-rw-r--r--src/gui/graphicsview/qgraphicswidget.cpp2
-rw-r--r--src/gui/image/qimage_ssse3.cpp2
-rw-r--r--src/gui/image/qpixmap.cpp3
-rw-r--r--src/gui/image/qxpmhandler.cpp2
-rw-r--r--src/gui/itemviews/qabstractitemview.cpp6
-rw-r--r--src/gui/itemviews/qtableview.cpp4
-rw-r--r--src/gui/kernel/qapplication_mac.mm2
-rw-r--r--src/gui/kernel/qapplication_s60.cpp2
-rw-r--r--src/gui/kernel/qeventdispatcher_s60.cpp66
-rw-r--r--src/gui/kernel/qeventdispatcher_s60_p.h24
-rw-r--r--src/gui/kernel/qgesturemanager.cpp4
-rw-r--r--src/gui/kernel/qmotifdnd_x11.cpp5
-rw-r--r--src/gui/kernel/qt_cocoa_helpers_mac.mm22
-rw-r--r--src/gui/kernel/qwidget.cpp4
-rw-r--r--src/gui/kernel/qwidget_win.cpp23
-rw-r--r--src/gui/painting/qgrayraster.c35
-rw-r--r--src/gui/painting/qgrayraster_p.h2
-rw-r--r--src/gui/painting/qpaintengine_raster.cpp6
-rw-r--r--src/gui/painting/qpainter.cpp4
-rw-r--r--src/gui/painting/qtextureglyphcache.cpp2
-rw-r--r--src/gui/painting/qwindowsurface_raster.cpp5
-rw-r--r--src/gui/styles/qs60style.cpp107
-rw-r--r--src/gui/styles/qs60style_p.h7
-rw-r--r--src/gui/styles/qs60style_s60.cpp75
-rw-r--r--src/gui/text/qfontdatabase_x11.cpp7
-rw-r--r--src/gui/text/qfontengine.cpp19
-rw-r--r--src/gui/text/qfontengine_mac.mm24
-rw-r--r--src/gui/text/qfontengine_p.h4
-rw-r--r--src/gui/text/qstatictext.cpp22
-rw-r--r--src/gui/text/qstatictext_p.h54
-rw-r--r--src/gui/text/qtextcontrol.cpp3
-rw-r--r--src/gui/text/qtextcursor.h1
-rw-r--r--src/gui/text/qtextdocument.cpp8
-rw-r--r--src/gui/text/qtextengine.cpp2
-rw-r--r--src/gui/widgets/qcocoamenu_mac.mm22
-rw-r--r--src/gui/widgets/qvalidator.cpp45
-rw-r--r--src/multimedia/audio/audio.pri4
-rw-r--r--src/multimedia/audio/qaudioinput_alsa_p.cpp21
-rw-r--r--src/multimedia/audio/qaudioinput_win32_p.cpp11
-rw-r--r--src/multimedia/audio/qaudiooutput_win32_p.cpp2
-rw-r--r--src/network/access/qhttpnetworkconnection.cpp2
-rw-r--r--src/network/access/qnetworkaccessbackend.cpp12
-rw-r--r--src/network/access/qnetworkaccessbackend_p.h1
-rw-r--r--src/network/access/qnetworkaccesscachebackend.cpp12
-rw-r--r--src/network/access/qnetworkaccesscachebackend_p.h2
-rw-r--r--src/network/access/qnetworkaccessdebugpipebackend.cpp6
-rw-r--r--src/network/access/qnetworkaccessdebugpipebackend_p.h1
-rw-r--r--src/network/access/qnetworkaccessfilebackend.cpp6
-rw-r--r--src/network/access/qnetworkaccessfilebackend_p.h1
-rw-r--r--src/network/access/qnetworkaccessftpbackend.cpp17
-rw-r--r--src/network/access/qnetworkaccessftpbackend_p.h1
-rw-r--r--src/network/access/qnetworkaccesshttpbackend.cpp20
-rw-r--r--src/network/access/qnetworkaccesshttpbackend_p.h1
-rw-r--r--src/network/access/qnetworkaccessmanager.cpp21
-rw-r--r--src/network/ssl/qsslsocket_openssl.cpp75
-rw-r--r--src/network/ssl/qsslsocket_openssl_p.h1
-rw-r--r--src/opengl/gl2paintengineex/qgl2pexvertexarray_p.h2
-rw-r--r--src/opengl/gl2paintengineex/qglengineshadermanager_p.h2
-rw-r--r--src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp26
-rw-r--r--src/opengl/qgl.cpp18
-rw-r--r--src/opengl/qgl.h1
-rw-r--r--src/opengl/qgl_egl.cpp2
-rw-r--r--src/opengl/qgl_p.h80
-rw-r--r--src/opengl/qgl_x11egl.cpp2
-rw-r--r--src/opengl/qpaintengine_opengl.cpp8
-rw-r--r--src/opengl/qpixmapdata_x11gl_egl.cpp4
-rw-r--r--src/openvg/qpaintengine_vg.cpp2
-rw-r--r--src/plugins/bearer/corewlan/corewlan.pro2
-rw-r--r--src/plugins/bearer/corewlan/qcorewlanengine.mm85
-rw-r--r--src/plugins/bearer/icd/icd.pro2
-rw-r--r--src/plugins/bearer/symbian/qnetworksession_impl.cpp2
-rw-r--r--src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.cpp44
-rw-r--r--src/plugins/graphicssystems/meego/dithering.cpp53
-rw-r--r--src/plugins/graphicssystems/meego/qmeegoextensions.cpp80
-rw-r--r--src/plugins/graphicssystems/meego/qmeegoextensions.h22
-rw-r--r--src/plugins/graphicssystems/meego/qmeegographicssystem.cpp52
-rw-r--r--src/plugins/graphicssystems/meego/qmeegographicssystem.h9
-rw-r--r--src/plugins/graphicssystems/meego/qmeegolivepixmapdata.cpp13
-rw-r--r--src/plugins/graphicssystems/meego/qmeegolivepixmapdata.h9
-rw-r--r--src/plugins/graphicssystems/meego/qmeegopixmapdata.cpp5
-rw-r--r--src/plugins/phonon/mmf/mmf.pro2
-rw-r--r--src/qt3support/canvas/q3canvas.cpp2
-rw-r--r--src/qt3support/text/q3richtext.cpp2
-rw-r--r--src/s60installs/bwins/QtDeclarativeu.def3
-rw-r--r--src/s60installs/bwins/QtOpenVGu.def1
-rw-r--r--src/s60installs/eabi/QtCoreu.def1
-rw-r--r--src/s60installs/eabi/QtDeclarativeu.def3
-rw-r--r--src/s60installs/eabi/QtGuiu.def3
-rw-r--r--src/s60installs/eabi/QtOpenVGu.def1
-rw-r--r--src/script/api/qscriptengine.cpp18
-rw-r--r--src/script/api/qscriptvalue.cpp1
-rw-r--r--src/script/bridge/qscriptclassobject.cpp12
-rw-r--r--src/scripttools/debugging/qscriptdebuggeragent.cpp6
-rw-r--r--src/sql/drivers/oci/qsql_oci.cpp239
-rw-r--r--src/xmlpatterns/data/qabstractfloat.cpp2
-rw-r--r--src/xmlpatterns/data/qatomicvalue.cpp2
-rw-r--r--src/xmlpatterns/data/qschematime_p.h2
-rw-r--r--src/xmlpatterns/schema/qxsdschemaparser.cpp8
-rw-r--r--src/xmlpatterns/schema/qxsdschemaparser_setup.cpp2
-rw-r--r--src/xmlpatterns/schema/qxsdstatemachine_p.h4
-rw-r--r--src/xmlpatterns/type/qtypechecker.cpp2
-rw-r--r--tests/auto/collections/collections.pro1
-rw-r--r--tests/auto/declarative/examples/tst_examples.cpp1
-rw-r--r--tests/auto/declarative/qdeclarativedebug/tst_qdeclarativedebug.cpp78
-rw-r--r--tests/auto/declarative/qdeclarativedebugclient/tst_qdeclarativedebugclient.cpp5
-rw-r--r--tests/auto/declarative/qdeclarativedebughelper/private_headers/qdeclarativedebughelper_p.h4
-rw-r--r--tests/auto/declarative/qdeclarativedebughelper/tst_qdeclarativedebughelper.cpp7
-rw-r--r--tests/auto/declarative/qdeclarativedebugservice/tst_qdeclarativedebugservice.cpp4
-rw-r--r--tests/auto/declarative/qdeclarativeecmascript/data/ConstantsOverrideBindings.qml6
-rw-r--r--tests/auto/declarative/qdeclarativeecmascript/data/constantsOverrideBindings.4.qml11
-rw-r--r--tests/auto/declarative/qdeclarativeecmascript/data/outerBindingOverridesInnerBinding.qml3
-rw-r--r--tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp15
-rw-r--r--tests/auto/declarative/qdeclarativeimage/data/rect.pngbin0 -> 171 bytes
-rw-r--r--tests/auto/declarative/qdeclarativeimage/tst_qdeclarativeimage.cpp74
-rw-r--r--tests/auto/declarative/qdeclarativeitem/tst_qdeclarativeitem.cpp10
-rw-r--r--tests/auto/declarative/qdeclarativestates/data/QTBUG-14830.qml29
-rw-r--r--tests/auto/declarative/qdeclarativestates/tst_qdeclarativestates.cpp13
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/enforcerange.0.pngbin0 -> 680 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/enforcerange.1.pngbin0 -> 704 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/enforcerange.2.pngbin0 -> 695 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/enforcerange.3.pngbin0 -> 680 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/enforcerange.4.pngbin0 -> 701 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/enforcerange.5.pngbin0 -> 704 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/enforcerange.qml2119
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/itemlist.0.pngbin976 -> 976 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/itemlist.1.pngbin986 -> 986 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/itemlist.2.pngbin977 -> 977 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/itemlist.3.pngbin977 -> 977 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/itemlist.4.pngbin977 -> 977 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/itemlist.5.pngbin990 -> 990 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/itemlist.6.pngbin976 -> 976 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/itemlist.qml104
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/listview.0.pngbin1580 -> 1585 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/listview.1.pngbin1580 -> 1580 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/listview.2.pngbin1661 -> 1667 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/listview.3.pngbin1649 -> 1599 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/listview.4.pngbin1669 -> 1663 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/listview.5.pngbin1651 -> 1666 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/listview.qml604
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/enforcerange.qml31
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/listview.qml12
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.qml6
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/align/data-MAC/multilineAlign.0.pngbin2434 -> 2388 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/align/data-MAC/multilineAlign.qml118
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/align/multilineAlign.qml3
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/baseline/data-MAC/parentanchor.qml62
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/baseline/parentanchor.qml5
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/bugs/QTBUG-14469.qml1
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/data-MAC/qtbug_14865.0.pngbin0 -> 1640 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/data-MAC/qtbug_14865.1.pngbin0 -> 625 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/data-MAC/qtbug_14865.qml447
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/data-X11/qtbug_14865.0.pngbin0 -> 1400 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/data-X11/qtbug_14865.qml447
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/data/qtbug_14865.0.pngbin0 -> 1400 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/data/qtbug_14865.qml447
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide.0.pngbin1613 -> 1706 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide.qml132
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.0.pngbin3477 -> 3564 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.1.pngbin3080 -> 3271 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.2.pngbin2501 -> 2549 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.3.pngbin1574 -> 1574 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.qml482
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/multilength.0.pngbin2877 -> 2883 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/multilength.qml146
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/elide.0.pngbin1167 -> 1150 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/elide.qml132
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/multilength.qml66
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/elide.qml9
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/elide2.qml3
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/multilength.qml3
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/font/TestText.qml13
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/plaintext.0.pngbin95506 -> 96247 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/plaintext2.0.pngbin0 -> 3481 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/plaintext2.qml11
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/plaintext3.0.pngbin0 -> 53503 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/plaintext3.qml11
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/richtext.0.pngbin121473 -> 118835 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-X11/plaintext.0.pngbin77181 -> 77252 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-X11/plaintext2.0.pngbin0 -> 2778 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-X11/plaintext2.qml11
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-X11/richtext.0.pngbin103375 -> 101974 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/font/data/plaintext2.0.pngbin0 -> 2778 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/font/data/plaintext2.qml11
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/font/data/plaintext3.0.pngbin0 -> 53503 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/font/data/plaintext3.qml11
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/font/plaintext.qml55
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/font/plaintext2.qml23
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/font/plaintext3.qml62
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/font/richtext.qml43
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/qtbug_14865.qml18
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/MultilineEdit.qml11
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/cursorDelegate.qml6
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.0.pngbin3542 -> 3636 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.1.pngbin3566 -> 3611 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.2.pngbin3592 -> 3612 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.3.pngbin3570 -> 3612 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.4.pngbin3569 -> 3609 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.qml648
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.0.pngbin3293 -> 3273 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.1.pngbin3298 -> 3265 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.2.pngbin3290 -> 3266 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.3.pngbin3295 -> 3245 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.qml530
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.0.pngbin4954 -> 5123 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.1.pngbin5289 -> 5500 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.10.pngbin8028 -> 8641 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.11.pngbin8028 -> 8641 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.2.pngbin5820 -> 6163 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.3.pngbin6293 -> 6785 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.4.pngbin6484 -> 6943 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.5.pngbin6657 -> 7043 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.6.pngbin7006 -> 7428 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.7.pngbin6792 -> 6860 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.8.pngbin7844 -> 8659 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.9.pngbin8028 -> 8641 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.qml1428
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.0.pngbin11729 -> 11626 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.1.pngbin11956 -> 11869 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.2.pngbin12323 -> 12264 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.3.pngbin12931 -> 12607 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.4.pngbin13447 -> 13243 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.5.pngbin13478 -> 13260 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.6.pngbin13478 -> 13260 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.qml844
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.10.pngbin6074 -> 6055 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.11.pngbin6074 -> 6055 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.8.pngbin6072 -> 6051 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.9.pngbin6074 -> 6055 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.qml452
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.qml194
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/qt-669.qml3
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/usingMultilineEdit.qml8
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/wrap.qml9
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/LineEdit.qml11
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/cursorDelegate.qml6
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.0.pngbin3557 -> 3613 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.1.pngbin4062 -> 4140 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.2.pngbin3529 -> 3593 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.3.pngbin3563 -> 3605 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.4.pngbin3566 -> 3605 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.qml610
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.0.pngbin681 -> 703 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.1.pngbin1299 -> 1360 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.2.pngbin1968 -> 2031 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.qml376
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/hAlign.qml50
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.0.pngbin570 -> 580 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.1.pngbin1061 -> 1073 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.2.pngbin1661 -> 1672 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.qml180
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/echoMode.qml9
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/hAlign.qml27
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/usingLineEdit.qml6
-rw-r--r--tests/auto/declarative/qmlvisual/shared/README7
-rw-r--r--tests/auto/declarative/qmlvisual/shared/TestText.qml8
-rw-r--r--tests/auto/declarative/qmlvisual/shared/TestTextEdit.qml14
-rw-r--r--tests/auto/declarative/qmlvisual/shared/TestTextInput.qml14
-rw-r--r--tests/auto/declarative/qmlvisual/shared/Vera.ttfbin0 -> 65932 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/shared/qmldir3
-rw-r--r--tests/auto/declarative/qmlvisual/tst_qmlvisual.cpp8
-rw-r--r--tests/auto/exceptionsafety/exceptionsafety.pro1
-rw-r--r--tests/auto/q_func_info/q_func_info.pro1
-rw-r--r--tests/auto/qanimationgroup/qanimationgroup.pro1
-rw-r--r--tests/auto/qatomicint/qatomicint.pro1
-rw-r--r--tests/auto/qatomicpointer/qatomicpointer.pro1
-rw-r--r--tests/auto/qbitarray/qbitarray.pro1
-rw-r--r--tests/auto/qbuffer/qbuffer.pro1
-rw-r--r--tests/auto/qbytearray/qbytearray.pro1
-rw-r--r--tests/auto/qbytearraymatcher/qbytearraymatcher.pro1
-rw-r--r--tests/auto/qcache/qcache.pro1
-rw-r--r--tests/auto/qchar/qchar.pro1
-rw-r--r--tests/auto/qcomplextext/tst_qcomplextext.cpp39
-rw-r--r--tests/auto/qcontiguouscache/qcontiguouscache.pro1
-rw-r--r--tests/auto/qcoreapplication/qcoreapplication.pro1
-rw-r--r--tests/auto/qcryptographichash/qcryptographichash.pro1
-rw-r--r--tests/auto/qdate/qdate.pro1
-rw-r--r--tests/auto/qdatetime/qdatetime.pro1
-rw-r--r--tests/auto/qdebug/qdebug.pro1
-rw-r--r--tests/auto/qdiriterator/qdiriterator.pro1
-rw-r--r--tests/auto/qdoublevalidator/tst_qdoublevalidator.cpp12
-rw-r--r--tests/auto/qeasingcurve/qeasingcurve.pro1
-rw-r--r--tests/auto/qelapsedtimer/qelapsedtimer.pro1
-rw-r--r--tests/auto/qevent/qevent.pro1
-rw-r--r--tests/auto/qexplicitlyshareddatapointer/qexplicitlyshareddatapointer.pro1
-rw-r--r--tests/auto/qflags/qflags.pro1
-rw-r--r--tests/auto/qfuture/qfuture.pro1
-rw-r--r--tests/auto/qfuturewatcher/qfuturewatcher.pro1
-rw-r--r--tests/auto/qgetputenv/qgetputenv.pro1
-rw-r--r--tests/auto/qgl/tst_qgl.cpp122
-rw-r--r--tests/auto/qglobal/qglobal.pro1
-rw-r--r--tests/auto/qhash/qhash.pro1
-rw-r--r--tests/auto/qinputcontext/tst_qinputcontext.cpp4
-rw-r--r--tests/auto/qlibrary/qlibrary.pro1
-rw-r--r--tests/auto/qline/qline.pro1
-rw-r--r--tests/auto/qmap/qmap.pro1
-rw-r--r--tests/auto/qmargins/qmargins.pro1
-rw-r--r--tests/auto/qmath/qmath.pro1
-rw-r--r--tests/auto/qmetatype/qmetatype.pro1
-rw-r--r--tests/auto/qmutex/qmutex.pro1
-rw-r--r--tests/auto/qmutexlocker/qmutexlocker.pro1
-rw-r--r--tests/auto/qnumeric/qnumeric.pro1
-rw-r--r--tests/auto/qobject/qobject.pro1
-rw-r--r--tests/auto/qobjectrace/qobjectrace.pro1
-rw-r--r--tests/auto/qpainter/tst_qpainter.cpp51
-rw-r--r--tests/auto/qpauseanimation/tst_qpauseanimation.cpp5
-rw-r--r--tests/auto/qpixmap/tst_qpixmap.cpp54
-rw-r--r--tests/auto/qplugin/qplugin.pro1
-rw-r--r--tests/auto/qpluginloader/qpluginloader.pro1
-rw-r--r--tests/auto/qpoint/qpoint.pro1
-rw-r--r--tests/auto/qprocessenvironment/qprocessenvironment.pro1
-rw-r--r--tests/auto/qqueue/qqueue.pro1
-rw-r--r--tests/auto/qrand/qrand.pro1
-rw-r--r--tests/auto/qreadlocker/qreadlocker.pro1
-rw-r--r--tests/auto/qreadwritelock/qreadwritelock.pro1
-rw-r--r--tests/auto/qrect/qrect.pro1
-rw-r--r--tests/auto/qregexp/qregexp.pro1
-rw-r--r--tests/auto/qresourceengine/qresourceengine.pro1
-rw-r--r--tests/auto/qringbuffer/qringbuffer.pro1
-rw-r--r--tests/auto/qscopedpointer/qscopedpointer.pro1
-rw-r--r--tests/auto/qscriptclass/tst_qscriptclass.cpp21
-rw-r--r--tests/auto/qscriptcontext/tst_qscriptcontext.cpp49
-rw-r--r--tests/auto/qscriptengine/idtranslatable-unicode.js5
-rw-r--r--tests/auto/qscriptengine/qscriptengine.qrc2
-rw-r--r--tests/auto/qscriptengine/translatable-unicode.js9
-rw-r--r--tests/auto/qscriptengine/translations/idtranslatable-unicode.qmbin0 -> 209 bytes
-rw-r--r--tests/auto/qscriptengine/translations/idtranslatable-unicode.ts26
-rw-r--r--tests/auto/qscriptengine/translations/translatable-unicode.qmbin0 -> 322 bytes
-rw-r--r--tests/auto/qscriptengine/translations/translatable-unicode.ts37
-rw-r--r--tests/auto/qscriptengine/tst_qscriptengine.cpp91
-rw-r--r--tests/auto/qscriptenginedebugger/tst_qscriptenginedebugger.cpp94
-rw-r--r--tests/auto/qscriptextqobject/tst_qscriptextqobject.cpp57
-rw-r--r--tests/auto/qscriptvalue/tst_qscriptvalue.cpp62
-rw-r--r--tests/auto/qscriptvalue/tst_qscriptvalue.h4
-rw-r--r--tests/auto/qscriptvaluegenerated/testgen/data.txt8
-rw-r--r--tests/auto/qscriptvaluegenerated/testgen/testgenerator.cpp41
-rw-r--r--tests/auto/qscriptvaluegenerated/tst_qscriptvalue_generated_cast.cpp851
-rw-r--r--tests/auto/qscriptvaluegenerated/tst_qscriptvalue_generated_comparison.cpp548
-rw-r--r--tests/auto/qscriptvaluegenerated/tst_qscriptvalue_generated_init.cpp8
-rw-r--r--tests/auto/qscriptvaluegenerated/tst_qscriptvalue_generated_isXXX.cpp112
-rw-r--r--tests/auto/qscriptvaluegenerated/tst_qscriptvalue_generated_toXXX.cpp1058
-rw-r--r--tests/auto/qsemaphore/qsemaphore.pro1
-rw-r--r--tests/auto/qsequentialanimationgroup/qsequentialanimationgroup.pro1
-rw-r--r--tests/auto/qset/qset.pro1
-rw-r--r--tests/auto/qsharedpointer/qsharedpointer.pro1
-rw-r--r--tests/auto/qsignalspy/qsignalspy.pro1
-rw-r--r--tests/auto/qsize/qsize.pro1
-rw-r--r--tests/auto/qsizef/qsizef.pro1
-rw-r--r--tests/auto/qsqldatabase/tst_databases.h2
-rw-r--r--tests/auto/qsqlquery/tst_qsqlquery.cpp131
-rw-r--r--tests/auto/qsslcertificate/qsslcertificate.pro3
-rw-r--r--tests/auto/qstate/qstate.pro1
-rw-r--r--tests/auto/qstl/qstl.pro1
-rw-r--r--tests/auto/qstring/qstring.pro1
-rw-r--r--tests/auto/qstringbuilder1/qstringbuilder1.pro1
-rw-r--r--tests/auto/qstringbuilder2/qstringbuilder2.pro1
-rw-r--r--tests/auto/qstringbuilder3/qstringbuilder3.pro1
-rw-r--r--tests/auto/qstringbuilder4/qstringbuilder4.pro1
-rw-r--r--tests/auto/qstringlist/qstringlist.pro1
-rw-r--r--tests/auto/qstringmatcher/qstringmatcher.pro1
-rw-r--r--tests/auto/qstringref/qstringref.pro1
-rw-r--r--tests/auto/qtconcurrentfilter/qtconcurrentfilter.pro2
-rw-r--r--tests/auto/qtconcurrentiteratekernel/qtconcurrentiteratekernel.pro2
-rw-r--r--tests/auto/qtconcurrentmap/qtconcurrentmap.pro2
-rw-r--r--tests/auto/qtconcurrentrun/qtconcurrentrun.pro2
-rw-r--r--tests/auto/qtconcurrentrun/tst_qtconcurrentrun.cpp38
-rw-r--r--tests/auto/qtconcurrentthreadengine/qtconcurrentthreadengine.pro2
-rw-r--r--tests/auto/qtextboundaryfinder/qtextboundaryfinder.pro1
-rw-r--r--tests/auto/qtextdocument/tst_qtextdocument.cpp1
-rw-r--r--tests/auto/qthread/qthread.pro1
-rw-r--r--tests/auto/qthreadonce/qthreadonce.pro1
-rw-r--r--tests/auto/qthreadpool/qthreadpool.pro1
-rw-r--r--tests/auto/qthreadstorage/qthreadstorage.pro1
-rw-r--r--tests/auto/qtime/qtime.pro1
-rw-r--r--tests/auto/qtimeline/qtimeline.pro1
-rw-r--r--tests/auto/qtimer/qtimer.pro1
-rw-r--r--tests/auto/qtmd5/qtmd5.pro1
-rw-r--r--tests/auto/qtokenautomaton/qtokenautomaton.pro1
-rw-r--r--tests/auto/qurl/qurl.pro1
-rw-r--r--tests/auto/quuid/quuid.pro1
-rw-r--r--tests/auto/qvarlengtharray/qvarlengtharray.pro1
-rw-r--r--tests/auto/qvector/qvector.pro1
-rw-r--r--tests/auto/qwaitcondition/qwaitcondition.pro1
-rw-r--r--tests/auto/qwineventnotifier/qwineventnotifier.pro1
-rw-r--r--tests/auto/qwritelocker/qwritelocker.pro1
-rw-r--r--tests/auto/selftests/selftests.pro1
-rw-r--r--tests/auto/utf8/utf8.pro1
-rw-r--r--tests/benchmarks/corelib/tools/qstring/data.cpp19
-rw-r--r--tests/benchmarks/corelib/tools/qstring/data.h7
-rw-r--r--tests/benchmarks/corelib/tools/qstring/generatelist.pl8
-rw-r--r--tests/benchmarks/script/qscriptqobject/tst_qscriptqobject.cpp28
-rw-r--r--tests/benchmarks/script/sunspider/tests/VERSION1
-rw-r--r--tests/benchmarks/script/v8/tests/README.txt79
-rw-r--r--tools/linguist/linguist/mainwindow.cpp4
-rw-r--r--tools/linguist/linguist/printout.cpp2
-rw-r--r--tools/macdeployqt/shared/shared.cpp2
-rw-r--r--tools/porting/src/preprocessorcontrol.cpp2
-rw-r--r--tools/porting/src/textreplacement.h4
-rw-r--r--tools/qconfig/qconfig.pro1
-rw-r--r--tools/qdoc3/ditaxmlgenerator.cpp4
-rw-r--r--tools/qdoc3/doc/qdoc-manual.qdocconf253
-rw-r--r--tools/qdoc3/htmlgenerator.cpp10
-rw-r--r--tools/qdoc3/tokenizer.h2
-rw-r--r--tools/qdoc3/tree.cpp71
-rw-r--r--tools/qmeegographicssystemhelper/qmeegofencesync.cpp79
-rw-r--r--tools/qmeegographicssystemhelper/qmeegofencesync.h101
-rw-r--r--tools/qmeegographicssystemhelper/qmeegofencesync_p.h60
-rw-r--r--tools/qmeegographicssystemhelper/qmeegographicssystemhelper.pro4
-rw-r--r--tools/qmeegographicssystemhelper/qmeegolivepixmap.cpp9
-rw-r--r--tools/qmeegographicssystemhelper/qmeegolivepixmap.h7
-rw-r--r--tools/qmeegographicssystemhelper/qmeegoruntime.cpp29
-rw-r--r--tools/qmeegographicssystemhelper/qmeegoruntime.h4
531 files changed, 15196 insertions, 6057 deletions
diff --git a/config.tests/symbian/audio/audio.pro b/config.tests/symbian/audio/audio.pro
index b2a1986..b496341 100644
--- a/config.tests/symbian/audio/audio.pro
+++ b/config.tests/symbian/audio/audio.pro
@@ -6,4 +6,5 @@ INCLUDEPATH += $${EPOCROOT}epoc32/include/mmf/common
INCLUDEPATH += $${EPOCROOT}epoc32/include/platform
LIBS += -lmmfdevsound
+CONFIG -= qt
QT =
diff --git a/config.tests/symbian/simple/simple.pro b/config.tests/symbian/simple/simple.pro
index fa086c9..9c60d62 100644
--- a/config.tests/symbian/simple/simple.pro
+++ b/config.tests/symbian/simple/simple.pro
@@ -1,4 +1,5 @@
TEMPLATE = app
+CONFIG -= qt
QT =
SOURCES += main.cpp
diff --git a/configure b/configure
index dae167c..83cf402 100755
--- a/configure
+++ b/configure
@@ -3462,11 +3462,9 @@ if [ -z "$QT_INSTALL_PREFIX" ]; then
if [ "$PLATFORM" != "$XPLATFORM" ]; then
QT_INSTALL_PREFIX="${QT_INSTALL_PREFIX}-${CFG_ARCH}"
fi
- elif [ -d "$EPOCROOT" ]; then
- if [ "$XPLATFORM_SYMBIAN" = "yes" ]; then
- QT_INSTALL_PREFIX="$EPOCROOT/epoc32/"
- QT_INSTALL_LIBS="$EPOCROOT/epoc32/release/armv5/lib/"
- fi
+ elif [ -d "$EPOCROOT" ] && [ "$XPLATFORM_SYMBIAN" = "yes" ]; then
+ QT_INSTALL_PREFIX="$EPOCROOT/epoc32/"
+ QT_INSTALL_LIBS="$EPOCROOT/epoc32/release/armv5/lib/"
else
QT_INSTALL_PREFIX="/usr/local/Trolltech/Qt-${QT_VERSION}" # the default install prefix is /usr/local/Trolltech/Qt-$QT_VERSION
fi
diff --git a/demos/chip/view.cpp b/demos/chip/view.cpp
index 7af3074..d6a641e 100644
--- a/demos/chip/view.cpp
+++ b/demos/chip/view.cpp
@@ -48,15 +48,29 @@
#include <qmath.h>
+void GraphicsView::wheelEvent(QWheelEvent *e)
+{
+ if (e->modifiers() & Qt::ControlModifier) {
+ if (e->delta() > 0)
+ view->zoomIn(6);
+ else
+ view->zoomOut(6);
+ e->accept();
+ } else {
+ QGraphicsView::wheelEvent(e);
+ }
+}
+
View::View(const QString &name, QWidget *parent)
: QFrame(parent)
{
setFrameStyle(Sunken | StyledPanel);
- graphicsView = new QGraphicsView;
+ graphicsView = new GraphicsView(this);
graphicsView->setRenderHint(QPainter::Antialiasing, false);
graphicsView->setDragMode(QGraphicsView::RubberBandDrag);
graphicsView->setOptimizationFlags(QGraphicsView::DontSavePainterState);
graphicsView->setViewportUpdateMode(QGraphicsView::SmartViewportUpdate);
+ graphicsView->setTransformationAnchor(QGraphicsView::AnchorUnderMouse);
int size = style()->pixelMetric(QStyle::PM_ToolBarIconSize);
QSize iconSize(size, size);
@@ -111,6 +125,15 @@ View::View(const QString &name, QWidget *parent)
// Label layout
QHBoxLayout *labelLayout = new QHBoxLayout;
label = new QLabel(name);
+ label2 = new QLabel(tr("Pointer Mode"));
+ selectModeButton = new QToolButton;
+ selectModeButton->setText(tr("Select"));
+ selectModeButton->setCheckable(true);
+ selectModeButton->setChecked(true);
+ dragModeButton = new QToolButton;
+ dragModeButton->setText(tr("Drag"));
+ dragModeButton->setCheckable(true);
+ dragModeButton->setChecked(false);
antialiasButton = new QToolButton;
antialiasButton->setText(tr("Antialiasing"));
antialiasButton->setCheckable(true);
@@ -126,8 +149,17 @@ View::View(const QString &name, QWidget *parent)
printButton = new QToolButton;
printButton->setIcon(QIcon(QPixmap(":/fileprint.png")));
+ QButtonGroup *pointerModeGroup = new QButtonGroup;
+ pointerModeGroup->setExclusive(true);
+ pointerModeGroup->addButton(selectModeButton);
+ pointerModeGroup->addButton(dragModeButton);
+
labelLayout->addWidget(label);
labelLayout->addStretch();
+ labelLayout->addWidget(label2);
+ labelLayout->addWidget(selectModeButton);
+ labelLayout->addWidget(dragModeButton);
+ labelLayout->addStretch();
labelLayout->addWidget(antialiasButton);
labelLayout->addWidget(openGlButton);
labelLayout->addWidget(printButton);
@@ -145,6 +177,8 @@ View::View(const QString &name, QWidget *parent)
connect(rotateSlider, SIGNAL(valueChanged(int)), this, SLOT(setupMatrix()));
connect(graphicsView->verticalScrollBar(), SIGNAL(valueChanged(int)), this, SLOT(setResetButtonEnabled()));
connect(graphicsView->horizontalScrollBar(), SIGNAL(valueChanged(int)), this, SLOT(setResetButtonEnabled()));
+ connect(selectModeButton, SIGNAL(toggled(bool)), this, SLOT(togglePointerMode()));
+ connect(dragModeButton, SIGNAL(toggled(bool)), this, SLOT(togglePointerMode()));
connect(antialiasButton, SIGNAL(toggled(bool)), this, SLOT(toggleAntialiasing()));
connect(openGlButton, SIGNAL(toggled(bool)), this, SLOT(toggleOpenGL()));
connect(rotateLeftIcon, SIGNAL(clicked()), this, SLOT(rotateLeft()));
@@ -158,7 +192,7 @@ View::View(const QString &name, QWidget *parent)
QGraphicsView *View::view() const
{
- return graphicsView;
+ return static_cast<QGraphicsView *>(graphicsView);
}
void View::resetView()
@@ -188,6 +222,14 @@ void View::setupMatrix()
setResetButtonEnabled();
}
+void View::togglePointerMode()
+{
+ graphicsView->setDragMode(selectModeButton->isChecked()
+ ? QGraphicsView::RubberBandDrag
+ : QGraphicsView::ScrollHandDrag);
+ graphicsView->setInteractive(selectModeButton->isChecked());
+}
+
void View::toggleOpenGL()
{
#ifndef QT_NO_OPENGL
@@ -212,14 +254,14 @@ void View::print()
#endif
}
-void View::zoomIn()
+void View::zoomIn(int level)
{
- zoomSlider->setValue(zoomSlider->value() + 1);
+ zoomSlider->setValue(zoomSlider->value() + level);
}
-void View::zoomOut()
+void View::zoomOut(int level)
{
- zoomSlider->setValue(zoomSlider->value() - 1);
+ zoomSlider->setValue(zoomSlider->value() - level);
}
void View::rotateLeft()
diff --git a/demos/chip/view.h b/demos/chip/view.h
index 8047b8b..67c7675 100644
--- a/demos/chip/view.h
+++ b/demos/chip/view.h
@@ -43,12 +43,27 @@
#define VIEW_H
#include <QFrame>
+#include <QGraphicsView>
-QT_FORWARD_DECLARE_CLASS(QGraphicsView)
QT_FORWARD_DECLARE_CLASS(QLabel)
QT_FORWARD_DECLARE_CLASS(QSlider)
QT_FORWARD_DECLARE_CLASS(QToolButton)
+class View;
+
+class GraphicsView : public QGraphicsView
+{
+ Q_OBJECT
+public:
+ GraphicsView(View *v) : QGraphicsView(), view(v) { }
+
+protected:
+ void wheelEvent(QWheelEvent *);
+
+private:
+ View *view;
+};
+
class View : public QFrame
{
Q_OBJECT
@@ -57,22 +72,27 @@ public:
QGraphicsView *view() const;
+public slots:
+ void zoomIn(int level = 1);
+ void zoomOut(int level = 1);
+
private slots:
void resetView();
void setResetButtonEnabled();
void setupMatrix();
+ void togglePointerMode();
void toggleOpenGL();
void toggleAntialiasing();
void print();
-
- void zoomIn();
- void zoomOut();
void rotateLeft();
void rotateRight();
-
+
private:
- QGraphicsView *graphicsView;
+ GraphicsView *graphicsView;
QLabel *label;
+ QLabel *label2;
+ QToolButton *selectModeButton;
+ QToolButton *dragModeButton;
QToolButton *openGlButton;
QToolButton *antialiasButton;
QToolButton *printButton;
diff --git a/demos/declarative/minehunt/minehunt.cpp b/demos/declarative/minehunt/minehunt.cpp
index 709d945..aaaaaac 100644
--- a/demos/declarative/minehunt/minehunt.cpp
+++ b/demos/declarative/minehunt/minehunt.cpp
@@ -211,7 +211,7 @@ bool MinehuntGame::flip(int row, int col)
bool MinehuntGame::flag(int row, int col)
{
TileData *t = tile(row, col);
- if(!t || !playing)
+ if(!t || !playing || t->flipped())
return false;
t->setHasFlag(!t->hasFlag());
diff --git a/demos/declarative/minehunt/minehunt.pro b/demos/declarative/minehunt/minehunt.pro
index 7984315..f591011 100644
--- a/demos/declarative/minehunt/minehunt.pro
+++ b/demos/declarative/minehunt/minehunt.pro
@@ -1,7 +1,6 @@
TEMPLATE = app
TARGET = minehunt
QT += declarative
-CONFIG += qt plugin
# Input
HEADERS += minehunt.h
@@ -21,4 +20,4 @@ symbian:{
qmlminehuntfiles.files = MinehuntCore minehunt.qml
DEPLOYMENT = qmlminehuntfiles
}
- \ No newline at end of file
+
diff --git a/demos/declarative/samegame/samegame.qml b/demos/declarative/samegame/samegame.qml
index b66c5a6..ab49c04 100644
--- a/demos/declarative/samegame/samegame.qml
+++ b/demos/declarative/samegame/samegame.qml
@@ -92,9 +92,7 @@ Rectangle {
enabled: nameInputDialog.initialWidth != 0
}
- onOpened: nameInputText.focus = true;
onClosed: {
- nameInputText.focus = false;
if (nameInputText.text != "")
Logic.saveHighScore(nameInputText.text);
}
@@ -116,7 +114,7 @@ Rectangle {
TextInput {
id: nameInputText
anchors { verticalCenter: parent.verticalCenter; left: dialogText.right }
- focus: false
+ focus: visible
autoScroll: false
maximumLength: 24
onTextChanged: {
diff --git a/demos/qtdemo/xml/examples.xml b/demos/qtdemo/xml/examples.xml
index 27f72bb..b94d2b8 100644
--- a/demos/qtdemo/xml/examples.xml
+++ b/demos/qtdemo/xml/examples.xml
@@ -19,7 +19,6 @@
<example filename="sub-attaq" name="Sub-attaq" />
<example filename="spectrum" name="Spectrum Analyzer" />
<example filename="declarative/minehunt" name="Minehunt"/>
- <example filename="declarative/snake" name="Snake" executable="false" qml="true"/>
<example filename="deform" name="Vector Deformation" />
<example filename="books" name="Books" />
<example filename="mainwindow" name="Main Window" />
diff --git a/doc/src/declarative/basictypes.qdoc b/doc/src/declarative/basictypes.qdoc
index 6abe96f..8ab06ab 100644
--- a/doc/src/declarative/basictypes.qdoc
+++ b/doc/src/declarative/basictypes.qdoc
@@ -355,9 +355,11 @@
\brief A list of objects.
- A list of objects. While not technically a basic type, QML also
- supports lists of object types. When used from QML, the engine
- automatically appends each value to the list.
+ A list type contains a list of objects. While not technically
+ a basic type, QML supports lists of object types. When used
+ from QML, the engine automatically appends each value to the list.
+ Items in the list can be accessed by index using the usual
+ \c listName[index] syntax.
For example, the \l Item class contains a list property named
children that can be used like this:
@@ -366,14 +368,87 @@
Item {
children: [
Item { id: child1 },
- Rectangle { id: child2 },
+ Rectangle { id: child2; width: 200 },
Text { id: child3 }
]
+
+ Component.onCompleted: {
+ console.log("Width of child rectangle:", children[1].width)
+ }
}
\endqml
- \c child1, \c child2 and \c child3 will all be added to the children list
+ \c child1, \c child2 and \c child3 will be added to the children list
in the order in which they appear.
+ List \l {Adding new properties}{properties} can be created as a
+ \c variant type, or as a \c list<Type> type, where \c Type is the
+ type of the object in the list:
+
+ \qml
+ Item {
+ property variant values: [ 10, 20, 'abc', 'xyz' ]
+
+ property list<Rectangle> rects: [
+ Rectangle { width: 100; height: 100},
+ Rectangle { width: 200; height: 200}
+ ]
+ }
+ \endqml
+
+ A \c variant list can contain values of any of the \l {QML Basic Types}{basic QML types}
+ such as numbers, strings, etc. while a \c list<Type> list can only contain values
+ that match (or are derived from) the specified \c Type.
+
+ A list property can be cleared by setting it to an empty list:
+
+ \qml
+ Item {
+ children: []
+ }
+ \endqml
+
+ A list property cannot be modified in any other way. Items cannot be dynamically added to
+ or removed from the list through JavaScript operations; any \c push() operations on the
+ list only modify a \e copy of the list and not the actual list. (These current limitations
+ are due to restrictions on \l {Property Binding} where lists are involved.)
+
+ To create a modifiable list, create an array object from within a \c .js JavaScript file,
+ or implement a custom list element in C++. Here is a QML element that modifies the list in a
+ JavaScript file:
+
+ \table
+ \row
+ \o
+ \qml
+ // QML
+ import "script.js" as Script
+
+ Item {
+ Component.onCompleted: {
+ Script.addItem('abc')
+ console.log("Added:", Script.getList()[0])
+ }
+ }
+ \endqml
+
+ \o
+ \code
+ // script.js
+ var myArray = new Array()
+
+ function getList() {
+ return myArray
+ }
+
+ function addItem(item) {
+ myArray.push(item)
+ }
+ \endcode
+ \endtable
+
+ However, note that a JavaScript list should not be used as a QML \c property value,
+ as the property is not updated when the list changes.
+
\sa {QML Basic Types}
*/
diff --git a/doc/src/declarative/dynamicobjects.qdoc b/doc/src/declarative/dynamicobjects.qdoc
index 3921d3e..daf2ae1 100644
--- a/doc/src/declarative/dynamicobjects.qdoc
+++ b/doc/src/declarative/dynamicobjects.qdoc
@@ -173,7 +173,11 @@ component. Each instance runs a NumberAnimation, and when the animation has fini
Alternatively, the \c application.qml could have destroyed the created object
by calling \c object.destroy().
-Notice that if a \c SelfDestroyingRect instance was created statically like this:
+Note that it is safe to call destroy() on an object within that object. Objects are not destroyed the
+instant destroy() is called, but are cleaned up sometime between the end of that script block and the next frame
+(unless you specified a non-zero delay).
+
+Note also that if a \c SelfDestroyingRect instance was created statically like this:
\qml
Item {
diff --git a/doc/src/declarative/elements.qdoc b/doc/src/declarative/elements.qdoc
index a0eb95d..54f07a2 100644
--- a/doc/src/declarative/elements.qdoc
+++ b/doc/src/declarative/elements.qdoc
@@ -37,8 +37,110 @@
To see the QML elements listed by functional area, see the
\l{Groups Of Related QML Elements} page.
- \generatelist qmlclasses
-
+ \table
+ \header \o {2,1} \bold {Basic Visual Items}
+ \row \o \l {Item} \o Basic item element inherited by all visual items in QML
+ \row \o \l {Rectangle} \o Basic visual rectangle element
+ \row \o \l {Gradient} \o Defines a gradient between two or more colors
+ \row \o \l {GradientStop} \o Defines a color used in a \l {Gradient}
+ \row \o \l {Image} \o Allows the use of bitmaps to a scene
+ \row \o \l {BorderImage} (Item-specific) \o Defines an image as a border
+ \row \o \l {AnimatedImage} \o For playing animations stored as a series of frames
+ \row \o \l {Text} \o Allows the use of formatted text in a scene
+ \row \o \l {TextInput} \o Displays an editable line of text
+ \row \o \l {IntValidator} \o Validator for integer values
+ \row \o \l {DoubleValidator} \o Validator for non-integer values
+ \row \o \l {RegExpValidator} \o Validator for string regular expressions
+ \row \o \l {TextEdit} \o Displays multiple lines of editable formatted text
+
+ \header \o {2,1} \bold {Basic Interaction Items}
+ \row \o \l {MouseArea} \o Handles mouse interactions
+ \row \o \l {FocusScope} \o For keyboard focus handling
+ \row \o \l {Flickable} \o Provides a surface that can be "flicked"
+ \row \o \l {Flipable} \o Provides a surface that produces flipping effects
+ \row \o \l {GestureArea} (experimental) \o Enables simple gesture handling
+
+ \header \o {2,1} \bold {States}
+ \row \o \l {State} \o Defines sets of configurations of objects and properties
+ \row \o \l {PropertyChanges} \o Describes property changes within a state
+ \row \o \l {StateGroup} \o Contains a set of states and state transitions
+ \row \o \l {StateChangeScript} \o Allows script binding in a state
+ \row \o \l {ParentChange} (Item-specific) \o Re-parent an Item in a state change
+ \row \o \l {AnchorChanges} \o Change the anchors of an item in a state
+
+ \header \o {2,1} \bold {Animation and Transitions}
+ \row \o \l {Behavior} \o Specifies a default animation for property changes
+ \row \o \l {SequentialAnimation} \o Runs animations sequentially
+ \row \o \l {ParallelAnimation} \o Runs animations in parallel
+ \row \o \l {PropertyAnimation} \o Animates property changes
+ \row \o \l {NumberAnimation} \o Animates properties of type qreal
+ \row \o \l {Vector3dAnimation} \o Animates properties of type QVector3d
+ \row \o \l {ColorAnimation} \o Animates color changes
+ \row \o \l {RotationAnimation} \o Animates rotations
+ \row \o \l {ParentAnimation} \o Animates parent changes
+ \row \o \l {AnchorAnimation} \o Animates anchor changes
+ \row \o \l {PauseAnimation} \o Pauses an animation
+ \row \o \l {SmoothedAnimation} \o Allows a property to smoothly track a value
+ \row \o \l {SpringAnimation} \o Allows a property to track a value in a spring-like motion
+ \row \o \l {PropertyAction} \o Sets immediate property changes during animation
+ \row \o \l {ScriptAction} \o Runs scripts during an animation
+ \row \o \l {Transition} \o Animates transitions during state changes
+
+ \header \o {2,1} \bold {Working with Data}
+ \row \o \l {Binding} \o Binds any value to any property
+ \row \o \l {ListModel} \o Defines a list of data
+ \row \o \l {ListElement} \o Defines a data item in a \l {ListModel}
+ \row \o \l {VisualItemModel} \o Contains items that already defines its own visual delegate
+ \row \o \l {VisualDataModel} \o Encapsulates a model and a delegate
+ \row \o \l {Package} \o Collection that enables sharing of items within different views
+ \row \o \l {XmlListModel} \o Specifies a model using XPath expressions
+ \row \o \l {XmlRole} \o Specifies a role for an \l {XmlListModel}
+
+ \header \o {2,1} \bold {Views}
+ \row \o \l {ListView} \o Provides a list visualization of a model
+ \row \o \l {GridView} \o Provides a grid visualization of a model
+ \row \o \l {PathView} \o Visualizes a model's contents along a path
+ \row \o \l {Path} \o Defines a path used by \l {PathView}
+ \row \o \l {PathLine} \o Defines a line in \l {Path}
+ \row \o \l {PathQuad} \o Defines a quadratic Bezier curve in a \l {Path}
+ \row \o \l {PathCubic} \o Defines a cubic Bezier curve in a \l {Path}
+ \row \o \l {PathAttribute} \o Allows the setting of attributes along a \l {Path}
+ \row \o \l {PathPercent} \o Modifies the item distribution along a \l {Path}
+ \row \o \l {WebView} \o Allows the addition of web content to a canvas
+
+ \header \o {2,1} \bold {Positioners}
+ \row \o \l {Column} \o Arranges its children vertically
+ \row \o \l {Row} \o Arranges its children horizontally
+ \row \o \l {Grid} \o Positions its children in a grid
+ \row \o \l {Flow} \o Positions its children with wrapping support
+
+ \header \o {2,1} \bold {Utility}
+ \row \o \l {Connections} \o Explicitly connects signals and signal handlers
+ \row \o \l {Component} \o Encapsulate QML items as a component
+ \row \o \l {Timer} \o Provides timed triggers
+ \row \o \l {QML:QtObject} {QtObject} \o Basic element containing only the objectName property
+ \row \o \l {QML:Qt} {Qt} \o The QML global Qt object provides useful enums and functions from Qt.
+ \row \o \l {WorkerScript} \o Enables the use of threads in QML
+ \row \o \l {Loader} \o Controls the loading of items or components
+ \row \o \l {Repeater} \o Uses a model to create multiples of components
+ \row \o \l {SystemPalette} \o Provides access to the Qt palettes
+ \row \o \l {FontLoader} \o Loads fonts by name or URL
+ \row \o \l {LayoutItem} \o Allows declarative UI elements inside Qt's Graphics View layouts
+
+ \header \o {2,1} \bold {Transforms}
+ \row \o \l {Scale} \o Assigns item scaling behaviors
+ \row \o \l {Rotation} \o Assigns item rotation behaviors
+ \row \o \l {Translate} \o Assigns item translation behaviors
+
+ \header \o {2,1} \bold {Effects}
+ \row \o \l {Particles} (experimental) \o Generates and animates particles
+ \row \o \l {ParticleMotionLinear} \o Adds linear motion behavior to \l {Particles}
+ \row \o \l {ParticleMotionGravity} \o Adds gravitational motion to \l {Particles}
+ \row \o \l {ParticleMotionWander} \o Adds varied motions to \l {Particles}
+ \endtable
+
+
+
*/
diff --git a/doc/src/declarative/extending-tutorial.qdoc b/doc/src/declarative/extending-tutorial.qdoc
index 3b2fe3b..2bfe62e 100644
--- a/doc/src/declarative/extending-tutorial.qdoc
+++ b/doc/src/declarative/extending-tutorial.qdoc
@@ -260,32 +260,28 @@ custom QML types may see unexpected behavior if bindings are not implemented.
The \c PieChart type currently has a string-type property and a color-type property.
It could have many other types of properties. For example, it could have an
-enum-type property to store a display mode for each chart:
+int-type property to store an identifier for each chart:
\code
// C++
class PieChart : public QDeclarativeItem
{
- Q_ENUMS(DisplayMode)
- Q_PROPERTY(DisplayMode displayMode READ displayMode WRITE setDisplayMode)
+ Q_PROPERTY(int chartId READ chartId WRITE setChartId NOTIFY chartIdChanged)
...
public:
- enum DisplayMode {
- MultiLevel,
- Exploded,
- ThreeDimensional
- };
-
- void setDisplayMode(DisplayMode mode);
- DisplayMode displayMode() const;
+ void setChartId(int chartId);
+ int chartId() const;
...
+
+ signals:
+ void chartIdChanged();
};
// QML
PieChart {
...
- displayMode: PieChart.Exploded
+ chartId: 100
}
\endcode
diff --git a/doc/src/declarative/extending.qdoc b/doc/src/declarative/extending.qdoc
index 9f3e2d2..19e9ffc 100644
--- a/doc/src/declarative/extending.qdoc
+++ b/doc/src/declarative/extending.qdoc
@@ -647,7 +647,8 @@ language.
\section1 Adding new properties
-New properties can be added to an existing type. These new properties are
+New properties can be added to an existing type using the \c property keyword.
+These new properties are
available for use within QML, and also appear as regular Qt properties on the
C++ object, accessible through the regular property access mechanisms.
@@ -679,8 +680,12 @@ like this:
property list<Item> listOfItemsProperty
\endcode
+Custom types must be registered with qmlRegisterType() to be usable as a property
+type. Also note that list properties cannot be modified like ordinary JavaScript
+arrays; see the \l {list}{list type documentation} for details.
+
QML supports two methods for adding a new property to a type: a new property
-definition, and a property alias.
+definition, and a property alias. These are shown below.
\section2 Property definitions
diff --git a/doc/src/declarative/qtbinding.qdoc b/doc/src/declarative/qtbinding.qdoc
index 58d53de..8a969eb 100644
--- a/doc/src/declarative/qtbinding.qdoc
+++ b/doc/src/declarative/qtbinding.qdoc
@@ -30,126 +30,389 @@
\target qtbinding
\title Using QML in C++ Applications
-\tableofcontents
+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'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.
-The QML API is split into three main classes - QDeclarativeEngine, QDeclarativeComponent and QDeclarativeContext.
-QDeclarativeEngine provides the environment in which QML is run, QDeclarativeComponent encapsulates
-\l {QML Documents}, and QDeclarativeContext allows applications to expose data to QML component instances.
+You may want to mix QML and C++ for a number of reasons. For example:
-QML also includes a convenience API, QDeclarativeView, for applications that simply want to embed QML
-components into a new QGraphicsView. QDeclarativeView covers up many of the details discussed below.
-While QDeclarativeView is mainly intended for rapid prototyping it can have uses in production applications.
+\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
+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
+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
-If you are looking at retrofitting an existing Qt application with QML,
-read \l{Integrating QML with existing Qt UI code}.
-\section1 Basic Usage
+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
+that provide the essential capabilities for doing this. These are:
-Every application requires at least one QDeclarativeEngine. A QDeclarativeEngine allows the configuration of
-global settings that apply to all the QML component instances - such as the QNetworkAccessManager
-that is used for network communications, and the path used for persistent storage.
-Multiple QDeclarativeEngine's are only needed if the application requires these settings to differ
-between QML component instances.
+\list
+\o QDeclarativeEngine: A QML engine provides the environment for executing QML code. Every
+application requires at least one engine instance.
+\o QDeclarativeComponent: A component encapsulates a \l{QML Documents}{QML document}.
+\o QDeclarativeContext: A context allows an application to expose data to the QML components
+created by an engine.
+\endlist
-\l {QML Documents} are loaded using the QDeclarativeComponent class. Each QDeclarativeComponent instance
-represents a single QML document. A QDeclarativeComponent can be passed a document URL, or raw text
-representing the content of the document. The document URL can be a local filesystem URL, or
-any network URL supported by QNetworkAccessManager.
+A QDeclarativeEngine allows the configuration of global settings that apply to all of its QML
+component instances: for example, the QNetworkAccessManager to be used for network communications,
+and the file path to be used for persistent storage.
-QML component instances can then be created by calling the QDeclarativeComponent::create() method. Here's
-an example of loading a QML document, and creating an object from it.
+QDeclarativeComponent is used to load QML documents. Each QDeclarativeComponent instance represents
+a single document. A component can be created from the URL or file path of a QML document, or the raw
+QML code of the document. Component instances are instatiated through the
+QDeclarativeComponent::create() method, like this:
\code
- QDeclarativeEngine *engine = new QDeclarativeEngine(parent);
- QDeclarativeComponent component(engine, QUrl::fromLocalFile("main.qml"));
- QObject *myObject = component.create();
+QDeclarativeEngine engine;
+QDeclarativeComponent component(&engine, QUrl::fromLocalFile("MyRectangle.qml"));
+QObject *rectangleInstance = component.create();
+
+// ...
+delete rectangleInstance;
\endcode
-\section1 Exposing Data
+QML documents can also be loaded using QDeclarativeView. This class provides a convenient
+QWidget-based view for embedding QML components into QGraphicsView-based applications. (For other
+methods of integrating QML into QWidget-based applications, see \l {Integrating QML with existing Qt
+UI code}.)
+
+
+\section1 Approaches to using QML with C++
+
+There are a number of ways to extend your QML application through C++. For example, you could:
+
+\list
+\o Load a QML component and manipulate it (or its children) from C++
+\o Embed a C++ object and its properties directly into a QML component (for example, to make a
+particular C++ object callable from QML, or to replace a dummy list model data with a real data set)
+\o Define new QML elements (through QObject-based C++ classes) and create them directly from your
+QML code
+\endlist
+
+These methods are shown below. Naturally these approaches are not exclusive; you can mix any of
+these methods throughout your application as appropriate.
+
+
+\section2 Loading QML components from C++
+
+A QML document can be loaded with QDeclarativeComponent or QDeclarativeView. QDeclarativeComponent
+loads a QML component as a C++ object; QDeclarativeView also does this,
+but additionally loads the QML component directly into a QGraphicsView. It is convenient for loading
+a displayable QML component into a QWidget-based application.
+
+For example, suppose there is a \c MyItem.qml file that looks like this:
+
+\snippet doc/src/snippets/declarative/qtbinding/loading/MyItem.qml start
+\snippet doc/src/snippets/declarative/qtbinding/loading/MyItem.qml end
+
+This QML document can be loaded with QDeclarativeComponent or QDeclarativeView with the following
+C++ code. Using a QDeclarativeComponent requires calling QDeclarativeComponent::create() to create
+a new instance of the component, while a QDeclarativeView automatically creates an instance of the
+component, which is accessible via QDeclarativeView::rootObject():
+
+\table
+\row
+\o
+\snippet doc/src/snippets/declarative/qtbinding/loading/main.cpp QDeclarativeComponent-a
+\dots 0
+\snippet doc/src/snippets/declarative/qtbinding/loading/main.cpp QDeclarativeComponent-b
+\o
+\snippet doc/src/snippets/declarative/qtbinding/loading/main.cpp QDeclarativeView
+\endtable
+
+This \c object is the instance of the \c MyItem.qml component that has been created. You can now
+modify the item's properties using QObject::setProperty() or QDeclarativeProperty:
+
+\snippet doc/src/snippets/declarative/qtbinding/loading/main.cpp properties
+
+Alternatively, you can cast the object to its actual type and call functions with compile-time
+safety. In this case the base object of \c MyItem.qml is an \l Item, which is defined by the
+QDeclarativeItem class:
+
+\snippet doc/src/snippets/declarative/qtbinding/loading/main.cpp cast
+
+You can also connect to any signals or call functions defined in the component using
+QMetaObject::invokeMethod() and QObject::connect(). See \l {Exchanging data between QML and C++}
+below for further details.
+
+\section3 Locating child objects
+
+QML components are essentially object trees with children that have siblings and their own children.
+Child objects of QML components can be located using the QObject::objectName property with
+QObject::findChild(). For example, if the root item in \c MyItem.qml had a child \l Rectangle item:
+
+\snippet doc/src/snippets/declarative/qtbinding/loading/MyItem.qml start
+\codeline
+\snippet doc/src/snippets/declarative/qtbinding/loading/MyItem.qml child
+\snippet doc/src/snippets/declarative/qtbinding/loading/MyItem.qml end
+
+The child could be located like this:
+
+\snippet doc/src/snippets/declarative/qtbinding/loading/main.cpp findChild
+
+If \c objectName is used inside a delegate of a ListView, \l Repeater or some other
+element that creates multiple instances of its delegates, there will be multiple children with
+the same \c objectName. In this case, QObject::findChildren() can be used to find all children
+with a matching \c objectName.
+
+\warning While it is possible to use C++ to access and manipulate QML objects deep into the
+object tree, we recommend that you do not take this approach outside of application
+testing and prototyping. One strength of QML and C++ integration is the ability to implement the
+QML user interface separately from the C++ logic and dataset backend, and this strategy breaks if the
+C++ side reaches deep into the QML components to manipulate them directly. This would make it difficult
+to, for example, swap a QML view component for another view, if the new component was missing a
+required \c objectName. It is better for the C++ implementation to know as little as possible about
+the QML user interface implementation and the composition of the QML object tree.
+
+
+\section2 Embedding C++ objects into QML components
+
+When loading a QML scene into a C++ application, it can be useful to directly embed C++ data into
+the QML object. QDeclarativeContext enables this by exposing data to the context of a QML
+component, allowing data to be injected from C++ into QML.
+
+For example, here is a QML item that refers to a \c currentDateTime value that does not exist in
+the current scope:
+
+\snippet doc/src/snippets/declarative/qtbinding/context/MyItem.qml 0
+
+This \c currentDateTime value can be set directly by the C++ application that loads the QML
+component, using QDeclarativeContext::setContextProperty():
+
+\snippet doc/src/snippets/declarative/qtbinding/context/main.cpp 0
+
+Context properties can hold either QVariant or QObject* values. This means custom C++ objects can
+also be injected using this approach, and these objects can be modified and read directly in QML.
+Here, we modify the above example to embed a QObject instance instead of a QDateTime value, and the QML code
+invokes a method on the object instance:
+
+\table
+\row
+\o
+\snippet doc/src/snippets/declarative/qtbinding/context-advanced/applicationdata.h 0
+\codeline
+\snippet doc/src/snippets/declarative/qtbinding/context-advanced/main.cpp 0
+\o
+\snippet doc/src/snippets/declarative/qtbinding/context-advanced/MyItem.qml 0
+\endtable
+
+(Note that date/time values returned from C++ to QML can be formatted through
+\l{QML:Qt::formatDateTime}{Qt.formatDateTime()} and associated functions.)
+
+If the QML item needs to receive signals from the context property, it can connect to them using the
+\l Connections element. For example, if \c ApplicationData has a signal named \c
+dataChanged(), this signal can be connected to using an \c onDataChanged handler within
+a \l Connections object:
+
+\snippet doc/src/snippets/declarative/qtbinding/context-advanced/connections.qml 0
+
+Context properties can be useful for using C++ based data models in a QML view. See the
+\l {declarative/modelviews/stringlistmodel}{String ListModel},
+\l {declarative/modelviews/objectlistmodel}{Object ListModel} and
+\l {declarative/modelviews/abstractitemmodel}{AbstractItemModel} models for
+respective examples on using QStringListModel, QObjectList-based models and QAbstractItemModel
+in QML views.
+
+Also see the QDeclarativeContext documentation for more information.
+
+
+\section2 Defining new QML elements
+
+While new QML elements can be \l {Defining new Components}{defined in QML}, they can also be
+defined by C++ classes; in fact, many of the core \l {QML Elements} are implemented through
+C++ classes. When you create a QML object using one of these elements, you are simply creating an
+instance of a QObject-based C++ class and setting its properties.
+
+For example, here is an \c ImageViewer class with an \c image URL property:
+
+\snippet doc/src/snippets/declarative/qtbinding/newelements/imageviewer.h 0
+
+Aside from the fact that it inherits QDeclarativeItem, this is an ordinary class that could
+exist outside of QML. However, once it is registered with the QML engine using qmlRegisterType():
+
+\snippet doc/src/snippets/declarative/qtbinding/newelements/main.cpp register
+
+Then, any QML code loaded by your C++ application or \l{QDeclarativeExtensionPlugin}{plugin} can create and manipulate
+\c ImageViewer objects:
+
+\snippet doc/src/snippets/declarative/qtbinding/newelements/standalone.qml 0
+
+Note that custom C++ types do not have to inherit from QDeclarativeItem; this is only necessary if it is
+a displayable item. If the item is not displayable, it can simply inherit from QObject.
+
+For more information on defining new QML elements, see the \l {Tutorial: Writing QML extensions with C++}
+{Writing QML extensions with C++} tutorial and the \l {Extending QML in C++} reference
+documentation.
+
+
+
+\section1 Exchanging data between QML and C++
+
+QML and C++ objects can communicate with one another through signals, slots and property
+modifications. For a C++ object, any data that is exposed to Qt's \l{The Meta-Object System}{Meta-Object System}
+- that is, properties, signals, slots and Q_INVOKABLE methods - become available to QML. On
+the QML side, all QML object data is automatically made available to the meta-object system and can
+be accessed from C++.
+
+
+\section2 Calling functions
-QML components are instantiated in a QDeclarativeContext. A context allows the application to expose data
-to the QML component instance. A single QDeclarativeContext can be used to instantiate all the objects
-used by an application, or several QDeclarativeContext can be created for more fine grained control over
-the data exposed to each instance. If a context is not passed to the QDeclarativeComponent::create()
-method, the QDeclarativeEngine's \l {QDeclarativeEngine::rootContext()}{root context} is used. Data exposed through
-the root context is available to all object instances.
+QML functions can be called from C++ and vice-versa.
-\section1 Simple Data
+All QML functions are exposed to the meta-object system and can be called using
+QMetaObject::invokeMethod(). Here is a C++ application that uses this to call a QML function:
-To expose data to a QML component instance, applications set \l {QDeclarativeContext::setContextProperty()}
-{context properties} which are then accessible by name from QML \l {Property Binding}s and JavaScript.
-The following example shows how to expose a background color to a QML file through QDeclarativeView:
+\table
+\row
+\o \snippet doc/src/snippets/declarative/qtbinding/functions-qml/MyItem.qml 0
+\o \snippet doc/src/snippets/declarative/qtbinding/functions-qml/main.cpp 0
+\endtable
+
+Notice the Q_RETURN_ARG() and Q_ARG() arguments for QMetaObject::invokeMethod() must be specified as
+QVariant types, as this is the generic data type used for QML functions and return values.
+
+To call a C++ function from QML, the function must be either a Qt slot, or a function marked with
+the Q_INVOKABLE macro, to be available to QML. In the following example, the QML code invokes
+methods on the \c myObject object, which has been set using QDeclarativeContext::setContextProperty():
+
+\table
+\row
+\o
+\snippet doc/src/snippets/declarative/qtbinding/functions-cpp/MyItem.qml 0
+\o
+\snippet doc/src/snippets/declarative/qtbinding/functions-cpp/myclass.h 0
+\codeline
+\snippet doc/src/snippets/declarative/qtbinding/functions-cpp/main.cpp 0
+\endtable
+
+Note that QML does not support overloaded functions. If a C++ has more than one function with the
+same name, there is no guarantee which overloaded function will be called from QML.
+
+
+\section2 Receiving signals
+
+All QML signals are automatically available to C++, and can be connected to using QObject::connect()
+like any ordinary Qt C++ signal.
+
+Here is a QML component with a signal named \c qmlSignal. This signal is connected to a C++ object's
+slot using QObject::connect():
+
+\table
+\row
+\o
+\snippet doc/src/snippets/declarative/qtbinding/signals-qml/MyItem.qml 0
+\o
+\snippet doc/src/snippets/declarative/qtbinding/signals-qml/myclass.h 0
+\codeline
+\snippet doc/src/snippets/declarative/qtbinding/signals-qml/main.cpp 0
+\endtable
+
+To connect to Qt C++ signals from within QML, use a signal handler with the \c on<SignalName> syntax.
+If the C++ object is directly creatable from within QML (see \l {Defining new QML elements} above)
+then the signal handler can be defined within the object declaration. In the following example, the
+QML code creates a \c ImageViewer object, and the \c imageChanged and \c loadingError signals of the
+C++ object are connected to through \c onImagedChanged and \c onLoadingError signal handlers in QML:
\table
\row
\o
-\c {// main.cpp}
-\snippet doc/src/snippets/declarative/qtbinding/contextproperties/main.cpp 0
+
+\snippet doc/src/snippets/declarative/qtbinding/signals-cpp/imageviewer.h start
+\dots 4
+\snippet doc/src/snippets/declarative/qtbinding/signals-cpp/imageviewer.h end
\o
-\c {// main.qml}
-\snippet doc/src/snippets/declarative/qtbinding/contextproperties/main.qml 0
+\snippet doc/src/snippets/declarative/qtbinding/signals-cpp/standalone.qml 0
+\endtable
+
+(Note that if a signal has been declared as the NOTIFY signal for a property, QML allows it to be
+received with an \c on<Property>Changed handler even if the signal's name does not follow the \c
+<Property>Changed naming convention. In the above example, if the "imageChanged" signal was named
+"imageModified" instead, the \c onImageChanged signal handler would still be called.)
+
+If, however, the object with the signal is not created from within the QML code, and the QML item only has a
+reference to the created object - for example, if the object was set using
+QDeclarativeContext::setContextProperty() - then the \l Connections element can be used
+instead to create the signal handler:
+\table
+\row
+\o \snippet doc/src/snippets/declarative/qtbinding/signals-cpp/main.cpp connections
+\o \snippet doc/src/snippets/declarative/qtbinding/signals-cpp/MyItem.qml 0
\endtable
-Or, if you want \c main.cpp to create the component without showing it in a QDeclarativeView, you could create an instance of QDeclarativeContext using QDeclarativeEngine::rootContext() instead:
-\snippet doc/src/snippets/declarative/qtbinding/contextproperties/main.cpp 1
+\section2 Modifying properties
-Context properties work just like normal properties in QML bindings - if the \c backgroundColor
-context property in this example was changed to red, the component object instances would
-all be automatically updated. Note that it is the responsibility of the creator to delete any
-QDeclarativeContext it constructs. If the \c windowContext is no longer needed when
-the \c window component instantiation is destroyed, the \c windowContext must be destroyed
-explicitly. The simplest way to ensure this is to set \c window as \c windowContext's parent.
+Any properties declared in a QML object are automatically accessible from C++. Given a QML item
+like this:
-QDeclarativeContexts form a tree - each QDeclarativeContext except for the root context has a parent. Child
-QDeclarativeContexts effectively inherit the context properties present in their parents. This gives
-applications more freedom in partitioning the data exposed to different QML object instances.
-If a QDeclarativeContext sets a context property that is also set in one of its parents, the new context
-property shadows that in the parent. In The following example, the \c background context property
-in \c {Context 1} shadows the \c background context property in the root context.
+\snippet doc/src/snippets/declarative/qtbinding/properties-qml/MyItem.qml 0
-\image qml-context-tree.png
+The value of the \c someNumber property can be set and read using QDeclarativeProperty, or
+QObject::setProperty() and QObject::property():
-\section2 Structured Data
+\snippet doc/src/snippets/declarative/qtbinding/properties-qml/main.cpp 0
-Context properties can also be used to expose structured and writable data to QML objects. In
-addition to all the types already supported by QVariant, QObject derived types can be assigned to
-context properties. QObject context properties allow the data exposed to be more structured, and
-allow QML to set values.
+You should always use QObject::setProperty(), QDeclarativeProperty or QMetaProperty::write() to
+change a QML property value, to ensure the QML engine is made aware of the property change. For example,
+say you have a custom element \c PushButton with a \c buttonText property that internally reflects
+the value of a \c m_buttonText member variable. Modifying the member variable directly like this is
+not a good idea:
-The following example creates a \c CustomPalette object, and sets it as the \c palette context
-property.
+\badcode
+// BAD!
+QDeclarativeComponent component(engine, "MyButton.qml");
+PushButton *button = qobject_cast<PushButton*>(component.create());
+button->m_buttonText = "Click me";
+\endcode
-\snippet doc/src/snippets/declarative/qtbinding/custompalette/custompalette.h 0
+Since the value is changed directly, this bypasses Qt's \l{The Meta-Object System}{meta-object system}
+and the QML engine is not made aware of the property change. This means property bindings to
+\c buttonText would not be updated, and any \c onButtonTextChanged handlers would not be called.
-\snippet doc/src/snippets/declarative/qtbinding/custompalette/main.cpp 0
-The QML that follows references the palette object, and its properties, to set the appropriate
-background and text colors. When the window is clicked, the palette's text color is changed, and
-the window text will update accordingly.
+\target properties-cpp
-\snippet doc/src/snippets/declarative/qtbinding/custompalette/main.qml 0
+Any \l {The Property System}{Qt properties} - that is, those declared with the Q_PROPERTY()
+macro - are accessible from QML. Here is a modified version of the \l {Embedding C++ objects into
+QML components}{earlier example} on this page; here, the \c ApplicationData class has a \c backgroundColor
+property. This property can be written to and read from QML:
-To detect when a C++ property value - in this case the \c CustomPalette's \c text property -
-changes, the property must have a corresponding NOTIFY signal. The NOTIFY signal specifies a signal
-that is emitted whenever the property changes value. Implementers should take care to only emit the
-signal if the value \e changes to prevent loops from occurring. Accessing a property from a
-binding that does not have a NOTIFY signal will cause QML to issue a warning at runtime.
+\table
+\row
+\o \snippet doc/src/snippets/declarative/qtbinding/properties-cpp/applicationdata.h 0
+\o \snippet doc/src/snippets/declarative/qtbinding/properties-cpp/MyItem.qml 0
+\endtable
-\section2 Dynamic Structured Data
+Notice the \c backgroundColorChanged signal is declared as the NOTIFY signal for the
+\c backgroundColor property. If a Qt property does not have an associated NOTIFY signal,
+the property cannot be used for \l {Property Binding} in QML, as the QML engine would not be
+notified when the value changes. If you are using custom types in QML, make sure their
+properties have NOTIFY signals so that they can be used in property bindings.
-If an application is too dynamic to structure data as compile-time QObject types, dynamically
-structured data can be constructed at runtime using the QDeclarativePropertyMap class.
+See \l {Tutorial: Writing QML extensions with C++} for further details and examples
+on using Qt properties with QML.
-\section1 Calling C++ methods from QML
+\section1 Supported data types
-It is possible to call methods of QObject derived types by either exposing the
-methods as public slots, or by marking the methods Q_INVOKABLE.
+Any C++ data that is used from QML - whether as custom properties, or parameters for signals or
+functions - must be of a type that is recognizable by QML.
-The C++ methods can also have parameters and return values. QML has support for
-the following types:
+By default, QML recognizes the following data types:
\list
\o bool
@@ -163,102 +426,168 @@ the following types:
\o QSize, QSizeF
\o QRect, QRectF
\o QVariant
+\o QObject*
+\o Enumerations declared with Q_ENUMS()
\endlist
-This example toggles the "Stopwatch" object on/off when the MouseArea is clicked:
+To allow a custom C++ type to be created or used in QML, the C++ class must be registered as a QML
+type using qmlRegisterType(), as shown in the \l {Defining new QML elements} section above.
-\table
-\row
-\o
-\c {// main.cpp}
-\snippet doc/src/snippets/declarative/qtbinding/stopwatch/stopwatch.h 0
-\snippet doc/src/snippets/declarative/qtbinding/stopwatch/main.cpp 0
-\o
-\c {// main.qml}
-\snippet doc/src/snippets/declarative/qtbinding/stopwatch/main.qml 0
+\section2 Using enumerations of a custom type
-\endtable
+To use an enumeration from a custom C++ component, the enumeration must be declared with Q_ENUMS() to
+register it with Qt's meta object system. For example, the following C++ type has a \c Status enum:
-Note that in this particular example a better way to achieve the same result
-is to have a "running" property in \c main.qml. This leads to much nicer QML code:
+\snippet doc/src/snippets/declarative/qtbinding/enums/imageviewer.h start
+\snippet doc/src/snippets/declarative/qtbinding/enums/imageviewer.h end
+
+Providing the \c ImageViewer class has been registered using qmlRegisterType(), its \c Status enum can
+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().
+
+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.
+
+
+\section2 Automatic type conversion
+
+As a convenience, some basic types can be specified in QML using format strings to make it easier to
+pass simple values from QML to C++.
\table
+\header
+\o Type
+\o String format
+\o Example
\row
-\o
-\code
-// main.qml
-import QtQuick 1.0
-
-Rectangle {
- MouseArea {
- anchors.fill: parent
- onClicked: stopwatch.running = !stopwatch.running
- }
-}
-\endcode
+\o QColor
+\o Color name, "#RRGGBB", "#RRGGBBAA"
+\o "red", "#ff0000", "#ff000000"
+\row
+\o QDate
+\o "YYYY-MM-DD"
+\o "2010-05-31"
+\row
+\o QPoint
+\o "x,y"
+\o "10,20"
+\row
+\o QRect
+\o "x,y,WidthxHeight"
+\o "50,50,100x100"
+\row
+\o QSize
+\o "WidthxHeight"
+\o "100x200"
+\row
+\o QTime
+\o "hh:mm:ss"
+\o "14:22:55"
+\row
+\o QUrl
+\o URL string
+\o "http://www.example.com"
+\row
+\o QVector3D
+\o "x,y,z"
+\o "0,1,0"
+\row
+\o Enumeration value
+\o Enum value name
+\o "AlignRight"
\endtable
-Of course, it is also possible to call \l {Adding new methods}{functions declared in QML from C++}.
+(More details on these string formats and types can be found in the
+\l {QML Basic Types}{basic type documentation}.)
+
+These string formats can be used to set QML \c property values and pass arguments to C++
+functions. This is demonstrated by various examples on this page; in the above
+\l{#properties-cpp}{Qt properties example}, the \c ApplicationData class has a \c backgroundColor
+property of a QColor type, which is set from the QML code with the string "red" rather rather
+than an actual QColor object.
+
+If it is preferred to pass an explicitly-typed value rather than a string, the global
+\l{QmlGlobalQtObject}{Qt object} provides convenience functions for creating some of the object
+types listed above. For example, \l{QML:Qt::rgba()}{Qt.rgba()} creates a QColor value from four
+RGBA values. The QColor returned from this function could be used instead of a string to set
+a QColor-type property or to call a C++ function that requires a QColor parameter.
+
+
+\section1 Writing QML plugins
+
+The QtDeclarative 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.
+
+See the QDeclarativeExtensionPlugin documentation and \l {How to Create Qt Plugins} for more
+details.
+
+
+\section1 Managing resource files with the Qt resource system
+The \l {The Qt Resource System}{Qt resource system} allows resource files to be stored as
+binary files in an application executable. This can be useful when building a mixed
+QML/C++ application as it enables QML files (as well as other resources such as images
+and sound files) to be referred to through the resource system URI scheme rather than
+relative or absolute paths to filesystem resources. Note, however, that if you use the resource
+system, the application executable must be re-compiled whenever a QML source file is changed
+in order to update the resources in the package.
-\section1 Network Components
+To use the resource system in a mixed QML/C++ application:
-If the URL passed to QDeclarativeComponent is a network resource, or if the QML document references a
-network resource, the QDeclarativeComponent has to fetch the network data before it is able to create
-objects. In this case, the QDeclarativeComponent will have a \l {QDeclarativeComponent::Loading}{Loading}
-\l {QDeclarativeComponent::status()}{status}. An application will have to wait until the component
-is \l {QDeclarativeComponent::Ready}{Ready} before calling \l {QDeclarativeComponent::create()}.
+\list
+\o Create a \c .qrc \l {The Qt Resource System}{resource collection file} that lists resource
+ files in XML format
+\o From C++, load the main QML file as a resource using the \c :/ prefix or as a URL with the
+ \c qrc scheme
+\endlist
+
+Once this is done, all files specified by relative paths in QML will be loaded from
+the resource system instead. Use of the resource system is completely transparent to
+the QML layer; this means all QML code should refer to resource files using relative
+paths and should \e not use the \c qrc scheme. This scheme should only be used from
+C++ code for referring to resource files.
-The following example shows how to load a QML file from a network resource. After creating
-the QDeclarativeComponent, it tests whether the component is loading. If it is, it connects to the
-QDeclarativeComponent::statusChanged() signal and otherwise calls the \c {continueLoading()} method
-directly. This test is necessary, even for URLs that are known to be remote, just in case
-the component has been cached and is ready immediately.
+Here is a application packaged using the \l {The Qt Resource System}{Qt resource system}.
+The directory structure looks like this:
\code
-MyApplication::MyApplication()
-{
- // ...
- component = new QDeclarativeComponent(engine, QUrl("http://www.example.com/main.qml"));
- if (component->isLoading())
- QObject::connect(component, SIGNAL(statusChanged(QDeclarativeComponent::Status)),
- this, SLOT(continueLoading()));
- else
- continueLoading();
-}
-
-void MyApplication::continueLoading()
-{
- if (component->isError()) {
- qWarning() << component->errors();
- } else {
- QObject *myObject = component->create();
- }
-}
+project
+ |- example.qrc
+ |- main.qml
+ |- images
+ |- background.png
+ |- main.cpp
+ |- project.pro
\endcode
-\section1 Qt Resources
+The \c main.qml and \c background.png files will be packaged as resource files. This is
+done in the \c example.qrc resource collection file:
-QML content can be loaded from \l {The Qt Resource System} using the \e qrc: URL scheme.
-For example:
+\quotefile doc/src/snippets/declarative/qtbinding/resources/example.qrc
-\c [project/example.qrc]
-\quotefile doc/src/snippets/declarative/qtbinding/resources/example.qrc
+Since \c background.png is a resource file, \c main.qml can refer to it using the relative
+path specified in \c example.qrc:
+
+\snippet doc/src/snippets/declarative/qtbinding/resources/main.qml 0
-\c [project/project.pro]
-\quotefile doc/src/snippets/declarative/qtbinding/resources/resources.pro
+To allow QML to locate resource files correctly, the \c main.cpp loads the main QML
+file, \c main.qml, as a resource file using the \c qrc scheme:
-\c [project/main.cpp]
\snippet doc/src/snippets/declarative/qtbinding/resources/main.cpp 0
-\c [project/main.qml]
-\snippet doc/src/snippets/declarative/qtbinding/resources/main.qml 0
+Finally \c project.pro uses the RESOURCES variable to indicate that \c example.qrc should
+be used to build the application resources:
+
+\quotefile doc/src/snippets/declarative/qtbinding/resources/resources.pro
+
+See \l {The Qt Resource System} for more information.
-Note that the resource system cannot be accessed from QML directly. If the main QML file is
-loaded as a resource, all files specified as relative paths in QML will also be loaded from
-the resource system. Using the resource system is completely transparent to the QML layer.
-This also means that if the main QML file is not loaded as a resource then files in the resource
-system cannot be accessed from QML.
*/
+
diff --git a/doc/src/getting-started/installation.qdoc b/doc/src/getting-started/installation.qdoc
index 8f6f16a..a68310c 100644
--- a/doc/src/getting-started/installation.qdoc
+++ b/doc/src/getting-started/installation.qdoc
@@ -697,187 +697,224 @@ the Symbian platform from scratch, using Linux as the build host.
Qt for Symbian binaries can be downloaded directly so development of
applications using Qt for Symbian can start right away.
-\section1 Step 1: Setup the development environment
+\section1 Step 1: Setup the Development Environment
+
+Qt for the Symbian platform has some requirements on the development
+platform. The Symbian SDK for Linux as well as a cross compiler for the ARM
+processor used on Symbian devices should be present on the development
+machine.
+
+See \l{http://qt.gitorious.org/qt/pages/QtCreatorSymbianLinux} for more details.
+
- Qt for the Symbian platform has some requirements on the development
- platform. The Symbian SDK for Linux as well as a cross compiler for the ARM
- processor used on Symbian devices should be present on the development
- machine.
-
- See \l{http://qt.gitorious.org/qt/pages/QtCreatorSymbianLinux} for more details.
\section1 Step 2: Unpack the Archive
- Uncompress the \l{http://qt.nokia.com/downloads}{downloaded} source package into the
- directory you want Qt installed, e.g. \c{/home/user/qt/%VERSION%}.
+Uncompress the \l{http://qt.nokia.com/downloads}{downloaded} source package into the
+directory you want Qt installed, e.g. \c{/home/user/qt/%VERSION%}.
+
\section1 Step 3: Set the Environment Variables
- In order to build and use Qt, the \c PATH environment variable needs
- to be extended to fine Qt tools and also to find the Symbian platform tools:
+In order to build and use Qt, the \c PATH environment variable needs
+to be extended to fine Qt tools and also to find the Symbian platform tools:
- First you need to set the \c EPOCROOT environment variable to point to the
- location of your S60 SDK:
+First you need to set the \c EPOCROOT environment variable to point to the
+location of your S60 SDK:
\snippet doc/src/snippets/code/doc_src_installation.qdoc 36
- Then you can update the PATH variable;
+Then you can update the PATH variable;
+
+\snippet doc/src/snippets/code/doc_src_installation.qdoc 37
- \snippet doc/src/snippets/code/doc_src_installation.qdoc 37
\section1 Step 4: Configure Qt
- To configure Qt for the Symbian platform, do:
+To configure Qt for the Symbian platform, do:
\snippet doc/src/snippets/code/doc_src_installation.qdoc 38
- to build the libraries using RVCT or
+
+to build the libraries using RVCT or
\snippet doc/src/snippets/code/doc_src_installation.qdoc 39
- to build the libraries using GCCE.
+
+to build the libraries using GCCE.
+
\section1 Step 5: Build Qt
- To build Qt for the device, type:
+To build Qt for the device, type:
\snippet doc/src/snippets/code/doc_src_installation.qdoc 40
- Congratulations, Qt is now ready to use.
+Congratulations, Qt is now ready to use.
-\section1 Step 6: Building Qt packages for the Device
- To run any application or demo on a real device, you need to install it
- on the device. To do this you first have to create a a package for the
- device, containing the libraries:
+\section1 Step 6: Building Qt Packages for the Device
- \bold{Building a Qt package without a certificate}
+To run any application or demo on a real device, you need to install it
+on the device. To do this you first have to create a a package for the
+device, containing the libraries:
- If you have no certificate, build a self signed Qt:
+\bold{Building a Qt package without a certificate}
- \snippet doc/src/snippets/code/doc_src_installation.qdoc 41
+If you have no certificate, build a self signed Qt:
- The Qt libraries are built with "All -Tcb" capability, so that
- they can support all types of applications. However, these
- capabilities are automatically lowered if you make a self-signed
- package.
+\snippet doc/src/snippets/code/doc_src_installation.qdoc 41
- \bold{Building a Qt package with a Symbian developer certificate}
+The Qt libraries are built with "All -Tcb" capability, so that
+they can support all types of applications. However, these
+capabilities are automatically lowered if you make a self-signed
+package.
- If you have a symbian-signed developer certificate, specify the
- capabilities you can sign for, for example:
+\bold{Building a Qt package with a Symbian developer certificate}
- \snippet doc/src/snippets/code/doc_src_installation.qdoc 42
-
- \section2 Installing Qt packages to the device.
+If you have a Symbian-signed developer certificate, specify the
+capabilities you can sign for, for example:
- It is possible to install packages to a phone in Linux by putting
- the package on the phone memory card and then installing manually
- from the phone menu. However, this is tedious and will not work
- on phones without a memory card, so the method recommended by Qt is
- to use the App TRK tool.
+\snippet doc/src/snippets/code/doc_src_installation.qdoc 42
- \section3 Obtaining the App TRK package.
+\section2 Installing Qt Packages to the Device.
- Download the package from the following location.
+It is possible to install packages to a phone in Linux by putting
+the package on the phone memory card and then installing manually
+from the phone menu. However, this is tedious and will not work
+on phones without a memory card, so the method recommended by Qt is
+to use the App TRK tool.
- \list
- \o \l{http://tools.ext.nokia.com/trk/}{Application TRK}.
- Choose the correct installation package based on the
- S60 version of your device
- (\c{S60_<S60-version>_app_trk_<TRK-version>.sisx}).
- \endlist
+\section3 Obtaining the App TRK package.
- This package currently has to be installed by putting the
- package on the memory card and installing from the phone
- menu, or using a Windows PC for doing the install. However,
- the installation only has to be done once.
+Download the package from the following location.
- \section3 Configuring App TRK on the phone.
+\list
+\o \l{http://tools.ext.nokia.com/trk/}{Application TRK}.
+ Choose the correct installation package based on the
+ S60 version of your device
+ (\c{S60_<S60-version>_app_trk_<TRK-version>.sisx}).
+\endlist
- When App TRK is installed, connect the phone to the PC using
- the USB cable. Select "PCSuite" as connection type. Then run
- App TRK on the phone, and make sure that the connection type is
- USB. This can be changed under
- the \c Settings menu entry. If necessary, choose \c Connect
- from the menu.
+This package currently has to be installed by putting the
+package on the memory card and installing from the phone
+menu, or using a Windows PC for doing the install. However,
+the installation only has to be done once.
- \section3 Configuring the USB serial driver on the Linux system.
+\section3 Configuring App TRK on the Phone
- On Linux, phone should appear as the \c /dev/ttyUSB1 device,
- however if you are running an old kernel, you may need to
- force the USB module to be loaded correctly before the device
- will appear:
+When App TRK is installed, connect the phone to the PC using
+the USB cable. Select "PCSuite" as connection type. Then run
+App TRK on the phone, and make sure that the connection type is
+USB. This can be changed under the \c Settings menu entry.
+If necessary, choose \c Connect from the menu.
- \snippet doc/src/snippets/code/doc_src_installation.qdoc 43
+\section3 Configuring the USB Serial Driver on the Linux System
- Note the identifier on the line where your Symbian device
- appears. Then execute the following, using the first and
- second part of the identifier in place of \c XXX,
- respectively.
+On Linux, phone should appear as the \c /dev/ttyUSB1 device,
+however if you are running an old kernel, you may need to
+force the USB module to be loaded correctly before the device
+will appear:
- \snippet doc/src/snippets/code/doc_src_installation.qdoc 44
+\snippet doc/src/snippets/code/doc_src_installation.qdoc 43
- The \c rmmod step may fail if the module is not already
- loaded, but that is harmless.
+Note the identifier on the line where your Symbian device
+appears. Then execute the following, using the first and
+second part of the identifier in place of \c XXX,
+respectively.
- \section3 Building the \c runonphone tool.
+\snippet doc/src/snippets/code/doc_src_installation.qdoc 44
- Note that building the \c runonphone tool requires a separate
- installation of Qt for Linux. If there is a version of Qt
- installed by your distribution's package mechanism, that that
- should do fine. Some distributions separate the libraries from
- the development setup which includes qmake. Make sure you have
- both installed.
+The \c rmmod step may fail if the module is not already
+loaded, but that is harmless.
- First make sure that the \c qmake you use is taken from the
- Linux installation of Qt. The easiest way to make sure of this
- is to open a new shell and run the following command:
+\section3 Building the runonphone Tool.
- \snippet doc/src/snippets/code/doc_src_installation.qdoc 45
+Note that building the \c runonphone tool requires a separate
+installation of Qt for Linux. If there is a version of Qt
+installed by your distribution's package mechanism, that that
+should do fine. Some distributions separate the libraries from
+the development setup which includes \c qmake. Make sure you
+have both installed.
- \c qmake will tell you where it is installed.
+You will also need the \l{libusb} libraries and header files
+installed. Usually, installing a development package such as
+\c{libusb-dev} will ensure that you have all the necessary
+dependencies installed.
- Copy the \c{%QTDIR%/tools/runonphone} folder to a place outside
- of the Qt tree. Then go to the folder in a shell and build it:
+First, make sure that the \c qmake you use is taken from the
+Linux installation of Qt. The easiest way to make sure of this
+is to open a new shell and run the following command:
- \snippet doc/src/snippets/code/doc_src_installation.qdoc 46
+\snippet doc/src/snippets/code/doc_src_installation.qdoc 45
- Copy the resulting executable to a folder which is in your
- \c PATH environment variable.
+\c qmake will tell you where it is installed.
- \section3 Installing the built package onto the phone.
+Copy the \c{%QTDIR%/tools/runonphone} folder to a place outside
+of the Qt tree. Then go to the folder in a shell and build it:
- Return to the root of the Qt tree configured for Symbian. Then
- install the Qt libraries by running the following:
+\snippet doc/src/snippets/code/doc_src_installation.qdoc 46
- \snippet doc/src/snippets/code/doc_src_installation.qdoc 47
+Copy the resulting executable to a folder which is in your
+\c PATH environment variable.
- \note If the installation fails, please make sure that there is
- no previously installed version of Qt on the phone.
+\section3 Installing the Built Package onto the Phone
- Qt requires some dependent packages to be installed on the device,
- they are shipped in the Symbian SDK and can be installed using the
- runonphone tool as well.
- The packages can be found in the EPOCROOT at the following locations;
+\note Before starting, please make sure that there is no previously
+installed version of Qt on the phone.
- \snippet doc/src/snippets/code/doc_src_installation.qdoc 50
+Return to the root of the Qt tree configured for Symbian. Then
+install the Qt libraries by running the following:
-\section1 Running Qt demos
+\snippet doc/src/snippets/code/doc_src_installation.qdoc 47
- We've included a subset of the Qt demos in this package for you
- to try out. An excellent starting point is the "fluidlauncher"
- demo.
+You may need to supply the path of the serial device file using
+the \c{-p} option:
- Install and run the demo by using the following commands:
+\snippet doc/src/snippets/code/doc_src_installation.qdoc runonphone with device file path
- \snippet doc/src/snippets/code/doc_src_installation.qdoc 48
+If the installation fails, please make sure that there is
+no previously installed version of Qt on the phone.
- The same command can be used for other applications:
+Qt requires some dependent packages to be installed on the device,
+they are shipped in the Symbian SDK and can be installed using the
+runonphone tool as well.
+The packages can be found in the EPOCROOT at the following locations;
- \snippet doc/src/snippets/code/doc_src_installation.qdoc 49
+\snippet doc/src/snippets/code/doc_src_installation.qdoc 50
- For more information about building and running Qt programs on the
- Symbian platform, see \l{The Symbian platform - Introduction to Qt}.
+It is also possible to install packages onto the device using the
+\c runonphone build rule that \c qmake automatically generates for
+each Qt project. Options can be supplied to the \c runonphone tool
+that is invoked begind the scenes:
- We hope you will enjoy using Qt.
+\snippet doc/src/snippets/code/doc_src_installation.qdoc make runonphone with options
+
+If you are running \c runonphone or invoking the \c runonphone
+build rule often, it is possible to set the \c QT_RUN_ON_PHONE_OPTIONS
+environment variable with the options you normally use:
+
+\snippet doc/src/snippets/code/doc_src_installation.qdoc make runonphone with preset environment variable
+
+This makes installation of packages onto a device easier and less
+error-prone.
+
+
+\section1 Running Qt Demos
+
+We've included a subset of the Qt demos in this package for you
+to try out. An excellent starting point is the "fluidlauncher"
+demo.
+
+Install and run the demo by using the following commands:
+
+\snippet doc/src/snippets/code/doc_src_installation.qdoc 48
+
+The same command can be used for other applications:
+
+\snippet doc/src/snippets/code/doc_src_installation.qdoc 49
+
+For more information about building and running Qt programs on the
+Symbian platform, see \l{The Symbian platform - Introduction to Qt}.
+
+We hope you will enjoy using Qt.
*/
/*!
diff --git a/doc/src/platforms/platform-notes.qdoc b/doc/src/platforms/platform-notes.qdoc
index dbedc1d..9c5f3c8 100644
--- a/doc/src/platforms/platform-notes.qdoc
+++ b/doc/src/platforms/platform-notes.qdoc
@@ -739,6 +739,9 @@
\o \c AllFiles when \l{http://developer.symbian.org/wiki/index.php/Capabilities_%28Symbian_Signed%29/AllFiles_Capability}{accessing specific areas.}
\row \o QtNetwork
\o \c NetworkServices is basically always required for this module.
+ \o \c ReadUserData is required to include all the phone's SSL certificates in the system's default CA certificate list
+ (for example those added by the user or stored in the SIM card),
+ without this capability only the CA certs built into the phone are used.
\row \o QtMultiMedia
\o \c UserEnvironment if QAudioInput is used.
\endtable
diff --git a/doc/src/snippets/code/doc_src_installation.qdoc b/doc/src/snippets/code/doc_src_installation.qdoc
index 432d08f..bd23462 100644
--- a/doc/src/snippets/code/doc_src_installation.qdoc
+++ b/doc/src/snippets/code/doc_src_installation.qdoc
@@ -301,11 +301,24 @@ make
runonphone -s lib/Qt.sis
//! [47]
+//! [runonphone with device file path]
+runonphone -s lib/Qt.sis -p /dev/ttyUSB1
+//! [runonphone with device file path]
+
//! [48]
cd demos/embedded/fluidlauncher
runonphone -s fluidlauncher.sis fluidlauncher.exe
//! [48]
+//! [make runonphone with options]
+make runonphone "QT_RUN_ON_PHONE_OPTIONS=-p /dev/ttyUSB1"
+//! [make runonphone with options]
+
+//! [make runonphone with preset environment variable]
+export QT_RUN_ON_PHONE_OPTIONS="-p /dev/ttyUSB1"
+make runonphone
+//! [make runonphone with preset environment variable]
+
//! [49]
cd myapp
qmake
diff --git a/doc/src/snippets/declarative/qtbinding/context-advanced/MyItem.qml b/doc/src/snippets/declarative/qtbinding/context-advanced/MyItem.qml
new file mode 100644
index 0000000..607651a
--- /dev/null
+++ b/doc/src/snippets/declarative/qtbinding/context-advanced/MyItem.qml
@@ -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 documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+//![0]
+// MyItem.qml
+import QtQuick 1.0
+
+Text { text: applicationData.getCurrentDateTime() }
+//![0]
+
diff --git a/doc/src/snippets/declarative/qtbinding/context-advanced/applicationdata.h b/doc/src/snippets/declarative/qtbinding/context-advanced/applicationdata.h
new file mode 100644
index 0000000..930e381
--- /dev/null
+++ b/doc/src/snippets/declarative/qtbinding/context-advanced/applicationdata.h
@@ -0,0 +1,52 @@
+/****************************************************************************
+**
+** 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:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <QObject>
+#include <QDateTime>
+
+//![0]
+class ApplicationData : public QObject
+{
+ Q_OBJECT
+public:
+ Q_INVOKABLE QDateTime getCurrentDateTime() const {
+ return QDateTime::currentDateTime();
+ }
+};
+//![0]
diff --git a/doc/src/snippets/declarative/qtbinding/stopwatch/stopwatch.cpp b/doc/src/snippets/declarative/qtbinding/context-advanced/connections.qml
index 124422f..749bea3 100644
--- a/doc/src/snippets/declarative/qtbinding/stopwatch/stopwatch.cpp
+++ b/doc/src/snippets/declarative/qtbinding/context-advanced/connections.qml
@@ -37,26 +37,16 @@
** $QT_END_LICENSE$
**
****************************************************************************/
+import QtQuick 1.0
-#include "stopwatch.h"
+//![0]
+Text {
+ text: applicationData.getCurrentDateTime()
-Stopwatch::Stopwatch()
- : m_running(false)
-{
-}
-
-bool Stopwatch::isRunning() const
-{
- return m_running;
-}
-
-void Stopwatch::start()
-{
- m_running = true;
-}
-
-void Stopwatch::stop()
-{
- m_running = false;
+ Connections {
+ target: applicationData
+ onDataChanged: console.log("The application data changed!")
+ }
}
+//![0]
diff --git a/doc/src/snippets/declarative/qtbinding/context-advanced/context-advanced.pro b/doc/src/snippets/declarative/qtbinding/context-advanced/context-advanced.pro
new file mode 100644
index 0000000..188a9fb
--- /dev/null
+++ b/doc/src/snippets/declarative/qtbinding/context-advanced/context-advanced.pro
@@ -0,0 +1,3 @@
+QT += declarative
+SOURCES += main.cpp
+HEADERS += applicationdata.h
diff --git a/doc/src/snippets/declarative/qtbinding/custompalette/main.cpp b/doc/src/snippets/declarative/qtbinding/context-advanced/main.cpp
index 7481b75..b92215b 100644
--- a/doc/src/snippets/declarative/qtbinding/custompalette/main.cpp
+++ b/doc/src/snippets/declarative/qtbinding/context-advanced/main.cpp
@@ -37,22 +37,21 @@
** $QT_END_LICENSE$
**
****************************************************************************/
+#include <QtCore>
+#include <QtDeclarative>
-#include <QApplication>
-#include <QDeclarativeView>
-#include <QDeclarativeContext>
-
-#include "custompalette.h"
+#include "applicationdata.h"
//![0]
-int main(int argc, char *argv[])
-{
+int main(int argc, char *argv[]) {
QApplication app(argc, argv);
QDeclarativeView view;
- view.rootContext()->setContextProperty("palette", new CustomPalette);
- view.setSource(QUrl::fromLocalFile("main.qml"));
+ ApplicationData data;
+ view.rootContext()->setContextProperty("applicationData", &data);
+
+ view.setSource(QUrl::fromLocalFile("MyItem.qml"));
view.show();
return app.exec();
diff --git a/doc/src/snippets/declarative/qtbinding/context/MyItem.qml b/doc/src/snippets/declarative/qtbinding/context/MyItem.qml
new file mode 100644
index 0000000..faa42dc
--- /dev/null
+++ b/doc/src/snippets/declarative/qtbinding/context/MyItem.qml
@@ -0,0 +1,45 @@
+/****************************************************************************
+**
+** 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:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+//![0]
+// MyItem.qml
+import QtQuick 1.0
+
+Text { text: currentDateTime }
+//![0]
diff --git a/doc/src/snippets/declarative/qtbinding/contextproperties/contextproperties.pro b/doc/src/snippets/declarative/qtbinding/context/context.pro
index 68eeaf2..68eeaf2 100644
--- a/doc/src/snippets/declarative/qtbinding/contextproperties/contextproperties.pro
+++ b/doc/src/snippets/declarative/qtbinding/context/context.pro
diff --git a/doc/src/snippets/declarative/qtbinding/context/main.cpp b/doc/src/snippets/declarative/qtbinding/context/main.cpp
new file mode 100644
index 0000000..bbe9956
--- /dev/null
+++ b/doc/src/snippets/declarative/qtbinding/context/main.cpp
@@ -0,0 +1,56 @@
+/****************************************************************************
+**
+** 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:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <QtCore>
+#include <QtDeclarative>
+
+int main(int argc, char *argv[])
+{
+ QApplication app(argc, argv);
+
+//![0]
+QDeclarativeView view;
+view.rootContext()->setContextProperty("currentDateTime", QDateTime::currentDateTime());
+view.setSource(QUrl::fromLocalFile("MyItem.qml"));
+view.show();
+//![0]
+
+ return app.exec();
+}
+
diff --git a/doc/src/snippets/declarative/qtbinding/custompalette/custompalette.h b/doc/src/snippets/declarative/qtbinding/custompalette/custompalette.h
deleted file mode 100644
index 7e84bd4..0000000
--- a/doc/src/snippets/declarative/qtbinding/custompalette/custompalette.h
+++ /dev/null
@@ -1,79 +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 documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** You may use this file under the terms of the BSD license as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
-** the names of its contributors may be used to endorse or promote
-** products derived from this software without specific prior written
-** permission.
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include <QObject>
-#include <QColor>
-
-//![0]
-class CustomPalette : public QObject
-{
- Q_OBJECT
- Q_PROPERTY(QColor background READ background WRITE setBackground NOTIFY backgroundChanged)
- Q_PROPERTY(QColor text READ text WRITE setText NOTIFY textChanged)
-
-public:
- CustomPalette() : m_background(Qt::white), m_text(Qt::black) {}
-
- QColor background() const { return m_background; }
- void setBackground(const QColor &c) {
- if (c != m_background) {
- m_background = c;
- emit backgroundChanged();
- }
- }
-
- QColor text() const { return m_text; }
- void setText(const QColor &c) {
- if (c != m_text) {
- m_text = c;
- emit textChanged();
- }
- }
-
-signals:
- void textChanged();
- void backgroundChanged();
-
-private:
- QColor m_background;
- QColor m_text;
-};
-
-//![0]
diff --git a/doc/src/snippets/declarative/qtbinding/custompalette/custompalette.pro b/doc/src/snippets/declarative/qtbinding/enums/enums.pro
index e6af0d0..82bc123 100644
--- a/doc/src/snippets/declarative/qtbinding/custompalette/custompalette.pro
+++ b/doc/src/snippets/declarative/qtbinding/enums/enums.pro
@@ -1,3 +1,3 @@
QT += declarative
-HEADERS += custompalette.h
SOURCES += main.cpp
+HEADERS += imageviewer.h
diff --git a/doc/src/snippets/declarative/qtbinding/enums/imageviewer.h b/doc/src/snippets/declarative/qtbinding/enums/imageviewer.h
new file mode 100644
index 0000000..8aaddee
--- /dev/null
+++ b/doc/src/snippets/declarative/qtbinding/enums/imageviewer.h
@@ -0,0 +1,68 @@
+/****************************************************************************
+**
+** 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:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <QtCore>
+#include <QtDeclarative>
+
+//![start]
+class ImageViewer : public QDeclarativeItem
+{
+ Q_OBJECT
+ Q_ENUMS(Status)
+ Q_PROPERTY(Status status READ status NOTIFY statusChanged)
+public:
+ enum Status {
+ Ready,
+ Loading,
+ Error
+ };
+
+ Status status() const;
+//![start]
+
+ ImageViewer(QDeclarativeItem *parent = 0);
+
+public slots:
+ void emitSignals();
+
+//![end]
+signals:
+ void statusChanged();
+};
+//![end]
diff --git a/doc/src/snippets/declarative/qtbinding/enums/main.cpp b/doc/src/snippets/declarative/qtbinding/enums/main.cpp
new file mode 100644
index 0000000..9243f4b
--- /dev/null
+++ b/doc/src/snippets/declarative/qtbinding/enums/main.cpp
@@ -0,0 +1,73 @@
+/****************************************************************************
+**
+** 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:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <QtCore>
+#include <QtDeclarative>
+
+#include "imageviewer.h"
+
+ImageViewer::ImageViewer(QDeclarativeItem *parent)
+ : QDeclarativeItem(parent)
+{
+ QTimer::singleShot(0, this, SLOT(emitSignals()));
+}
+
+ImageViewer::Status ImageViewer::status() const
+{
+ return Ready;
+}
+
+void ImageViewer::emitSignals()
+{
+ emit statusChanged();
+}
+
+int main(int argc, char *argv[])
+{
+ QApplication app(argc, argv);
+
+ qmlRegisterType<ImageViewer>("MyLibrary", 1, 0, "ImageViewer");
+
+ QDeclarativeView view;
+ view.setSource(QUrl::fromLocalFile("standalone.qml"));
+ view.show();
+
+ return app.exec();
+}
+
diff --git a/doc/src/snippets/declarative/qtbinding/enums/standalone.qml b/doc/src/snippets/declarative/qtbinding/enums/standalone.qml
new file mode 100644
index 0000000..ad6c14c
--- /dev/null
+++ b/doc/src/snippets/declarative/qtbinding/enums/standalone.qml
@@ -0,0 +1,49 @@
+/****************************************************************************
+**
+** 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:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+import MyLibrary 1.0
+
+//![0]
+ImageViewer {
+ onStatusChanged: {
+ if (status == ImageViewer.Ready)
+ console.log("Image viewer is ready!")
+ }
+}
+//![0]
diff --git a/doc/src/snippets/declarative/qtbinding/stopwatch/main.qml b/doc/src/snippets/declarative/qtbinding/functions-cpp/MyItem.qml
index f894f71..8d8cd56 100644
--- a/doc/src/snippets/declarative/qtbinding/stopwatch/main.qml
+++ b/doc/src/snippets/declarative/qtbinding/functions-cpp/MyItem.qml
@@ -37,21 +37,18 @@
** $QT_END_LICENSE$
**
****************************************************************************/
-
//![0]
+// MyItem.qml
import QtQuick 1.0
-Rectangle {
- width: 300
- height: 300
+Item {
+ width: 100; height: 100
MouseArea {
anchors.fill: parent
onClicked: {
- if (stopwatch.isRunning())
- stopwatch.stop()
- else
- stopwatch.start();
+ myObject.cppMethod("Hello from QML")
+ myObject.cppSlot(12345)
}
}
}
diff --git a/doc/src/snippets/declarative/qtbinding/functions-cpp/functions-qml.pro b/doc/src/snippets/declarative/qtbinding/functions-cpp/functions-qml.pro
new file mode 100644
index 0000000..01066c1
--- /dev/null
+++ b/doc/src/snippets/declarative/qtbinding/functions-cpp/functions-qml.pro
@@ -0,0 +1,3 @@
+QT += declarative
+SOURCES += main.cpp
+HEADERS += myclass.h
diff --git a/doc/src/snippets/declarative/qtbinding/stopwatch/main.cpp b/doc/src/snippets/declarative/qtbinding/functions-cpp/main.cpp
index 12481da..91d6aec 100644
--- a/doc/src/snippets/declarative/qtbinding/stopwatch/main.cpp
+++ b/doc/src/snippets/declarative/qtbinding/functions-cpp/main.cpp
@@ -37,23 +37,20 @@
** $QT_END_LICENSE$
**
****************************************************************************/
+#include <QtCore>
+#include <QtDeclarative>
-#include "stopwatch.h"
-
-#include <QDeclarativeView>
-#include <QDeclarativeContext>
-#include <QApplication>
+#include "myclass.h"
//![0]
-int main(int argc, char *argv[])
-{
+int main(int argc, char *argv[]) {
QApplication app(argc, argv);
QDeclarativeView view;
- view.rootContext()->setContextProperty("stopwatch",
- new Stopwatch);
+ MyClass myClass;
+ view.rootContext()->setContextProperty("myObject", &myClass);
- view.setSource(QUrl::fromLocalFile("main.qml"));
+ view.setSource(QUrl::fromLocalFile("MyItem.qml"));
view.show();
return app.exec();
diff --git a/doc/src/snippets/declarative/qtbinding/custompalette/main.qml b/doc/src/snippets/declarative/qtbinding/functions-cpp/myclass.h
index a20d9e0..76c628e 100644
--- a/doc/src/snippets/declarative/qtbinding/custompalette/main.qml
+++ b/doc/src/snippets/declarative/qtbinding/functions-cpp/myclass.h
@@ -37,26 +37,21 @@
** $QT_END_LICENSE$
**
****************************************************************************/
+#include <QObject>
+#include <QDebug>
//![0]
-import QtQuick 1.0
-
-Rectangle {
- width: 240
- height: 320
- color: palette.background
-
- Text {
- anchors.centerIn: parent
- color: palette.text
- text: "Click me to change color!"
+class MyClass : public QObject
+{
+ Q_OBJECT
+public:
+ Q_INVOKABLE void cppMethod(const QString &msg) {
+ qDebug() << "Called the C++ method with" << msg;
}
- MouseArea {
- anchors.fill: parent
- onClicked: {
- palette.text = "blue";
- }
+public slots:
+ void cppSlot(int number) {
+ qDebug() << "Called the C++ slot with" << number;
}
-}
+};
//![0]
diff --git a/doc/src/snippets/declarative/qtbinding/contextproperties/main.qml b/doc/src/snippets/declarative/qtbinding/functions-qml/MyItem.qml
index 425346d..6161d6e 100644
--- a/doc/src/snippets/declarative/qtbinding/contextproperties/main.qml
+++ b/doc/src/snippets/declarative/qtbinding/functions-qml/MyItem.qml
@@ -37,19 +37,14 @@
** $QT_END_LICENSE$
**
****************************************************************************/
-
//![0]
+// MyItem.qml
import QtQuick 1.0
-Rectangle {
- width: 300
- height: 300
-
- color: backgroundColor
-
- Text {
- anchors.centerIn: parent
- text: "Hello Yellow World!"
+Item {
+ function myQmlFunction(msg) {
+ console.log("Got message:", msg)
+ return "some return value"
}
}
//![0]
diff --git a/doc/src/snippets/declarative/qtbinding/functions-qml/functions-qml.pro b/doc/src/snippets/declarative/qtbinding/functions-qml/functions-qml.pro
new file mode 100644
index 0000000..68eeaf2
--- /dev/null
+++ b/doc/src/snippets/declarative/qtbinding/functions-qml/functions-qml.pro
@@ -0,0 +1,2 @@
+QT += declarative
+SOURCES += main.cpp
diff --git a/doc/src/snippets/declarative/qtbinding/functions-qml/main.cpp b/doc/src/snippets/declarative/qtbinding/functions-qml/main.cpp
new file mode 100644
index 0000000..3e9e51e
--- /dev/null
+++ b/doc/src/snippets/declarative/qtbinding/functions-qml/main.cpp
@@ -0,0 +1,63 @@
+/****************************************************************************
+**
+** 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:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <QtCore>
+#include <QtDeclarative>
+
+int main(int argc, char *argv[])
+{
+ QApplication app(argc, argv);
+
+//![0]
+// main.cpp
+QDeclarativeEngine engine;
+QDeclarativeComponent component(&engine, "MyItem.qml");
+QObject *object = component.create();
+
+QVariant returnedValue;
+QVariant msg = "Hello from C++";
+QMetaObject::invokeMethod(object, "myQmlFunction",
+ Q_RETURN_ARG(QVariant, returnedValue),
+ Q_ARG(QVariant, msg));
+
+qDebug() << "QML function returned:" << returnedValue.toString();
+delete object;
+//![0]
+}
+
diff --git a/doc/src/snippets/declarative/qtbinding/loading/MyItem.qml b/doc/src/snippets/declarative/qtbinding/loading/MyItem.qml
new file mode 100644
index 0000000..40138f6
--- /dev/null
+++ b/doc/src/snippets/declarative/qtbinding/loading/MyItem.qml
@@ -0,0 +1,56 @@
+/****************************************************************************
+**
+** 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:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+//![start]
+import QtQuick 1.0
+
+Item {
+ width: 100; height: 100
+//![start]
+
+//![child]
+ Rectangle {
+ anchors.fill: parent
+ objectName: "rect"
+ }
+//![child]
+
+//![end]
+}
+//![end]
diff --git a/doc/src/snippets/declarative/qtbinding/loading/loading.pro b/doc/src/snippets/declarative/qtbinding/loading/loading.pro
new file mode 100644
index 0000000..68eeaf2
--- /dev/null
+++ b/doc/src/snippets/declarative/qtbinding/loading/loading.pro
@@ -0,0 +1,2 @@
+QT += declarative
+SOURCES += main.cpp
diff --git a/doc/src/snippets/declarative/qtbinding/loading/main.cpp b/doc/src/snippets/declarative/qtbinding/loading/main.cpp
new file mode 100644
index 0000000..bd400b0
--- /dev/null
+++ b/doc/src/snippets/declarative/qtbinding/loading/main.cpp
@@ -0,0 +1,90 @@
+/****************************************************************************
+**
+** 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:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <QtCore>
+#include <QtDeclarative>
+
+static void withComponent()
+{
+//![QDeclarativeComponent-a]
+// Using QDeclarativeComponent
+QDeclarativeEngine engine;
+QDeclarativeComponent component(&engine,
+ QUrl::fromLocalFile("MyItem.qml"));
+QObject *object = component.create();
+//![QDeclarativeComponent-a]
+}
+
+int main(int argc, char *argv[])
+{
+ QApplication app(argc, argv);
+
+//![QDeclarativeView]
+// Using QDeclarativeView
+QDeclarativeView view;
+view.setSource(QUrl::fromLocalFile("MyItem.qml"));
+view.show();
+QObject *object = view.rootObject();
+//![QDeclarativeView]
+
+//![properties]
+object->setProperty("width", 500);
+QDeclarativeProperty(object, "width").write(500);
+//![properties]
+
+//![cast]
+QDeclarativeItem *item = qobject_cast<QDeclarativeItem*>(object);
+item->setWidth(500);
+//![cast]
+
+//![findChild]
+QObject *rect = object->findChild<QObject*>("rect");
+if (rect)
+ rect->setProperty("color", "red");
+//![findChild]
+
+//![QDeclarativeComponent-b]
+delete object;
+//![QDeclarativeComponent-b]
+
+withComponent();
+
+ return app.exec();
+}
+
diff --git a/doc/src/snippets/declarative/qtbinding/newelements/imageviewer.h b/doc/src/snippets/declarative/qtbinding/newelements/imageviewer.h
new file mode 100644
index 0000000..fd9db5e
--- /dev/null
+++ b/doc/src/snippets/declarative/qtbinding/newelements/imageviewer.h
@@ -0,0 +1,56 @@
+/****************************************************************************
+**
+** 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:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <QtCore>
+#include <QtDeclarative>
+
+//![0]
+class ImageViewer : public QDeclarativeItem
+{
+ Q_OBJECT
+ Q_PROPERTY(QUrl image READ image WRITE setImage NOTIFY imageChanged)
+
+public:
+ void setImage(const QUrl &url);
+ QUrl image() const;
+
+signals:
+ void imageChanged();
+};
+//![0]
diff --git a/doc/src/snippets/declarative/qtbinding/newelements/main.cpp b/doc/src/snippets/declarative/qtbinding/newelements/main.cpp
new file mode 100644
index 0000000..57994ca
--- /dev/null
+++ b/doc/src/snippets/declarative/qtbinding/newelements/main.cpp
@@ -0,0 +1,62 @@
+/****************************************************************************
+**
+** 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:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <QtCore>
+#include <QtDeclarative>
+
+#include "imageviewer.h"
+
+void ImageViewer::setImage(const QUrl &url) {}
+QUrl ImageViewer::image() const { return QUrl(); }
+
+int main(int argc, char *argv[])
+{
+ QApplication app(argc, argv);
+
+ //![register]
+ qmlRegisterType<ImageViewer>("MyLibrary", 1, 0, "ImageViewer");
+ //![register]
+
+ QDeclarativeView view;
+ view.setSource(QUrl::fromLocalFile("standalone.qml"));
+ view.show();
+
+ return app.exec();
+}
+
diff --git a/doc/src/snippets/declarative/qtbinding/newelements/newelements.pro b/doc/src/snippets/declarative/qtbinding/newelements/newelements.pro
new file mode 100644
index 0000000..82bc123
--- /dev/null
+++ b/doc/src/snippets/declarative/qtbinding/newelements/newelements.pro
@@ -0,0 +1,3 @@
+QT += declarative
+SOURCES += main.cpp
+HEADERS += imageviewer.h
diff --git a/doc/src/snippets/declarative/qtbinding/newelements/standalone.qml b/doc/src/snippets/declarative/qtbinding/newelements/standalone.qml
new file mode 100644
index 0000000..7345f21
--- /dev/null
+++ b/doc/src/snippets/declarative/qtbinding/newelements/standalone.qml
@@ -0,0 +1,44 @@
+/****************************************************************************
+**
+** 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:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+//![0]
+import MyLibrary 1.0
+
+ImageViewer { image: "smile.png" }
+//![0]
diff --git a/doc/src/snippets/declarative/qtbinding/properties-cpp/MyItem.qml b/doc/src/snippets/declarative/qtbinding/properties-cpp/MyItem.qml
new file mode 100644
index 0000000..9db4b93
--- /dev/null
+++ b/doc/src/snippets/declarative/qtbinding/properties-cpp/MyItem.qml
@@ -0,0 +1,54 @@
+/****************************************************************************
+**
+** 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:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+//![0]
+// MyItem.qml
+import QtQuick 1.0
+
+Rectangle {
+ width: 100; height: 100
+ color: applicationData.backgroundColor
+
+ MouseArea {
+ anchors.fill: parent
+ onClicked: applicationData.backgroundColor = "red"
+ }
+}
+//![0]
+
diff --git a/doc/src/snippets/declarative/qtbinding/properties-cpp/applicationdata.h b/doc/src/snippets/declarative/qtbinding/properties-cpp/applicationdata.h
new file mode 100644
index 0000000..763a451
--- /dev/null
+++ b/doc/src/snippets/declarative/qtbinding/properties-cpp/applicationdata.h
@@ -0,0 +1,71 @@
+/****************************************************************************
+**
+** 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:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QObject>
+#include <QColor>
+
+//![0]
+class ApplicationData : public QObject
+{
+ Q_OBJECT
+ Q_PROPERTY(QColor backgroundColor
+ READ backgroundColor
+ WRITE setBackgroundColor
+ NOTIFY backgroundColorChanged)
+
+public:
+ void setBackgroundColor(const QColor &c) {
+ if (c != m_color) {
+ m_color = c;
+ emit backgroundColorChanged();
+ }
+ }
+
+ QColor backgroundColor() const {
+ return m_color;
+ }
+
+signals:
+ void backgroundColorChanged();
+
+private:
+ QColor m_color;
+};
+//![0]
diff --git a/doc/src/snippets/declarative/qtbinding/properties-cpp/main.cpp b/doc/src/snippets/declarative/qtbinding/properties-cpp/main.cpp
new file mode 100644
index 0000000..36b508d
--- /dev/null
+++ b/doc/src/snippets/declarative/qtbinding/properties-cpp/main.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 documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <QtCore>
+#include <QtDeclarative>
+
+#include "applicationdata.h"
+
+int main(int argc, char *argv[]) {
+ QApplication app(argc, argv);
+
+ QDeclarativeView view;
+
+ ApplicationData data;
+ view.rootContext()->setContextProperty("applicationData", &data);
+
+ view.setSource(QUrl::fromLocalFile("MyItem.qml"));
+ view.show();
+
+ return app.exec();
+}
+
diff --git a/doc/src/snippets/declarative/qtbinding/properties-cpp/properties-cpp.pro b/doc/src/snippets/declarative/qtbinding/properties-cpp/properties-cpp.pro
new file mode 100644
index 0000000..188a9fb
--- /dev/null
+++ b/doc/src/snippets/declarative/qtbinding/properties-cpp/properties-cpp.pro
@@ -0,0 +1,3 @@
+QT += declarative
+SOURCES += main.cpp
+HEADERS += applicationdata.h
diff --git a/doc/src/snippets/declarative/qtbinding/properties-qml/MyItem.qml b/doc/src/snippets/declarative/qtbinding/properties-qml/MyItem.qml
new file mode 100644
index 0000000..a43ded8
--- /dev/null
+++ b/doc/src/snippets/declarative/qtbinding/properties-qml/MyItem.qml
@@ -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 documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+//![0]
+// MyItem.qml
+import QtQuick 1.0
+
+Item {
+ property int someNumber: 100
+}
+//![0]
diff --git a/doc/src/snippets/declarative/qtbinding/properties-qml/main.cpp b/doc/src/snippets/declarative/qtbinding/properties-qml/main.cpp
new file mode 100644
index 0000000..d8daff8
--- /dev/null
+++ b/doc/src/snippets/declarative/qtbinding/properties-qml/main.cpp
@@ -0,0 +1,61 @@
+/****************************************************************************
+**
+** 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:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <QtCore>
+#include <QtDeclarative>
+
+int main(int argc, char *argv[])
+{
+ QApplication app(argc, argv);
+
+//![0]
+QDeclarativeEngine engine;
+QDeclarativeComponent component(&engine, "MyItem.qml");
+QObject *object = component.create();
+
+qDebug() << "Property value:" << QDeclarativeProperty::read(object, "someNumber").toInt();
+QDeclarativeProperty::write(object, "someNumber", 5000);
+
+qDebug() << "Property value:" << object->property("someNumber").toInt();
+object->setProperty("someNumber", 100);
+//![0]
+
+ return app.exec();
+}
+
diff --git a/doc/src/snippets/declarative/qtbinding/properties-qml/properties-qml.pro b/doc/src/snippets/declarative/qtbinding/properties-qml/properties-qml.pro
new file mode 100644
index 0000000..68eeaf2
--- /dev/null
+++ b/doc/src/snippets/declarative/qtbinding/properties-qml/properties-qml.pro
@@ -0,0 +1,2 @@
+QT += declarative
+SOURCES += main.cpp
diff --git a/doc/src/snippets/declarative/qtbinding/resources/main.qml b/doc/src/snippets/declarative/qtbinding/resources/main.qml
index 644d963..43029cf 100644
--- a/doc/src/snippets/declarative/qtbinding/resources/main.qml
+++ b/doc/src/snippets/declarative/qtbinding/resources/main.qml
@@ -39,9 +39,8 @@
****************************************************************************/
//![0]
+// main.qml
import QtQuick 1.0
-Image {
- source: "images/background.png"
-}
+Image { source: "images/background.png" }
//![0]
diff --git a/doc/src/snippets/declarative/qtbinding/signals-cpp/MyItem.qml b/doc/src/snippets/declarative/qtbinding/signals-cpp/MyItem.qml
new file mode 100644
index 0000000..d900830
--- /dev/null
+++ b/doc/src/snippets/declarative/qtbinding/signals-cpp/MyItem.qml
@@ -0,0 +1,50 @@
+/****************************************************************************
+**
+** 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:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+//![0]
+// MyItem.qml
+import QtQuick 1.0
+
+Item {
+ Connections {
+ target: imageViewer
+ onImageChanged: console.log("Image has changed!")
+ }
+}
+//![0]
diff --git a/doc/src/snippets/declarative/qtbinding/signals-cpp/imageviewer.h b/doc/src/snippets/declarative/qtbinding/signals-cpp/imageviewer.h
new file mode 100644
index 0000000..7288d11
--- /dev/null
+++ b/doc/src/snippets/declarative/qtbinding/signals-cpp/imageviewer.h
@@ -0,0 +1,64 @@
+/****************************************************************************
+**
+** 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:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <QtCore>
+#include <QtDeclarative>
+
+//![start]
+class ImageViewer : public QDeclarativeItem
+{
+ Q_OBJECT
+ Q_PROPERTY(QUrl image READ image WRITE setImage NOTIFY imageChanged)
+public:
+//![start]
+ ImageViewer(QDeclarativeItem *item = 0);
+
+ void setImage(const QUrl &url) {}
+ QUrl image() const { return QUrl(); }
+
+public slots:
+ void emitSignals();
+
+//![end]
+signals:
+ void imageChanged();
+ void loadingError(const QString &errorMsg);
+};
+//![end]
+
diff --git a/doc/src/snippets/declarative/qtbinding/contextproperties/main.cpp b/doc/src/snippets/declarative/qtbinding/signals-cpp/main.cpp
index 6887e8f..e5dd33c 100644
--- a/doc/src/snippets/declarative/qtbinding/contextproperties/main.cpp
+++ b/doc/src/snippets/declarative/qtbinding/signals-cpp/main.cpp
@@ -37,42 +37,45 @@
** $QT_END_LICENSE$
**
****************************************************************************/
+#include <QtCore>
+#include <QtDeclarative>
-#include <QDeclarativeComponent>
-#include <QDeclarativeEngine>
+#include "imageviewer.h"
-//![0]
-#include <QApplication>
-#include <QDeclarativeView>
-#include <QDeclarativeContext>
+
+ImageViewer::ImageViewer(QDeclarativeItem *item)
+ : QDeclarativeItem(item)
+{
+ QTimer::singleShot(0, this, SLOT(emitSignals()));
+}
+
+void ImageViewer::emitSignals()
+{
+ emit imageChanged();
+ emit loadingError("some error message");
+}
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
- QDeclarativeView view;
- QDeclarativeContext *context = view.rootContext();
- context->setContextProperty("backgroundColor",
- QColor(Qt::yellow));
+ qmlRegisterType<ImageViewer>("MyLibrary", 1, 0, "ImageViewer");
- view.setSource(QUrl::fromLocalFile("main.qml"));
- view.show();
+ QDeclarativeView standalone;
+ standalone.setSource(QUrl::fromLocalFile("standalone.qml"));
+ standalone.show();
- return app.exec();
-}
-//![0]
+//![connections]
+ImageViewer viewer;
-static void alternative()
-{
- // Alternatively, if we don't actually want to display main.qml:
-//![1]
- QDeclarativeEngine engine;
- QDeclarativeContext *windowContext = new QDeclarativeContext(engine.rootContext());
- windowContext->setContextProperty("backgroundColor", QColor(Qt::yellow));
+QDeclarativeView view;
+view.rootContext()->setContextProperty("imageViewer", &viewer);
- QDeclarativeComponent component(&engine, "main.qml");
- QObject *window = component.create(windowContext);
-//![1]
+view.setSource(QUrl::fromLocalFile("MyItem.qml"));
+view.show();
+//![connections]
+
+ return app.exec();
}
diff --git a/doc/src/snippets/declarative/qtbinding/signals-cpp/signals-cpp.pro b/doc/src/snippets/declarative/qtbinding/signals-cpp/signals-cpp.pro
new file mode 100644
index 0000000..9aa8702
--- /dev/null
+++ b/doc/src/snippets/declarative/qtbinding/signals-cpp/signals-cpp.pro
@@ -0,0 +1,3 @@
+QT += declarative
+SOURCES += main.cpp
+HEADERS += "imageviewer.h"
diff --git a/doc/src/snippets/declarative/qtbinding/signals-cpp/standalone.qml b/doc/src/snippets/declarative/qtbinding/signals-cpp/standalone.qml
new file mode 100644
index 0000000..4027b19
--- /dev/null
+++ b/doc/src/snippets/declarative/qtbinding/signals-cpp/standalone.qml
@@ -0,0 +1,48 @@
+/****************************************************************************
+**
+** 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:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+import MyLibrary 1.0
+
+//![0]
+ImageViewer {
+ onImageChanged: console.log("Image changed!")
+ onLoadingError: console.log("Image failed to load:", errorMsg)
+}
+//![0]
+
diff --git a/doc/src/snippets/declarative/qtbinding/signals-qml/MyItem.qml b/doc/src/snippets/declarative/qtbinding/signals-qml/MyItem.qml
new file mode 100644
index 0000000..e4b6ced
--- /dev/null
+++ b/doc/src/snippets/declarative/qtbinding/signals-qml/MyItem.qml
@@ -0,0 +1,55 @@
+/****************************************************************************
+**
+** 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:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+//![0]
+// MyItem.qml
+import QtQuick 1.0
+
+Item {
+ id: item
+ width: 100; height: 100
+
+ signal qmlSignal(string msg)
+
+ MouseArea {
+ anchors.fill: parent
+ onClicked: item.qmlSignal("Hello from QML")
+ }
+}
+//![0]
diff --git a/doc/src/snippets/declarative/qtbinding/signals-qml/main.cpp b/doc/src/snippets/declarative/qtbinding/signals-qml/main.cpp
new file mode 100644
index 0000000..f1d03c4
--- /dev/null
+++ b/doc/src/snippets/declarative/qtbinding/signals-qml/main.cpp
@@ -0,0 +1,59 @@
+/****************************************************************************
+**
+** 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:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <QtCore>
+#include <QtDeclarative>
+
+//![0]
+int main(int argc, char *argv[]) {
+ QApplication app(argc, argv);
+
+ QDeclarativeView view(QUrl::fromLocalFile("MyItem.qml"));
+ QObject *item = view.rootObject();
+
+ MyClass myClass;
+ QObject::connect(item, SIGNAL(qmlSignal(QString)),
+ &myClass, SLOT(cppSlot(QString)));
+
+ view.show();
+ return app.exec();
+}
+//![0]
+
+#include "moc_main.cpp"
diff --git a/doc/src/snippets/declarative/qtbinding/stopwatch/stopwatch.h b/doc/src/snippets/declarative/qtbinding/signals-qml/myclass.h
index fd65916..c326a54 100644
--- a/doc/src/snippets/declarative/qtbinding/stopwatch/stopwatch.h
+++ b/doc/src/snippets/declarative/qtbinding/signals-qml/myclass.h
@@ -37,25 +37,15 @@
** $QT_END_LICENSE$
**
****************************************************************************/
-
#include <QObject>
-
+#include <QDebug>
//![0]
-class Stopwatch : public QObject
+class MyClass : public QObject
{
Q_OBJECT
-public:
- Stopwatch();
-
- Q_INVOKABLE bool isRunning() const;
-
public slots:
- void start();
- void stop();
-
-private:
- bool m_running;
+ void cppSlot(const QString &msg) {
+ qDebug() << "Called the C++ slot with message:" << msg;
+ }
};
-
//![0]
-
diff --git a/doc/src/snippets/declarative/qtbinding/signals-qml/signals-qml.pro b/doc/src/snippets/declarative/qtbinding/signals-qml/signals-qml.pro
new file mode 100644
index 0000000..01066c1
--- /dev/null
+++ b/doc/src/snippets/declarative/qtbinding/signals-qml/signals-qml.pro
@@ -0,0 +1,3 @@
+QT += declarative
+SOURCES += main.cpp
+HEADERS += myclass.h
diff --git a/doc/src/snippets/declarative/qtbinding/stopwatch/stopwatch.pro b/doc/src/snippets/declarative/qtbinding/stopwatch/stopwatch.pro
deleted file mode 100644
index d803e6a..0000000
--- a/doc/src/snippets/declarative/qtbinding/stopwatch/stopwatch.pro
+++ /dev/null
@@ -1,3 +0,0 @@
-QT += declarative
-HEADERS += stopwatch.h
-SOURCES += main.cpp stopwatch.cpp
diff --git a/examples/declarative/cppextensions/plugins/README b/examples/declarative/cppextensions/plugins/README
index fe519f8..95e0eea 100644
--- a/examples/declarative/cppextensions/plugins/README
+++ b/examples/declarative/cppextensions/plugins/README
@@ -5,5 +5,5 @@ by a C++ plugin (providing the "Time" type), and by QML files (providing the
To run:
make install
- qml -I . plugins.qml
+ qmlviewer -I . plugins.qml
diff --git a/examples/declarative/modelviews/listview/highlightranges.qml b/examples/declarative/modelviews/listview/highlightranges.qml
index 2716ee5..58d37a3 100644
--- a/examples/declarative/modelviews/listview/highlightranges.qml
+++ b/examples/declarative/modelviews/listview/highlightranges.qml
@@ -42,15 +42,14 @@ import QtQuick 1.0
import "content"
Rectangle {
+ id: root
+ property int current: 0
width: 600; height: 300
// This example shows the same model in three different ListView items,
// with different highlight ranges. The highlight ranges are set by the
// preferredHighlightBegin and preferredHighlightEnd properties in ListView.
//
- // The second and third ListViews set their currentIndex to be the
- // same as the first. The first ListView is given keyboard focus.
- //
// The first ListView does not set a highlight range, so its currentItem
// can move freely within the visible area. If it moves outside the
// visible area, the view is automatically scrolled to keep the current
@@ -66,9 +65,10 @@ Rectangle {
// forces the current item to change when the view is flicked,
// since the highlight is unable to move.
//
- // Note that the first ListView sets its currentIndex to be equal to
- // the third ListView's currentIndex. By flicking the third ListView with
- // the mouse, the current index of the first ListView will be changed.
+ // All ListViews bind their currentIndex to the root.current property.
+ // The first ListView sets root.current whenever its currentIndex changes
+ // due to keyboard interaction.
+ // Flicking the third ListView with the mouse also changes root.current.
ListView {
id: list1
@@ -77,7 +77,8 @@ Rectangle {
delegate: petDelegate
highlight: Rectangle { color: "lightsteelblue" }
- currentIndex: list3.currentIndex
+ currentIndex: root.current
+ onCurrentIndexChanged: root.current = currentIndex
focus: true
}
@@ -89,7 +90,7 @@ Rectangle {
delegate: petDelegate
highlight: Rectangle { color: "yellow" }
- currentIndex: list1.currentIndex
+ currentIndex: root.current
preferredHighlightBegin: 80; preferredHighlightEnd: 220
highlightRangeMode: ListView.ApplyRange
}
@@ -102,7 +103,8 @@ Rectangle {
delegate: petDelegate
highlight: Rectangle { color: "yellow" }
- currentIndex: list1.currentIndex
+ currentIndex: root.current
+ onCurrentIndexChanged: root.current = currentIndex
preferredHighlightBegin: 125; preferredHighlightEnd: 125
highlightRangeMode: ListView.StrictlyEnforceRange
}
diff --git a/examples/webkit/imageanalyzer/imageanalyzer.h b/examples/webkit/imageanalyzer/imageanalyzer.h
index 1bb25dc..5a96909 100644
--- a/examples/webkit/imageanalyzer/imageanalyzer.h
+++ b/examples/webkit/imageanalyzer/imageanalyzer.h
@@ -38,15 +38,17 @@
**
****************************************************************************/
-
#ifndef IMAGEANALYZER_H
#define IMAGEANALYZER_H
+
#include <QFutureWatcher>
#include <QtGui>
+QT_BEGIN_NAMESPACE
class QNetworkAccessManager;
class QNetworkReply;
class QNetworkDiskCache;
+QT_END_NAMESPACE
//! [ ImageAnalyzer - public interface ]
class ImageAnalyzer : public QObject
diff --git a/examples/webkit/imageanalyzer/mainwindow.h b/examples/webkit/imageanalyzer/mainwindow.h
index 076e586..3c943dc 100644
--- a/examples/webkit/imageanalyzer/mainwindow.h
+++ b/examples/webkit/imageanalyzer/mainwindow.h
@@ -45,7 +45,9 @@
#include <QWebView>
class ImageAnalyzer;
+QT_BEGIN_NAMESPACE
class QNetworkDiskCache;
+QT_END_NAMESPACE
class MainWin : public QWebView
{
diff --git a/mkspecs/common/symbian/symbian.conf b/mkspecs/common/symbian/symbian.conf
index dc18db6..4d0320d 100644
--- a/mkspecs/common/symbian/symbian.conf
+++ b/mkspecs/common/symbian/symbian.conf
@@ -127,6 +127,8 @@ QT_ARCH = symbian
load(qt_config)
QMAKE_LIBS_QT_ENTRY = -lqtmain$${QT_LIBINFIX}.lib
+QMAKE_LIBS_NO_QT_ENTRY = -llibcrt0.lib
+QMAKE_LIBS_NO_QT_ENTRY_GCCE = -llibcrt0_gcce.lib
# These directories must match what configure uses for QT_INSTALL_PLUGINS and QT_INSTALL_IMPORTS
QT_PLUGINS_BASE_DIR = /resource/qt$${QT_LIBINFIX}/plugins
diff --git a/mkspecs/features/symbian/application_icon.prf b/mkspecs/features/symbian/application_icon.prf
index f43ec3d..f50e944 100644
--- a/mkspecs/features/symbian/application_icon.prf
+++ b/mkspecs/features/symbian/application_icon.prf
@@ -7,7 +7,8 @@ contains(CONFIG, no_icon) {
symbian:RSS_RULES += "hidden = KAppIsHidden;"
CONFIG -= no_icon
}
-}
+}
+
!contains(CONFIG, no_icon) {
baseTarget = $$symbianRemoveSpecialCharacters($$basename(TARGET))
@@ -15,10 +16,12 @@ contains(CONFIG, no_icon) {
resourceZDir = $$EPOCROOT$$HW_ZDIR$$APP_RESOURCE_DIR
regZDir = $$EPOCROOT$$HW_ZDIR$$REG_RESOURCE_IMPORT_DIR
} else {
- isEmpty(DESTDIR) {
- resourceZDir = .
- } else {
+ contains(DESTDIR, "/.*") {
resourceZDir = $$DESTDIR
+ } else:isEmpty(DESTDIR) {
+ resourceZDir = $$OUT_PWD
+ } else {
+ resourceZDir = $$OUT_PWD/$$DESTDIR
}
regZDir = $$resourceZDir
}
@@ -68,6 +71,7 @@ contains(CONFIG, no_icon) {
}
# Rules to use generated MIF file from symbian resources
RSS_RULES.number_of_icons = $$size(ICON_backslashed)
+
RSS_RULES.icon_file = $$APP_RESOURCE_DIR/$${baseTarget}.mif
default_resource_deployment.files += $$resourceZDir/$${baseTarget}.mif
diff --git a/mkspecs/features/symbian/default_post.prf b/mkspecs/features/symbian/default_post.prf
index 32ba798..d9ff03d 100644
--- a/mkspecs/features/symbian/default_post.prf
+++ b/mkspecs/features/symbian/default_post.prf
@@ -3,13 +3,21 @@ load(default_post)
contains(TEMPLATE, ".*app") {
contains(CONFIG, stdbinary) {
QMAKE_LIBS +=
- } else {
+ } else:contains(CONFIG,qt) {
QMAKE_LIBS += $$QMAKE_LIBS_QT_ENTRY
+ } else {
+ QMAKE_LIBS += $$QMAKE_LIBS_NO_QT_ENTRY
+ }
+
+ contains(DESTDIR, "/.*") {
+ default_bin_deployment.sources += $$DESTDIR/$$symbianRemoveSpecialCharacters($$basename(TARGET)).exe
+ } else:isEmpty(DESTDIR) {
+ default_bin_deployment.sources += $$OUT_PWD/$$symbianRemoveSpecialCharacters($$basename(TARGET)).exe
+ } else {
+ default_bin_deployment.sources += $$OUT_PWD/$$DESTDIR/$$symbianRemoveSpecialCharacters($$basename(TARGET)).exe
}
-
- default_bin_deployment.files += $$symbianRemoveSpecialCharacters($$basename(TARGET)).exe
default_bin_deployment.path += /sys/bin
-
+
load(application_icon.prf)
}
contains(TEMPLATE, lib): {
diff --git a/mkspecs/features/symbian/qt_config.prf b/mkspecs/features/symbian/qt_config.prf
index 2f446dc..82c1862 100644
--- a/mkspecs/features/symbian/qt_config.prf
+++ b/mkspecs/features/symbian/qt_config.prf
@@ -3,7 +3,7 @@ load(qt_config)
!contains(QMAKE_HOST.os, "Windows") {
# Test for the existence of lower cased headers, a sign of using Gnupoc.
# Note that the qmake "exists" test won't do because it is case insensitive.
- system("test -f $${EPOCROOT}/epoc32/include/akndoc.h") {
+ system("test -f $${EPOCROOT}epoc32/include/akndoc.h") {
CONFIG += is_using_gnupoc
}
}
diff --git a/mkspecs/features/symbian/symbian_building.prf b/mkspecs/features/symbian/symbian_building.prf
index 8236884..9288583 100644
--- a/mkspecs/features/symbian/symbian_building.prf
+++ b/mkspecs/features/symbian/symbian_building.prf
@@ -198,16 +198,29 @@ contains(TEMPLATE, app):!contains(QMAKE_LINK, "^@:.*") {
symbian-armcc: {
QMAKE_LIBS += usrt2_2.lib dfpaeabi.dso dfprvct2_2.dso drtaeabi.dso scppnwdl.dso drtrvct2_2.dso h_t__uf.l\\(switch8.o\\)
QMAKE_LIBS += -leexe.lib\\(uc_exe_.o\\)
- QMAKE_LIBS -= $$QMAKE_LIBS_QT_ENTRY
- QMAKE_LIBS += $$QMAKE_LIBS_QT_ENTRY
+ contains(CONFIG, "qt") {
+ QMAKE_LIBS -= $$QMAKE_LIBS_QT_ENTRY
+ QMAKE_LIBS += $$QMAKE_LIBS_QT_ENTRY
+ } else {
+ QMAKE_LIBS -= $$QMAKE_LIBS_NO_QT_ENTRY
+ QMAKE_LIBS += $$QMAKE_LIBS_NO_QT_ENTRY
+ }
} else :symbian-gcce {
# notice that we can't merge these as ordering of arguments is important.
QMAKE_LIBS += \
-l:eexe.lib \
-l:usrt2_2.lib
- modified_entry = $$replace(QMAKE_LIBS_QT_ENTRY, "^-l", "-l:")
- QMAKE_LIBS -= $$modified_entry
- QMAKE_LIBS += $$modified_entry
+ contains(CONFIG, "qt") {
+ modified_entry = $$replace(QMAKE_LIBS_QT_ENTRY, "^-l", "-l:")
+ QMAKE_LIBS -= $$modified_entry
+ QMAKE_LIBS += $$modified_entry
+ } else {
+ modified_entry = $$replace(QMAKE_LIBS_NO_QT_ENTRY, "^-l", "-l:")
+ QMAKE_LIBS -= $$modified_entry
+ modified_entry = $$replace(QMAKE_LIBS_NO_QT_ENTRY_GCCE, "^-l", "-l:")
+ QMAKE_LIBS -= $$modified_entry
+ QMAKE_LIBS += $$modified_entry
+ }
QMAKE_LIBS += \
-l:dfpaeabi.dso \
-l:drtaeabi.dso \
diff --git a/mkspecs/symbian-gcce/qmake.conf b/mkspecs/symbian-gcce/qmake.conf
index 02ad626..a31e6e4 100644
--- a/mkspecs/symbian-gcce/qmake.conf
+++ b/mkspecs/symbian-gcce/qmake.conf
@@ -51,26 +51,25 @@ QMAKE_LFLAGS_SONAME =
QMAKE_LFLAGS_RPATH = --rpath=
DEFINES += __GCCE__ \
- UNICODE \
- _STLP_NO_EXCEPTION_HEADER
+ UNICODE
QMAKE_LFLAGS_APP += --entry=_E32Startup -u _E32Startup
QMAKE_LFLAGS_SHLIB += -shared --default-symver --entry _E32Dll
QMAKE_LFLAGS_PLUGIN += $$QMAKE_LFLAGS_SHLIB
-gcceExtraFlags = --include=${EPOCROOT}/epoc32/include/gcce/gcce.h -march=armv5t -mapcs -mthumb-interwork -nostdinc -c -msoft-float -T script
+gcceExtraFlags = --include=$${EPOCROOT}epoc32/include/gcce/gcce.h -march=armv5t -mapcs -mthumb-interwork -nostdinc -c -msoft-float -T script
QMAKE_CFLAGS += $${gcceExtraFlags}
QMAKE_CXXFLAGS += $${gcceExtraFlags} -x c++ -fexceptions -fno-unit-at-a-time -fvisibility-inlines-hidden
#If we are not going to link to Qt or qtmain.lib, we need to include this at least once.
isEmpty(QT):contains(TEMPLATE, app) {
- QMAKE_CXXFLAGS += --include=${EPOCROOT}/epoc32/include/stdapis/staticlibinit_gcce.h
+ QMAKE_CXXFLAGS += --include=$${EPOCROOT}epoc32/include/stdapis/staticlibinit_gcce.h
}
QMAKE_LFLAGS += --target1-abs \
--no-undefined \
--nostdlib
-QMAKE_LIBDIR += ${EPOCROOT}/epoc32/release/armv5/udeb/
+QMAKE_LIBDIR += $${EPOCROOT}epoc32/release/armv5/udeb/
# g++ knows the path to the gcc-shipped-libs, ld doesn't. So cache the full path in the generate Makefile
QMAKE_GCC_SEARCH_DIRS =$$system($$QMAKE_CXX -print-search-dirs)
@@ -84,13 +83,11 @@ for(line, QMAKE_GCC_SEARCH_DIRS) {
}
}
-QMAKE_LIBDIR += $${EPOCROOT}/epoc32/release/armv5/lib
+QMAKE_LIBDIR += $${EPOCROOT}epoc32/release/armv5/lib
-INCLUDEPATH = ${EPOCROOT}/epoc32/include/ \
- $${EPOCROOT}/epoc32/include/variant \
- $${EPOCROOT}/epoc32/include/stdapis \
- $${EPOCROOT}/epoc32/include/gcce \
- ${EPOCROOT}/epoc32/include/stdapis/sys \
- ${EPOCROOT}/epoc32/include/stdapis/stlport \
+INCLUDEPATH = $${EPOCROOT}epoc32/include/ \
+ $${EPOCROOT}epoc32/include/variant \
+ $${EPOCROOT}epoc32/include/stdapis \
+ $${EPOCROOT}epoc32/include/gcce \
$$INCLUDEPATH
diff --git a/qmake/generators/symbian/symbiancommon.cpp b/qmake/generators/symbian/symbiancommon.cpp
index 0938b58..9d4f27e 100644
--- a/qmake/generators/symbian/symbiancommon.cpp
+++ b/qmake/generators/symbian/symbiancommon.cpp
@@ -699,7 +699,7 @@ void SymbianCommonGenerator::readRssRules(QString &numberOfIcons,
newValues << itemList.join("\n");
}
}
- // Verify thet there is exactly one value in RSS_TAG_NBROFICONS
+ // Verify that there is exactly one value in RSS_TAG_NBROFICONS
if (newKey == RSS_TAG_NBROFICONS) {
if (newValues.count() == 1) {
numberOfIcons = newValues[0];
@@ -708,7 +708,7 @@ void SymbianCommonGenerator::readRssRules(QString &numberOfIcons,
RSS_RULES_BASE, RSS_TAG_NBROFICONS);
continue;
}
- // Verify thet there is exactly one value in RSS_TAG_ICONFILE
+ // Verify that there is exactly one value in RSS_TAG_ICONFILE
} else if (newKey == RSS_TAG_ICONFILE) {
if (newValues.count() == 1) {
iconFile = newValues[0];
diff --git a/src/3rdparty/harfbuzz/src/harfbuzz-indic.cpp b/src/3rdparty/harfbuzz/src/harfbuzz-indic.cpp
index 817fb0d..4a618da 100644
--- a/src/3rdparty/harfbuzz/src/harfbuzz-indic.cpp
+++ b/src/3rdparty/harfbuzz/src/harfbuzz-indic.cpp
@@ -833,7 +833,7 @@ static const unsigned char indicPosition[0xe00-0x900] = {
None, None, None, None,
None, None, None, Post,
- Post, None, Below, None,
+ Pre, None, Below, None,
None, Post, None, None,
None, None, None, None,
None, None, Post, Post,
diff --git a/src/corelib/animation/qabstractanimation.cpp b/src/corelib/animation/qabstractanimation.cpp
index 641b42b..9add36e 100644
--- a/src/corelib/animation/qabstractanimation.cpp
+++ b/src/corelib/animation/qabstractanimation.cpp
@@ -166,11 +166,12 @@ Q_GLOBAL_STATIC(QThreadStorage<QUnifiedTimer *>, unifiedTimer)
#endif
QUnifiedTimer::QUnifiedTimer() :
- QObject(), lastTick(0), timingInterval(DEFAULT_TIMER_INTERVAL),
+ QObject(), defaultDriver(this), lastTick(0), timingInterval(DEFAULT_TIMER_INTERVAL),
currentAnimationIdx(0), consistentTiming(false), slowMode(false),
slowdownFactor(5.0f), isPauseTimerActive(false), runningLeafAnimations(0)
{
time.invalidate();
+ driver = &defaultDriver;
}
@@ -247,14 +248,27 @@ void QUnifiedTimer::restartAnimationTimer()
qDebug() << runningPauseAnimations;
qDebug() << closestPauseAnimationTimeToFinish();
}
+ driver->stop();
animationTimer.start(closestTimeToFinish, this);
isPauseTimerActive = true;
- } else if (!animationTimer.isActive() || isPauseTimerActive) {
- animationTimer.start(timingInterval, this);
+ } else if (!driver->isRunning() || isPauseTimerActive) {
+ driver->start();
isPauseTimerActive = false;
}
}
+void QUnifiedTimer::setTimingInterval(int interval)
+{
+ timingInterval = interval;
+
+ if (driver->isRunning() && !isPauseTimerActive) {
+ //we changed the timing interval
+ driver->stop();
+ driver->start();
+ }
+}
+
+
void QUnifiedTimer::timerEvent(QTimerEvent *event)
{
//in the case of consistent timing we make sure the orders in which events come is always the same
@@ -369,6 +383,129 @@ int QUnifiedTimer::closestPauseAnimationTimeToFinish()
return closestTimeToFinish;
}
+void QUnifiedTimer::installAnimationDriver(QAnimationDriver *d)
+{
+ if (driver->isRunning()) {
+ qWarning("QUnifiedTimer: Cannot change animation driver while animations are running");
+ return;
+ }
+
+ if (driver && driver != &defaultDriver)
+ delete driver;
+
+ driver = d;
+}
+
+/*!
+ \class QAnimationDriver
+
+ \brief The QAnimationDriver class is used to exchange the mechanism that drives animations.
+
+ The default animation system is driven by a timer that fires at regular intervals.
+ In some scenarios, it is better to drive the animation based on other synchronization
+ mechanisms, such as the vertical refresh rate of the screen.
+ */
+
+QAnimationDriver::QAnimationDriver(QObject *parent)
+ : QObject(*(new QAnimationDriverPrivate), parent)
+{
+}
+
+QAnimationDriver::QAnimationDriver(QAnimationDriverPrivate &dd, QObject *parent)
+ : QObject(dd, parent)
+{
+}
+
+
+/*!
+ Advances the animation based on the current time. This function should
+ be continuously called by the driver while the animation is running.
+ */
+void QAnimationDriver::advance()
+{
+ QUnifiedTimer *instance = QUnifiedTimer::instance();
+
+ // update current time on all top level animations
+ instance->updateAnimationsTime();
+ instance->restartAnimationTimer();
+}
+
+
+/*!
+ Installs this animation driver. The animation driver is thread local and
+ will only apply for the thread its installed in.
+ */
+void QAnimationDriver::install()
+{
+ QUnifiedTimer *timer = QUnifiedTimer::instance(true);
+ timer->installAnimationDriver(this);
+}
+
+bool QAnimationDriver::isRunning() const
+{
+ return d_func()->running;
+}
+
+
+void QAnimationDriver::start()
+{
+ Q_D(QAnimationDriver);
+ if (!d->running) {
+ started();
+ d->running = true;
+ }
+}
+
+
+void QAnimationDriver::stop()
+{
+ Q_D(QAnimationDriver);
+ if (d->running) {
+ stopped();
+ d->running = false;
+ }
+}
+
+/*!
+ \fn QAnimationDriver::started()
+
+ This function is called by the animation framework to notify the driver
+ that it should start running.
+ */
+
+/*!
+ \fn QAnimationDriver::stopped()
+
+ This function is called by the animation framework to notify the driver
+ that it should stop running.
+ */
+
+/*!
+ The default animation driver just spins the timer...
+ */
+QDefaultAnimationDriver::QDefaultAnimationDriver(QUnifiedTimer *timer)
+ : QAnimationDriver(0), m_unified_timer(timer)
+{
+}
+
+void QDefaultAnimationDriver::timerEvent(QTimerEvent *e)
+{
+ Q_ASSERT(e->timerId() == m_timer.timerId());
+ advance();
+}
+
+void QDefaultAnimationDriver::started()
+{
+ m_timer.start(m_unified_timer->timingInterval, this);
+}
+
+void QDefaultAnimationDriver::stopped()
+{
+ m_timer.stop();
+}
+
+
+
void QAbstractAnimationPrivate::setState(QAbstractAnimation::State newState)
{
Q_Q(QAbstractAnimation);
@@ -794,6 +931,9 @@ void QAbstractAnimation::stop()
{
Q_D(QAbstractAnimation);
+ if (d->state == Stopped)
+ return;
+
d->setState(Stopped);
}
diff --git a/src/corelib/animation/qabstractanimation.h b/src/corelib/animation/qabstractanimation.h
index d3c0d0d..6abe8c1 100644
--- a/src/corelib/animation/qabstractanimation.h
+++ b/src/corelib/animation/qabstractanimation.h
@@ -54,6 +54,7 @@ QT_MODULE(Core)
class QAnimationGroup;
class QSequentialAnimationGroup;
+class QAnimationDriver;
class QAbstractAnimationPrivate;
class Q_CORE_EXPORT QAbstractAnimation : public QObject
@@ -132,6 +133,36 @@ private:
Q_DECLARE_PRIVATE(QAbstractAnimation)
};
+class QAnimationDriverPrivate;
+class Q_CORE_EXPORT QAnimationDriver : public QObject
+{
+ Q_OBJECT
+ Q_DECLARE_PRIVATE(QAnimationDriver)
+
+public:
+ QAnimationDriver(QObject *parent);
+
+ void advance();
+ void install();
+
+ bool isRunning() const;
+
+protected:
+ virtual void started() = 0;
+ virtual void stopped() = 0;
+
+ QAnimationDriver(QAnimationDriverPrivate &dd, QObject *parent = 0);
+
+private:
+ friend class QUnifiedTimer;
+
+ void start();
+ void stop();
+};
+
+
+
+
#endif //QT_NO_ANIMATION
QT_END_NAMESPACE
diff --git a/src/corelib/animation/qabstractanimation_p.h b/src/corelib/animation/qabstractanimation_p.h
index d3d4098..d56c130 100644
--- a/src/corelib/animation/qabstractanimation_p.h
+++ b/src/corelib/animation/qabstractanimation_p.h
@@ -58,6 +58,7 @@
#include <QtCore/qtimer.h>
#include <QtCore/qelapsedtimer.h>
#include <private/qobject_p.h>
+#include <qabstractanimation.h>
#ifdef Q_OS_WIN
#include <qt_windows.h>
@@ -114,30 +115,47 @@ private:
Q_DECLARE_PUBLIC(QAbstractAnimation)
};
+
+class QUnifiedTimer;
+class QDefaultAnimationDriver : public QAnimationDriver
+{
+ Q_OBJECT
+public:
+ QDefaultAnimationDriver(QUnifiedTimer *timer);
+ void timerEvent(QTimerEvent *e);
+
+ void started();
+ void stopped();
+
+private:
+ QBasicTimer m_timer;
+ QUnifiedTimer *m_unified_timer;
+};
+
+class Q_CORE_EXPORT QAnimationDriverPrivate : public QObjectPrivate
+{
+public:
+ QAnimationDriverPrivate() : running(false) {}
+ bool running;
+};
+
typedef QElapsedTimer ElapsedTimer;
-class QUnifiedTimer : public QObject
+class Q_CORE_EXPORT QUnifiedTimer : public QObject
{
private:
QUnifiedTimer();
public:
//XXX this is needed by dui
- static Q_CORE_EXPORT QUnifiedTimer *instance();
+ static QUnifiedTimer *instance();
static QUnifiedTimer *instance(bool create);
static void registerAnimation(QAbstractAnimation *animation, bool isTopLevel);
static void unregisterAnimation(QAbstractAnimation *animation);
//defines the timing interval. Default is DEFAULT_TIMER_INTERVAL
- void setTimingInterval(int interval)
- {
- timingInterval = interval;
- if (animationTimer.isActive() && !isPauseTimerActive) {
- //we changed the timing interval
- animationTimer.start(timingInterval, this);
- }
- }
+ void setTimingInterval(int interval);
/*
this allows to have a consistent timer interval at each tick from the timer
@@ -161,11 +179,20 @@ public:
*/
static void updateAnimationTimer();
+ void installAnimationDriver(QAnimationDriver *driver);
+
+ void restartAnimationTimer();
+ void updateAnimationsTime();
+
protected:
void timerEvent(QTimerEvent *);
private:
- // timer used for all active (running) animations
+ friend class QDefaultAnimationDriver;
+
+ QAnimationDriver *driver;
+ QDefaultAnimationDriver defaultDriver;
+
QBasicTimer animationTimer;
// timer used to delay the check if we should start/stop the animation timer
QBasicTimer startStopAnimationTimer;
@@ -195,9 +222,6 @@ private:
void registerRunningAnimation(QAbstractAnimation *animation);
void unregisterRunningAnimation(QAbstractAnimation *animation);
- void restartAnimationTimer();
-
- void updateAnimationsTime();
int closestPauseAnimationTimeToFinish();
};
diff --git a/src/corelib/concurrent/qtconcurrentrunbase.h b/src/corelib/concurrent/qtconcurrentrunbase.h
index a6bbe3e..888d395 100644
--- a/src/corelib/concurrent/qtconcurrentrunbase.h
+++ b/src/corelib/concurrent/qtconcurrentrunbase.h
@@ -100,7 +100,18 @@ public:
this->reportFinished();
return;
}
- this->runFunctor();
+#ifndef QT_NO_EXCEPTIONS
+ try {
+#endif
+ this->runFunctor();
+#ifndef QT_NO_EXCEPTIONS
+ } catch (QtConcurrent::Exception &e) {
+ QFutureInterface<T>::reportException(e);
+ } catch (...) {
+ QFutureInterface<T>::reportException(QtConcurrent::UnhandledException());
+ }
+#endif
+
this->reportResult(result);
this->reportFinished();
}
@@ -117,7 +128,17 @@ public:
this->reportFinished();
return;
}
- this->runFunctor();
+#ifndef QT_NO_EXCEPTIONS
+ try {
+#endif
+ this->runFunctor();
+#ifndef QT_NO_EXCEPTIONS
+ } catch (QtConcurrent::Exception &e) {
+ QFutureInterface<void>::reportException(e);
+ } catch (...) {
+ QFutureInterface<void>::reportException(QtConcurrent::UnhandledException());
+ }
+#endif
this->reportFinished();
}
};
diff --git a/src/corelib/global/qmalloc.cpp b/src/corelib/global/qmalloc.cpp
index 090998c..028a0a5 100644
--- a/src/corelib/global/qmalloc.cpp
+++ b/src/corelib/global/qmalloc.cpp
@@ -90,8 +90,6 @@ void *qReallocAligned(void *oldptr, size_t newsize, size_t oldsize, size_t align
return newptr + 1;
}
- union { void *ptr; void **pptr; quintptr n; } real, faked;
-
// qMalloc returns pointers aligned at least at sizeof(size_t) boundaries
// but usually more (8- or 16-byte boundaries).
// So we overallocate by alignment-sizeof(size_t) bytes, so we're guaranteed to find a
@@ -100,19 +98,21 @@ void *qReallocAligned(void *oldptr, size_t newsize, size_t oldsize, size_t align
// However, we need to store the actual pointer, so we need to allocate actually size +
// alignment anyway.
- real.ptr = qRealloc(actualptr, newsize + alignment);
- if (!real.ptr)
+ void *real = qRealloc(actualptr, newsize + alignment);
+ if (!real)
return 0;
- faked.n = real.n + alignment;
- faked.n &= ~(alignment - 1);
+ quintptr faked = reinterpret_cast<quintptr>(real) + alignment;
+ faked &= ~(alignment - 1);
+
+ void **faked_ptr = reinterpret_cast<void **>(faked);
// now save the value of the real pointer at faked-sizeof(void*)
// by construction, alignment > sizeof(void*) and is a power of 2, so
// faked-sizeof(void*) is properly aligned for a pointer
- faked.pptr[-1] = real.ptr;
+ faked_ptr[-1] = real;
- return faked.ptr;
+ return faked_ptr;
}
void qFreeAligned(void *ptr)
diff --git a/src/corelib/kernel/qcoreapplication.cpp b/src/corelib/kernel/qcoreapplication.cpp
index e967884..a8dc491 100644
--- a/src/corelib/kernel/qcoreapplication.cpp
+++ b/src/corelib/kernel/qcoreapplication.cpp
@@ -415,11 +415,10 @@ QString qAppName()
operations can call processEvents() to keep the application
responsive.
- Some Qt classes, such as QString, can be used without a
- QCoreApplication object. However, in general, we recommend that
- you create a QCoreApplication or a QApplication object in your \c
- main() function as early as possible. exit() will not return
- until the event loop exits; e.g., when quit() is called.
+ In general, we recommend that you create a QCoreApplication or
+ a QApplication object in your \c main() function as early as
+ possible. exit() will not return until the event loop exits;
+ e.g., when quit() is called.
Several static convenience functions are also provided. The
QCoreApplication object is available from instance(). Events can
diff --git a/src/corelib/kernel/qeventdispatcher_symbian.cpp b/src/corelib/kernel/qeventdispatcher_symbian.cpp
index 87d6a49..6154119 100644
--- a/src/corelib/kernel/qeventdispatcher_symbian.cpp
+++ b/src/corelib/kernel/qeventdispatcher_symbian.cpp
@@ -975,9 +975,7 @@ bool QEventDispatcherSymbian::sendPostedEvents()
inline void QEventDispatcherSymbian::addDeferredActiveObject(QActiveObject *object)
{
- if (m_deferredActiveObjects.isEmpty()) {
- m_completeDeferredAOs->complete();
- }
+ queueDeferredActiveObjectsCompletion();
m_deferredActiveObjects.append(object);
}
@@ -986,6 +984,11 @@ inline void QEventDispatcherSymbian::removeDeferredActiveObject(QActiveObject *o
m_deferredActiveObjects.removeAll(object);
}
+void QEventDispatcherSymbian::queueDeferredActiveObjectsCompletion()
+{
+ m_completeDeferredAOs->complete();
+}
+
void QEventDispatcherSymbian::reactivateDeferredActiveObjects()
{
while (!m_deferredActiveObjects.isEmpty()) {
diff --git a/src/corelib/kernel/qeventdispatcher_symbian_p.h b/src/corelib/kernel/qeventdispatcher_symbian_p.h
index 1486db5..3615996 100644
--- a/src/corelib/kernel/qeventdispatcher_symbian_p.h
+++ b/src/corelib/kernel/qeventdispatcher_symbian_p.h
@@ -247,7 +247,9 @@ public:
void addDeferredActiveObject(QActiveObject *object);
void removeDeferredActiveObject(QActiveObject *object);
- void reactivateDeferredActiveObjects();
+ void queueDeferredActiveObjectsCompletion();
+ // Can be overridden to activate local active objects too, but do call baseclass!
+ virtual void reactivateDeferredActiveObjects();
inline int iterationCount() const { return m_iterationCount; }
diff --git a/src/corelib/tools/qbytearray.cpp b/src/corelib/tools/qbytearray.cpp
index dc2e8e9..f26d878 100644
--- a/src/corelib/tools/qbytearray.cpp
+++ b/src/corelib/tools/qbytearray.cpp
@@ -541,6 +541,11 @@ QByteArray qUncompress(const uchar* data, int nbytes)
forever {
ulong alloc = len;
+ if (len >= (1 << 31) - sizeof(QByteArray::Data)) {
+ //QByteArray does not support that huge size anyway.
+ qWarning("qUncompress: Input data is corrupted");
+ return QByteArray();
+ }
QByteArray::Data *p = static_cast<QByteArray::Data *>(qRealloc(d.data(), sizeof(QByteArray::Data) + alloc));
if (!p) {
// we are not allowed to crash here when compiling with QT_NO_EXCEPTIONS
@@ -556,6 +561,11 @@ QByteArray qUncompress(const uchar* data, int nbytes)
switch (res) {
case Z_OK:
if (len != alloc) {
+ if (len >= (1 << 31) - sizeof(QByteArray::Data)) {
+ //QByteArray does not support that huge size anyway.
+ qWarning("qUncompress: Input data is corrupted");
+ return QByteArray();
+ }
QByteArray::Data *p = static_cast<QByteArray::Data *>(qRealloc(d.data(), sizeof(QByteArray::Data) + len));
if (!p) {
// we are not allowed to crash here when compiling with QT_NO_EXCEPTIONS
diff --git a/src/corelib/tools/qlocale.cpp b/src/corelib/tools/qlocale.cpp
index 6b1de5e..2fb3616 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)
diff --git a/src/corelib/tools/qlocale.h b/src/corelib/tools/qlocale.h
index 8b424bb..1af2cb4 100644
--- a/src/corelib/tools/qlocale.h
+++ b/src/corelib/tools/qlocale.h
@@ -114,7 +114,7 @@ class Q_CORE_EXPORT QLocale
friend class QString;
friend class QByteArray;
friend class QIntValidator;
- friend class QDoubleValidator;
+ friend class QDoubleValidatorPrivate;
friend class QTextStream;
friend class QTextStreamPrivate;
diff --git a/src/declarative/debugger/qdeclarativedebughelper.cpp b/src/declarative/debugger/qdeclarativedebughelper.cpp
index 207ad2b..b003c12 100644
--- a/src/declarative/debugger/qdeclarativedebughelper.cpp
+++ b/src/declarative/debugger/qdeclarativedebughelper.cpp
@@ -48,6 +48,7 @@
#include <private/qdeclarativeengine_p.h>
#include <private/qabstractanimation_p.h>
+#include <private/qdeclarativeengine_p.h>
QT_BEGIN_NAMESPACE
@@ -63,4 +64,11 @@ void QDeclarativeDebugHelper::setAnimationSlowDownFactor(qreal factor)
timer->setSlowdownFactor(factor);
}
+void QDeclarativeDebugHelper::enableDebugging() {
+ if (!QDeclarativeEnginePrivate::qml_debugging_enabled) {
+ qWarning("Qml debugging is enabled. Only use this in a safe environment!");
+ }
+ QDeclarativeEnginePrivate::qml_debugging_enabled = true;
+}
+
QT_END_NAMESPACE
diff --git a/src/declarative/debugger/qdeclarativedebughelper_p.h b/src/declarative/debugger/qdeclarativedebughelper_p.h
index 5689dff..fcd7115 100644
--- a/src/declarative/debugger/qdeclarativedebughelper_p.h
+++ b/src/declarative/debugger/qdeclarativedebughelper_p.h
@@ -55,11 +55,15 @@ class QDeclarativeEngine;
// Helper methods to access private API through a stable interface
// This is used in the qmljsdebugger library of QtCreator.
-class Q_DECLARATIVE_PRIVATE_EXPORT QDeclarativeDebugHelper
+class Q_DECLARATIVE_EXPORT QDeclarativeDebugHelper
{
public:
static QScriptEngine *getScriptEngine(QDeclarativeEngine *engine);
static void setAnimationSlowDownFactor(qreal factor);
+
+ // Enables remote debugging functionality
+ // Only use this for debugging in a safe environment!
+ static void enableDebugging();
};
QT_END_NAMESPACE
diff --git a/src/declarative/debugger/qdeclarativedebugservice.cpp b/src/declarative/debugger/qdeclarativedebugservice.cpp
index c39da3d..8c86ae8 100644
--- a/src/declarative/debugger/qdeclarativedebugservice.cpp
+++ b/src/declarative/debugger/qdeclarativedebugservice.cpp
@@ -42,6 +42,7 @@
#include "private/qdeclarativedebugservice_p.h"
#include "private/qpacketprotocol_p.h"
+#include "private/qdeclarativeengine_p.h"
#include <QtCore/qdebug.h>
#include <QtNetwork/qtcpserver.h>
@@ -205,6 +206,12 @@ QDeclarativeDebugServer *QDeclarativeDebugServer::instance()
// format: qmljsdebugger=port:3768[,block]
if (!appD->qmljsDebugArgumentsString().isEmpty()) {
+ if (!QDeclarativeEnginePrivate::qml_debugging_enabled) {
+ qWarning() << QString::fromLatin1("QDeclarativeDebugServer: Ignoring \"-qmljsdebugger=%1\". "
+ "Debugging has not been enabled.").arg(
+ appD->qmljsDebugArgumentsString()).toAscii().constData();
+ return 0;
+ }
if (appD->qmljsDebugArgumentsString().indexOf(QLatin1String("port:")) == 0) {
int separatorIndex = appD->qmljsDebugArgumentsString().indexOf(QLatin1Char(','));
diff --git a/src/declarative/graphicsitems/qdeclarativeflickable.cpp b/src/declarative/graphicsitems/qdeclarativeflickable.cpp
index 6fe1522..0f786e3 100644
--- a/src/declarative/graphicsitems/qdeclarativeflickable.cpp
+++ b/src/declarative/graphicsitems/qdeclarativeflickable.cpp
@@ -53,9 +53,6 @@ QT_BEGIN_NAMESPACE
// before we perform a flick.
static const int FlickThreshold = 20;
-// Really slow flicks can be annoying.
-static const int MinimumFlickVelocity = 75;
-
QDeclarativeFlickableVisibleArea::QDeclarativeFlickableVisibleArea(QDeclarativeFlickable *parent)
: QObject(parent), flickable(parent), m_xPosition(0.), m_widthRatio(0.)
, m_yPosition(0.), m_heightRatio(0.)
@@ -990,8 +987,8 @@ void QDeclarativeFlickable::viewportMoved()
{
Q_D(QDeclarativeFlickable);
- qreal prevY = d->lastFlickablePosition.x();
- qreal prevX = d->lastFlickablePosition.y();
+ qreal prevX = d->lastFlickablePosition.x();
+ qreal prevY = d->lastFlickablePosition.y();
d->velocityTimeline.clear();
if (d->pressed || d->calcVelocity) {
int elapsed = QDeclarativeItemPrivate::restart(d->velocityTime);
@@ -1012,7 +1009,7 @@ void QDeclarativeFlickable::viewportMoved()
}
}
- d->lastFlickablePosition = QPointF(d->vData.move.value(), d->hData.move.value());
+ d->lastFlickablePosition = QPointF(d->hData.move.value(), d->vData.move.value());
d->vTime = d->timeline.time();
d->updateBeginningEnd();
@@ -1032,6 +1029,13 @@ void QDeclarativeFlickable::geometryChanged(const QRectF &newGeometry,
d->contentItem->setWidth(width());
emit contentWidthChanged();
}
+ // Make sure that we're entirely in view.
+ if (!d->pressed && !d->movingHorizontally && !d->movingVertically) {
+ int oldDuration = d->fixupDuration;
+ d->fixupDuration = 0;
+ d->fixupX();
+ d->fixupDuration = oldDuration;
+ }
}
if (newGeometry.height() != oldGeometry.height()) {
if (yflick())
@@ -1040,6 +1044,13 @@ void QDeclarativeFlickable::geometryChanged(const QRectF &newGeometry,
d->contentItem->setHeight(height());
emit contentHeightChanged();
}
+ // Make sure that we're entirely in view.
+ if (!d->pressed && !d->movingHorizontally && !d->movingVertically) {
+ int oldDuration = d->fixupDuration;
+ d->fixupDuration = 0;
+ d->fixupY();
+ d->fixupDuration = oldDuration;
+ }
}
if (changed)
@@ -1161,19 +1172,18 @@ void QDeclarativeFlickable::setBoundsBehavior(BoundsBehavior b)
\qmlproperty real Flickable::contentWidth
\qmlproperty real Flickable::contentHeight
- The dimensions of the content (the surface controlled by Flickable). Typically this
- should be set to the combined size of the items placed in the Flickable. Note this
- can be set automatically using \l {Item::childrenRect.width}{childrenRect.width}
- and \l {Item::childrenRect.height}{childrenRect.height}. For example:
+ The dimensions of the content (the surface controlled by Flickable).
+ This should typically be set to the combined size of the items placed in the
+ Flickable.
- \code
- Flickable {
- width: 320; height: 480
- contentWidth: childrenRect.width; contentHeight: childrenRect.height
+ The following snippet shows how these properties are used to display
+ an image that is larger than the Flickable item itself:
- Image { id: image; source: "bigImage.png" }
- }
- \endcode
+ \snippet doc/src/snippets/declarative/flickable.qml document
+
+ In some cases, the the content dimensions can be automatically set
+ using the \l {Item::childrenRect.width}{childrenRect.width}
+ and \l {Item::childrenRect.height}{childrenRect.height} properties.
*/
qreal QDeclarativeFlickable::contentWidth() const
{
diff --git a/src/declarative/graphicsitems/qdeclarativeflickable_p_p.h b/src/declarative/graphicsitems/qdeclarativeflickable_p_p.h
index afefde2..92cf748 100644
--- a/src/declarative/graphicsitems/qdeclarativeflickable_p_p.h
+++ b/src/declarative/graphicsitems/qdeclarativeflickable_p_p.h
@@ -66,6 +66,9 @@
QT_BEGIN_NAMESPACE
+// Really slow flicks can be annoying.
+const qreal MinimumFlickVelocity = 75.0;
+
class QDeclarativeFlickableVisibleArea;
class QDeclarativeFlickablePrivate : public QDeclarativeItemPrivate, public QDeclarativeItemChangeListener
{
diff --git a/src/declarative/graphicsitems/qdeclarativeimage.cpp b/src/declarative/graphicsitems/qdeclarativeimage.cpp
index 08d237f..3b08a9b 100644
--- a/src/declarative/graphicsitems/qdeclarativeimage.cpp
+++ b/src/declarative/graphicsitems/qdeclarativeimage.cpp
@@ -259,8 +259,10 @@ void QDeclarativeImage::setFillMode(FillMode mode)
\qmlproperty real Image::paintedHeight
These properties hold the size of the image that is actually painted.
- In most cases it is the same as \c width and \c height, but when using a \c fillMode like
- \c PreserveAspectFit \c paintedWidth or \c paintedHeight can be smaller than \c width and \c height.
+ In most cases it is the same as \c width and \c height, but when using a
+ \c fillMode \c PreserveAspectFit or \c fillMode \c PreserveAspectCrop
+ \c paintedWidth or \c paintedHeight can be smaller or larger than
+ \c width and \c height of the Image element.
*/
qreal QDeclarativeImage::paintedWidth() const
{
@@ -288,23 +290,25 @@ qreal QDeclarativeImage::paintedHeight() const
Use this status to provide an update or respond to the status change in some way.
For example, you could:
- \e {Trigger a state change:}
- \qml
- State { name: 'loaded'; when: image.status = Image.Ready }
+ \list
+ \o Trigger a state change:
+ \qml
+ State { name: 'loaded'; when: image.status == Image.Ready }
\endqml
- \e {Implement an \c onStatusChanged signal handler:}
- \qml
+ \o Implement an \c onStatusChanged signal handler:
+ \qml
Image {
id: image
onStatusChanged: if (image.status == Image.Ready) console.log('Loaded')
}
\endqml
- \e {Bind to the status value:}
+ \o Bind to the status value:
\qml
- Text { text: image.status != Image.Ready ? 'Not Loaded' : 'Loaded' }
+ Text { text: image.status == Image.Ready ? 'Loaded' : 'Not loaded' }
\endqml
+ \endlist
\sa progress
*/
@@ -397,6 +401,19 @@ void QDeclarativeImage::updatePaintedGeometry()
if (heightValid() && !widthValid()) {
setImplicitWidth(d->paintedWidth);
}
+ } else if (d->fillMode == PreserveAspectCrop) {
+ if (!d->pix.width() || !d->pix.height())
+ return;
+ qreal widthScale = width() / qreal(d->pix.width());
+ qreal heightScale = height() / qreal(d->pix.height());
+ if (widthScale < heightScale) {
+ widthScale = heightScale;
+ } else if(heightScale < widthScale) {
+ heightScale = widthScale;
+ }
+
+ d->paintedHeight = heightScale * qreal(d->pix.height());
+ d->paintedWidth = widthScale * qreal(d->pix.width());
} else {
d->paintedWidth = width();
d->paintedHeight = height();
@@ -410,6 +427,12 @@ void QDeclarativeImage::geometryChanged(const QRectF &newGeometry, const QRectF
updatePaintedGeometry();
}
+QRectF QDeclarativeImage::boundingRect() const
+{
+ Q_D(const QDeclarativeImage);
+ return QRectF(0, 0, qMax(d->mWidth, d->paintedWidth), qMax(d->mHeight, d->paintedHeight));
+}
+
/*!
\qmlproperty url Image::source
@@ -494,7 +517,7 @@ void QDeclarativeImage::paint(QPainter *p, const QStyleOptionGraphicsItem *, QWi
}
if (clip()) {
p->save();
- p->setClipRect(boundingRect(), Qt::IntersectClip);
+ p->setClipRect(QRectF(0, 0, d->mWidth, d->mHeight), Qt::IntersectClip);
}
scale.scale(widthScale, heightScale);
QTransform old = p->transform();
diff --git a/src/declarative/graphicsitems/qdeclarativeimage_p.h b/src/declarative/graphicsitems/qdeclarativeimage_p.h
index c8bb30b..0e8034e 100644
--- a/src/declarative/graphicsitems/qdeclarativeimage_p.h
+++ b/src/declarative/graphicsitems/qdeclarativeimage_p.h
@@ -76,6 +76,7 @@ public:
qreal paintedHeight() const;
void paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget *);
+ QRectF boundingRect() const;
Q_SIGNALS:
void fillModeChanged();
diff --git a/src/declarative/graphicsitems/qdeclarativeitem.cpp b/src/declarative/graphicsitems/qdeclarativeitem.cpp
index 95a4fd6..e0df751 100644
--- a/src/declarative/graphicsitems/qdeclarativeitem.cpp
+++ b/src/declarative/graphicsitems/qdeclarativeitem.cpp
@@ -1955,12 +1955,8 @@ void QDeclarativeItem::geometryChanged(const QRectF &newGeometry,
change.listener->itemGeometryChanged(this, newGeometry, oldGeometry);
}
- if (newGeometry.x() != oldGeometry.x())
- emit xChanged();
if (newGeometry.width() != oldGeometry.width())
emit widthChanged();
- if (newGeometry.y() != oldGeometry.y())
- emit yChanged();
if (newGeometry.height() != oldGeometry.height())
emit heightChanged();
}
diff --git a/src/declarative/graphicsitems/qdeclarativelistview.cpp b/src/declarative/graphicsitems/qdeclarativelistview.cpp
index 38a4839..94b1cb3 100644
--- a/src/declarative/graphicsitems/qdeclarativelistview.cpp
+++ b/src/declarative/graphicsitems/qdeclarativelistview.cpp
@@ -334,28 +334,9 @@ public:
return model && model->count() && model->isValid();
}
- int snapIndex() {
- int index = currentIndex;
- for (int i = 0; i < visibleItems.count(); ++i) {
- FxListItem *item = visibleItems[i];
- if (item->index == -1)
- continue;
- qreal itemTop = item->position();
- if (itemTop >= highlight->position()-item->size()/2 && itemTop < highlight->position()+item->size()/2)
- return item->index;
- }
- return index;
- }
-
qreal snapPosAt(qreal pos) {
- for (int i = 0; i < visibleItems.count(); ++i) {
- FxListItem *item = visibleItems[i];
- if (item->index == -1)
- continue;
- qreal itemTop = item->position();
- if (itemTop+item->size()/2 >= pos && itemTop <= pos)
- return item->position();
- }
+ if (FxListItem *snapItem = snapItemAt(pos))
+ return snapItem->position();
if (visibleItems.count()) {
qreal firstPos = visibleItems.first()->position();
qreal endPos = visibleItems.last()->position();
@@ -368,17 +349,18 @@ public:
}
FxListItem *snapItemAt(qreal pos) {
+ FxListItem *snapItem = 0;
for (int i = 0; i < visibleItems.count(); ++i) {
FxListItem *item = visibleItems[i];
if (item->index == -1)
continue;
qreal itemTop = item->position();
- if (item->index == model->count()-1 || (itemTop+item->size()/2 >= pos))
+ if (highlight && itemTop >= pos && item->endPosition() <= pos + highlight->size() - 1)
return item;
+ if (itemTop+item->size()/2 >= pos && itemTop-item->size()/2 < pos)
+ snapItem = item;
}
- if (visibleItems.count() && visibleItems.first()->position() <= pos)
- return visibleItems.first();
- return 0;
+ return snapItem;
}
int lastVisibleIndex() const {
@@ -768,8 +750,10 @@ void QDeclarativeListViewPrivate::layout()
minExtentDirty = true;
maxExtentDirty = true;
updateHighlight();
- fixupPosition();
- q->refill();
+ if (!q->isMoving() && !q->isFlicking()) {
+ fixupPosition();
+ q->refill();
+ }
if (header)
updateHeader();
if (footer)
@@ -1173,6 +1157,7 @@ void QDeclarativeListViewPrivate::fixup(AxisData &data, qreal minExtent, qreal m
|| (orient == QDeclarativeListView::Vertical && &data == &hData))
return;
+ correctFlick = false;
int oldDuration = fixupDuration;
fixupDuration = moveReason == Mouse ? fixupDuration : 0;
@@ -1350,12 +1335,15 @@ void QDeclarativeListViewPrivate::flick(AxisData &data, qreal minExtent, qreal m
qreal newtarget = data.flickTarget;
if (snapMode != QDeclarativeListView::NoSnap || highlightRange == QDeclarativeListView::StrictlyEnforceRange)
newtarget = -snapPosAt(-(data.flickTarget - highlightRangeStart)) + highlightRangeStart;
- if (velocity < 0 && newtarget < maxExtent)
- newtarget = maxExtent;
- else if (velocity > 0 && newtarget > minExtent)
- newtarget = minExtent;
- if (newtarget == data.flickTarget) // boundary unchanged - nothing to do
+ if (velocity < 0 && newtarget <= maxExtent)
+ newtarget = maxExtent - overshootDist;
+ else if (velocity > 0 && newtarget >= minExtent)
+ newtarget = minExtent + overshootDist;
+ if (newtarget == data.flickTarget) { // boundary unchanged - nothing to do
+ if (qAbs(velocity) < MinimumFlickVelocity)
+ correctFlick = false;
return;
+ }
data.flickTarget = newtarget;
qreal dist = -newtarget + data.move.value();
if ((v < 0 && dist < 0) || (v > 0 && dist > 0)) {
@@ -1365,7 +1353,7 @@ void QDeclarativeListViewPrivate::flick(AxisData &data, qreal minExtent, qreal m
return;
}
timeline.reset(data.move);
- timeline.accelDistance(data.move, v, -dist + (v < 0 ? -overshootDist : overshootDist));
+ timeline.accelDistance(data.move, v, -dist);
timeline.callback(QDeclarativeTimeLineCallback(&data.move, fixupCallback, this));
}
} else {
@@ -1696,7 +1684,7 @@ void QDeclarativeListView::setCurrentIndex(int index)
if (isComponentComplete() && d->isValid()) {
d->moveReason = QDeclarativeListViewPrivate::SetIndex;
d->updateCurrent(index);
- } else {
+ } else if (d->currentIndex != index) {
d->currentIndex = index;
emit currentIndexChanged();
}
@@ -2323,9 +2311,10 @@ void QDeclarativeListView::viewportMoved()
d->highlight->setPosition(qRound(pos));
// update current index
- int idx = d->snapIndex();
- if (idx >= 0 && idx != d->currentIndex)
- d->updateCurrent(idx);
+ if (FxListItem *snapItem = d->snapItemAt(d->highlight->position())) {
+ if (snapItem->index >= 0 && snapItem->index != d->currentIndex)
+ d->updateCurrent(snapItem->index);
+ }
}
}
diff --git a/src/declarative/graphicsitems/qdeclarativeloader.cpp b/src/declarative/graphicsitems/qdeclarativeloader.cpp
index 7777567..109fbbb 100644
--- a/src/declarative/graphicsitems/qdeclarativeloader.cpp
+++ b/src/declarative/graphicsitems/qdeclarativeloader.cpp
@@ -395,23 +395,25 @@ void QDeclarativeLoaderPrivate::_q_sourceLoaded()
Use this status to provide an update or respond to the status change in some way.
For example, you could:
- \e {Trigger a state change:}
- \qml
- State { name: 'loaded'; when: loader.status = Loader.Ready }
+ \list
+ \o Trigger a state change:
+ \qml
+ State { name: 'loaded'; when: loader.status == Loader.Ready }
\endqml
- \e {Implement an \c onStatusChanged signal handler:}
- \qml
+ \o Implement an \c onStatusChanged signal handler:
+ \qml
Loader {
id: loader
onStatusChanged: if (loader.status == Loader.Ready) console.log('Loaded')
}
\endqml
- \e {Bind to the status value:}
+ \o Bind to the status value:
\qml
- Text { text: loader.status != Loader.Ready ? 'Not Loaded' : 'Loaded' }
+ Text { text: loader.status == Loader.Ready ? 'Loaded' : 'Not loaded' }
\endqml
+ \endlist
Note that if the source is a local file, the status will initially be Ready (or Error). While
there will be no onStatusChanged signal in that case, the onLoaded will still be invoked.
diff --git a/src/declarative/graphicsitems/qdeclarativerectangle.cpp b/src/declarative/graphicsitems/qdeclarativerectangle.cpp
index 1ffd3bd..fc3954f 100644
--- a/src/declarative/graphicsitems/qdeclarativerectangle.cpp
+++ b/src/declarative/graphicsitems/qdeclarativerectangle.cpp
@@ -477,7 +477,8 @@ void QDeclarativeRectangle::drawRect(QPainter &p)
{
Q_D(QDeclarativeRectangle);
if ((d->gradient && d->gradient->gradient())
- || d->radius > width()/2 || d->radius > height()/2) {
+ || d->radius > width()/2 || d->radius > height()/2
+ || width() < 3 || height() < 3) {
// XXX This path is still slower than the image path
// Image path won't work for gradients or invalid radius though
bool oldAA = p.testRenderHint(QPainter::Antialiasing);
diff --git a/src/declarative/graphicsitems/qdeclarativetext.cpp b/src/declarative/graphicsitems/qdeclarativetext.cpp
index 03c9765..82c444e 100644
--- a/src/declarative/graphicsitems/qdeclarativetext.cpp
+++ b/src/declarative/graphicsitems/qdeclarativetext.cpp
@@ -219,6 +219,7 @@ void QDeclarativeTextPrivate::updateSize()
QFontMetrics fm(font);
if (text.isEmpty()) {
+ q->setImplicitWidth(0);
q->setImplicitHeight(fm.height());
emit q->paintedSizeChanged();
q->update();
@@ -284,37 +285,58 @@ QSize QDeclarativeTextPrivate::setupTextLayout()
{
// ### text layout handling should be profiled and optimized as needed
// what about QStackTextEngine engine(tmp, d->font.font()); QTextLayout textLayout(&engine);
-
Q_Q(QDeclarativeText);
layout.setCacheEnabled(true);
qreal height = 0;
+ qreal widthUsed = 0;
qreal lineWidth = 0;
//set manual width
- if (q->widthValid())
+ if ((wrapMode != QDeclarativeText::NoWrap || elideMode != QDeclarativeText::ElideNone) && q->widthValid())
lineWidth = q->width();
QTextOption textOption = layout.textOption();
textOption.setWrapMode(QTextOption::WrapMode(wrapMode));
- textOption.setAlignment(Qt::Alignment(hAlign));
layout.setTextOption(textOption);
layout.beginLayout();
- while (1) {
+ forever {
QTextLine line = layout.createLine();
if (!line.isValid())
break;
- if (q->widthValid()) {
+ if (lineWidth)
line.setLineWidth(lineWidth);
- line.setPosition(QPointF(0, height));
- height += line.height();
- }
}
layout.endLayout();
- return QSize(qCeil(layout.boundingRect().width()), layout.boundingRect().height());
+ for (int i = 0; i < layout.lineCount(); ++i) {
+ QTextLine line = layout.lineAt(i);
+ widthUsed = qMax(widthUsed, line.naturalTextWidth());
+ }
+
+ qreal layoutWidth = q->widthValid() ? q->width() : widthUsed;
+
+ qreal x = 0;
+ for (int i = 0; i < layout.lineCount(); ++i) {
+ QTextLine line = layout.lineAt(i);
+ line.setPosition(QPointF(0, height));
+ height += line.height();
+
+ if (!cacheAllTextAsImage) {
+ if (hAlign == QDeclarativeText::AlignLeft) {
+ x = 0;
+ } else if (hAlign == QDeclarativeText::AlignRight) {
+ x = layoutWidth - line.naturalTextWidth();
+ } else if (hAlign == QDeclarativeText::AlignHCenter) {
+ x = (layoutWidth - line.naturalTextWidth()) / 2;
+ }
+ line.setPosition(QPointF(x, line.y()));
+ }
+ }
+
+ return layout.boundingRect().toAlignedRect().size();
}
/*!
@@ -326,6 +348,19 @@ QPixmap QDeclarativeTextPrivate::textLayoutImage(bool drawStyle)
//do layout
QSize size = layedOutTextSize;
+ qreal x = 0;
+ for (int i = 0; i < layout.lineCount(); ++i) {
+ QTextLine line = layout.lineAt(i);
+ if (hAlign == QDeclarativeText::AlignLeft) {
+ x = 0;
+ } else if (hAlign == QDeclarativeText::AlignRight) {
+ x = size.width() - line.naturalTextWidth();
+ } else if (hAlign == QDeclarativeText::AlignHCenter) {
+ x = (size.width() - line.naturalTextWidth()) / 2;
+ }
+ line.setPosition(QPointF(x, line.y()));
+ }
+
//paint text
QPixmap img(size);
if (!size.isEmpty()) {
@@ -1028,7 +1063,7 @@ void QDeclarativeText::setTextFormat(TextFormat format)
Set this property to elide parts of the text fit to the Text item's width.
The text will only elide if an explicit width has been set.
- This property cannot be used with wrapping enabled or with rich text.
+ This property cannot be used with multi-line text or with rich text.
Eliding can be:
\list
diff --git a/src/declarative/graphicsitems/qdeclarativetextinput.cpp b/src/declarative/graphicsitems/qdeclarativetextinput.cpp
index 2348478..0deacf8 100644
--- a/src/declarative/graphicsitems/qdeclarativetextinput.cpp
+++ b/src/declarative/graphicsitems/qdeclarativetextinput.cpp
@@ -460,10 +460,9 @@ QRect QDeclarativeTextInput::cursorRectangle() const
text edit.
Note that if selectionStart == selectionEnd then there is no current
- selection. If you attempt to set selectionStart to a value outside of
- the current text, selectionStart will not be changed.
+ selection.
- \sa selectionEnd, cursorPosition, selectedText
+ \sa selectionEnd, cursorPosition, selectedText, select()
*/
int QDeclarativeTextInput::selectionStart() const
{
@@ -479,10 +478,9 @@ int QDeclarativeTextInput::selectionStart() const
text edit.
Note that if selectionStart == selectionEnd then there is no current
- selection. If you attempt to set selectionEnd to a value outside of
- the current text, selectionEnd will not be changed.
+ selection.
- \sa selectionStart, cursorPosition, selectedText
+ \sa selectionStart, cursorPosition, selectedText, select()
*/
int QDeclarativeTextInput::selectionEnd() const
{
@@ -490,6 +488,19 @@ int QDeclarativeTextInput::selectionEnd() const
return d->lastSelectionEnd;
}
+/*!
+ \qmlmethod void TextInput::select(int start, int end)
+
+ Causes the text from \a start to \a end to be selected.
+
+ If either start or end is out of range, the selection is not changed.
+
+ After calling this, selectionStart will become the lesser
+ and selectionEnd will become the greater (regardless of the order passed
+ to this method).
+
+ \sa selectionStart, selectionEnd
+*/
void QDeclarativeTextInput::select(int start, int end)
{
Q_D(QDeclarativeTextInput);
diff --git a/src/declarative/graphicsitems/qdeclarativetextlayout.cpp b/src/declarative/graphicsitems/qdeclarativetextlayout.cpp
index 89a2158..e8da367 100644
--- a/src/declarative/graphicsitems/qdeclarativetextlayout.cpp
+++ b/src/declarative/graphicsitems/qdeclarativetextlayout.cpp
@@ -94,7 +94,7 @@ class DrawTextItemRecorder: public QPaintEngine
if (!m_inertText->items.isEmpty()) {
QStaticTextItem &last = m_inertText->items[m_inertText->items.count() - 1];
- if (last.fontEngine == ti.fontEngine && last.font == ti.font() &&
+ if (last.fontEngine() == ti.fontEngine && last.font == ti.font() &&
(!m_dirtyPen || last.color == state->pen().color())) {
needFreshCurrentItem = false;
@@ -107,7 +107,7 @@ class DrawTextItemRecorder: public QPaintEngine
if (needFreshCurrentItem) {
QStaticTextItem currentItem;
- currentItem.fontEngine = ti.fontEngine;
+ currentItem.setFontEngine(ti.fontEngine);
currentItem.font = ti.font();
currentItem.charOffset = charOffset;
currentItem.numChars = ti.num_chars;
@@ -285,6 +285,19 @@ void QDeclarativeTextLayout::beginLayout()
QTextLayout::beginLayout();
}
+void QDeclarativeTextLayout::clearLayout()
+{
+ if (d && d->cached) {
+ d->cached = false;
+ d->items.clear();
+ d->positions.clear();
+ d->glyphs.clear();
+ d->chars.clear();
+ d->position = QPointF();
+ }
+ QTextLayout::clearLayout();
+}
+
void QDeclarativeTextLayout::prepare()
{
if (!d || !d->cached) {
diff --git a/src/declarative/graphicsitems/qdeclarativetextlayout_p.h b/src/declarative/graphicsitems/qdeclarativetextlayout_p.h
index 90bf0e0..8b81db3 100644
--- a/src/declarative/graphicsitems/qdeclarativetextlayout_p.h
+++ b/src/declarative/graphicsitems/qdeclarativetextlayout_p.h
@@ -59,6 +59,7 @@ public:
~QDeclarativeTextLayout();
void beginLayout();
+ void clearLayout();
void prepare();
void draw(QPainter *, const QPointF & = QPointF());
diff --git a/src/declarative/qml/qdeclarativecomponent.cpp b/src/declarative/qml/qdeclarativecomponent.cpp
index 0a2a6db..2686ce3 100644
--- a/src/declarative/qml/qdeclarativecomponent.cpp
+++ b/src/declarative/qml/qdeclarativecomponent.cpp
@@ -98,6 +98,43 @@ class QByteArray;
int width = item->width(); // width = 200
\endcode
+
+ \section2 Network Components
+
+ If the URL passed to QDeclarativeComponent is a network resource, or if the QML document references a
+ network resource, the QDeclarativeComponent has to fetch the network data before it is able to create
+ objects. In this case, the QDeclarativeComponent will have a \l {QDeclarativeComponent::Loading}{Loading}
+ \l {QDeclarativeComponent::status()}{status}. An application will have to wait until the component
+ is \l {QDeclarativeComponent::Ready}{Ready} before calling \l {QDeclarativeComponent::create()}.
+
+ The following example shows how to load a QML file from a network resource. After creating
+ the QDeclarativeComponent, it tests whether the component is loading. If it is, it connects to the
+ QDeclarativeComponent::statusChanged() signal and otherwise calls the \c {continueLoading()} method
+ directly. Note that QDeclarativeComponent::isLoading() may be false for a network component if the
+ component has been cached and is ready immediately.
+
+ \code
+ MyApplication::MyApplication()
+ {
+ // ...
+ component = new QDeclarativeComponent(engine, QUrl("http://www.example.com/main.qml"));
+ if (component->isLoading())
+ QObject::connect(component, SIGNAL(statusChanged(QDeclarativeComponent::Status)),
+ this, SLOT(continueLoading()));
+ else
+ continueLoading();
+ }
+
+ void MyApplication::continueLoading()
+ {
+ if (component->isError()) {
+ qWarning() << component->errors();
+ } else {
+ QObject *myObject = component->create();
+ }
+ }
+ \endcode
+
\sa {Using QML in C++ Applications}, {Integrating QML with existing Qt UI code}
*/
diff --git a/src/declarative/qml/qdeclarativecontext.cpp b/src/declarative/qml/qdeclarativecontext.cpp
index 59d5cfa..1e58a71 100644
--- a/src/declarative/qml/qdeclarativecontext.cpp
+++ b/src/declarative/qml/qdeclarativecontext.cpp
@@ -86,9 +86,14 @@ QDeclarativeContextPrivate::QDeclarativeContextPrivate()
QDeclarativeComponent component(&engine);
component.setData("import QtQuick 1.0\nListView { model: myModel }", QUrl());
- component.create(context);
+ QObject *window = component.create(context);
\endcode
+ Note it is the responsibility of the creator to delete any QDeclarativeContext it
+ constructs. If the \c context object in the example is no longer needed when the
+ \c window component instance is destroyed, the \c context must be destroyed explicitly.
+ The simplest way to ensure this is to set \c window as the parent of \c context.
+
To simplify binding and maintaining larger data sets, a context object can be set
on a QDeclarativeContext. All the properties of the context object are available
by name in the context, as though they were all individually added through calls
@@ -119,11 +124,13 @@ QDeclarativeContextPrivate::QDeclarativeContextPrivate()
All properties added explicitly by QDeclarativeContext::setContextProperty() take
precedence over the context object's properties.
- Contexts form a hierarchy. The root of this hierarchy is the QDeclarativeEngine's
- \l {QDeclarativeEngine::rootContext()}{root context}. A component instance can
- access the data in its own context, as well as all its ancestor contexts. Data
- can be made available to all instances by modifying the
- \l {QDeclarativeEngine::rootContext()}{root context}.
+ \section2 The Context Hierarchy
+
+ Contexts form a hierarchy. The root of this hierarchy is the QML engine's
+ \l {QDeclarativeEngine::rootContext()}{root context}. Child contexts inherit
+ the context properties of their parents; if a child context sets a context property
+ that already exists in its parent, the new context property overrides that of the
+ parent.
The following example defines two contexts - \c context1 and \c context2. The
second context overrides the "b" context property inherited from the first with a
@@ -144,7 +151,7 @@ QDeclarativeContextPrivate::QDeclarativeContextPrivate()
context, their bindings are. If a context is destroyed, the property bindings of
outstanding QML objects will stop evaluating.
- \note Setting the context object or adding new context properties after an object
+ \warning Setting the context object or adding new context properties after an object
has been created in that context is an expensive operation (essentially forcing all bindings
to reevaluate). Thus whenever possible you should complete "setup" of the context
before using it to create any objects.
diff --git a/src/declarative/qml/qdeclarativeengine.cpp b/src/declarative/qml/qdeclarativeengine.cpp
index a11455d..cd11336 100644
--- a/src/declarative/qml/qdeclarativeengine.cpp
+++ b/src/declarative/qml/qdeclarativeengine.cpp
@@ -176,6 +176,7 @@ struct StaticQtMetaObject : public QObject
};
static bool qt_QmlQtModule_registered = false;
+bool QDeclarativeEnginePrivate::qml_debugging_enabled = false;
void QDeclarativeEnginePrivate::defineModule()
{
diff --git a/src/declarative/qml/qdeclarativeengine_p.h b/src/declarative/qml/qdeclarativeengine_p.h
index 8539fbf..deb4a77 100644
--- a/src/declarative/qml/qdeclarativeengine_p.h
+++ b/src/declarative/qml/qdeclarativeengine_p.h
@@ -321,6 +321,8 @@ public:
static QString urlToLocalFileOrQrc(const QUrl& url);
static void defineModule();
+
+ static bool qml_debugging_enabled;
};
/*!
diff --git a/src/declarative/qml/qdeclarativeenginedebug.cpp b/src/declarative/qml/qdeclarativeenginedebug.cpp
index ed28185..bffe681 100644
--- a/src/declarative/qml/qdeclarativeenginedebug.cpp
+++ b/src/declarative/qml/qdeclarativeenginedebug.cpp
@@ -502,7 +502,8 @@ void QDeclarativeEngineDebugServer::setBinding(int objectId,
property.write(expression);
} else if (hasValidSignal(object, propertyName)) {
QDeclarativeExpression *declarativeExpression = new QDeclarativeExpression(context, object, expression.toString());
- QDeclarativePropertyPrivate::setSignalExpression(property, declarativeExpression);
+ QDeclarativeExpression *oldExpression = QDeclarativePropertyPrivate::setSignalExpression(property, declarativeExpression);
+ declarativeExpression->setSourceLocation(oldExpression->sourceFile(), oldExpression->lineNumber());
} else if (property.isProperty()) {
QDeclarativeBinding *binding = new QDeclarativeBinding(expression.toString(), object, context);
binding->setTarget(property);
diff --git a/src/declarative/qml/qdeclarativeparser_p.h b/src/declarative/qml/qdeclarativeparser_p.h
index b4753df..77184c2 100644
--- a/src/declarative/qml/qdeclarativeparser_p.h
+++ b/src/declarative/qml/qdeclarativeparser_p.h
@@ -356,7 +356,7 @@ namespace QDeclarativeParser
// True if the setting of this property will be deferred. Set by the
// QDeclarativeCompiler
bool isDeferred;
- // True if this property is a value-type psuedo-property
+ // True if this property is a value-type pseudo-property
bool isValueTypeSubProperty;
LocationSpan location;
diff --git a/src/declarative/qml/qdeclarativeprivate.h b/src/declarative/qml/qdeclarativeprivate.h
index d45ddbc..388c92e 100644
--- a/src/declarative/qml/qdeclarativeprivate.h
+++ b/src/declarative/qml/qdeclarativeprivate.h
@@ -55,9 +55,6 @@
#include <QtCore/qglobal.h>
#include <QtCore/qvariant.h>
-#ifndef Q_OS_WIN
-#include <stdint.h>
-#endif
QT_BEGIN_HEADER
@@ -105,7 +102,7 @@ namespace QDeclarativePrivate
template<class From, class To>
struct StaticCastSelectorClass<From, To, sizeof(int)>
{
- static inline int cast() { return int(reinterpret_cast<intptr_t>(static_cast<To *>(reinterpret_cast<From *>(0x10000000)))) - 0x10000000; }
+ static inline int cast() { return int(reinterpret_cast<quintptr>(static_cast<To *>(reinterpret_cast<From *>(0x10000000)))) - 0x10000000; }
};
template<class From, class To>
diff --git a/src/declarative/qml/qdeclarativeworkerscript.cpp b/src/declarative/qml/qdeclarativeworkerscript.cpp
index 509ca6b..ae7a80d 100644
--- a/src/declarative/qml/qdeclarativeworkerscript.cpp
+++ b/src/declarative/qml/qdeclarativeworkerscript.cpp
@@ -514,7 +514,7 @@ void QDeclarativeWorkerScriptEngine::run()
/*!
\qmlclass WorkerScript QDeclarativeWorkerScript
- \ingroup qml-utility-elements
+ \ingroup qml-utility-elements
\brief The WorkerScript element enables the use of threads in QML.
Use WorkerScript to run operations in a new thread.
@@ -528,7 +528,7 @@ void QDeclarativeWorkerScriptEngine::run()
\snippet doc/src/snippets/declarative/workerscript.qml 0
- The above worker script specifies a javascript file, "script.js", that handles
+ The above worker script specifies a JavaScript file, "script.js", that handles
the operations to be performed in the new thread. Here is \c script.js:
\qml
@@ -543,6 +543,19 @@ void QDeclarativeWorkerScriptEngine::run()
\tt script.js. This in turn sends a reply message that is then received
by the \tt onMessage() handler of \tt myWorker.
+
+ \section3 Restrictions
+
+ Since the \c WorkerScript.onMessage() function is run in a separate thread, the
+ JavaScript file is evaluated in a context separate from the main QML engine. This means
+ that unlike an ordinary JavaScript file that is imported into QML, the \c script.js
+ in the above example cannot access the properties, methods or other attributes
+ of the QML item, nor can it access any context properties set on the QML object
+ through QDeclarativeContext.
+
+ Additionally, there are restrictions on the types of values that can be passed to and
+ from the worker script. See the sendMessage() documentation for details.
+
\sa {declarative/threading/workerscript}{WorkerScript example},
{declarative/threading/threadedlistmodel}{Threaded ListModel example}
*/
@@ -586,6 +599,19 @@ void QDeclarativeWorkerScript::setSource(const QUrl &source)
Sends the given \a message to a worker script handler in another
thread. The other worker script handler can receive this message
through the onMessage() handler.
+
+ The \c message object may only contain values of the following
+ types:
+
+ \list
+ \o boolean, number, string
+ \o JavaScript objects and arrays
+ \o ListModel objects (any other type of QObject* is not allowed)
+ \endlist
+
+ All objects and arrays are copied to the \c message. With the exception
+ of ListModel objects, any modifications by the other thread to an object
+ passed in \c message will not be reflected in the original object.
*/
void QDeclarativeWorkerScript::sendMessage(const QScriptValue &message)
{
diff --git a/src/declarative/qml/qmetaobjectbuilder.cpp b/src/declarative/qml/qmetaobjectbuilder.cpp
index 58f8811..dfe89f8 100644
--- a/src/declarative/qml/qmetaobjectbuilder.cpp
+++ b/src/declarative/qml/qmetaobjectbuilder.cpp
@@ -41,10 +41,6 @@
#include "private/qmetaobjectbuilder_p.h"
-#ifndef Q_OS_WIN
-#include <stdint.h>
-#endif
-
QT_BEGIN_NAMESPACE
/*!
@@ -1264,8 +1260,8 @@ static int buildMetaObject(QMetaObjectBuilderPrivate *d, char *buf,
char *str = reinterpret_cast<char *>(buf + size);
if (buf) {
if (relocatable) {
- meta->d.stringdata = reinterpret_cast<const char *>((intptr_t)size);
- meta->d.data = reinterpret_cast<uint *>((intptr_t)pmetaSize);
+ meta->d.stringdata = reinterpret_cast<const char *>((quintptr)size);
+ meta->d.data = reinterpret_cast<uint *>((quintptr)pmetaSize);
} else {
meta->d.stringdata = str;
meta->d.data = reinterpret_cast<uint *>(data);
@@ -1502,8 +1498,8 @@ void QMetaObjectBuilder::fromRelocatableData(QMetaObject *output,
const char *buf = data.constData();
const QMetaObject *dataMo = reinterpret_cast<const QMetaObject *>(buf);
- intptr_t stringdataOffset = (intptr_t)dataMo->d.stringdata;
- intptr_t dataOffset = (intptr_t)dataMo->d.data;
+ quintptr stringdataOffset = (quintptr)dataMo->d.stringdata;
+ quintptr dataOffset = (quintptr)dataMo->d.data;
output->d.superdata = superclass;
output->d.stringdata = buf + stringdataOffset;
diff --git a/src/declarative/util/qdeclarativefontloader.cpp b/src/declarative/util/qdeclarativefontloader.cpp
index 9fee257..03a0561 100644
--- a/src/declarative/util/qdeclarativefontloader.cpp
+++ b/src/declarative/util/qdeclarativefontloader.cpp
@@ -297,23 +297,25 @@ void QDeclarativeFontLoader::setName(const QString &name)
Use this status to provide an update or respond to the status change in some way.
For example, you could:
- \e {Trigger a state change:}
- \qml
- State { name: 'loaded'; when: loader.status = FontLoader.Ready }
+ \list
+ \o Trigger a state change:
+ \qml
+ State { name: 'loaded'; when: loader.status == FontLoader.Ready }
\endqml
- \e {Implement an \c onStatusChanged signal handler:}
- \qml
+ \o Implement an \c onStatusChanged signal handler:
+ \qml
FontLoader {
id: loader
onStatusChanged: if (loader.status == FontLoader.Ready) console.log('Loaded')
}
\endqml
- \e {Bind to the status value:}
+ \o Bind to the status value:
\qml
- Text { text: loader.status != FontLoader.Ready ? 'Not Loaded' : 'Loaded' }
+ Text { text: loader.status == FontLoader.Ready ? 'Loaded' : 'Not loaded' }
\endqml
+ \endlist
*/
QDeclarativeFontLoader::Status QDeclarativeFontLoader::status() const
{
diff --git a/src/declarative/util/qdeclarativestate.cpp b/src/declarative/util/qdeclarativestate.cpp
index 0f5413e..3915485 100644
--- a/src/declarative/util/qdeclarativestate.cpp
+++ b/src/declarative/util/qdeclarativestate.cpp
@@ -58,7 +58,7 @@ QT_BEGIN_NAMESPACE
DEFINE_BOOL_CONFIG_OPTION(stateChangeDebug, STATECHANGE_DEBUG);
QDeclarativeAction::QDeclarativeAction()
-: restore(true), actionDone(false), reverseEvent(false), deletableToBinding(false), fromBinding(0), toBinding(0), event(0),
+: restore(true), actionDone(false), reverseEvent(false), deletableToBinding(false), fromBinding(0), event(0),
specifiedObject(0)
{
}
@@ -67,7 +67,7 @@ QDeclarativeAction::QDeclarativeAction(QObject *target, const QString &propertyN
const QVariant &value)
: restore(true), actionDone(false), reverseEvent(false), deletableToBinding(false),
property(target, propertyName), toValue(value),
- fromBinding(0), toBinding(0), event(0),
+ fromBinding(0), event(0),
specifiedObject(target), specifiedProperty(propertyName)
{
if (property.isValid())
@@ -78,7 +78,7 @@ QDeclarativeAction::QDeclarativeAction(QObject *target, const QString &propertyN
QDeclarativeContext *context, const QVariant &value)
: restore(true), actionDone(false), reverseEvent(false), deletableToBinding(false),
property(target, propertyName, context), toValue(value),
- fromBinding(0), toBinding(0), event(0),
+ fromBinding(0), event(0),
specifiedObject(target), specifiedProperty(propertyName)
{
if (property.isValid())
@@ -503,11 +503,11 @@ void QDeclarativeState::addEntriesToRevertList(const QList<QDeclarativeAction> &
const QDeclarativeAction &action = actionListIterator.next();
QDeclarativeSimpleAction simpleAction(action);
action.property.write(action.toValue);
- if (action.toBinding) {
+ if (!action.toBinding.isNull()) {
QDeclarativeAbstractBinding *oldBinding = QDeclarativePropertyPrivate::binding(simpleAction.property());
if (oldBinding)
QDeclarativePropertyPrivate::setBinding(simpleAction.property(), 0);
- QDeclarativePropertyPrivate::setBinding(simpleAction.property(), action.toBinding, QDeclarativePropertyPrivate::DontRemoveBinding);
+ QDeclarativePropertyPrivate::setBinding(simpleAction.property(), action.toBinding.data(), QDeclarativePropertyPrivate::DontRemoveBinding);
}
simpleActionList.append(simpleAction);
@@ -675,7 +675,7 @@ void QDeclarativeState::apply(QDeclarativeStateGroup *group, QDeclarativeTransit
a.property = d->revertList.at(ii).property();
a.fromValue = cur;
a.toValue = d->revertList.at(ii).value();
- a.toBinding = d->revertList.at(ii).binding();
+ a.toBinding = QDeclarativeAbstractBinding::getPointer(d->revertList.at(ii).binding());
a.specifiedObject = d->revertList.at(ii).specifiedObject();
a.specifiedProperty = d->revertList.at(ii).specifiedProperty();
a.event = d->revertList.at(ii).event();
diff --git a/src/declarative/util/qdeclarativestate_p.h b/src/declarative/util/qdeclarativestate_p.h
index fc7c940..7b9c18a 100644
--- a/src/declarative/util/qdeclarativestate_p.h
+++ b/src/declarative/util/qdeclarativestate_p.h
@@ -45,6 +45,7 @@
#include <qdeclarative.h>
#include <qdeclarativeproperty.h>
#include <QtCore/qobject.h>
+#include <private/qdeclarativebinding_p.h>
#include <private/qdeclarativeglobal_p.h>
QT_BEGIN_HEADER
@@ -75,7 +76,7 @@ public:
QVariant toValue;
QDeclarativeAbstractBinding *fromBinding;
- QDeclarativeAbstractBinding *toBinding;
+ QDeclarativeAbstractBinding::Pointer toBinding;
QDeclarativeActionEvent *event;
//strictly for matching
diff --git a/src/declarative/util/qdeclarativestate_p_p.h b/src/declarative/util/qdeclarativestate_p_p.h
index 4fd8f21..98c3f7b 100644
--- a/src/declarative/util/qdeclarativestate_p_p.h
+++ b/src/declarative/util/qdeclarativestate_p_p.h
@@ -85,7 +85,7 @@ public:
m_reverseEvent = true;
} else {
m_value = a.toValue;
- m_binding = QDeclarativeAbstractBinding::getPointer(a.toBinding);
+ m_binding = a.toBinding;
m_reverseEvent = false;
}
}
diff --git a/src/declarative/util/qdeclarativetransition.cpp b/src/declarative/util/qdeclarativetransition.cpp
index 478c7f4..c8bc7b3 100644
--- a/src/declarative/util/qdeclarativetransition.cpp
+++ b/src/declarative/util/qdeclarativetransition.cpp
@@ -86,12 +86,16 @@ QT_BEGIN_NAMESPACE
Item {
...
transitions: [
- Transition { ... },
+ Transition { to: "state1" ... },
Transition { ... }
]
}
\endqml
+ If multiple Transitions are specified, only a single (best-matching) Transition will be applied for any particular
+ state change. In the example above, when changing to \c state1, the first transition will be used, rather
+ than the more generic second transition.
+
If a state change has a Transition that matches the same property as a
\l Behavior, the Transition animation overrides the \l Behavior for that
state change.
diff --git a/src/declarative/util/qdeclarativetransitionmanager.cpp b/src/declarative/util/qdeclarativetransitionmanager.cpp
index 89b0044..d19e6f2 100644
--- a/src/declarative/util/qdeclarativetransitionmanager.cpp
+++ b/src/declarative/util/qdeclarativetransitionmanager.cpp
@@ -99,8 +99,8 @@ void QDeclarativeTransitionManager::complete()
void QDeclarativeTransitionManagerPrivate::applyBindings()
{
foreach(const QDeclarativeAction &action, bindingsList) {
- if (action.toBinding) {
- QDeclarativePropertyPrivate::setBinding(action.property, action.toBinding);
+ if (!action.toBinding.isNull()) {
+ QDeclarativePropertyPrivate::setBinding(action.property, action.toBinding.data());
} else if (action.event) {
if (action.reverseEvent)
action.event->reverse();
@@ -145,8 +145,8 @@ void QDeclarativeTransitionManager::transition(const QList<QDeclarativeAction> &
// Apply all the property and binding changes
for (int ii = 0; ii < applyList.size(); ++ii) {
const QDeclarativeAction &action = applyList.at(ii);
- if (action.toBinding) {
- QDeclarativePropertyPrivate::setBinding(action.property, action.toBinding, QDeclarativePropertyPrivate::BypassInterceptor | QDeclarativePropertyPrivate::DontRemoveBinding);
+ if (!action.toBinding.isNull()) {
+ QDeclarativePropertyPrivate::setBinding(action.property, action.toBinding.data(), QDeclarativePropertyPrivate::BypassInterceptor | QDeclarativePropertyPrivate::DontRemoveBinding);
} else if (!action.event) {
QDeclarativePropertyPrivate::write(action.property, action.toValue, QDeclarativePropertyPrivate::BypassInterceptor | QDeclarativePropertyPrivate::DontRemoveBinding);
} else if (action.event->isReversable()) {
@@ -165,7 +165,7 @@ void QDeclarativeTransitionManager::transition(const QList<QDeclarativeAction> &
continue;
}
const QDeclarativeProperty &prop = action->property;
- if (action->toBinding || !action->toValue.isValid()) {
+ if (!action->toBinding.isNull() || !action->toValue.isValid()) {
action->toValue = prop.read();
}
}
@@ -259,10 +259,10 @@ void QDeclarativeTransitionManager::cancel()
for(int i = 0; i < d->bindingsList.count(); ++i) {
QDeclarativeAction action = d->bindingsList[i];
- if (action.toBinding && action.deletableToBinding) {
+ if (!action.toBinding.isNull() && action.deletableToBinding) {
QDeclarativePropertyPrivate::setBinding(action.property, 0);
- action.toBinding->destroy();
- action.toBinding = 0;
+ action.toBinding.data()->destroy();
+ action.toBinding.clear();
action.deletableToBinding = false;
} else if (action.event) {
//### what do we do here?
diff --git a/src/gui/egl/qegl.cpp b/src/gui/egl/qegl.cpp
index 2a82427..66cb843 100644
--- a/src/gui/egl/qegl.cpp
+++ b/src/gui/egl/qegl.cpp
@@ -210,7 +210,7 @@ EGLConfig QEgl::defaultConfig(int devType, API api, ConfigOptions options)
else
configId = qgetenv("QT_GL_EGL_CONFIG");
if (!configId.isEmpty()) {
- // Overriden, so get the EGLConfig for the specified config ID:
+ // Overridden, so get the EGLConfig for the specified config ID:
EGLint properties[] = {
EGL_CONFIG_ID, (EGLint)configId.toInt(),
EGL_NONE
@@ -267,7 +267,7 @@ EGLConfig QEgl::defaultConfig(int devType, API api, ConfigOptions options)
configAttribs.setValue(EGL_STENCIL_SIZE, 1);
configAttribs.setValue(EGL_SAMPLE_BUFFERS, 1);
#ifndef QT_OPENGL_ES_2
- // Aditionally, the GL1 engine likes to have a depth buffer for clipping
+ // Additionally, the GL1 engine likes to have a depth buffer for clipping
configAttribs.setValue(EGL_DEPTH_SIZE, 1);
#endif
}
diff --git a/src/gui/graphicsview/qgraphicsproxywidget.cpp b/src/gui/graphicsview/qgraphicsproxywidget.cpp
index ce63659..bf61150 100644
--- a/src/gui/graphicsview/qgraphicsproxywidget.cpp
+++ b/src/gui/graphicsview/qgraphicsproxywidget.cpp
@@ -1508,7 +1508,7 @@ int QGraphicsProxyWidget::type() const
Creates a proxy widget for the given \a child of the widget
contained in this proxy.
- This function makes it possible to aquire proxies for
+ This function makes it possible to acquire proxies for
non top-level widgets. For instance, you can embed a dialog,
and then transform only one of its widgets.
diff --git a/src/gui/graphicsview/qgraphicssceneevent.cpp b/src/gui/graphicsview/qgraphicssceneevent.cpp
index a0ecd4c..d9ff655 100644
--- a/src/gui/graphicsview/qgraphicssceneevent.cpp
+++ b/src/gui/graphicsview/qgraphicssceneevent.cpp
@@ -1629,7 +1629,7 @@ QGraphicsSceneMoveEvent::~QGraphicsSceneMoveEvent()
}
/*!
- Returns the old position (i.e., the position immediatly before the widget
+ Returns the old position (i.e., the position immediately before the widget
was moved).
\sa newPos(), QGraphicsItem::setPos()
diff --git a/src/gui/graphicsview/qgraphicsview.cpp b/src/gui/graphicsview/qgraphicsview.cpp
index 0d39bb5..73f1493 100644
--- a/src/gui/graphicsview/qgraphicsview.cpp
+++ b/src/gui/graphicsview/qgraphicsview.cpp
@@ -80,9 +80,7 @@ static const int QGRAPHICSVIEW_PREALLOC_STYLE_OPTIONS = 503; // largest prime <
yourself, you can call setSceneRect(). This will adjust the scroll bars'
ranges appropriately. Note that although the scene supports a virtually
unlimited size, the range of the scroll bars will never exceed the range of
- an integer (INT_MIN, INT_MAX). When the scene is larger than the scroll
- bars' values, you can choose to use translate() to navigate the scene
- instead.
+ an integer (INT_MIN, INT_MAX).
QGraphicsView visualizes the scene by calling render(). By default, the
items are drawn onto the viewport by using a regular QPainter, and using
@@ -101,7 +99,8 @@ static const int QGRAPHICSVIEW_PREALLOC_STYLE_OPTIONS = 503; // largest prime <
convenience functions rotate(), scale(), translate() or shear(). The most
two common transformations are scaling, which is used to implement
zooming, and rotation. QGraphicsView keeps the center of the view fixed
- during a transformation.
+ during a transformation. Because of the scene alignment (setAligment()),
+ translating the view will have no visual impact.
You can interact with the items on the scene by using the mouse and
keyboard. QGraphicsView translates the mouse and key events into \e scene
diff --git a/src/gui/graphicsview/qgraphicswidget.cpp b/src/gui/graphicsview/qgraphicswidget.cpp
index 4a733be..e48f9a7 100644
--- a/src/gui/graphicsview/qgraphicswidget.cpp
+++ b/src/gui/graphicsview/qgraphicswidget.cpp
@@ -450,7 +450,7 @@ void QGraphicsWidget::setGeometry(const QRectF &rect)
bottom.
Contents margins are used by the assigned layout to define the placement
- of subwidgets and layouts. Margins are particularily useful for widgets
+ of subwidgets and layouts. Margins are particularly useful for widgets
that constrain subwidgets to only a section of its own geometry. For
example, a group box with a layout will place subwidgets inside its frame,
but below the title.
diff --git a/src/gui/image/qimage_ssse3.cpp b/src/gui/image/qimage_ssse3.cpp
index 9aed011..836d7b0 100644
--- a/src/gui/image/qimage_ssse3.cpp
+++ b/src/gui/image/qimage_ssse3.cpp
@@ -54,7 +54,7 @@ Q_GUI_EXPORT void QT_FASTCALL qt_convert_rgb888_to_rgb32_ssse3(quint32 *dst, con
{
quint32 *const end = dst + len;
- // Prologue, align dst to 16 bytes. The alignement is done on dst because it has 4 store()
+ // Prologue, align dst to 16 bytes. The alignment is done on dst because it has 4 store()
// for each 3 load() of src.
const int offsetToAlignOn16Bytes = (4 - ((reinterpret_cast<quintptr>(dst) >> 2) & 0x3)) & 0x3;
const int prologLength = qMin(len, offsetToAlignOn16Bytes);
diff --git a/src/gui/image/qpixmap.cpp b/src/gui/image/qpixmap.cpp
index 1b370c0..9fd10ae 100644
--- a/src/gui/image/qpixmap.cpp
+++ b/src/gui/image/qpixmap.cpp
@@ -1110,6 +1110,9 @@ QPixmap QPixmap::grabWidget(QWidget * widget, const QRect &rect)
return QPixmap();
QPixmap res(r.size());
+ if (!qt_widget_private(widget)->isOpaque)
+ res.fill(Qt::transparent);
+
widget->d_func()->render(&res, QPoint(), r, QWidget::DrawWindowBackground
| QWidget::DrawChildren | QWidget::IgnoreMask, true);
return res;
diff --git a/src/gui/image/qxpmhandler.cpp b/src/gui/image/qxpmhandler.cpp
index b97afd3..453100c 100644
--- a/src/gui/image/qxpmhandler.cpp
+++ b/src/gui/image/qxpmhandler.cpp
@@ -766,7 +766,7 @@ static bool qt_get_named_xpm_rgb(const char *name_no_space, QRgb *rgb)
{
XPMRGBData x;
x.name = name_no_space;
- // Funtion bsearch() is supposed to be
+ // Function bsearch() is supposed to be
// void *bsearch(const void *key, const void *base, ...
// So why (char*)? Are there broken bsearch() declarations out there?
XPMRGBData *r = (XPMRGBData *)bsearch((char *)&x, (char *)xpmRgbTbl, xpmRgbTblSize,
diff --git a/src/gui/itemviews/qabstractitemview.cpp b/src/gui/itemviews/qabstractitemview.cpp
index a9612a2..8af6013 100644
--- a/src/gui/itemviews/qabstractitemview.cpp
+++ b/src/gui/itemviews/qabstractitemview.cpp
@@ -1169,7 +1169,7 @@ QAbstractItemView::EditTriggers QAbstractItemView::editTriggers() const
\property QAbstractItemView::verticalScrollMode
\brief how the view scrolls its contents in the vertical direction
- This property controlls how the view scroll its contents vertically.
+ This property controls how the view scroll its contents vertically.
Scrolling can be done either per pixel or per item.
*/
@@ -1195,7 +1195,7 @@ QAbstractItemView::ScrollMode QAbstractItemView::verticalScrollMode() const
\property QAbstractItemView::horizontalScrollMode
\brief how the view scrolls its contents in the horizontal direction
- This property controlls how the view scroll its contents horizontally.
+ This property controls how the view scroll its contents horizontally.
Scrolling can be done either per pixel or per item.
*/
@@ -1278,7 +1278,7 @@ bool QAbstractItemView::hasAutoScroll() const
\property QAbstractItemView::autoScrollMargin
\brief the size of the area when auto scrolling is triggered
- This property controlls the size of the area at the edge of the viewport that
+ This property controls the size of the area at the edge of the viewport that
triggers autoscrolling. The default value is 16 pixels.
*/
void QAbstractItemView::setAutoScrollMargin(int margin)
diff --git a/src/gui/itemviews/qtableview.cpp b/src/gui/itemviews/qtableview.cpp
index d8fef55..d1022f1 100644
--- a/src/gui/itemviews/qtableview.cpp
+++ b/src/gui/itemviews/qtableview.cpp
@@ -114,7 +114,7 @@ void QSpanCollection::updateSpan(QSpanCollection::Span *span, int old_height)
}
} else if (old_height > span->height()) {
//remove the span from all the subspans lists that intersect the columns not covered anymore
- Index::iterator it_y = index.lowerBound(-qMax(span->bottom(), span->top())); //qMax usefull if height is 0
+ Index::iterator it_y = index.lowerBound(-qMax(span->bottom(), span->top())); //qMax useful if height is 0
Q_ASSERT(it_y != index.end()); //it_y must exist since the span is in the list
while (-it_y.key() <= span->top() + old_height -1) {
if (-it_y.key() > span->bottom()) {
@@ -1404,7 +1404,7 @@ void QTableView::paintEvent(QPaintEvent *event)
}
if (showGrid) {
- // Find the bottom right (the last rows/coloumns might be hidden)
+ // Find the bottom right (the last rows/columns might be hidden)
while (verticalHeader->isSectionHidden(verticalHeader->logicalIndex(bottom))) --bottom;
QPen old = painter.pen();
painter.setPen(gridPen);
diff --git a/src/gui/kernel/qapplication_mac.mm b/src/gui/kernel/qapplication_mac.mm
index e5364d0..3aafeb4 100644
--- a/src/gui/kernel/qapplication_mac.mm
+++ b/src/gui/kernel/qapplication_mac.mm
@@ -549,7 +549,7 @@ void qt_mac_update_os_settings()
FontMap("QTipLabel", kThemeSmallSystemFont),
FontMap("QLabel", kThemeSystemFont),
FontMap("QToolButton", kThemeSmallSystemFont),
- FontMap("QMenuItem", kThemeMenuItemCmdKeyFont), // It doesn't exist, but its unique.
+ FontMap("QMenuItem", kThemeMenuItemFont), // It doesn't exist, but its unique.
FontMap("QComboLineEdit", kThemeViewsFont), // It doesn't exist, but its unique.
FontMap("QSmallFont", kThemeSmallSystemFont), // It doesn't exist, but its unique.
FontMap("QMiniFont", kThemeMiniSystemFont), // It doesn't exist, but its unique.
diff --git a/src/gui/kernel/qapplication_s60.cpp b/src/gui/kernel/qapplication_s60.cpp
index 96856b8..f352871 100644
--- a/src/gui/kernel/qapplication_s60.cpp
+++ b/src/gui/kernel/qapplication_s60.cpp
@@ -1425,7 +1425,7 @@ void qt_init(QApplicationPrivate * /* priv */, int)
TInt err = CApaCommandLine::GetCommandLineFromProcessEnvironment(commandLine);
// After this construction, CEikonEnv will be available from CEikonEnv::Static().
// (much like our qApp).
- CEikonEnv* coe = new CEikonEnv;
+ QtEikonEnv* coe = new QtEikonEnv;
//not using QT_TRAP_THROWING, because coe owns the cleanupstack so it can't be pushed there.
if(err == KErrNone)
TRAP(err, coe->ConstructAppFromCommandLineL(factory,*commandLine));
diff --git a/src/gui/kernel/qeventdispatcher_s60.cpp b/src/gui/kernel/qeventdispatcher_s60.cpp
index bc787b8..77ebd0d 100644
--- a/src/gui/kernel/qeventdispatcher_s60.cpp
+++ b/src/gui/kernel/qeventdispatcher_s60.cpp
@@ -45,6 +45,62 @@
QT_BEGIN_NAMESPACE
+QtEikonEnv::QtEikonEnv()
+ : m_lastIterationCount(0)
+ , m_savedStatusCode(KRequestPending)
+ , m_hasAlreadyRun(false)
+{
+}
+
+QtEikonEnv::~QtEikonEnv()
+{
+}
+
+void QtEikonEnv::RunL()
+{
+ QEventDispatcherS60 *dispatcher = qobject_cast<QEventDispatcherS60 *>(QAbstractEventDispatcher::instance());
+ if (!dispatcher) {
+ CEikonEnv::RunL();
+ return;
+ }
+
+ if (m_lastIterationCount != dispatcher->iterationCount()) {
+ m_hasAlreadyRun = false;
+ m_lastIterationCount = dispatcher->iterationCount();
+ }
+
+ if (m_hasAlreadyRun) {
+ // Fool the active scheduler into believing we are still waiting for events.
+ // The window server thinks we are not, however.
+ m_savedStatusCode = iStatus.Int();
+ iStatus = KRequestPending;
+ SetActive();
+ dispatcher->queueDeferredActiveObjectsCompletion();
+ } else {
+ m_hasAlreadyRun = true;
+ CEikonEnv::RunL();
+ }
+}
+
+void QtEikonEnv::DoCancel()
+{
+ complete();
+
+ CEikonEnv::DoCancel();
+}
+
+void QtEikonEnv::complete()
+{
+ if (m_hasAlreadyRun) {
+ if (m_savedStatusCode != KRequestPending) {
+ TRequestStatus *status = &iStatus;
+ QEventDispatcherSymbian::RequestComplete(status, m_savedStatusCode);
+ m_savedStatusCode = KRequestPending;
+ }
+ m_hasAlreadyRun = false;
+ }
+}
+
QEventDispatcherS60::QEventDispatcherS60(QObject *parent)
: QEventDispatcherSymbian(parent),
m_noInputEvents(false)
@@ -127,4 +183,14 @@ void QEventDispatcherS60::removeInputEventsForWidget(QObject *object)
}
}
+// reimpl
+void QEventDispatcherS60::reactivateDeferredActiveObjects()
+{
+ if (S60->qtOwnsS60Environment) {
+ static_cast<QtEikonEnv *>(CCoeEnv::Static())->complete();
+ }
+
+ QEventDispatcherSymbian::reactivateDeferredActiveObjects();
+}
+
QT_END_NAMESPACE
diff --git a/src/gui/kernel/qeventdispatcher_s60_p.h b/src/gui/kernel/qeventdispatcher_s60_p.h
index d2f327c..c14fef0 100644
--- a/src/gui/kernel/qeventdispatcher_s60_p.h
+++ b/src/gui/kernel/qeventdispatcher_s60_p.h
@@ -56,8 +56,30 @@
#include <private/qeventdispatcher_symbian_p.h>
#include "qt_s60_p.h"
+#include <eikenv.h>
+
QT_BEGIN_NAMESPACE
+class QEventDispatcherS60;
+
+class QtEikonEnv : public CEikonEnv
+{
+public:
+ QtEikonEnv();
+ ~QtEikonEnv();
+
+ // from CActive.
+ void RunL();
+ void DoCancel();
+
+ void complete();
+
+private:
+ int m_lastIterationCount;
+ TInt m_savedStatusCode;
+ bool m_hasAlreadyRun;
+};
+
class Q_GUI_EXPORT QEventDispatcherS60 : public QEventDispatcherSymbian
{
Q_OBJECT
@@ -73,6 +95,8 @@ public:
void saveInputEvent(QSymbianControl *control, QWidget *widget, QInputEvent *event);
+ void reactivateDeferredActiveObjects();
+
private:
bool sendDeferredInputEvents();
diff --git a/src/gui/kernel/qgesturemanager.cpp b/src/gui/kernel/qgesturemanager.cpp
index 8dd2db7..5f1bb85 100644
--- a/src/gui/kernel/qgesturemanager.cpp
+++ b/src/gui/kernel/qgesturemanager.cpp
@@ -171,6 +171,10 @@ void QGestureManager::cleanupCachedGestures(QObject *target, Qt::GestureType typ
foreach (QGesture *g, gestures) {
m_deletedRecognizers.remove(g);
m_gestureToRecognizer.remove(g);
+ m_maybeGestures.remove(g);
+ m_activeGestures.remove(g);
+ m_gestureOwners.remove(g);
+ m_gestureTargets.remove(g);
}
qDeleteAll(gestures);
diff --git a/src/gui/kernel/qmotifdnd_x11.cpp b/src/gui/kernel/qmotifdnd_x11.cpp
index 3334455..3b79129 100644
--- a/src/gui/kernel/qmotifdnd_x11.cpp
+++ b/src/gui/kernel/qmotifdnd_x11.cpp
@@ -385,7 +385,10 @@ static void DndReadSourceProperty(Display * dpy,
static void DndWriteReceiverProperty(Display * dpy, Window window,
unsigned char protocol_style)
{
- DndReceiverProp receiver_prop ;
+ DndReceiverProp receiver_prop;
+
+ // squelch potential valgrind errors about uninitialized reads
+ memset(&receiver_prop, 0, sizeof(receiver_prop));
receiver_prop.byte_order = DndByteOrder() ;
receiver_prop.protocol_version = DND_PROTOCOL_VERSION;
diff --git a/src/gui/kernel/qt_cocoa_helpers_mac.mm b/src/gui/kernel/qt_cocoa_helpers_mac.mm
index 5a522f9..48d21e9 100644
--- a/src/gui/kernel/qt_cocoa_helpers_mac.mm
+++ b/src/gui/kernel/qt_cocoa_helpers_mac.mm
@@ -79,6 +79,7 @@
#include <qdesktopwidget.h>
#include <qevent.h>
#include <qpixmapcache.h>
+#include <qvarlengtharray.h>
#include <private/qevent_p.h>
#include <private/qt_cocoa_helpers_mac_p.h>
#include <private/qt_mac_p.h>
@@ -616,6 +617,27 @@ Qt::KeyboardModifiers qt_cocoaModifiers2QtModifiers(ulong modifierFlags)
return qtMods;
}
+NSString *qt_mac_removePrivateUnicode(NSString* string)
+{
+ int len = [string length];
+ if (len) {
+ QVarLengthArray <unichar, 10> characters(len);
+ bool changed = false;
+ for (int i = 0; i<len; i++) {
+ characters[i] = [string characterAtIndex:i];
+ // check if they belong to key codes in private unicode range
+ // currently we need to handle only the NSDeleteFunctionKey
+ if (characters[i] == NSDeleteFunctionKey) {
+ characters[i] = NSDeleteCharacter;
+ changed = true;
+ }
+ }
+ if (changed)
+ return [NSString stringWithCharacters:characters.data() length:len];
+ }
+ return string;
+}
+
Qt::KeyboardModifiers qt_cocoaDragOperation2QtModifiers(uint dragOperations)
{
Qt::KeyboardModifiers qtMods =Qt::NoModifier;
diff --git a/src/gui/kernel/qwidget.cpp b/src/gui/kernel/qwidget.cpp
index 25450ce..cd1c9f0 100644
--- a/src/gui/kernel/qwidget.cpp
+++ b/src/gui/kernel/qwidget.cpp
@@ -7053,7 +7053,11 @@ bool QWidget::restoreGeometry(const QByteArray &geometry)
if (maximized || fullScreen) {
// set geomerty before setting the window state to make
// sure the window is maximized to the right screen.
+ // Skip on windows: the window is restored into a broken
+ // half-maximized state.
+#ifndef Q_WS_WIN
setGeometry(restoredNormalGeometry);
+#endif
Qt::WindowStates ws = windowState();
if (maximized)
ws |= Qt::WindowMaximized;
diff --git a/src/gui/kernel/qwidget_win.cpp b/src/gui/kernel/qwidget_win.cpp
index 39ed750..c358b9b 100644
--- a/src/gui/kernel/qwidget_win.cpp
+++ b/src/gui/kernel/qwidget_win.cpp
@@ -329,18 +329,11 @@ void QWidgetPrivate::create_sys(WId window, bool initializeWindow, bool destroyO
if (topLevel) {
if ((type == Qt::Window || dialog || tool)) {
if (!(flags & Qt::FramelessWindowHint)) {
- if (!(flags & Qt::MSWindowsFixedSizeDialogHint)) {
+ style |= WS_POPUP;
+ if (!(flags & Qt::MSWindowsFixedSizeDialogHint))
style |= WS_THICKFRAME;
- if(!(flags &
- ( Qt::WindowSystemMenuHint
- | Qt::WindowTitleHint
- | Qt::WindowMinMaxButtonsHint
- | Qt::WindowCloseButtonHint
- | Qt::WindowContextHelpButtonHint)))
- style |= WS_POPUP;
- } else {
- style |= WS_POPUP | WS_DLGFRAME;
- }
+ else
+ style |= WS_DLGFRAME;
}
if (flags & Qt::WindowTitleHint)
style |= WS_CAPTION;
@@ -424,6 +417,14 @@ void QWidgetPrivate::create_sys(WId window, bool initializeWindow, bool destroyO
if (!q->testAttribute(Qt::WA_Resized)) {
w = sw/2;
h = 4*sh/10;
+ if (extra) {
+ int dx = rect.right - rect.left;
+ int dy = rect.bottom - rect.top;
+ w = qMin(w, extra->maxw + dx);
+ h = qMin(h, extra->maxh + dy);
+ w = qMax(w, extra->minw + dx);
+ h = qMax(h, extra->minh + dy);
+ }
}
if (!wasMoved) {
x = sw/2 - w/2;
diff --git a/src/gui/painting/qgrayraster.c b/src/gui/painting/qgrayraster.c
index ec9ebeb..536f265 100644
--- a/src/gui/painting/qgrayraster.c
+++ b/src/gui/painting/qgrayraster.c
@@ -408,25 +408,31 @@
/* */
/* Record the current cell in the table. */
/* */
- static PCell
- gray_find_cell( RAS_ARG )
+ static void
+ gray_record_cell( RAS_ARG )
{
PCell *pcell, cell;
int x = ras.ex;
+ if ( ras.invalid || !( ras.area | ras.cover ) )
+ return;
if ( x > ras.max_ex )
x = ras.max_ex;
pcell = &ras.ycells[ras.ey];
+
for (;;)
{
cell = *pcell;
if ( cell == NULL || cell->x > x )
break;
- if ( cell->x == x )
- goto Exit;
+ if ( cell->x == x ) {
+ cell->area += ras.area;
+ cell->cover += ras.cover;
+ return;
+ }
pcell = &cell->next;
}
@@ -436,28 +442,11 @@
cell = ras.cells + ras.num_cells++;
cell->x = x;
- cell->area = 0;
- cell->cover = 0;
+ cell->area = ras.area;
+ cell->cover = ras.cover;
cell->next = *pcell;
*pcell = cell;
-
- Exit:
- return cell;
- }
-
-
- static void
- gray_record_cell( RAS_ARG )
- {
- if ( !ras.invalid && ( ras.area | ras.cover ) )
- {
- PCell cell = gray_find_cell( RAS_VAR );
-
-
- cell->area += ras.area;
- cell->cover += ras.cover;
- }
}
diff --git a/src/gui/painting/qgrayraster_p.h b/src/gui/painting/qgrayraster_p.h
index ad595b8..d610a9a 100644
--- a/src/gui/painting/qgrayraster_p.h
+++ b/src/gui/painting/qgrayraster_p.h
@@ -91,7 +91,7 @@
/* Minimum buffer size for raster object, that accounts
for TWorker and TCell sizes.*/
-#define MINIMUM_POOL_SIZE 4096
+#define MINIMUM_POOL_SIZE 8192
QT_FT_EXPORT_VAR( const QT_FT_Raster_Funcs ) qt_ft_grays_raster;
diff --git a/src/gui/painting/qpaintengine_raster.cpp b/src/gui/painting/qpaintengine_raster.cpp
index 8088e63..97dfddf 100644
--- a/src/gui/painting/qpaintengine_raster.cpp
+++ b/src/gui/painting/qpaintengine_raster.cpp
@@ -874,9 +874,10 @@ void QRasterPaintEngine::updateState()
if (s->dirty & DirtyTransform)
updateMatrix(s->matrix);
- if (s->dirty & (DirtyPen|DirtyCompositionMode)) {
+ if (s->dirty & (DirtyPen|DirtyCompositionMode|DirtyOpacity)) {
const QPainter::CompositionMode mode = s->composition_mode;
s->flags.fast_text = (s->penData.type == QSpanData::Solid)
+ && s->intOpacity == 256
&& (mode == QPainter::CompositionMode_Source
|| (mode == QPainter::CompositionMode_SourceOver
&& qAlpha(s->penData.solid.color) == 255));
@@ -900,6 +901,7 @@ void QRasterPaintEngine::opacityChanged()
s->fillFlags |= DirtyOpacity;
s->strokeFlags |= DirtyOpacity;
s->pixmapFlags |= DirtyOpacity;
+ s->dirty |= DirtyOpacity;
s->intOpacity = (int) (s->opacity * 256);
}
@@ -3291,7 +3293,7 @@ void QRasterPaintEngine::drawStaticTextItem(QStaticTextItem *textItem)
ensureState();
drawCachedGlyphs(textItem->numGlyphs, textItem->glyphs, textItem->glyphPositions,
- textItem->fontEngine);
+ textItem->fontEngine());
}
/*!
diff --git a/src/gui/painting/qpainter.cpp b/src/gui/painting/qpainter.cpp
index b0ca6ed..546861a 100644
--- a/src/gui/painting/qpainter.cpp
+++ b/src/gui/painting/qpainter.cpp
@@ -5857,7 +5857,7 @@ void QPainterPrivate::drawGlyphs(quint32 *glyphArray, QFixedPoint *positions, in
QStaticTextItem staticTextItem;
staticTextItem.color = state->pen.color();
staticTextItem.font = state->font;
- staticTextItem.fontEngine = fontEngine;
+ staticTextItem.setFontEngine(fontEngine);
staticTextItem.numGlyphs = glyphCount;
staticTextItem.glyphs = reinterpret_cast<glyph_t *>(const_cast<glyph_t *>(glyphArray));
staticTextItem.glyphPositions = positions;
@@ -6064,7 +6064,7 @@ void QPainter::drawStaticText(const QPointF &topLeftPosition, const QStaticText
d->extended->drawStaticTextItem(item);
drawDecorationForGlyphs(this, item->glyphs, item->glyphPositions,
- item->numGlyphs, item->fontEngine, staticText_d->font,
+ item->numGlyphs, item->fontEngine(), staticText_d->font,
QTextCharFormat());
}
if (currentColor != oldPen.color())
diff --git a/src/gui/painting/qtextureglyphcache.cpp b/src/gui/painting/qtextureglyphcache.cpp
index 78c1019..4a6c03f 100644
--- a/src/gui/painting/qtextureglyphcache.cpp
+++ b/src/gui/painting/qtextureglyphcache.cpp
@@ -312,7 +312,7 @@ QImage QTextureGlyphCache::textureMapForGlyph(glyph_t g, QFixed subPixelPosition
if (m_type == QFontEngineGlyphCache::Raster_RGBMask)
return m_current_fontengine->alphaRGBMapForGlyph(g, subPixelPosition, glyphMargin(), m_transform);
else
- return m_current_fontengine->alphaMapForGlyph(g, m_transform);
+ return m_current_fontengine->alphaMapForGlyph(g, subPixelPosition, m_transform);
return QImage();
}
diff --git a/src/gui/painting/qwindowsurface_raster.cpp b/src/gui/painting/qwindowsurface_raster.cpp
index 217723f..ae73d7d 100644
--- a/src/gui/painting/qwindowsurface_raster.cpp
+++ b/src/gui/painting/qwindowsurface_raster.cpp
@@ -251,6 +251,11 @@ void QRasterWindowSurface::flush(QWidget *widget, const QRegion &rgn, const QPoi
#ifdef Q_WS_MAC
+ // This is mainly done for native components like native "open file" dialog.
+ if (widget->testAttribute(Qt::WA_DontShowOnScreen)) {
+ return;
+ }
+
#ifdef QT_MAC_USE_COCOA
// Unified toolbar hack.
QMainWindow* mWindow = qobject_cast<QMainWindow*>(widget->window());
diff --git a/src/gui/styles/qs60style.cpp b/src/gui/styles/qs60style.cpp
index 6fb3689..087907f 100644
--- a/src/gui/styles/qs60style.cpp
+++ b/src/gui/styles/qs60style.cpp
@@ -405,13 +405,14 @@ void QS60StylePrivate::clearCaches(CacheClearReason reason)
QPixmapCache::clear();
break;
case CC_ThemeChange:
- m_colorCache.clear();
QPixmapCache::clear();
+#ifdef Q_WS_S60
+ deleteStoredSettings();
+#endif
deleteBackground();
break;
case CC_UndefinedChange:
default:
- m_colorCache.clear();
m_mappedFontsCache.clear();
QPixmapCache::clear();
deleteBackground();
@@ -419,64 +420,53 @@ void QS60StylePrivate::clearCaches(CacheClearReason reason)
}
}
-// Since S60Style has 'button' and 'tooltip' as a graphic, we don't have any native color which to use
-// for QPalette::Button and QPalette::ToolTipBase. Therefore S60Style needs to guesstimate
-// palette colors by calculating average rgb values for button pixels.
-// Returns Qt::black if there is an issue with the graphics (image is NULL, or no bits() found).
-QColor QS60StylePrivate::colorFromFrameGraphics(SkinFrameElements frame) const
+QColor QS60StylePrivate::calculatedColor(SkinFrameElements frame) const
{
- const bool cachedColorExists = m_colorCache.contains(frame);
- if (!cachedColorExists) {
- const int frameCornerWidth = pixelMetric(PM_FrameCornerWidth);
- const int frameCornerHeight = pixelMetric(PM_FrameCornerHeight);
- Q_ASSERT(2 * frameCornerWidth < 32);
- Q_ASSERT(2 * frameCornerHeight < 32);
-
- const QImage frameImage = QS60StylePrivate::frame(frame, QSize(32, 32)).toImage();
- Q_ASSERT(frameImage.bytesPerLine() > 0);
- if (frameImage.isNull())
- return Qt::black;
-
- const QRgb *pixelRgb = (const QRgb*)frameImage.bits();
- const int pixels = frameImage.byteCount()/sizeof(QRgb);
-
- int estimatedRed = 0;
- int estimatedGreen = 0;
- int estimatedBlue = 0;
-
- int skips = 0;
- int estimations = 0;
-
- const int topBorderLastPixel = frameCornerHeight*frameImage.width() - 1;
- const int bottomBorderFirstPixel = frameImage.width() * frameImage.height() - frameCornerHeight*frameImage.width() - 1;
- const int rightBorderFirstPixel = frameImage.width() - frameCornerWidth;
- const int leftBorderLastPixel = frameCornerWidth;
-
- while ((skips + estimations) < pixels) {
- if ((skips + estimations) > topBorderLastPixel &&
- (skips + estimations) < bottomBorderFirstPixel) {
- for (int rowIndex = 0; rowIndex < frameImage.width(); rowIndex++) {
- if (rowIndex > leftBorderLastPixel &&
- rowIndex < rightBorderFirstPixel) {
- estimatedRed += qRed(*pixelRgb);
- estimatedGreen += qGreen(*pixelRgb);
- estimatedBlue += qBlue(*pixelRgb);
- }
- pixelRgb++;
- estimations++;
+ const int frameCornerWidth = pixelMetric(PM_FrameCornerWidth);
+ const int frameCornerHeight = pixelMetric(PM_FrameCornerHeight);
+ Q_ASSERT(2 * frameCornerWidth < 32);
+ Q_ASSERT(2 * frameCornerHeight < 32);
+
+ const QImage frameImage = QS60StylePrivate::frame(frame, QSize(32, 32)).toImage();
+ Q_ASSERT(frameImage.bytesPerLine() > 0);
+ if (frameImage.isNull())
+ return Qt::black;
+
+ const QRgb *pixelRgb = (const QRgb*)frameImage.constBits();
+ const int pixels = frameImage.byteCount() / sizeof(QRgb);
+
+ int estimatedRed = 0;
+ int estimatedGreen = 0;
+ int estimatedBlue = 0;
+
+ int skips = 0;
+ int estimations = 0;
+
+ const int topBorderLastPixel = frameCornerHeight * frameImage.width() - 1;
+ const int bottomBorderFirstPixel = frameImage.width() * frameImage.height() - topBorderLastPixel;
+ const int rightBorderFirstPixel = frameImage.width() - frameCornerWidth;
+ const int leftBorderLastPixel = frameCornerWidth;
+
+ while ((skips + estimations) < pixels) {
+ if ((skips + estimations) > topBorderLastPixel &&
+ (skips + estimations) < bottomBorderFirstPixel) {
+ for (int rowIndex = 0; rowIndex < frameImage.width(); rowIndex++) {
+ if (rowIndex > leftBorderLastPixel &&
+ rowIndex < rightBorderFirstPixel) {
+ estimatedRed += qRed(*pixelRgb);
+ estimatedGreen += qGreen(*pixelRgb);
+ estimatedBlue += qBlue(*pixelRgb);
}
- } else {
pixelRgb++;
- skips++;
+ estimations++;
}
+ } else {
+ pixelRgb++;
+ skips++;
}
- QColor frameColor(estimatedRed/estimations, estimatedGreen/estimations, estimatedBlue/estimations);
- m_colorCache.insert(frame, frameColor);
- return !estimations ? Qt::black : frameColor;
- } else {
- return m_colorCache.value(frame);
}
-
+ QColor frameColor(estimatedRed/estimations, estimatedGreen/estimations, estimatedBlue/estimations);
+ return !estimations ? Qt::black : frameColor;
}
void QS60StylePrivate::setThemePalette(QApplication *app) const
@@ -731,11 +721,14 @@ void QS60StylePrivate::setThemePalette(QPalette *palette) const
palette->setBrush(QPalette::Window, backgroundTexture());
// set as transparent so that styled full screen theme background is visible
palette->setBrush(QPalette::Base, Qt::transparent);
- // set button and tooltipbase based on pixel colors
+ // set button color based on pixel colors
+#ifndef Q_WS_S60
+ //For emulated style, just calculate the color every time
+ const QColor buttonColor = calculatedColor(SF_ButtonNormal);
+#else
const QColor buttonColor = colorFromFrameGraphics(SF_ButtonNormal);
+#endif
palette->setColor(QPalette::Button, buttonColor);
- const QColor toolTipColor = colorFromFrameGraphics(SF_ToolTip);
- palette->setColor(QPalette::ToolTipBase, toolTipColor);
palette->setColor(QPalette::Light, palette->color(QPalette::Button).lighter());
palette->setColor(QPalette::Dark, palette->color(QPalette::Button).darker());
palette->setColor(QPalette::Midlight, palette->color(QPalette::Button).lighter(125));
diff --git a/src/gui/styles/qs60style_p.h b/src/gui/styles/qs60style_p.h
index b46f75e..db4285d 100644
--- a/src/gui/styles/qs60style_p.h
+++ b/src/gui/styles/qs60style_p.h
@@ -523,8 +523,12 @@ public:
static bool isSingleClickUi();
static bool isWidgetPressed(const QWidget *widget);
- // calculates average color based on button skin graphics (minus borders).
+#ifdef Q_WS_S60
+ static void deleteStoredSettings();
+ // calculates average color based on theme graphics (minus borders).
QColor colorFromFrameGraphics(SkinFrameElements frame) const;
+#endif
+ QColor calculatedColor(SkinFrameElements frame) const;
//set theme palette for application
void setThemePalette(QApplication *application) const;
@@ -542,7 +546,6 @@ public:
static const int m_numberOfLayouts;
mutable QHash<QPair<QS60StyleEnums::FontCategories , int>, QFont> m_mappedFontsCache;
- mutable QHash<SkinFrameElements, QColor> m_colorCache;
// Has one entry per SkinFrameElements
static const struct frameElementCenter {
diff --git a/src/gui/styles/qs60style_s60.cpp b/src/gui/styles/qs60style_s60.cpp
index a1ea308..7b75d40 100644
--- a/src/gui/styles/qs60style_s60.cpp
+++ b/src/gui/styles/qs60style_s60.cpp
@@ -48,6 +48,7 @@
#include "private/qpixmap_s60_p.h"
#include "private/qcore_symbian_p.h"
#include "qapplication.h"
+#include "qsettings.h"
#include "qpluginloader.h"
#include "qlibraryinfo.h"
@@ -69,6 +70,8 @@
#include <gulicon.h>
#include <AknBitmapAnimation.h>
+#include <centralrepository.h>
+
#if !defined(QT_NO_STYLE_S60) || defined(QT_PLUGIN)
QT_BEGIN_NAMESPACE
@@ -81,6 +84,8 @@ enum TDrawType {
ENoDraw
};
+const TUid personalisationUID = { 0x101F876F };
+
enum TSupportRelease {
ES60_None = 0x0000, //indicates that the commonstyle should draw the graphics
ES60_3_1 = 0x0001,
@@ -689,6 +694,76 @@ bool QS60StylePrivate::isSingleClickUi()
return (QSysInfo::s60Version() > QSysInfo::SV_S60_5_0);
}
+void QS60StylePrivate::deleteStoredSettings()
+{
+ QSettings settings(QSettings::UserScope, QLatin1String("Trolltech"));
+ settings.beginGroup(QLatin1String("QS60Style"));
+ settings.remove("");
+ settings.endGroup();
+}
+
+// Since S60Style has 'button' as a graphic, we don't have any native color which to use
+// for QPalette::Button. Therefore S60Style needs to guesstimate palette color by calculating
+// average rgb values for button pixels.
+// Returns Qt::black if there is an issue with the graphics (image is NULL, or no constBits() found).
+QColor QS60StylePrivate::colorFromFrameGraphics(SkinFrameElements frame) const
+{
+#ifndef QT_NO_SETTINGS
+ TInt themeID = 0;
+ //First we need to fetch active theme ID. We need to store the themeID at the same time
+ //as color, so that we can later check if the stored color is still from the same theme.
+ //Native side stores active theme UID/Timestamp into central repository.
+ int error = 0;
+ QT_TRAP_THROWING(
+ CRepository *themeRepository = CRepository::NewLC(personalisationUID);
+ if (themeRepository) {
+ static const TInt KThemePkgIDDesSize = 23; //size of the stored theme package ID
+ TBuf<32> value; //themeID is currently max of 8 + 1 + 8 characters, but lets have some extra space
+ const TUint32 key = 0x00000002; //active theme key in the repository
+ error = themeRepository->Get(key, value);
+ if (error == KErrNone) {
+ TLex lex(value);
+ TPtrC numberToken(lex.NextToken());
+ if (numberToken.Length())
+ error = TLex(numberToken).Val(themeID);
+ else
+ error = KErrArgument;
+ }
+ }
+ CleanupStack::PopAndDestroy(themeRepository);
+ );
+
+ QSettings settings(QSettings::UserScope, QLatin1String("Trolltech"));
+ settings.beginGroup(QLatin1String("QS60Style"));
+ if (themeID != 0) {
+ QVariant buttonColor = settings.value(QLatin1String("ButtonColor"));
+ if (!buttonColor.isNull()) {
+ //there is a stored color value, lets see if the theme ID matches
+ if (error == KErrNone) {
+ QVariant themeUID = settings.value(QLatin1String("ThemeUID"));
+ if (!themeUID.isNull() && themeUID.toInt() == themeID) {
+ QColor storedColor(buttonColor.value<QColor>());
+ if (storedColor.isValid())
+ return storedColor;
+ }
+ }
+ settings.remove(""); //if color was invalid, or theme has been changed, just delete all stored settings
+ }
+ }
+#endif
+
+ QColor color = calculatedColor(frame);
+
+#ifndef QT_NO_SETTINGS
+ settings.setValue(QLatin1String("ThemeUID"), QVariant(themeID));
+ if (frame == SF_ButtonNormal) //other colors are not currently calculated from graphics
+ settings.setValue(QLatin1String("ButtonColor"), QVariant(color));
+ settings.endGroup();
+#endif
+
+ return color;
+}
+
QPoint qt_s60_fill_background_offset(const QWidget *targetWidget)
{
CCoeControl *control = targetWidget->effectiveWinId();
diff --git a/src/gui/text/qfontdatabase_x11.cpp b/src/gui/text/qfontdatabase_x11.cpp
index ecc4690..635d2cf 100644
--- a/src/gui/text/qfontdatabase_x11.cpp
+++ b/src/gui/text/qfontdatabase_x11.cpp
@@ -1455,6 +1455,7 @@ void qt_addPatternProps(FcPattern *pattern, int screen, int script, const QFontD
weight_value = FC_WEIGHT_DEMIBOLD;
else if (request.weight < (QFont::Bold + QFont::Black) / 2)
weight_value = FC_WEIGHT_BOLD;
+ FcPatternDel(pattern, FC_WEIGHT);
FcPatternAddInteger(pattern, FC_WEIGHT, weight_value);
int slant_value = FC_SLANT_ROMAN;
@@ -1462,20 +1463,25 @@ void qt_addPatternProps(FcPattern *pattern, int screen, int script, const QFontD
slant_value = FC_SLANT_ITALIC;
else if (request.style == QFont::StyleOblique)
slant_value = FC_SLANT_OBLIQUE;
+ FcPatternDel(pattern, FC_SLANT);
FcPatternAddInteger(pattern, FC_SLANT, slant_value);
double size_value = qMax(qreal(1.), request.pixelSize);
+ FcPatternDel(pattern, FC_PIXEL_SIZE);
FcPatternAddDouble(pattern, FC_PIXEL_SIZE, size_value);
int stretch = request.stretch;
if (!stretch)
stretch = 100;
+ FcPatternDel(pattern, FC_WIDTH);
FcPatternAddInteger(pattern, FC_WIDTH, stretch);
if (X11->display && QX11Info::appDepth(screen) <= 8) {
+ FcPatternDel(pattern, FC_ANTIALIAS);
// can't do antialiasing on 8bpp
FcPatternAddBool(pattern, FC_ANTIALIAS, false);
} else if (request.styleStrategy & (QFont::PreferAntialias|QFont::NoAntialias)) {
+ FcPatternDel(pattern, FC_ANTIALIAS);
FcPatternAddBool(pattern, FC_ANTIALIAS,
!(request.styleStrategy & QFont::NoAntialias));
}
@@ -1484,6 +1490,7 @@ void qt_addPatternProps(FcPattern *pattern, int screen, int script, const QFontD
Q_ASSERT(script < QUnicodeTables::ScriptCount);
FcLangSet *ls = FcLangSetCreate();
FcLangSetAdd(ls, (const FcChar8*)specialLanguages[script]);
+ FcPatternDel(pattern, FC_LANG);
FcPatternAddLangSet(pattern, FC_LANG, ls);
FcLangSetDestroy(ls);
}
diff --git a/src/gui/text/qfontengine.cpp b/src/gui/text/qfontengine.cpp
index f73b816..24c4664 100644
--- a/src/gui/text/qfontengine.cpp
+++ b/src/gui/text/qfontengine.cpp
@@ -605,6 +605,12 @@ void QFontEngine::addGlyphsToPath(glyph_t *glyphs, QFixedPoint *positions, int n
addBitmapFontToPath(x, y, g, path, flags);
}
+QImage QFontEngine::alphaMapForGlyph(glyph_t glyph, QFixed /*subPixelPosition*/)
+{
+ // For font engines don't support subpixel positioning
+ return alphaMapForGlyph(glyph);
+}
+
QImage QFontEngine::alphaMapForGlyph(glyph_t glyph, const QTransform &t)
{
QImage i = alphaMapForGlyph(glyph);
@@ -615,6 +621,19 @@ QImage QFontEngine::alphaMapForGlyph(glyph_t glyph, const QTransform &t)
return i;
}
+QImage QFontEngine::alphaMapForGlyph(glyph_t glyph, QFixed subPixelPosition, const QTransform &t)
+{
+ if (! supportsSubPixelPositions())
+ return alphaMapForGlyph(glyph, t);
+
+ QImage i = alphaMapForGlyph(glyph, subPixelPosition);
+ if (t.type() > QTransform::TxTranslate)
+ i = i.transformed(t).convertToFormat(QImage::Format_Indexed8);
+ Q_ASSERT(i.depth() <= 8); // To verify that transformed didn't change the format...
+
+ return i;
+}
+
QImage QFontEngine::alphaRGBMapForGlyph(glyph_t glyph, QFixed /*subPixelPosition*/, int /* margin */, const QTransform &t)
{
QImage alphaMask = alphaMapForGlyph(glyph, t);
diff --git a/src/gui/text/qfontengine_mac.mm b/src/gui/text/qfontengine_mac.mm
index ebc1f6d..3c6f3b2 100644
--- a/src/gui/text/qfontengine_mac.mm
+++ b/src/gui/text/qfontengine_mac.mm
@@ -252,6 +252,11 @@ bool QCoreTextFontEngineMulti::stringToCMap(const QChar *str, int len, QGlyphLay
continue;
Q_ASSERT((CTRunGetStatus(run) & kCTRunStatusRightToLeft) == rtl);
+ CFRange stringRange = CTRunGetStringRange(run);
+ UniChar endGlyph = CFStringGetCharacterAtIndex(cfstring, stringRange.location + stringRange.length - 1);
+ bool endWithPDF = QChar::direction(endGlyph) == QChar::DirPDF;
+ if (endWithPDF)
+ glyphCount++;
if (!outOBounds && outGlyphs + glyphCount - initialGlyph > *nglyphs) {
outOBounds = true;
@@ -264,6 +269,9 @@ bool QCoreTextFontEngineMulti::stringToCMap(const QChar *str, int len, QGlyphLay
CTFontRef runFont = static_cast<CTFontRef>(CFDictionaryGetValue(runAttribs, NSFontAttributeName));
const uint fontIndex = (fontIndexForFont(runFont) << 24);
//NSLog(@"Run Font Name = %@", CTFontCopyFamilyName(runFont));
+ if (endWithPDF)
+ glyphCount--;
+
QVarLengthArray<CGGlyph, 512> cgglyphs(0);
const CGGlyph *tmpGlyphs = CTRunGetGlyphsPtr(run);
if (!tmpGlyphs) {
@@ -331,6 +339,16 @@ bool QCoreTextFontEngineMulti::stringToCMap(const QChar *str, int len, QGlyphLay
(fontDef.styleStrategy & QFont::ForceIntegerMetrics)
? QFixed::fromReal(lastGlyphAdvance.width).round()
: QFixed::fromReal(lastGlyphAdvance.width);
+
+ if (endWithPDF) {
+ logClusters[stringRange.location + stringRange.length - 1] = glyphCount;
+ outGlyphs[glyphCount] = 0xFFFF;
+ outAdvances_x[glyphCount] = 0;
+ outAdvances_y[glyphCount] = 0;
+ outAttributes[glyphCount].clusterStart = true;
+ outAttributes[glyphCount].dontPrint = true;
+ glyphCount++;
+ }
}
outGlyphs += glyphCount;
outAttributes += glyphCount;
@@ -694,7 +712,7 @@ QImage QCoreTextFontEngine::imageForGlyph(glyph_t glyph, QFixed subPixelPosition
CGContextSetFont(ctx, cgFont);
qreal pos_x = -br.x.toReal() + subPixelPosition.toReal();
- qreal pos_y = im.height()+br.y.toReal();
+ qreal pos_y = im.height() + br.y.toReal() - 1;
CGContextSetTextPosition(ctx, pos_x, pos_y);
CGSize advance;
@@ -713,9 +731,9 @@ QImage QCoreTextFontEngine::imageForGlyph(glyph_t glyph, QFixed subPixelPosition
return im;
}
-QImage QCoreTextFontEngine::alphaMapForGlyph(glyph_t glyph)
+QImage QCoreTextFontEngine::alphaMapForGlyph(glyph_t glyph, QFixed subPixelPosition)
{
- QImage im = imageForGlyph(glyph, QFixed(), 0, false);
+ QImage im = imageForGlyph(glyph, subPixelPosition, 0, false);
QImage indexed(im.width(), im.height(), QImage::Format_Indexed8);
QVector<QRgb> colors(256);
diff --git a/src/gui/text/qfontengine_p.h b/src/gui/text/qfontengine_p.h
index 6d6daaa..be9f48d 100644
--- a/src/gui/text/qfontengine_p.h
+++ b/src/gui/text/qfontengine_p.h
@@ -196,7 +196,9 @@ public:
* Returns an image indexed_8 with index values ranging from 0=fully transparant to 255=opaque
*/
virtual QImage alphaMapForGlyph(glyph_t);
+ virtual QImage alphaMapForGlyph(glyph_t glyph, QFixed subPixelPosition);
virtual QImage alphaMapForGlyph(glyph_t, const QTransform &t);
+ virtual QImage alphaMapForGlyph(glyph_t, QFixed subPixelPosition, const QTransform &t);
virtual QImage alphaRGBMapForGlyph(glyph_t, QFixed subPixelPosition, int margin, const QTransform &t);
virtual glyph_metrics_t alphaMapBoundingBox(glyph_t glyph, const QTransform &matrix, GlyphFormat /*format*/)
@@ -473,7 +475,7 @@ public:
virtual FaceId faceId() const;
virtual bool getSfntTableData(uint /*tag*/, uchar * /*buffer*/, uint * /*length*/) const;
virtual void getUnscaledGlyph(glyph_t glyph, QPainterPath *path, glyph_metrics_t *metrics);
- virtual QImage alphaMapForGlyph(glyph_t);
+ virtual QImage alphaMapForGlyph(glyph_t, QFixed subPixelPosition);
virtual QImage alphaRGBMapForGlyph(glyph_t, QFixed subPixelPosition, int margin, const QTransform &t);
virtual qreal minRightBearing() const;
virtual qreal minLeftBearing() const;
diff --git a/src/gui/text/qstatictext.cpp b/src/gui/text/qstatictext.cpp
index 9506006..edf248a 100644
--- a/src/gui/text/qstatictext.cpp
+++ b/src/gui/text/qstatictext.cpp
@@ -445,7 +445,7 @@ namespace {
const QTextItemInt &ti = static_cast<const QTextItemInt &>(textItem);
QStaticTextItem currentItem;
- currentItem.fontEngine = ti.fontEngine;
+ currentItem.setFontEngine(ti.fontEngine);
currentItem.font = ti.font();
currentItem.charOffset = m_chars.size();
currentItem.numChars = ti.num_chars;
@@ -713,4 +713,24 @@ void QStaticTextPrivate::init()
needsRelayout = false;
}
+QStaticTextItem::~QStaticTextItem()
+{
+ if (m_userData != 0 && !m_userData->ref.deref())
+ delete m_userData;
+ if (!m_fontEngine->ref.deref())
+ delete m_fontEngine;
+}
+
+void QStaticTextItem::setFontEngine(QFontEngine *fe)
+{
+ if (m_fontEngine != 0) {
+ if (!m_fontEngine->ref.deref())
+ delete m_fontEngine;
+ }
+
+ m_fontEngine = fe;
+ if (m_fontEngine != 0)
+ m_fontEngine->ref.ref();
+}
+
QT_END_NAMESPACE
diff --git a/src/gui/text/qstatictext_p.h b/src/gui/text/qstatictext_p.h
index cb60626..87ef0d5 100644
--- a/src/gui/text/qstatictext_p.h
+++ b/src/gui/text/qstatictext_p.h
@@ -68,27 +68,60 @@ public:
OpenGLUserData
};
- QStaticTextUserData(Type t) : type(t) {}
+ QStaticTextUserData(Type t) : type(t) { ref = 0; }
virtual ~QStaticTextUserData() {}
+ QAtomicInt ref;
Type type;
};
class Q_GUI_EXPORT QStaticTextItem
{
public:
- QStaticTextItem() : chars(0), numChars(0), fontEngine(0), userData(0),
- useBackendOptimizations(false), userDataNeedsUpdate(0) {}
- ~QStaticTextItem() { delete userData; }
+ QStaticTextItem() : chars(0), numChars(0), useBackendOptimizations(false),
+ userDataNeedsUpdate(0), m_fontEngine(0), m_userData(0) {}
+
+ QStaticTextItem(const QStaticTextItem &other)
+ {
+ operator=(other);
+ }
+
+ void operator=(const QStaticTextItem &other)
+ {
+ glyphPositions = other.glyphPositions;
+ glyphs = other.glyphs;
+ chars = other.chars;
+ numGlyphs = other.numGlyphs;
+ numChars = other.numChars;
+ font = other.font;
+ color = other.color;
+ useBackendOptimizations = other.useBackendOptimizations;
+ userDataNeedsUpdate = other.userDataNeedsUpdate;
+
+ m_fontEngine = 0;
+ m_userData = 0;
+ setUserData(other.userData());
+ setFontEngine(other.fontEngine());
+ }
+
+ ~QStaticTextItem();
void setUserData(QStaticTextUserData *newUserData)
{
- if (userData == newUserData)
+ if (m_userData == newUserData)
return;
- delete userData;
- userData = newUserData;
+ if (m_userData != 0 && !m_userData->ref.deref())
+ delete m_userData;
+
+ m_userData = newUserData;
+ if (m_userData != 0)
+ m_userData->ref.ref();
}
+ QStaticTextUserData *userData() const { return m_userData; }
+
+ void setFontEngine(QFontEngine *fe);
+ QFontEngine *fontEngine() const { return m_fontEngine; }
union {
QFixedPoint *glyphPositions; // 8 bytes per glyph
@@ -108,14 +141,17 @@ public:
// 12 bytes for pointers
int numGlyphs; // 4 bytes per item
int numChars; // 4 bytes per item
- QFontEngine *fontEngine; // 4 bytes per item
QFont font; // 8 bytes per item
QColor color; // 10 bytes per item
- QStaticTextUserData *userData; // 8 bytes per item
char useBackendOptimizations : 1; // 1 byte per item
char userDataNeedsUpdate : 1; //
// ================
// 51 bytes per item
+
+private: // Needs special handling in setters, so private to avoid abuse
+ QFontEngine *m_fontEngine; // 4 bytes per item
+ QStaticTextUserData *m_userData; // 8 bytes per item
+
};
class QStaticText;
diff --git a/src/gui/text/qtextcontrol.cpp b/src/gui/text/qtextcontrol.cpp
index d0f71ae..334246b 100644
--- a/src/gui/text/qtextcontrol.cpp
+++ b/src/gui/text/qtextcontrol.cpp
@@ -64,6 +64,7 @@
#include "qgraphicssceneevent.h"
#include "qprinter.h"
#include "qtextdocumentwriter.h"
+#include "private/qtextcursor_p.h"
#include <qtextformat.h>
#include <qdatetime.h>
@@ -1904,6 +1905,8 @@ void QTextControlPrivate::inputMethodEvent(QInputMethodEvent *e)
}
layout->setAdditionalFormats(overrides);
cursor.endEditBlock();
+ if (cursor.d)
+ cursor.d->setX();
}
QVariant QTextControl::inputMethodQuery(Qt::InputMethodQuery property) const
diff --git a/src/gui/text/qtextcursor.h b/src/gui/text/qtextcursor.h
index 251cb33..d34ee4e 100644
--- a/src/gui/text/qtextcursor.h
+++ b/src/gui/text/qtextcursor.h
@@ -230,6 +230,7 @@ private:
QSharedDataPointer<QTextCursorPrivate> d;
friend class QTextDocumentFragmentPrivate;
friend class QTextCopyHelper;
+ friend class QTextControlPrivate;
};
QT_END_NAMESPACE
diff --git a/src/gui/text/qtextdocument.cpp b/src/gui/text/qtextdocument.cpp
index 3aa6795..496accd 100644
--- a/src/gui/text/qtextdocument.cpp
+++ b/src/gui/text/qtextdocument.cpp
@@ -2612,8 +2612,8 @@ void QTextHtmlExporter::emitBlock(const QTextBlock &block)
if (format.hasProperty(QTextFormat::ListNumberPrefix)) {
QString numberPrefix = format.numberPrefix();
- numberPrefix.replace('"', "\\22");
- numberPrefix.replace('\'', "\\27"); // FIXME: There's a problem in the CSS parser the prevents this from being correctly restored
+ numberPrefix.replace(QLatin1Char('"'), QLatin1String("\\22"));
+ numberPrefix.replace(QLatin1Char('\''), QLatin1String("\\27")); // FIXME: There's a problem in the CSS parser the prevents this from being correctly restored
styleString += QLatin1String(" -qt-list-number-prefix: ");
styleString += QLatin1Char('\'');
styleString += numberPrefix;
@@ -2624,8 +2624,8 @@ void QTextHtmlExporter::emitBlock(const QTextBlock &block)
if (format.hasProperty(QTextFormat::ListNumberSuffix)) {
if (format.numberSuffix() != QLatin1String(".")) { // this is our default
QString numberSuffix = format.numberSuffix();
- numberSuffix.replace('"', "\\22");
- numberSuffix.replace('\'', "\\27"); // see above
+ numberSuffix.replace(QLatin1Char('"'), QLatin1String("\\22"));
+ numberSuffix.replace(QLatin1Char('\''), QLatin1String("\\27")); // see above
styleString += QLatin1String(" -qt-list-number-suffix: ");
styleString += QLatin1Char('\'');
styleString += numberSuffix;
diff --git a/src/gui/text/qtextengine.cpp b/src/gui/text/qtextengine.cpp
index f4f2168..06eed55 100644
--- a/src/gui/text/qtextengine.cpp
+++ b/src/gui/text/qtextengine.cpp
@@ -612,7 +612,7 @@ static bool bidiItemize(QTextEngine *engine, QScriptAnalysis *analysis, QBidiCon
} else {
eor = current;
}
- dir = QChar::DirON; status.eor = QChar::DirAN;
+ dir = QChar::DirAN; status.eor = QChar::DirAN;
break;
case QChar::DirCS:
if(status.eor == QChar::DirAN) {
diff --git a/src/gui/widgets/qcocoamenu_mac.mm b/src/gui/widgets/qcocoamenu_mac.mm
index 15fae23..b670186 100644
--- a/src/gui/widgets/qcocoamenu_mac.mm
+++ b/src/gui/widgets/qcocoamenu_mac.mm
@@ -156,10 +156,14 @@ QT_USE_NAMESPACE
// In every other case we return NO, which means that Cocoa can do as it pleases
// (i.e., fire the menu action).
NSMenuItem *whichItem;
+ // Change the private unicode keys to the ones used in setting the "Key Equivalents"
+ extern NSString *qt_mac_removePrivateUnicode(NSString* string);
+ NSString *characters = qt_mac_removePrivateUnicode([event characters]);
if ([self hasShortcut:menu
- forKey:[event characters]
- forModifiers:([event modifierFlags] & NSDeviceIndependentModifierFlagsMask)
- whichItem:&whichItem]) {
+ forKey:characters
+ // Interested only in Shift, Cmd, Ctrl & Alt Keys, so ignoring masks like, Caps lock, Num Lock ...
+ forModifiers:([event modifierFlags] & (NSShiftKeyMask | NSControlKeyMask | NSCommandKeyMask | NSAlternateKeyMask))
+ whichItem:&whichItem]) {
QWidget *widget = 0;
QAction *qaction = 0;
if (whichItem && [whichItem tag]) {
@@ -170,6 +174,9 @@ QT_USE_NAMESPACE
qApp->activePopupWidget()->focusWidget() : qApp->activePopupWidget());
else if (QApplicationPrivate::focus_widget)
widget = QApplicationPrivate::focus_widget;
+ // If we could not find any receivers, pass it to the active window
+ if (!widget)
+ widget = qApp->activeWindow();
if (qaction && widget) {
int key = qaction->shortcut();
QKeyEvent accel_ev(QEvent::ShortcutOverride, (key & (~Qt::KeyboardModifierMask)),
@@ -177,11 +184,10 @@ QT_USE_NAMESPACE
accel_ev.ignore();
qt_sendSpontaneousEvent(widget, &accel_ev);
if (accel_ev.isAccepted()) {
- if (qt_dispatchKeyEvent(event, widget)) {
- *target = nil;
- *action = nil;
- return YES;
- }
+ qt_dispatchKeyEvent(event, widget);
+ *target = nil;
+ *action = nil;
+ return YES;
}
}
}
diff --git a/src/gui/widgets/qvalidator.cpp b/src/gui/widgets/qvalidator.cpp
index b75db45..130d091 100644
--- a/src/gui/widgets/qvalidator.cpp
+++ b/src/gui/widgets/qvalidator.cpp
@@ -499,6 +499,8 @@ public:
}
QDoubleValidator::Notation notation;
+
+ QValidator::State validateWithLocale(QString & input, QLocalePrivate::NumberMode numMode, const QLocale &locale) const;
};
@@ -654,42 +656,49 @@ QValidator::State QDoubleValidator::validate(QString & input, int &) const
break;
}
+ State currentLocaleValidation = d->validateWithLocale(input, numMode, locale());
+ if (currentLocaleValidation == Acceptable || locale().language() == QLocale::C)
+ return currentLocaleValidation;
+ State cLocaleValidation = d->validateWithLocale(input, numMode, QLocale(QLocale::C));
+ return qMax(currentLocaleValidation, cLocaleValidation);
+}
+
+QValidator::State QDoubleValidatorPrivate::validateWithLocale(QString &input, QLocalePrivate::NumberMode numMode, const QLocale &locale) const
+{
+ Q_Q(const QDoubleValidator);
QByteArray buff;
- if (!locale().d()->validateChars(input, numMode, &buff, dec)) {
- QLocale cl(QLocale::C);
- if (!cl.d()->validateChars(input, numMode, &buff, dec))
- return Invalid;
- }
+ if (!locale.d()->validateChars(input, numMode, &buff, q->dec))
+ return QValidator::Invalid;
if (buff.isEmpty())
- return Intermediate;
+ return QValidator::Intermediate;
- if (b >= 0 && buff.startsWith('-'))
- return Invalid;
+ if (q->b >= 0 && buff.startsWith('-'))
+ return QValidator::Invalid;
- if (t < 0 && buff.startsWith('+'))
- return Invalid;
+ if (q->t < 0 && buff.startsWith('+'))
+ return QValidator::Invalid;
bool ok, overflow;
double i = QLocalePrivate::bytearrayToDouble(buff.constData(), &ok, &overflow);
if (overflow)
- return Invalid;
+ return QValidator::Invalid;
if (!ok)
- return Intermediate;
+ return QValidator::Intermediate;
- if (i >= b && i <= t)
- return Acceptable;
+ if (i >= q->b && i <= q->t)
+ return QValidator::Acceptable;
- if (d->notation == StandardNotation) {
- double max = qMax(qAbs(b), qAbs(t));
+ if (notation == QDoubleValidator::StandardNotation) {
+ double max = qMax(qAbs(q->b), qAbs(q->t));
if (max < LLONG_MAX) {
qlonglong n = pow10(numDigits(qlonglong(max))) - 1;
if (qAbs(i) > n)
- return Invalid;
+ return QValidator::Invalid;
}
}
- return Intermediate;
+ return QValidator::Intermediate;
}
diff --git a/src/multimedia/audio/audio.pri b/src/multimedia/audio/audio.pri
index f03d0ac..7b2f9ad 100644
--- a/src/multimedia/audio/audio.pri
+++ b/src/multimedia/audio/audio.pri
@@ -42,8 +42,8 @@ mac {
wince*:LIBS += -lcoredll
} else:symbian {
- INCLUDEPATH += $${EPOCROOT}/epoc32/include/mmf/common
- INCLUDEPATH += $${EPOCROOT}/epoc32/include/mmf/server
+ INCLUDEPATH += $${EPOCROOT}epoc32/include/mmf/common
+ INCLUDEPATH += $${EPOCROOT}epoc32/include/mmf/server
HEADERS += $$PWD/qaudio_symbian_p.h \
$$PWD/qaudiodeviceinfo_symbian_p.h \
diff --git a/src/multimedia/audio/qaudioinput_alsa_p.cpp b/src/multimedia/audio/qaudioinput_alsa_p.cpp
index ddafa3d..5265915 100644
--- a/src/multimedia/audio/qaudioinput_alsa_p.cpp
+++ b/src/multimedia/audio/qaudioinput_alsa_p.cpp
@@ -482,19 +482,18 @@ int QAudioInputPrivate::bytesReady() const
qint64 QAudioInputPrivate::read(char* data, qint64 len)
{
- Q_UNUSED(len)
-
// Read in some audio data and write it to QIODevice, pull mode
if ( !handle )
return 0;
- bytesAvailable = checkBytesReady();
+ // bytesAvaiable is saved as a side effect of checkBytesReady().
+ int bytesToRead = checkBytesReady();
- if (bytesAvailable < 0) {
+ if (bytesToRead < 0) {
// bytesAvailable as negative is error code, try to recover from it.
- xrun_recovery(bytesAvailable);
- bytesAvailable = checkBytesReady();
- if (bytesAvailable < 0) {
+ xrun_recovery(bytesToRead);
+ bytesToRead = checkBytesReady();
+ if (bytesToRead < 0) {
// recovery failed must stop and set error.
close();
errorState = QAudio::IOError;
@@ -504,9 +503,11 @@ qint64 QAudioInputPrivate::read(char* data, qint64 len)
}
}
+ bytesToRead = qMin<qint64>(len, bytesToRead);
+ bytesToRead -= bytesToRead % period_size;
int count=0, err = 0;
while(count < 5) {
- int chunks = bytesAvailable/period_size;
+ int chunks = bytesToRead/period_size;
int frames = chunks*period_frames;
if(frames > (int)buffer_frames)
frames = buffer_frames;
@@ -554,6 +555,7 @@ qint64 QAudioInputPrivate::read(char* data, qint64 len)
emit stateChanged(deviceState);
}
} else {
+ bytesAvailable -= err;
totalTimeValue += err;
resuming = false;
if (deviceState != QAudio::ActiveState) {
@@ -566,6 +568,7 @@ qint64 QAudioInputPrivate::read(char* data, qint64 len)
} else {
memcpy(data,audioBuffer,err);
+ bytesAvailable -= err;
totalTimeValue += err;
resuming = false;
if (deviceState != QAudio::ActiveState) {
@@ -661,7 +664,7 @@ bool QAudioInputPrivate::deviceReady()
{
if(pullMode) {
// reads some audio data and writes it to QIODevice
- read(0,0);
+ read(0, buffer_size);
} else {
// emits readyRead() so user will call read() on QIODevice to get some audio data
InputPrivate* a = qobject_cast<InputPrivate*>(audioSource);
diff --git a/src/multimedia/audio/qaudioinput_win32_p.cpp b/src/multimedia/audio/qaudioinput_win32_p.cpp
index 1cde159..0ec2492 100644
--- a/src/multimedia/audio/qaudioinput_win32_p.cpp
+++ b/src/multimedia/audio/qaudioinput_win32_p.cpp
@@ -400,9 +400,12 @@ qint64 QAudioInputPrivate::read(char* data, qint64 len)
resuming = false;
}
} else {
+ l = qMin<qint64>(len, waveBlocks[header].dwBytesRecorded);
// push mode
- memcpy(p,waveBlocks[header].lpData,waveBlocks[header].dwBytesRecorded);
- l = waveBlocks[header].dwBytesRecorded;
+ memcpy(p, waveBlocks[header].lpData, l);
+
+ len -= l;
+
#ifdef DEBUG_AUDIO
qDebug()<<"IN: "<<waveBlocks[header].dwBytesRecorded<<", OUT: "<<l;
#endif
@@ -457,7 +460,7 @@ qint64 QAudioInputPrivate::read(char* data, qint64 len)
mutex.lock();
if(!pullMode) {
- if(l+period_size > len && waveFreeBlockCount == buffer_size/period_size)
+ if(len < period_size || waveFreeBlockCount == buffer_size/period_size)
done = true;
} else {
if(waveFreeBlockCount == buffer_size/period_size)
@@ -568,7 +571,7 @@ bool QAudioInputPrivate::deviceReady()
if(pullMode) {
// reads some audio data and writes it to QIODevice
- read(0,0);
+ read(0, buffer_size);
} else {
// emits readyRead() so user will call read() on QIODevice to get some audio data
InputPrivate* a = qobject_cast<InputPrivate*>(audioSource);
diff --git a/src/multimedia/audio/qaudiooutput_win32_p.cpp b/src/multimedia/audio/qaudiooutput_win32_p.cpp
index 1f304e3..1b054e5 100644
--- a/src/multimedia/audio/qaudiooutput_win32_p.cpp
+++ b/src/multimedia/audio/qaudiooutput_win32_p.cpp
@@ -586,7 +586,7 @@ bool QAudioOutputPrivate::deviceReady()
}
}
if ( out < l) {
- // Didnt write all data
+ // Didn't write all data
audioSource->seek(audioSource->pos()-(l-out));
}
if(startup)
diff --git a/src/network/access/qhttpnetworkconnection.cpp b/src/network/access/qhttpnetworkconnection.cpp
index 1ce162c..a1c7cf1 100644
--- a/src/network/access/qhttpnetworkconnection.cpp
+++ b/src/network/access/qhttpnetworkconnection.cpp
@@ -328,8 +328,6 @@ bool QHttpNetworkConnectionPrivate::handleAuthenticateChallenge(QAbstractSocket
Q_ASSERT(socket);
Q_ASSERT(reply);
- Q_Q(QHttpNetworkConnection);
-
resend = false;
//create the response header to be used with QAuthenticatorPrivate.
QList<QPair<QByteArray, QByteArray> > fields = reply->header();
diff --git a/src/network/access/qnetworkaccessbackend.cpp b/src/network/access/qnetworkaccessbackend.cpp
index 86dd59b..d4ecf43 100644
--- a/src/network/access/qnetworkaccessbackend.cpp
+++ b/src/network/access/qnetworkaccessbackend.cpp
@@ -88,18 +88,6 @@ QNetworkAccessBackendFactory::~QNetworkAccessBackendFactory()
QNetworkAccessBackend *QNetworkAccessManagerPrivate::findBackend(QNetworkAccessManager::Operation op,
const QNetworkRequest &request)
{
- QNetworkRequest::CacheLoadControl mode =
- static_cast<QNetworkRequest::CacheLoadControl>(
- request.attribute(QNetworkRequest::CacheLoadControlAttribute,
- QNetworkRequest::PreferNetwork).toInt());
- if (mode == QNetworkRequest::AlwaysCache
- && (op == QNetworkAccessManager::GetOperation
- || op == QNetworkAccessManager::HeadOperation)) {
- QNetworkAccessBackend *backend = new QNetworkAccessCacheBackend;
- backend->manager = this;
- return backend;
- }
-
if (!factoryDataShutdown) {
QMutexLocker locker(&factoryData()->mutex);
QNetworkAccessBackendFactoryData::ConstIterator it = factoryData()->constBegin(),
diff --git a/src/network/access/qnetworkaccessbackend_p.h b/src/network/access/qnetworkaccessbackend_p.h
index 9f8a01f..b9a832e 100644
--- a/src/network/access/qnetworkaccessbackend_p.h
+++ b/src/network/access/qnetworkaccessbackend_p.h
@@ -115,7 +115,6 @@ public:
virtual bool start();
#endif
virtual void closeDownstreamChannel() = 0;
- virtual bool waitForDownstreamReadyRead(int msecs) = 0;
// slot-like:
virtual void downstreamReadyWrite();
diff --git a/src/network/access/qnetworkaccesscachebackend.cpp b/src/network/access/qnetworkaccesscachebackend.cpp
index 73491a9..e78694e 100644
--- a/src/network/access/qnetworkaccesscachebackend.cpp
+++ b/src/network/access/qnetworkaccesscachebackend.cpp
@@ -132,18 +132,6 @@ void QNetworkAccessCacheBackend::closeUpstreamChannel()
Q_ASSERT_X(false, Q_FUNC_INFO, "This function show not have been called!");
}
-bool QNetworkAccessCacheBackend::waitForDownstreamReadyRead(int)
-{
- Q_ASSERT_X(false, Q_FUNC_INFO , "This function show not have been called!");
- return false;
-}
-
-bool QNetworkAccessCacheBackend::waitForUpstreamBytesWritten(int)
-{
- Q_ASSERT_X(false, Q_FUNC_INFO, "This function show not have been called!");
- return false;
-}
-
void QNetworkAccessCacheBackend::upstreamReadyRead()
{
Q_ASSERT_X(false, Q_FUNC_INFO, "This function show not have been called!");
diff --git a/src/network/access/qnetworkaccesscachebackend_p.h b/src/network/access/qnetworkaccesscachebackend_p.h
index df001ab..32581d5 100644
--- a/src/network/access/qnetworkaccesscachebackend_p.h
+++ b/src/network/access/qnetworkaccesscachebackend_p.h
@@ -69,8 +69,6 @@ public:
void open();
void closeDownstreamChannel();
void closeUpstreamChannel();
- bool waitForDownstreamReadyRead(int msecs);
- bool waitForUpstreamBytesWritten(int msecs);
void upstreamReadyRead();
void downstreamReadyWrite();
diff --git a/src/network/access/qnetworkaccessdebugpipebackend.cpp b/src/network/access/qnetworkaccessdebugpipebackend.cpp
index cd077e7..5f99f84 100644
--- a/src/network/access/qnetworkaccessdebugpipebackend.cpp
+++ b/src/network/access/qnetworkaccessdebugpipebackend.cpp
@@ -278,12 +278,6 @@ void QNetworkAccessDebugPipeBackend::socketConnected()
{
}
-bool QNetworkAccessDebugPipeBackend::waitForDownstreamReadyRead(int ms)
-{
- Q_UNUSED(ms);
- qCritical("QNetworkAccess: Debug pipe backend does not support waitForReadyRead()");
- return false;
-}
#endif
diff --git a/src/network/access/qnetworkaccessdebugpipebackend_p.h b/src/network/access/qnetworkaccessdebugpipebackend_p.h
index 58a4fd0..918a813 100644
--- a/src/network/access/qnetworkaccessdebugpipebackend_p.h
+++ b/src/network/access/qnetworkaccessdebugpipebackend_p.h
@@ -71,7 +71,6 @@ public:
virtual void open();
virtual void closeDownstreamChannel();
- virtual bool waitForDownstreamReadyRead(int msecs);
virtual void downstreamReadyWrite();
diff --git a/src/network/access/qnetworkaccessfilebackend.cpp b/src/network/access/qnetworkaccessfilebackend.cpp
index 710c258..cf4ce7c 100644
--- a/src/network/access/qnetworkaccessfilebackend.cpp
+++ b/src/network/access/qnetworkaccessfilebackend.cpp
@@ -208,12 +208,6 @@ void QNetworkAccessFileBackend::closeDownstreamChannel()
}
}
-bool QNetworkAccessFileBackend::waitForDownstreamReadyRead(int)
-{
- Q_ASSERT(operation() == QNetworkAccessManager::GetOperation);
- return readMoreFromFile();
-}
-
void QNetworkAccessFileBackend::downstreamReadyWrite()
{
Q_ASSERT_X(operation() == QNetworkAccessManager::GetOperation, "QNetworkAccessFileBackend",
diff --git a/src/network/access/qnetworkaccessfilebackend_p.h b/src/network/access/qnetworkaccessfilebackend_p.h
index 6df8710..d1dbe8d 100644
--- a/src/network/access/qnetworkaccessfilebackend_p.h
+++ b/src/network/access/qnetworkaccessfilebackend_p.h
@@ -69,7 +69,6 @@ public:
virtual void open();
virtual void closeDownstreamChannel();
- virtual bool waitForDownstreamReadyRead(int msecs);
virtual void downstreamReadyWrite();
diff --git a/src/network/access/qnetworkaccessftpbackend.cpp b/src/network/access/qnetworkaccessftpbackend.cpp
index da336d0..1567d98 100644
--- a/src/network/access/qnetworkaccessftpbackend.cpp
+++ b/src/network/access/qnetworkaccessftpbackend.cpp
@@ -182,23 +182,6 @@ void QNetworkAccessFtpBackend::closeDownstreamChannel()
#endif
}
-bool QNetworkAccessFtpBackend::waitForDownstreamReadyRead(int ms)
-{
- if (!ftp)
- return false;
-
- if (ftp->bytesAvailable()) {
- ftpReadyRead();
- return true;
- }
-
- if (ms == 0)
- return false;
-
- qCritical("QNetworkAccess: FTP backend does not support waitForReadyRead()");
- return false;
-}
-
void QNetworkAccessFtpBackend::downstreamReadyWrite()
{
if (state == Transferring && ftp && ftp->bytesAvailable())
diff --git a/src/network/access/qnetworkaccessftpbackend_p.h b/src/network/access/qnetworkaccessftpbackend_p.h
index 737fa72..8a2bfc3 100644
--- a/src/network/access/qnetworkaccessftpbackend_p.h
+++ b/src/network/access/qnetworkaccessftpbackend_p.h
@@ -87,7 +87,6 @@ public:
virtual void open();
virtual void closeDownstreamChannel();
- virtual bool waitForDownstreamReadyRead(int msecs);
virtual void downstreamReadyWrite();
diff --git a/src/network/access/qnetworkaccesshttpbackend.cpp b/src/network/access/qnetworkaccesshttpbackend.cpp
index 0ae2192..3c41d85 100644
--- a/src/network/access/qnetworkaccesshttpbackend.cpp
+++ b/src/network/access/qnetworkaccesshttpbackend.cpp
@@ -678,26 +678,6 @@ void QNetworkAccessHttpBackend::closeDownstreamChannel()
// this indicates that the user closed the stream while the reply isn't finished yet
}
-bool QNetworkAccessHttpBackend::waitForDownstreamReadyRead(int msecs)
-{
- Q_ASSERT(http);
-
- if (httpReply->bytesAvailable()) {
- readFromHttp();
- return true;
- }
-
- if (msecs == 0) {
- // no bytes available in the socket and no waiting
- return false;
- }
-
- // ### FIXME
- qCritical("QNetworkAccess: HTTP backend does not support waitForReadyRead()");
- return false;
-}
-
-
void QNetworkAccessHttpBackend::downstreamReadyWrite()
{
readFromHttp();
diff --git a/src/network/access/qnetworkaccesshttpbackend_p.h b/src/network/access/qnetworkaccesshttpbackend_p.h
index ad0a7ba..fd3b2ec 100644
--- a/src/network/access/qnetworkaccesshttpbackend_p.h
+++ b/src/network/access/qnetworkaccesshttpbackend_p.h
@@ -79,7 +79,6 @@ public:
virtual void open();
virtual void closeDownstreamChannel();
- virtual bool waitForDownstreamReadyRead(int msecs);
virtual void downstreamReadyWrite();
virtual void setDownstreamLimited(bool b);
diff --git a/src/network/access/qnetworkaccessmanager.cpp b/src/network/access/qnetworkaccessmanager.cpp
index 5ae1078..97e7928 100644
--- a/src/network/access/qnetworkaccessmanager.cpp
+++ b/src/network/access/qnetworkaccessmanager.cpp
@@ -53,6 +53,7 @@
#include "qnetworkaccessftpbackend_p.h"
#include "qnetworkaccessfilebackend_p.h"
#include "qnetworkaccessdebugpipebackend_p.h"
+#include "qnetworkaccesscachebackend_p.h"
#include "qnetworkreplydataimpl_p.h"
#include "qnetworkreplyfileimpl_p.h"
@@ -960,6 +961,26 @@ QNetworkReply *QNetworkAccessManager::createRequest(QNetworkAccessManager::Opera
return new QNetworkReplyDataImpl(this, req, op);
}
+ // A request with QNetworkRequest::AlwaysCache does not need any bearer management
+ QNetworkRequest::CacheLoadControl mode =
+ static_cast<QNetworkRequest::CacheLoadControl>(
+ req.attribute(QNetworkRequest::CacheLoadControlAttribute,
+ QNetworkRequest::PreferNetwork).toInt());
+ if (mode == QNetworkRequest::AlwaysCache
+ && (op == QNetworkAccessManager::GetOperation
+ || op == QNetworkAccessManager::HeadOperation)) {
+ // FIXME Implement a QNetworkReplyCacheImpl instead, see QTBUG-15106
+ QNetworkReplyImpl *reply = new QNetworkReplyImpl(this);
+ QNetworkReplyImplPrivate *priv = reply->d_func();
+ priv->manager = this;
+ priv->backend = new QNetworkAccessCacheBackend();
+ priv->backend->manager = this->d_func();
+ priv->backend->setParent(reply);
+ priv->backend->reply = priv;
+ priv->setup(op, req, outgoingData);
+ return reply;
+ }
+
#ifndef QT_NO_BEARERMANAGEMENT
// Return a disabled network reply if network access is disabled.
// Except if the scheme is empty or file://.
diff --git a/src/network/ssl/qsslsocket_openssl.cpp b/src/network/ssl/qsslsocket_openssl.cpp
index 2910538..426b07a 100644
--- a/src/network/ssl/qsslsocket_openssl.cpp
+++ b/src/network/ssl/qsslsocket_openssl.cpp
@@ -51,6 +51,7 @@
#include <QtCore/qdebug.h>
#include <QtCore/qdir.h>
#include <QtCore/qdiriterator.h>
+#include <QtCore/qelapsedtimer.h>
#include <QtCore/qfile.h>
#include <QtCore/qfileinfo.h>
#include <QtCore/qmutex.h>
@@ -574,7 +575,7 @@ void QSslSocketPrivate::resetDefaultCiphers()
#if defined(Q_OS_SYMBIAN)
CSymbianCertificateRetriever::CSymbianCertificateRetriever() : CActive(CActive::EPriorityStandard),
- iSequenceError(KErrNone)
+ iCertificatePtr(0,0,0), iSequenceError(KErrNone)
{
}
@@ -618,6 +619,11 @@ void CSymbianCertificateRetriever::doThreadEntryL()
iCertStore = CUnifiedCertStore::NewLC(qt_s60GetRFs(), EFalse);
iCertFilter = CCertAttributeFilter::NewLC();
+ // only interested in CA certs
+ iCertFilter->SetOwnerType(ECACertificate);
+ // only interested in X.509 format (we don't support WAP formats)
+ iCertFilter->SetFormat(EX509Certificate);
+
// Kick off the sequence by initializing the cert store
iState = Initializing;
iCertStore->Initialize(iStatus);
@@ -637,6 +643,7 @@ void CSymbianCertificateRetriever::doThreadEntryL()
TInt CSymbianCertificateRetriever::ThreadEntryPoint(TAny* aParams)
{
+ User::SetCritical(User::EProcessCritical);
CTrapCleanup* cleanupStack = CTrapCleanup::New();
CSymbianCertificateRetriever* self = (CSymbianCertificateRetriever*) aParams;
@@ -658,7 +665,17 @@ void CSymbianCertificateRetriever::ConstructL()
void CSymbianCertificateRetriever::DoCancel()
{
- // We never cancel the sequence
+ switch(iState) {
+ case Initializing:
+ iCertStore->CancelInitialize();
+ break;
+ case Listing:
+ iCertStore->CancelList();
+ break;
+ case RetrievingCertificates:
+ iCertStore->CancelGetCert();
+ break;
+ }
}
TInt CSymbianCertificateRetriever::RunError(TInt aError)
@@ -671,37 +688,51 @@ TInt CSymbianCertificateRetriever::RunError(TInt aError)
void CSymbianCertificateRetriever::GetCertificateL()
{
- CCTCertInfo* certInfo = iCertInfos[iCurrentCertIndex];
- iCertificateData.resize(certInfo->Size());
- TPtr8 des((TUint8*)iCertificateData.data(), 0, iCertificateData.size());
- iCertStore->Retrieve(*certInfo, des, iStatus);
- iState = RetrievingCertificates;
- SetActive();
+ if (iCurrentCertIndex < iCertInfos.Count()) {
+ CCTCertInfo* certInfo = iCertInfos[iCurrentCertIndex++];
+ iCertificateData = QByteArray();
+ QT_TRYCATCH_LEAVING(iCertificateData.resize(certInfo->Size()));
+ iCertificatePtr.Set((TUint8*)iCertificateData.data(), 0, iCertificateData.size());
+#ifdef QSSLSOCKET_DEBUG
+ qDebug() << "getting " << qt_TDesC2QString(certInfo->Label()) << " size=" << certInfo->Size();
+ qDebug() << "format=" << certInfo->CertificateFormat();
+ qDebug() << "ownertype=" << certInfo->CertificateOwnerType();
+ qDebug() << "type=" << hex << certInfo->Type().iUid;
+#endif
+ iCertStore->Retrieve(*certInfo, iCertificatePtr, iStatus);
+ iState = RetrievingCertificates;
+ SetActive();
+ } else {
+ //reached end of list
+ CActiveScheduler::Stop();
+ }
}
void CSymbianCertificateRetriever::RunL()
{
+#ifdef QSSLSOCKET_DEBUG
+ qDebug() << "CSymbianCertificateRetriever::RunL status " << iStatus.Int() << " count " << iCertInfos.Count() << " index " << iCurrentCertIndex;
+#endif
switch (iState) {
case Initializing:
+ User::LeaveIfError(iStatus.Int()); // initialise fail means pointless to continue
iState = Listing;
iCertStore->List(iCertInfos, *iCertFilter, iStatus);
SetActive();
break;
case Listing:
+ User::LeaveIfError(iStatus.Int()); // listing fail means pointless to continue
iCurrentCertIndex = 0;
GetCertificateL();
break;
case RetrievingCertificates:
- iCertificates->append(iCertificateData);
- iCertificateData = QByteArray();
- iCurrentCertIndex++;
- if (iCurrentCertIndex < iCertInfos.Count())
- GetCertificateL();
+ if (iStatus.Int() == KErrNone)
+ iCertificates->append(iCertificateData);
else
- // Stop the scheduler to return to the thread entry function
- CActiveScheduler::Stop();
+ qWarning() << "CSymbianCertificateRetriever: failed to retreive a certificate, error " << iStatus.Int();
+ GetCertificateL();
break;
}
}
@@ -710,6 +741,10 @@ void CSymbianCertificateRetriever::RunL()
QList<QSslCertificate> QSslSocketPrivate::systemCaCertificates()
{
ensureInitialized();
+#ifdef QSSLSOCKET_DEBUG
+ QElapsedTimer timer;
+ timer.start();
+#endif
QList<QSslCertificate> systemCerts;
#if defined(Q_OS_MAC)
CFArrayRef cfCerts;
@@ -808,10 +843,18 @@ QList<QSslCertificate> QSslSocketPrivate::systemCaCertificates()
retriever->GetCertificates(certs);
foreach (const QByteArray &encodedCert, certs) {
QSslCertificate cert(encodedCert, QSsl::Der);
- if (!cert.isNull())
+ if (!cert.isNull()) {
+#ifdef QSSLSOCKET_DEBUG
+ qDebug() << "imported certificate: " << cert.issuerInfo(QSslCertificate::CommonName);
+#endif
systemCerts.append(cert);
+ }
}
#endif
+#ifdef QSSLSOCKET_DEBUG
+ qDebug() << "systemCaCertificates retrieval time " << timer.elapsed() << "ms";
+ qDebug() << "imported " << systemCerts.count() << " certificates";
+#endif
return systemCerts;
}
diff --git a/src/network/ssl/qsslsocket_openssl_p.h b/src/network/ssl/qsslsocket_openssl_p.h
index dec98ae..b59a6c9 100644
--- a/src/network/ssl/qsslsocket_openssl_p.h
+++ b/src/network/ssl/qsslsocket_openssl_p.h
@@ -165,6 +165,7 @@ private:
CCertAttributeFilter* iCertFilter;
TInt iCurrentCertIndex;
QByteArray iCertificateData;
+ TPtr8 iCertificatePtr;
QList<QByteArray>* iCertificates;
TInt iSequenceError;
};
diff --git a/src/opengl/gl2paintengineex/qgl2pexvertexarray_p.h b/src/opengl/gl2paintengineex/qgl2pexvertexarray_p.h
index 46029b9..b8c1018 100644
--- a/src/opengl/gl2paintengineex/qgl2pexvertexarray_p.h
+++ b/src/opengl/gl2paintengineex/qgl2pexvertexarray_p.h
@@ -93,7 +93,7 @@ struct QGLRect
GLfloat right;
GLfloat bottom;
- operator QRectF() {return QRectF(left, top, right-left, bottom-top);}
+ operator QRectF() const {return QRectF(left, top, right-left, bottom-top);}
};
class QGL2PEXVertexArray
diff --git a/src/opengl/gl2paintengineex/qglengineshadermanager_p.h b/src/opengl/gl2paintengineex/qglengineshadermanager_p.h
index d24f302..fa11dd7 100644
--- a/src/opengl/gl2paintengineex/qglengineshadermanager_p.h
+++ b/src/opengl/gl2paintengineex/qglengineshadermanager_p.h
@@ -72,7 +72,7 @@
The position shaders for brushes look scary. This is because many of the
calculations which logically belong in the fragment shader have been moved
into the vertex shader to improve performance. This is why the position
- calculation is in a seperate shader. Not only does it calculate the
+ calculation is in a separate shader. Not only does it calculate the
position, but it also calculates some data to be passed to the fragment
shader as a varying. It is optimal to move as much of the calculation as
possible into the vertex shader as this is executed less often.
diff --git a/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp b/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp
index 66895dd..85e4eab 100644
--- a/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp
+++ b/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp
@@ -1379,8 +1379,8 @@ void QGL2PaintEngineEx::drawStaticTextItem(QStaticTextItem *textItem)
ensureActive();
- QFontEngineGlyphCache::Type glyphType = textItem->fontEngine->glyphFormat >= 0
- ? QFontEngineGlyphCache::Type(textItem->fontEngine->glyphFormat)
+ QFontEngineGlyphCache::Type glyphType = textItem->fontEngine()->glyphFormat >= 0
+ ? QFontEngineGlyphCache::Type(textItem->fontEngine()->glyphFormat)
: d->glyphCacheType;
if (glyphType == QFontEngineGlyphCache::Raster_RGBMask) {
if (d->device->alphaRequested() || state()->matrix.type() > QTransform::TxTranslate
@@ -1459,7 +1459,7 @@ void QGL2PaintEngineEx::drawTextItem(const QPointF &p, const QTextItem &textItem
{
QStaticTextItem staticTextItem;
staticTextItem.chars = const_cast<QChar *>(ti.chars);
- staticTextItem.fontEngine = ti.fontEngine;
+ staticTextItem.setFontEngine(ti.fontEngine);
staticTextItem.glyphs = glyphs.data();
staticTextItem.numChars = ti.num_chars;
staticTextItem.numGlyphs = glyphs.size();
@@ -1505,19 +1505,19 @@ void QGL2PaintEngineExPrivate::drawCachedGlyphs(QFontEngineGlyphCache::Type glyp
void *cacheKey = const_cast<QGLContext *>(QGLContextPrivate::contextGroup(ctx)->context());
QGLTextureGlyphCache *cache =
- (QGLTextureGlyphCache *) staticTextItem->fontEngine->glyphCache(cacheKey, glyphType, QTransform());
+ (QGLTextureGlyphCache *) staticTextItem->fontEngine()->glyphCache(cacheKey, glyphType, QTransform());
if (!cache || cache->cacheType() != glyphType || cache->context() == 0) {
cache = new QGLTextureGlyphCache(ctx, glyphType, QTransform());
- staticTextItem->fontEngine->setGlyphCache(cacheKey, cache);
+ staticTextItem->fontEngine()->setGlyphCache(cacheKey, cache);
cache->insert(ctx, cache);
}
bool recreateVertexArrays = false;
if (staticTextItem->userDataNeedsUpdate)
recreateVertexArrays = true;
- else if (staticTextItem->userData == 0)
+ else if (staticTextItem->userData() == 0)
recreateVertexArrays = true;
- else if (staticTextItem->userData->type != QStaticTextUserData::OpenGLUserData)
+ else if (staticTextItem->userData()->type != QStaticTextUserData::OpenGLUserData)
recreateVertexArrays = true;
// We only need to update the cache with new glyphs if we are actually going to recreate the vertex arrays.
@@ -1525,8 +1525,8 @@ 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);
+ cache->populate(staticTextItem->fontEngine(), staticTextItem->numGlyphs,
+ staticTextItem->glyphs, staticTextItem->glyphPositions);
cache->fillInPendingGlyphs();
}
@@ -1547,14 +1547,14 @@ void QGL2PaintEngineExPrivate::drawCachedGlyphs(QFontEngineGlyphCache::Type glyp
if (staticTextItem->useBackendOptimizations) {
QOpenGLStaticTextUserData *userData = 0;
- if (staticTextItem->userData == 0
- || staticTextItem->userData->type != QStaticTextUserData::OpenGLUserData) {
+ if (staticTextItem->userData() == 0
+ || staticTextItem->userData()->type != QStaticTextUserData::OpenGLUserData) {
userData = new QOpenGLStaticTextUserData();
staticTextItem->setUserData(userData);
} else {
- userData = static_cast<QOpenGLStaticTextUserData*>(staticTextItem->userData);
+ userData = static_cast<QOpenGLStaticTextUserData*>(staticTextItem->userData());
}
// Use cache if backend optimizations is turned on
@@ -1573,7 +1573,7 @@ void QGL2PaintEngineExPrivate::drawCachedGlyphs(QFontEngineGlyphCache::Type glyp
vertexCoordinates->clear();
textureCoordinates->clear();
- bool supportsSubPixelPositions = staticTextItem->fontEngine->supportsSubPixelPositions();
+ bool supportsSubPixelPositions = staticTextItem->fontEngine()->supportsSubPixelPositions();
for (int i=0; i<staticTextItem->numGlyphs; ++i) {
QFixed subPixelPosition;
if (supportsSubPixelPositions)
diff --git a/src/opengl/qgl.cpp b/src/opengl/qgl.cpp
index f316db6..cf45239 100644
--- a/src/opengl/qgl.cpp
+++ b/src/opengl/qgl.cpp
@@ -136,7 +136,12 @@ Q_GLOBAL_STATIC(QGLDefaultOverlayFormat, defaultOverlayFormatInstance)
Q_GLOBAL_STATIC(QGLSignalProxy, theSignalProxy)
QGLSignalProxy *QGLSignalProxy::instance()
{
- return theSignalProxy();
+ QGLSignalProxy *proxy = theSignalProxy();
+ if (proxy && proxy->thread() != qApp->thread()) {
+ if (proxy->thread() == QThread::currentThread())
+ proxy->moveToThread(qApp->thread());
+ }
+ return proxy;
}
@@ -1650,12 +1655,23 @@ const QGLContext *qt_gl_transfer_context(const QGLContext *ctx)
return 0;
}
+QGLContextPrivate::QGLContextPrivate(QGLContext *context)
+ : internal_context(false)
+ , q_ptr(context)
+{
+ group = new QGLContextGroup(context);
+ texture_destroyer = new QGLTextureDestroyer;
+ texture_destroyer->moveToThread(qApp->thread());
+}
+
QGLContextPrivate::~QGLContextPrivate()
{
if (!group->m_refs.deref()) {
Q_ASSERT(group->context() == q_ptr);
delete group;
}
+
+ delete texture_destroyer;
}
void QGLContextPrivate::init(QPaintDevice *dev, const QGLFormat &format)
diff --git a/src/opengl/qgl.h b/src/opengl/qgl.h
index 2ac4cb6..4f10e5c 100644
--- a/src/opengl/qgl.h
+++ b/src/opengl/qgl.h
@@ -425,6 +425,7 @@ private:
friend class QGLSharedResourceGuard;
friend class QGLPixmapBlurFilter;
friend class QGLExtensions;
+ friend class QGLTexture;
friend QGLFormat::OpenGLVersionFlags QGLFormat::openGLVersionFlags();
#ifdef Q_WS_MAC
public:
diff --git a/src/opengl/qgl_egl.cpp b/src/opengl/qgl_egl.cpp
index 27f7ad9..8902099 100644
--- a/src/opengl/qgl_egl.cpp
+++ b/src/opengl/qgl_egl.cpp
@@ -88,7 +88,7 @@ void qt_eglproperties_set_glformat(QEglProperties& eglProperties, const QGLForma
// put in the list before 32-bit configs. So, to make sure 16-bit is preffered over 32-bit,
// we must set the red/green/blue sizes to zero. This has an unfortunate consequence that
// if the application sets the red/green/blue size to 5/6/5 on the QGLFormat, they will
- // probably get a 32-bit config, even when there's an RGB565 config avaliable. Oh well.
+ // probably get a 32-bit config, even when there's an RGB565 config available. Oh well.
// Now normalize the values so -1 becomes 0
redSize = redSize > 0 ? redSize : 0;
diff --git a/src/opengl/qgl_p.h b/src/opengl/qgl_p.h
index 8c7f15c..8285f06 100644
--- a/src/opengl/qgl_p.h
+++ b/src/opengl/qgl_p.h
@@ -319,6 +319,7 @@ private:
};
class QGLTexture;
+class QGLTextureDestroyer;
// This probably needs to grow to GL_MAX_VERTEX_ATTRIBS, but 3 is ok for now as that's
// all the GL2 engine uses:
@@ -330,7 +331,7 @@ class QGLContextPrivate
{
Q_DECLARE_PUBLIC(QGLContext)
public:
- explicit QGLContextPrivate(QGLContext *context) : internal_context(false), q_ptr(context) {group = new QGLContextGroup(context);}
+ explicit QGLContextPrivate(QGLContext *context);
~QGLContextPrivate();
QGLTexture *bindTexture(const QImage &image, GLenum target, GLint format,
QGLContext::BindOptions options);
@@ -430,6 +431,7 @@ public:
GLuint default_fbo;
QPaintEngine *active_engine;
QHash<QGLContextResourceBase *, void *> m_resources;
+ QGLTextureDestroyer *texture_destroyer;
bool vertexAttributeArraysEnabledState[QT_GL_VERTEX_ARRAY_TRACKED_COUNT];
@@ -447,20 +449,6 @@ public:
static void setCurrentContext(QGLContext *context);
};
-// ### make QGLContext a QObject in 5.0 and remove the proxy stuff
-class Q_OPENGL_EXPORT QGLSignalProxy : public QObject
-{
- Q_OBJECT
-public:
- QGLSignalProxy() : QObject() {}
- void emitAboutToDestroyContext(const QGLContext *context) {
- emit aboutToDestroyContext(context);
- }
- static QGLSignalProxy *instance();
-Q_SIGNALS:
- void aboutToDestroyContext(const QGLContext *context);
-};
-
Q_DECLARE_OPERATORS_FOR_FLAGS(QGLExtensions::Extensions)
// Temporarily make a context current if not already current or
@@ -503,6 +491,56 @@ private:
QGLContext *m_ctx;
};
+class QGLTextureDestroyer : public QObject
+{
+ Q_OBJECT
+public:
+ QGLTextureDestroyer() : QObject() {
+ qRegisterMetaType<GLuint>("GLuint");
+ connect(this, SIGNAL(freeTexture(QGLContext *, QPixmapData *, GLuint)),
+ this, SLOT(freeTexture_slot(QGLContext *, QPixmapData *, GLuint)));
+ }
+ void emitFreeTexture(QGLContext *context, QPixmapData *boundPixmap, GLuint id) {
+ emit freeTexture(context, boundPixmap, id);
+ }
+
+Q_SIGNALS:
+ void freeTexture(QGLContext *context, QPixmapData *boundPixmap, GLuint id);
+
+private slots:
+ void freeTexture_slot(QGLContext *context, QPixmapData *boundPixmap, GLuint id) {
+#if defined(Q_WS_X11)
+ if (boundPixmap) {
+ QGLContext *oldContext = const_cast<QGLContext *>(QGLContext::currentContext());
+ context->makeCurrent();
+ // Although glXReleaseTexImage is a glX call, it must be called while there
+ // is a current context - the context the pixmap was bound to a texture in.
+ // Otherwise the release doesn't do anything and you get BadDrawable errors
+ // when you come to delete the context.
+ QGLContextPrivate::unbindPixmapFromTexture(boundPixmap);
+ glDeleteTextures(1, &id);
+ oldContext->makeCurrent();
+ return;
+ }
+#endif
+ QGLShareContextScope scope(context);
+ glDeleteTextures(1, &id);
+ }
+};
+
+// ### make QGLContext a QObject in 5.0 and remove the proxy stuff
+class Q_OPENGL_EXPORT QGLSignalProxy : public QObject
+{
+ Q_OBJECT
+public:
+ void emitAboutToDestroyContext(const QGLContext *context) {
+ emit aboutToDestroyContext(context);
+ }
+ static QGLSignalProxy *instance();
+Q_SIGNALS:
+ void aboutToDestroyContext(const QGLContext *context);
+};
+
class QGLTexture {
public:
QGLTexture(QGLContext *ctx = 0, GLuint tx_id = 0, GLenum tx_target = GL_TEXTURE_2D,
@@ -519,16 +557,10 @@ public:
~QGLTexture() {
if (options & QGLContext::MemoryManagedBindOption) {
Q_ASSERT(context);
- QGLShareContextScope scope(context);
-#if defined(Q_WS_X11)
- // Although glXReleaseTexImage is a glX call, it must be called while there
- // is a current context - the context the pixmap was bound to a texture in.
- // Otherwise the release doesn't do anything and you get BadDrawable errors
- // when you come to delete the context.
- if (boundPixmap)
- QGLContextPrivate::unbindPixmapFromTexture(boundPixmap);
+#if !defined(Q_WS_X11)
+ QPixmapData *boundPixmap = 0;
#endif
- glDeleteTextures(1, &id);
+ context->d_ptr->texture_destroyer->emitFreeTexture(context, boundPixmap, id);
}
}
diff --git a/src/opengl/qgl_x11egl.cpp b/src/opengl/qgl_x11egl.cpp
index 1f7e60a..21b1ab6 100644
--- a/src/opengl/qgl_x11egl.cpp
+++ b/src/opengl/qgl_x11egl.cpp
@@ -376,7 +376,7 @@ QGLTexture *QGLContextPrivate::bindTextureFromNativePixmap(QPixmap *pixmap, cons
checkedForEglImageTFP = true;
// We need to be able to create an EGLImage from a native pixmap, which was split
- // into a seperate EGL extension, EGL_KHR_image_pixmap. It is possible to have
+ // into a separate EGL extension, EGL_KHR_image_pixmap. It is possible to have
// eglCreateImageKHR & eglDestroyImageKHR without support for pixmaps, so we must
// check we have the EGLImage from pixmap functionality.
if (QEgl::hasExtension("EGL_KHR_image") || QEgl::hasExtension("EGL_KHR_image_pixmap")) {
diff --git a/src/opengl/qpaintengine_opengl.cpp b/src/opengl/qpaintengine_opengl.cpp
index 74b6b9a..a04d930 100644
--- a/src/opengl/qpaintengine_opengl.cpp
+++ b/src/opengl/qpaintengine_opengl.cpp
@@ -4918,7 +4918,7 @@ void QOpenGLPaintEngine::drawStaticTextItem(QStaticTextItem *textItem)
d->flushDrawQueue();
// make sure the glyphs we want to draw are in the cache
- qt_glyph_cache()->cacheGlyphs(d->device->context(), textItem->fontEngine, textItem->glyphs,
+ qt_glyph_cache()->cacheGlyphs(d->device->context(), textItem->fontEngine(), textItem->glyphs,
textItem->numGlyphs);
d->setGradientOps(Qt::SolidPattern, QRectF()); // turns off gradient ops
@@ -4941,13 +4941,13 @@ void QOpenGLPaintEngine::drawStaticTextItem(QStaticTextItem *textItem)
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
- bool antialias = !(textItem->fontEngine->fontDef.styleStrategy & QFont::NoAntialias)
+ bool antialias = !(textItem->fontEngine()->fontDef.styleStrategy & QFont::NoAntialias)
&& (d->matrix.type() > QTransform::TxTranslate);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, antialias ? GL_LINEAR : GL_NEAREST);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, antialias ? GL_LINEAR : GL_NEAREST);
for (int i=0; i< textItem->numGlyphs; ++i) {
- QGLGlyphCoord *g = qt_glyph_cache()->lookup(textItem->fontEngine, textItem->glyphs[i]);
+ QGLGlyphCoord *g = qt_glyph_cache()->lookup(textItem->fontEngine(), textItem->glyphs[i]);
// we don't cache glyphs with no width/height
if (!g)
@@ -5003,7 +5003,7 @@ void QOpenGLPaintEngine::drawTextItem(const QPointF &p, const QTextItem &textIte
{
QStaticTextItem staticTextItem;
staticTextItem.chars = const_cast<QChar *>(ti.chars);
- staticTextItem.fontEngine = ti.fontEngine;
+ staticTextItem.setFontEngine(ti.fontEngine);
staticTextItem.glyphs = glyphs.data();
staticTextItem.numChars = ti.num_chars;
staticTextItem.numGlyphs = glyphs.size();
diff --git a/src/opengl/qpixmapdata_x11gl_egl.cpp b/src/opengl/qpixmapdata_x11gl_egl.cpp
index 2c11a0b..5cbc836 100644
--- a/src/opengl/qpixmapdata_x11gl_egl.cpp
+++ b/src/opengl/qpixmapdata_x11gl_egl.cpp
@@ -93,7 +93,7 @@ public:
if (rgbConfig == argbConfig)
argbContext = rgbContext;
- // Otherwise, create a seperate context to be used for ARGB pixmaps:
+ // Otherwise, create a separate context to be used for ARGB pixmaps:
if (!argbContext) {
argbContext = new QEglContext;
argbContext->setConfig(argbConfig);
@@ -314,7 +314,7 @@ QPaintEngine* QX11GLPixmapData::paintEngine() const
Q_ASSERT(ctx->d_func()->eglContext == 0);
ctx->d_func()->eglContext = hasAlphaChannel() ? sharedContexts()->argbContext : sharedContexts()->rgbContext;
- // While we use a seperate QGLContext for each pixmap, the underlying QEglContext is
+ // While we use a separate QGLContext for each pixmap, the underlying QEglContext is
// the same. So we must use a "fake" QGLContext and fool the texture cache into thinking
// each pixmap's QGLContext is sharing with this central one. The only place this is
// going to fail is where we the underlying EGL RGB and ARGB contexts aren't sharing.
diff --git a/src/openvg/qpaintengine_vg.cpp b/src/openvg/qpaintengine_vg.cpp
index ee65e48..aea203f 100644
--- a/src/openvg/qpaintengine_vg.cpp
+++ b/src/openvg/qpaintengine_vg.cpp
@@ -3475,7 +3475,7 @@ void QVGPaintEngine::drawTextItem(const QPointF &p, const QTextItem &textItem)
void QVGPaintEngine::drawStaticTextItem(QStaticTextItem *textItem)
{
- drawCachedGlyphs(textItem->numGlyphs, textItem->glyphs, textItem->font, textItem->fontEngine,
+ drawCachedGlyphs(textItem->numGlyphs, textItem->glyphs, textItem->font, textItem->fontEngine(),
QPointF(0, 0), textItem->glyphPositions);
}
diff --git a/src/plugins/bearer/corewlan/corewlan.pro b/src/plugins/bearer/corewlan/corewlan.pro
index 22ad550..90078e9 100644
--- a/src/plugins/bearer/corewlan/corewlan.pro
+++ b/src/plugins/bearer/corewlan/corewlan.pro
@@ -1,7 +1,7 @@
TARGET = qcorewlanbearer
include(../../qpluginbase.pri)
-QT = core gui network
+QT = core network
LIBS += -framework Foundation -framework SystemConfiguration
contains(QT_CONFIG, corewlan) {
diff --git a/src/plugins/bearer/corewlan/qcorewlanengine.mm b/src/plugins/bearer/corewlan/qcorewlanengine.mm
index db577fd..23dd14a 100644
--- a/src/plugins/bearer/corewlan/qcorewlanengine.mm
+++ b/src/plugins/bearer/corewlan/qcorewlanengine.mm
@@ -64,12 +64,17 @@
#include <Foundation/NSLock.h>
#include <SystemConfiguration/SCNetworkConfiguration.h>
-#include <private/qt_cocoa_helpers_mac_p.h>
#include "private/qcore_mac_p.h"
#include <net/if.h>
#include <ifaddrs.h>
+inline QString qt_NSStringToQString(const NSString *nsstr)
+{ return QCFString::toQString(reinterpret_cast<const CFStringRef>(nsstr)); }
+
+inline NSString *qt_QStringToNSString(const QString &qstr)
+{ return [reinterpret_cast<const NSString *>(QCFString::toCFStringRef(qstr)) autorelease]; }
+
@interface QT_MANGLE_NAMESPACE(QNSListener) : NSObject
{
@@ -93,11 +98,12 @@
- (id) init
{
[locker lock];
- QMacCocoaAutoReleasePool pool;
+ NSAutoreleasePool *autoreleasepool = [[NSAutoreleasePool alloc] init];
notificationCenter = [NSNotificationCenter defaultCenter];
currentInterface = [CWInterface interfaceWithName:nil];
[notificationCenter addObserver:self selector:@selector(notificationHandler:) name:kCWPowerDidChangeNotification object:nil];
[locker unlock];
+ [autoreleasepool release];
return self;
}
@@ -161,10 +167,10 @@ void QScanThread::quit()
void QScanThread::run()
{
- QMacCocoaAutoReleasePool pool;
+ NSAutoreleasePool *autoreleasepool = [[NSAutoreleasePool alloc] init];
QStringList found;
mutex.lock();
- CWInterface *currentInterface = [CWInterface interfaceWithName:qt_mac_QStringToNSString(interfaceName)];
+ CWInterface *currentInterface = [CWInterface interfaceWithName:qt_QStringToNSString(interfaceName)];
mutex.unlock();
if([currentInterface power]) {
@@ -182,14 +188,14 @@ void QScanThread::run()
for(uint row=0; row < [apArray count]; row++ ) {
apNetwork = [apArray objectAtIndex:row];
- const QString networkSsid = qt_mac_NSStringToQString([apNetwork ssid]);
+ const QString networkSsid = qt_NSStringToQString([apNetwork ssid]);
const QString id = QString::number(qHash(QLatin1String("corewlan:") + networkSsid));
found.append(id);
QNetworkConfiguration::StateFlags state = QNetworkConfiguration::Undefined;
bool known = isKnownSsid(networkSsid);
if( [currentInterface.interfaceState intValue] == kCWInterfaceStateRunning) {
- if( networkSsid == qt_mac_NSStringToQString( [currentInterface ssid])) {
+ if( networkSsid == qt_NSStringToQString( [currentInterface ssid])) {
state = QNetworkConfiguration::Active;
}
}
@@ -232,7 +238,7 @@ void QScanThread::run()
}
if( [currentInterface.interfaceState intValue] == kCWInterfaceStateRunning) {
- if( networkSsid == qt_mac_NSStringToQString([currentInterface ssid])) {
+ if( networkSsid == qt_NSStringToQString([currentInterface ssid])) {
state = QNetworkConfiguration::Active;
}
}
@@ -251,6 +257,7 @@ void QScanThread::run()
}
}
emit networksChanged();
+ [autoreleasepool release];
}
QStringList QScanThread::foundNetwork(const QString &id, const QString &name, const QNetworkConfiguration::StateFlags state, const QString &interfaceName, const QNetworkConfiguration::Purpose purpose)
@@ -290,7 +297,7 @@ void QScanThread::getUserConfigurations()
{
QMutexLocker locker(&mutex);
- QMacCocoaAutoReleasePool pool;
+ NSAutoreleasePool *autoreleasepool = [[NSAutoreleasePool alloc] init];
userProfiles.clear();
NSArray *wifiInterfaces = [CWInterface supportedInterfaces];
@@ -310,10 +317,10 @@ void QScanThread::getUserConfigurations()
NSArray *thisSsidarray = [prefNetDict valueForKey:@"SSID_STR"];
for(NSString *ssidkey in thisSsidarray) {
- QString thisSsid = qt_mac_NSStringToQString(ssidkey);
+ QString thisSsid = qt_NSStringToQString(ssidkey);
if(!userProfiles.contains(thisSsid)) {
QMap <QString,QString> map;
- map.insert(thisSsid, qt_mac_NSStringToQString(nsInterfaceName));
+ map.insert(thisSsid, qt_NSStringToQString(nsInterfaceName));
userProfiles.insert(thisSsid, map);
}
}
@@ -322,7 +329,7 @@ void QScanThread::getUserConfigurations()
// 802.1X user profiles
QString userProfilePath = QDir::homePath() + "/Library/Preferences/com.apple.eap.profiles.plist";
- NSDictionary* eapDict = [[[NSDictionary alloc] initWithContentsOfFile:qt_mac_QStringToNSString(userProfilePath)] autorelease];
+ NSDictionary* eapDict = [[[NSDictionary alloc] initWithContentsOfFile:qt_QStringToNSString(userProfilePath)] autorelease];
if(eapDict != nil) {
NSString *profileStr= @"Profiles";
NSString *nameStr = @"UserDefinedName";
@@ -341,15 +348,15 @@ void QScanThread::getUserConfigurations()
QString ssid;
for(int i = 0; i < dictSize; i++) {
if([nameStr isEqualToString:keys[i]]) {
- networkName = qt_mac_NSStringToQString(objects[i]);
+ networkName = qt_NSStringToQString(objects[i]);
}
if([networkSsidStr isEqualToString:keys[i]]) {
- ssid = qt_mac_NSStringToQString(objects[i]);
+ ssid = qt_NSStringToQString(objects[i]);
}
if(!userProfiles.contains(networkName)
&& !ssid.isEmpty()) {
QMap<QString,QString> map;
- map.insert(ssid, qt_mac_NSStringToQString(nsInterfaceName));
+ map.insert(ssid, qt_NSStringToQString(nsInterfaceName));
userProfiles.insert(networkName, map);
}
}
@@ -358,6 +365,7 @@ void QScanThread::getUserConfigurations()
}
}
}
+ [autoreleasepool release];
}
QString QScanThread::getSsidFromNetworkName(const QString &name)
@@ -434,7 +442,7 @@ QCoreWlanEngine::~QCoreWlanEngine()
void QCoreWlanEngine::initialize()
{
QMutexLocker locker(&mutex);
- QMacCocoaAutoReleasePool pool;
+ NSAutoreleasePool *autoreleasepool = [[NSAutoreleasePool alloc] init];
if([[CWInterface supportedInterfaces] count] > 0 && !listener) {
listener = [[QT_MANGLE_NAMESPACE(QNSListener) alloc] init];
@@ -446,6 +454,7 @@ void QCoreWlanEngine::initialize()
storeSession = NULL;
startNetworkChangeLoop();
+ [autoreleasepool release];
}
@@ -466,11 +475,11 @@ bool QCoreWlanEngine::hasIdentifier(const QString &id)
void QCoreWlanEngine::connectToId(const QString &id)
{
QMutexLocker locker(&mutex);
- QMacCocoaAutoReleasePool pool;
+ NSAutoreleasePool *autoreleasepool = [[NSAutoreleasePool alloc] init];
QString interfaceString = getInterfaceFromId(id);
CWInterface *wifiInterface =
- [CWInterface interfaceWithName: qt_mac_QStringToNSString(interfaceString)];
+ [CWInterface interfaceWithName: qt_QStringToNSString(interfaceString)];
if ([wifiInterface power]) {
NSError *err = nil;
@@ -488,9 +497,9 @@ void QCoreWlanEngine::connectToId(const QString &id)
NSArray *array = [CW8021XProfile allUser8021XProfiles];
for (NSUInteger i = 0; i < [array count]; ++i) {
- const QString networkNameHashCheck = QString::number(qHash(QLatin1String("corewlan:") + qt_mac_NSStringToQString([[array objectAtIndex:i] userDefinedName])));
+ const QString networkNameHashCheck = QString::number(qHash(QLatin1String("corewlan:") + qt_NSStringToQString([[array objectAtIndex:i] userDefinedName])));
- const QString ssidHash = QString::number(qHash(QLatin1String("corewlan:") + qt_mac_NSStringToQString([[array objectAtIndex:i] ssid])));
+ const QString ssidHash = QString::number(qHash(QLatin1String("corewlan:") + qt_NSStringToQString([[array objectAtIndex:i] ssid])));
if (id == networkNameHashCheck || id == ssidHash) {
const QString thisName = scanThread->getSsidFromNetworkName(id);
@@ -523,7 +532,7 @@ void QCoreWlanEngine::connectToId(const QString &id)
[NSNumber numberWithBool:YES], kCWScanKeyMerge,
[NSNumber numberWithInt:kCWScanTypeFast], kCWScanKeyScanType,
[NSNumber numberWithInteger:100], kCWScanKeyRestTime,
- qt_mac_QStringToNSString(wantedSsid), kCWScanKeySSID,
+ qt_QStringToNSString(wantedSsid), kCWScanKeySSID,
nil];
NSArray *scanArray = [wifiInterface scanForNetworksWithParameters:scanParameters error:&err];
@@ -532,7 +541,7 @@ void QCoreWlanEngine::connectToId(const QString &id)
for(uint row=0; row < [scanArray count]; row++ ) {
CWNetwork *apNetwork = [scanArray objectAtIndex:row];
- if(wantedSsid == qt_mac_NSStringToQString([apNetwork ssid])) {
+ if(wantedSsid == qt_NSStringToQString([apNetwork ssid])) {
if(!using8021X) {
SecKeychainAttribute attributes[3];
@@ -599,18 +608,19 @@ void QCoreWlanEngine::connectToId(const QString &id)
return;
}
} else {
- qDebug() <<"associate ERROR"<< qt_mac_NSStringToQString([err localizedDescription ]);
+ qDebug() <<"associate ERROR"<< qt_NSStringToQString([err localizedDescription ]);
}
}
} //end scan network
} else {
- qDebug() <<"scan ERROR"<< qt_mac_NSStringToQString([err localizedDescription ]);
+ qDebug() <<"scan ERROR"<< qt_NSStringToQString([err localizedDescription ]);
}
emit connectionError(id, InterfaceLookupError);
}
locker.unlock();
emit connectionError(id, InterfaceLookupError);
+ [autoreleasepool release];
}
void QCoreWlanEngine::disconnectFromId(const QString &id)
@@ -618,10 +628,10 @@ void QCoreWlanEngine::disconnectFromId(const QString &id)
QMutexLocker locker(&mutex);
QString interfaceString = getInterfaceFromId(id);
- QMacCocoaAutoReleasePool pool;
+ NSAutoreleasePool *autoreleasepool = [[NSAutoreleasePool alloc] init];
CWInterface *wifiInterface =
- [CWInterface interfaceWithName: qt_mac_QStringToNSString(interfaceString)];
+ [CWInterface interfaceWithName: qt_QStringToNSString(interfaceString)];
[wifiInterface disassociate];
if ([[wifiInterface interfaceState]intValue] != kCWInterfaceStateInactive) {
@@ -629,6 +639,7 @@ void QCoreWlanEngine::disconnectFromId(const QString &id)
emit connectionError(id, DisconnectionError);
locker.relock();
}
+ [autoreleasepool release];
}
void QCoreWlanEngine::requestUpdate()
@@ -641,27 +652,30 @@ void QCoreWlanEngine::doRequestUpdate()
{
QMutexLocker locker(&mutex);
- QMacCocoaAutoReleasePool pool;
+ NSAutoreleasePool *autoreleasepool = [[NSAutoreleasePool alloc] init];
NSArray *wifiInterfaces = [CWInterface supportedInterfaces];
for (uint row = 0; row < [wifiInterfaces count]; ++row) {
- scanThread->interfaceName = qt_mac_NSStringToQString([wifiInterfaces objectAtIndex:row]);
+ scanThread->interfaceName = qt_NSStringToQString([wifiInterfaces objectAtIndex:row]);
scanThread->start();
}
locker.unlock();
+ [autoreleasepool release];
}
bool QCoreWlanEngine::isWifiReady(const QString &wifiDeviceName)
{
QMutexLocker locker(&mutex);
-
+ bool haswifi = false;
if(hasWifi) {
- QMacCocoaAutoReleasePool pool;
- CWInterface *defaultInterface = [CWInterface interfaceWithName: qt_mac_QStringToNSString(wifiDeviceName)];
- if([defaultInterface power])
- return true;
+ NSAutoreleasePool *autoreleasepool = [[NSAutoreleasePool alloc] init];
+ CWInterface *defaultInterface = [CWInterface interfaceWithName: qt_QStringToNSString(wifiDeviceName)];
+ if([defaultInterface power]) {
+ haswifi = true;
+ }
+ [autoreleasepool release];
}
- return false;
+ return haswifi;
}
@@ -853,7 +867,7 @@ quint64 QCoreWlanEngine::bytesReceived(const QString &id)
quint64 QCoreWlanEngine::startTime(const QString &identifier)
{
QMutexLocker locker(&mutex);
- QMacCocoaAutoReleasePool pool;
+ NSAutoreleasePool *autoreleasepool = [[NSAutoreleasePool alloc] init];
quint64 timestamp = 0;
NSString *filePath = @"/Library/Preferences/SystemConfiguration/com.apple.airport.preferences.plist";
@@ -884,7 +898,7 @@ quint64 QCoreWlanEngine::startTime(const QString &identifier)
bool ok = false;
for(int i = 0; i < dictSize; i++) {
if([ssidStr isEqualToString:keys[i]]) {
- const QString ident = QString::number(qHash(QLatin1String("corewlan:") + qt_mac_NSStringToQString(objects[i])));
+ const QString ident = QString::number(qHash(QLatin1String("corewlan:") + qt_NSStringToQString(objects[i])));
if(ident == identifier) {
ok = true;
}
@@ -900,6 +914,7 @@ quint64 QCoreWlanEngine::startTime(const QString &identifier)
}
}
}
+ [autoreleasepool release];
return timestamp;
}
diff --git a/src/plugins/bearer/icd/icd.pro b/src/plugins/bearer/icd/icd.pro
index 464cc1c..6700cda 100644
--- a/src/plugins/bearer/icd/icd.pro
+++ b/src/plugins/bearer/icd/icd.pro
@@ -1,7 +1,7 @@
TARGET = qicdbearer
include(../../qpluginbase.pri)
-QT += network dbus
+QT = core network dbus
QMAKE_CXXFLAGS *= $$QT_CFLAGS_DBUS $$QT_CFLAGS_CONNSETTINGS
LIBS += $$QT_LIBS_CONNSETTINGS
diff --git a/src/plugins/bearer/symbian/qnetworksession_impl.cpp b/src/plugins/bearer/symbian/qnetworksession_impl.cpp
index 85723ce..c5a39e1 100644
--- a/src/plugins/bearer/symbian/qnetworksession_impl.cpp
+++ b/src/plugins/bearer/symbian/qnetworksession_impl.cpp
@@ -1078,7 +1078,7 @@ void QNetworkSessionPrivateImpl::RunL()
TInt error = KErrNone;
QNetworkConfiguration newActiveConfig = activeConfiguration();
if (!newActiveConfig.isValid()) {
- // RConnection startup was successfull but no configuration
+ // RConnection startup was successful but no configuration
// was found. That indicates that user has chosen to create a
// new WLAN configuration (from scan results), but that new
// configuration does not have access to Internet (Internet
diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.cpp b/src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.cpp
index 4869eba..c16a242 100644
--- a/src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.cpp
+++ b/src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.cpp
@@ -55,6 +55,7 @@
#include <private/qpixmap_raster_p.h>
#include <private/qimagepixmapcleanuphooks_p.h>
+
QT_BEGIN_NAMESPACE
class SurfaceCache;
@@ -112,7 +113,11 @@ public:
static inline int cacheCost(const QImage &img) { return img.width() * img.height() * img.depth() / 8; }
#endif
- void prepareForBlit(bool alpha);
+ enum BlitFlag {
+ HasAlpha = 0x1,
+ Premultiplied = 0x2
+ };
+ void prepareForBlit(uint blitFlags);
IDirectFBSurface *surface;
@@ -616,7 +621,12 @@ void QDirectFBPaintEngine::drawImage(const QRectF &r, const QImage &image,
#if !defined QT_NO_DIRECTFB_PREALLOCATED || defined QT_DIRECTFB_IMAGECACHE
bool release;
IDirectFBSurface *imgSurface = d->getSurface(image, &release);
- d->prepareForBlit(QDirectFBScreen::hasAlphaChannel(imgSurface));
+ uint blitFlags = 0;
+ if (image.hasAlphaChannel())
+ blitFlags |= QDirectFBPaintEnginePrivate::HasAlpha;
+ if (QDirectFBScreen::isPremultiplied(image.format()))
+ blitFlags |= QDirectFBPaintEnginePrivate::Premultiplied;
+ d->prepareForBlit(blitFlags);
CLIPPED_PAINT(d->blit(r, imgSurface, sr));
if (release) {
#if (Q_DIRECTFB_VERSION >= 0x010000)
@@ -655,8 +665,14 @@ void QDirectFBPaintEngine::drawPixmap(const QRectF &r, const QPixmap &pixmap,
QRasterPaintEngine::drawImage(r, *img, sr);
} else {
QDirectFBPaintEnginePrivate::unlock(dfbData);
- d->prepareForBlit(pixmap.hasAlphaChannel());
IDirectFBSurface *s = dfbData->directFBSurface();
+ uint blitFlags = 0;
+ if (pixmap.hasAlphaChannel())
+ blitFlags |= QDirectFBPaintEnginePrivate::HasAlpha;
+ if (QDirectFBScreen::isPremultiplied(dfbData->pixelFormat()))
+ blitFlags |= QDirectFBPaintEnginePrivate::Premultiplied;
+
+ d->prepareForBlit(blitFlags);
CLIPPED_PAINT(d->blit(r, s, sr));
}
}
@@ -978,7 +994,7 @@ void QDirectFBPaintEnginePrivate::setCompositionMode(QPainter::CompositionMode m
break;
case QPainter::CompositionMode_SourceOver:
compositionModeStatus &= ~PorterDuff_AlwaysBlend;
- surface->SetPorterDuff(surface, DSPD_NONE);
+ surface->SetPorterDuff(surface, DSPD_SRC_OVER);
break;
case QPainter::CompositionMode_DestinationOver:
surface->SetPorterDuff(surface, DSPD_DST_OVER);
@@ -1031,13 +1047,18 @@ void QDirectFBPaintEnginePrivate::setRenderHints(QPainter::RenderHints hints)
}
}
-void QDirectFBPaintEnginePrivate::prepareForBlit(bool alpha)
+void QDirectFBPaintEnginePrivate::prepareForBlit(uint flags)
{
- DFBSurfaceBlittingFlags blittingFlags = alpha ? DSBLIT_BLEND_ALPHACHANNEL : DSBLIT_NOFX;
+ DFBSurfaceBlittingFlags blittingFlags = DSBLIT_NOFX;
+ if (flags & Premultiplied)
+ blittingFlags |= DSBLIT_SRC_PREMULTIPLY;
+ if (flags & HasAlpha)
+ blittingFlags |= DSBLIT_BLEND_ALPHACHANNEL;
if (opacity != 255) {
blittingFlags |= DSBLIT_BLEND_COLORALPHA;
+ surface->SetColor(surface, 0xff, 0xff, 0xff, opacity);
}
- surface->SetColor(surface, 0xff, 0xff, 0xff, opacity);
+
surface->SetBlittingFlags(surface, blittingFlags);
}
@@ -1154,13 +1175,18 @@ void QDirectFBPaintEnginePrivate::drawTiledPixmap(const QRectF &dest, const QPix
QPointF offset = off;
Q_ASSERT(transform.type() <= QTransform::TxScale);
- prepareForBlit(pixmap.hasAlphaChannel());
QPixmapData *data = pixmap.pixmapData();
Q_ASSERT(data->classId() == QPixmapData::DirectFBClass);
QDirectFBPixmapData *dfbData = static_cast<QDirectFBPixmapData*>(data);
+ IDirectFBSurface *sourceSurface = dfbData->directFBSurface();
+ uint blitFlags = 0;
+ if (dfbData->hasAlphaChannel())
+ blitFlags |= HasAlpha;
+ if (QDirectFBScreen::isPremultiplied(dfbData->pixelFormat()))
+ blitFlags |= Premultiplied;
+ prepareForBlit(blitFlags);
QDirectFBPaintEnginePrivate::unlock(dfbData);
const QSize pixmapSize = dfbData->size();
- IDirectFBSurface *sourceSurface = dfbData->directFBSurface();
if (transform.isScaling()) {
Q_ASSERT(supportsStretchBlit());
Q_ASSERT(qMin(transform.m11(), transform.m22()) >= 0);
diff --git a/src/plugins/graphicssystems/meego/dithering.cpp b/src/plugins/graphicssystems/meego/dithering.cpp
index b50826c..1a2e3fa 100644
--- a/src/plugins/graphicssystems/meego/dithering.cpp
+++ b/src/plugins/graphicssystems/meego/dithering.cpp
@@ -68,7 +68,7 @@
// Writes(ads) a new value to the diffusion accumulator. accumulator is a short.
// x, y is a position in the accumulation buffer. y can be 0 or 1 -- we operate on two lines at time.
-#define ACCUMULATE(accumulator, x, y, width, v) if (x < width && x > 0) accumulator[(y * width) + x] += v
+#define ACCUMULATE(accumulator, x, y, width, v) if (x < width && x >= 0) accumulator[(y * width) + x] += v
// Clamps a value to be in 0..255 range.
#define CLAMP_256(v) if (v > 255) v = 255; if (v < 0) v = 0;
@@ -76,8 +76,13 @@
// Converts incoming RGB32 (QImage::Format_RGB32) to RGB565. Returns the newly allocated data.
unsigned short* convertRGB32_to_RGB565(const unsigned char *in, int width, int height, int stride)
{
+ // Output line stride. Aligned to 4 bytes.
+ int alignedWidth = width;
+ if (alignedWidth % 2 > 0)
+ alignedWidth++;
+
// Will store output
- unsigned short *out = (unsigned short *) malloc(width * height * 2);
+ unsigned short *out = (unsigned short *) malloc(alignedWidth * height * 2);
// Lookup tables for the 8bit => 6bit and 8bit => 5bit conversion
unsigned char lookup_8bit_to_5bit[256];
@@ -105,18 +110,18 @@ unsigned short* convertRGB32_to_RGB565(const unsigned char *in, int width, int h
// Produce the conversion lookup tables.
for (i = 0; i < 256; i++) {
lookup_8bit_to_5bit[i] = round(i / 8.0);
- if (lookup_8bit_to_5bit[i] > 31)
- lookup_8bit_to_5bit[i] -= 1;
// Before bitshifts: (i * 8) - (... * 8 * 8)
lookup_8bit_to_5bit_diff[i] = (i << 3) - (lookup_8bit_to_5bit[i] << 6);
+ if (lookup_8bit_to_5bit[i] > 31)
+ lookup_8bit_to_5bit[i] -= 1;
lookup_8bit_to_6bit[i] = round(i / 4.0);
- if (lookup_8bit_to_6bit[i] > 63)
- lookup_8bit_to_6bit[i] -= 1;
// Before bitshifts: (i * 8) - (... * 4 * 8)
lookup_8bit_to_6bit_diff[i] = (i << 3) - (lookup_8bit_to_6bit[i] << 5);
+ if (lookup_8bit_to_6bit[i] > 63)
+ lookup_8bit_to_6bit[i] -= 1;
}
// Clear the accumulators
@@ -174,7 +179,7 @@ unsigned short* convertRGB32_to_RGB565(const unsigned char *in, int width, int h
}
// Write the newly produced pixel
- PUT_565(out, x, y, width, component[2], component[1], component[0]);
+ PUT_565(out, x, y, alignedWidth, component[2], component[1], component[0]);
}
}
@@ -183,10 +188,16 @@ unsigned short* convertRGB32_to_RGB565(const unsigned char *in, int width, int h
// Converts incoming RGBA32 (QImage::Format_ARGB32_Premultiplied) to RGB565. Returns the newly allocated data.
// This function is similar (yet different) to the _565 variant but it makes sense to duplicate it here for simplicity.
+// The output has each scan line aligned to 4 bytes (as expected by GL by default).
unsigned short* convertARGB32_to_RGBA4444(const unsigned char *in, int width, int height, int stride)
{
+ // Output line stride. Aligned to 4 bytes.
+ int alignedWidth = width;
+ if (alignedWidth % 2 > 0)
+ alignedWidth++;
+
// Will store output
- unsigned short *out = (unsigned short *) malloc(width * height * 2);
+ unsigned short *out = (unsigned short *) malloc(alignedWidth * 2 * height);
// Lookup tables for the 8bit => 4bit conversion
unsigned char lookup_8bit_to_4bit[256];
@@ -210,11 +221,11 @@ unsigned short* convertARGB32_to_RGBA4444(const unsigned char *in, int width, in
// Produce the conversion lookup tables.
for (i = 0; i < 256; i++) {
lookup_8bit_to_4bit[i] = round(i / 16.0);
- if (lookup_8bit_to_4bit[i] > 15)
- lookup_8bit_to_4bit[i] -= 1;
-
// Before bitshifts: (i * 8) - (... * 16 * 8)
lookup_8bit_to_4bit_diff[i] = (i << 3) - (lookup_8bit_to_4bit[i] << 7);
+
+ if (lookup_8bit_to_4bit[i] > 15)
+ lookup_8bit_to_4bit[i] = 15;
}
// Clear the accumulators
@@ -269,7 +280,25 @@ unsigned short* convertARGB32_to_RGBA4444(const unsigned char *in, int width, in
}
// Write the newly produced pixel
- PUT_4444(out, x, y, width, component[0], component[1], component[2], component[3]);
+ PUT_4444(out, x, y, alignedWidth, component[0], component[1], component[2], component[3]);
+ }
+ }
+
+ return out;
+}
+
+unsigned char* convertBGRA32_to_RGBA32(const unsigned char *in, int width, int height, int stride)
+{
+ unsigned char *out = (unsigned char *) malloc(stride * height);
+
+ // For each line...
+ for (int y = 0; y < height; y++) {
+ // For each column
+ for (int x = 0; x < width; x++) {
+ out[(stride * y) + (x * 4) + 0] = in[(stride * y) + (x * 4) + 2];
+ out[(stride * y) + (x * 4) + 1] = in[(stride * y) + (x * 4) + 1];
+ out[(stride * y) + (x * 4) + 2] = in[(stride * y) + (x * 4) + 0];
+ out[(stride * y) + (x * 4) + 3] = in[(stride * y) + (x * 4) + 3];
}
}
diff --git a/src/plugins/graphicssystems/meego/qmeegoextensions.cpp b/src/plugins/graphicssystems/meego/qmeegoextensions.cpp
index 611c962..dff80a4 100644
--- a/src/plugins/graphicssystems/meego/qmeegoextensions.cpp
+++ b/src/plugins/graphicssystems/meego/qmeegoextensions.cpp
@@ -47,6 +47,7 @@ bool QMeeGoExtensions::initialized = false;
bool QMeeGoExtensions::hasImageShared = false;
bool QMeeGoExtensions::hasSurfaceScaling = false;
bool QMeeGoExtensions::hasLockSurface = false;
+bool QMeeGoExtensions::hasFenceSync = false;
/* Extension funcs */
@@ -54,8 +55,12 @@ typedef EGLBoolean (EGLAPIENTRY *eglQueryImageNOKFunc)(EGLDisplay, EGLImageKHR,
typedef EGLNativeSharedImageTypeNOK (EGLAPIENTRY *eglCreateSharedImageNOKFunc)(EGLDisplay, EGLImageKHR, EGLint*);
typedef EGLBoolean (EGLAPIENTRY *eglDestroySharedImageNOKFunc)(EGLDisplay, EGLNativeSharedImageTypeNOK);
typedef EGLBoolean (EGLAPIENTRY *eglSetSurfaceScalingNOKFunc)(EGLDisplay, EGLSurface, EGLint, EGLint, EGLint, EGLint);
-typedef EGLBoolean (EGLAPIENTRY *eglLockSurfaceKHRFunc)(EGLDisplay display, EGLSurface surface, const EGLint *attrib_list);
-typedef EGLBoolean (EGLAPIENTRY *eglUnlockSurfaceKHRFunc)(EGLDisplay display, EGLSurface surface);
+typedef EGLBoolean (EGLAPIENTRY *eglLockSurfaceKHRFunc)(EGLDisplay, EGLSurface, const EGLint*);
+typedef EGLBoolean (EGLAPIENTRY *eglUnlockSurfaceKHRFunc)(EGLDisplay, EGLSurface);
+typedef EGLSyncKHR (EGLAPIENTRY *eglCreateSyncKHRFunc)(EGLDisplay, EGLenum, const EGLint*);
+typedef EGLBoolean (EGLAPIENTRY *eglDestroySyncKHRFunc)(EGLDisplay, EGLSyncKHR);
+typedef EGLint (EGLAPIENTRY *eglClientWaitSyncKHRFunc)(EGLDisplay, EGLSyncKHR, EGLint, EGLTimeKHR);
+typedef EGLBoolean (EGLAPIENTRY *eglGetSyncAttribKHRFunc)(EGLDisplay, EGLSyncKHR, EGLint, EGLint*);
static eglQueryImageNOKFunc _eglQueryImageNOK = 0;
static eglCreateSharedImageNOKFunc _eglCreateSharedImageNOK = 0;
@@ -63,6 +68,10 @@ static eglDestroySharedImageNOKFunc _eglDestroySharedImageNOK = 0;
static eglSetSurfaceScalingNOKFunc _eglSetSurfaceScalingNOK = 0;
static eglLockSurfaceKHRFunc _eglLockSurfaceKHR = 0;
static eglUnlockSurfaceKHRFunc _eglUnlockSurfaceKHR = 0;
+static eglCreateSyncKHRFunc _eglCreateSyncKHR = 0;
+static eglDestroySyncKHRFunc _eglDestroySyncKHR = 0;
+static eglClientWaitSyncKHRFunc _eglClientWaitSyncKHR = 0;
+static eglGetSyncAttribKHRFunc _eglGetSyncAttribKHR = 0;
/* Public */
@@ -76,15 +85,15 @@ void QMeeGoExtensions::ensureInitialized()
EGLNativeSharedImageTypeNOK QMeeGoExtensions::eglCreateSharedImageNOK(EGLDisplay dpy, EGLImageKHR image, EGLint *props)
{
- if (! hasImageShared)
+ if (!hasImageShared)
qFatal("EGL_NOK_image_shared not found but trying to use capability!");
-
+
return _eglCreateSharedImageNOK(dpy, image, props);
}
bool QMeeGoExtensions::eglQueryImageNOK(EGLDisplay dpy, EGLImageKHR image, EGLint prop, EGLint *v)
{
- if (! hasImageShared)
+ if (!hasImageShared)
qFatal("EGL_NOK_image_shared not found but trying to use capability!");
return _eglQueryImageNOK(dpy, image, prop, v);
@@ -92,7 +101,7 @@ bool QMeeGoExtensions::eglQueryImageNOK(EGLDisplay dpy, EGLImageKHR image, EGLin
bool QMeeGoExtensions::eglDestroySharedImageNOK(EGLDisplay dpy, EGLNativeSharedImageTypeNOK img)
{
- if (! hasImageShared)
+ if (!hasImageShared)
qFatal("EGL_NOK_image_shared not found but trying to use capability!");
return _eglDestroySharedImageNOK(dpy, img);
@@ -100,7 +109,7 @@ bool QMeeGoExtensions::eglDestroySharedImageNOK(EGLDisplay dpy, EGLNativeSharedI
bool QMeeGoExtensions::eglSetSurfaceScalingNOK(EGLDisplay dpy, EGLSurface surface, int x, int y, int width, int height)
{
- if (! hasSurfaceScaling)
+ if (!hasSurfaceScaling)
qFatal("EGL_NOK_surface_scaling not found but trying to use capability!");
return _eglSetSurfaceScalingNOK(dpy, surface, x, y, width, height);
@@ -108,7 +117,7 @@ bool QMeeGoExtensions::eglSetSurfaceScalingNOK(EGLDisplay dpy, EGLSurface surfac
bool QMeeGoExtensions::eglLockSurfaceKHR(EGLDisplay display, EGLSurface surface, const EGLint *attrib_list)
{
- if (! hasLockSurface)
+ if (!hasLockSurface)
qFatal("EGL_KHR_lock_surface2 not found but trying to use capability!");
return _eglLockSurfaceKHR(display, surface, attrib_list);
@@ -116,19 +125,51 @@ bool QMeeGoExtensions::eglLockSurfaceKHR(EGLDisplay display, EGLSurface surface,
bool QMeeGoExtensions::eglUnlockSurfaceKHR(EGLDisplay display, EGLSurface surface)
{
- if (! hasLockSurface)
+ if (!hasLockSurface)
qFatal("EGL_KHR_lock_surface2 not found but trying to use capability!");
return _eglUnlockSurfaceKHR(display, surface);
}
+EGLSyncKHR QMeeGoExtensions::eglCreateSyncKHR(EGLDisplay dpy, EGLenum type, const EGLint *attrib_list)
+{
+ if (!hasFenceSync)
+ qFatal("EGL_KHR_fence_sync not found but trying to use capability!");
+
+ return _eglCreateSyncKHR(dpy, type, attrib_list);
+}
+
+bool QMeeGoExtensions::eglDestroySyncKHR(EGLDisplay dpy, EGLSyncKHR sync)
+{
+ if (!hasFenceSync)
+ qFatal("EGL_KHR_fence_sync not found but trying to use capability!");
+
+ return _eglDestroySyncKHR(dpy, sync);
+}
+
+EGLint QMeeGoExtensions::eglClientWaitSyncKHR(EGLDisplay dpy, EGLSyncKHR sync, EGLint flags, EGLTimeKHR timeout)
+{
+ if (!hasFenceSync)
+ qFatal("EGL_KHR_fence_sync not found but trying to use capability!");
+
+ return _eglClientWaitSyncKHR(dpy, sync, flags, timeout);
+}
+
+EGLBoolean QMeeGoExtensions::eglGetSyncAttribKHR(EGLDisplay dpy, EGLSyncKHR sync, EGLint attribute, EGLint *value)
+{
+ if (!hasFenceSync)
+ qFatal("EGL_KHR_fence_sync not found but trying to use capability!");
+
+ return _eglGetSyncAttribKHR(dpy, sync, attribute, value);
+}
+
/* Private */
void QMeeGoExtensions::initialize()
{
QGLContext *ctx = (QGLContext *) QGLContext::currentContext();
qt_resolve_eglimage_gl_extensions(ctx);
-
+
if (QEgl::hasExtension("EGL_NOK_image_shared")) {
qDebug("MeegoGraphics: found EGL_NOK_image_shared");
_eglQueryImageNOK = (eglQueryImageNOKFunc) eglGetProcAddress("eglQueryImageNOK");
@@ -136,15 +177,15 @@ void QMeeGoExtensions::initialize()
_eglDestroySharedImageNOK = (eglDestroySharedImageNOKFunc) eglGetProcAddress("eglDestroySharedImageNOK");
_eglLockSurfaceKHR = (eglLockSurfaceKHRFunc) eglGetProcAddress("eglLockSurfaceKHR");
_eglUnlockSurfaceKHR = (eglUnlockSurfaceKHRFunc) eglGetProcAddress("eglUnlockSurfaceKHR");
-
+
Q_ASSERT(_eglQueryImageNOK && _eglCreateSharedImageNOK && _eglDestroySharedImageNOK);
hasImageShared = true;
}
-
+
if (QEgl::hasExtension("EGL_NOK_surface_scaling")) {
qDebug("MeegoGraphics: found EGL_NOK_surface_scaling");
_eglSetSurfaceScalingNOK = (eglSetSurfaceScalingNOKFunc) eglGetProcAddress("eglSetSurfaceScalingNOK");
-
+
Q_ASSERT(_eglSetSurfaceScalingNOK);
hasSurfaceScaling = true;
}
@@ -153,9 +194,20 @@ void QMeeGoExtensions::initialize()
qDebug("MeegoGraphics: found EGL_KHR_lock_surface2");
_eglLockSurfaceKHR = (eglLockSurfaceKHRFunc) eglGetProcAddress("eglLockSurfaceKHR");
_eglUnlockSurfaceKHR = (eglUnlockSurfaceKHRFunc) eglGetProcAddress("eglUnlockSurfaceKHR");
-
+
Q_ASSERT(_eglLockSurfaceKHR && _eglUnlockSurfaceKHR);
hasLockSurface = true;
}
+
+ if (QEgl::hasExtension("EGL_KHR_fence_sync")) {
+ qDebug("MeegoGraphics: found EGL_KHR_fence_sync");
+ _eglCreateSyncKHR = (eglCreateSyncKHRFunc) eglGetProcAddress("eglCreateSyncKHR");
+ _eglDestroySyncKHR = (eglDestroySyncKHRFunc) eglGetProcAddress("eglDestroySyncKHR");
+ _eglClientWaitSyncKHR = (eglClientWaitSyncKHRFunc) eglGetProcAddress("eglClientWaitSyncKHR");
+ _eglGetSyncAttribKHR = (eglGetSyncAttribKHRFunc) eglGetProcAddress("eglGetSyncAttribKHR");
+
+ Q_ASSERT(_eglCreateSyncKHR && _eglDestroySyncKHR && _eglClientWaitSyncKHR && _eglGetSyncAttribKHR);
+ hasFenceSync = true;
+ }
}
diff --git a/src/plugins/graphicssystems/meego/qmeegoextensions.h b/src/plugins/graphicssystems/meego/qmeegoextensions.h
index 9e78caf..49a1e30 100644
--- a/src/plugins/graphicssystems/meego/qmeegoextensions.h
+++ b/src/plugins/graphicssystems/meego/qmeegoextensions.h
@@ -77,6 +77,23 @@ typedef void* EGLNativeSharedImageTypeNOK;
#define EGL_WRITE_SURFACE_BIT_KHR 0x0002
#endif
+#ifndef EGL_SYNC_FENCE_KHR
+#define EGL_SYNC_FENCE_KHR 0x30F9
+#define EGL_SYNC_TYPE_KHR 0x30F7
+#define EGL_SYNC_STATUS_KHR 0x30F1
+#define EGL_SYNC_CONDITION_KHR 0x30F8
+#define EGL_SIGNALED_KHR 0x30F2
+#define EGL_UNSIGNALED_KHR 0x30F3
+#define EGL_SYNC_PRIOR_COMMANDS_COMPLETE_KHR 0x30F0
+#define EGL_SYNC_FLUSH_COMMANDS_BIT_KHR 0x0001
+#define EGL_FOREVER_KHR 0xFFFFFFFFFFFFFFFFull
+#define EGL_TIMEOUT_EXPIRED_KHR 0x30F5
+#define EGL_CONDITION_SATISFIED_KHR 0x30F6
+#define EGL_NO_SYNC_KHR ((EGLSyncKHR)0)
+typedef void* EGLSyncKHR;
+typedef khronos_utime_nanoseconds_t EGLTimeKHR;
+#endif
+
/* Class */
class QMeeGoExtensions
@@ -90,6 +107,10 @@ public:
static bool eglSetSurfaceScalingNOK(EGLDisplay dpy, EGLSurface surface, int x, int y, int width, int height);
static bool eglLockSurfaceKHR(EGLDisplay display, EGLSurface surface, const EGLint *attrib_list);
static bool eglUnlockSurfaceKHR(EGLDisplay display, EGLSurface surface);
+ static EGLSyncKHR eglCreateSyncKHR(EGLDisplay dpy, EGLenum type, const EGLint *attrib_list);
+ static bool eglDestroySyncKHR(EGLDisplay dpy, EGLSyncKHR sync);
+ static EGLint eglClientWaitSyncKHR(EGLDisplay dpy, EGLSyncKHR sync, EGLint flags, EGLTimeKHR timeout);
+ static EGLBoolean eglGetSyncAttribKHR(EGLDisplay dpy, EGLSyncKHR sync, EGLint attribute, EGLint *value);
private:
static void initialize();
@@ -98,6 +119,7 @@ private:
static bool hasImageShared;
static bool hasSurfaceScaling;
static bool hasLockSurface;
+ static bool hasFenceSync;
};
#endif
diff --git a/src/plugins/graphicssystems/meego/qmeegographicssystem.cpp b/src/plugins/graphicssystems/meego/qmeegographicssystem.cpp
index a633e2f..063af13 100644
--- a/src/plugins/graphicssystems/meego/qmeegographicssystem.cpp
+++ b/src/plugins/graphicssystems/meego/qmeegographicssystem.cpp
@@ -82,12 +82,12 @@ 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
- // explain here... not to mention fix without going crazy.
+ // Long story short: without this it's possible to hit an
+ // unitialized 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());
-
+
return new QRasterPixmapData(type);
}
@@ -103,8 +103,8 @@ QPixmapData *QMeeGoGraphicsSystem::createPixmapData(QPixmapData *origin)
if (QMeeGoPixmapData::sharedImagesMap.contains(rawResource))
return new QMeeGoPixmapData();
- }
-
+ }
+
return new QRasterPixmapData(origin->pixelType());
}
@@ -155,7 +155,7 @@ QPixmapData *QMeeGoGraphicsSystem::pixmapDataFromEGLSharedImage(Qt::HANDLE handl
qFatal("For egl shared images, the soft image has to be ARGB32_Premultiplied or RGB32");
return NULL;
}
-
+
if (QMeeGoGraphicsSystem::meeGoRunning()) {
QMeeGoPixmapData *pmd = new QMeeGoPixmapData;
pmd->fromEGLSharedImage(handle, softImage);
@@ -177,9 +177,9 @@ QPixmapData *QMeeGoGraphicsSystem::pixmapDataFromEGLSharedImage(Qt::HANDLE handl
void QMeeGoGraphicsSystem::updateEGLSharedImagePixmap(QPixmap *pixmap)
{
QMeeGoPixmapData *pmd = (QMeeGoPixmapData *) pixmap->pixmapData();
-
+
// Basic sanity check to make sure this is really a QMeeGoPixmapData...
- if (pmd->classId() != QPixmapData::OpenGLClass)
+ if (pmd->classId() != QPixmapData::OpenGLClass)
qFatal("Trying to updated EGLSharedImage pixmap but it's not really a shared image pixmap!");
pmd->updateFromSoftImage();
@@ -218,10 +218,10 @@ QPixmapData* QMeeGoGraphicsSystem::pixmapDataFromLiveTextureHandle(Qt::HANDLE ha
return new QMeeGoLivePixmapData(handle);
}
-QImage* QMeeGoGraphicsSystem::lockLiveTexture(QPixmap* pixmap)
+QImage* QMeeGoGraphicsSystem::lockLiveTexture(QPixmap* pixmap, void* fenceSync)
{
QMeeGoLivePixmapData *pixmapData = static_cast<QMeeGoLivePixmapData*>(pixmap->data_ptr().data());
- return pixmapData->lock();
+ return pixmapData->lock(fenceSync);
}
bool QMeeGoGraphicsSystem::releaseLiveTexture(QPixmap *pixmap, QImage *image)
@@ -236,6 +236,20 @@ Qt::HANDLE QMeeGoGraphicsSystem::getLiveTextureHandle(QPixmap *pixmap)
return pixmapData->handle();
}
+void* QMeeGoGraphicsSystem::createFenceSync()
+{
+ QGLShareContextScope ctx(qt_gl_share_widget()->context());
+ QMeeGoExtensions::ensureInitialized();
+ return QMeeGoExtensions::eglCreateSyncKHR(QEgl::display(), EGL_SYNC_FENCE_KHR, NULL);
+}
+
+void QMeeGoGraphicsSystem::destroyFenceSync(void *fenceSync)
+{
+ QGLShareContextScope ctx(qt_gl_share_widget()->context());
+ QMeeGoExtensions::ensureInitialized();
+ QMeeGoExtensions::eglDestroySyncKHR(QEgl::display(), fenceSync);
+}
+
/* C API */
int qt_meego_image_to_egl_shared_image(const QImage &image)
@@ -288,9 +302,9 @@ QPixmapData* qt_meego_pixmapdata_from_live_texture_handle(Qt::HANDLE handle)
return QMeeGoGraphicsSystem::pixmapDataFromLiveTextureHandle(handle);
}
-QImage* qt_meego_live_texture_lock(QPixmap *pixmap)
+QImage* qt_meego_live_texture_lock(QPixmap *pixmap, void *fenceSync)
{
- return QMeeGoGraphicsSystem::lockLiveTexture(pixmap);
+ return QMeeGoGraphicsSystem::lockLiveTexture(pixmap, fenceSync);
}
bool qt_meego_live_texture_release(QPixmap *pixmap, QImage *image)
@@ -301,4 +315,14 @@ bool qt_meego_live_texture_release(QPixmap *pixmap, QImage *image)
Qt::HANDLE qt_meego_live_texture_get_handle(QPixmap *pixmap)
{
return QMeeGoGraphicsSystem::getLiveTextureHandle(pixmap);
-} \ No newline at end of file
+}
+
+void* qt_meego_create_fence_sync(void)
+{
+ return QMeeGoGraphicsSystem::createFenceSync();
+}
+
+void qt_meego_destroy_fence_sync(void* fs)
+{
+ return QMeeGoGraphicsSystem::destroyFenceSync(fs);
+}
diff --git a/src/plugins/graphicssystems/meego/qmeegographicssystem.h b/src/plugins/graphicssystems/meego/qmeegographicssystem.h
index 2697f0f..1e50f00 100644
--- a/src/plugins/graphicssystems/meego/qmeegographicssystem.h
+++ b/src/plugins/graphicssystems/meego/qmeegographicssystem.h
@@ -69,10 +69,13 @@ public:
static QPixmapData *pixmapDataWithNewLiveTexture(int w, int h, QImage::Format format);
static QPixmapData *pixmapDataFromLiveTextureHandle(Qt::HANDLE handle);
- static QImage *lockLiveTexture(QPixmap* pixmap);
+ static QImage *lockLiveTexture(QPixmap* pixmap, void* fenceSync);
static bool releaseLiveTexture(QPixmap *pixmap, QImage *image);
static Qt::HANDLE getLiveTextureHandle(QPixmap *pixmap);
+ static void* createFenceSync();
+ static void destroyFenceSync(void* fenceSync);
+
private:
static bool meeGoRunning();
static EGLSurface getSurfaceForLiveTexturePixmap(QPixmap *pixmap);
@@ -95,9 +98,11 @@ extern "C" {
Q_DECL_EXPORT void qt_meego_set_translucent(bool translucent);
Q_DECL_EXPORT QPixmapData* qt_meego_pixmapdata_with_new_live_texture(int w, int h, QImage::Format format);
Q_DECL_EXPORT QPixmapData* qt_meego_pixmapdata_from_live_texture_handle(Qt::HANDLE handle);
- Q_DECL_EXPORT QImage* qt_meego_live_texture_lock(QPixmap *pixmap);
+ Q_DECL_EXPORT QImage* qt_meego_live_texture_lock(QPixmap *pixmap, void *fenceSync);
Q_DECL_EXPORT bool qt_meego_live_texture_release(QPixmap *pixmap, QImage *image);
Q_DECL_EXPORT Qt::HANDLE qt_meego_live_texture_get_handle(QPixmap *pixmap);
+ Q_DECL_EXPORT void* qt_meego_create_fence_sync(void);
+ Q_DECL_EXPORT void qt_meego_destroy_fence_sync(void* fs);
}
#endif
diff --git a/src/plugins/graphicssystems/meego/qmeegolivepixmapdata.cpp b/src/plugins/graphicssystems/meego/qmeegolivepixmapdata.cpp
index 405b765..16096c9 100644
--- a/src/plugins/graphicssystems/meego/qmeegolivepixmapdata.cpp
+++ b/src/plugins/graphicssystems/meego/qmeegolivepixmapdata.cpp
@@ -40,7 +40,6 @@
****************************************************************************/
#include "qmeegolivepixmapdata.h"
-#include "qmeegoextensions.h"
#include "qmeegorasterpixmapdata.h"
#include <private/qimage_p.h>
#include <private/qwindowsurface_gl_p.h>
@@ -171,11 +170,18 @@ QPixmapData *QMeeGoLivePixmapData::createCompatiblePixmapData() const
return new QMeeGoRasterPixmapData(pixelType());
}
-QImage* QMeeGoLivePixmapData::lock()
+QImage* QMeeGoLivePixmapData::lock(EGLSyncKHR fenceSync)
{
QGLShareContextScope ctx(qt_gl_share_widget()->context());
QMeeGoExtensions::ensureInitialized();
+ if (fenceSync) {
+ QMeeGoExtensions::eglClientWaitSyncKHR(QEgl::display(),
+ fenceSync,
+ EGL_SYNC_FLUSH_COMMANDS_BIT_KHR,
+ EGL_FOREVER_KHR);
+ }
+
void *data = 0;
int pitch = 0;
EGLSurface surface = 0;
@@ -214,7 +220,6 @@ bool QMeeGoLivePixmapData::release(QImage* /*img*/)
if (QMeeGoExtensions::eglUnlockSurfaceKHR(QEgl::display(), getSurfaceForBackingPixmap())) {
lockedImage = QImage();
- glFinish();
return true;
} else {
lockedImage = QImage();
@@ -229,7 +234,7 @@ Qt::HANDLE QMeeGoLivePixmapData::handle()
bool QMeeGoLivePixmapData::scroll(int dx, int dy, const QRect &rect)
{
- lock();
+ lock(NULL);
if (!lockedImage.isNull())
qt_scrollRectInImage(lockedImage, rect, QPoint(dx, dy));
diff --git a/src/plugins/graphicssystems/meego/qmeegolivepixmapdata.h b/src/plugins/graphicssystems/meego/qmeegolivepixmapdata.h
index 1d647f0..2c6854e 100644
--- a/src/plugins/graphicssystems/meego/qmeegolivepixmapdata.h
+++ b/src/plugins/graphicssystems/meego/qmeegolivepixmapdata.h
@@ -43,6 +43,7 @@
#define MLIVEPIXMAPDATA_H
#include <private/qpixmapdata_gl_p.h>
+#include "qmeegoextensions.h"
class QMeeGoLivePixmapData : public QGLPixmapData
{
@@ -50,16 +51,16 @@ public:
QMeeGoLivePixmapData(int w, int h, QImage::Format format);
QMeeGoLivePixmapData(Qt::HANDLE h);
~QMeeGoLivePixmapData();
-
+
QPixmapData *createCompatiblePixmapData() const;
bool scroll(int dx, int dy, const QRect &rect);
void initializeThroughEGLImage();
-
- QImage* lock();
+
+ QImage* lock(EGLSyncKHR fenceSync);
bool release(QImage *img);
Qt::HANDLE handle();
-
+
EGLSurface getSurfaceForBackingPixmap();
void destroySurfaceForPixmapData(QPixmapData* pmd);
diff --git a/src/plugins/graphicssystems/meego/qmeegopixmapdata.cpp b/src/plugins/graphicssystems/meego/qmeegopixmapdata.cpp
index 02a4273..eb63692 100644
--- a/src/plugins/graphicssystems/meego/qmeegopixmapdata.cpp
+++ b/src/plugins/graphicssystems/meego/qmeegopixmapdata.cpp
@@ -51,6 +51,7 @@
// from dithering.cpp
extern unsigned short* convertRGB32_to_RGB565(const unsigned char *in, int width, int height, int stride);
extern unsigned short* convertARGB32_to_RGBA4444(const unsigned char *in, int width, int height, int stride);
+extern unsigned char* convertBGRA32_to_RGBA32(const unsigned char *in, int width, int height, int stride);
static EGLint preserved_image_attribs[] = { EGL_IMAGE_PRESERVED_KHR, EGL_TRUE, EGL_NONE };
@@ -146,8 +147,8 @@ Qt::HANDLE QMeeGoPixmapData::imageToEGLSharedImage(const QImage &image)
glGenTextures(1, &textureId);
glBindTexture(GL_TEXTURE_2D, textureId);
if (image.hasAlphaChannel() && const_cast<QImage &>(image).data_ptr()->checkForAlphaPixels()) {
- void *converted = convertARGB32_to_RGBA4444(image.bits(), image.width(), image.height(), image.bytesPerLine());
- glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, image.width(), image.height(), 0, GL_RGBA, GL_UNSIGNED_SHORT_4_4_4_4, converted);
+ void *converted = convertBGRA32_to_RGBA32(image.bits(), image.width(), image.height(), image.bytesPerLine());
+ glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, image.width(), image.height(), 0, GL_RGBA, GL_UNSIGNED_BYTE, converted);
free(converted);
} else {
void *converted = convertRGB32_to_RGB565(image.bits(), image.width(), image.height(), image.bytesPerLine());
diff --git a/src/plugins/phonon/mmf/mmf.pro b/src/plugins/phonon/mmf/mmf.pro
index ade9023..2188505 100644
--- a/src/plugins/phonon/mmf/mmf.pro
+++ b/src/plugins/phonon/mmf/mmf.pro
@@ -18,7 +18,7 @@ symbian {
# This is necessary because both epoc32/include and Phonon contain videoplayer.h.
# By making /epoc32/include the first SYSTEMINCLUDE, we ensure that
# '#include <videoplayer.h>' picks up the Symbian header, as intended.
- PREPEND_INCLUDEPATH = $$EPOCROOT/epoc32/include
+ PREPEND_INCLUDEPATH = $${EPOCROOT}epoc32/include
PREPEND_INCLUDEPATH += $$QT_SOURCE_TREE/src/3rdparty
diff --git a/src/qt3support/canvas/q3canvas.cpp b/src/qt3support/canvas/q3canvas.cpp
index 959c435..1b4706d 100644
--- a/src/qt3support/canvas/q3canvas.cpp
+++ b/src/qt3support/canvas/q3canvas.cpp
@@ -1030,7 +1030,7 @@ void Q3Canvas::setUpdatePeriod(int ms)
The advance takes place in two phases. In phase 0, the
Q3CanvasItem::advance() function of each Q3CanvasItem::animated()
- canvas item is called with paramater 0. Then all these canvas
+ canvas item is called with parameter 0. Then all these canvas
items are called again, with parameter 1. In phase 0, the canvas
items should not change position, merely examine other items on
the canvas for which special processing is required, such as
diff --git a/src/qt3support/text/q3richtext.cpp b/src/qt3support/text/q3richtext.cpp
index d84a85b..f8cd1ed 100644
--- a/src/qt3support/text/q3richtext.cpp
+++ b/src/qt3support/text/q3richtext.cpp
@@ -2914,7 +2914,7 @@ QString Q3TextDocument::selectedText(int id, bool asRichText) const
}
}
// ### workaround for plain text export until we get proper
- // mime types: turn unicode line seperators into the more
+ // mime types: turn unicode line separators into the more
// widely understood \n. Makes copy and pasting code snipplets
// from within Assistent possible
QChar* uc = (QChar*) s.unicode();
diff --git a/src/s60installs/bwins/QtDeclarativeu.def b/src/s60installs/bwins/QtDeclarativeu.def
index db4012c..9e88df7 100644
--- a/src/s60installs/bwins/QtDeclarativeu.def
+++ b/src/s60installs/bwins/QtDeclarativeu.def
@@ -1838,5 +1838,6 @@ EXPORTS
?addChanged@QDeclarativeBasePositioner@@IAEXXZ @ 1837 NONAME ABSENT ; void QDeclarativeBasePositioner::addChanged(void)
?start@QDeclarativeAbstractAnimation@@QAEXXZ @ 1838 NONAME ABSENT ; void QDeclarativeAbstractAnimation::start(void)
?qt_metacall@QDeclarativeAbstractAnimation@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1839 NONAME ABSENT ; int QDeclarativeAbstractAnimation::qt_metacall(enum QMetaObject::Call, int, void * *)
- ?connect@QDeclarativePropertyPrivate@@SA_NPBVQObject@@H0HHPAH@Z @ 1840 NONAME ABSENT ; bool QDeclarativePropertyPrivate::connect(class QObject const *, int, class QObject const *, int, int, int *)
+ ?enableDebugging@QDeclarativeDebugHelper@@SAXXZ @ 1840 NONAME ; void QDeclarativeDebugHelper::enableDebugging(void)
+ ?connect@QDeclarativePropertyPrivate@@SA_NPBVQObject@@H0HHPAH@Z @ 1841 NONAME ABSENT ; bool QDeclarativePropertyPrivate::connect(class QObject const *, int, class QObject const *, int, int, int *)
diff --git a/src/s60installs/bwins/QtOpenVGu.def b/src/s60installs/bwins/QtOpenVGu.def
index a67725e..87b9c7f 100644
--- a/src/s60installs/bwins/QtOpenVGu.def
+++ b/src/s60installs/bwins/QtOpenVGu.def
@@ -175,4 +175,5 @@ EXPORTS
?createPixmapForImage@QVGPixmapData@@IAEXAAVQImage@@V?$QFlags@W4ImageConversionFlag@Qt@@@@_N@Z @ 174 NONAME ; void QVGPixmapData::createPixmapForImage(class QImage &, class QFlags<enum Qt::ImageConversionFlag>, bool)
?fromData@QVGPixmapData@@UAE_NPBEIPBDV?$QFlags@W4ImageConversionFlag@Qt@@@@@Z @ 175 NONAME ; bool QVGPixmapData::fromData(unsigned char const *, unsigned int, char const *, class QFlags<enum Qt::ImageConversionFlag>)
?fromImageReader@QVGPixmapData@@UAEXPAVQImageReader@@V?$QFlags@W4ImageConversionFlag@Qt@@@@@Z @ 176 NONAME ; void QVGPixmapData::fromImageReader(class QImageReader *, class QFlags<enum Qt::ImageConversionFlag>)
+ ?canVgWritePixels@QVGPaintEngine@@ABE_NABVQImage@@@Z @ 177 NONAME ; bool QVGPaintEngine::canVgWritePixels(class QImage const &) const
diff --git a/src/s60installs/eabi/QtCoreu.def b/src/s60installs/eabi/QtCoreu.def
index eb53dca..aefbe1f 100644
--- a/src/s60installs/eabi/QtCoreu.def
+++ b/src/s60installs/eabi/QtCoreu.def
@@ -3713,4 +3713,5 @@ EXPORTS
_ZrsR11QDataStreamR12QEasingCurve @ 3712 NONAME
_Z26qt_symbian_SetupThreadHeapiR24SStdEpocThreadCreateInfo @ 3713 NONAME
_ZN24QAbstractDeclarativeData17objectNameChangedE @ 3714 NONAME DATA 4
+ _ZN23QEventDispatcherSymbian36queueDeferredActiveObjectsCompletionEv @ 3715 NONAME
diff --git a/src/s60installs/eabi/QtDeclarativeu.def b/src/s60installs/eabi/QtDeclarativeu.def
index 849ca6a..1f69061 100644
--- a/src/s60installs/eabi/QtDeclarativeu.def
+++ b/src/s60installs/eabi/QtDeclarativeu.def
@@ -1883,5 +1883,6 @@ EXPORTS
_ZThn8_N29QDeclarativeAbstractAnimation9setTargetERK20QDeclarativeProperty @ 1882 NONAME ABSENT
_ZThn8_N29QDeclarativeAbstractAnimationD0Ev @ 1883 NONAME ABSENT
_ZThn8_N29QDeclarativeAbstractAnimationD1Ev @ 1884 NONAME ABSENT
- _ZN27QDeclarativePropertyPrivate7connectEPK7QObjectiS2_iiPi @ 1885 NONAME ABSENT
+ _ZN23QDeclarativeDebugHelper15enableDebuggingEv @ 1885 NONAME
+ _ZN27QDeclarativePropertyPrivate7connectEPK7QObjectiS2_iiPi @ 1886 NONAME ABSENT
diff --git a/src/s60installs/eabi/QtGuiu.def b/src/s60installs/eabi/QtGuiu.def
index f772bcc..75bb026 100644
--- a/src/s60installs/eabi/QtGuiu.def
+++ b/src/s60installs/eabi/QtGuiu.def
@@ -12101,4 +12101,7 @@ EXPORTS
_ZN19QApplicationPrivate25qmljsDebugArgumentsStringEv @ 12100 NONAME
_ZNK5QFont14lastResortFontEv @ 12101 NONAME
_ZN11QFontEngine33convertToPostscriptFontFamilyNameERK10QByteArray @ 12102 NONAME
+ _ZN15QStaticTextItem13setFontEngineEP11QFontEngine @ 12103 NONAME
+ _ZN15QStaticTextItemD1Ev @ 12104 NONAME
+ _ZN15QStaticTextItemD2Ev @ 12105 NONAME
diff --git a/src/s60installs/eabi/QtOpenVGu.def b/src/s60installs/eabi/QtOpenVGu.def
index 99942b8..e1828c1 100644
--- a/src/s60installs/eabi/QtOpenVGu.def
+++ b/src/s60installs/eabi/QtOpenVGu.def
@@ -205,4 +205,5 @@ EXPORTS
_ZN13QVGPixmapData20createPixmapForImageER6QImage6QFlagsIN2Qt19ImageConversionFlagEEb @ 204 NONAME
_ZN13QVGPixmapData8fromDataEPKhjPKc6QFlagsIN2Qt19ImageConversionFlagEE @ 205 NONAME
_ZN13QVGPixmapData8fromFileERK7QStringPKc6QFlagsIN2Qt19ImageConversionFlagEE @ 206 NONAME
+ _ZNK14QVGPaintEngine16canVgWritePixelsERK6QImage @ 207 NONAME
diff --git a/src/script/api/qscriptengine.cpp b/src/script/api/qscriptengine.cpp
index 2d5e5f4..69abcad 100644
--- a/src/script/api/qscriptengine.cpp
+++ b/src/script/api/qscriptengine.cpp
@@ -808,7 +808,7 @@ JSC::JSValue JSC_HOST_CALL functionQsTranslate(JSC::ExecState *exec, JSC::JSObje
JSC::UString comment;
if (args.size() > 2)
comment = args.at(2).toString(exec);
- QCoreApplication::Encoding encoding = QCoreApplication::CodecForTr;
+ QCoreApplication::Encoding encoding = QCoreApplication::UnicodeUTF8;
if (args.size() > 3) {
JSC::UString encStr = args.at(3).toString(exec);
if (encStr == "CodecForTr")
@@ -824,9 +824,9 @@ JSC::JSValue JSC_HOST_CALL functionQsTranslate(JSC::ExecState *exec, JSC::JSObje
#endif
JSC::UString result;
#ifndef QT_NO_QOBJECT
- result = QCoreApplication::translate(QScript::convertToLatin1(context).constData(),
- QScript::convertToLatin1(text).constData(),
- QScript::convertToLatin1(comment).constData(),
+ result = QCoreApplication::translate(context.UTF8String().c_str(),
+ text.UTF8String().c_str(),
+ comment.UTF8String().c_str(),
encoding, n);
#else
result = text;
@@ -878,10 +878,10 @@ JSC::JSValue JSC_HOST_CALL functionQsTr(JSC::ExecState *exec, JSC::JSObject*, JS
#endif
JSC::UString result;
#ifndef QT_NO_QOBJECT
- result = QCoreApplication::translate(QScript::convertToLatin1(context).constData(),
- QScript::convertToLatin1(text).constData(),
- QScript::convertToLatin1(comment).constData(),
- QCoreApplication::CodecForTr, n);
+ result = QCoreApplication::translate(context.UTF8String().c_str(),
+ text.UTF8String().c_str(),
+ comment.UTF8String().c_str(),
+ QCoreApplication::UnicodeUTF8, n);
#else
result = text;
#endif
@@ -907,7 +907,7 @@ JSC::JSValue JSC_HOST_CALL functionQsTrId(JSC::ExecState *exec, JSC::JSObject*,
int n = -1;
if (args.size() > 1)
n = args.at(1).toInt32(exec);
- return JSC::jsString(exec, qtTrId(QScript::convertToLatin1(id).constData(), n));
+ return JSC::jsString(exec, qtTrId(id.UTF8String().c_str(), n));
}
JSC::JSValue JSC_HOST_CALL functionQsTrIdNoOp(JSC::ExecState *, JSC::JSObject*, JSC::JSValue, const JSC::ArgList &args)
diff --git a/src/script/api/qscriptvalue.cpp b/src/script/api/qscriptvalue.cpp
index e6c3801..8cd4057 100644
--- a/src/script/api/qscriptvalue.cpp
+++ b/src/script/api/qscriptvalue.cpp
@@ -2026,6 +2026,7 @@ void QScriptValue::setData(const QScriptValue &data)
Q_D(QScriptValue);
if (!d || !d->isObject())
return;
+ QScript::APIShim shim(d->engine);
JSC::JSValue other = d->engine->scriptValueToJSCValue(data);
if (d->jscValue.inherits(&QScriptObject::info)) {
QScriptObject *scriptObject = static_cast<QScriptObject*>(JSC::asObject(d->jscValue));
diff --git a/src/script/bridge/qscriptclassobject.cpp b/src/script/bridge/qscriptclassobject.cpp
index 28f7bd1..51c0976 100644
--- a/src/script/bridge/qscriptclassobject.cpp
+++ b/src/script/bridge/qscriptclassobject.cpp
@@ -78,6 +78,12 @@ bool ClassObjectDelegate::getOwnPropertySlot(QScriptObject* object,
scriptObject, scriptName, QScriptClass::HandlesReadAccess, &id);
if (flags & QScriptClass::HandlesReadAccess) {
QScriptValue value = m_scriptClass->property(scriptObject, scriptName, id);
+ if (!value.isValid()) {
+ // The class claims to have the property, but returned an invalid
+ // value. Silently convert to undefined to avoid the invalid value
+ // "escaping" into JS.
+ value = QScriptValue(QScriptValue::UndefinedValue);
+ }
slot.setValue(engine->scriptValueToJSCValue(value));
return true;
}
@@ -119,6 +125,12 @@ bool ClassObjectDelegate::getOwnPropertyDescriptor(QScriptObject *object,
attribs |= pflags & QScriptValue::UserRange;
// Rather than calling the getter, we could return an access descriptor here.
QScriptValue value = m_scriptClass->property(scriptObject, scriptName, id);
+ if (!value.isValid()) {
+ // The class claims to have the property, but returned an invalid
+ // value. Silently convert to undefined to avoid the invalid value
+ // "escaping" into JS.
+ value = QScriptValue(QScriptValue::UndefinedValue);
+ }
descriptor.setDescriptor(engine->scriptValueToJSCValue(value), attribs);
return true;
}
diff --git a/src/scripttools/debugging/qscriptdebuggeragent.cpp b/src/scripttools/debugging/qscriptdebuggeragent.cpp
index 551f6c3..9362639 100644
--- a/src/scripttools/debugging/qscriptdebuggeragent.cpp
+++ b/src/scripttools/debugging/qscriptdebuggeragent.cpp
@@ -116,7 +116,7 @@ QScriptDebuggerAgent::~QScriptDebuggerAgent()
/*!
Instructs the agent to perform a "step into" operation. This
function returns immediately. The agent will report step completion
- at a later time, i.e. when script statements are evaluted.
+ at a later time, i.e. when script statements are evaluated.
*/
void QScriptDebuggerAgent::enterStepIntoMode(int count)
{
@@ -129,7 +129,7 @@ void QScriptDebuggerAgent::enterStepIntoMode(int count)
/*!
Instructs the agent to perform a "step over" operation. This
function returns immediately. The agent will report step completion
- at a later time, i.e. when script statements are evaluted.
+ at a later time, i.e. when script statements are evaluated.
*/
void QScriptDebuggerAgent::enterStepOverMode(int count)
{
@@ -146,7 +146,7 @@ void QScriptDebuggerAgent::enterStepOverMode(int count)
/*!
Instructs the agent to perform a "step out" operation. This
function returns immediately. The agent will report step completion
- at a later time, i.e. when script statements are evaluted.
+ at a later time, i.e. when script statements are evaluated.
*/
void QScriptDebuggerAgent::enterStepOutMode()
{
diff --git a/src/sql/drivers/oci/qsql_oci.cpp b/src/sql/drivers/oci/qsql_oci.cpp
index 6870055..a4614bf 100644
--- a/src/sql/drivers/oci/qsql_oci.cpp
+++ b/src/sql/drivers/oci/qsql_oci.cpp
@@ -93,11 +93,13 @@ enum { QOCIEncoding = 2002 }; // AL16UTF16LE
enum { QOCIEncoding = 2000 }; // AL16UTF16
#endif
+#ifdef OCI_ATTR_CHARSET_FORM
// Always set the OCI_ATTR_CHARSET_FORM to SQLCS_NCHAR is safe
// because Oracle server will deal with the implicit Conversion
// Between CHAR and NCHAR.
// see: http://download.oracle.com/docs/cd/A91202_01/901_doc/appdev.901/a89857/oci05bnd.htm#422705
static const ub1 qOraCharsetForm = SQLCS_NCHAR;
+#endif
#if defined (OCI_UTF16ID)
static const ub2 qOraCharset = OCI_UTF16ID;
@@ -110,13 +112,23 @@ typedef QVarLengthArray<ub2, 32> SizeArray;
static QByteArray qMakeOraDate(const QDateTime& dt);
static QDateTime qMakeDate(const char* oraDate);
+
+static QByteArray qMakeOCINumber(const qlonglong &ll, OCIError *err);
+static QByteArray qMakeOCINumber(const qulonglong& ull, OCIError* err);
+
+static qlonglong qMakeLongLong(const char* ociNumber, OCIError* err);
+static qulonglong qMakeULongLong(const char* ociNumber, OCIError* err);
+
static QString qOraWarn(OCIError *err, int *errorCode = 0);
+
#ifndef Q_CC_SUN
static // for some reason, Sun CC can't use qOraWarning when it's declared static
#endif
void qOraWarning(const char* msg, OCIError *err);
static QSqlError qMakeError(const QString& errString, QSqlError::ErrorType type, OCIError *err);
+
+
class QOCIRowId: public QSharedData
{
public:
@@ -164,7 +176,6 @@ struct QOCIResultPrivate
int serverVersion;
int prefetchRows, prefetchMem;
- void setCharset(OCIBind* hbnd);
void setStatementAttributes();
int bindValue(OCIStmt *sql, OCIBind **hbnd, OCIError *err, int pos,
const QVariant &val, dvoid *indPtr, ub2 *tmpSize, QList<QByteArray> &tmpStorage);
@@ -176,6 +187,41 @@ struct QOCIResultPrivate
{ return q->bindValueType(i) & QSql::Out; }
inline bool isBinaryValue(int i) const
{ return q->bindValueType(i) & QSql::Binary; }
+
+ void setCharset(dvoid* handle, ub4 type) const
+ {
+ int r = 0;
+ Q_ASSERT(handle);
+
+#ifdef OCI_ATTR_CHARSET_FORM
+ r = OCIAttrSet(handle,
+ type,
+ // this const cast is safe since OCI doesn't touch
+ // the charset.
+ const_cast<void *>(static_cast<const void *>(&qOraCharsetForm)),
+ 0,
+ OCI_ATTR_CHARSET_FORM,
+ //Strange Oracle bug: some Oracle servers crash the server process with non-zero error handle (mostly for 10g).
+ //So ignore the error message here.
+ 0);
+ #ifdef QOCI_DEBUG
+ if (r != 0)
+ qWarning("QOCIResultPrivate::setCharset: Couldn't set OCI_ATTR_CHARSET_FORM.");
+ #endif
+#endif
+
+ r = OCIAttrSet(handle,
+ type,
+ // this const cast is safe since OCI doesn't touch
+ // the charset.
+ const_cast<void *>(static_cast<const void *>(&qOraCharset)),
+ 0,
+ OCI_ATTR_CHARSET_ID,
+ err);
+ if (r != 0)
+ qOraWarning("QOCIResultPrivate::setCharsetI Couldn't set OCI_ATTR_CHARSET_ID: ", err);
+
+ }
};
void QOCIResultPrivate::setStatementAttributes()
@@ -208,36 +254,6 @@ void QOCIResultPrivate::setStatementAttributes()
}
}
-void QOCIResultPrivate::setCharset(OCIBind* hbnd)
-{
- int r = 0;
-
- Q_ASSERT(hbnd);
-
- r = OCIAttrSet(hbnd,
- OCI_HTYPE_BIND,
- // this const cast is safe since OCI doesn't touch
- // the charset.
- const_cast<void *>(static_cast<const void *>(&qOraCharsetForm)),
- 0,
- OCI_ATTR_CHARSET_FORM,
- err);
- if (r != 0)
- qOraWarning("QOCIResultPrivate::setCharset: Couldn't set OCI_ATTR_CHARSET_FORM: ", err);
-
- r = OCIAttrSet(hbnd,
- OCI_HTYPE_BIND,
- // this const cast is safe since OCI doesn't touch
- // the charset.
- const_cast<void *>(static_cast<const void *>(&qOraCharset)),
- 0,
- OCI_ATTR_CHARSET_ID,
- err);
- if (r != 0)
- qOraWarning("QOCIResultPrivate::setCharset: Couldn't set OCI_ATTR_CHARSET_ID: ", err);
-
-}
-
int QOCIResultPrivate::bindValue(OCIStmt *sql, OCIBind **hbnd, OCIError *err, int pos,
const QVariant &val, dvoid *indPtr, ub2 *tmpSize, QList<QByteArray> &tmpStorage)
{
@@ -283,6 +299,28 @@ int QOCIResultPrivate::bindValue(OCIStmt *sql, OCIBind **hbnd, OCIError *err, in
sizeof(uint),
SQLT_UIN, indPtr, 0, 0, 0, 0, OCI_DEFAULT);
break;
+ case QVariant::LongLong:
+ {
+ QByteArray ba = qMakeOCINumber(val.toLongLong(), err);
+ r = OCIBindByPos(sql, hbnd, err,
+ pos + 1,
+ ba.data(),
+ ba.size(),
+ SQLT_VNU, indPtr, 0, 0, 0, 0, OCI_DEFAULT);
+ tmpStorage.append(ba);
+ break;
+ }
+ case QVariant::ULongLong:
+ {
+ QByteArray ba = qMakeOCINumber(val.toULongLong(), err);
+ r = OCIBindByPos(sql, hbnd, err,
+ pos + 1,
+ ba.data(),
+ ba.size(),
+ SQLT_VNU, indPtr, 0, 0, 0, 0, OCI_DEFAULT);
+ tmpStorage.append(ba);
+ break;
+ }
case QVariant::Double:
r = OCIBindByPos(sql, hbnd, err,
pos + 1,
@@ -325,7 +363,7 @@ int QOCIResultPrivate::bindValue(OCIStmt *sql, OCIBind **hbnd, OCIError *err, in
(s.length() + 1) * sizeof(QChar),
SQLT_STR, indPtr, 0, 0, 0, 0, OCI_DEFAULT);
if (r == OCI_SUCCESS)
- setCharset(*hbnd);
+ setCharset(*hbnd, OCI_HTYPE_BIND);
break;
}
} // fall through for OUT values
@@ -349,7 +387,7 @@ int QOCIResultPrivate::bindValue(OCIStmt *sql, OCIBind **hbnd, OCIError *err, in
SQLT_STR, indPtr, 0, 0, 0, 0, OCI_DEFAULT);
}
if (r == OCI_SUCCESS)
- setCharset(*hbnd);
+ setCharset(*hbnd, OCI_HTYPE_BIND);
tmpStorage.append(ba);
break;
} // default case
@@ -378,7 +416,7 @@ int QOCIResultPrivate::bindValues(QVector<QVariant> &values, IndicatorArray &ind
}
// will assign out value and remove its temp storage.
-static void qOraOutValue(QVariant &value, QList<QByteArray> &storage)
+static void qOraOutValue(QVariant &value, QList<QByteArray> &storage, OCIError* err)
{
switch (value.type()) {
case QVariant::Time:
@@ -390,6 +428,12 @@ static void qOraOutValue(QVariant &value, QList<QByteArray> &storage)
case QVariant::DateTime:
value = qMakeDate(storage.takeFirst());
break;
+ case QVariant::LongLong:
+ value = qMakeLongLong(storage.takeFirst(), err);
+ break;
+ case QVariant::ULongLong:
+ value = qMakeULongLong(storage.takeFirst(), err);
+ break;
case QVariant::String:
value = QString(
reinterpret_cast<const QChar *>(storage.takeFirst().constData()));
@@ -407,7 +451,7 @@ void QOCIResultPrivate::outValues(QVector<QVariant> &values, IndicatorArray &ind
if (!isOutValue(i))
continue;
- qOraOutValue(values[i], tmpStorage);
+ qOraOutValue(values[i], tmpStorage, err);
QVariant::Type typ = values.at(i).type();
if (indicators[i] == -1) // NULL
@@ -667,6 +711,56 @@ QByteArray qMakeOraDate(const QDateTime& dt)
return ba;
}
+/*!
+ \internal
+
+ Convert qlonglong to the internal Oracle OCINumber format.
+ */
+QByteArray qMakeOCINumber(const qlonglong& ll, OCIError* err)
+{
+ QByteArray ba(sizeof(OCINumber), 0);
+
+ OCINumberFromInt(err,
+ &ll,
+ sizeof(qlonglong),
+ OCI_NUMBER_SIGNED,
+ reinterpret_cast<OCINumber*>(ba.data()));
+ return ba;
+}
+
+/*!
+ \internal
+
+ Convert qulonglong to the internal Oracle OCINumber format.
+ */
+QByteArray qMakeOCINumber(const qulonglong& ull, OCIError* err)
+{
+ QByteArray ba(sizeof(OCINumber), 0);
+
+ OCINumberFromInt(err,
+ &ull,
+ sizeof(qlonglong),
+ OCI_NUMBER_UNSIGNED,
+ reinterpret_cast<OCINumber*>(ba.data()));
+ return ba;
+}
+
+qlonglong qMakeLongLong(const char* ociNumber, OCIError* err)
+{
+ qlonglong qll = 0;
+ OCINumberToInt(err, reinterpret_cast<const OCINumber *>(ociNumber), sizeof(qlonglong),
+ OCI_NUMBER_SIGNED, &qll);
+ return qll;
+}
+
+qulonglong qMakeULongLong(const char* ociNumber, OCIError* err)
+{
+ qulonglong qull = 0;
+ OCINumberToInt(err, reinterpret_cast<const OCINumber *>(ociNumber), sizeof(qulonglong),
+ OCI_NUMBER_UNSIGNED, &qull);
+ return qull;
+}
+
QDateTime qMakeDate(const char* oraDate)
{
int century = uchar(oraDate[0]);
@@ -688,7 +782,6 @@ class QOCICols
public:
QOCICols(int size, QOCIResultPrivate* dp);
~QOCICols();
- void setCharset(OCIDefine* dfn);
int readPiecewise(QVector<QVariant> &values, int index = 0);
int readLOBs(QVector<QVariant> &values, int index = 0);
int fieldFromDefine(OCIDefine* d);
@@ -890,7 +983,7 @@ QOCICols::QOCICols(int size, QOCIResultPrivate* dp)
&(fieldInf[idx].ind),
0, 0, OCI_DEFAULT);
if (r == 0)
- setCharset(dfn);
+ d->setCharset(dfn, OCI_HTYPE_DEFINE);
}
break;
default:
@@ -950,35 +1043,6 @@ OCILobLocator **QOCICols::createLobLocator(int position, OCIEnv* env)
return &lob;
}
-void QOCICols::setCharset(OCIDefine* dfn)
-{
- int r = 0;
-
- Q_ASSERT(dfn);
-
- r = OCIAttrSet(dfn,
- OCI_HTYPE_DEFINE,
- // this const cast is safe since OCI doesn't touch
- // the charset.
- const_cast<void *>(static_cast<const void *>(&qOraCharsetForm)),
- 0,
- OCI_ATTR_CHARSET_FORM,
- d->err);
- if (r != 0)
- qOraWarning("QOCIResultPrivate::setCharset: Couldn't set OCI_ATTR_CHARSET_FORM: ", d->err);
-
- r = OCIAttrSet(dfn,
- OCI_HTYPE_DEFINE,
- // this const cast is safe since OCI doesn't touch
- // the charset.
- const_cast<void *>(static_cast<const void *>(&qOraCharset)),
- 0,
- OCI_ATTR_CHARSET_ID,
- d->err);
- if (r != 0)
- qOraWarning("QOCICols::setCharset: Couldn't set OCI_ATTR_CHARSET_ID: ", d->err);
-}
-
int QOCICols::readPiecewise(QVector<QVariant> &values, int index)
{
OCIDefine* dfn;
@@ -1281,6 +1345,16 @@ bool QOCICols::execBatch(QOCIResultPrivate *d, QVector<QVariant> &boundValues, b
col.maxLen = sizeof(uint);
break;
+ case QVariant::LongLong:
+ col.bindAs = SQLT_VNU;
+ col.maxLen = sizeof(OCINumber);
+ break;
+
+ case QVariant::ULongLong:
+ col.bindAs = SQLT_VNU;
+ col.maxLen = sizeof(OCINumber);
+ break;
+
case QVariant::Double:
col.bindAs = SQLT_FLT;
col.maxLen = sizeof(double);
@@ -1352,6 +1426,22 @@ bool QOCICols::execBatch(QOCIResultPrivate *d, QVector<QVariant> &boundValues, b
*reinterpret_cast<uint*>(dataPtr) = val.toUInt();
break;
+ case QVariant::LongLong:
+ {
+ columns[i].lengths[row] = columns[i].maxLen;
+ const QByteArray ba = qMakeOCINumber(val.toLongLong(), d->err);
+ Q_ASSERT(ba.size() == int(columns[i].maxLen));
+ memcpy(dataPtr, ba.constData(), columns[i].maxLen);
+ break;
+ }
+ case QVariant::ULongLong:
+ {
+ columns[i].lengths[row] = columns[i].maxLen;
+ const QByteArray ba = qMakeOCINumber(val.toULongLong(), d->err);
+ Q_ASSERT(ba.size() == int(columns[i].maxLen));
+ memcpy(dataPtr, ba.constData(), columns[i].maxLen);
+ break;
+ }
case QVariant::Double:
columns[i].lengths[row] = columns[i].maxLen;
*reinterpret_cast<double*>(dataPtr) = val.toDouble();
@@ -1459,7 +1549,7 @@ bool QOCICols::execBatch(QOCIResultPrivate *d, QVector<QVariant> &boundValues, b
QVariant::Type tp = boundValues.at(i).type();
if (tp != QVariant::List) {
- qOraOutValue(boundValues[i], tmpStorage);
+ qOraOutValue(boundValues[i], tmpStorage, d->err);
if (*columns[i].indicators == -1)
boundValues[i] = QVariant(tp);
continue;
@@ -1489,6 +1579,21 @@ bool QOCICols::execBatch(QOCIResultPrivate *d, QVector<QVariant> &boundValues, b
(*list)[r] = *reinterpret_cast<uint*>(data + r * columns[i].maxLen);
break;
+ case SQLT_VNU:
+ {
+ switch (boundValues.at(i).type()) {
+ case QVariant::LongLong:
+ (*list)[r] = qMakeLongLong(data + r * columns[i].maxLen, d->err);
+ break;
+ case QVariant::ULongLong:
+ (*list)[r] = qMakeULongLong(data + r * columns[i].maxLen, d->err);
+ break;
+ default:
+ break;
+ }
+ break;
+ }
+
case SQLT_FLT:
(*list)[r] = *reinterpret_cast<double*>(data + r * columns[i].maxLen);
break;
diff --git a/src/xmlpatterns/data/qabstractfloat.cpp b/src/xmlpatterns/data/qabstractfloat.cpp
index d3384fe..9f0e4e0 100644
--- a/src/xmlpatterns/data/qabstractfloat.cpp
+++ b/src/xmlpatterns/data/qabstractfloat.cpp
@@ -118,7 +118,7 @@ bool AbstractFloat<isDouble>::isEqual(const xsDouble a, const xsDouble b)
return qIsInf(a) && internalSignbit(a) == internalSignbit(b);
else
{
- /* Preferrably, we would use std::numeric_limits<xsDouble>::espilon(), but
+ /* Preferably, we would use std::numeric_limits<xsDouble>::espilon(), but
* we cannot since we cannot depend on the STL. The small xs:double value below,
* was extracted by printing the std::numeric_limits<xsDouble>::epsilon() using
* gdb. */
diff --git a/src/xmlpatterns/data/qatomicvalue.cpp b/src/xmlpatterns/data/qatomicvalue.cpp
index 5bb9a4f..700f7ea 100644
--- a/src/xmlpatterns/data/qatomicvalue.cpp
+++ b/src/xmlpatterns/data/qatomicvalue.cpp
@@ -65,7 +65,7 @@ QT_BEGIN_NAMESPACE
/**
* @file
- * @short Contains the implementation for AtomicValue. The defintion is in qitem_p.h.
+ * @short Contains the implementation for AtomicValue. The definition is in qitem_p.h.
*/
using namespace QPatternist;
diff --git a/src/xmlpatterns/data/qschematime_p.h b/src/xmlpatterns/data/qschematime_p.h
index bd63714..bff065b 100644
--- a/src/xmlpatterns/data/qschematime_p.h
+++ b/src/xmlpatterns/data/qschematime_p.h
@@ -63,7 +63,7 @@ namespace QPatternist
/**
* @short Implements the value instance of the @c xs:time type.
*
- * The header file for this class was orignally called Time.h, but this
+ * The header file for this class was originally called Time.h, but this
* clashed with a system header on MinGW.
*
* @author Frans Englich <frans.englich@nokia.com>
diff --git a/src/xmlpatterns/schema/qxsdschemaparser.cpp b/src/xmlpatterns/schema/qxsdschemaparser.cpp
index fd0b95c..585cf12 100644
--- a/src/xmlpatterns/schema/qxsdschemaparser.cpp
+++ b/src/xmlpatterns/schema/qxsdschemaparser.cpp
@@ -914,7 +914,7 @@ void XsdSchemaParser::parseRedefine()
redefinedType->setWxsSuperType(contextType);
// 3) remove the base type resolving job from the resolver as
- // we have set the base type here explicitely
+ // we have set the base type here explicitly
m_parserContext->resolver()->removeSimpleRestrictionBase(redefinedType);
// 4) add the redefined type to the schema
@@ -963,7 +963,7 @@ void XsdSchemaParser::parseRedefine()
redefinedType->setWxsSuperType(contextType);
// 3) remove the base type resolving job from the resolver as
- // we have set the base type here explicitely
+ // we have set the base type here explicitly
m_parserContext->resolver()->removeComplexBaseType(redefinedType);
// 4) add the redefined type to the schema
@@ -5781,7 +5781,7 @@ QString XsdSchemaParser::readNamespaceAttribute(const QString &attributeName, co
SchemaType::DerivationConstraints XsdSchemaParser::readDerivationConstraintAttribute(const SchemaType::DerivationConstraints &allowedConstraints, const char *elementName)
{
- // first convert the flags into strings for easier comparision
+ // first convert the flags into strings for easier comparison
QSet<QString> allowedContent;
if (allowedConstraints & SchemaType::RestrictionConstraint)
allowedContent.insert(QString::fromLatin1("restriction"));
@@ -5844,7 +5844,7 @@ SchemaType::DerivationConstraints XsdSchemaParser::readDerivationConstraintAttri
NamedSchemaComponent::BlockingConstraints XsdSchemaParser::readBlockingConstraintAttribute(const NamedSchemaComponent::BlockingConstraints &allowedConstraints, const char *elementName)
{
- // first convert the flags into strings for easier comparision
+ // first convert the flags into strings for easier comparison
QSet<QString> allowedContent;
if (allowedConstraints & NamedSchemaComponent::RestrictionConstraint)
allowedContent.insert(QString::fromLatin1("restriction"));
diff --git a/src/xmlpatterns/schema/qxsdschemaparser_setup.cpp b/src/xmlpatterns/schema/qxsdschemaparser_setup.cpp
index 88e5f93..dc4730e 100644
--- a/src/xmlpatterns/schema/qxsdschemaparser_setup.cpp
+++ b/src/xmlpatterns/schema/qxsdschemaparser_setup.cpp
@@ -53,7 +53,7 @@ using namespace QPatternist;
* This page describes how to use DFAs for validating that the XML child tags of an
* XML parent tag occur in the right order.
*
- * To validate the occurence of XML tags one need a regular expression that describes
+ * To validate the occurrence of XML tags one need a regular expression that describes
* which tags can appear how often in what context. For example the regular expression
* of the global <em>attribute</em> tag in XML Schema is (annotation?, simpleType?).
* That means the <em>attribute</em> tag can contain an <em>annotation</em> tag followed
diff --git a/src/xmlpatterns/schema/qxsdstatemachine_p.h b/src/xmlpatterns/schema/qxsdstatemachine_p.h
index 294eb50..62c6ab0 100644
--- a/src/xmlpatterns/schema/qxsdstatemachine_p.h
+++ b/src/xmlpatterns/schema/qxsdstatemachine_p.h
@@ -138,7 +138,7 @@ namespace QPatternist
/**
* Continues execution of the machine with the given input @p transition.
*
- * @return @c true if the transition was successfull, @c false otherwise.
+ * @return @c true if the transition was successful, @c false otherwise.
*/
bool proceed(TransitionType transition);
@@ -154,7 +154,7 @@ namespace QPatternist
* @note To use this method, inputEqualsTransition must be implemented
* to find the right transition to use.
*
- * @return @c true if the transition was successfull, @c false otherwise.
+ * @return @c true if the transition was successful, @c false otherwise.
*/
template <typename InputType>
bool proceed(InputType input);
diff --git a/src/xmlpatterns/type/qtypechecker.cpp b/src/xmlpatterns/type/qtypechecker.cpp
index 879fe0e..73f83b7 100644
--- a/src/xmlpatterns/type/qtypechecker.cpp
+++ b/src/xmlpatterns/type/qtypechecker.cpp
@@ -168,7 +168,7 @@ Expression::Ptr TypeChecker::verifyType(const Expression::Ptr &operand,
/* Since we haven't exited yet, it means that the operandType is a super type
* of reqType, and that there hence is a path down to it through the
- * type hierachy -- but that doesn't neccessarily mean that a up-cast(down the
+ * type hierachy -- but that doesn't necessarily mean that a up-cast(down the
* hierarchy) would succeed. */
Expression::Ptr result(operand);
diff --git a/tests/auto/collections/collections.pro b/tests/auto/collections/collections.pro
index 876e903..8601ff8 100644
--- a/tests/auto/collections/collections.pro
+++ b/tests/auto/collections/collections.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_collections.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/declarative/examples/tst_examples.cpp b/tests/auto/declarative/examples/tst_examples.cpp
index cff0b46..0c7f8fb 100644
--- a/tests/auto/declarative/examples/tst_examples.cpp
+++ b/tests/auto/declarative/examples/tst_examples.cpp
@@ -86,6 +86,7 @@ tst_examples::tst_examples()
// Add directories you want excluded here
excludedDirs << "doc/src/snippets/declarative/visualdatamodel_rootindex";
+ excludedDirs << "doc/src/snippets/declarative/qtbinding";
#ifdef QT_NO_WEBKIT
excludedDirs << "examples/declarative/modelviews/webview";
diff --git a/tests/auto/declarative/qdeclarativedebug/tst_qdeclarativedebug.cpp b/tests/auto/declarative/qdeclarativedebug/tst_qdeclarativedebug.cpp
index e6a81b8..45bb10e 100644
--- a/tests/auto/declarative/qdeclarativedebug/tst_qdeclarativedebug.cpp
+++ b/tests/auto/declarative/qdeclarativedebug/tst_qdeclarativedebug.cpp
@@ -59,6 +59,7 @@
#include <private/qdeclarativerectangle_p.h>
#include <private/qdeclarativemetatype_p.h>
#include <private/qdeclarativeproperty_p.h>
+#include <private/qdeclarativedebughelper_p.h>
#include "../../../shared/util.h"
#include "../shared/debugutil_p.h"
@@ -112,6 +113,7 @@ private slots:
void tst_QDeclarativeDebugContextReference();
void tst_QDeclarativeDebugPropertyReference();
+ void setBindingForObject();
void setMethodBody();
};
@@ -278,8 +280,10 @@ void tst_QDeclarativeDebug::initTestCase()
{
qRegisterMetaType<QDeclarativeDebugWatch::State>();
- QTest::ignoreMessage(QtWarningMsg, "QDeclarativeDebugServer: Waiting for connection on port 3768...");
+ QTest::ignoreMessage(QtWarningMsg, "Qml debugging is enabled. Only use this in a safe environment!");
+ QDeclarativeDebugHelper::enableDebugging();
+ QTest::ignoreMessage(QtWarningMsg, "QDeclarativeDebugServer: Waiting for connection on port 3768...");
m_engine = new QDeclarativeEngine(this);
QList<QByteArray> qml;
@@ -894,6 +898,78 @@ void tst_QDeclarativeDebug::tst_QDeclarativeDebugPropertyReference()
compareProperties(r, ref);
}
+
+void tst_QDeclarativeDebug::setBindingForObject()
+{
+ QDeclarativeDebugObjectReference rootObject = findRootObject();
+ QVERIFY(rootObject.debugId() != -1);
+ QDeclarativeDebugPropertyReference widthPropertyRef = findProperty(rootObject.properties(), "width");
+
+ QCOMPARE(widthPropertyRef.value(), QVariant(10));
+ QCOMPARE(widthPropertyRef.binding(), QString());
+
+ //
+ // set literal
+ //
+ m_dbg->setBindingForObject(rootObject.debugId(), "width", "15", true);
+
+ rootObject = findRootObject();
+ widthPropertyRef = findProperty(rootObject.properties(), "width");
+
+ QCOMPARE(widthPropertyRef.value(), QVariant(15));
+ QCOMPARE(widthPropertyRef.binding(), QString());
+
+ //
+ // set expression
+ //
+ m_dbg->setBindingForObject(rootObject.debugId(), "width", "height", false);
+
+ rootObject = findRootObject();
+ widthPropertyRef = findProperty(rootObject.properties(), "width");
+
+ QCOMPARE(widthPropertyRef.value(), QVariant(20));
+ QCOMPARE(widthPropertyRef.binding(), QString("height"));
+
+ //
+ // reset
+ //
+ m_dbg->resetBindingForObject(rootObject.debugId(), "width");
+
+ rootObject = findRootObject();
+ widthPropertyRef = findProperty(rootObject.properties(), "width");
+
+ // QCOMPARE(widthPropertyRef.value(), QVariant(0)); // TODO: Shouldn't this work?
+ QCOMPARE(widthPropertyRef.binding(), QString());
+
+ //
+ // set handler
+ //
+ rootObject = findRootObject();
+ QCOMPARE(rootObject.children().size(), 3);
+ QDeclarativeDebugObjectReference mouseAreaObject = rootObject.children().at(2);
+ QDeclarativeDebugObjectQuery *q_obj = m_dbg->queryObjectRecursive(mouseAreaObject, this);
+ waitForQuery(q_obj);
+ mouseAreaObject = q_obj->object();
+
+ QCOMPARE(mouseAreaObject.className(), QString("MouseArea"));
+
+ QDeclarativeDebugPropertyReference onEnteredRef = findProperty(mouseAreaObject.properties(), "onEntered");
+
+ QCOMPARE(onEnteredRef.name(), QString("onEntered"));
+ QCOMPARE(onEnteredRef.value(), QVariant("{ console.log('hello') }"));
+
+ m_dbg->setBindingForObject(mouseAreaObject.debugId(), "onEntered", "{console.log('hello, world') }", false) ;
+
+ rootObject = findRootObject();
+ mouseAreaObject = rootObject.children().at(2);
+ q_obj = m_dbg->queryObjectRecursive(mouseAreaObject, this);
+ waitForQuery(q_obj);
+ mouseAreaObject = q_obj->object();
+ onEnteredRef = findProperty(mouseAreaObject.properties(), "onEntered");
+ QCOMPARE(onEnteredRef.name(), QString("onEntered"));
+ QCOMPARE(onEnteredRef.value(), QVariant("{console.log('hello, world') }"));
+}
+
int main(int argc, char *argv[])
{
int _argc = argc + 1;
diff --git a/tests/auto/declarative/qdeclarativedebugclient/tst_qdeclarativedebugclient.cpp b/tests/auto/declarative/qdeclarativedebugclient/tst_qdeclarativedebugclient.cpp
index 80241ba..64afd4e 100644
--- a/tests/auto/declarative/qdeclarativedebugclient/tst_qdeclarativedebugclient.cpp
+++ b/tests/auto/declarative/qdeclarativedebugclient/tst_qdeclarativedebugclient.cpp
@@ -51,6 +51,7 @@
#include <private/qdeclarativeenginedebug_p.h>
#include <private/qdeclarativedebugclient_p.h>
#include <private/qdeclarativedebugservice_p.h>
+#include <private/qdeclarativedebughelper_p.h>
#include "../../../shared/util.h"
#include "../shared/debugutil_p.h"
@@ -72,8 +73,10 @@ private slots:
void tst_QDeclarativeDebugClient::initTestCase()
{
- QTest::ignoreMessage(QtWarningMsg, "QDeclarativeDebugServer: Waiting for connection on port 3770...");
+ QTest::ignoreMessage(QtWarningMsg, "Qml debugging is enabled. Only use this in a safe environment!");
+ QDeclarativeDebugHelper::enableDebugging();
+ QTest::ignoreMessage(QtWarningMsg, "QDeclarativeDebugServer: Waiting for connection on port 3770...");
new QDeclarativeEngine(this);
m_conn = new QDeclarativeDebugConnection(this);
diff --git a/tests/auto/declarative/qdeclarativedebughelper/private_headers/qdeclarativedebughelper_p.h b/tests/auto/declarative/qdeclarativedebughelper/private_headers/qdeclarativedebughelper_p.h
index c9cb839..edfc58f 100644
--- a/tests/auto/declarative/qdeclarativedebughelper/private_headers/qdeclarativedebughelper_p.h
+++ b/tests/auto/declarative/qdeclarativedebughelper/private_headers/qdeclarativedebughelper_p.h
@@ -58,6 +58,10 @@ class Q_DECLARATIVE_EXPORT QDeclarativeDebugHelper
public:
static QScriptEngine *getScriptEngine(QDeclarativeEngine *engine);
static void setAnimationSlowDownFactor(qreal factor);
+
+ // Enables remote debugging functionality
+ // Only use this for debugging in a safe environment!
+ static void enableDebugging();
};
QT_END_NAMESPACE
diff --git a/tests/auto/declarative/qdeclarativedebughelper/tst_qdeclarativedebughelper.cpp b/tests/auto/declarative/qdeclarativedebughelper/tst_qdeclarativedebughelper.cpp
index 36f2222..60aec9d 100644
--- a/tests/auto/declarative/qdeclarativedebughelper/tst_qdeclarativedebughelper.cpp
+++ b/tests/auto/declarative/qdeclarativedebughelper/tst_qdeclarativedebughelper.cpp
@@ -54,6 +54,7 @@ class tst_qdeclarativedebughelper : public QObject {
private slots:
void getScriptEngine();
void setAnimationSlowDownFactor();
+ void enableDebugging();
};
class TestAnimation : public QAbstractAnimation {
@@ -109,6 +110,12 @@ void tst_qdeclarativedebughelper::setAnimationSlowDownFactor()
QVERIFY(animation.updateCalled > 1);
}
+void tst_qdeclarativedebughelper::enableDebugging()
+{
+ QTest::ignoreMessage(QtWarningMsg, "Qml debugging is enabled. Only use this in a safe environment!");
+ QDeclarativeDebugHelper::enableDebugging();
+}
+
QTEST_MAIN(tst_qdeclarativedebughelper)
#include "tst_qdeclarativedebughelper.moc"
diff --git a/tests/auto/declarative/qdeclarativedebugservice/tst_qdeclarativedebugservice.cpp b/tests/auto/declarative/qdeclarativedebugservice/tst_qdeclarativedebugservice.cpp
index 538129c..30629f9 100644
--- a/tests/auto/declarative/qdeclarativedebugservice/tst_qdeclarativedebugservice.cpp
+++ b/tests/auto/declarative/qdeclarativedebugservice/tst_qdeclarativedebugservice.cpp
@@ -46,6 +46,7 @@
#include <QThread>
#include <QtDeclarative/qdeclarativeengine.h>
+#include <private/qdeclarativedebughelper_p.h>
#include <private/qdeclarativedebug_p.h>
#include <private/qdeclarativeenginedebug_p.h>
@@ -75,6 +76,9 @@ private slots:
void tst_QDeclarativeDebugService::initTestCase()
{
+ QTest::ignoreMessage(QtWarningMsg, "Qml debugging is enabled. Only use this in a safe environment!");
+ QDeclarativeDebugHelper::enableDebugging();
+
QTest::ignoreMessage(QtWarningMsg, "QDeclarativeDebugServer: Waiting for connection on port 3769...");
new QDeclarativeEngine(this);
diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/ConstantsOverrideBindings.qml b/tests/auto/declarative/qdeclarativeecmascript/data/ConstantsOverrideBindings.qml
index b4a702b..07bb16b 100644
--- a/tests/auto/declarative/qdeclarativeecmascript/data/ConstantsOverrideBindings.qml
+++ b/tests/auto/declarative/qdeclarativeecmascript/data/ConstantsOverrideBindings.qml
@@ -3,4 +3,10 @@ import Qt.test 1.0
MyQmlObject {
property int c1: 0
property int c2: c1
+ property alias c3: inner.ic1
+
+ objectProperty: MyQmlObject {
+ id: inner
+ property int ic1: c1
+ }
}
diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/constantsOverrideBindings.4.qml b/tests/auto/declarative/qdeclarativeecmascript/data/constantsOverrideBindings.4.qml
new file mode 100644
index 0000000..5a2091f
--- /dev/null
+++ b/tests/auto/declarative/qdeclarativeecmascript/data/constantsOverrideBindings.4.qml
@@ -0,0 +1,11 @@
+import Qt.test 1.0
+
+MyQmlObject {
+ property alias c1: myConstants.c1
+ property alias c3: myConstants.c3
+
+ objectProperty: ConstantsOverrideBindings {
+ id: myConstants
+ c3: 10
+ }
+}
diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/outerBindingOverridesInnerBinding.qml b/tests/auto/declarative/qdeclarativeecmascript/data/outerBindingOverridesInnerBinding.qml
index 0a933e8..090c948 100644
--- a/tests/auto/declarative/qdeclarativeecmascript/data/outerBindingOverridesInnerBinding.qml
+++ b/tests/auto/declarative/qdeclarativeecmascript/data/outerBindingOverridesInnerBinding.qml
@@ -1,13 +1,14 @@
import Qt.test 1.0
MyQmlObject {
+ id: obj
property alias c1: myConstants.c1
property alias c2: myConstants.c2
property int c3: 0
objectProperty: ConstantsOverrideBindings {
id: myConstants
- c2: c3
+ c2: obj.c3
}
}
diff --git a/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp b/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp
index 72e2e10..3dd69da 100644
--- a/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp
+++ b/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp
@@ -733,6 +733,21 @@ void tst_qdeclarativeecmascript::constantsOverrideBindings()
QCOMPARE(object->property("c2").toInt(), 13);
}
#endif
+
+ // Using an alias
+ {
+ QDeclarativeComponent component(&engine, TEST_FILE("constantsOverrideBindings.4.qml"));
+ MyQmlObject *object = qobject_cast<MyQmlObject *>(component.create());
+ QVERIFY(object != 0);
+
+ QCOMPARE(object->property("c1").toInt(), 0);
+ QEXPECT_FAIL("", "QTBUG-13719", Continue);
+ QCOMPARE(object->property("c3").toInt(), 10);
+ object->setProperty("c1", QVariant(9));
+ QCOMPARE(object->property("c1").toInt(), 9);
+ QEXPECT_FAIL("", "QTBUG-13719", Continue);
+ QCOMPARE(object->property("c3").toInt(), 10);
+ }
}
/*
diff --git a/tests/auto/declarative/qdeclarativeimage/data/rect.png b/tests/auto/declarative/qdeclarativeimage/data/rect.png
new file mode 100644
index 0000000..d564a2d
--- /dev/null
+++ b/tests/auto/declarative/qdeclarativeimage/data/rect.png
Binary files differ
diff --git a/tests/auto/declarative/qdeclarativeimage/tst_qdeclarativeimage.cpp b/tests/auto/declarative/qdeclarativeimage/tst_qdeclarativeimage.cpp
index f1e026f..bf779ad 100644
--- a/tests/auto/declarative/qdeclarativeimage/tst_qdeclarativeimage.cpp
+++ b/tests/auto/declarative/qdeclarativeimage/tst_qdeclarativeimage.cpp
@@ -80,6 +80,8 @@ private slots:
void preserveAspectRatio();
void smooth();
void svg();
+ void geometry();
+ void geometry_data();
void big();
void tiling_QTBUG_6716();
void noLoading();
@@ -288,6 +290,78 @@ void tst_qdeclarativeimage::svg()
delete obj;
}
+void tst_qdeclarativeimage::geometry_data()
+{
+ QTest::addColumn<QString>("fillMode");
+ QTest::addColumn<bool>("explicitWidth");
+ QTest::addColumn<bool>("explicitHeight");
+ QTest::addColumn<double>("itemWidth");
+ QTest::addColumn<double>("paintedWidth");
+ QTest::addColumn<double>("boundingWidth");
+ QTest::addColumn<double>("itemHeight");
+ QTest::addColumn<double>("paintedHeight");
+ QTest::addColumn<double>("boundingHeight");
+
+ // tested image has width 200, height 100
+
+ // bounding rect and item rect are equal with fillMode PreserveAspectFit, painted rect may be smaller if the aspect ratio doesn't match
+ QTest::newRow("PreserveAspectFit") << "PreserveAspectFit" << false << false << 200.0 << 200.0 << 200.0 << 100.0 << 100.0 << 100.0;
+ QTest::newRow("PreserveAspectFit explicit width 300") << "PreserveAspectFit" << true << false << 300.0 << 200.0 << 300.0 << 100.0 << 100.0 << 100.0;
+ QTest::newRow("PreserveAspectFit explicit height 400") << "PreserveAspectFit" << false << true << 200.0 << 200.0 << 200.0 << 400.0 << 100.0 << 400.0;
+ QTest::newRow("PreserveAspectFit explicit width 300, height 400") << "PreserveAspectFit" << true << true << 300.0 << 300.0 << 300.0 << 400.0 << 150.0 << 400.0;
+
+ // bounding rect and painted rect are equal with fillMode PreserveAspectCrop, item rect may be smaller if the aspect ratio doesn't match
+ QTest::newRow("PreserveAspectCrop") << "PreserveAspectCrop" << false << false << 200.0 << 200.0 << 200.0 << 100.0 << 100.0 << 100.0;
+ QTest::newRow("PreserveAspectCrop explicit width 300") << "PreserveAspectCrop" << true << false << 300.0 << 300.0 << 300.0 << 100.0 << 150.0 << 150.0;
+ QTest::newRow("PreserveAspectCrop explicit height 400") << "PreserveAspectCrop" << false << true << 200.0 << 800.0 << 800.0 << 400.0 << 400.0 << 400.0;
+ QTest::newRow("PreserveAspectCrop explicit width 300, height 400") << "PreserveAspectCrop" << true << true << 300.0 << 800.0 << 800.0 << 400.0 << 400.0 << 400.0;
+
+ // bounding rect, painted rect and item rect are equal in stretching and tiling images
+ QStringList fillModes;
+ fillModes << "Stretch" << "Tile" << "TileVertically" << "TileHorizontally";
+ foreach (QString fillMode, fillModes) {
+ QTest::newRow(fillMode.toLatin1()) << fillMode << false << false << 200.0 << 200.0 << 200.0 << 100.0 << 100.0 << 100.0;
+ QTest::newRow(QString(fillMode + " explicit width 300").toLatin1()) << fillMode << true << false << 300.0 << 300.0 << 300.0 << 100.0 << 100.0 << 100.0;
+ QTest::newRow(QString(fillMode + " explicit height 400").toLatin1()) << fillMode << false << true << 200.0 << 200.0 << 200.0 << 400.0 << 400.0 << 400.0;
+ QTest::newRow(QString(fillMode + " explicit width 300, height 400").toLatin1()) << fillMode << true << true << 300.0 << 300.0 << 300.0 << 400.0 << 400.0 << 400.0;
+ }
+}
+
+void tst_qdeclarativeimage::geometry()
+{
+ QFETCH(QString, fillMode);
+ QFETCH(bool, explicitWidth);
+ QFETCH(bool, explicitHeight);
+ QFETCH(double, itemWidth);
+ QFETCH(double, itemHeight);
+ QFETCH(double, paintedWidth);
+ QFETCH(double, paintedHeight);
+ QFETCH(double, boundingWidth);
+ QFETCH(double, boundingHeight);
+
+ QString src = QUrl::fromLocalFile(SRCDIR "/data/rect.png").toString();
+ QString componentStr = "import QtQuick 1.0\nImage { source: \"" + src + "\"; fillMode: Image." + fillMode + "; ";
+
+ if (explicitWidth)
+ componentStr.append("width: 300; ");
+ if (explicitHeight)
+ componentStr.append("height: 400; ");
+ componentStr.append("}");
+ QDeclarativeComponent component(&engine);
+ component.setData(componentStr.toLatin1(), QUrl::fromLocalFile(""));
+ QDeclarativeImage *obj = qobject_cast<QDeclarativeImage*>(component.create());
+ QVERIFY(obj != 0);
+
+ QCOMPARE(obj->width(), itemWidth);
+ QCOMPARE(obj->paintedWidth(), paintedWidth);
+ QCOMPARE(obj->boundingRect().width(), boundingWidth);
+
+ QCOMPARE(obj->height(), itemHeight);
+ QCOMPARE(obj->paintedHeight(), paintedHeight);
+ QCOMPARE(obj->boundingRect().height(), boundingHeight);
+ delete obj;
+}
+
void tst_qdeclarativeimage::big()
{
// If the JPEG loader does not implement scaling efficiently, it would
diff --git a/tests/auto/declarative/qdeclarativeitem/tst_qdeclarativeitem.cpp b/tests/auto/declarative/qdeclarativeitem/tst_qdeclarativeitem.cpp
index b4903ae..711bf00 100644
--- a/tests/auto/declarative/qdeclarativeitem/tst_qdeclarativeitem.cpp
+++ b/tests/auto/declarative/qdeclarativeitem/tst_qdeclarativeitem.cpp
@@ -686,6 +686,8 @@ void tst_QDeclarativeItem::propertyChanges()
QSignalSpy focusSpy(item, SIGNAL(focusChanged(bool)));
QSignalSpy wantsFocusSpy(parentItem, SIGNAL(activeFocusChanged(bool)));
QSignalSpy childrenChangedSpy(parentItem, SIGNAL(childrenChanged()));
+ QSignalSpy xSpy(item, SIGNAL(xChanged()));
+ QSignalSpy ySpy(item, SIGNAL(yChanged()));
item->setParentItem(parentItem);
item->setWidth(100.0);
@@ -731,6 +733,14 @@ void tst_QDeclarativeItem::propertyChanges()
QCOMPARE(parentItem->hasFocus(), false);
QCOMPARE(wantsFocusSpy.count(),0);
+ item->setX(10.0);
+ QCOMPARE(item->x(), 10.0);
+ QCOMPARE(xSpy.count(), 1);
+
+ item->setY(10.0);
+ QCOMPARE(item->y(), 10.0);
+ QCOMPARE(ySpy.count(), 1);
+
delete canvas;
}
diff --git a/tests/auto/declarative/qdeclarativestates/data/QTBUG-14830.qml b/tests/auto/declarative/qdeclarativestates/data/QTBUG-14830.qml
new file mode 100644
index 0000000..7f9ddbf
--- /dev/null
+++ b/tests/auto/declarative/qdeclarativestates/data/QTBUG-14830.qml
@@ -0,0 +1,29 @@
+import QtQuick 1.0
+
+Rectangle {
+ width: 1024
+ height: 768
+
+ Item {
+ id: area
+ objectName: "area"
+ property int numx: 6
+ property int cellwidth: 1024/numx
+
+ onWidthChanged: {
+ width = width>1024?1024:width;
+ }
+
+ state: 'minimal'
+ states: [
+ State {
+ name: 'minimal'
+ PropertyChanges {
+ target: area
+ width: cellwidth
+ }
+ }
+ ]
+
+ }
+}
diff --git a/tests/auto/declarative/qdeclarativestates/tst_qdeclarativestates.cpp b/tests/auto/declarative/qdeclarativestates/tst_qdeclarativestates.cpp
index 0d10c10..b8409a5 100644
--- a/tests/auto/declarative/qdeclarativestates/tst_qdeclarativestates.cpp
+++ b/tests/auto/declarative/qdeclarativestates/tst_qdeclarativestates.cpp
@@ -143,6 +143,7 @@ private slots:
void returnToBase();
void extendsBug();
void editProperties();
+ void QTBUG_14830();
};
void tst_qdeclarativestates::initTestCase()
@@ -1375,6 +1376,18 @@ void tst_qdeclarativestates::editProperties()
QCOMPARE(childRect->height(), qreal(40));
}
+void tst_qdeclarativestates::QTBUG_14830()
+{
+ QDeclarativeEngine engine;
+
+ QDeclarativeComponent c(&engine, SRCDIR "/data/QTBUG-14830.qml");
+ QDeclarativeRectangle *rect = qobject_cast<QDeclarativeRectangle*>(c.create());
+ QVERIFY(rect != 0);
+ QDeclarativeItem *item = rect->findChild<QDeclarativeItem*>("area");
+
+ QCOMPARE(item->width(), qreal(171));
+}
+
QTEST_MAIN(tst_qdeclarativestates)
#include "tst_qdeclarativestates.moc"
diff --git a/tests/auto/declarative/qmlvisual/ListView/data/enforcerange.0.png b/tests/auto/declarative/qmlvisual/ListView/data/enforcerange.0.png
new file mode 100644
index 0000000..d466434
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/ListView/data/enforcerange.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data/enforcerange.1.png b/tests/auto/declarative/qmlvisual/ListView/data/enforcerange.1.png
new file mode 100644
index 0000000..45d9712
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/ListView/data/enforcerange.1.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data/enforcerange.2.png b/tests/auto/declarative/qmlvisual/ListView/data/enforcerange.2.png
new file mode 100644
index 0000000..3f05a5e
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/ListView/data/enforcerange.2.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data/enforcerange.3.png b/tests/auto/declarative/qmlvisual/ListView/data/enforcerange.3.png
new file mode 100644
index 0000000..d466434
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/ListView/data/enforcerange.3.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data/enforcerange.4.png b/tests/auto/declarative/qmlvisual/ListView/data/enforcerange.4.png
new file mode 100644
index 0000000..c902676
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/ListView/data/enforcerange.4.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data/enforcerange.5.png b/tests/auto/declarative/qmlvisual/ListView/data/enforcerange.5.png
new file mode 100644
index 0000000..45d9712
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/ListView/data/enforcerange.5.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data/enforcerange.qml b/tests/auto/declarative/qmlvisual/ListView/data/enforcerange.qml
new file mode 100644
index 0000000..20ed077
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/ListView/data/enforcerange.qml
@@ -0,0 +1,2119 @@
+import Qt.VisualTest 4.7
+
+VisualTest {
+ Frame {
+ msec: 0
+ }
+ Frame {
+ msec: 16
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 32
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 48
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 64
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 80
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 96
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 112
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 128
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 144
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 160
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 176
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 192
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 208
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 224
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 240
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 256
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 272
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 288
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 304
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 320
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 336
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 352
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 368
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 384
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 400
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 416
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 432
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 448
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 464
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 480
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 496
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 512
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 528
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 544
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 560
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 576
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 592
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 608
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 624
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 640
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 656
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 672
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 688
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 704
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 720
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 736
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 752
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 768
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 784
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 800
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 816
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 832
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 848
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 864
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 880
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 896
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 912
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 928
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 944
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 960
+ image: "enforcerange.0.png"
+ }
+ Frame {
+ msec: 976
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 992
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 1008
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 1024
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 1040
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 1056
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 1072
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 1088
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 1104
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 1120
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 1136
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 1152
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 1168
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 1184
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 1200
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 77; y: 157
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1216
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 1232
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 1248
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 77; y: 156
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1264
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 77; y: 154
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 76; y: 151
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1280
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 75; y: 144
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 74; y: 136
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1296
+ hash: "c7667b5af9f2ee912abe5879266cb1e0"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 73; y: 131
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 72; y: 122
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1312
+ hash: "1e762d6ffe1ceb53046d7953645d02d5"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 71; y: 118
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 71; y: 111
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1328
+ hash: "0d2b7130a84a8efac1cf4fe8a1768231"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 71; y: 108
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 71; y: 102
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1344
+ hash: "6ef2715c3fd26d50d26fb740afa6dece"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 71; y: 98
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 71; y: 92
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 71; y: 92
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1360
+ hash: "f489b6f951281ff9a981ec046ca5b17d"
+ }
+ Frame {
+ msec: 1376
+ hash: "fd6e7d7db7c4571ee606269fb9680ed9"
+ }
+ Frame {
+ msec: 1392
+ hash: "398a238f59a2edf07870b624b914c81d"
+ }
+ Frame {
+ msec: 1408
+ hash: "fdce64faab7e7e31a229adda47924cd1"
+ }
+ Frame {
+ msec: 1424
+ hash: "8d474956331fdd0c35beb13a06b7c557"
+ }
+ Frame {
+ msec: 1440
+ hash: "f89fed6f7fa07a8320f07a1e68240a7e"
+ }
+ Frame {
+ msec: 1456
+ hash: "940b70f15082ff138579892bb6f20ce9"
+ }
+ Frame {
+ msec: 1472
+ hash: "35ab744ce2a91567dbbd769f9486f870"
+ }
+ Frame {
+ msec: 1488
+ hash: "6b2d32b8f1df871c2c014af8b5d87329"
+ }
+ Frame {
+ msec: 1504
+ hash: "edf3b33b80cca53999779555f9cd6162"
+ }
+ Frame {
+ msec: 1520
+ hash: "180f3cc4ea5ff5b6f9e8be0294732d4e"
+ }
+ Frame {
+ msec: 1536
+ hash: "28e9ca60a873910380b2d22d6b3df565"
+ }
+ Frame {
+ msec: 1552
+ hash: "3bb1e8d69f171f09eb4c6f9914fc9576"
+ }
+ Frame {
+ msec: 1568
+ hash: "0501da09be444df6cee4b19617290317"
+ }
+ Frame {
+ msec: 1584
+ hash: "8ce1ac0163b0353167488aff2879e841"
+ }
+ Frame {
+ msec: 1600
+ hash: "18e53bf6337cf6590fc3c73c00469d8e"
+ }
+ Frame {
+ msec: 1616
+ hash: "0c31ede980d07069f4977d5753d00ddf"
+ }
+ Frame {
+ msec: 1632
+ hash: "0a854a54176c24f0ebbb6cb747dc0ab7"
+ }
+ Frame {
+ msec: 1648
+ hash: "8dba1ebca6f00b7a64a6982fb8c28c50"
+ }
+ Frame {
+ msec: 1664
+ hash: "8d273efc36ba722af4d044e6552c9dcb"
+ }
+ Frame {
+ msec: 1680
+ hash: "674b07dc5b99bf2da93c40d42dc9023d"
+ }
+ Frame {
+ msec: 1696
+ hash: "a4ff6c6c43697808f9ad7387d152cef3"
+ }
+ Frame {
+ msec: 1712
+ hash: "b64810845a97bedf6fe11c043457c197"
+ }
+ Frame {
+ msec: 1728
+ hash: "87aaa82b96131fed8822e57e226162a0"
+ }
+ Frame {
+ msec: 1744
+ hash: "7eb75e8e83874d52448a7dbf6a0ad29c"
+ }
+ Frame {
+ msec: 1760
+ hash: "b061ee3784fbd4a287758ffd100a623e"
+ }
+ Frame {
+ msec: 1776
+ hash: "81110f17d191f9795a2c57d136e86550"
+ }
+ Frame {
+ msec: 1792
+ hash: "090a76cf068a5041ff993f21e6ebd087"
+ }
+ Frame {
+ msec: 1808
+ hash: "30eb157c89ad0aeb17fd0012afb9246b"
+ }
+ Frame {
+ msec: 1824
+ hash: "6b317b59e1b0f5b17a6d7d96e745f576"
+ }
+ Frame {
+ msec: 1840
+ hash: "f9fc8467c6dbcb00d1f41a57b550193c"
+ }
+ Frame {
+ msec: 1856
+ hash: "744227adbdd31be2920a232ea0dbc85d"
+ }
+ Frame {
+ msec: 1872
+ hash: "d4b370ff8c3b66fc8a616dd9b944abd1"
+ }
+ Frame {
+ msec: 1888
+ hash: "674b07dc5b99bf2da93c40d42dc9023d"
+ }
+ Frame {
+ msec: 1904
+ hash: "a4ff6c6c43697808f9ad7387d152cef3"
+ }
+ Frame {
+ msec: 1920
+ image: "enforcerange.1.png"
+ }
+ Frame {
+ msec: 1936
+ hash: "b64810845a97bedf6fe11c043457c197"
+ }
+ Frame {
+ msec: 1952
+ hash: "87aaa82b96131fed8822e57e226162a0"
+ }
+ Frame {
+ msec: 1968
+ hash: "70b475e88060ead84d05f0ba1b47c139"
+ }
+ Frame {
+ msec: 1984
+ hash: "7eb75e8e83874d52448a7dbf6a0ad29c"
+ }
+ Frame {
+ msec: 2000
+ hash: "b061ee3784fbd4a287758ffd100a623e"
+ }
+ Frame {
+ msec: 2016
+ hash: "81110f17d191f9795a2c57d136e86550"
+ }
+ Frame {
+ msec: 2032
+ hash: "090a76cf068a5041ff993f21e6ebd087"
+ }
+ Frame {
+ msec: 2048
+ hash: "090a76cf068a5041ff993f21e6ebd087"
+ }
+ Frame {
+ msec: 2064
+ hash: "30eb157c89ad0aeb17fd0012afb9246b"
+ }
+ Frame {
+ msec: 2080
+ hash: "6b317b59e1b0f5b17a6d7d96e745f576"
+ }
+ Frame {
+ msec: 2096
+ hash: "f9fc8467c6dbcb00d1f41a57b550193c"
+ }
+ Frame {
+ msec: 2112
+ hash: "f9fc8467c6dbcb00d1f41a57b550193c"
+ }
+ Frame {
+ msec: 2128
+ hash: "711274e9b6811b4662ac29d813574fb6"
+ }
+ Frame {
+ msec: 2144
+ hash: "744227adbdd31be2920a232ea0dbc85d"
+ }
+ Frame {
+ msec: 2160
+ hash: "744227adbdd31be2920a232ea0dbc85d"
+ }
+ Frame {
+ msec: 2176
+ hash: "d4b370ff8c3b66fc8a616dd9b944abd1"
+ }
+ Frame {
+ msec: 2192
+ hash: "d4b370ff8c3b66fc8a616dd9b944abd1"
+ }
+ Frame {
+ msec: 2208
+ hash: "674b07dc5b99bf2da93c40d42dc9023d"
+ }
+ Frame {
+ msec: 2224
+ hash: "674b07dc5b99bf2da93c40d42dc9023d"
+ }
+ Frame {
+ msec: 2240
+ hash: "a4ff6c6c43697808f9ad7387d152cef3"
+ }
+ Frame {
+ msec: 2256
+ hash: "a4ff6c6c43697808f9ad7387d152cef3"
+ }
+ Frame {
+ msec: 2272
+ hash: "b64810845a97bedf6fe11c043457c197"
+ }
+ Frame {
+ msec: 2288
+ hash: "b64810845a97bedf6fe11c043457c197"
+ }
+ Frame {
+ msec: 2304
+ hash: "87aaa82b96131fed8822e57e226162a0"
+ }
+ Frame {
+ msec: 2320
+ hash: "87aaa82b96131fed8822e57e226162a0"
+ }
+ Frame {
+ msec: 2336
+ hash: "87aaa82b96131fed8822e57e226162a0"
+ }
+ Frame {
+ msec: 2352
+ hash: "70b475e88060ead84d05f0ba1b47c139"
+ }
+ Frame {
+ msec: 2368
+ hash: "70b475e88060ead84d05f0ba1b47c139"
+ }
+ Frame {
+ msec: 2384
+ hash: "70b475e88060ead84d05f0ba1b47c139"
+ }
+ Frame {
+ msec: 2400
+ hash: "7eb75e8e83874d52448a7dbf6a0ad29c"
+ }
+ Frame {
+ msec: 2416
+ hash: "7eb75e8e83874d52448a7dbf6a0ad29c"
+ }
+ Frame {
+ msec: 2432
+ hash: "7eb75e8e83874d52448a7dbf6a0ad29c"
+ }
+ Frame {
+ msec: 2448
+ hash: "7eb75e8e83874d52448a7dbf6a0ad29c"
+ }
+ Frame {
+ msec: 2464
+ hash: "7eb75e8e83874d52448a7dbf6a0ad29c"
+ }
+ Frame {
+ msec: 2480
+ hash: "b061ee3784fbd4a287758ffd100a623e"
+ }
+ Frame {
+ msec: 2496
+ hash: "b061ee3784fbd4a287758ffd100a623e"
+ }
+ Frame {
+ msec: 2512
+ hash: "b061ee3784fbd4a287758ffd100a623e"
+ }
+ Frame {
+ msec: 2528
+ hash: "b061ee3784fbd4a287758ffd100a623e"
+ }
+ Frame {
+ msec: 2544
+ hash: "b061ee3784fbd4a287758ffd100a623e"
+ }
+ Frame {
+ msec: 2560
+ hash: "b061ee3784fbd4a287758ffd100a623e"
+ }
+ Frame {
+ msec: 2576
+ hash: "b061ee3784fbd4a287758ffd100a623e"
+ }
+ Frame {
+ msec: 2592
+ hash: "b061ee3784fbd4a287758ffd100a623e"
+ }
+ Frame {
+ msec: 2608
+ hash: "b061ee3784fbd4a287758ffd100a623e"
+ }
+ Frame {
+ msec: 2624
+ hash: "b061ee3784fbd4a287758ffd100a623e"
+ }
+ Frame {
+ msec: 2640
+ hash: "b061ee3784fbd4a287758ffd100a623e"
+ }
+ Frame {
+ msec: 2656
+ hash: "7eb75e8e83874d52448a7dbf6a0ad29c"
+ }
+ Frame {
+ msec: 2672
+ hash: "7eb75e8e83874d52448a7dbf6a0ad29c"
+ }
+ Frame {
+ msec: 2688
+ hash: "7eb75e8e83874d52448a7dbf6a0ad29c"
+ }
+ Frame {
+ msec: 2704
+ hash: "70b475e88060ead84d05f0ba1b47c139"
+ }
+ Frame {
+ msec: 2720
+ hash: "70b475e88060ead84d05f0ba1b47c139"
+ }
+ Frame {
+ msec: 2736
+ hash: "87aaa82b96131fed8822e57e226162a0"
+ }
+ Frame {
+ msec: 2752
+ hash: "87aaa82b96131fed8822e57e226162a0"
+ }
+ Frame {
+ msec: 2768
+ hash: "b64810845a97bedf6fe11c043457c197"
+ }
+ Frame {
+ msec: 2784
+ hash: "b64810845a97bedf6fe11c043457c197"
+ }
+ Frame {
+ msec: 2800
+ hash: "b64810845a97bedf6fe11c043457c197"
+ }
+ Frame {
+ msec: 2816
+ hash: "a4ff6c6c43697808f9ad7387d152cef3"
+ }
+ Frame {
+ msec: 2832
+ hash: "a4ff6c6c43697808f9ad7387d152cef3"
+ }
+ Frame {
+ msec: 2848
+ hash: "a4ff6c6c43697808f9ad7387d152cef3"
+ }
+ Frame {
+ msec: 2864
+ hash: "a4ff6c6c43697808f9ad7387d152cef3"
+ }
+ Frame {
+ msec: 2880
+ image: "enforcerange.2.png"
+ }
+ Frame {
+ msec: 2896
+ hash: "a4ff6c6c43697808f9ad7387d152cef3"
+ }
+ Frame {
+ msec: 2912
+ hash: "a4ff6c6c43697808f9ad7387d152cef3"
+ }
+ Frame {
+ msec: 2928
+ hash: "a4ff6c6c43697808f9ad7387d152cef3"
+ }
+ Frame {
+ msec: 2944
+ hash: "a4ff6c6c43697808f9ad7387d152cef3"
+ }
+ Frame {
+ msec: 2960
+ hash: "a4ff6c6c43697808f9ad7387d152cef3"
+ }
+ Frame {
+ msec: 2976
+ hash: "a4ff6c6c43697808f9ad7387d152cef3"
+ }
+ Frame {
+ msec: 2992
+ hash: "a4ff6c6c43697808f9ad7387d152cef3"
+ }
+ Frame {
+ msec: 3008
+ hash: "a4ff6c6c43697808f9ad7387d152cef3"
+ }
+ Frame {
+ msec: 3024
+ hash: "a4ff6c6c43697808f9ad7387d152cef3"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 82; y: 39
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3040
+ hash: "a4ff6c6c43697808f9ad7387d152cef3"
+ }
+ Frame {
+ msec: 3056
+ hash: "a4ff6c6c43697808f9ad7387d152cef3"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 82; y: 40
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3072
+ hash: "a4ff6c6c43697808f9ad7387d152cef3"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 82; y: 42
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 81; y: 44
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3088
+ hash: "a4ff6c6c43697808f9ad7387d152cef3"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 81; y: 47
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 81; y: 55
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3104
+ hash: "89016574205e00cf42723446d6a3437e"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 81; y: 60
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 81; y: 69
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3120
+ hash: "e2db9b1ae5c4be51a548834a7776da1f"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 80; y: 75
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 80; y: 87
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3136
+ hash: "fcfad57224192065782a77ad3398d0d1"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 80; y: 93
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 80; y: 107
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3152
+ hash: "bae4fc0fc2d33008ebe827ece94af196"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 84; y: 130
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 88; y: 144
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3168
+ hash: "569581944bf18c8165f72c60bdbf1011"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 96; y: 161
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 96; y: 161
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3184
+ hash: "613ff94a26bfaa9a4dc94fcbf6c3eb57"
+ }
+ Frame {
+ msec: 3200
+ hash: "a63f8e6b194f900acb1b7a332f9fb9ae"
+ }
+ Frame {
+ msec: 3216
+ hash: "6c04761cc86d28112c16f692cda58ba4"
+ }
+ Frame {
+ msec: 3232
+ hash: "544275da3f7e2ccaedc8c521bf17f59b"
+ }
+ Frame {
+ msec: 3248
+ hash: "52831480eb69184341b12ffb09ace736"
+ }
+ Frame {
+ msec: 3264
+ hash: "52831480eb69184341b12ffb09ace736"
+ }
+ Frame {
+ msec: 3280
+ hash: "52831480eb69184341b12ffb09ace736"
+ }
+ Frame {
+ msec: 3296
+ hash: "58f2b900bc335424fc70eaaeb23ceb56"
+ }
+ Frame {
+ msec: 3312
+ hash: "58f2b900bc335424fc70eaaeb23ceb56"
+ }
+ Frame {
+ msec: 3328
+ hash: "544275da3f7e2ccaedc8c521bf17f59b"
+ }
+ Frame {
+ msec: 3344
+ hash: "df9fef370c2f6ff300b20fc24b5b9e34"
+ }
+ Frame {
+ msec: 3360
+ hash: "0662898d246e5ff6981610d32e2b8375"
+ }
+ Frame {
+ msec: 3376
+ hash: "6c04761cc86d28112c16f692cda58ba4"
+ }
+ Frame {
+ msec: 3392
+ hash: "82b31c8e8794ce3a9a6a635ef93b29b3"
+ }
+ Frame {
+ msec: 3408
+ hash: "388658b5e03f3853e93173bd9501b77b"
+ }
+ Frame {
+ msec: 3424
+ hash: "cf1856e961e6b8277a82c03ace5ba864"
+ }
+ Frame {
+ msec: 3440
+ hash: "e1d022cc1b41098baffe49925b20678f"
+ }
+ Frame {
+ msec: 3456
+ hash: "a63f8e6b194f900acb1b7a332f9fb9ae"
+ }
+ Frame {
+ msec: 3472
+ hash: "044c3712a6a5f6a973defe85643c8d02"
+ }
+ Frame {
+ msec: 3488
+ hash: "044c3712a6a5f6a973defe85643c8d02"
+ }
+ Frame {
+ msec: 3504
+ hash: "e4fe2f1a81a4a4806f4155807f285a2d"
+ }
+ Frame {
+ msec: 3520
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 3536
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 3552
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 3568
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 3584
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 3600
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 3616
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 3632
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 3648
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 3664
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 3680
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 3696
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 3712
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 3728
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 3744
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 3760
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 3776
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 3792
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 3808
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 3824
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 3840
+ image: "enforcerange.3.png"
+ }
+ Frame {
+ msec: 3856
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 3872
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 3888
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 3904
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 3920
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 3936
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 3952
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 3968
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 3984
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 4000
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 4016
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 4032
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 105; y: 169
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 4048
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 106; y: 168
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 106; y: 167
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 4064
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 106; y: 164
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 106; y: 163
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 4080
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 106; y: 162
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 106; y: 160
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 4096
+ hash: "331164730fb7ccf37dc08ddc26c0e182"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 107; y: 157
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 107; y: 156
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 4112
+ hash: "73e27ff972eefc421bc65897ad8b9a11"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 108; y: 152
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 109; y: 148
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 4128
+ hash: "c5e903fd827f8f1ec060dcb9a925bf6d"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 109; y: 145
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 109; y: 145
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 4144
+ hash: "74d4357dff4d6e00c5ae9ea0c34f1010"
+ }
+ Frame {
+ msec: 4160
+ hash: "790274ee21ba257b84671a6fb19c142f"
+ }
+ Frame {
+ msec: 4176
+ hash: "65ccc26f20be484fefa8ea25a7daf825"
+ }
+ Frame {
+ msec: 4192
+ hash: "e435e2fbba7f0f6a65b9fecf07893eb0"
+ }
+ Frame {
+ msec: 4208
+ hash: "6a994a18a9331731d5fca50dce2b9cff"
+ }
+ Frame {
+ msec: 4224
+ hash: "9fc4405cddc06310215969a4583b2353"
+ }
+ Frame {
+ msec: 4240
+ hash: "0d2b7130a84a8efac1cf4fe8a1768231"
+ }
+ Frame {
+ msec: 4256
+ hash: "791db15db47090e1af299e5b32e53918"
+ }
+ Frame {
+ msec: 4272
+ hash: "0ec6cf7a6ed9a073d2ce8f9e534e2ee5"
+ }
+ Frame {
+ msec: 4288
+ hash: "c7b358f51a9500ca4958d266de5307e6"
+ }
+ Frame {
+ msec: 4304
+ hash: "d24d00e4cd1ea3aaacf202e2fdf1eaa0"
+ }
+ Frame {
+ msec: 4320
+ hash: "169f1a7a933d84071c449132a3c2745e"
+ }
+ Frame {
+ msec: 4336
+ hash: "b6bf9c15ed40d6e862f693155c884035"
+ }
+ Frame {
+ msec: 4352
+ hash: "8639955aa7a03f54d50d7e9051a4b997"
+ }
+ Frame {
+ msec: 4368
+ hash: "411bc9a9aedbfb75f3122eaea6be0c16"
+ }
+ Frame {
+ msec: 4384
+ hash: "827094da86716daf69386af2c8d4027a"
+ }
+ Frame {
+ msec: 4400
+ hash: "ddddd5457e4a54ca5e7415dc2c7eabe5"
+ }
+ Frame {
+ msec: 4416
+ hash: "632a5756af20083504fb1faaa019dd48"
+ }
+ Frame {
+ msec: 4432
+ hash: "0cc2901b1b25412f13865887a8c9d13e"
+ }
+ Frame {
+ msec: 4448
+ hash: "4c8a9473eb9843634340d70f8eab9487"
+ }
+ Frame {
+ msec: 4464
+ hash: "398a238f59a2edf07870b624b914c81d"
+ }
+ Frame {
+ msec: 4480
+ hash: "a7c282235e9166b900ea2ff68800a5f5"
+ }
+ Frame {
+ msec: 4496
+ hash: "bae4fc0fc2d33008ebe827ece94af196"
+ }
+ Frame {
+ msec: 4512
+ hash: "45e0670a2b4c18b847a3c7870539b962"
+ }
+ Frame {
+ msec: 4528
+ hash: "8d474956331fdd0c35beb13a06b7c557"
+ }
+ Frame {
+ msec: 4544
+ hash: "5d5bdffc30d90fd5b061c6fcf24c2599"
+ }
+ Frame {
+ msec: 4560
+ hash: "15721b103981f5fe40b5dfe7d65c5b38"
+ }
+ Frame {
+ msec: 4576
+ hash: "940b70f15082ff138579892bb6f20ce9"
+ }
+ Frame {
+ msec: 4592
+ hash: "5137ea98fd291a4b967fb66d93253a37"
+ }
+ Frame {
+ msec: 4608
+ hash: "35ab744ce2a91567dbbd769f9486f870"
+ }
+ Frame {
+ msec: 4624
+ hash: "d5c55c00b07735e5d7c02dfa99ef2f45"
+ }
+ Frame {
+ msec: 4640
+ hash: "6b2d32b8f1df871c2c014af8b5d87329"
+ }
+ Frame {
+ msec: 4656
+ hash: "edf3b33b80cca53999779555f9cd6162"
+ }
+ Frame {
+ msec: 4672
+ hash: "180f3cc4ea5ff5b6f9e8be0294732d4e"
+ }
+ Frame {
+ msec: 4688
+ hash: "9b99a1b0c0bb0ce37655d92854ee4d19"
+ }
+ Frame {
+ msec: 4704
+ hash: "28e9ca60a873910380b2d22d6b3df565"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 109; y: 131
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 4720
+ hash: "28e9ca60a873910380b2d22d6b3df565"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 109; y: 126
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 109; y: 124
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 4736
+ hash: "18e53bf6337cf6590fc3c73c00469d8e"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 109; y: 115
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 109; y: 110
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 4752
+ hash: "81110f17d191f9795a2c57d136e86550"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 108; y: 99
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 106; y: 85
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 4768
+ hash: "b64810845a97bedf6fe11c043457c197"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 105; y: 74
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 103; y: 60
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 4784
+ hash: "711274e9b6811b4662ac29d813574fb6"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 102; y: 54
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 100; y: 40
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 100; y: 40
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 4800
+ image: "enforcerange.4.png"
+ }
+ Frame {
+ msec: 4816
+ hash: "7eb75e8e83874d52448a7dbf6a0ad29c"
+ }
+ Frame {
+ msec: 4832
+ hash: "090a76cf068a5041ff993f21e6ebd087"
+ }
+ Frame {
+ msec: 4848
+ hash: "6b317b59e1b0f5b17a6d7d96e745f576"
+ }
+ Frame {
+ msec: 4864
+ hash: "744227adbdd31be2920a232ea0dbc85d"
+ }
+ Frame {
+ msec: 4880
+ hash: "674b07dc5b99bf2da93c40d42dc9023d"
+ }
+ Frame {
+ msec: 4896
+ hash: "b64810845a97bedf6fe11c043457c197"
+ }
+ Frame {
+ msec: 4912
+ hash: "7eb75e8e83874d52448a7dbf6a0ad29c"
+ }
+ Frame {
+ msec: 4928
+ hash: "81110f17d191f9795a2c57d136e86550"
+ }
+ Frame {
+ msec: 4944
+ hash: "30eb157c89ad0aeb17fd0012afb9246b"
+ }
+ Frame {
+ msec: 4960
+ hash: "f9fc8467c6dbcb00d1f41a57b550193c"
+ }
+ Frame {
+ msec: 4976
+ hash: "711274e9b6811b4662ac29d813574fb6"
+ }
+ Frame {
+ msec: 4992
+ hash: "d4b370ff8c3b66fc8a616dd9b944abd1"
+ }
+ Frame {
+ msec: 5008
+ hash: "a4ff6c6c43697808f9ad7387d152cef3"
+ }
+ Frame {
+ msec: 5024
+ hash: "87aaa82b96131fed8822e57e226162a0"
+ }
+ Frame {
+ msec: 5040
+ hash: "70b475e88060ead84d05f0ba1b47c139"
+ }
+ Frame {
+ msec: 5056
+ hash: "b061ee3784fbd4a287758ffd100a623e"
+ }
+ Frame {
+ msec: 5072
+ hash: "81110f17d191f9795a2c57d136e86550"
+ }
+ Frame {
+ msec: 5088
+ hash: "30eb157c89ad0aeb17fd0012afb9246b"
+ }
+ Frame {
+ msec: 5104
+ hash: "6b317b59e1b0f5b17a6d7d96e745f576"
+ }
+ Frame {
+ msec: 5120
+ hash: "711274e9b6811b4662ac29d813574fb6"
+ }
+ Frame {
+ msec: 5136
+ hash: "744227adbdd31be2920a232ea0dbc85d"
+ }
+ Frame {
+ msec: 5152
+ hash: "674b07dc5b99bf2da93c40d42dc9023d"
+ }
+ Frame {
+ msec: 5168
+ hash: "a4ff6c6c43697808f9ad7387d152cef3"
+ }
+ Frame {
+ msec: 5184
+ hash: "b64810845a97bedf6fe11c043457c197"
+ }
+ Frame {
+ msec: 5200
+ hash: "87aaa82b96131fed8822e57e226162a0"
+ }
+ Frame {
+ msec: 5216
+ hash: "7eb75e8e83874d52448a7dbf6a0ad29c"
+ }
+ Frame {
+ msec: 5232
+ hash: "b061ee3784fbd4a287758ffd100a623e"
+ }
+ Frame {
+ msec: 5248
+ hash: "81110f17d191f9795a2c57d136e86550"
+ }
+ Frame {
+ msec: 5264
+ hash: "090a76cf068a5041ff993f21e6ebd087"
+ }
+ Frame {
+ msec: 5280
+ hash: "30eb157c89ad0aeb17fd0012afb9246b"
+ }
+ Frame {
+ msec: 5296
+ hash: "6b317b59e1b0f5b17a6d7d96e745f576"
+ }
+ Frame {
+ msec: 5312
+ hash: "f9fc8467c6dbcb00d1f41a57b550193c"
+ }
+ Frame {
+ msec: 5328
+ hash: "744227adbdd31be2920a232ea0dbc85d"
+ }
+ Frame {
+ msec: 5344
+ hash: "d4b370ff8c3b66fc8a616dd9b944abd1"
+ }
+ Frame {
+ msec: 5360
+ hash: "674b07dc5b99bf2da93c40d42dc9023d"
+ }
+ Frame {
+ msec: 5376
+ hash: "a4ff6c6c43697808f9ad7387d152cef3"
+ }
+ Frame {
+ msec: 5392
+ hash: "b64810845a97bedf6fe11c043457c197"
+ }
+ Frame {
+ msec: 5408
+ hash: "b64810845a97bedf6fe11c043457c197"
+ }
+ Frame {
+ msec: 5424
+ hash: "87aaa82b96131fed8822e57e226162a0"
+ }
+ Frame {
+ msec: 5440
+ hash: "70b475e88060ead84d05f0ba1b47c139"
+ }
+ Frame {
+ msec: 5456
+ hash: "7eb75e8e83874d52448a7dbf6a0ad29c"
+ }
+ Frame {
+ msec: 5472
+ hash: "b061ee3784fbd4a287758ffd100a623e"
+ }
+ Frame {
+ msec: 5488
+ hash: "81110f17d191f9795a2c57d136e86550"
+ }
+ Frame {
+ msec: 5504
+ hash: "090a76cf068a5041ff993f21e6ebd087"
+ }
+ Frame {
+ msec: 5520
+ hash: "090a76cf068a5041ff993f21e6ebd087"
+ }
+ Frame {
+ msec: 5536
+ hash: "30eb157c89ad0aeb17fd0012afb9246b"
+ }
+ Frame {
+ msec: 5552
+ hash: "6b317b59e1b0f5b17a6d7d96e745f576"
+ }
+ Frame {
+ msec: 5568
+ hash: "f9fc8467c6dbcb00d1f41a57b550193c"
+ }
+ Frame {
+ msec: 5584
+ hash: "f9fc8467c6dbcb00d1f41a57b550193c"
+ }
+ Frame {
+ msec: 5600
+ hash: "711274e9b6811b4662ac29d813574fb6"
+ }
+ Frame {
+ msec: 5616
+ hash: "744227adbdd31be2920a232ea0dbc85d"
+ }
+ Frame {
+ msec: 5632
+ hash: "744227adbdd31be2920a232ea0dbc85d"
+ }
+ Frame {
+ msec: 5648
+ hash: "d4b370ff8c3b66fc8a616dd9b944abd1"
+ }
+ Frame {
+ msec: 5664
+ hash: "d4b370ff8c3b66fc8a616dd9b944abd1"
+ }
+ Frame {
+ msec: 5680
+ hash: "674b07dc5b99bf2da93c40d42dc9023d"
+ }
+ Frame {
+ msec: 5696
+ hash: "674b07dc5b99bf2da93c40d42dc9023d"
+ }
+ Frame {
+ msec: 5712
+ hash: "a4ff6c6c43697808f9ad7387d152cef3"
+ }
+ Frame {
+ msec: 5728
+ hash: "a4ff6c6c43697808f9ad7387d152cef3"
+ }
+ Frame {
+ msec: 5744
+ hash: "b64810845a97bedf6fe11c043457c197"
+ }
+ Frame {
+ msec: 5760
+ image: "enforcerange.5.png"
+ }
+ Frame {
+ msec: 5776
+ hash: "87aaa82b96131fed8822e57e226162a0"
+ }
+ Frame {
+ msec: 5792
+ hash: "87aaa82b96131fed8822e57e226162a0"
+ }
+ Frame {
+ msec: 5808
+ hash: "87aaa82b96131fed8822e57e226162a0"
+ }
+ Frame {
+ msec: 5824
+ hash: "70b475e88060ead84d05f0ba1b47c139"
+ }
+ Frame {
+ msec: 5840
+ hash: "70b475e88060ead84d05f0ba1b47c139"
+ }
+ Frame {
+ msec: 5856
+ hash: "70b475e88060ead84d05f0ba1b47c139"
+ }
+ Frame {
+ msec: 5872
+ hash: "7eb75e8e83874d52448a7dbf6a0ad29c"
+ }
+ Frame {
+ msec: 5888
+ hash: "7eb75e8e83874d52448a7dbf6a0ad29c"
+ }
+ Frame {
+ msec: 5904
+ hash: "7eb75e8e83874d52448a7dbf6a0ad29c"
+ }
+ Frame {
+ msec: 5920
+ hash: "7eb75e8e83874d52448a7dbf6a0ad29c"
+ }
+ Frame {
+ msec: 5936
+ hash: "7eb75e8e83874d52448a7dbf6a0ad29c"
+ }
+ Frame {
+ msec: 5952
+ hash: "b061ee3784fbd4a287758ffd100a623e"
+ }
+ Frame {
+ msec: 5968
+ hash: "b061ee3784fbd4a287758ffd100a623e"
+ }
+ Frame {
+ msec: 5984
+ hash: "b061ee3784fbd4a287758ffd100a623e"
+ }
+ Frame {
+ msec: 6000
+ hash: "b061ee3784fbd4a287758ffd100a623e"
+ }
+ Frame {
+ msec: 6016
+ hash: "b061ee3784fbd4a287758ffd100a623e"
+ }
+ Frame {
+ msec: 6032
+ hash: "b061ee3784fbd4a287758ffd100a623e"
+ }
+ Frame {
+ msec: 6048
+ hash: "b061ee3784fbd4a287758ffd100a623e"
+ }
+ Frame {
+ msec: 6064
+ hash: "b061ee3784fbd4a287758ffd100a623e"
+ }
+ Frame {
+ msec: 6080
+ hash: "b061ee3784fbd4a287758ffd100a623e"
+ }
+ Frame {
+ msec: 6096
+ hash: "b061ee3784fbd4a287758ffd100a623e"
+ }
+ Frame {
+ msec: 6112
+ hash: "7eb75e8e83874d52448a7dbf6a0ad29c"
+ }
+ Frame {
+ msec: 6128
+ hash: "7eb75e8e83874d52448a7dbf6a0ad29c"
+ }
+ Frame {
+ msec: 6144
+ hash: "7eb75e8e83874d52448a7dbf6a0ad29c"
+ }
+ Frame {
+ msec: 6160
+ hash: "70b475e88060ead84d05f0ba1b47c139"
+ }
+ Frame {
+ msec: 6176
+ hash: "70b475e88060ead84d05f0ba1b47c139"
+ }
+ Frame {
+ msec: 6192
+ hash: "87aaa82b96131fed8822e57e226162a0"
+ }
+ Frame {
+ msec: 6208
+ hash: "87aaa82b96131fed8822e57e226162a0"
+ }
+ Frame {
+ msec: 6224
+ hash: "87aaa82b96131fed8822e57e226162a0"
+ }
+ Frame {
+ msec: 6240
+ hash: "b64810845a97bedf6fe11c043457c197"
+ }
+ Frame {
+ msec: 6256
+ hash: "b64810845a97bedf6fe11c043457c197"
+ }
+ Frame {
+ msec: 6272
+ hash: "b64810845a97bedf6fe11c043457c197"
+ }
+ Frame {
+ msec: 6288
+ hash: "a4ff6c6c43697808f9ad7387d152cef3"
+ }
+ Frame {
+ msec: 6304
+ hash: "a4ff6c6c43697808f9ad7387d152cef3"
+ }
+ Frame {
+ msec: 6320
+ hash: "a4ff6c6c43697808f9ad7387d152cef3"
+ }
+ Frame {
+ msec: 6336
+ hash: "a4ff6c6c43697808f9ad7387d152cef3"
+ }
+ Frame {
+ msec: 6352
+ hash: "a4ff6c6c43697808f9ad7387d152cef3"
+ }
+ Frame {
+ msec: 6368
+ hash: "a4ff6c6c43697808f9ad7387d152cef3"
+ }
+ Frame {
+ msec: 6384
+ hash: "a4ff6c6c43697808f9ad7387d152cef3"
+ }
+ Frame {
+ msec: 6400
+ hash: "a4ff6c6c43697808f9ad7387d152cef3"
+ }
+ Frame {
+ msec: 6416
+ hash: "a4ff6c6c43697808f9ad7387d152cef3"
+ }
+ Frame {
+ msec: 6432
+ hash: "a4ff6c6c43697808f9ad7387d152cef3"
+ }
+ Frame {
+ msec: 6448
+ hash: "a4ff6c6c43697808f9ad7387d152cef3"
+ }
+ Frame {
+ msec: 6464
+ hash: "a4ff6c6c43697808f9ad7387d152cef3"
+ }
+ Frame {
+ msec: 6480
+ hash: "a4ff6c6c43697808f9ad7387d152cef3"
+ }
+ Frame {
+ msec: 6496
+ hash: "a4ff6c6c43697808f9ad7387d152cef3"
+ }
+ Frame {
+ msec: 6512
+ hash: "a4ff6c6c43697808f9ad7387d152cef3"
+ }
+ Frame {
+ msec: 6528
+ hash: "a4ff6c6c43697808f9ad7387d152cef3"
+ }
+ Frame {
+ msec: 6544
+ hash: "a4ff6c6c43697808f9ad7387d152cef3"
+ }
+ Frame {
+ msec: 6560
+ hash: "a4ff6c6c43697808f9ad7387d152cef3"
+ }
+ Frame {
+ msec: 6576
+ hash: "a4ff6c6c43697808f9ad7387d152cef3"
+ }
+ Frame {
+ msec: 6592
+ hash: "a4ff6c6c43697808f9ad7387d152cef3"
+ }
+ Frame {
+ msec: 6608
+ hash: "a4ff6c6c43697808f9ad7387d152cef3"
+ }
+ Frame {
+ msec: 6624
+ hash: "a4ff6c6c43697808f9ad7387d152cef3"
+ }
+ Frame {
+ msec: 6640
+ hash: "a4ff6c6c43697808f9ad7387d152cef3"
+ }
+ Frame {
+ msec: 6656
+ hash: "a4ff6c6c43697808f9ad7387d152cef3"
+ }
+}
diff --git a/tests/auto/declarative/qmlvisual/ListView/data/itemlist.0.png b/tests/auto/declarative/qmlvisual/ListView/data/itemlist.0.png
index 75d2089..6a589c6 100644
--- a/tests/auto/declarative/qmlvisual/ListView/data/itemlist.0.png
+++ b/tests/auto/declarative/qmlvisual/ListView/data/itemlist.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data/itemlist.1.png b/tests/auto/declarative/qmlvisual/ListView/data/itemlist.1.png
index 578b7d1..a8957d6 100644
--- a/tests/auto/declarative/qmlvisual/ListView/data/itemlist.1.png
+++ b/tests/auto/declarative/qmlvisual/ListView/data/itemlist.1.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data/itemlist.2.png b/tests/auto/declarative/qmlvisual/ListView/data/itemlist.2.png
index def378f..fe2d28b 100644
--- a/tests/auto/declarative/qmlvisual/ListView/data/itemlist.2.png
+++ b/tests/auto/declarative/qmlvisual/ListView/data/itemlist.2.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data/itemlist.3.png b/tests/auto/declarative/qmlvisual/ListView/data/itemlist.3.png
index e23b903..0f20b07 100644
--- a/tests/auto/declarative/qmlvisual/ListView/data/itemlist.3.png
+++ b/tests/auto/declarative/qmlvisual/ListView/data/itemlist.3.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data/itemlist.4.png b/tests/auto/declarative/qmlvisual/ListView/data/itemlist.4.png
index def378f..fe2d28b 100644
--- a/tests/auto/declarative/qmlvisual/ListView/data/itemlist.4.png
+++ b/tests/auto/declarative/qmlvisual/ListView/data/itemlist.4.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data/itemlist.5.png b/tests/auto/declarative/qmlvisual/ListView/data/itemlist.5.png
index b81e713..0ab58c5 100644
--- a/tests/auto/declarative/qmlvisual/ListView/data/itemlist.5.png
+++ b/tests/auto/declarative/qmlvisual/ListView/data/itemlist.5.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data/itemlist.6.png b/tests/auto/declarative/qmlvisual/ListView/data/itemlist.6.png
index 75d2089..6a589c6 100644
--- a/tests/auto/declarative/qmlvisual/ListView/data/itemlist.6.png
+++ b/tests/auto/declarative/qmlvisual/ListView/data/itemlist.6.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data/itemlist.qml b/tests/auto/declarative/qmlvisual/ListView/data/itemlist.qml
index b23594b..6d09bc0 100644
--- a/tests/auto/declarative/qmlvisual/ListView/data/itemlist.qml
+++ b/tests/auto/declarative/qmlvisual/ListView/data/itemlist.qml
@@ -982,67 +982,67 @@ VisualTest {
}
Frame {
msec: 3088
- hash: "4b5368f0d86bffeb6bd31b58aec88650"
+ hash: "fd8e51cca3432f6edcf949857737095f"
}
Frame {
msec: 3104
- hash: "3f4c24f7ac89da982af22032309637fb"
+ hash: "aa5d4e65932b3ec2f5549079dfc7718d"
}
Frame {
msec: 3120
- hash: "8cacde33b70fc62b9b0c753091168b97"
+ hash: "f811f3c6b022730dd68ebd7b1659ea40"
}
Frame {
msec: 3136
- hash: "7b8c1bb2a3ab9ba23ac17dc5422adac8"
+ hash: "e51a2e41972cfc3df46a7d4375024d80"
}
Frame {
msec: 3152
- hash: "5aa34dccdd406b7e93dfdf756bbca5f0"
+ hash: "275f3594a0e2cc4b6717f9f336e7e1b6"
}
Frame {
msec: 3168
- hash: "4865c30dc45fbf5ca82047b77eca0912"
+ hash: "9229054bb70662b12a4f7e45ac5b7a90"
}
Frame {
msec: 3184
- hash: "1dcecc3a899b060a1469ef91e0d21765"
+ hash: "89ff346eca0b71cad3b04a2cb8064fb0"
}
Frame {
msec: 3200
- hash: "31422699bdbbbf827f7bb1f1ef78823e"
+ hash: "94e6ecb87a7efca6344d6d63a1e3829f"
}
Frame {
msec: 3216
- hash: "5859920a625ef94a644fda85d14e92fb"
+ hash: "bc5eb6b0eeae316ddd0b308da2cc32e2"
}
Frame {
msec: 3232
- hash: "37f1f7aaeaed28807f51fd9ad8c414ac"
+ hash: "240081760f0cf2f02be4d6d2600d2bbc"
}
Frame {
msec: 3248
- hash: "14592a6c86f211c20abab5cf34a406b4"
+ hash: "69b335aeb81fc2ae6173f2ec5cdc4c55"
}
Frame {
msec: 3264
- hash: "77c18ac7dfff2a4e516915e3e3df0717"
+ hash: "10d481e57cc8cd694500d9ed6ae1f8bb"
}
Frame {
msec: 3280
- hash: "f619097356671f6eb54d3b1c481e709d"
+ hash: "6b21f71d0bedef4bbcb445a13f61e7a3"
}
Frame {
msec: 3296
- hash: "7f19ea52e9e41a3b1bd90bb2a144d305"
+ hash: "aa94ebdbb4b8423aff28c95daff0baf5"
}
Frame {
msec: 3312
- hash: "17deb6b26fc9d27d5194995c102da4ac"
+ hash: "5f6708f615654c459f5749676fc09016"
}
Frame {
msec: 3328
- hash: "29c52328b54f02cc9042f676d710b9b2"
+ hash: "8ef246d322446e7f0848b99495f89e2b"
}
Frame {
msec: 3344
@@ -1050,11 +1050,11 @@ VisualTest {
}
Frame {
msec: 3360
- hash: "40204fdb7a84b86f1380224908092354"
+ hash: "3b2e2d957585fb44a7165186a146892c"
}
Frame {
msec: 3376
- hash: "de7f3c83f37cc89c87009626c72e7642"
+ hash: "124da0099a7dd6fbf6dfd0ecfb09638c"
}
Frame {
msec: 3392
@@ -1074,7 +1074,7 @@ VisualTest {
}
Frame {
msec: 3456
- hash: "b554512bac0766063870c5b3acb1d24f"
+ hash: "bb5ea2a238920a8486263bc7450edfb4"
}
Frame {
msec: 3472
@@ -1082,7 +1082,7 @@ VisualTest {
}
Frame {
msec: 3488
- hash: "e4dacafba5ab5f8db53f08cef458cf42"
+ hash: "b554512bac0766063870c5b3acb1d24f"
}
Frame {
msec: 3504
@@ -1094,23 +1094,23 @@ VisualTest {
}
Frame {
msec: 3536
- hash: "40204fdb7a84b86f1380224908092354"
+ hash: "124da0099a7dd6fbf6dfd0ecfb09638c"
}
Frame {
msec: 3552
- hash: "3b2e2d957585fb44a7165186a146892c"
+ hash: "40204fdb7a84b86f1380224908092354"
}
Frame {
msec: 3568
- hash: "c3b219bdd7710427d134402a8d3e6429"
+ hash: "ff93c3290b7d9a9743cc11d41a112a0a"
}
Frame {
msec: 3584
- hash: "8d424f37bb6af879129e57661d30a162"
+ hash: "c3b219bdd7710427d134402a8d3e6429"
}
Frame {
msec: 3600
- hash: "29c52328b54f02cc9042f676d710b9b2"
+ hash: "56e2f6b2ac103caf7ada3b56c19622c2"
}
Frame {
msec: 3616
@@ -1118,15 +1118,15 @@ VisualTest {
}
Frame {
msec: 3632
- hash: "17deb6b26fc9d27d5194995c102da4ac"
+ hash: "8eb6d69d9833d0fbf87f951f489b71fe"
}
Frame {
msec: 3648
- hash: "5f6708f615654c459f5749676fc09016"
+ hash: "17deb6b26fc9d27d5194995c102da4ac"
}
Frame {
msec: 3664
- hash: "1734205ea5e7539b47d80c5a93ec74aa"
+ hash: "5f6708f615654c459f5749676fc09016"
}
Frame {
msec: 3680
@@ -1134,7 +1134,7 @@ VisualTest {
}
Frame {
msec: 3696
- hash: "88143ff6c278a5433b314b551b7b8b1d"
+ hash: "1734205ea5e7539b47d80c5a93ec74aa"
}
Frame {
msec: 3712
@@ -1722,7 +1722,7 @@ VisualTest {
}
Frame {
msec: 5408
- hash: "cf2acc805e9707327b01eb979f2b67a3"
+ hash: "06ce7db518da042e04dd3f79b7220974"
}
Frame {
msec: 5424
@@ -1730,55 +1730,55 @@ VisualTest {
}
Frame {
msec: 5440
- hash: "a978890b419f9503e53d4d3f4f9b8c9b"
+ hash: "53e9d5a0098f2e91bbea45360b876607"
}
Frame {
msec: 5456
- hash: "73339b67e49210b4760b8e06fa4067b7"
+ hash: "22a6c7f3dcb5a36592909783b2466c8d"
}
Frame {
msec: 5472
- hash: "d09a245890e813c248050132a76465f3"
+ hash: "9d8da9199efebb95f56e5d4ebc9a585e"
}
Frame {
msec: 5488
- hash: "35b874b3b4d7d1e59852233fce192b0b"
+ hash: "c553400402f233a6246be4e544b433ae"
}
Frame {
msec: 5504
- hash: "4f80a0da1941e9c208036f22df93bed8"
+ hash: "c2e41a54c03340832db93f6f88393f00"
}
Frame {
msec: 5520
- hash: "7bbdc4ce95bc12e505f24cb8b137a0f1"
+ hash: "3622a619a99c939e96636a86c4428ba3"
}
Frame {
msec: 5536
- hash: "e68b5fb604a45d4e7ee21f6e06460b47"
+ hash: "e65d5e6c756e750e6d98096fe211465c"
}
Frame {
msec: 5552
- hash: "903059d468bed1ac8395e38a19c9dd38"
+ hash: "cabd6d30b1f4e42b38b73803aae6d5be"
}
Frame {
msec: 5568
- hash: "d7430ebf26f2de6f648471c19455cf0f"
+ hash: "68d443f16c16821ffc9ca68b17c76034"
}
Frame {
msec: 5584
- hash: "d5268cd58c222451d48038e715e83802"
+ hash: "a68b1bc6c2963ee92c3a45f500667b3b"
}
Frame {
msec: 5600
- hash: "99b4534b0bf58dc8e28c1118a5baec33"
+ hash: "805319ac7ca842feb3649e92f8b5b72f"
}
Frame {
msec: 5616
- hash: "ade5beb259b5277c333ca806fc9bdbec"
+ hash: "fd8d3f5688b1806998c6087e18c6c730"
}
Frame {
msec: 5632
- hash: "f34d2248999f5f51210064315d631f60"
+ hash: "b135c8c9975f4d45d2054cf31d0b1fe1"
}
Frame {
msec: 5648
@@ -1786,7 +1786,7 @@ VisualTest {
}
Frame {
msec: 5664
- hash: "65af7a4a4aea5a983ea3fb9324e74256"
+ hash: "aa32e4c20c6a43c4ef7991a9418e57fe"
}
Frame {
msec: 5680
@@ -1794,7 +1794,7 @@ VisualTest {
}
Frame {
msec: 5696
- hash: "2311ce1a83a43619ab7ce537a2b948e1"
+ hash: "127871a98123b7bd44f4c38f27cbc836"
}
Frame {
msec: 5712
@@ -1826,15 +1826,15 @@ VisualTest {
}
Frame {
msec: 5824
- hash: "127871a98123b7bd44f4c38f27cbc836"
+ hash: "2311ce1a83a43619ab7ce537a2b948e1"
}
Frame {
msec: 5840
- hash: "b8db9180b4ad15fdbd25a4e974512f92"
+ hash: "127871a98123b7bd44f4c38f27cbc836"
}
Frame {
msec: 5856
- hash: "0974df6a7277bba11a3d3f400c68f4f1"
+ hash: "b8db9180b4ad15fdbd25a4e974512f92"
}
Frame {
msec: 5872
@@ -1842,11 +1842,11 @@ VisualTest {
}
Frame {
msec: 5888
- hash: "b3e92eb4cfe548b92ac526066dfc7d23"
+ hash: "aa32e4c20c6a43c4ef7991a9418e57fe"
}
Frame {
msec: 5904
- hash: "40382f644935dc4e99353fa29c3e0b21"
+ hash: "b3e92eb4cfe548b92ac526066dfc7d23"
}
Frame {
msec: 5920
@@ -1862,7 +1862,7 @@ VisualTest {
}
Frame {
msec: 5968
- hash: "b135c8c9975f4d45d2054cf31d0b1fe1"
+ hash: "f34d2248999f5f51210064315d631f60"
}
Frame {
msec: 5984
@@ -1870,7 +1870,7 @@ VisualTest {
}
Frame {
msec: 6000
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ hash: "b135c8c9975f4d45d2054cf31d0b1fe1"
}
Frame {
msec: 6016
diff --git a/tests/auto/declarative/qmlvisual/ListView/data/listview.0.png b/tests/auto/declarative/qmlvisual/ListView/data/listview.0.png
index 78c1c27..c7fa695 100644
--- a/tests/auto/declarative/qmlvisual/ListView/data/listview.0.png
+++ b/tests/auto/declarative/qmlvisual/ListView/data/listview.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data/listview.1.png b/tests/auto/declarative/qmlvisual/ListView/data/listview.1.png
index ecd1e01..b6c5e19 100644
--- a/tests/auto/declarative/qmlvisual/ListView/data/listview.1.png
+++ b/tests/auto/declarative/qmlvisual/ListView/data/listview.1.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data/listview.2.png b/tests/auto/declarative/qmlvisual/ListView/data/listview.2.png
index ba1733f..711c47a 100644
--- a/tests/auto/declarative/qmlvisual/ListView/data/listview.2.png
+++ b/tests/auto/declarative/qmlvisual/ListView/data/listview.2.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data/listview.3.png b/tests/auto/declarative/qmlvisual/ListView/data/listview.3.png
index 7a393d1..e56fae0 100644
--- a/tests/auto/declarative/qmlvisual/ListView/data/listview.3.png
+++ b/tests/auto/declarative/qmlvisual/ListView/data/listview.3.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data/listview.4.png b/tests/auto/declarative/qmlvisual/ListView/data/listview.4.png
index cb73ca9..0030842 100644
--- a/tests/auto/declarative/qmlvisual/ListView/data/listview.4.png
+++ b/tests/auto/declarative/qmlvisual/ListView/data/listview.4.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data/listview.5.png b/tests/auto/declarative/qmlvisual/ListView/data/listview.5.png
index cbbe6d7..2ec8177 100644
--- a/tests/auto/declarative/qmlvisual/ListView/data/listview.5.png
+++ b/tests/auto/declarative/qmlvisual/ListView/data/listview.5.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data/listview.qml b/tests/auto/declarative/qmlvisual/ListView/data/listview.qml
index 1db722f..45f96e1 100644
--- a/tests/auto/declarative/qmlvisual/ListView/data/listview.qml
+++ b/tests/auto/declarative/qmlvisual/ListView/data/listview.qml
@@ -6,107 +6,107 @@ VisualTest {
}
Frame {
msec: 16
- hash: "95c48087b681f0bcb09b2d7aad1a0299"
+ hash: "3b88645092be28037fca4a6034f5b2f7"
}
Frame {
msec: 32
- hash: "95c48087b681f0bcb09b2d7aad1a0299"
+ hash: "3b88645092be28037fca4a6034f5b2f7"
}
Frame {
msec: 48
- hash: "95c48087b681f0bcb09b2d7aad1a0299"
+ hash: "3b88645092be28037fca4a6034f5b2f7"
}
Frame {
msec: 64
- hash: "95c48087b681f0bcb09b2d7aad1a0299"
+ hash: "3b88645092be28037fca4a6034f5b2f7"
}
Frame {
msec: 80
- hash: "95c48087b681f0bcb09b2d7aad1a0299"
+ hash: "3b88645092be28037fca4a6034f5b2f7"
}
Frame {
msec: 96
- hash: "95c48087b681f0bcb09b2d7aad1a0299"
+ hash: "3b88645092be28037fca4a6034f5b2f7"
}
Frame {
msec: 112
- hash: "95c48087b681f0bcb09b2d7aad1a0299"
+ hash: "3b88645092be28037fca4a6034f5b2f7"
}
Frame {
msec: 128
- hash: "95c48087b681f0bcb09b2d7aad1a0299"
+ hash: "3b88645092be28037fca4a6034f5b2f7"
}
Frame {
msec: 144
- hash: "95c48087b681f0bcb09b2d7aad1a0299"
+ hash: "3b88645092be28037fca4a6034f5b2f7"
}
Frame {
msec: 160
- hash: "95c48087b681f0bcb09b2d7aad1a0299"
+ hash: "3b88645092be28037fca4a6034f5b2f7"
}
Frame {
msec: 176
- hash: "95c48087b681f0bcb09b2d7aad1a0299"
+ hash: "3b88645092be28037fca4a6034f5b2f7"
}
Frame {
msec: 192
- hash: "95c48087b681f0bcb09b2d7aad1a0299"
+ hash: "3b88645092be28037fca4a6034f5b2f7"
}
Frame {
msec: 208
- hash: "95c48087b681f0bcb09b2d7aad1a0299"
+ hash: "3b88645092be28037fca4a6034f5b2f7"
}
Frame {
msec: 224
- hash: "95c48087b681f0bcb09b2d7aad1a0299"
+ hash: "3b88645092be28037fca4a6034f5b2f7"
}
Frame {
msec: 240
- hash: "95c48087b681f0bcb09b2d7aad1a0299"
+ hash: "3b88645092be28037fca4a6034f5b2f7"
}
Frame {
msec: 256
- hash: "95c48087b681f0bcb09b2d7aad1a0299"
+ hash: "3b88645092be28037fca4a6034f5b2f7"
}
Frame {
msec: 272
- hash: "95c48087b681f0bcb09b2d7aad1a0299"
+ hash: "3b88645092be28037fca4a6034f5b2f7"
}
Frame {
msec: 288
- hash: "95c48087b681f0bcb09b2d7aad1a0299"
+ hash: "3b88645092be28037fca4a6034f5b2f7"
}
Frame {
msec: 304
- hash: "95c48087b681f0bcb09b2d7aad1a0299"
+ hash: "3b88645092be28037fca4a6034f5b2f7"
}
Frame {
msec: 320
- hash: "95c48087b681f0bcb09b2d7aad1a0299"
+ hash: "3b88645092be28037fca4a6034f5b2f7"
}
Frame {
msec: 336
- hash: "95c48087b681f0bcb09b2d7aad1a0299"
+ hash: "3b88645092be28037fca4a6034f5b2f7"
}
Frame {
msec: 352
- hash: "95c48087b681f0bcb09b2d7aad1a0299"
+ hash: "3b88645092be28037fca4a6034f5b2f7"
}
Frame {
msec: 368
- hash: "95c48087b681f0bcb09b2d7aad1a0299"
+ hash: "3b88645092be28037fca4a6034f5b2f7"
}
Frame {
msec: 384
- hash: "95c48087b681f0bcb09b2d7aad1a0299"
+ hash: "3b88645092be28037fca4a6034f5b2f7"
}
Frame {
msec: 400
- hash: "95c48087b681f0bcb09b2d7aad1a0299"
+ hash: "3b88645092be28037fca4a6034f5b2f7"
}
Frame {
msec: 416
- hash: "95c48087b681f0bcb09b2d7aad1a0299"
+ hash: "3b88645092be28037fca4a6034f5b2f7"
}
Key {
type: 6
@@ -122,15 +122,15 @@ VisualTest {
}
Frame {
msec: 448
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "435ac0668ad4d0e196eb040d385053cb"
}
Frame {
msec: 464
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "e9532fe1acc1c27a2119e6dde3e01637"
}
Frame {
msec: 480
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "9c757feaf5a8d1e88c659fca97e3b7b2"
}
Key {
type: 7
@@ -142,35 +142,35 @@ VisualTest {
}
Frame {
msec: 496
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "ccc7785a45a41615db01580835a4638e"
}
Frame {
msec: 512
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "11ad92022bcd5d3fbd28ffb9f51c69eb"
}
Frame {
msec: 528
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "a8a94e1f95216864c368b8c3d0ae682b"
}
Frame {
msec: 544
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "d83e213d35e7fcff2580b4e197547f24"
}
Frame {
msec: 560
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "9e5a57fabdc443e395cacbaf6e0c9bef"
}
Frame {
msec: 576
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "9e5a57fabdc443e395cacbaf6e0c9bef"
}
Frame {
msec: 592
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "9e5a57fabdc443e395cacbaf6e0c9bef"
}
Frame {
msec: 608
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "9e5a57fabdc443e395cacbaf6e0c9bef"
}
Key {
type: 6
@@ -182,27 +182,27 @@ VisualTest {
}
Frame {
msec: 624
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "9e5a57fabdc443e395cacbaf6e0c9bef"
}
Frame {
msec: 640
- hash: "435ac0668ad4d0e196eb040d385053cb"
+ hash: "0e9c577fa86d9b3734da0d50040624e0"
}
Frame {
msec: 656
- hash: "e9532fe1acc1c27a2119e6dde3e01637"
+ hash: "834cf83f0f8d613191cac775b5737664"
}
Frame {
msec: 672
- hash: "9c757feaf5a8d1e88c659fca97e3b7b2"
+ hash: "495ea7650b2ae45f9afd7f9f6ecdd793"
}
Frame {
msec: 688
- hash: "ccc7785a45a41615db01580835a4638e"
+ hash: "55c761ccee6543bb3b9564bb813df58e"
}
Frame {
msec: 704
- hash: "11ad92022bcd5d3fbd28ffb9f51c69eb"
+ hash: "e29e5f86cb3b1fb5ec77fde696024812"
}
Key {
type: 7
@@ -214,19 +214,19 @@ VisualTest {
}
Frame {
msec: 720
- hash: "a8a94e1f95216864c368b8c3d0ae682b"
+ hash: "f24b7d5a8f5ab03460505d6203269d1b"
}
Frame {
msec: 736
- hash: "d83e213d35e7fcff2580b4e197547f24"
+ hash: "893473965efe9e0540b197cbaa3f765d"
}
Frame {
msec: 752
- hash: "9e5a57fabdc443e395cacbaf6e0c9bef"
+ hash: "a541b7be2f370f948048b2101b037ab7"
}
Frame {
msec: 768
- hash: "9e5a57fabdc443e395cacbaf6e0c9bef"
+ hash: "a541b7be2f370f948048b2101b037ab7"
}
Key {
type: 6
@@ -238,19 +238,19 @@ VisualTest {
}
Frame {
msec: 784
- hash: "0e9c577fa86d9b3734da0d50040624e0"
+ hash: "da065f1e72883a45241630b96ee5b1f8"
}
Frame {
msec: 800
- hash: "834cf83f0f8d613191cac775b5737664"
+ hash: "e97f78604c0c6d468c8dd225642e2ebd"
}
Frame {
msec: 816
- hash: "495ea7650b2ae45f9afd7f9f6ecdd793"
+ hash: "7b9d4b14eedfa4ff10dd7e3747c4a7f5"
}
Frame {
msec: 832
- hash: "55c761ccee6543bb3b9564bb813df58e"
+ hash: "6d55ba6287c720614854d36bb681a9f3"
}
Key {
type: 7
@@ -262,27 +262,27 @@ VisualTest {
}
Frame {
msec: 848
- hash: "e29e5f86cb3b1fb5ec77fde696024812"
+ hash: "3e7a44811f59bfb81de2f4f884a7af17"
}
Frame {
msec: 864
- hash: "f24b7d5a8f5ab03460505d6203269d1b"
+ hash: "101113a7723b9d09275f66152b82142f"
}
Frame {
msec: 880
- hash: "893473965efe9e0540b197cbaa3f765d"
+ hash: "0044e068522f912630868476f8bf49f8"
}
Frame {
msec: 896
- hash: "a541b7be2f370f948048b2101b037ab7"
+ hash: "92065f9f170ee09abf67f0d0c7a1b6ba"
}
Frame {
msec: 912
- hash: "a541b7be2f370f948048b2101b037ab7"
+ hash: "92065f9f170ee09abf67f0d0c7a1b6ba"
}
Frame {
msec: 928
- hash: "a541b7be2f370f948048b2101b037ab7"
+ hash: "92065f9f170ee09abf67f0d0c7a1b6ba"
}
Key {
type: 6
@@ -294,7 +294,7 @@ VisualTest {
}
Frame {
msec: 944
- hash: "a541b7be2f370f948048b2101b037ab7"
+ hash: "92065f9f170ee09abf67f0d0c7a1b6ba"
}
Frame {
msec: 960
@@ -302,7 +302,7 @@ VisualTest {
}
Frame {
msec: 976
- hash: "e97f78604c0c6d468c8dd225642e2ebd"
+ hash: "e15814643bad6a71cb8c318ee5fd684a"
}
Key {
type: 7
@@ -314,23 +314,23 @@ VisualTest {
}
Frame {
msec: 992
- hash: "7b9d4b14eedfa4ff10dd7e3747c4a7f5"
+ hash: "9b07b6861a97d0871ed89369ff7449da"
}
Frame {
msec: 1008
- hash: "6d55ba6287c720614854d36bb681a9f3"
+ hash: "7d95daf35c1823ea7187162b62010c57"
}
Frame {
msec: 1024
- hash: "3e7a44811f59bfb81de2f4f884a7af17"
+ hash: "cc1e70fd1235d50ca291580bef1d6fc4"
}
Frame {
msec: 1040
- hash: "101113a7723b9d09275f66152b82142f"
+ hash: "c8250f4cf69642e78523412b7b75501c"
}
Frame {
msec: 1056
- hash: "0044e068522f912630868476f8bf49f8"
+ hash: "c57e421c803e8bfa1a85409cbb858829"
}
Key {
type: 6
@@ -342,19 +342,19 @@ VisualTest {
}
Frame {
msec: 1072
- hash: "4a50079d15b51758bf39b6d3fc51f337"
+ hash: "19b429a90d9877e62a7dee53ebf01fb2"
}
Frame {
msec: 1088
- hash: "df659ebf6a5926943de92d6838127b9c"
+ hash: "7c810f174bed3826016272515df2d525"
}
Frame {
msec: 1104
- hash: "0aa422c4af139023817465090f42f264"
+ hash: "9034cf480bda0d8b55aa6c43fc96b23d"
}
Frame {
msec: 1120
- hash: "fb598a01e5cd9e3655f86a47ff7bda0d"
+ hash: "f62697a1f4e4df2869c14462a0d514fd"
}
Key {
type: 7
@@ -366,19 +366,19 @@ VisualTest {
}
Frame {
msec: 1136
- hash: "83a63dfcdbb27035d3e5208b066a2e1e"
+ hash: "c878f53b338d1ce332973193b0fa4b86"
}
Frame {
msec: 1152
- hash: "c8250f4cf69642e78523412b7b75501c"
+ hash: "5d26f27061b319c391961dc30d985593"
}
Frame {
msec: 1168
- hash: "c57e421c803e8bfa1a85409cbb858829"
+ hash: "e038ae877e8dddd3d99bf97475f59b3d"
}
Frame {
msec: 1184
- hash: "f7611692216c0519b9188924e8a6b92e"
+ hash: "f44adc5e46d320c62095e1285ca8848b"
}
Key {
type: 6
@@ -390,15 +390,15 @@ VisualTest {
}
Frame {
msec: 1200
- hash: "0f9495c9f9f91c409f868959854824ed"
+ hash: "17f6b13e0556ac07dc527a9013a307a1"
}
Frame {
msec: 1216
- hash: "d4a752aa1c4112a3b60f40468932945d"
+ hash: "70a1cc3b6dd3be4e30bb6763344fb980"
}
Frame {
msec: 1232
- hash: "fbe2d7c160132f312911aabe4cad8bf5"
+ hash: "097c37d2243a27b8e800b5d4ec94b2e3"
}
Key {
type: 7
@@ -410,27 +410,27 @@ VisualTest {
}
Frame {
msec: 1248
- hash: "2d3c7dc0d0efac613a32860968d166ac"
+ hash: "15839227c002b1c71eb516f6653a7531"
}
Frame {
msec: 1264
- hash: "fa0891d8c22dd26c1cb27d86864a8225"
+ hash: "f4a8103ef9010c651368d325fe9eee98"
}
Frame {
msec: 1280
- hash: "5d26f27061b319c391961dc30d985593"
+ hash: "d158ec1c83719c58c1d0a2e4cc90998f"
}
Frame {
msec: 1296
- hash: "e038ae877e8dddd3d99bf97475f59b3d"
+ hash: "6f66a44f5dc3fe150db2291b8cbc7327"
}
Frame {
msec: 1312
- hash: "f44adc5e46d320c62095e1285ca8848b"
+ hash: "8a016eac5befb215a157f7fe5bc743de"
}
Frame {
msec: 1328
- hash: "f44adc5e46d320c62095e1285ca8848b"
+ hash: "8a016eac5befb215a157f7fe5bc743de"
}
Key {
type: 6
@@ -442,15 +442,15 @@ VisualTest {
}
Frame {
msec: 1344
- hash: "17f6b13e0556ac07dc527a9013a307a1"
+ hash: "807129a4c578b1a5f0d3d84686eb0553"
}
Frame {
msec: 1360
- hash: "70a1cc3b6dd3be4e30bb6763344fb980"
+ hash: "f9f2da990518048f0b050cc193567a20"
}
Frame {
msec: 1376
- hash: "097c37d2243a27b8e800b5d4ec94b2e3"
+ hash: "762de7b1f4e56df6d7a245a23446884b"
}
Key {
type: 7
@@ -462,23 +462,23 @@ VisualTest {
}
Frame {
msec: 1392
- hash: "15839227c002b1c71eb516f6653a7531"
+ hash: "84ba7354badc3dca92974933c3610010"
}
Frame {
msec: 1408
- hash: "f4a8103ef9010c651368d325fe9eee98"
+ hash: "36c3018870d74cff638d00acd03a0cf0"
}
Frame {
msec: 1424
- hash: "d158ec1c83719c58c1d0a2e4cc90998f"
+ hash: "82b756a14eb0e802cd3e2d2d2a07f28e"
}
Frame {
msec: 1440
- hash: "6f66a44f5dc3fe150db2291b8cbc7327"
+ hash: "74af1c12613130dc53533fe1178d5534"
}
Frame {
msec: 1456
- hash: "8a016eac5befb215a157f7fe5bc743de"
+ hash: "c32818b0ba24f11295580d1ccffffdc0"
}
Key {
type: 6
@@ -490,19 +490,19 @@ VisualTest {
}
Frame {
msec: 1472
- hash: "807129a4c578b1a5f0d3d84686eb0553"
+ hash: "b858be109fac6852234bf1db161e515b"
}
Frame {
msec: 1488
- hash: "f9f2da990518048f0b050cc193567a20"
+ hash: "9b3f8cffd3e79241d8a3b1f7d80790db"
}
Frame {
msec: 1504
- hash: "762de7b1f4e56df6d7a245a23446884b"
+ hash: "840dc72aabc4a9b28bae641354676324"
}
Frame {
msec: 1520
- hash: "84ba7354badc3dca92974933c3610010"
+ hash: "c60bfd5cc8b26a841035db29baba5dab"
}
Key {
type: 7
@@ -514,23 +514,23 @@ VisualTest {
}
Frame {
msec: 1536
- hash: "36c3018870d74cff638d00acd03a0cf0"
+ hash: "88d80dc8b0d968aa718ff464e507f53b"
}
Frame {
msec: 1552
- hash: "82b756a14eb0e802cd3e2d2d2a07f28e"
+ hash: "f7ffc82d3448c415b4997401fb61b96b"
}
Frame {
msec: 1568
- hash: "74af1c12613130dc53533fe1178d5534"
+ hash: "df8e9a09752fe2b2eff9184ba8e88ef1"
}
Frame {
msec: 1584
- hash: "c32818b0ba24f11295580d1ccffffdc0"
+ hash: "97330e949a609f5f33832dd17e0c3716"
}
Frame {
msec: 1600
- hash: "c32818b0ba24f11295580d1ccffffdc0"
+ hash: "97330e949a609f5f33832dd17e0c3716"
}
Key {
type: 6
@@ -542,15 +542,15 @@ VisualTest {
}
Frame {
msec: 1616
- hash: "b858be109fac6852234bf1db161e515b"
+ hash: "97330e949a609f5f33832dd17e0c3716"
}
Frame {
msec: 1632
- hash: "9b3f8cffd3e79241d8a3b1f7d80790db"
+ hash: "97330e949a609f5f33832dd17e0c3716"
}
Frame {
msec: 1648
- hash: "840dc72aabc4a9b28bae641354676324"
+ hash: "97330e949a609f5f33832dd17e0c3716"
}
Key {
type: 7
@@ -562,19 +562,19 @@ VisualTest {
}
Frame {
msec: 1664
- hash: "c60bfd5cc8b26a841035db29baba5dab"
+ hash: "97330e949a609f5f33832dd17e0c3716"
}
Frame {
msec: 1680
- hash: "88d80dc8b0d968aa718ff464e507f53b"
+ hash: "97330e949a609f5f33832dd17e0c3716"
}
Frame {
msec: 1696
- hash: "f7ffc82d3448c415b4997401fb61b96b"
+ hash: "97330e949a609f5f33832dd17e0c3716"
}
Frame {
msec: 1712
- hash: "df8e9a09752fe2b2eff9184ba8e88ef1"
+ hash: "97330e949a609f5f33832dd17e0c3716"
}
Frame {
msec: 1728
@@ -966,71 +966,71 @@ VisualTest {
}
Frame {
msec: 2608
- hash: "85c0127315a489cfcf14ec7e16e43f4c"
+ hash: "68f3366932fed9156bf68dce6660b2a8"
}
Frame {
msec: 2624
- hash: "65f1be6c38fa9e024671bfe612c585b4"
+ hash: "9f4be0b58c46035a11c5b80ec60618d5"
}
Frame {
msec: 2640
- hash: "74b7b60a048d37c38f179d071e9d9730"
+ hash: "6d38a4eaa2a41c57599cca381957ec4c"
}
Frame {
msec: 2656
- hash: "13c96d066af31d75647b0be21f1ae68d"
+ hash: "1061db26c9080067bf121eb1d164a3f3"
}
Frame {
msec: 2672
- hash: "a1f880a95596f6c82385e51a4853327e"
+ hash: "c78d271711dc8f13fb48b41871249141"
}
Frame {
msec: 2688
- hash: "8596123a6b0f234d90869d823448ff8e"
+ hash: "c5825611f6c429fddd8c20495507ea5f"
}
Frame {
msec: 2704
- hash: "1ca65b63eea4034e3889f53c86ac95b7"
+ hash: "9888b608bcf80496a3fe8848be4e3629"
}
Frame {
msec: 2720
- hash: "b847b515d89ad0394ef0fd4954158940"
+ hash: "9995d6ba039045d94903d5095b018ca8"
}
Frame {
msec: 2736
- hash: "f73f7747115fdda2f0a13734a0dc9446"
+ hash: "f8ea705b4710b3ffb11c2fe08ccccda2"
}
Frame {
msec: 2752
- hash: "5b31a1aca62cf654428e4d7fc25208b6"
+ hash: "7354c2fcabdede9fb1ee823ce098da3b"
}
Frame {
msec: 2768
- hash: "f797d3c0364515138059967e17e185ed"
+ hash: "0d6beff960fa26771f09748356accedb"
}
Frame {
msec: 2784
- hash: "dff0266adf50e30bc2a7674b001d19dc"
+ hash: "0720a8a1ed85344a1de6682b3aefd502"
}
Frame {
msec: 2800
- hash: "610c72005c1aa83306fecc9ca34bf5a4"
+ hash: "0245488740e13dbfc836b587b2bdf917"
}
Frame {
msec: 2816
- hash: "542587ab3dff0cfb3f724096871e925a"
+ hash: "25c4fcdd85017d18df7e83c15f1accbc"
}
Frame {
msec: 2832
- hash: "fd79c9159a77b1be25d9cfde2e6cecb6"
+ hash: "51192ae0eae814f3dead9d949e2e4676"
}
Frame {
msec: 2848
- hash: "e3d4bb451d6210e6006c54178d406068"
+ hash: "ddbe6b273882c6018c01e0a4480b1adb"
}
Frame {
msec: 2864
- hash: "3dd3c57049bddb206c0204d7fbf673b0"
+ hash: "bb840a0677114b67d9b08589e8a8192b"
}
Frame {
msec: 2880
@@ -1038,15 +1038,15 @@ VisualTest {
}
Frame {
msec: 2896
- hash: "44008e30de01ecb1893a0fe4b06ec63a"
+ hash: "6ceadf740293537c7b9f2e2cfe8e6f1e"
}
Frame {
msec: 2912
- hash: "c593c7e7edab1a034b96f778259b5b91"
+ hash: "f5c99d06e0b3055374ee4c6bf3e634f4"
}
Frame {
msec: 2928
- hash: "9ac483cb720fef5783abd4e0072cf71e"
+ hash: "18fe01fadf4c5acbd369f4450db1efa6"
}
Frame {
msec: 2944
@@ -1186,63 +1186,63 @@ VisualTest {
}
Frame {
msec: 3232
- hash: "45bacd56ecaeefd9c80c7bd77e79cff0"
+ hash: "0e1f352c163ad8fe852c2e4857881d2f"
}
Frame {
msec: 3248
- hash: "ad5239583e3924c98358e0ec7d12fd39"
+ hash: "3c3b44481a6c2330a4a03076e35055f4"
}
Frame {
msec: 3264
- hash: "8e0fbae41165c553af4a49ed5691dfbb"
+ hash: "6ea3210a929774aea84a7beb4a784842"
}
Frame {
msec: 3280
- hash: "c697930f45e23628c83a248de44472fb"
+ hash: "74dd747f9a64b19e5c5230c90ad3b642"
}
Frame {
msec: 3296
- hash: "840e1f8ba5fe6e42d6dc41c1e42dc3dc"
+ hash: "c02be4ebefd19f4c5e864e8bbab7c13e"
}
Frame {
msec: 3312
- hash: "e071cd254b69da678997eeb7ac0a13f8"
+ hash: "ce661af9085c833ec7d1fd66ebe67649"
}
Frame {
msec: 3328
- hash: "27954d55c9772aa0ba237e7bdff75517"
+ hash: "4bf921874cfdc1b7d14e3a110b9e70a1"
}
Frame {
msec: 3344
- hash: "5879feff61f02a9322b8620c84be4462"
+ hash: "f3e9cf8ac9e109e88d8c426fdcee28a9"
}
Frame {
msec: 3360
- hash: "feba016bdcdc3f59b70000375a5b4242"
+ hash: "aa718a37f7ccf655d176adb799b5ddfb"
}
Frame {
msec: 3376
- hash: "e57ae7048209884fb024481318c88080"
+ hash: "aa114a9676af508b4a106b21f7a2ed10"
}
Frame {
msec: 3392
- hash: "93707dc8ec5e02adb691d0c6f3ff7772"
+ hash: "a5bbbaebb61b83384f5be82a9c3181ba"
}
Frame {
msec: 3408
- hash: "ab2d8b822a4e2cd7c6a9cfa2e81d2113"
+ hash: "83deebf650b192de7c8a764d5379eeb4"
}
Frame {
msec: 3424
- hash: "a9d0e39b30b16eafec85e08a75e2b50f"
+ hash: "5b433e1f5b97b39b6e86c837f0b91f2b"
}
Frame {
msec: 3440
- hash: "8c94d16c8cde9b3d0ac8ccfb1374387d"
+ hash: "b5236be4e416f89a91eda7afbd75fc63"
}
Frame {
msec: 3456
- hash: "7f4873f6c773b3d2d814bb1ea5c5dec6"
+ hash: "1713477f5484a1b35686f2f4bff27612"
}
Frame {
msec: 3472
@@ -1254,63 +1254,63 @@ VisualTest {
}
Frame {
msec: 3504
- hash: "042adc29907ca50187d4aad772a7500d"
+ hash: "7f64804cd07a0ae63d0e3a1b9f8f8a84"
}
Frame {
msec: 3520
- hash: "90accd1b4f5bbe5cc59f3a73d697ea18"
+ hash: "9ae6bc952da97239bfee88633637aeb7"
}
Frame {
msec: 3536
- hash: "3ce26e9c0b2ee1b4cb3dc19bbac92736"
+ hash: "ba34cd0d57d5d027ad6c2de102676399"
}
Frame {
msec: 3552
- hash: "ca976ad1590e156e155cdba452dbc0ce"
+ hash: "c49632f9369aa901fcb702e76295c1e8"
}
Frame {
msec: 3568
- hash: "b342477cedfb2a3839aa145703f33cb4"
+ hash: "3adab59e06a635a033564dfc8edc4877"
}
Frame {
msec: 3584
- hash: "8fccdb3fbf637426b8b3df088a5a24a5"
+ hash: "67643cbfb3c9864b7447a9a8e316b251"
}
Frame {
msec: 3600
- hash: "973c8d2d2496c5cc871aecc0b6be0bbb"
+ hash: "d04d288cbf89e1ad3bbf25ffebd7a382"
}
Frame {
msec: 3616
- hash: "6af9574467c7b565450dc6533dddb0f2"
+ hash: "e6c4d34b9b3de464ec0dcf8719b86313"
}
Frame {
msec: 3632
- hash: "ced3d8a93bf564c0ebec837f1655c202"
+ hash: "f73462d0fe19cbbd771f9f78d7bc4384"
}
Frame {
msec: 3648
- hash: "0a38fe8ac9024b4a30b8efbcf155bbd8"
+ hash: "6369f075a492240aee36eae8dcb2ace5"
}
Frame {
msec: 3664
- hash: "2421dc73fe95e8abb246ae894ac255b2"
+ hash: "1e9424a3b93833f8ae855c5f7877679a"
}
Frame {
msec: 3680
- hash: "98789298fcc85a0b3307036c800d80af"
+ hash: "da274c1ae57d217ef4515326d32646b4"
}
Frame {
msec: 3696
- hash: "6361b512cfd9aa5f97529089ad7d902c"
+ hash: "1cbe684ba95e6ef635873f746e942f3d"
}
Frame {
msec: 3712
- hash: "5f26400f45140d634ac49ae5ce6bc2cf"
+ hash: "228e13c1d3dea6e666637de7cedd6dd4"
}
Frame {
msec: 3728
- hash: "49586dcf6a4c7a80563e9cc67b16a520"
+ hash: "a3f8fec49fb88652e9339b621ea8b972"
}
Mouse {
type: 2
@@ -1322,7 +1322,7 @@ VisualTest {
}
Frame {
msec: 3744
- hash: "fa8827f2a5eefaa9f740e36e4eb05083"
+ hash: "7c3eb16bf4f66d2b9889c9d80aaae8b2"
}
Mouse {
type: 5
@@ -1334,7 +1334,7 @@ VisualTest {
}
Frame {
msec: 3760
- hash: "5f2e33f8b436686840a124ba71f7d203"
+ hash: "1825d33eb9ae94a63d334d93e07ce9af"
}
Mouse {
type: 5
@@ -1346,7 +1346,7 @@ VisualTest {
}
Frame {
msec: 3776
- hash: "b0093a1f538381e79f43c91192437be5"
+ hash: "306652a5a179cf23ee87c10571814f53"
}
Mouse {
type: 5
@@ -1358,7 +1358,7 @@ VisualTest {
}
Frame {
msec: 3792
- hash: "9a8e645817c214a0353beadc0bc2e3f8"
+ hash: "3d3ba7cd968a1f91f7534cabd7cc034b"
}
Mouse {
type: 5
@@ -1370,7 +1370,7 @@ VisualTest {
}
Frame {
msec: 3808
- hash: "3f059fefcb7908e6f89a4b245bd0c948"
+ hash: "862f70151938a5d27db37a9f5dd53faa"
}
Mouse {
type: 5
@@ -1382,7 +1382,7 @@ VisualTest {
}
Frame {
msec: 3824
- hash: "48ccbb037ebe01dc9c73fafa54aa6175"
+ hash: "92b9283fa8b5642ce9bd14d875a12b75"
}
Mouse {
type: 5
@@ -1406,7 +1406,7 @@ VisualTest {
}
Frame {
msec: 3856
- hash: "3398c59636fc02358fc0b22d7bc2afd3"
+ hash: "58e61d0a4f397c5a2b137d6a6e85d99b"
}
Mouse {
type: 5
@@ -1418,7 +1418,7 @@ VisualTest {
}
Frame {
msec: 3872
- hash: "86ebc9911fc2da29a1960ae3999e4329"
+ hash: "6cdd764ee39789307e5e313bfbbb7765"
}
Mouse {
type: 5
@@ -1438,83 +1438,83 @@ VisualTest {
}
Frame {
msec: 3888
- hash: "7e910c843f531af6d08a0c7ea890c823"
+ hash: "a88656d49e4636b18c4f6f4a0ab943d6"
}
Frame {
msec: 3904
- hash: "7e92be7beeba33541e16305d5cb7b3b6"
+ hash: "f1ec9a65d5f8d2020db1b70bcd419417"
}
Frame {
msec: 3920
- hash: "1e7caa1bb4627bea028cdd2ef2260d9f"
+ hash: "ca7d3d7d26445d13acd7fe4a2c5d1d4d"
}
Frame {
msec: 3936
- hash: "a7d77ec36935d8d8c8a6120d373d714c"
+ hash: "90016f51541a15ba4b6265f6843a2998"
}
Frame {
msec: 3952
- hash: "770e16a5c7bf17522445bdae41d170df"
+ hash: "bdb992552a5c5707ddb372631f72e6a3"
}
Frame {
msec: 3968
- hash: "d5c93bb61aeef777bb91dd504e91ecf6"
+ hash: "af69ed47f0f40648d55af10c87866805"
}
Frame {
msec: 3984
- hash: "2247494cb67e7f0cade508b6ef46cb3e"
+ hash: "33e77562bdf839ca1e969b918d90a07b"
}
Frame {
msec: 4000
- hash: "61a480c3a29f37b4383b430b02eb5dc1"
+ hash: "2001b5ca444808a79c49adc9d03c960e"
}
Frame {
msec: 4016
- hash: "f741ede20b0ad51f81c7aba44705a08e"
+ hash: "e4186283e5fe0c1efb29eca6f59e9079"
}
Frame {
msec: 4032
- hash: "73bb52725e3906ac3074371936e9f3f3"
+ hash: "dab82d0bbba66df3297712b42f74f25a"
}
Frame {
msec: 4048
- hash: "a915081e3c6ca9397567cb3df2aed517"
+ hash: "b180ad3acdfd736276ef4d1de040bb55"
}
Frame {
msec: 4064
- hash: "79b514577bcc36db6de4db2e8b284a4c"
+ hash: "577445b0e4d6f8079830c2b87ce5829d"
}
Frame {
msec: 4080
- hash: "5412571baa69b8e0c3b4daf52796482a"
+ hash: "45fffe51376abef4cb28842b392ab0b7"
}
Frame {
msec: 4096
- hash: "7f739333fdc9c3457461e7fcf49bf650"
+ hash: "fc14e3b2d16e1f078d223876ef71c81e"
}
Frame {
msec: 4112
- hash: "ed9a9fdd4bea6e9f7f7078934337b4a6"
+ hash: "4ef2b65280a00a6a4e66185f41479aef"
}
Frame {
msec: 4128
- hash: "4fbc687f1a5b4364a90441134162c817"
+ hash: "131181ce7ff2f4d4e69823fcb7a20755"
}
Frame {
msec: 4144
- hash: "7c91ad050f31e30b7f16b99dd1ed19df"
+ hash: "8e6db058e96dad9c4963b881083ab9bf"
}
Frame {
msec: 4160
- hash: "44777e9a08d5f112b922272227b22558"
+ hash: "e2d407b6dff40625790d4fd9e599b374"
}
Frame {
msec: 4176
- hash: "c4f7523d0a214e188c95d7cbd4455a9d"
+ hash: "631fe708fdcb1e4f4ea89b10da5db623"
}
Frame {
msec: 4192
- hash: "7703b85f0bda71fa8ff84a557b015458"
+ hash: "e11831f37a3a1da78cbdc7604ddccd68"
}
Mouse {
type: 2
@@ -1526,7 +1526,7 @@ VisualTest {
}
Frame {
msec: 4208
- hash: "0bd445389e69d1d758a9b17eee69d584"
+ hash: "c2dccc4e890b2302edd413dcdb87b50b"
}
Mouse {
type: 5
@@ -1538,7 +1538,7 @@ VisualTest {
}
Frame {
msec: 4224
- hash: "13bfb19a05b5aef65f7f70b2c0b01424"
+ hash: "b4f6a6650dd779c8ad8696c23f44411a"
}
Mouse {
type: 5
@@ -1550,7 +1550,7 @@ VisualTest {
}
Frame {
msec: 4240
- hash: "9d6a81d6f7df8aa93c9421fa3cdc3a7d"
+ hash: "ad913e53e63c030ffdf4560766722760"
}
Mouse {
type: 5
@@ -1570,7 +1570,7 @@ VisualTest {
}
Frame {
msec: 4256
- hash: "4d88acb157fdeb0c608b6c9d75e999e8"
+ hash: "ef31f8a4d5bde5a2e308d19ee6d5e759"
}
Mouse {
type: 5
@@ -1582,7 +1582,7 @@ VisualTest {
}
Frame {
msec: 4272
- hash: "fe506e31923e1feb2d2b3c105444f61f"
+ hash: "3ba07527f66e8bea5a8fb7647b0b4f3f"
}
Mouse {
type: 5
@@ -1594,7 +1594,7 @@ VisualTest {
}
Frame {
msec: 4288
- hash: "72c0ccbbf296742f67139bd9a4abcf6b"
+ hash: "70e5fe656f5fd843383964825690b678"
}
Mouse {
type: 5
@@ -1614,7 +1614,7 @@ VisualTest {
}
Frame {
msec: 4304
- hash: "75b083e391afb3cdb8e4bcd885f17966"
+ hash: "b7d8738be4cd6caa63dbecdb0f810a2f"
}
Mouse {
type: 5
@@ -1626,7 +1626,7 @@ VisualTest {
}
Frame {
msec: 4320
- hash: "2babcf0e4d434120e0a7eb7d8716baa7"
+ hash: "d6312191f9d7bbddc07f9253d8a93469"
}
Mouse {
type: 5
@@ -1638,7 +1638,7 @@ VisualTest {
}
Frame {
msec: 4336
- hash: "676e6a7587781146f58f82ca1ceac2b3"
+ hash: "b182da64886cf4f444296e5fde26701e"
}
Mouse {
type: 5
@@ -1650,7 +1650,7 @@ VisualTest {
}
Frame {
msec: 4352
- hash: "58ecd6234c3c0f7ceec942098e3ae0fc"
+ hash: "ebefef14b6fb990e0c6900884528bbd3"
}
Mouse {
type: 5
@@ -1662,7 +1662,7 @@ VisualTest {
}
Frame {
msec: 4368
- hash: "25a8af71ba1cf4581682cbec3b9baf8a"
+ hash: "9a3451ed091b1bb6b975a9c5506b1ea4"
}
Mouse {
type: 5
@@ -1674,7 +1674,7 @@ VisualTest {
}
Frame {
msec: 4384
- hash: "11c305643f2ed535a6dc0a7a54caf17c"
+ hash: "04290d8d62436c8a812f886e0a56ec1b"
}
Mouse {
type: 5
@@ -1686,7 +1686,7 @@ VisualTest {
}
Frame {
msec: 4400
- hash: "29b33349f90286b2c078ae8d5896a338"
+ hash: "eaaf9ea1d7fcf4a2a9dd58b1b5bb3cae"
}
Mouse {
type: 5
@@ -1698,7 +1698,7 @@ VisualTest {
}
Frame {
msec: 4416
- hash: "af917864d02b49bef4190ee1fca607dc"
+ hash: "7ca8e3d76cf913d85f84f0b96acde829"
}
Mouse {
type: 5
@@ -1710,7 +1710,7 @@ VisualTest {
}
Frame {
msec: 4432
- hash: "7b1af6cddd2f78615354f747dfd016b9"
+ hash: "7cfef56b24a552c6d4ecb3d0b88a1d08"
}
Mouse {
type: 5
@@ -1730,7 +1730,7 @@ VisualTest {
}
Frame {
msec: 4448
- hash: "84f1757af8c26b4f00298090e09f7f68"
+ hash: "d032b257259810b4fe514c63ca5c9e4b"
}
Mouse {
type: 5
@@ -1742,7 +1742,7 @@ VisualTest {
}
Frame {
msec: 4464
- hash: "fd214ddbd1f60dc733994ba7a2048951"
+ hash: "568f6a57e6f1644b0dc245d03a1d7b85"
}
Mouse {
type: 5
@@ -1754,83 +1754,83 @@ VisualTest {
}
Frame {
msec: 4480
- hash: "01f209a3b5e9adaa32ad55c7d1f1d4c7"
+ hash: "5cb4cf2c527d821db2a5072dd3702653"
}
Frame {
msec: 4496
- hash: "01f209a3b5e9adaa32ad55c7d1f1d4c7"
+ hash: "5cb4cf2c527d821db2a5072dd3702653"
}
Frame {
msec: 4512
- hash: "01f209a3b5e9adaa32ad55c7d1f1d4c7"
+ hash: "5cb4cf2c527d821db2a5072dd3702653"
}
Frame {
msec: 4528
- hash: "01f209a3b5e9adaa32ad55c7d1f1d4c7"
+ hash: "5cb4cf2c527d821db2a5072dd3702653"
}
Frame {
msec: 4544
- hash: "01f209a3b5e9adaa32ad55c7d1f1d4c7"
+ hash: "5cb4cf2c527d821db2a5072dd3702653"
}
Frame {
msec: 4560
- hash: "01f209a3b5e9adaa32ad55c7d1f1d4c7"
+ hash: "5cb4cf2c527d821db2a5072dd3702653"
}
Frame {
msec: 4576
- hash: "01f209a3b5e9adaa32ad55c7d1f1d4c7"
+ hash: "5cb4cf2c527d821db2a5072dd3702653"
}
Frame {
msec: 4592
- hash: "01f209a3b5e9adaa32ad55c7d1f1d4c7"
+ hash: "5cb4cf2c527d821db2a5072dd3702653"
}
Frame {
msec: 4608
- hash: "01f209a3b5e9adaa32ad55c7d1f1d4c7"
+ hash: "5cb4cf2c527d821db2a5072dd3702653"
}
Frame {
msec: 4624
- hash: "01f209a3b5e9adaa32ad55c7d1f1d4c7"
+ hash: "5cb4cf2c527d821db2a5072dd3702653"
}
Frame {
msec: 4640
- hash: "01f209a3b5e9adaa32ad55c7d1f1d4c7"
+ hash: "5cb4cf2c527d821db2a5072dd3702653"
}
Frame {
msec: 4656
- hash: "01f209a3b5e9adaa32ad55c7d1f1d4c7"
+ hash: "5cb4cf2c527d821db2a5072dd3702653"
}
Frame {
msec: 4672
- hash: "01f209a3b5e9adaa32ad55c7d1f1d4c7"
+ hash: "5cb4cf2c527d821db2a5072dd3702653"
}
Frame {
msec: 4688
- hash: "01f209a3b5e9adaa32ad55c7d1f1d4c7"
+ hash: "5cb4cf2c527d821db2a5072dd3702653"
}
Frame {
msec: 4704
- hash: "01f209a3b5e9adaa32ad55c7d1f1d4c7"
+ hash: "5cb4cf2c527d821db2a5072dd3702653"
}
Frame {
msec: 4720
- hash: "01f209a3b5e9adaa32ad55c7d1f1d4c7"
+ hash: "5cb4cf2c527d821db2a5072dd3702653"
}
Frame {
msec: 4736
- hash: "01f209a3b5e9adaa32ad55c7d1f1d4c7"
+ hash: "5cb4cf2c527d821db2a5072dd3702653"
}
Frame {
msec: 4752
- hash: "01f209a3b5e9adaa32ad55c7d1f1d4c7"
+ hash: "5cb4cf2c527d821db2a5072dd3702653"
}
Frame {
msec: 4768
- hash: "01f209a3b5e9adaa32ad55c7d1f1d4c7"
+ hash: "5cb4cf2c527d821db2a5072dd3702653"
}
Frame {
msec: 4784
- hash: "01f209a3b5e9adaa32ad55c7d1f1d4c7"
+ hash: "5cb4cf2c527d821db2a5072dd3702653"
}
Frame {
msec: 4800
@@ -1838,15 +1838,15 @@ VisualTest {
}
Frame {
msec: 4816
- hash: "01f209a3b5e9adaa32ad55c7d1f1d4c7"
+ hash: "5cb4cf2c527d821db2a5072dd3702653"
}
Frame {
msec: 4832
- hash: "01f209a3b5e9adaa32ad55c7d1f1d4c7"
+ hash: "5cb4cf2c527d821db2a5072dd3702653"
}
Frame {
msec: 4848
- hash: "01f209a3b5e9adaa32ad55c7d1f1d4c7"
+ hash: "5cb4cf2c527d821db2a5072dd3702653"
}
Mouse {
type: 5
@@ -1866,7 +1866,7 @@ VisualTest {
}
Frame {
msec: 4864
- hash: "1dc57bc129f3a6d5287ec0fa2a99d62e"
+ hash: "d48ecbd0661e08b2117fe2fd96ffeb2c"
}
Mouse {
type: 5
@@ -1878,7 +1878,7 @@ VisualTest {
}
Frame {
msec: 4880
- hash: "7b1af6cddd2f78615354f747dfd016b9"
+ hash: "7cfef56b24a552c6d4ecb3d0b88a1d08"
}
Mouse {
type: 5
@@ -1890,7 +1890,7 @@ VisualTest {
}
Frame {
msec: 4896
- hash: "a890208c702b9fde41584a33b3038940"
+ hash: "5b12e9d17d9d464b055601db9cf0da44"
}
Mouse {
type: 5
@@ -1902,7 +1902,7 @@ VisualTest {
}
Frame {
msec: 4912
- hash: "6df3f8000a0d390b89d41c6ece6ea221"
+ hash: "25333e1f0cc9cfc664fd7369af544c06"
}
Mouse {
type: 5
@@ -1914,39 +1914,39 @@ VisualTest {
}
Frame {
msec: 4928
- hash: "cdc2d0868771429226c74e77676f55f1"
+ hash: "04290d8d62436c8a812f886e0a56ec1b"
}
Frame {
msec: 4944
- hash: "cdc2d0868771429226c74e77676f55f1"
+ hash: "04290d8d62436c8a812f886e0a56ec1b"
}
Frame {
msec: 4960
- hash: "cdc2d0868771429226c74e77676f55f1"
+ hash: "04290d8d62436c8a812f886e0a56ec1b"
}
Frame {
msec: 4976
- hash: "cdc2d0868771429226c74e77676f55f1"
+ hash: "04290d8d62436c8a812f886e0a56ec1b"
}
Frame {
msec: 4992
- hash: "cdc2d0868771429226c74e77676f55f1"
+ hash: "04290d8d62436c8a812f886e0a56ec1b"
}
Frame {
msec: 5008
- hash: "cdc2d0868771429226c74e77676f55f1"
+ hash: "04290d8d62436c8a812f886e0a56ec1b"
}
Frame {
msec: 5024
- hash: "cdc2d0868771429226c74e77676f55f1"
+ hash: "04290d8d62436c8a812f886e0a56ec1b"
}
Frame {
msec: 5040
- hash: "cdc2d0868771429226c74e77676f55f1"
+ hash: "04290d8d62436c8a812f886e0a56ec1b"
}
Frame {
msec: 5056
- hash: "cdc2d0868771429226c74e77676f55f1"
+ hash: "04290d8d62436c8a812f886e0a56ec1b"
}
Mouse {
type: 3
@@ -1958,175 +1958,175 @@ VisualTest {
}
Frame {
msec: 5072
- hash: "cdc2d0868771429226c74e77676f55f1"
+ hash: "04290d8d62436c8a812f886e0a56ec1b"
}
Frame {
msec: 5088
- hash: "cdc2d0868771429226c74e77676f55f1"
+ hash: "04290d8d62436c8a812f886e0a56ec1b"
}
Frame {
msec: 5104
- hash: "cdc2d0868771429226c74e77676f55f1"
+ hash: "04290d8d62436c8a812f886e0a56ec1b"
}
Frame {
msec: 5120
- hash: "cdc2d0868771429226c74e77676f55f1"
+ hash: "04290d8d62436c8a812f886e0a56ec1b"
}
Frame {
msec: 5136
- hash: "cdc2d0868771429226c74e77676f55f1"
+ hash: "04290d8d62436c8a812f886e0a56ec1b"
}
Frame {
msec: 5152
- hash: "cdc2d0868771429226c74e77676f55f1"
+ hash: "04290d8d62436c8a812f886e0a56ec1b"
}
Frame {
msec: 5168
- hash: "cdc2d0868771429226c74e77676f55f1"
+ hash: "04290d8d62436c8a812f886e0a56ec1b"
}
Frame {
msec: 5184
- hash: "768d6d504470ce841e51022dd514edc5"
+ hash: "04290d8d62436c8a812f886e0a56ec1b"
}
Frame {
msec: 5200
- hash: "768d6d504470ce841e51022dd514edc5"
+ hash: "04290d8d62436c8a812f886e0a56ec1b"
}
Frame {
msec: 5216
- hash: "768d6d504470ce841e51022dd514edc5"
+ hash: "04290d8d62436c8a812f886e0a56ec1b"
}
Frame {
msec: 5232
- hash: "768d6d504470ce841e51022dd514edc5"
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
msec: 5248
- hash: "768d6d504470ce841e51022dd514edc5"
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
msec: 5264
- hash: "768d6d504470ce841e51022dd514edc5"
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
msec: 5280
- hash: "6df3f8000a0d390b89d41c6ece6ea221"
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
msec: 5296
- hash: "6df3f8000a0d390b89d41c6ece6ea221"
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
msec: 5312
- hash: "6df3f8000a0d390b89d41c6ece6ea221"
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
msec: 5328
- hash: "6df3f8000a0d390b89d41c6ece6ea221"
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
msec: 5344
- hash: "6df3f8000a0d390b89d41c6ece6ea221"
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
msec: 5360
- hash: "6df3f8000a0d390b89d41c6ece6ea221"
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
msec: 5376
- hash: "6df3f8000a0d390b89d41c6ece6ea221"
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
msec: 5392
- hash: "6df3f8000a0d390b89d41c6ece6ea221"
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
msec: 5408
- hash: "6df3f8000a0d390b89d41c6ece6ea221"
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
msec: 5424
- hash: "6df3f8000a0d390b89d41c6ece6ea221"
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
msec: 5440
- hash: "6df3f8000a0d390b89d41c6ece6ea221"
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
msec: 5456
- hash: "6df3f8000a0d390b89d41c6ece6ea221"
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
msec: 5472
- hash: "6df3f8000a0d390b89d41c6ece6ea221"
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
msec: 5488
- hash: "6df3f8000a0d390b89d41c6ece6ea221"
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
msec: 5504
- hash: "6df3f8000a0d390b89d41c6ece6ea221"
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
msec: 5520
- hash: "6df3f8000a0d390b89d41c6ece6ea221"
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
msec: 5536
- hash: "6df3f8000a0d390b89d41c6ece6ea221"
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
msec: 5552
- hash: "6df3f8000a0d390b89d41c6ece6ea221"
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
msec: 5568
- hash: "6df3f8000a0d390b89d41c6ece6ea221"
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
msec: 5584
- hash: "6df3f8000a0d390b89d41c6ece6ea221"
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
msec: 5600
- hash: "6df3f8000a0d390b89d41c6ece6ea221"
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
msec: 5616
- hash: "6df3f8000a0d390b89d41c6ece6ea221"
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
msec: 5632
- hash: "6df3f8000a0d390b89d41c6ece6ea221"
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
msec: 5648
- hash: "6df3f8000a0d390b89d41c6ece6ea221"
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
msec: 5664
- hash: "6df3f8000a0d390b89d41c6ece6ea221"
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
msec: 5680
- hash: "6df3f8000a0d390b89d41c6ece6ea221"
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
msec: 5696
- hash: "6df3f8000a0d390b89d41c6ece6ea221"
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
msec: 5712
- hash: "6df3f8000a0d390b89d41c6ece6ea221"
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
msec: 5728
- hash: "6df3f8000a0d390b89d41c6ece6ea221"
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
msec: 5744
- hash: "6df3f8000a0d390b89d41c6ece6ea221"
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
msec: 5760
@@ -2134,94 +2134,94 @@ VisualTest {
}
Frame {
msec: 5776
- hash: "6df3f8000a0d390b89d41c6ece6ea221"
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
msec: 5792
- hash: "6df3f8000a0d390b89d41c6ece6ea221"
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
msec: 5808
- hash: "6df3f8000a0d390b89d41c6ece6ea221"
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
msec: 5824
- hash: "6df3f8000a0d390b89d41c6ece6ea221"
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
msec: 5840
- hash: "6df3f8000a0d390b89d41c6ece6ea221"
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
msec: 5856
- hash: "6df3f8000a0d390b89d41c6ece6ea221"
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
msec: 5872
- hash: "6df3f8000a0d390b89d41c6ece6ea221"
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
msec: 5888
- hash: "6df3f8000a0d390b89d41c6ece6ea221"
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
msec: 5904
- hash: "6df3f8000a0d390b89d41c6ece6ea221"
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
msec: 5920
- hash: "6df3f8000a0d390b89d41c6ece6ea221"
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
msec: 5936
- hash: "6df3f8000a0d390b89d41c6ece6ea221"
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
msec: 5952
- hash: "6df3f8000a0d390b89d41c6ece6ea221"
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
msec: 5968
- hash: "6df3f8000a0d390b89d41c6ece6ea221"
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
msec: 5984
- hash: "6df3f8000a0d390b89d41c6ece6ea221"
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
msec: 6000
- hash: "6df3f8000a0d390b89d41c6ece6ea221"
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
msec: 6016
- hash: "6df3f8000a0d390b89d41c6ece6ea221"
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
msec: 6032
- hash: "6df3f8000a0d390b89d41c6ece6ea221"
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
msec: 6048
- hash: "6df3f8000a0d390b89d41c6ece6ea221"
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
msec: 6064
- hash: "6df3f8000a0d390b89d41c6ece6ea221"
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
msec: 6080
- hash: "6df3f8000a0d390b89d41c6ece6ea221"
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
msec: 6096
- hash: "6df3f8000a0d390b89d41c6ece6ea221"
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
msec: 6112
- hash: "6df3f8000a0d390b89d41c6ece6ea221"
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
msec: 6128
- hash: "6df3f8000a0d390b89d41c6ece6ea221"
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
}
diff --git a/tests/auto/declarative/qmlvisual/ListView/enforcerange.qml b/tests/auto/declarative/qmlvisual/ListView/enforcerange.qml
new file mode 100644
index 0000000..a796be7
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/ListView/enforcerange.qml
@@ -0,0 +1,31 @@
+import QtQuick 1.0
+
+Item {
+ id: document
+ width: 200; height: 200
+
+ ListView {
+ id: serviceListView
+ anchors.fill: parent
+ model: 100
+
+ preferredHighlightBegin: 90
+ preferredHighlightEnd: 90
+
+ highlightRangeMode: ListView.StrictlyEnforceRange
+
+ delegate: Component {
+ Item {
+ height: 15 + ((serviceListView.currentIndex == index) ? 20 : 0)
+ width: 200
+ Rectangle { width: 180; height: parent.height - 4; x: 10; y: 2; color: "red" }
+ }
+ }
+ }
+
+ Rectangle {
+ y: 90; width: 200; height: 35
+ border.color: "black"
+ color: "transparent"
+ }
+}
diff --git a/tests/auto/declarative/qmlvisual/ListView/listview.qml b/tests/auto/declarative/qmlvisual/ListView/listview.qml
index 43c86a0..6171c75 100644
--- a/tests/auto/declarative/qmlvisual/ListView/listview.qml
+++ b/tests/auto/declarative/qmlvisual/ListView/listview.qml
@@ -1,7 +1,8 @@
import QtQuick 1.0
Rectangle {
- property string skip: "Incorrect start: QTBUG-14794"
+ id: root
+ property int current: 0
width: 600; height: 300; color: "white"
ListModel {
@@ -57,7 +58,9 @@ Rectangle {
id: list1
width: 200; height: parent.height
model: myModel; delegate: myDelegate
- highlight: myHighlight; currentIndex: list3.currentIndex
+ highlight: myHighlight
+ currentIndex: root.current
+ onCurrentIndexChanged: root.current = currentIndex
focus: true
}
ListView {
@@ -67,13 +70,14 @@ Rectangle {
preferredHighlightBegin: 80
preferredHighlightEnd: 220
highlightRangeMode: "ApplyRange"
- currentIndex: list1.currentIndex
+ currentIndex: root.current
}
ListView {
id: list3
x: 400; width: 200; height: parent.height
model: myModel; delegate: myDelegate; highlight: myHighlight
- currentIndex: list1.currentIndex
+ currentIndex: root.current
+ onCurrentIndexChanged: root.current = currentIndex
preferredHighlightBegin: 125
preferredHighlightEnd: 125
highlightRangeMode: "StrictlyEnforceRange"
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.qml b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.qml
index e5c55a4..a688563 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.qml
@@ -450,7 +450,7 @@ VisualTest {
}
Frame {
msec: 1760
- hash: "2c01571e523002166ba6ec476bc8a68b"
+ hash: "b2b4b3de77e2b7fd58d3da1ad52355a9"
}
Frame {
msec: 1776
@@ -1554,7 +1554,7 @@ VisualTest {
}
Frame {
msec: 6144
- hash: "0506667a14ace4e2edf04956c137e217"
+ hash: "8cd5edce652013a2ed4bf95693259538"
}
Frame {
msec: 6160
@@ -1731,7 +1731,7 @@ VisualTest {
Key {
type: 6
key: 16777249
- modifiers: 0
+ modifiers: 67108864
text: ""
autorep: false
count: 1
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 5243f4a..8b6329d 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetext/align/data-MAC/multilineAlign.0.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/align/data-MAC/multilineAlign.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/align/data-MAC/multilineAlign.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/align/data-MAC/multilineAlign.qml
index ad7f35e..85c0cce 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetext/align/data-MAC/multilineAlign.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/align/data-MAC/multilineAlign.qml
@@ -6,239 +6,239 @@ VisualTest {
}
Frame {
msec: 16
- hash: "5033bd624cd855ba10da39e6cb30e7d2"
+ hash: "75c15f88551f961727b547082216d0bb"
}
Frame {
msec: 32
- hash: "5033bd624cd855ba10da39e6cb30e7d2"
+ hash: "75c15f88551f961727b547082216d0bb"
}
Frame {
msec: 48
- hash: "5033bd624cd855ba10da39e6cb30e7d2"
+ hash: "75c15f88551f961727b547082216d0bb"
}
Frame {
msec: 64
- hash: "5033bd624cd855ba10da39e6cb30e7d2"
+ hash: "75c15f88551f961727b547082216d0bb"
}
Frame {
msec: 80
- hash: "5033bd624cd855ba10da39e6cb30e7d2"
+ hash: "75c15f88551f961727b547082216d0bb"
}
Frame {
msec: 96
- hash: "5033bd624cd855ba10da39e6cb30e7d2"
+ hash: "75c15f88551f961727b547082216d0bb"
}
Frame {
msec: 112
- hash: "5033bd624cd855ba10da39e6cb30e7d2"
+ hash: "75c15f88551f961727b547082216d0bb"
}
Frame {
msec: 128
- hash: "5033bd624cd855ba10da39e6cb30e7d2"
+ hash: "75c15f88551f961727b547082216d0bb"
}
Frame {
msec: 144
- hash: "5033bd624cd855ba10da39e6cb30e7d2"
+ hash: "75c15f88551f961727b547082216d0bb"
}
Frame {
msec: 160
- hash: "5033bd624cd855ba10da39e6cb30e7d2"
+ hash: "75c15f88551f961727b547082216d0bb"
}
Frame {
msec: 176
- hash: "d0d1afd7d8ff38e033cec4fa68978767"
+ hash: "1a58de7b864ae75e65f69461155cbfb2"
}
Frame {
msec: 192
- hash: "d0d1afd7d8ff38e033cec4fa68978767"
+ hash: "1a58de7b864ae75e65f69461155cbfb2"
}
Frame {
msec: 208
- hash: "d0d1afd7d8ff38e033cec4fa68978767"
+ hash: "1a58de7b864ae75e65f69461155cbfb2"
}
Frame {
msec: 224
- hash: "d0d1afd7d8ff38e033cec4fa68978767"
+ hash: "1a58de7b864ae75e65f69461155cbfb2"
}
Frame {
msec: 240
- hash: "d0d1afd7d8ff38e033cec4fa68978767"
+ hash: "1a58de7b864ae75e65f69461155cbfb2"
}
Frame {
msec: 256
- hash: "d0d1afd7d8ff38e033cec4fa68978767"
+ hash: "1a58de7b864ae75e65f69461155cbfb2"
}
Frame {
msec: 272
- hash: "d0d1afd7d8ff38e033cec4fa68978767"
+ hash: "1a58de7b864ae75e65f69461155cbfb2"
}
Frame {
msec: 288
- hash: "d0d1afd7d8ff38e033cec4fa68978767"
+ hash: "1a58de7b864ae75e65f69461155cbfb2"
}
Frame {
msec: 304
- hash: "d0d1afd7d8ff38e033cec4fa68978767"
+ hash: "1a58de7b864ae75e65f69461155cbfb2"
}
Frame {
msec: 320
- hash: "d0d1afd7d8ff38e033cec4fa68978767"
+ hash: "1a58de7b864ae75e65f69461155cbfb2"
}
Frame {
msec: 336
- hash: "26eed73af37b01ebecb4ee98ed9d67c6"
+ hash: "8a6b615ce522e7aa1011bc1d16193871"
}
Frame {
msec: 352
- hash: "26eed73af37b01ebecb4ee98ed9d67c6"
+ hash: "8a6b615ce522e7aa1011bc1d16193871"
}
Frame {
msec: 368
- hash: "26eed73af37b01ebecb4ee98ed9d67c6"
+ hash: "8a6b615ce522e7aa1011bc1d16193871"
}
Frame {
msec: 384
- hash: "26eed73af37b01ebecb4ee98ed9d67c6"
+ hash: "8a6b615ce522e7aa1011bc1d16193871"
}
Frame {
msec: 400
- hash: "26eed73af37b01ebecb4ee98ed9d67c6"
+ hash: "8a6b615ce522e7aa1011bc1d16193871"
}
Frame {
msec: 416
- hash: "26eed73af37b01ebecb4ee98ed9d67c6"
+ hash: "8a6b615ce522e7aa1011bc1d16193871"
}
Frame {
msec: 432
- hash: "26eed73af37b01ebecb4ee98ed9d67c6"
+ hash: "8a6b615ce522e7aa1011bc1d16193871"
}
Frame {
msec: 448
- hash: "26eed73af37b01ebecb4ee98ed9d67c6"
+ hash: "8a6b615ce522e7aa1011bc1d16193871"
}
Frame {
msec: 464
- hash: "26eed73af37b01ebecb4ee98ed9d67c6"
+ hash: "8a6b615ce522e7aa1011bc1d16193871"
}
Frame {
msec: 480
- hash: "26eed73af37b01ebecb4ee98ed9d67c6"
+ hash: "8a6b615ce522e7aa1011bc1d16193871"
}
Frame {
msec: 496
- hash: "f046b9aaa9f1eba08386a160e2f281ca"
+ hash: "17141b7167d2249238c15cf751b3d8b6"
}
Frame {
msec: 512
- hash: "f046b9aaa9f1eba08386a160e2f281ca"
+ hash: "17141b7167d2249238c15cf751b3d8b6"
}
Frame {
msec: 528
- hash: "f046b9aaa9f1eba08386a160e2f281ca"
+ hash: "17141b7167d2249238c15cf751b3d8b6"
}
Frame {
msec: 544
- hash: "f046b9aaa9f1eba08386a160e2f281ca"
+ hash: "17141b7167d2249238c15cf751b3d8b6"
}
Frame {
msec: 560
- hash: "f046b9aaa9f1eba08386a160e2f281ca"
+ hash: "17141b7167d2249238c15cf751b3d8b6"
}
Frame {
msec: 576
- hash: "f046b9aaa9f1eba08386a160e2f281ca"
+ hash: "17141b7167d2249238c15cf751b3d8b6"
}
Frame {
msec: 592
- hash: "f046b9aaa9f1eba08386a160e2f281ca"
+ hash: "17141b7167d2249238c15cf751b3d8b6"
}
Frame {
msec: 608
- hash: "f046b9aaa9f1eba08386a160e2f281ca"
+ hash: "17141b7167d2249238c15cf751b3d8b6"
}
Frame {
msec: 624
- hash: "f046b9aaa9f1eba08386a160e2f281ca"
+ hash: "17141b7167d2249238c15cf751b3d8b6"
}
Frame {
msec: 640
- hash: "f046b9aaa9f1eba08386a160e2f281ca"
+ hash: "17141b7167d2249238c15cf751b3d8b6"
}
Frame {
msec: 656
- hash: "52f90c22e44475fac04559164c044aee"
+ hash: "92e4f7c09e41b5fb97feb0093e8d9c1f"
}
Frame {
msec: 672
- hash: "52f90c22e44475fac04559164c044aee"
+ hash: "92e4f7c09e41b5fb97feb0093e8d9c1f"
}
Frame {
msec: 688
- hash: "52f90c22e44475fac04559164c044aee"
+ hash: "92e4f7c09e41b5fb97feb0093e8d9c1f"
}
Frame {
msec: 704
- hash: "52f90c22e44475fac04559164c044aee"
+ hash: "92e4f7c09e41b5fb97feb0093e8d9c1f"
}
Frame {
msec: 720
- hash: "52f90c22e44475fac04559164c044aee"
+ hash: "92e4f7c09e41b5fb97feb0093e8d9c1f"
}
Frame {
msec: 736
- hash: "52f90c22e44475fac04559164c044aee"
+ hash: "92e4f7c09e41b5fb97feb0093e8d9c1f"
}
Frame {
msec: 752
- hash: "52f90c22e44475fac04559164c044aee"
+ hash: "92e4f7c09e41b5fb97feb0093e8d9c1f"
}
Frame {
msec: 768
- hash: "52f90c22e44475fac04559164c044aee"
+ hash: "92e4f7c09e41b5fb97feb0093e8d9c1f"
}
Frame {
msec: 784
- hash: "52f90c22e44475fac04559164c044aee"
+ hash: "92e4f7c09e41b5fb97feb0093e8d9c1f"
}
Frame {
msec: 800
- hash: "52f90c22e44475fac04559164c044aee"
+ hash: "92e4f7c09e41b5fb97feb0093e8d9c1f"
}
Frame {
msec: 816
- hash: "52f90c22e44475fac04559164c044aee"
+ hash: "92e4f7c09e41b5fb97feb0093e8d9c1f"
}
Frame {
msec: 832
- hash: "52f90c22e44475fac04559164c044aee"
+ hash: "92e4f7c09e41b5fb97feb0093e8d9c1f"
}
Frame {
msec: 848
- hash: "52f90c22e44475fac04559164c044aee"
+ hash: "92e4f7c09e41b5fb97feb0093e8d9c1f"
}
Frame {
msec: 864
- hash: "52f90c22e44475fac04559164c044aee"
+ hash: "92e4f7c09e41b5fb97feb0093e8d9c1f"
}
Frame {
msec: 880
- hash: "52f90c22e44475fac04559164c044aee"
+ hash: "92e4f7c09e41b5fb97feb0093e8d9c1f"
}
Frame {
msec: 896
- hash: "52f90c22e44475fac04559164c044aee"
+ hash: "92e4f7c09e41b5fb97feb0093e8d9c1f"
}
Frame {
msec: 912
- hash: "52f90c22e44475fac04559164c044aee"
+ hash: "92e4f7c09e41b5fb97feb0093e8d9c1f"
}
Frame {
msec: 928
- hash: "52f90c22e44475fac04559164c044aee"
+ hash: "92e4f7c09e41b5fb97feb0093e8d9c1f"
}
Frame {
msec: 944
- hash: "52f90c22e44475fac04559164c044aee"
+ hash: "92e4f7c09e41b5fb97feb0093e8d9c1f"
}
Frame {
msec: 960
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/align/multilineAlign.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/align/multilineAlign.qml
index 976f0b0..a427719 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetext/align/multilineAlign.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/align/multilineAlign.qml
@@ -1,4 +1,5 @@
import QtQuick 1.0
+import "../../shared" 1.0
/*Tests both the alignments of multiline text, and that
it can deal with changing them properly
@@ -8,7 +9,7 @@ Item{
height: 80
property int stage: 0
onStageChanged: if(stage == 6) Qt.quit();
- Text{
+ TestText{
text: "I am the very model of a modern major general."
anchors.fill: parent;
wrapMode: Text.WordWrap
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 56527d1..d7428dd 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: "01ef07707e44ea079350128454209892"
+ hash: "80e9ca4c4ffac9c032334a3369ef9db6"
}
Frame {
msec: 32
- hash: "01ef07707e44ea079350128454209892"
+ hash: "80e9ca4c4ffac9c032334a3369ef9db6"
}
Frame {
msec: 48
- hash: "01ef07707e44ea079350128454209892"
+ hash: "80e9ca4c4ffac9c032334a3369ef9db6"
}
Frame {
msec: 64
- hash: "01ef07707e44ea079350128454209892"
+ hash: "80e9ca4c4ffac9c032334a3369ef9db6"
}
Frame {
msec: 80
- hash: "01ef07707e44ea079350128454209892"
+ hash: "80e9ca4c4ffac9c032334a3369ef9db6"
}
Frame {
msec: 96
- hash: "01ef07707e44ea079350128454209892"
+ hash: "80e9ca4c4ffac9c032334a3369ef9db6"
}
Frame {
msec: 112
- hash: "01ef07707e44ea079350128454209892"
+ hash: "80e9ca4c4ffac9c032334a3369ef9db6"
}
Frame {
msec: 128
- hash: "01ef07707e44ea079350128454209892"
+ hash: "80e9ca4c4ffac9c032334a3369ef9db6"
}
Frame {
msec: 144
- hash: "01ef07707e44ea079350128454209892"
+ hash: "80e9ca4c4ffac9c032334a3369ef9db6"
}
Frame {
msec: 160
- hash: "01ef07707e44ea079350128454209892"
+ hash: "80e9ca4c4ffac9c032334a3369ef9db6"
}
Frame {
msec: 176
- hash: "01ef07707e44ea079350128454209892"
+ hash: "80e9ca4c4ffac9c032334a3369ef9db6"
}
Frame {
msec: 192
- hash: "01ef07707e44ea079350128454209892"
+ hash: "80e9ca4c4ffac9c032334a3369ef9db6"
}
Frame {
msec: 208
- hash: "01ef07707e44ea079350128454209892"
+ hash: "80e9ca4c4ffac9c032334a3369ef9db6"
}
Frame {
msec: 224
- hash: "01ef07707e44ea079350128454209892"
+ hash: "80e9ca4c4ffac9c032334a3369ef9db6"
}
Frame {
msec: 240
- hash: "01ef07707e44ea079350128454209892"
+ hash: "80e9ca4c4ffac9c032334a3369ef9db6"
}
Frame {
msec: 256
- hash: "01ef07707e44ea079350128454209892"
+ hash: "80e9ca4c4ffac9c032334a3369ef9db6"
}
Frame {
msec: 272
- hash: "01ef07707e44ea079350128454209892"
+ hash: "80e9ca4c4ffac9c032334a3369ef9db6"
}
Frame {
msec: 288
- hash: "01ef07707e44ea079350128454209892"
+ hash: "80e9ca4c4ffac9c032334a3369ef9db6"
}
Frame {
msec: 304
- hash: "01ef07707e44ea079350128454209892"
+ hash: "80e9ca4c4ffac9c032334a3369ef9db6"
}
Frame {
msec: 320
- hash: "01ef07707e44ea079350128454209892"
+ hash: "80e9ca4c4ffac9c032334a3369ef9db6"
}
Frame {
msec: 336
- hash: "01ef07707e44ea079350128454209892"
+ hash: "80e9ca4c4ffac9c032334a3369ef9db6"
}
Frame {
msec: 352
- hash: "01ef07707e44ea079350128454209892"
+ hash: "80e9ca4c4ffac9c032334a3369ef9db6"
}
Frame {
msec: 368
- hash: "01ef07707e44ea079350128454209892"
+ hash: "80e9ca4c4ffac9c032334a3369ef9db6"
}
Frame {
msec: 384
- hash: "01ef07707e44ea079350128454209892"
+ hash: "80e9ca4c4ffac9c032334a3369ef9db6"
}
Frame {
msec: 400
- hash: "01ef07707e44ea079350128454209892"
+ hash: "80e9ca4c4ffac9c032334a3369ef9db6"
}
Frame {
msec: 416
- hash: "01ef07707e44ea079350128454209892"
+ hash: "80e9ca4c4ffac9c032334a3369ef9db6"
}
Frame {
msec: 432
- hash: "01ef07707e44ea079350128454209892"
+ hash: "80e9ca4c4ffac9c032334a3369ef9db6"
}
Frame {
msec: 448
- hash: "01ef07707e44ea079350128454209892"
+ hash: "80e9ca4c4ffac9c032334a3369ef9db6"
}
Frame {
msec: 464
- hash: "01ef07707e44ea079350128454209892"
+ hash: "80e9ca4c4ffac9c032334a3369ef9db6"
}
Frame {
msec: 480
- hash: "01ef07707e44ea079350128454209892"
+ hash: "80e9ca4c4ffac9c032334a3369ef9db6"
}
Frame {
msec: 496
- hash: "01ef07707e44ea079350128454209892"
+ hash: "80e9ca4c4ffac9c032334a3369ef9db6"
}
}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/baseline/parentanchor.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/baseline/parentanchor.qml
index c1920db..618a65f 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetext/baseline/parentanchor.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/baseline/parentanchor.qml
@@ -1,13 +1,14 @@
import QtQuick 1.0
+import "../../shared" 1.0
Rectangle {
id: s; width: 600; height: 100;
property string text: "The quick brown fox jumps over the lazy dog."
- Text {
+ TestText {
text: s.text
anchors.verticalCenter: s.verticalCenter
}
- Text {
+ TestText {
text: s.text
anchors.baseline: s.verticalCenter
}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/bugs/QTBUG-14469.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/bugs/QTBUG-14469.qml
index ea3a939..aca7c2d 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetext/bugs/QTBUG-14469.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/bugs/QTBUG-14469.qml
@@ -1,4 +1,5 @@
import QtQuick 1.0
+import "../../shared" 1.0
/* The bug was that if text was set to "" or the size didn't increase, the text didn't repaint
ended up only repainting for 1, 10, 11, 12.
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
new file mode 100644
index 0000000..7547856
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/data-MAC/qtbug_14865.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/data-MAC/qtbug_14865.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/data-MAC/qtbug_14865.1.png
new file mode 100644
index 0000000..84430bb
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/data-MAC/qtbug_14865.1.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/data-MAC/qtbug_14865.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/data-MAC/qtbug_14865.qml
new file mode 100644
index 0000000..6b9986f
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/data-MAC/qtbug_14865.qml
@@ -0,0 +1,447 @@
+import Qt.VisualTest 4.7
+
+VisualTest {
+ Frame {
+ msec: 0
+ }
+ Frame {
+ msec: 16
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 32
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 48
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 64
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 80
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 96
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 112
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 128
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 144
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 160
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 176
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 192
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 208
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 224
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 240
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 256
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 272
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 288
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 304
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 320
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 336
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 352
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 368
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 384
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 400
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 416
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 432
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 448
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 464
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 480
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 496
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 512
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 528
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 544
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 560
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 576
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 592
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 608
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 624
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 640
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 656
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 672
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 688
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 704
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 720
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 736
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 752
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 768
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 784
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 800
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 816
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 832
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 848
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 864
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 880
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 896
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 912
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 928
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 944
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 960
+ image: "qtbug_14865.0.png"
+ }
+ Frame {
+ msec: 976
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 992
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 1008
+ hash: "35c278720fd30e14dce9cf8684dd2cd7"
+ }
+ Frame {
+ msec: 1024
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1040
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1056
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1072
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1088
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1104
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1120
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1136
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1152
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1168
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1184
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1200
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1216
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1232
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1248
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1264
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1280
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1296
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1312
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1328
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1344
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1360
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1376
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1392
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1408
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1424
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1440
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1456
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1472
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1488
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1504
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1520
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1536
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1552
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1568
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1584
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1600
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1616
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1632
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1648
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1664
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1680
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1696
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1712
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1728
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1744
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1760
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/data-X11/qtbug_14865.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/data-X11/qtbug_14865.0.png
new file mode 100644
index 0000000..a4bae3a
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/data-X11/qtbug_14865.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/data-X11/qtbug_14865.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/data-X11/qtbug_14865.qml
new file mode 100644
index 0000000..a470a66
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/data-X11/qtbug_14865.qml
@@ -0,0 +1,447 @@
+import Qt.VisualTest 4.7
+
+VisualTest {
+ Frame {
+ msec: 0
+ }
+ Frame {
+ msec: 16
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 32
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 48
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 64
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 80
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 96
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 112
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 128
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 144
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 160
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 176
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 192
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 208
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 224
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 240
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 256
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 272
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 288
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 304
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 320
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 336
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 352
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 368
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 384
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 400
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 416
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 432
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 448
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 464
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 480
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 496
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 512
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 528
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 544
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 560
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 576
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 592
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 608
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 624
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 640
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 656
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 672
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 688
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 704
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 720
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 736
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 752
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 768
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 784
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 800
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 816
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 832
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 848
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 864
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 880
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 896
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 912
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 928
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 944
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 960
+ image: "qtbug_14865.0.png"
+ }
+ Frame {
+ msec: 976
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 992
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 1008
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 1024
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1040
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1056
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1072
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1088
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1104
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1120
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1136
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1152
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1168
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1184
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1200
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1216
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1232
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1248
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1264
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1280
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1296
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1312
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1328
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1344
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1360
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1376
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1392
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1408
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1424
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1440
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1456
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1472
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1488
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1504
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1520
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1536
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1552
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1568
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1584
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1600
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1616
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1632
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1648
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1664
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1680
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1696
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1712
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1728
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1744
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1760
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/data/qtbug_14865.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/data/qtbug_14865.0.png
new file mode 100644
index 0000000..a4bae3a
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/data/qtbug_14865.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/data/qtbug_14865.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/data/qtbug_14865.qml
new file mode 100644
index 0000000..a470a66
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/data/qtbug_14865.qml
@@ -0,0 +1,447 @@
+import Qt.VisualTest 4.7
+
+VisualTest {
+ Frame {
+ msec: 0
+ }
+ Frame {
+ msec: 16
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 32
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 48
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 64
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 80
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 96
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 112
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 128
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 144
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 160
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 176
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 192
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 208
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 224
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 240
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 256
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 272
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 288
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 304
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 320
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 336
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 352
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 368
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 384
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 400
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 416
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 432
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 448
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 464
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 480
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 496
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 512
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 528
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 544
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 560
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 576
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 592
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 608
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 624
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 640
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 656
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 672
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 688
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 704
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 720
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 736
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 752
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 768
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 784
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 800
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 816
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 832
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 848
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 864
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 880
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 896
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 912
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 928
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 944
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 960
+ image: "qtbug_14865.0.png"
+ }
+ Frame {
+ msec: 976
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 992
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 1008
+ hash: "fd4d35de0a95388dd92ffbb82fbe0e8a"
+ }
+ Frame {
+ msec: 1024
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1040
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1056
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1072
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1088
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1104
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1120
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1136
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1152
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1168
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1184
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1200
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1216
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1232
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1248
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1264
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1280
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1296
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1312
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1328
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1344
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1360
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1376
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1392
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1408
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1424
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1440
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1456
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1472
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1488
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1504
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1520
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1536
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1552
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1568
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1584
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1600
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1616
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1632
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1648
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1664
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1680
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1696
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1712
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1728
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1744
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+ Frame {
+ msec: 1760
+ hash: "eee4600ac08b458ac7ac2320e225674c"
+ }
+}
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 91ee2e5..88e065b 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide.0.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide.qml
index 718375a..96144e1 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide.qml
@@ -6,239 +6,239 @@ VisualTest {
}
Frame {
msec: 16
- hash: "10e33a5f4c2161281d5a6b4481a17921"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 32
- hash: "10e33a5f4c2161281d5a6b4481a17921"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 48
- hash: "10e33a5f4c2161281d5a6b4481a17921"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 64
- hash: "10e33a5f4c2161281d5a6b4481a17921"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 80
- hash: "10e33a5f4c2161281d5a6b4481a17921"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 96
- hash: "10e33a5f4c2161281d5a6b4481a17921"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 112
- hash: "10e33a5f4c2161281d5a6b4481a17921"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 128
- hash: "10e33a5f4c2161281d5a6b4481a17921"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 144
- hash: "10e33a5f4c2161281d5a6b4481a17921"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 160
- hash: "10e33a5f4c2161281d5a6b4481a17921"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 176
- hash: "10e33a5f4c2161281d5a6b4481a17921"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 192
- hash: "10e33a5f4c2161281d5a6b4481a17921"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 208
- hash: "10e33a5f4c2161281d5a6b4481a17921"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 224
- hash: "10e33a5f4c2161281d5a6b4481a17921"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 240
- hash: "10e33a5f4c2161281d5a6b4481a17921"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 256
- hash: "10e33a5f4c2161281d5a6b4481a17921"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 272
- hash: "10e33a5f4c2161281d5a6b4481a17921"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 288
- hash: "10e33a5f4c2161281d5a6b4481a17921"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 304
- hash: "10e33a5f4c2161281d5a6b4481a17921"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 320
- hash: "10e33a5f4c2161281d5a6b4481a17921"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 336
- hash: "10e33a5f4c2161281d5a6b4481a17921"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 352
- hash: "10e33a5f4c2161281d5a6b4481a17921"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 368
- hash: "10e33a5f4c2161281d5a6b4481a17921"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 384
- hash: "10e33a5f4c2161281d5a6b4481a17921"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 400
- hash: "10e33a5f4c2161281d5a6b4481a17921"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 416
- hash: "10e33a5f4c2161281d5a6b4481a17921"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 432
- hash: "10e33a5f4c2161281d5a6b4481a17921"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 448
- hash: "10e33a5f4c2161281d5a6b4481a17921"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 464
- hash: "10e33a5f4c2161281d5a6b4481a17921"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 480
- hash: "10e33a5f4c2161281d5a6b4481a17921"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 496
- hash: "10e33a5f4c2161281d5a6b4481a17921"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 512
- hash: "10e33a5f4c2161281d5a6b4481a17921"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 528
- hash: "10e33a5f4c2161281d5a6b4481a17921"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 544
- hash: "10e33a5f4c2161281d5a6b4481a17921"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 560
- hash: "10e33a5f4c2161281d5a6b4481a17921"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 576
- hash: "10e33a5f4c2161281d5a6b4481a17921"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 592
- hash: "10e33a5f4c2161281d5a6b4481a17921"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 608
- hash: "10e33a5f4c2161281d5a6b4481a17921"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 624
- hash: "10e33a5f4c2161281d5a6b4481a17921"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 640
- hash: "10e33a5f4c2161281d5a6b4481a17921"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 656
- hash: "10e33a5f4c2161281d5a6b4481a17921"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 672
- hash: "10e33a5f4c2161281d5a6b4481a17921"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 688
- hash: "10e33a5f4c2161281d5a6b4481a17921"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 704
- hash: "10e33a5f4c2161281d5a6b4481a17921"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 720
- hash: "10e33a5f4c2161281d5a6b4481a17921"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 736
- hash: "10e33a5f4c2161281d5a6b4481a17921"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 752
- hash: "10e33a5f4c2161281d5a6b4481a17921"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 768
- hash: "10e33a5f4c2161281d5a6b4481a17921"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 784
- hash: "10e33a5f4c2161281d5a6b4481a17921"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 800
- hash: "10e33a5f4c2161281d5a6b4481a17921"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 816
- hash: "10e33a5f4c2161281d5a6b4481a17921"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 832
- hash: "10e33a5f4c2161281d5a6b4481a17921"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 848
- hash: "10e33a5f4c2161281d5a6b4481a17921"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 864
- hash: "10e33a5f4c2161281d5a6b4481a17921"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 880
- hash: "10e33a5f4c2161281d5a6b4481a17921"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 896
- hash: "10e33a5f4c2161281d5a6b4481a17921"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 912
- hash: "10e33a5f4c2161281d5a6b4481a17921"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 928
- hash: "10e33a5f4c2161281d5a6b4481a17921"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 944
- hash: "10e33a5f4c2161281d5a6b4481a17921"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 960
@@ -246,34 +246,34 @@ VisualTest {
}
Frame {
msec: 976
- hash: "10e33a5f4c2161281d5a6b4481a17921"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Key {
type: 6
key: 16777249
- modifiers: 67108864
+ modifiers: 0
text: ""
autorep: false
count: 1
}
Frame {
msec: 992
- hash: "10e33a5f4c2161281d5a6b4481a17921"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 1008
- hash: "10e33a5f4c2161281d5a6b4481a17921"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 1024
- hash: "10e33a5f4c2161281d5a6b4481a17921"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 1040
- hash: "10e33a5f4c2161281d5a6b4481a17921"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
Frame {
msec: 1056
- hash: "10e33a5f4c2161281d5a6b4481a17921"
+ hash: "7d056af7620fe8387955a1401a4f088a"
}
}
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 0f9a0aa..4df514a 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.0.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.1.png
index f3bb7b9..e752fec 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.1.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.1.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.2.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.2.png
index b2f09de..d2f8633 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.2.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.2.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.3.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.3.png
index bca63db..0162321 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.3.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.3.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.qml
index 48a0ff4..b531942 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.qml
@@ -6,239 +6,239 @@ VisualTest {
}
Frame {
msec: 16
- hash: "083c607c9b66240f445611a18f3025b3"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 32
- hash: "083c607c9b66240f445611a18f3025b3"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 48
- hash: "083c607c9b66240f445611a18f3025b3"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 64
- hash: "083c607c9b66240f445611a18f3025b3"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 80
- hash: "083c607c9b66240f445611a18f3025b3"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 96
- hash: "083c607c9b66240f445611a18f3025b3"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 112
- hash: "083c607c9b66240f445611a18f3025b3"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 128
- hash: "083c607c9b66240f445611a18f3025b3"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 144
- hash: "083c607c9b66240f445611a18f3025b3"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 160
- hash: "083c607c9b66240f445611a18f3025b3"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 176
- hash: "083c607c9b66240f445611a18f3025b3"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 192
- hash: "083c607c9b66240f445611a18f3025b3"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 208
- hash: "083c607c9b66240f445611a18f3025b3"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 224
- hash: "083c607c9b66240f445611a18f3025b3"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 240
- hash: "083c607c9b66240f445611a18f3025b3"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 256
- hash: "083c607c9b66240f445611a18f3025b3"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 272
- hash: "083c607c9b66240f445611a18f3025b3"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 288
- hash: "083c607c9b66240f445611a18f3025b3"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 304
- hash: "083c607c9b66240f445611a18f3025b3"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 320
- hash: "083c607c9b66240f445611a18f3025b3"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 336
- hash: "083c607c9b66240f445611a18f3025b3"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 352
- hash: "083c607c9b66240f445611a18f3025b3"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 368
- hash: "083c607c9b66240f445611a18f3025b3"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 384
- hash: "083c607c9b66240f445611a18f3025b3"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 400
- hash: "083c607c9b66240f445611a18f3025b3"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 416
- hash: "083c607c9b66240f445611a18f3025b3"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 432
- hash: "57993cfe25ba9e6f3dcdcea5fab6545c"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 448
- hash: "57993cfe25ba9e6f3dcdcea5fab6545c"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 464
- hash: "57993cfe25ba9e6f3dcdcea5fab6545c"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 480
- hash: "45086d8e81c178855fc1e8fd283b7157"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 496
- hash: "45086d8e81c178855fc1e8fd283b7157"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 512
- hash: "45086d8e81c178855fc1e8fd283b7157"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 528
- hash: "45086d8e81c178855fc1e8fd283b7157"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 544
- hash: "45086d8e81c178855fc1e8fd283b7157"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 560
- hash: "45086d8e81c178855fc1e8fd283b7157"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 576
- hash: "c859ff5a516792a614008d0d3d096060"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 592
- hash: "c859ff5a516792a614008d0d3d096060"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 608
- hash: "c859ff5a516792a614008d0d3d096060"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 624
- hash: "c859ff5a516792a614008d0d3d096060"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 640
- hash: "c859ff5a516792a614008d0d3d096060"
+ hash: "90a45871fcfc509e60d4ee01527cde3b"
}
Frame {
msec: 656
- hash: "02d4eb733c7249f2c38c1768a9988739"
+ hash: "c73bf21c0c9946e123372c660c78e7dd"
}
Frame {
msec: 672
- hash: "02d4eb733c7249f2c38c1768a9988739"
+ hash: "c73bf21c0c9946e123372c660c78e7dd"
}
Frame {
msec: 688
- hash: "f87a38e5ef6cfe9d5c131671fecb7903"
+ hash: "c73bf21c0c9946e123372c660c78e7dd"
}
Frame {
msec: 704
- hash: "f87a38e5ef6cfe9d5c131671fecb7903"
+ hash: "bba29f9ce1a1d7dafdfe34b0ab952658"
}
Frame {
msec: 720
- hash: "f87a38e5ef6cfe9d5c131671fecb7903"
+ hash: "bba29f9ce1a1d7dafdfe34b0ab952658"
}
Frame {
msec: 736
- hash: "f87a38e5ef6cfe9d5c131671fecb7903"
+ hash: "bba29f9ce1a1d7dafdfe34b0ab952658"
}
Frame {
msec: 752
- hash: "f87a38e5ef6cfe9d5c131671fecb7903"
+ hash: "bba29f9ce1a1d7dafdfe34b0ab952658"
}
Frame {
msec: 768
- hash: "f87a38e5ef6cfe9d5c131671fecb7903"
+ hash: "bba29f9ce1a1d7dafdfe34b0ab952658"
}
Frame {
msec: 784
- hash: "3262cf6b60e56028056b81db17cfef61"
+ hash: "26f95496c4f1fa217d681a1ae79eff86"
}
Frame {
msec: 800
- hash: "3262cf6b60e56028056b81db17cfef61"
+ hash: "26f95496c4f1fa217d681a1ae79eff86"
}
Frame {
msec: 816
- hash: "3262cf6b60e56028056b81db17cfef61"
+ hash: "26f95496c4f1fa217d681a1ae79eff86"
}
Frame {
msec: 832
- hash: "31c337926e645ad93699a223c7ad223e"
+ hash: "26f95496c4f1fa217d681a1ae79eff86"
}
Frame {
msec: 848
- hash: "31c337926e645ad93699a223c7ad223e"
+ hash: "96a83eae50a073573ace90239a64d326"
}
Frame {
msec: 864
- hash: "31c337926e645ad93699a223c7ad223e"
+ hash: "96a83eae50a073573ace90239a64d326"
}
Frame {
msec: 880
- hash: "31c337926e645ad93699a223c7ad223e"
+ hash: "7b15d75c611f24977f2a1b44ef9e16d8"
}
Frame {
msec: 896
- hash: "31c337926e645ad93699a223c7ad223e"
+ hash: "7b15d75c611f24977f2a1b44ef9e16d8"
}
Frame {
msec: 912
- hash: "64253f08448ad6884b76271afe7831ab"
+ hash: "7b15d75c611f24977f2a1b44ef9e16d8"
}
Frame {
msec: 928
- hash: "64253f08448ad6884b76271afe7831ab"
+ hash: "7b15d75c611f24977f2a1b44ef9e16d8"
}
Frame {
msec: 944
- hash: "64253f08448ad6884b76271afe7831ab"
+ hash: "7b15d75c611f24977f2a1b44ef9e16d8"
}
Frame {
msec: 960
@@ -246,247 +246,247 @@ VisualTest {
}
Frame {
msec: 976
- hash: "64253f08448ad6884b76271afe7831ab"
+ hash: "7b15d75c611f24977f2a1b44ef9e16d8"
}
Frame {
msec: 992
- hash: "f463cbd97856cd3cb0316cfbbc4c960f"
+ hash: "7b000cccb4e4cdaa53b025d235478b1c"
}
Frame {
msec: 1008
- hash: "f463cbd97856cd3cb0316cfbbc4c960f"
+ hash: "7b000cccb4e4cdaa53b025d235478b1c"
}
Frame {
msec: 1024
- hash: "06731429ea2d012364b2fd6177e4fcb1"
+ hash: "18366b01550fdd4a7dc7305a6289ac9b"
}
Frame {
msec: 1040
- hash: "06731429ea2d012364b2fd6177e4fcb1"
+ hash: "18366b01550fdd4a7dc7305a6289ac9b"
}
Frame {
msec: 1056
- hash: "06731429ea2d012364b2fd6177e4fcb1"
+ hash: "18366b01550fdd4a7dc7305a6289ac9b"
}
Frame {
msec: 1072
- hash: "06731429ea2d012364b2fd6177e4fcb1"
+ hash: "18366b01550fdd4a7dc7305a6289ac9b"
}
Frame {
msec: 1088
- hash: "06731429ea2d012364b2fd6177e4fcb1"
+ hash: "18366b01550fdd4a7dc7305a6289ac9b"
}
Frame {
msec: 1104
- hash: "a3f1acd84b5fc99e8ffa3c900013ca0d"
+ hash: "cde86069e7f9809ef2c88cc6ea83910b"
}
Frame {
msec: 1120
- hash: "a3f1acd84b5fc99e8ffa3c900013ca0d"
+ hash: "cde86069e7f9809ef2c88cc6ea83910b"
}
Frame {
msec: 1136
- hash: "a3f1acd84b5fc99e8ffa3c900013ca0d"
+ hash: "cde86069e7f9809ef2c88cc6ea83910b"
}
Frame {
msec: 1152
- hash: "2cb79791e784739b5c4a12578df47205"
+ hash: "cde86069e7f9809ef2c88cc6ea83910b"
}
Frame {
msec: 1168
- hash: "2cb79791e784739b5c4a12578df47205"
+ hash: "b8c7416944cb741ceb4ee0e8545037b1"
}
Frame {
msec: 1184
- hash: "2cb79791e784739b5c4a12578df47205"
+ hash: "b8c7416944cb741ceb4ee0e8545037b1"
}
Frame {
msec: 1200
- hash: "c040d9e9494193164206890e8dd79508"
+ hash: "b8c7416944cb741ceb4ee0e8545037b1"
}
Frame {
msec: 1216
- hash: "c040d9e9494193164206890e8dd79508"
+ hash: "74a03bf98bb205d7962e0fcc025c4ed3"
}
Frame {
msec: 1232
- hash: "c040d9e9494193164206890e8dd79508"
+ hash: "74a03bf98bb205d7962e0fcc025c4ed3"
}
Frame {
msec: 1248
- hash: "daaa92c4049a1ef9d290d99b0c83306e"
+ hash: "74a03bf98bb205d7962e0fcc025c4ed3"
}
Frame {
msec: 1264
- hash: "daaa92c4049a1ef9d290d99b0c83306e"
+ hash: "74a03bf98bb205d7962e0fcc025c4ed3"
}
Frame {
msec: 1280
- hash: "daaa92c4049a1ef9d290d99b0c83306e"
+ hash: "0d286d7e274868e87f7de4367b69386e"
}
Frame {
msec: 1296
- hash: "daaa92c4049a1ef9d290d99b0c83306e"
+ hash: "0d286d7e274868e87f7de4367b69386e"
}
Frame {
msec: 1312
- hash: "daaa92c4049a1ef9d290d99b0c83306e"
+ hash: "892e9e8feeb15bbad5f38cb354aa7290"
}
Frame {
msec: 1328
- hash: "afedb8f328ae31f2e5d68cd917d652ff"
+ hash: "892e9e8feeb15bbad5f38cb354aa7290"
}
Frame {
msec: 1344
- hash: "afedb8f328ae31f2e5d68cd917d652ff"
+ hash: "892e9e8feeb15bbad5f38cb354aa7290"
}
Frame {
msec: 1360
- hash: "afedb8f328ae31f2e5d68cd917d652ff"
+ hash: "06d6ad94b01af5b441fd64536f7740ff"
}
Frame {
msec: 1376
- hash: "afedb8f328ae31f2e5d68cd917d652ff"
+ hash: "06d6ad94b01af5b441fd64536f7740ff"
}
Frame {
msec: 1392
- hash: "afedb8f328ae31f2e5d68cd917d652ff"
+ hash: "06d6ad94b01af5b441fd64536f7740ff"
}
Frame {
msec: 1408
- hash: "1a7c95dcd5dd375a01179626d3e1bb4b"
+ hash: "0552844f7915835d3a35a01137d4c310"
}
Frame {
msec: 1424
- hash: "1a7c95dcd5dd375a01179626d3e1bb4b"
+ hash: "0552844f7915835d3a35a01137d4c310"
}
Frame {
msec: 1440
- hash: "1a7c95dcd5dd375a01179626d3e1bb4b"
+ hash: "0552844f7915835d3a35a01137d4c310"
}
Frame {
msec: 1456
- hash: "1a7c95dcd5dd375a01179626d3e1bb4b"
+ hash: "0552844f7915835d3a35a01137d4c310"
}
Frame {
msec: 1472
- hash: "1a7c95dcd5dd375a01179626d3e1bb4b"
+ hash: "0552844f7915835d3a35a01137d4c310"
}
Frame {
msec: 1488
- hash: "79e56686d52dad27374fe45933f7e045"
+ hash: "afdf5d4d9e49a82a395afad6b3fe4f86"
}
Frame {
msec: 1504
- hash: "79e56686d52dad27374fe45933f7e045"
+ hash: "afdf5d4d9e49a82a395afad6b3fe4f86"
}
Frame {
msec: 1520
- hash: "79e56686d52dad27374fe45933f7e045"
+ hash: "afdf5d4d9e49a82a395afad6b3fe4f86"
}
Frame {
msec: 1536
- hash: "79e56686d52dad27374fe45933f7e045"
+ hash: "afdf5d4d9e49a82a395afad6b3fe4f86"
}
Frame {
msec: 1552
- hash: "79e56686d52dad27374fe45933f7e045"
+ hash: "bb434e586d40ae0ebcb89cde55a4ca11"
}
Frame {
msec: 1568
- hash: "79e56686d52dad27374fe45933f7e045"
+ hash: "bb434e586d40ae0ebcb89cde55a4ca11"
}
Frame {
msec: 1584
- hash: "ad8f8e33731a8861016c3c9567419fff"
+ hash: "bb434e586d40ae0ebcb89cde55a4ca11"
}
Frame {
msec: 1600
- hash: "ad8f8e33731a8861016c3c9567419fff"
+ hash: "bb434e586d40ae0ebcb89cde55a4ca11"
}
Frame {
msec: 1616
- hash: "ad8f8e33731a8861016c3c9567419fff"
+ hash: "bb434e586d40ae0ebcb89cde55a4ca11"
}
Frame {
msec: 1632
- hash: "609e9d64c3e376b37cf0833333d57a0b"
+ hash: "771561a07b3eb2396231b17343da7125"
}
Frame {
msec: 1648
- hash: "609e9d64c3e376b37cf0833333d57a0b"
+ hash: "771561a07b3eb2396231b17343da7125"
}
Frame {
msec: 1664
- hash: "609e9d64c3e376b37cf0833333d57a0b"
+ hash: "771561a07b3eb2396231b17343da7125"
}
Frame {
msec: 1680
- hash: "609e9d64c3e376b37cf0833333d57a0b"
+ hash: "771561a07b3eb2396231b17343da7125"
}
Frame {
msec: 1696
- hash: "f3a64e17c082529f753292a722a2b3e8"
+ hash: "771561a07b3eb2396231b17343da7125"
}
Frame {
msec: 1712
- hash: "f3a64e17c082529f753292a722a2b3e8"
+ hash: "771561a07b3eb2396231b17343da7125"
}
Frame {
msec: 1728
- hash: "f3a64e17c082529f753292a722a2b3e8"
+ hash: "d3d23db79c5f2a374b267bcda8919d1e"
}
Frame {
msec: 1744
- hash: "76627f7257d24b08a9011c806d4c8458"
+ hash: "d3d23db79c5f2a374b267bcda8919d1e"
}
Key {
type: 6
key: 16777249
- modifiers: 67108864
+ modifiers: 0
text: ""
autorep: false
count: 1
}
Frame {
msec: 1760
- hash: "76627f7257d24b08a9011c806d4c8458"
+ hash: "36a40dbdbb39122d30c26643e5924548"
}
Frame {
msec: 1776
- hash: "76627f7257d24b08a9011c806d4c8458"
+ hash: "36a40dbdbb39122d30c26643e5924548"
}
Frame {
msec: 1792
- hash: "76627f7257d24b08a9011c806d4c8458"
+ hash: "36a40dbdbb39122d30c26643e5924548"
}
Frame {
msec: 1808
- hash: "4275796ca36c974f6ba7ba2fc7c3d68f"
+ hash: "36a40dbdbb39122d30c26643e5924548"
}
Frame {
msec: 1824
- hash: "4275796ca36c974f6ba7ba2fc7c3d68f"
+ hash: "36a40dbdbb39122d30c26643e5924548"
}
Frame {
msec: 1840
- hash: "4275796ca36c974f6ba7ba2fc7c3d68f"
+ hash: "6a202f32d3d7a7c9edc97e55c2fe7aca"
}
Frame {
msec: 1856
- hash: "4275796ca36c974f6ba7ba2fc7c3d68f"
+ hash: "6a202f32d3d7a7c9edc97e55c2fe7aca"
}
Frame {
msec: 1872
- hash: "4275796ca36c974f6ba7ba2fc7c3d68f"
+ hash: "6a202f32d3d7a7c9edc97e55c2fe7aca"
}
Frame {
msec: 1888
- hash: "9005e33c220aaadb6c1b756c496140b5"
+ hash: "765b11a4fff9a7295440568899107159"
}
Frame {
msec: 1904
- hash: "9005e33c220aaadb6c1b756c496140b5"
+ hash: "765b11a4fff9a7295440568899107159"
}
Frame {
msec: 1920
@@ -494,239 +494,239 @@ VisualTest {
}
Frame {
msec: 1936
- hash: "9005e33c220aaadb6c1b756c496140b5"
+ hash: "765b11a4fff9a7295440568899107159"
}
Frame {
msec: 1952
- hash: "9005e33c220aaadb6c1b756c496140b5"
+ hash: "765b11a4fff9a7295440568899107159"
}
Frame {
msec: 1968
- hash: "1664ce25b0e427b89e64c00668797dc1"
+ hash: "e2726e028d0a17a918a28d248a087d71"
}
Frame {
msec: 1984
- hash: "1664ce25b0e427b89e64c00668797dc1"
+ hash: "e2726e028d0a17a918a28d248a087d71"
}
Frame {
msec: 2000
- hash: "1664ce25b0e427b89e64c00668797dc1"
+ hash: "e2726e028d0a17a918a28d248a087d71"
}
Frame {
msec: 2016
- hash: "1664ce25b0e427b89e64c00668797dc1"
+ hash: "e2726e028d0a17a918a28d248a087d71"
}
Frame {
msec: 2032
- hash: "1664ce25b0e427b89e64c00668797dc1"
+ hash: "94243dc2a8013e86250c993103b2d789"
}
Frame {
msec: 2048
- hash: "4421ad90c93cca320b790c0432745a5e"
+ hash: "94243dc2a8013e86250c993103b2d789"
}
Frame {
msec: 2064
- hash: "4421ad90c93cca320b790c0432745a5e"
+ hash: "94243dc2a8013e86250c993103b2d789"
}
Frame {
msec: 2080
- hash: "4421ad90c93cca320b790c0432745a5e"
+ hash: "94243dc2a8013e86250c993103b2d789"
}
Frame {
msec: 2096
- hash: "c21285318beec99e9afd1dde46a5497b"
+ hash: "94243dc2a8013e86250c993103b2d789"
}
Frame {
msec: 2112
- hash: "c21285318beec99e9afd1dde46a5497b"
+ hash: "d8fdababa06e1cafa9047de16d5a07b5"
}
Frame {
msec: 2128
- hash: "c21285318beec99e9afd1dde46a5497b"
+ hash: "d8fdababa06e1cafa9047de16d5a07b5"
}
Frame {
msec: 2144
- hash: "ec4f44aa4f4b7de7e597cab376c1f82f"
+ hash: "d8fdababa06e1cafa9047de16d5a07b5"
}
Frame {
msec: 2160
- hash: "ec4f44aa4f4b7de7e597cab376c1f82f"
+ hash: "d8fdababa06e1cafa9047de16d5a07b5"
}
Frame {
msec: 2176
- hash: "ec4f44aa4f4b7de7e597cab376c1f82f"
+ hash: "d8fdababa06e1cafa9047de16d5a07b5"
}
Frame {
msec: 2192
- hash: "ad984149e44b3be55e420b1be3c0b8c3"
+ hash: "f31d3f99faff3289b38ec91a43108707"
}
Frame {
msec: 2208
- hash: "ad984149e44b3be55e420b1be3c0b8c3"
+ hash: "f31d3f99faff3289b38ec91a43108707"
}
Frame {
msec: 2224
- hash: "ad984149e44b3be55e420b1be3c0b8c3"
+ hash: "f31d3f99faff3289b38ec91a43108707"
}
Frame {
msec: 2240
- hash: "ad984149e44b3be55e420b1be3c0b8c3"
+ hash: "60468f768e70c91cd28dca9479ed7738"
}
Frame {
msec: 2256
- hash: "ad984149e44b3be55e420b1be3c0b8c3"
+ hash: "60468f768e70c91cd28dca9479ed7738"
}
Frame {
msec: 2272
- hash: "cd016ce04572119cf89263091ae55b2f"
+ hash: "fd5e8714cdd406f5626682c15a6efa38"
}
Frame {
msec: 2288
- hash: "cd016ce04572119cf89263091ae55b2f"
+ hash: "fd5e8714cdd406f5626682c15a6efa38"
}
Frame {
msec: 2304
- hash: "e621ae81e0da861323efe03d1a6f2ac4"
+ hash: "fd5e8714cdd406f5626682c15a6efa38"
}
Frame {
msec: 2320
- hash: "e621ae81e0da861323efe03d1a6f2ac4"
+ hash: "20f37569f7f3b374753b991b28d98e74"
}
Frame {
msec: 2336
- hash: "e621ae81e0da861323efe03d1a6f2ac4"
+ hash: "20f37569f7f3b374753b991b28d98e74"
}
Frame {
msec: 2352
- hash: "e621ae81e0da861323efe03d1a6f2ac4"
+ hash: "20f37569f7f3b374753b991b28d98e74"
}
Frame {
msec: 2368
- hash: "e621ae81e0da861323efe03d1a6f2ac4"
+ hash: "20f37569f7f3b374753b991b28d98e74"
}
Frame {
msec: 2384
- hash: "b9f9502b8acbd59927b78104dc39b3ea"
+ hash: "20f37569f7f3b374753b991b28d98e74"
}
Frame {
msec: 2400
- hash: "b9f9502b8acbd59927b78104dc39b3ea"
+ hash: "8ab72206d4ba87effd44844c67ab4d53"
}
Frame {
msec: 2416
- hash: "b9f9502b8acbd59927b78104dc39b3ea"
+ hash: "8ab72206d4ba87effd44844c67ab4d53"
}
Frame {
msec: 2432
- hash: "b9f9502b8acbd59927b78104dc39b3ea"
+ hash: "65fccdd3a8803ec1d70a12407366fb57"
}
Frame {
msec: 2448
- hash: "b9f9502b8acbd59927b78104dc39b3ea"
+ hash: "65fccdd3a8803ec1d70a12407366fb57"
}
Frame {
msec: 2464
- hash: "69bc7470ddd917ec73a075ba16715ccf"
+ hash: "65fccdd3a8803ec1d70a12407366fb57"
}
Frame {
msec: 2480
- hash: "69bc7470ddd917ec73a075ba16715ccf"
+ hash: "65fccdd3a8803ec1d70a12407366fb57"
}
Frame {
msec: 2496
- hash: "69bc7470ddd917ec73a075ba16715ccf"
+ hash: "65fccdd3a8803ec1d70a12407366fb57"
}
Frame {
msec: 2512
- hash: "69bc7470ddd917ec73a075ba16715ccf"
+ hash: "ea98cc56d2f402814d8c1b952c8bd9a0"
}
Frame {
msec: 2528
- hash: "69bc7470ddd917ec73a075ba16715ccf"
+ hash: "ea98cc56d2f402814d8c1b952c8bd9a0"
}
Frame {
msec: 2544
- hash: "9d2d1ad3db3f80ffc6fcd321a4f5adfa"
+ hash: "ea98cc56d2f402814d8c1b952c8bd9a0"
}
Frame {
msec: 2560
- hash: "9d2d1ad3db3f80ffc6fcd321a4f5adfa"
+ hash: "ea98cc56d2f402814d8c1b952c8bd9a0"
}
Frame {
msec: 2576
- hash: "9d2d1ad3db3f80ffc6fcd321a4f5adfa"
+ hash: "6dd6532db6afba17d36930bfd71abb5d"
}
Frame {
msec: 2592
- hash: "9d2d1ad3db3f80ffc6fcd321a4f5adfa"
+ hash: "6dd6532db6afba17d36930bfd71abb5d"
}
Frame {
msec: 2608
- hash: "c82742c641c411df5d9ecb4d19b7a30d"
+ hash: "6dd6532db6afba17d36930bfd71abb5d"
}
Frame {
msec: 2624
- hash: "c82742c641c411df5d9ecb4d19b7a30d"
+ hash: "6dd6532db6afba17d36930bfd71abb5d"
}
Frame {
msec: 2640
- hash: "c82742c641c411df5d9ecb4d19b7a30d"
+ hash: "6dd6532db6afba17d36930bfd71abb5d"
}
Frame {
msec: 2656
- hash: "ae50d41ef5289fc31b5cd18462905379"
+ hash: "70989ac02176a37beb2cf259cd2d9770"
}
Frame {
msec: 2672
- hash: "ae50d41ef5289fc31b5cd18462905379"
+ hash: "70989ac02176a37beb2cf259cd2d9770"
}
Frame {
msec: 2688
- hash: "ae50d41ef5289fc31b5cd18462905379"
+ hash: "70989ac02176a37beb2cf259cd2d9770"
}
Frame {
msec: 2704
- hash: "ae50d41ef5289fc31b5cd18462905379"
+ hash: "70989ac02176a37beb2cf259cd2d9770"
}
Frame {
msec: 2720
- hash: "38d393df298826121109b6bd2d454bc0"
+ hash: "1c6d8786cb42afa2af611dec5ebdcda7"
}
Frame {
msec: 2736
- hash: "38d393df298826121109b6bd2d454bc0"
+ hash: "1c6d8786cb42afa2af611dec5ebdcda7"
}
Frame {
msec: 2752
- hash: "38d393df298826121109b6bd2d454bc0"
+ hash: "3e8215d2cb61404230284ddd0041a79c"
}
Frame {
msec: 2768
- hash: "38d393df298826121109b6bd2d454bc0"
+ hash: "3e8215d2cb61404230284ddd0041a79c"
}
Frame {
msec: 2784
- hash: "38d393df298826121109b6bd2d454bc0"
+ hash: "3e8215d2cb61404230284ddd0041a79c"
}
Frame {
msec: 2800
- hash: "38d393df298826121109b6bd2d454bc0"
+ hash: "3e8215d2cb61404230284ddd0041a79c"
}
Frame {
msec: 2816
- hash: "38d393df298826121109b6bd2d454bc0"
+ hash: "3e8215d2cb61404230284ddd0041a79c"
}
Frame {
msec: 2832
- hash: "50a47e20ff34a2935b1dde36c85f7f54"
+ hash: "a4ed37665222950eab7fcb53dbe22bcf"
}
Frame {
msec: 2848
- hash: "50a47e20ff34a2935b1dde36c85f7f54"
+ hash: "a4ed37665222950eab7fcb53dbe22bcf"
}
Frame {
msec: 2864
- hash: "4daa350f9385217b9eef714f40b4e6d0"
+ hash: "a4ed37665222950eab7fcb53dbe22bcf"
}
Frame {
msec: 2880
@@ -734,239 +734,239 @@ VisualTest {
}
Frame {
msec: 2896
- hash: "4daa350f9385217b9eef714f40b4e6d0"
+ hash: "a4ed37665222950eab7fcb53dbe22bcf"
}
Frame {
msec: 2912
- hash: "0e36ea4104aa509455555796262ea30d"
+ hash: "a4ed37665222950eab7fcb53dbe22bcf"
}
Frame {
msec: 2928
- hash: "0e36ea4104aa509455555796262ea30d"
+ hash: "a7f26f5fbcc97f408974e4bc23fd0b70"
}
Frame {
msec: 2944
- hash: "0e36ea4104aa509455555796262ea30d"
+ hash: "a7f26f5fbcc97f408974e4bc23fd0b70"
}
Frame {
msec: 2960
- hash: "0e36ea4104aa509455555796262ea30d"
+ hash: "913478b8d5d05967efd1c83e80e773e2"
}
Frame {
msec: 2976
- hash: "0e36ea4104aa509455555796262ea30d"
+ hash: "913478b8d5d05967efd1c83e80e773e2"
}
Frame {
msec: 2992
- hash: "4dd59519884c4aa19834430b2b0a3040"
+ hash: "913478b8d5d05967efd1c83e80e773e2"
}
Frame {
msec: 3008
- hash: "4dd59519884c4aa19834430b2b0a3040"
+ hash: "130749caf262b3055e7ac229b6b89548"
}
Frame {
msec: 3024
- hash: "4dd59519884c4aa19834430b2b0a3040"
+ hash: "130749caf262b3055e7ac229b6b89548"
}
Frame {
msec: 3040
- hash: "4dd59519884c4aa19834430b2b0a3040"
+ hash: "130749caf262b3055e7ac229b6b89548"
}
Frame {
msec: 3056
- hash: "4dd59519884c4aa19834430b2b0a3040"
+ hash: "130749caf262b3055e7ac229b6b89548"
}
Frame {
msec: 3072
- hash: "5e2e943b2ab6f798660b32e132ec6bef"
+ hash: "130749caf262b3055e7ac229b6b89548"
}
Frame {
msec: 3088
- hash: "5e2e943b2ab6f798660b32e132ec6bef"
+ hash: "d7260d913c58065a671ff6b931bb2fb6"
}
Frame {
msec: 3104
- hash: "5e2e943b2ab6f798660b32e132ec6bef"
+ hash: "d7260d913c58065a671ff6b931bb2fb6"
}
Frame {
msec: 3120
- hash: "a64b8d6bae4b6445d5de78b126e3af63"
+ hash: "d7260d913c58065a671ff6b931bb2fb6"
}
Frame {
msec: 3136
- hash: "a64b8d6bae4b6445d5de78b126e3af63"
+ hash: "d7260d913c58065a671ff6b931bb2fb6"
}
Frame {
msec: 3152
- hash: "8732d4c3b6ea276079794d2c892d14a9"
+ hash: "9059402dce5cb1813af8f7ebbd831bca"
}
Frame {
msec: 3168
- hash: "8732d4c3b6ea276079794d2c892d14a9"
+ hash: "9059402dce5cb1813af8f7ebbd831bca"
}
Frame {
msec: 3184
- hash: "8732d4c3b6ea276079794d2c892d14a9"
+ hash: "9059402dce5cb1813af8f7ebbd831bca"
}
Frame {
msec: 3200
- hash: "931f767d8c733d2262b8c73003629fd1"
+ hash: "80387fc8aedc0c490c689c3a1711fe9f"
}
Frame {
msec: 3216
- hash: "931f767d8c733d2262b8c73003629fd1"
+ hash: "80387fc8aedc0c490c689c3a1711fe9f"
}
Frame {
msec: 3232
- hash: "931f767d8c733d2262b8c73003629fd1"
+ hash: "80387fc8aedc0c490c689c3a1711fe9f"
}
Frame {
msec: 3248
- hash: "931f767d8c733d2262b8c73003629fd1"
+ hash: "f461bf58cbfd345a3f4e087cfcb0e9f0"
}
Frame {
msec: 3264
- hash: "931f767d8c733d2262b8c73003629fd1"
+ hash: "f461bf58cbfd345a3f4e087cfcb0e9f0"
}
Frame {
msec: 3280
- hash: "526f7d87bdce834a8d4396df4406d4c7"
+ hash: "d41a792b81cb891a91f2bff6dbee3bdd"
}
Frame {
msec: 3296
- hash: "526f7d87bdce834a8d4396df4406d4c7"
+ hash: "d41a792b81cb891a91f2bff6dbee3bdd"
}
Frame {
msec: 3312
- hash: "526f7d87bdce834a8d4396df4406d4c7"
+ hash: "d41a792b81cb891a91f2bff6dbee3bdd"
}
Frame {
msec: 3328
- hash: "526f7d87bdce834a8d4396df4406d4c7"
+ hash: "d41a792b81cb891a91f2bff6dbee3bdd"
}
Frame {
msec: 3344
- hash: "526f7d87bdce834a8d4396df4406d4c7"
+ hash: "d41a792b81cb891a91f2bff6dbee3bdd"
}
Frame {
msec: 3360
- hash: "0c9bb37ebb01a6127b60d26792cc3524"
+ hash: "664ac430dd416e6d1ed7e001458202cf"
}
Frame {
msec: 3376
- hash: "0c9bb37ebb01a6127b60d26792cc3524"
+ hash: "664ac430dd416e6d1ed7e001458202cf"
}
Frame {
msec: 3392
- hash: "0c9bb37ebb01a6127b60d26792cc3524"
+ hash: "664ac430dd416e6d1ed7e001458202cf"
}
Frame {
msec: 3408
- hash: "04b580975c168ef07b11496a18b55582"
+ hash: "664ac430dd416e6d1ed7e001458202cf"
}
Frame {
msec: 3424
- hash: "04b580975c168ef07b11496a18b55582"
+ hash: "664ac430dd416e6d1ed7e001458202cf"
}
Frame {
msec: 3440
- hash: "c4abe8e74b0a0a61ee671b4d7047b244"
+ hash: "c7a9e47b613745858a76a57e1782b566"
}
Frame {
msec: 3456
- hash: "c4abe8e74b0a0a61ee671b4d7047b244"
+ hash: "c7a9e47b613745858a76a57e1782b566"
}
Frame {
msec: 3472
- hash: "c4abe8e74b0a0a61ee671b4d7047b244"
+ hash: "b90d46cbd9d7d1d82cb9abfbe27fc549"
}
Frame {
msec: 3488
- hash: "c4abe8e74b0a0a61ee671b4d7047b244"
+ hash: "b90d46cbd9d7d1d82cb9abfbe27fc549"
}
Frame {
msec: 3504
- hash: "c4abe8e74b0a0a61ee671b4d7047b244"
+ hash: "b90d46cbd9d7d1d82cb9abfbe27fc549"
}
Frame {
msec: 3520
- hash: "c4abe8e74b0a0a61ee671b4d7047b244"
+ hash: "59c03ceae9b13576bd0e285234dfe264"
}
Frame {
msec: 3536
- hash: "179c36c797dfd91fdc6bd373f5331cbb"
+ hash: "59c03ceae9b13576bd0e285234dfe264"
}
Frame {
msec: 3552
- hash: "179c36c797dfd91fdc6bd373f5331cbb"
+ hash: "59c03ceae9b13576bd0e285234dfe264"
}
Frame {
msec: 3568
- hash: "179c36c797dfd91fdc6bd373f5331cbb"
+ hash: "59c03ceae9b13576bd0e285234dfe264"
}
Frame {
msec: 3584
- hash: "179c36c797dfd91fdc6bd373f5331cbb"
+ hash: "59c03ceae9b13576bd0e285234dfe264"
}
Frame {
msec: 3600
- hash: "179c36c797dfd91fdc6bd373f5331cbb"
+ hash: "b883d12eea2ec596cb6ee81f2d1db35f"
}
Frame {
msec: 3616
- hash: "49b9d5168c3fa5e09953251ffb509743"
+ hash: "b883d12eea2ec596cb6ee81f2d1db35f"
}
Frame {
msec: 3632
- hash: "49b9d5168c3fa5e09953251ffb509743"
+ hash: "b883d12eea2ec596cb6ee81f2d1db35f"
}
Frame {
msec: 3648
- hash: "49b9d5168c3fa5e09953251ffb509743"
+ hash: "b883d12eea2ec596cb6ee81f2d1db35f"
}
Frame {
msec: 3664
- hash: "49b9d5168c3fa5e09953251ffb509743"
+ hash: "9bd66e03c36c8cc279c9cfb1ea9e96a0"
}
Frame {
msec: 3680
- hash: "49b9d5168c3fa5e09953251ffb509743"
+ hash: "9bd66e03c36c8cc279c9cfb1ea9e96a0"
}
Frame {
msec: 3696
- hash: "da74be0adb46300cac7ba9bfe3660c33"
+ hash: "9bd66e03c36c8cc279c9cfb1ea9e96a0"
}
Frame {
msec: 3712
- hash: "da74be0adb46300cac7ba9bfe3660c33"
+ hash: "9bd66e03c36c8cc279c9cfb1ea9e96a0"
}
Frame {
msec: 3728
- hash: "9276749ab90c7da1eb62c6277613f75a"
+ hash: "9bd66e03c36c8cc279c9cfb1ea9e96a0"
}
Frame {
msec: 3744
- hash: "9276749ab90c7da1eb62c6277613f75a"
+ hash: "ee357c3850d0f328db859e7b790bed83"
}
Frame {
msec: 3760
- hash: "b85b7f367d4da5bd01fe87a292a356fd"
+ hash: "ee357c3850d0f328db859e7b790bed83"
}
Frame {
msec: 3776
- hash: "b85b7f367d4da5bd01fe87a292a356fd"
+ hash: "f706095272153c1e9fc4a4825ba54d91"
}
Frame {
msec: 3792
- hash: "b85b7f367d4da5bd01fe87a292a356fd"
+ hash: "f706095272153c1e9fc4a4825ba54d91"
}
Frame {
msec: 3808
- hash: "b85b7f367d4da5bd01fe87a292a356fd"
+ hash: "34f4d03164469f99bb7bcb365041cf8e"
}
Frame {
msec: 3824
- hash: "b85b7f367d4da5bd01fe87a292a356fd"
+ hash: "34f4d03164469f99bb7bcb365041cf8e"
}
Frame {
msec: 3840
@@ -974,18 +974,18 @@ VisualTest {
}
Frame {
msec: 3856
- hash: "e871d5f9d6437154ef85a60fe5a6a08e"
+ hash: "34f4d03164469f99bb7bcb365041cf8e"
}
Frame {
msec: 3872
- hash: "e871d5f9d6437154ef85a60fe5a6a08e"
+ hash: "34f4d03164469f99bb7bcb365041cf8e"
}
Frame {
msec: 3888
- hash: "f66f5d470e913f4bec6c8982702b8a60"
+ hash: "97cb5f52e1a5e82a15542b7e5f772fba"
}
Frame {
msec: 3904
- hash: "f66f5d470e913f4bec6c8982702b8a60"
+ hash: "97cb5f52e1a5e82a15542b7e5f772fba"
}
}
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 944208b..8caaf5f 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/multilength.0.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/multilength.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/multilength.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/multilength.qml
index e76ad11..30df3fa 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/multilength.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/multilength.qml
@@ -6,239 +6,239 @@ VisualTest {
}
Frame {
msec: 16
- hash: "fa4edc25cc530be81c5c18c089c76643"
+ hash: "2e258ad7cb0a2cd7c6c47a0b0a9563c1"
}
Frame {
msec: 32
- hash: "d543f734101d89c6d4e4a5992bd34cb3"
+ hash: "d818e0f4f1011a2a8f1d0d803fa18bc0"
}
Frame {
msec: 48
- hash: "fc96f61ab3f8235d96c815f8876728f5"
+ hash: "44b37be97bbd1f0e26d81f76d9643e51"
}
Frame {
msec: 64
- hash: "0bdeb73a4cfbe216ca795756baa353c8"
+ hash: "3079a5cf6b8277ae3e1b29ae09d04adc"
}
Frame {
msec: 80
- hash: "4451049db7f7d0b62325af6d27073f16"
+ hash: "ba899e6f18abb7105f915cef4e60f1e1"
}
Frame {
msec: 96
- hash: "ef51f1424db831f962960e468b547cc5"
+ hash: "6d2d2b3dc8afa60e32a39449ba90f78d"
}
Frame {
msec: 112
- hash: "c79ffb52d5aa11e2ee99e9db57c58c3e"
+ hash: "965af350a8fc20c7bcffb370802bc9d9"
}
Frame {
msec: 128
- hash: "3827b0ca877b214ceffdc7444f9eae14"
+ hash: "8e088db1ff0eb9f5c28268dee929928c"
}
Frame {
msec: 144
- hash: "8e375f05606f04f81c2ff0551ce7a290"
+ hash: "a0ba6c6bd1e491778294346eeabd8138"
}
Frame {
msec: 160
- hash: "8d48743f9d3c02cdb342c57b080ab52a"
+ hash: "068a018a5c017cb76ebf3721e0acdb35"
}
Frame {
msec: 176
- hash: "a8d1cae0e817ca059a73594f35eeccaf"
+ hash: "efa65cae0a4d027c2ec508deecef8aa5"
}
Frame {
msec: 192
- hash: "71d024907815100b5ea74e072e167384"
+ hash: "9c224e97aa56c6b203a48fb689d72c9a"
}
Frame {
msec: 208
- hash: "8f294501a7d0dff60233c922161f0b8d"
+ hash: "4f78af1e82a2dd46bab2d237d4f574e5"
}
Frame {
msec: 224
- hash: "303deae49dd99baba31af8915dd43d4d"
+ hash: "7d022c13e3ef07ca0b6618ae8865dbf1"
}
Frame {
msec: 240
- hash: "41f34af1ca4417e546d40057727a24b8"
+ hash: "1dc2ecf6cb92cd7d9e467de0049a8598"
}
Frame {
msec: 256
- hash: "baf5102132a01cb44925f7fc1532f8fb"
+ hash: "262174926ac657c3cd788e2383b5842b"
}
Frame {
msec: 272
- hash: "559c5e92b2cc8f20c2289bdabc7d2a3c"
+ hash: "984c40aaa927f9e9e73ad228f057d3d9"
}
Frame {
msec: 288
- hash: "39a50d44ae47e6c358d6ebaa2234cbfb"
+ hash: "0c74101beaeb0a59c1e6b1bf751ca71d"
}
Frame {
msec: 304
- hash: "4bdfe9e04c2ee21a584dc7612603fe62"
+ hash: "1c2dd6a6675014255e83c2ae734d717b"
}
Frame {
msec: 320
- hash: "e3ff2c98c9309964ccc612c4499817ff"
+ hash: "f6ac3e9e82a9a710f500f8053b6030ac"
}
Frame {
msec: 336
- hash: "f3509a8a9fe255e30e1b23ca36803169"
+ hash: "9676fdc060e5784e96534a962992c024"
}
Frame {
msec: 352
- hash: "644629a42f8a2c8dc1f84e274e25df52"
+ hash: "c46634183e4bde82419bf757bd674a72"
}
Frame {
msec: 368
- hash: "e169e2e67b0ebffc2181463a1e155e5c"
+ hash: "d04d082f4a1602a308da7f373cbb4094"
}
Frame {
msec: 384
- hash: "74ccb97fe629c48211543e885930f18e"
+ hash: "a4178c9ffbb74f3f221fc63bee26ca35"
}
Frame {
msec: 400
- hash: "14d97918485475971a832002a333722d"
+ hash: "0667b13789a501995b2846f7d93fb973"
}
Frame {
msec: 416
- hash: "4e768d02555701df2109d07259228b05"
+ hash: "fda46bf0beecbb4326b2fc6f6926f0a7"
}
Frame {
msec: 432
- hash: "ceeeeffb00e1f74ace1a11832d183c81"
+ hash: "85cbdea027d76dee1dad376679a40a22"
}
Frame {
msec: 448
- hash: "3e6660aff9dfd72e5bd7e67d547af8b5"
+ hash: "0fd56200749ea5882e1bd714e9803d44"
}
Frame {
msec: 464
- hash: "991a782f939dbfe96b316254177f34ad"
+ hash: "10bf5c477f64f442990716b7eec8fd70"
}
Frame {
msec: 480
- hash: "ce4adfec222428d3fd7dd6069c69674c"
+ hash: "7cbd8ba3f09c3d00051cd33006381afb"
}
Frame {
msec: 496
- hash: "27d658710bdeb0395052291bb736fdac"
+ hash: "dca10161836025808cddce9fd93f2412"
}
Frame {
msec: 512
- hash: "a448c7c9fc2b4cf62f57ced461e39a05"
+ hash: "b949ec6303ccaafc203066c7f9b33ef2"
}
Frame {
msec: 528
- hash: "0e1fd2a517db3a3fafb2840bbe550592"
+ hash: "853c521bad75c08c0dfe3a00bed01136"
}
Frame {
msec: 544
- hash: "2ff7fe0c183fddc88d0daaabb866d78b"
+ hash: "dd76c440dc8cfcb7305409483d21d65d"
}
Frame {
msec: 560
- hash: "73c952ed17daaf19755728185d999f96"
+ hash: "c9b70db4b94e4b0cc855102f43b8e731"
}
Frame {
msec: 576
- hash: "85e9928b19d66b8ab1ee6b10d8b2b401"
+ hash: "d196057b8aa1e11ec9cf11032b57ca03"
}
Frame {
msec: 592
- hash: "0c6fa7c70f98d53f2f0425e79083dc2c"
+ hash: "0fae715746a8a340a8f3c4428cf96783"
}
Frame {
msec: 608
- hash: "589813b70ea86dd5ebe47ccf2121b5a8"
+ hash: "dd2e89d00ce85b167fbc822fedbfb449"
}
Frame {
msec: 624
- hash: "7b94db2fd4f35fda4183a4351581a931"
+ hash: "a5228adf745f580364eafcbbdd994178"
}
Frame {
msec: 640
- hash: "5769822d37ed1e88aacbbaaddbd7520a"
+ hash: "f750f588ee00805bc3757940f95de9ae"
}
Frame {
msec: 656
- hash: "36ab6549d745c1d0e7a7b47b9d1f6887"
+ hash: "55a79fefc2bf6d42b442e68150e3a9bc"
}
Frame {
msec: 672
- hash: "d130cecb02cdacc0cdbcce80e492d21b"
+ hash: "7b932e7585e66cc7cd31f858ce78a6e1"
}
Frame {
msec: 688
- hash: "d1395dbf450e90c4f18c872cd50fca8f"
+ hash: "10f204c59a5bff0c49dfc7691c35cef8"
}
Frame {
msec: 704
- hash: "7415bda155a9287ba22eac9c0548f10e"
+ hash: "cf901c80729eb0b83b46777e727d43e2"
}
Frame {
msec: 720
- hash: "b65b886a632b042c00317a4013071f6c"
+ hash: "f6bf6e11ef6a71d7e746fae1d0a44531"
}
Frame {
msec: 736
- hash: "cf4289cd85cb18bbf1a677008d8f1f0a"
+ hash: "4a8795196ece8c0ef18319008dbc0f2f"
}
Frame {
msec: 752
- hash: "97a6e76519c522854ec88cc9e40165da"
+ hash: "44d32f0b5377ad3b08928413f20e95e1"
}
Frame {
msec: 768
- hash: "bb80a571507cdc994f79ef05b0ad3b68"
+ hash: "9e0dd160a465573cbac831a14e36ba6d"
}
Frame {
msec: 784
- hash: "823d647182b73e0f57ff7aca373160f1"
+ hash: "fb2e2522cee569632d9682aa04e7ca08"
}
Frame {
msec: 800
- hash: "29b649d6cc3510a904561050bea9aa5b"
+ hash: "71b0e8d7671cee10f4f71a80abcde7ec"
}
Frame {
msec: 816
- hash: "195089eb803c1eef039bac097e446ae6"
+ hash: "4affee92d320d6eca9995ddd8989627f"
}
Frame {
msec: 832
- hash: "eb5d4b8a47cec6940c5c5019e1ca2fae"
+ hash: "b3e5e26a34cd491d3cd23f4e611266e2"
}
Frame {
msec: 848
- hash: "e8aebb115dba21f631ad6bce87615fd3"
+ hash: "aa185efe8d0c4c61d4df55266830cfd8"
}
Frame {
msec: 864
- hash: "15c9982c4c71542788e563db6e069fd1"
+ hash: "19c01ead1135f84b4b3a32583815fd10"
}
Frame {
msec: 880
- hash: "8124924f33282195f0a04cb178a332b1"
+ hash: "a231a722225c26ff764f16570d1e6beb"
}
Frame {
msec: 896
- hash: "0134d4df0b3b524107baa4068c64af7f"
+ hash: "466fce12d10bd4b714d4ead14d1c5839"
}
Frame {
msec: 912
- hash: "bd3015b94540bafebfc9a7190b0e3d6c"
+ hash: "158650554c8467ed7d93c3c11177e041"
}
Frame {
msec: 928
- hash: "3edcdf689225edcba379775c86390609"
+ hash: "ac16910bc816ca6c76a78160dda8380d"
}
Frame {
msec: 944
- hash: "407d4d439efec4cb07c80a5bc6638b51"
+ hash: "23ac6eeb0c9bd48dbc844b1263a18cbb"
}
Frame {
msec: 960
@@ -246,58 +246,58 @@ VisualTest {
}
Frame {
msec: 976
- hash: "7b58d2d0726bb994d9e651411d76cbe4"
+ hash: "3da0b9d963113cfb58152bac1c757065"
}
Frame {
msec: 992
- hash: "15801c5e1e470c8c45c24debfb9b478b"
+ hash: "e1a33345ee1372069d9282406f1e5605"
}
Frame {
msec: 1008
- hash: "e257158a1da8908df7522bede4e9c4d9"
+ hash: "da872c570bccf17e88ac7db1d6d076ae"
}
Frame {
msec: 1024
- hash: "3cb21bef1761c2f70b880b54ca9234fc"
+ hash: "6feea54c6a7f9895001efeff177f9be9"
}
Frame {
msec: 1040
- hash: "b5effa369f0ab095f4345e2b9f6caa5f"
+ hash: "09049b33ca46a2fc2d06855e29ae66bf"
}
Frame {
msec: 1056
- hash: "aaafb43e6290a9e7b351dd7c13b8aaaf"
+ hash: "cd96d789f57ac1d425942416337174f1"
}
Frame {
msec: 1072
- hash: "8a4b622539868188f40f8c7fe75c6ddf"
+ hash: "0a763dd626e27ad14963aecfb8d7673c"
}
Frame {
msec: 1088
- hash: "365c2f7c0d1c718cf326864c3ba75d2e"
+ hash: "3d81f68bb7aac95b66b0cd0defbb3657"
}
Frame {
msec: 1104
- hash: "bac17384d4f375652bbc574459554835"
+ hash: "469b862006f99dfefcca803bc49287e3"
}
Frame {
msec: 1120
- hash: "6bf6917ee323a05824bd6d071459d0b2"
+ hash: "c3f698102bd46231430ab9e8029b8192"
}
Frame {
msec: 1136
- hash: "7aee8af3ef6b6592011b29281fb0e545"
+ hash: "421a9b4848a59281aea73c08a7219a33"
}
Frame {
msec: 1152
- hash: "5351b508cbd2e0352f230d211b864c4f"
+ hash: "0066eaa302678a4be35dca0c3ed33b1c"
}
Frame {
msec: 1168
- hash: "5a051f26ba6287707dbff8422d1eb9f3"
+ hash: "4cceb05bfeb231189b66f1fbdfaeccd3"
}
Frame {
msec: 1184
- hash: "67611596f75fe97b13a9cf0dc0313727"
+ hash: "ccf229cdd6fde7ef663791d27a008bee"
}
}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/elide.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/elide.0.png
index b250b38..de216ba 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/elide.0.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/elide.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/elide.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/elide.qml
index f3bc1db..fcaeed5 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/elide.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/elide.qml
@@ -6,239 +6,239 @@ VisualTest {
}
Frame {
msec: 16
- hash: "9992670f23580ce63cdd3ab3fed621a1"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 32
- hash: "9992670f23580ce63cdd3ab3fed621a1"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 48
- hash: "9992670f23580ce63cdd3ab3fed621a1"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 64
- hash: "9992670f23580ce63cdd3ab3fed621a1"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 80
- hash: "9992670f23580ce63cdd3ab3fed621a1"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 96
- hash: "9992670f23580ce63cdd3ab3fed621a1"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 112
- hash: "9992670f23580ce63cdd3ab3fed621a1"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 128
- hash: "9992670f23580ce63cdd3ab3fed621a1"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 144
- hash: "9992670f23580ce63cdd3ab3fed621a1"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 160
- hash: "9992670f23580ce63cdd3ab3fed621a1"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 176
- hash: "9992670f23580ce63cdd3ab3fed621a1"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 192
- hash: "9992670f23580ce63cdd3ab3fed621a1"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 208
- hash: "9992670f23580ce63cdd3ab3fed621a1"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 224
- hash: "9992670f23580ce63cdd3ab3fed621a1"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 240
- hash: "9992670f23580ce63cdd3ab3fed621a1"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 256
- hash: "9992670f23580ce63cdd3ab3fed621a1"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 272
- hash: "9992670f23580ce63cdd3ab3fed621a1"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 288
- hash: "9992670f23580ce63cdd3ab3fed621a1"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 304
- hash: "9992670f23580ce63cdd3ab3fed621a1"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 320
- hash: "9992670f23580ce63cdd3ab3fed621a1"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 336
- hash: "9992670f23580ce63cdd3ab3fed621a1"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 352
- hash: "9992670f23580ce63cdd3ab3fed621a1"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 368
- hash: "9992670f23580ce63cdd3ab3fed621a1"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 384
- hash: "9992670f23580ce63cdd3ab3fed621a1"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 400
- hash: "9992670f23580ce63cdd3ab3fed621a1"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 416
- hash: "9992670f23580ce63cdd3ab3fed621a1"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 432
- hash: "9992670f23580ce63cdd3ab3fed621a1"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 448
- hash: "9992670f23580ce63cdd3ab3fed621a1"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 464
- hash: "9992670f23580ce63cdd3ab3fed621a1"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 480
- hash: "9992670f23580ce63cdd3ab3fed621a1"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 496
- hash: "9992670f23580ce63cdd3ab3fed621a1"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 512
- hash: "9992670f23580ce63cdd3ab3fed621a1"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 528
- hash: "9992670f23580ce63cdd3ab3fed621a1"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 544
- hash: "9992670f23580ce63cdd3ab3fed621a1"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 560
- hash: "9992670f23580ce63cdd3ab3fed621a1"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 576
- hash: "9992670f23580ce63cdd3ab3fed621a1"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 592
- hash: "9992670f23580ce63cdd3ab3fed621a1"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 608
- hash: "9992670f23580ce63cdd3ab3fed621a1"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 624
- hash: "9992670f23580ce63cdd3ab3fed621a1"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 640
- hash: "9992670f23580ce63cdd3ab3fed621a1"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 656
- hash: "9992670f23580ce63cdd3ab3fed621a1"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 672
- hash: "9992670f23580ce63cdd3ab3fed621a1"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 688
- hash: "9992670f23580ce63cdd3ab3fed621a1"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 704
- hash: "9992670f23580ce63cdd3ab3fed621a1"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 720
- hash: "9992670f23580ce63cdd3ab3fed621a1"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 736
- hash: "9992670f23580ce63cdd3ab3fed621a1"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 752
- hash: "9992670f23580ce63cdd3ab3fed621a1"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 768
- hash: "9992670f23580ce63cdd3ab3fed621a1"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 784
- hash: "9992670f23580ce63cdd3ab3fed621a1"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 800
- hash: "9992670f23580ce63cdd3ab3fed621a1"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 816
- hash: "9992670f23580ce63cdd3ab3fed621a1"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 832
- hash: "9992670f23580ce63cdd3ab3fed621a1"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 848
- hash: "9992670f23580ce63cdd3ab3fed621a1"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 864
- hash: "9992670f23580ce63cdd3ab3fed621a1"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 880
- hash: "9992670f23580ce63cdd3ab3fed621a1"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 896
- hash: "9992670f23580ce63cdd3ab3fed621a1"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 912
- hash: "9992670f23580ce63cdd3ab3fed621a1"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 928
- hash: "9992670f23580ce63cdd3ab3fed621a1"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 944
- hash: "9992670f23580ce63cdd3ab3fed621a1"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 960
@@ -246,34 +246,34 @@ VisualTest {
}
Frame {
msec: 976
- hash: "9992670f23580ce63cdd3ab3fed621a1"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Key {
type: 6
key: 16777249
- modifiers: 0
+ modifiers: 67108864
text: ""
autorep: false
count: 1
}
Frame {
msec: 992
- hash: "9992670f23580ce63cdd3ab3fed621a1"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 1008
- hash: "9992670f23580ce63cdd3ab3fed621a1"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 1024
- hash: "9992670f23580ce63cdd3ab3fed621a1"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 1040
- hash: "9992670f23580ce63cdd3ab3fed621a1"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
Frame {
msec: 1056
- hash: "9992670f23580ce63cdd3ab3fed621a1"
+ hash: "bdf278826a033dbb744d1fa9492c9351"
}
}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/multilength.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/multilength.qml
index 5d36d48..3871f91 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/multilength.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/multilength.qml
@@ -6,71 +6,71 @@ VisualTest {
}
Frame {
msec: 16
- hash: "a9dc5058e29f9c129087eaa013002185"
+ hash: "51e3a7214bf2fd98108de683ae650b05"
}
Frame {
msec: 32
- hash: "da0d63697414c19f57235c4d133faf63"
+ hash: "72bd0f47e179c5356d4a0575939b6c05"
}
Frame {
msec: 48
- hash: "e3992f5512959c061d53fc3899acec14"
+ hash: "9229869bf23fe10394ffb6bacc38d2b5"
}
Frame {
msec: 64
- hash: "e225de5dc21fee719ebc43fa8838f841"
+ hash: "4f75c0a0b7a04c8abdf2768a819b6c14"
}
Frame {
msec: 80
- hash: "a5673b8b7ad5a9d67e785beaaa4c0307"
+ hash: "514a9a762cd0356cbcecb93e73c81534"
}
Frame {
msec: 96
- hash: "2c126bf2d794039e1380595b9c40ae2e"
+ hash: "68436451f6f3ee981bf8851944b82dda"
}
Frame {
msec: 112
- hash: "f974072b4863b842b520b4c11c427f5d"
+ hash: "fa33b582c0890bc9852f3a6c80864988"
}
Frame {
msec: 128
- hash: "bf06ec5a2c1c46e780cdd0d859b2becb"
+ hash: "f65928b270f12f2917193ba70d9388ee"
}
Frame {
msec: 144
- hash: "3a58b1900912a5a6ace72757f3af4d1a"
+ hash: "755d1421a9b2bf3be9d665f5f8d6f767"
}
Frame {
msec: 160
- hash: "3fa86df29f53e7f6f65fb6e605f5e705"
+ hash: "dbec63b93f3617440317f7ddc2fbd6fa"
}
Frame {
msec: 176
- hash: "6d29c12395050b049537819cf0a65746"
+ hash: "1ec885da7efc3d71904c79a4a4768f27"
}
Frame {
msec: 192
- hash: "352a390ab4e3e31b645f025e65885cfc"
+ hash: "a20981af2ce8e82a6c1825e438dfd815"
}
Frame {
msec: 208
- hash: "7c3be9d325f023a356b6ed73332bc804"
+ hash: "3c951028229d8d6a3a0faa18f21afbe6"
}
Frame {
msec: 224
- hash: "09dd10566eda09e0366b7bf0a8ce9e1b"
+ hash: "8354d4c9bd5ccb2eae46cdaf3fd337bb"
}
Frame {
msec: 240
- hash: "6cafcba107e48f7efe2db60a14c3749d"
+ hash: "05880d6d76fa8dc421af4d06cbdd4448"
}
Frame {
msec: 256
- hash: "a4b6df2874ce48ed5a17aab43f32e665"
+ hash: "370e33f141d0a8396b5c2bb279f9bb67"
}
Frame {
msec: 272
- hash: "b6a3df4b704fa7e8284572b9c520b03d"
+ hash: "663b162ce447eee0f2194a92b463d6fe"
}
Frame {
msec: 288
@@ -1258,66 +1258,66 @@ VisualTest {
}
Frame {
msec: 5024
- hash: "a9dc5058e29f9c129087eaa013002185"
+ hash: "51e3a7214bf2fd98108de683ae650b05"
}
Frame {
msec: 5040
- hash: "5d06ae83ab9cc218175013042922b908"
+ hash: "af3da99b9abc3b3440b22d4d428dcd1a"
}
Frame {
msec: 5056
- hash: "e225de5dc21fee719ebc43fa8838f841"
+ hash: "4f75c0a0b7a04c8abdf2768a819b6c14"
}
Frame {
msec: 5072
- hash: "b89bf31a945cb6c880e95bf2d2a6e944"
+ hash: "c73dc19d48511634717cf4e95f843a5d"
}
Frame {
msec: 5088
- hash: "fa54db3c383bc1da121c0d3b09e942d3"
+ hash: "0f263ab43dde78f1280483c6287b44a2"
}
Frame {
msec: 5104
- hash: "2c126bf2d794039e1380595b9c40ae2e"
+ hash: "68436451f6f3ee981bf8851944b82dda"
}
Frame {
msec: 5120
- hash: "1e9639693e5ec1edb72e71d126c434bb"
+ hash: "e0ea33b011cc8aef74070e26b71bd05e"
}
Frame {
msec: 5136
- hash: "3a58b1900912a5a6ace72757f3af4d1a"
+ hash: "755d1421a9b2bf3be9d665f5f8d6f767"
}
Frame {
msec: 5152
- hash: "11a846d93430e622a9750e4e2a7b76fe"
+ hash: "7e20da3dab6bd290498756ac392bc052"
}
Frame {
msec: 5168
- hash: "801d7707e86b776fe2459c42b26337f5"
+ hash: "babdfa14fbba8f6eb0c95334588123ce"
}
Frame {
msec: 5184
- hash: "6d29c12395050b049537819cf0a65746"
+ hash: "1ec885da7efc3d71904c79a4a4768f27"
}
Frame {
msec: 5200
- hash: "5a68af870474ffb8a694710b10f52bc7"
+ hash: "2159f4c9f72bca3ba98b4fd0aeb3c1ba"
}
Frame {
msec: 5216
- hash: "09dd10566eda09e0366b7bf0a8ce9e1b"
+ hash: "8354d4c9bd5ccb2eae46cdaf3fd337bb"
}
Frame {
msec: 5232
- hash: "f43b377f99f74e2cf07e419887f7ee0b"
+ hash: "ee95872db6f9440800bb98023764dc2a"
}
Frame {
msec: 5248
- hash: "108287fc253d36a5ebf8582ef2a5fd57"
+ hash: "23197dd2bb352193b72d4445912d9c94"
}
Frame {
msec: 5264
- hash: "a4b6df2874ce48ed5a17aab43f32e665"
+ hash: "370e33f141d0a8396b5c2bb279f9bb67"
}
}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/elide.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/elide.qml
index b96ecb3..e52c609 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/elide.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/elide.qml
@@ -1,4 +1,5 @@
import QtQuick 1.0
+import "../../shared" 1.0
Rectangle {
width: childrenRect.width
@@ -6,23 +7,23 @@ Rectangle {
Column {
width: 80
height: myText.height*4
- Text {
+ TestText {
elide: "ElideLeft"
text: "aaa bbb ccc ddd eee fff"
width: 80
id: myText
}
- Text {
+ TestText {
elide: "ElideMiddle"
text: "aaa bbb ccc ddd eee fff"
width: 80
}
- Text {
+ TestText {
elide: "ElideRight"
text: "aaa bbb ccc ddd eee fff"
width: 80
}
- Text {
+ TestText {
elide: "ElideNone"
text: "aaa bbb ccc ddd eee fff"
width: 80
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/elide2.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/elide2.qml
index b772982..0370a73 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/elide2.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/elide2.qml
@@ -1,10 +1,11 @@
import QtQuick 1.0
+import "../../shared" 1.0
Rectangle {
width: 500
height: 100
- Text {
+ TestText {
NumberAnimation on width { from: 500; to: 0; loops: Animation.Infinite; duration: 5000 }
elide: Text.ElideRight
text: 'Here is some very long text that we should truncate when sizing window'
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/multilength.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/multilength.qml
index 3ef64ef..db991a2 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/multilength.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/multilength.qml
@@ -1,4 +1,5 @@
import QtQuick 1.0
+import "../../shared" 1.0
Rectangle {
width: 500
@@ -9,7 +10,7 @@ Rectangle {
height: myText.height
color: "white"
anchors.centerIn: parent
- Text {
+ TestText {
id: myText
NumberAnimation on width { from: 500; to: 0; loops: Animation.Infinite; duration: 5000 }
elide: "ElideRight"
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/TestText.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/TestText.qml
new file mode 100644
index 0000000..690cb15
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/TestText.qml
@@ -0,0 +1,13 @@
+import QtQuick 1.0
+
+Text {
+ id: testText
+
+ property color bcolor: "blue"
+
+ text: "The quick brown fox\njumps over\nthe lazy dog."
+ font.family: "Helvetica"
+ font.pointSize: 16
+
+ Rectangle { id: borderr; color: "transparent"; border.color: bcolor; anchors.fill: parent; opacity: 0.2 }
+}
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 22863cf..cd436b5 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/plaintext.0.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/plaintext.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/plaintext2.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/plaintext2.0.png
new file mode 100644
index 0000000..e47b479
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/plaintext2.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/plaintext2.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/plaintext2.qml
new file mode 100644
index 0000000..f6cddc4
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/plaintext2.qml
@@ -0,0 +1,11 @@
+import Qt.VisualTest 4.7
+
+VisualTest {
+ Frame {
+ msec: 0
+ }
+ Frame {
+ msec: 16
+ image: "plaintext2.0.png"
+ }
+}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/plaintext3.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/plaintext3.0.png
new file mode 100644
index 0000000..0d3c672
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/plaintext3.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/plaintext3.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/plaintext3.qml
new file mode 100644
index 0000000..13f413a
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/plaintext3.qml
@@ -0,0 +1,11 @@
+import Qt.VisualTest 4.7
+
+VisualTest {
+ Frame {
+ msec: 0
+ }
+ Frame {
+ msec: 16
+ image: "plaintext3.0.png"
+ }
+}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/richtext.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/richtext.0.png
index aac7c8d..ba833a2 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/richtext.0.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/richtext.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-X11/plaintext.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-X11/plaintext.0.png
index 89195ae..30dc0a9 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-X11/plaintext.0.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-X11/plaintext.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-X11/plaintext2.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-X11/plaintext2.0.png
new file mode 100644
index 0000000..0574f63
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-X11/plaintext2.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-X11/plaintext2.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-X11/plaintext2.qml
new file mode 100644
index 0000000..f6cddc4
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-X11/plaintext2.qml
@@ -0,0 +1,11 @@
+import Qt.VisualTest 4.7
+
+VisualTest {
+ Frame {
+ msec: 0
+ }
+ Frame {
+ msec: 16
+ image: "plaintext2.0.png"
+ }
+}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-X11/richtext.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-X11/richtext.0.png
index 6a48728..8d3c37b 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-X11/richtext.0.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-X11/richtext.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data/plaintext2.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data/plaintext2.0.png
new file mode 100644
index 0000000..0574f63
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data/plaintext2.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data/plaintext2.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data/plaintext2.qml
new file mode 100644
index 0000000..f6cddc4
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data/plaintext2.qml
@@ -0,0 +1,11 @@
+import Qt.VisualTest 4.7
+
+VisualTest {
+ Frame {
+ msec: 0
+ }
+ Frame {
+ msec: 16
+ image: "plaintext2.0.png"
+ }
+}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data/plaintext3.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data/plaintext3.0.png
new file mode 100644
index 0000000..0d3c672
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data/plaintext3.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data/plaintext3.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data/plaintext3.qml
new file mode 100644
index 0000000..13f413a
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data/plaintext3.qml
@@ -0,0 +1,11 @@
+import Qt.VisualTest 4.7
+
+VisualTest {
+ Frame {
+ msec: 0
+ }
+ Frame {
+ msec: 16
+ image: "plaintext3.0.png"
+ }
+}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/plaintext.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/plaintext.qml
index e82d80f..3a06cf0 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/plaintext.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/plaintext.qml
@@ -1,4 +1,5 @@
import QtQuick 1.0
+import "../../shared" 1.0
Rectangle {
id: s; width: 620; height: 600; color: "lightsteelblue"
@@ -6,96 +7,96 @@ Rectangle {
Column {
spacing: 8
- Text {
+ TestText {
text: s.text
}
- Text {
+ TestText {
text: s.text; font.pixelSize: 18
}
- Text {
+ TestText {
text: s.text; font.pointSize: 20
}
- Text {
+ TestText {
text: s.text; color: "red"; smooth: true
}
- Text {
+ TestText {
text: s.text; font.capitalization: "AllUppercase"
}
- Text {
+ TestText {
text: s.text; font.underline: true
}
- Text {
+ TestText {
text: s.text; font.overline: true; smooth: true
}
- Text {
+ TestText {
text: s.text; font.strikeout: true
}
- Text {
+ TestText {
text: s.text; font.underline: true; font.overline: true; font.strikeout: true
}
- Text {
+ TestText {
text: s.text; font.letterSpacing: 2
}
- Text {
+ TestText {
text: s.text; font.underline: true; font.letterSpacing: 2; font.capitalization: "AllUppercase"; color: "blue"
}
- Text {
+ TestText {
text: s.text; font.overline: true; font.wordSpacing: 25; font.capitalization: "Capitalize"; color: "green"
}
- Text {
+ TestText {
text: s.text; font.pixelSize: 18; style: Text.Outline; styleColor: "white"
}
- Text {
+ TestText {
text: s.text; font.pixelSize: 18; style: Text.Sunken; styleColor: "gray"
}
- Text {
+ TestText {
text: s.text; font.pixelSize: 18; style: Text.Raised; styleColor: "yellow"
}
- Text {
+ TestText {
text: s.text; horizontalAlignment: Text.AlignLeft; width: s.width
}
- Text {
+ TestText {
text: s.text; horizontalAlignment: Text.AlignHCenter; verticalAlignment: Text.AlignVCenter; width: s.width; height: 20
}
- Text {
+ TestText {
text: s.text; horizontalAlignment: Text.AlignRight; verticalAlignment: Text.AlignBottom; width: s.width; height: 20
}
Row{
height: childrenRect.height
spacing: 4
- Text {
+ TestText {
text: s.text; elide: Text.ElideLeft; width: 200
}
- Text {
+ TestText {
text: s.text; elide: Text.ElideMiddle; width: 200
}
- Text {
+ TestText {
text: s.text; elide: Text.ElideRight; width: 200
}
}
Row{
height: childrenRect.height
spacing: 4
- Text{
+ TestText{
text: s.text; elide: Text.ElideLeft; width: 200; wrapMode: Text.WordWrap
}
- Text {
+ TestText {
text: s.text; elide: Text.ElideMiddle; width: 200; wrapMode: Text.WordWrap
}
- Text {
+ TestText {
text: s.text; elide: Text.ElideRight; width: 200; wrapMode: Text.WordWrap
}
}
Row{
height: childrenRect.height
spacing: 4
- Text {
+ TestText {
text: s.text + " thisisaverylongstringwithnospaces"; width: 150; wrapMode: Text.WrapAnywhere
}
- Text {
+ TestText {
text: s.text + " thisisaverylongstringwithnospaces"; width: 150; wrapMode: Text.Wrap
}
- Text {
+ TestText {
text: s.text; font.pixelSize: 18; style: Text.Outline; styleColor: "white"; wrapMode: Text.WordWrap; width: 200
}
}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/plaintext2.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/plaintext2.qml
new file mode 100644
index 0000000..01de1f0
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/plaintext2.qml
@@ -0,0 +1,23 @@
+import QtQuick 1.0
+import "../../shared" 1.0
+
+Rectangle {
+ width: 400; height: 200
+
+ Row {
+ spacing: 20
+ anchors.centerIn: parent
+ TestText {
+ text: "First line\nSecond line"; wrapMode: Text.Wrap
+ }
+ TestText {
+ text: "First line\nSecond line"; width: 70
+ }
+ TestText {
+ text: "First Second\nThird Fourth"; wrapMode: Text.Wrap; width: 50
+ }
+ TestText {
+ text: "First line<br>Second line"; textFormat: Text.StyledText
+ }
+ }
+}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/plaintext3.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/plaintext3.qml
new file mode 100644
index 0000000..087dfbe
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/plaintext3.qml
@@ -0,0 +1,62 @@
+import QtQuick 1.0
+
+Rectangle {
+ id: main
+ width: 800; height: 600
+
+
+ Grid {
+ x: 4; y: 4
+ spacing: 8
+ columns: 4
+
+ Column {
+ spacing: 4
+ TestText { }
+ TestText { horizontalAlignment: Text.AlignHCenter }
+ TestText { horizontalAlignment: Text.AlignRight }
+ }
+
+ Column {
+ spacing: 4
+ TestText { wrapMode: Text.Wrap }
+ TestText { horizontalAlignment: Text.AlignHCenter; wrapMode: Text.Wrap }
+ TestText { horizontalAlignment: Text.AlignRight; wrapMode: Text.Wrap }
+ }
+
+ Column {
+ spacing: 4
+ TestText { wrapMode: Text.Wrap; elide: Text.ElideRight }
+ TestText { horizontalAlignment: Text.AlignHCenter; wrapMode: Text.Wrap; elide: Text.ElideRight }
+ TestText { horizontalAlignment: Text.AlignRight; wrapMode: Text.Wrap; elide: Text.ElideRight }
+ }
+
+ Column {
+ spacing: 4
+ TestText { width: 230; wrapMode: Text.Wrap; elide: Text.ElideRight }
+ TestText { width: 230; horizontalAlignment: Text.AlignHCenter; wrapMode: Text.Wrap; elide: Text.ElideRight }
+ TestText { width: 230; horizontalAlignment: Text.AlignRight; wrapMode: Text.Wrap; elide: Text.ElideRight }
+ }
+
+ Column {
+ spacing: 4
+ TestText { width: 120; wrapMode: Text.Wrap; elide: Text.ElideRight }
+ TestText { width: 120; horizontalAlignment: Text.AlignHCenter; wrapMode: Text.Wrap; elide: Text.ElideRight }
+ TestText { width: 120; horizontalAlignment: Text.AlignRight; wrapMode: Text.Wrap; elide: Text.ElideRight }
+ }
+
+ Column {
+ spacing: 4
+ TestText { width: 120; wrapMode: Text.Wrap }
+ TestText { width: 120; horizontalAlignment: Text.AlignHCenter; wrapMode: Text.Wrap }
+ TestText { width: 120; horizontalAlignment: Text.AlignRight; wrapMode: Text.Wrap }
+ }
+
+ Column {
+ spacing: 4
+ TestText { width: 120 }
+ TestText { width: 120; horizontalAlignment: Text.AlignHCenter }
+ TestText { width: 120; horizontalAlignment: Text.AlignRight }
+ }
+ }
+}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/richtext.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/richtext.qml
index 7d174cc..3670479 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/richtext.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/richtext.qml
@@ -1,4 +1,5 @@
import QtQuick 1.0
+import "../../shared" 1.0
Rectangle {
id: s; width: 620; height: 600; color: "lightsteelblue"
@@ -6,70 +7,70 @@ Rectangle {
Column {
spacing: 6
- Text {
+ TestText {
text: s.text
}
- Text {
+ TestText {
text: s.text; font.pixelSize: 18
}
- Text {
+ TestText {
text: s.text; font.pointSize: 18
}
- Text {
+ TestText {
text: s.text; color: "red"; smooth: true
}
- Text {
+ TestText {
text: s.text; font.capitalization: "AllUppercase"
}
- Text {
+ TestText {
text: s.text; font.underline: true
}
- Text {
+ TestText {
text: s.text; font.overline: true; smooth: true
}
- Text {
+ TestText {
text: s.text; font.strikeout: true
}
- Text {
+ TestText {
text: s.text; font.underline: true; font.overline: true; font.strikeout: true
}
- Text {
+ TestText {
text: s.text; font.letterSpacing: 2
}
- Text {
+ TestText {
text: s.text; font.underline: true; font.letterSpacing: 2; font.capitalization: "AllUppercase"; color: "blue"
}
- Text {
+ TestText {
text: s.text; font.overline: true; font.wordSpacing: 25; font.capitalization: "Capitalize"; color: "green"
}
- Text {
+ TestText {
text: s.text; font.pixelSize: 18; style: Text.Outline; styleColor: "white"
}
- Text {
+ TestText {
text: s.text; font.pixelSize: 18; style: Text.Sunken; styleColor: "gray"
}
- Text {
+ TestText {
text: s.text; font.pixelSize: 18; style: Text.Raised; styleColor: "yellow"
}
- Text {
+ TestText {
text: s.text; horizontalAlignment: Text.AlignLeft; width: s.width
}
- Text {
+ TestText {
text: s.text; horizontalAlignment: Text.AlignHCenter; verticalAlignment: Text.AlignVCenter; width: s.width; height: 20
}
- Text {
+ TestText {
text: s.text; horizontalAlignment: Text.AlignRight; verticalAlignment: Text.AlignBottom; width: s.width; height: 20
}
Row{
height: childrenRect.height;
spacing: 4
- Text {
+ TestText {
text: s.text + " thisisaverylongstringwithnospaces"; width: 150; wrapMode: Text.WrapAnywhere
}
- Text {
+ TestText {
text: s.text + " thisisaverylongstringwithnospaces"; width: 150; wrapMode: Text.Wrap
}
- Text {
+ TestText {
text: s.text; font.pixelSize: 18; style: Text.Outline; styleColor: "white"; wrapMode: Text.WordWrap; width: 200
}
}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/qtbug_14865.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/qtbug_14865.qml
new file mode 100644
index 0000000..3d5fbf0
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/qtbug_14865.qml
@@ -0,0 +1,18 @@
+import QtQuick 1.0
+import "../shared" 1.0
+
+Rectangle {
+ width: 200; height: 200
+
+ TestText {
+ id: label
+ objectName: "label"
+ text: "Hello world!"
+ width: 10
+ }
+
+ Timer {
+ running: true; interval: 1000
+ onTriggered: label.text = ""
+ }
+}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/MultilineEdit.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/MultilineEdit.qml
index fd29eb6..4273f32 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/MultilineEdit.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/MultilineEdit.qml
@@ -1,4 +1,5 @@
import QtQuick 1.0
+import "../shared" 1.0
Item {
id:lineedit
@@ -7,16 +8,16 @@ Item {
width: 240 + 11 //Should be set manually in most cases
height: textEdit.height + 11
- Rectangle{
+ Rectangle {
color: 'lightsteelblue'
anchors.fill: parent
}
clip: true
Component.onCompleted: textEdit.cursorPosition = 0;
- TextEdit{
+ TestTextEdit {
id:textEdit
- cursorDelegate: Item{
- Rectangle{
+ cursorDelegate: Item {
+ Rectangle {
visible: parent.parent.focus
color: "#009BCE"
height: 13
@@ -46,7 +47,7 @@ Item {
wrapMode: TextEdit.WordWrap
font.pixelSize:15
}
- MouseArea{
+ MouseArea {
//Implements all line edit mouse handling
id: mainMouseArea
anchors.fill: parent;
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/cursorDelegate.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/cursorDelegate.qml
index 8798a5f..1e0f71a 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/cursorDelegate.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/cursorDelegate.qml
@@ -1,5 +1,7 @@
import QtQuick 1.0
- Rectangle {
+import "../shared" 1.0
+
+Rectangle {
resources: [
Component { id: cursorA
Item { id: cPage;
@@ -21,7 +23,7 @@ import QtQuick 1.0
width: 400
height: 200
color: "white"
- TextEdit { id: mainText
+ TestTextEdit { id: mainText
text: "Hello World"
cursorDelegate: cursorA
focus: true
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 3f2c403..f41c165 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.0.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.0.png
Binary files 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 e94c97b..539e4df 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.1.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.1.png
Binary files 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 847f8a5..47ceaac 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.2.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.2.png
Binary files 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 9002e80..e24a453 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.3.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.3.png
Binary files 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 0a399c8..ecf8335 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.4.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.4.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.qml
index f714adc..ff5db41 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: "fd83046af94eac26d394a5da986e734c"
+ hash: "c1bb09480464b7813bc10b0093d14745"
}
Frame {
msec: 32
- hash: "c9bf546976fc17de9ea9e877f4978f02"
+ hash: "9d0e449506ce93052216b7a952af3dea"
}
Frame {
msec: 48
- hash: "c711fd5d0c3900494493f8309b79ad0c"
+ hash: "52641f9d6dfba8bf2b94aa37ade140d1"
}
Frame {
msec: 64
- hash: "b297d098f02fbbeac830b20b0a5194c5"
+ hash: "7610775f69a461d5487e8bc3db6b6e1f"
}
Frame {
msec: 80
- hash: "b5e956f236ba52cb673af22417d1aabc"
+ hash: "afe0c3fdcb498f1f6b877c5d808b2555"
}
Frame {
msec: 96
- hash: "e8cd9511f073ff40a6645ad6aa2b5bee"
+ hash: "97dabf3984492d2f868b36c3e7bfce50"
}
Frame {
msec: 112
- hash: "315734f8f38efbc810ca2e65bd752ddd"
+ hash: "869624c2ae63b0a447401a955a6fefb1"
}
Frame {
msec: 128
- hash: "fa7d20c99cb8c20494b558ce8ef860a2"
+ hash: "7031966f014d4acd5b00c46c89f61403"
}
Frame {
msec: 144
- hash: "56cc00965e12254e0133fe1d914fffb2"
+ hash: "bd5395e7e0aa0d50cb30504f9961c954"
}
Frame {
msec: 160
- hash: "690aa50862a887edcc9392d1c3ca0424"
+ hash: "a7142c3c1eb9c934e0b258c163fcdfec"
}
Frame {
msec: 176
- hash: "c3df3735586ed103d137d4902d7a1cc3"
+ hash: "373c57edb812db59f40710305d80e9e9"
}
Frame {
msec: 192
- hash: "0a2c07dc17922651d2abd6400fff6e43"
+ hash: "78b16507899c3c8de04b55389ea0ad49"
}
Frame {
msec: 208
- hash: "8004e4ab3ed02f68f6f5f7f5fb9fe6c6"
+ hash: "b0fd95dc2ac09a1cbd67ad0f86682666"
}
Frame {
msec: 224
- hash: "7937850b86f3611ee1d75da9deb7420d"
+ hash: "5f073a4a89413b6a6c5d6ff52717bb2f"
}
Frame {
msec: 240
- hash: "ecd42368bf2a9058185b9b25b659f4c6"
+ hash: "82e61a4d3f58ee5104893e254a77f13e"
}
Frame {
msec: 256
- hash: "e545c6ba42edd1e6a055b48f162315ab"
+ hash: "a8fe05178e6339454d57575692fa3df3"
}
Frame {
msec: 272
- hash: "f8b28cd90fe0c4aa90e8a69d2d9cdce7"
+ hash: "192f80add5f612b07dcb8d69f2161648"
}
Frame {
msec: 288
- hash: "49de66674e8f38f925f3505c64201076"
+ hash: "cfd85885f59ea80b0b0152446a829fec"
}
Frame {
msec: 304
- hash: "b33880917cae07d038620065ec2c1d1c"
+ hash: "a7295dcc92f80a5f343bf05076a03748"
}
Frame {
msec: 320
- hash: "97c8af8dc7e5372a3a0f5bed0050127e"
+ hash: "2b0b30cfb1c1e4ed8a51d36fb7ccdf57"
}
Frame {
msec: 336
- hash: "b0236b8c44398cb9f97324f6ca9ce5c4"
+ hash: "419c538908d0226ff4485f1094eaa08e"
}
Key {
type: 6
@@ -98,27 +98,27 @@ VisualTest {
}
Frame {
msec: 352
- hash: "2695b45a1ea89518d236ef3b8dccd89e"
+ hash: "8afe64448d42419f97ca207487b3b0f8"
}
Frame {
msec: 368
- hash: "61370b1d04626facfd243176cb4bb79b"
+ hash: "86091218d2d066d8f95a460426266369"
}
Frame {
msec: 384
- hash: "53c53e501469ca0ef0f0325a13aa4aa4"
+ hash: "fc45978cac92b6cdeeecc2dd4c29aa53"
}
Frame {
msec: 400
- hash: "c56717a79ccffe756c5423bc5e44a53f"
+ hash: "03a90ae5cbe68cc210e303c78a14e065"
}
Frame {
msec: 416
- hash: "e5ec3e6d4a7a527e8f2c0afa5fd66c4b"
+ hash: "15603a997aa02afb688aa74cd930f3b4"
}
Frame {
msec: 432
- hash: "4ccb9af28572e13f961f2057eb98482d"
+ hash: "90bf6b2bf89e1440f0c4d1044c1bd22c"
}
Key {
type: 6
@@ -130,19 +130,19 @@ VisualTest {
}
Frame {
msec: 448
- hash: "0b8ce455fd40c3cd74fb05d4b603cceb"
+ hash: "4dbdc16538cbbf1a87c6a54e09e02b16"
}
Frame {
msec: 464
- hash: "f5c3754201dbb6f4ca4f4c1611036c5a"
+ hash: "2011ee59d2ec4bb0ae0d63727f091648"
}
Frame {
msec: 480
- hash: "0173dd60a64da4c06fa9a398d2c98206"
+ hash: "c526315dd5eec117266c68a7b6b64a3f"
}
Frame {
msec: 496
- hash: "0173dd60a64da4c06fa9a398d2c98206"
+ hash: "c526315dd5eec117266c68a7b6b64a3f"
}
Key {
type: 6
@@ -154,35 +154,35 @@ VisualTest {
}
Frame {
msec: 512
- hash: "5e39a0f9bdc45a7a288f59b7cbbf749d"
+ hash: "7fc65284b99fc548de0985d94a145fa7"
}
Frame {
msec: 528
- hash: "5e39a0f9bdc45a7a288f59b7cbbf749d"
+ hash: "7fc65284b99fc548de0985d94a145fa7"
}
Frame {
msec: 544
- hash: "5e39a0f9bdc45a7a288f59b7cbbf749d"
+ hash: "7fc65284b99fc548de0985d94a145fa7"
}
Frame {
msec: 560
- hash: "5e39a0f9bdc45a7a288f59b7cbbf749d"
+ hash: "7fc65284b99fc548de0985d94a145fa7"
}
Frame {
msec: 576
- hash: "9e887b7206f31bbb95573ea4ff157579"
+ hash: "b4205f141a7a6b646cf641ba922d588b"
}
Frame {
msec: 592
- hash: "0d66c3a6c2df2a2ffe95901e55a5f945"
+ hash: "94c3adf5da700bb63ed6eaf0adf8d037"
}
Frame {
msec: 608
- hash: "af497d287a3cc1637da43f3cad97a479"
+ hash: "62c4757a2e26341655e27417f85ba6d8"
}
Frame {
msec: 624
- hash: "e7c4f22fcc84e1fdf09191b3ae8529fa"
+ hash: "9de2ce48334b088c0a0960a581f43a36"
}
Key {
type: 7
@@ -194,15 +194,15 @@ VisualTest {
}
Frame {
msec: 640
- hash: "ec6b2062c0dc274febc63aa3a2313299"
+ hash: "9ca827d4812521d1590ca6e7117bd788"
}
Frame {
msec: 656
- hash: "de8e8c97aef11ee03bec315fc82a46f8"
+ hash: "66f65cd7215ea89e60d8f60337fffe97"
}
Frame {
msec: 672
- hash: "2f9e1a13c276282fd70b3242ec136b22"
+ hash: "05caae5e0d092c4d0595286aa4baa6a0"
}
Key {
type: 6
@@ -214,31 +214,31 @@ VisualTest {
}
Frame {
msec: 688
- hash: "60e390b7bb10dc756c83d5d52c7832f7"
+ hash: "2282153f3ae493aa6ad5377b12d88043"
}
Frame {
msec: 704
- hash: "76bf44fbfcac0c8a6615ef4ba67ee91d"
+ hash: "aee2503a5d4ec61795b0486da5c53867"
}
Frame {
msec: 720
- hash: "614e3712c8b91bcbadaedca209fc80dc"
+ hash: "f564e1ae90bc6b1ea4bc84f1729eb487"
}
Frame {
msec: 736
- hash: "eb2204890d51b1112ea79f37768bb74e"
+ hash: "f5c70adef5725a0574b63dd5ab7d7b12"
}
Frame {
msec: 752
- hash: "d5b0d7d19ae4d9df059002e619726266"
+ hash: "74ed3230417c69b0dc82ce9cfe4b6cd0"
}
Frame {
msec: 768
- hash: "9bd5a7fde4e26a5913c41c61175a2fba"
+ hash: "374270279bcc00167d2b63bf9a658785"
}
Frame {
msec: 784
- hash: "533e6355f554cfc324f90c70484632ab"
+ hash: "68445a2b5470e44baf7af95efc20ba33"
}
Key {
type: 7
@@ -250,43 +250,43 @@ VisualTest {
}
Frame {
msec: 800
- hash: "bf05da75483bdc6c4945c1c3a4f8b72a"
+ hash: "5add6c9527edf6bbdb3a79b8a524db70"
}
Frame {
msec: 816
- hash: "9b7468ba9c2d9e354d15f60ca7ecf6b6"
+ hash: "01a96c8407fa2c0f9e7a822249ac9adc"
}
Frame {
msec: 832
- hash: "5d57dbc8d8996c2275da30a6f22ea37f"
+ hash: "6b9af295d8f2fb5ba8d9c234596d0a88"
}
Frame {
msec: 848
- hash: "3efa002ab3b856b0b8d4849b8bb6e567"
+ hash: "3837442e90c2a1534e21d21bfc3b46e1"
}
Frame {
msec: 864
- hash: "84471ddf06c2c90a17bbef9d634ffabc"
+ hash: "afd7d2494dae8e7ef40a165ccc627313"
}
Frame {
msec: 880
- hash: "cf8460f68815510416dc1cd86dd80c19"
+ hash: "6e7058d540b26d3c5f15804f2f93b835"
}
Frame {
msec: 896
- hash: "7e1e02e0795e695a423ee3518c9e8e8f"
+ hash: "ffa489a15db741d8b835d998336bc1b3"
}
Frame {
msec: 912
- hash: "ca5ea92767f31f7fb7e04894edadb73b"
+ hash: "5a0308d1d2a6a36e16ddb312294fcbf8"
}
Frame {
msec: 928
- hash: "616e57b513b4e950803c49584de106bd"
+ hash: "bd56ed24908c7e8ec4e5ebc75a19ca86"
}
Frame {
msec: 944
- hash: "718badb44982d10fe92b646aa5dc3d96"
+ hash: "7bd56b12087226100da27776f8943427"
}
Frame {
msec: 960
@@ -294,19 +294,19 @@ VisualTest {
}
Frame {
msec: 976
- hash: "4acc383cecec9d65dafa3b75b2711577"
+ hash: "f48a56350bba266c2f19deb46d39e174"
}
Frame {
msec: 992
- hash: "9e26dd446fe8ed2b8a57888bc7f2f643"
+ hash: "9587bb118f2eb2bf8bb3cfc40ed18310"
}
Frame {
msec: 1008
- hash: "369f454d8f387320423f2b2e568d6ad6"
+ hash: "0f9e9622427ebaf85369b3013ae9aaf0"
}
Frame {
msec: 1024
- hash: "369f454d8f387320423f2b2e568d6ad6"
+ hash: "0f9e9622427ebaf85369b3013ae9aaf0"
}
Key {
type: 7
@@ -318,39 +318,39 @@ VisualTest {
}
Frame {
msec: 1040
- hash: "9e26dd446fe8ed2b8a57888bc7f2f643"
+ hash: "9587bb118f2eb2bf8bb3cfc40ed18310"
}
Frame {
msec: 1056
- hash: "4acc383cecec9d65dafa3b75b2711577"
+ hash: "f48a56350bba266c2f19deb46d39e174"
}
Frame {
msec: 1072
- hash: "2909eabaad28f76c37c780d0e0d9e357"
+ hash: "8234f16d07e76aeedb6ca14d622453cb"
}
Frame {
msec: 1088
- hash: "718badb44982d10fe92b646aa5dc3d96"
+ hash: "7bd56b12087226100da27776f8943427"
}
Frame {
msec: 1104
- hash: "616e57b513b4e950803c49584de106bd"
+ hash: "bd56ed24908c7e8ec4e5ebc75a19ca86"
}
Frame {
msec: 1120
- hash: "ca5ea92767f31f7fb7e04894edadb73b"
+ hash: "5a0308d1d2a6a36e16ddb312294fcbf8"
}
Frame {
msec: 1136
- hash: "7e1e02e0795e695a423ee3518c9e8e8f"
+ hash: "ffa489a15db741d8b835d998336bc1b3"
}
Frame {
msec: 1152
- hash: "cf8460f68815510416dc1cd86dd80c19"
+ hash: "6e7058d540b26d3c5f15804f2f93b835"
}
Frame {
msec: 1168
- hash: "84471ddf06c2c90a17bbef9d634ffabc"
+ hash: "afd7d2494dae8e7ef40a165ccc627313"
}
Key {
type: 6
@@ -362,31 +362,31 @@ VisualTest {
}
Frame {
msec: 1184
- hash: "0e4120f723b1b1d879065f0324ba18fa"
+ hash: "1d5c9458d568df773dbff4e333e14de0"
}
Frame {
msec: 1200
- hash: "2a8c575dbe68797c8a909df9f1166ff8"
+ hash: "8eef242d89b7e2eff7678030f9fd808e"
}
Frame {
msec: 1216
- hash: "e26abb9311a2b25ed32efb0da41a4d53"
+ hash: "97dc6ebbf64a19f5026c02ea4c79d63b"
}
Frame {
msec: 1232
- hash: "d35ae7b04e8ddf1962a20f8593c9c18c"
+ hash: "52d2135428c3c2bf85f0fa7c2ba01a25"
}
Frame {
msec: 1248
- hash: "afbbcee5ea4c854aebb7ba56856cf9c8"
+ hash: "c713bd1d1ab2df81292020e6e822546c"
}
Frame {
msec: 1264
- hash: "2d97ae4f3657617d4f4df55090c2d0e1"
+ hash: "0c61ff34510168e324c53786720dd953"
}
Frame {
msec: 1280
- hash: "dc024030252b263dc7dd3c05580d7ec6"
+ hash: "ba1488f2d9d4482cdf41c40af7642030"
}
Key {
type: 7
@@ -398,95 +398,95 @@ VisualTest {
}
Frame {
msec: 1296
- hash: "c9072651fd565ed8c6d69a258e464fca"
+ hash: "91d2da369579bb72641d4e7e7cd696f5"
}
Frame {
msec: 1312
- hash: "bb6a90fd1cb94ed4b590c9ae65d31f86"
+ hash: "1cf1d30d6def868a60f434fe84c23c47"
}
Frame {
msec: 1328
- hash: "d3e5054c8b0a25adb9bd0fe78bd72153"
+ hash: "ba5b3005af3c44caaf7272cbb56e60da"
}
Frame {
msec: 1344
- hash: "158e31266eae1718958d37d2096b32af"
+ hash: "116ab7576b5e45e6009920854ff87f39"
}
Frame {
msec: 1360
- hash: "6986bbfaedae3838de7a92f911d1e4d1"
+ hash: "294c76d6f63c230af666b0b86e0c9844"
}
Frame {
msec: 1376
- hash: "8ab83b3b3038150036d6d6135d6e2d8d"
+ hash: "c721a5b17b1eb4a063fa3b727d13ba62"
}
Frame {
msec: 1392
- hash: "6749a62f9d9eadc33e2d109c140bfdde"
+ hash: "a98bd750b67a0ef8831c9c66a0b06a28"
}
Frame {
msec: 1408
- hash: "7519758a28f49b3a669f6676a1b47253"
+ hash: "7739509b0f5e62207ba62262d8822388"
}
Frame {
msec: 1424
- hash: "a8470fa7ddf69b4f86c5933f85256684"
+ hash: "62d70a7e3ce290c52d37090bf899377c"
}
Frame {
msec: 1440
- hash: "1f2f34e0dfeb38bd568915718627abf5"
+ hash: "3f3c1137c02e14796c3a4537337d1dd8"
}
Frame {
msec: 1456
- hash: "d843ec499de0a7c0094a479f75cab4c6"
+ hash: "4997a45af699c1face114c72a9ce067d"
}
Frame {
msec: 1472
- hash: "25cf1c1efce5ad53695099ffeb93d27f"
+ hash: "093cce71722904a32b030478f3af49bb"
}
Frame {
msec: 1488
- hash: "25cf1c1efce5ad53695099ffeb93d27f"
+ hash: "093cce71722904a32b030478f3af49bb"
}
Frame {
msec: 1504
- hash: "25cf1c1efce5ad53695099ffeb93d27f"
+ hash: "093cce71722904a32b030478f3af49bb"
}
Frame {
msec: 1520
- hash: "25cf1c1efce5ad53695099ffeb93d27f"
+ hash: "093cce71722904a32b030478f3af49bb"
}
Frame {
msec: 1536
- hash: "25cf1c1efce5ad53695099ffeb93d27f"
+ hash: "093cce71722904a32b030478f3af49bb"
}
Frame {
msec: 1552
- hash: "25cf1c1efce5ad53695099ffeb93d27f"
+ hash: "093cce71722904a32b030478f3af49bb"
}
Frame {
msec: 1568
- hash: "444090b334e856ff4f9b9938c7676666"
+ hash: "a4810a97e51259350bb1543dffc156af"
}
Frame {
msec: 1584
- hash: "6064d9310e5d660c8e1aae9e9cfc6bd3"
+ hash: "838871072acbefc1c8c488f47312da9b"
}
Frame {
msec: 1600
- hash: "fc562db867e30ac63a9992b3cf554553"
+ hash: "8cfe8847729878519669caa8b702d910"
}
Frame {
msec: 1616
- hash: "e127594d11d3e4c0d1f3e4585ef3a901"
+ hash: "a2fd8e049d03b87a306bb5b81e3f7311"
}
Frame {
msec: 1632
- hash: "6d3d43b6a38cf1c64289282bbcaf2ac2"
+ hash: "29bd4d5e36cb6b232f513b6bb0c00b28"
}
Frame {
msec: 1648
- hash: "bd58d75020a5272ae3cdcb0ed780e496"
+ hash: "9637f14efb2e355bfe886d7c5f2a8d38"
}
Key {
type: 6
@@ -498,35 +498,35 @@ VisualTest {
}
Frame {
msec: 1664
- hash: "655cdefae8b30a40e6baaa04b790f811"
+ hash: "0365fa8845c3c1e53ef35d22423eb973"
}
Frame {
msec: 1680
- hash: "a654e6c9c5414593425bd2ccc6a0f916"
+ hash: "bf88d5d2cd2ff062c1cc8a391a238b1d"
}
Frame {
msec: 1696
- hash: "88e3865dcb7da6be36cff12a1da7c94b"
+ hash: "46b22f33eb80f013e44da11153441864"
}
Frame {
msec: 1712
- hash: "4d85866e40d8118081d2747af7343c42"
+ hash: "05ae42e3a0296a569dec147c76be273d"
}
Frame {
msec: 1728
- hash: "d84111903e76a53be7b55d7dc3847914"
+ hash: "1a8cc65973d08bb949f7a71b0bb8be1a"
}
Frame {
msec: 1744
- hash: "4f7b708a511dc7a882af661ca3282404"
+ hash: "ca3bde8cd8de81c4210fcfd000fe0f5e"
}
Frame {
msec: 1760
- hash: "29d940c479f0c76c6f4d88e417672878"
+ hash: "e06d104d1ed451eea4c1d9bdae9d10f4"
}
Frame {
msec: 1776
- hash: "ade916241f4b2a50e6b84f8ae41369ef"
+ hash: "c95153ae401ad8a2e839905841c074f3"
}
Key {
type: 6
@@ -538,35 +538,35 @@ VisualTest {
}
Frame {
msec: 1792
- hash: "ecd42368bf2a9058185b9b25b659f4c6"
+ hash: "82e61a4d3f58ee5104893e254a77f13e"
}
Frame {
msec: 1808
- hash: "7937850b86f3611ee1d75da9deb7420d"
+ hash: "5f073a4a89413b6a6c5d6ff52717bb2f"
}
Frame {
msec: 1824
- hash: "8004e4ab3ed02f68f6f5f7f5fb9fe6c6"
+ hash: "b0fd95dc2ac09a1cbd67ad0f86682666"
}
Frame {
msec: 1840
- hash: "0a2c07dc17922651d2abd6400fff6e43"
+ hash: "78b16507899c3c8de04b55389ea0ad49"
}
Frame {
msec: 1856
- hash: "c3df3735586ed103d137d4902d7a1cc3"
+ hash: "373c57edb812db59f40710305d80e9e9"
}
Frame {
msec: 1872
- hash: "690aa50862a887edcc9392d1c3ca0424"
+ hash: "a7142c3c1eb9c934e0b258c163fcdfec"
}
Frame {
msec: 1888
- hash: "56cc00965e12254e0133fe1d914fffb2"
+ hash: "bd5395e7e0aa0d50cb30504f9961c954"
}
Frame {
msec: 1904
- hash: "fa7d20c99cb8c20494b558ce8ef860a2"
+ hash: "7031966f014d4acd5b00c46c89f61403"
}
Key {
type: 7
@@ -582,79 +582,79 @@ VisualTest {
}
Frame {
msec: 1936
- hash: "e8cd9511f073ff40a6645ad6aa2b5bee"
+ hash: "97dabf3984492d2f868b36c3e7bfce50"
}
Frame {
msec: 1952
- hash: "b5e956f236ba52cb673af22417d1aabc"
+ hash: "afe0c3fdcb498f1f6b877c5d808b2555"
}
Frame {
msec: 1968
- hash: "b297d098f02fbbeac830b20b0a5194c5"
+ hash: "7610775f69a461d5487e8bc3db6b6e1f"
}
Frame {
msec: 1984
- hash: "c711fd5d0c3900494493f8309b79ad0c"
+ hash: "52641f9d6dfba8bf2b94aa37ade140d1"
}
Frame {
msec: 2000
- hash: "c9bf546976fc17de9ea9e877f4978f02"
+ hash: "9d0e449506ce93052216b7a952af3dea"
}
Frame {
msec: 2016
- hash: "fd83046af94eac26d394a5da986e734c"
+ hash: "c1bb09480464b7813bc10b0093d14745"
}
Frame {
msec: 2032
- hash: "c9bf546976fc17de9ea9e877f4978f02"
+ hash: "9d0e449506ce93052216b7a952af3dea"
}
Frame {
msec: 2048
- hash: "c711fd5d0c3900494493f8309b79ad0c"
+ hash: "52641f9d6dfba8bf2b94aa37ade140d1"
}
Frame {
msec: 2064
- hash: "b297d098f02fbbeac830b20b0a5194c5"
+ hash: "7610775f69a461d5487e8bc3db6b6e1f"
}
Frame {
msec: 2080
- hash: "b5e956f236ba52cb673af22417d1aabc"
+ hash: "afe0c3fdcb498f1f6b877c5d808b2555"
}
Frame {
msec: 2096
- hash: "e8cd9511f073ff40a6645ad6aa2b5bee"
+ hash: "97dabf3984492d2f868b36c3e7bfce50"
}
Frame {
msec: 2112
- hash: "315734f8f38efbc810ca2e65bd752ddd"
+ hash: "869624c2ae63b0a447401a955a6fefb1"
}
Frame {
msec: 2128
- hash: "fa7d20c99cb8c20494b558ce8ef860a2"
+ hash: "7031966f014d4acd5b00c46c89f61403"
}
Frame {
msec: 2144
- hash: "56cc00965e12254e0133fe1d914fffb2"
+ hash: "bd5395e7e0aa0d50cb30504f9961c954"
}
Frame {
msec: 2160
- hash: "690aa50862a887edcc9392d1c3ca0424"
+ hash: "a7142c3c1eb9c934e0b258c163fcdfec"
}
Frame {
msec: 2176
- hash: "c3df3735586ed103d137d4902d7a1cc3"
+ hash: "373c57edb812db59f40710305d80e9e9"
}
Frame {
msec: 2192
- hash: "0a2c07dc17922651d2abd6400fff6e43"
+ hash: "78b16507899c3c8de04b55389ea0ad49"
}
Frame {
msec: 2208
- hash: "8004e4ab3ed02f68f6f5f7f5fb9fe6c6"
+ hash: "b0fd95dc2ac09a1cbd67ad0f86682666"
}
Frame {
msec: 2224
- hash: "7937850b86f3611ee1d75da9deb7420d"
+ hash: "5f073a4a89413b6a6c5d6ff52717bb2f"
}
Key {
type: 7
@@ -666,35 +666,35 @@ VisualTest {
}
Frame {
msec: 2240
- hash: "ecd42368bf2a9058185b9b25b659f4c6"
+ hash: "82e61a4d3f58ee5104893e254a77f13e"
}
Frame {
msec: 2256
- hash: "e545c6ba42edd1e6a055b48f162315ab"
+ hash: "a8fe05178e6339454d57575692fa3df3"
}
Frame {
msec: 2272
- hash: "f8b28cd90fe0c4aa90e8a69d2d9cdce7"
+ hash: "192f80add5f612b07dcb8d69f2161648"
}
Frame {
msec: 2288
- hash: "49de66674e8f38f925f3505c64201076"
+ hash: "cfd85885f59ea80b0b0152446a829fec"
}
Frame {
msec: 2304
- hash: "b33880917cae07d038620065ec2c1d1c"
+ hash: "a7295dcc92f80a5f343bf05076a03748"
}
Frame {
msec: 2320
- hash: "97c8af8dc7e5372a3a0f5bed0050127e"
+ hash: "2b0b30cfb1c1e4ed8a51d36fb7ccdf57"
}
Frame {
msec: 2336
- hash: "b0236b8c44398cb9f97324f6ca9ce5c4"
+ hash: "419c538908d0226ff4485f1094eaa08e"
}
Frame {
msec: 2352
- hash: "2695b45a1ea89518d236ef3b8dccd89e"
+ hash: "8afe64448d42419f97ca207487b3b0f8"
}
Key {
type: 6
@@ -706,35 +706,35 @@ VisualTest {
}
Frame {
msec: 2368
- hash: "61370b1d04626facfd243176cb4bb79b"
+ hash: "86091218d2d066d8f95a460426266369"
}
Frame {
msec: 2384
- hash: "53c53e501469ca0ef0f0325a13aa4aa4"
+ hash: "fc45978cac92b6cdeeecc2dd4c29aa53"
}
Frame {
msec: 2400
- hash: "c56717a79ccffe756c5423bc5e44a53f"
+ hash: "03a90ae5cbe68cc210e303c78a14e065"
}
Frame {
msec: 2416
- hash: "e5ec3e6d4a7a527e8f2c0afa5fd66c4b"
+ hash: "15603a997aa02afb688aa74cd930f3b4"
}
Frame {
msec: 2432
- hash: "4ccb9af28572e13f961f2057eb98482d"
+ hash: "90bf6b2bf89e1440f0c4d1044c1bd22c"
}
Frame {
msec: 2448
- hash: "0b8ce455fd40c3cd74fb05d4b603cceb"
+ hash: "4dbdc16538cbbf1a87c6a54e09e02b16"
}
Frame {
msec: 2464
- hash: "f5c3754201dbb6f4ca4f4c1611036c5a"
+ hash: "2011ee59d2ec4bb0ae0d63727f091648"
}
Frame {
msec: 2480
- hash: "0173dd60a64da4c06fa9a398d2c98206"
+ hash: "c526315dd5eec117266c68a7b6b64a3f"
}
Key {
type: 7
@@ -746,95 +746,95 @@ VisualTest {
}
Frame {
msec: 2496
- hash: "0173dd60a64da4c06fa9a398d2c98206"
+ hash: "c526315dd5eec117266c68a7b6b64a3f"
}
Frame {
msec: 2512
- hash: "0173dd60a64da4c06fa9a398d2c98206"
+ hash: "c526315dd5eec117266c68a7b6b64a3f"
}
Frame {
msec: 2528
- hash: "0173dd60a64da4c06fa9a398d2c98206"
+ hash: "c526315dd5eec117266c68a7b6b64a3f"
}
Frame {
msec: 2544
- hash: "0173dd60a64da4c06fa9a398d2c98206"
+ hash: "c526315dd5eec117266c68a7b6b64a3f"
}
Frame {
msec: 2560
- hash: "0173dd60a64da4c06fa9a398d2c98206"
+ hash: "c526315dd5eec117266c68a7b6b64a3f"
}
Frame {
msec: 2576
- hash: "3c1972940b70a388ebfd007b0b5d9860"
+ hash: "02996bef06c74f34cf8be4cf4d1392d5"
}
Frame {
msec: 2592
- hash: "674707d6ae5ef5109940f1bd62427a63"
+ hash: "2d8cb2d213ce22132ba63a829c07f768"
}
Frame {
msec: 2608
- hash: "8f512390b74d7a545eb60a86d4b8dee6"
+ hash: "0a16c282a18fdc657ea48fb208dea494"
}
Frame {
msec: 2624
- hash: "0502cfe70da38a6ebccd7fdf799be464"
+ hash: "86baec52ccb8ae818439c637c5be1514"
}
Frame {
msec: 2640
- hash: "23c45beae15b893ec4450b0d380aeb17"
+ hash: "72e2415581ba2a96b8f23cf8f5985afb"
}
Frame {
msec: 2656
- hash: "45de58892db757e76c95ddb76e267f6f"
+ hash: "7776d964b2b5f80bac51a29d298a067f"
}
Frame {
msec: 2672
- hash: "ff3f1529c937c4d95cf4dfb8592759dc"
+ hash: "3b5d0a9f961c2102a4118a8e2d2793ae"
}
Frame {
msec: 2688
- hash: "236c6e16bbfab9268f488d6dbf9544be"
+ hash: "048b5e51d9bcf8d1b24c8f8f98b7b4e4"
}
Frame {
msec: 2704
- hash: "3bb19cbddf5e66c08bdd5c881e93db3e"
+ hash: "d30e5d7c27b72ec95c41a87741061a3f"
}
Frame {
msec: 2720
- hash: "057ea6d1007993908c9c398391b85072"
+ hash: "0374cc41cdb6528e212f678e0e049f2b"
}
Frame {
msec: 2736
- hash: "faa124cd5d0a027dc5e3b92125bc9cc5"
+ hash: "c80bc90c90b02d1d42176f16fa992f27"
}
Frame {
msec: 2752
- hash: "234ac2e7f0b87a86e0678e3cbc5a1e30"
+ hash: "70182707dbdf87a2c8db556f030bec17"
}
Frame {
msec: 2768
- hash: "bdee3016f1811188691786bafe305196"
+ hash: "0c6c0c3d27d87128d65b40789714dd6b"
}
Frame {
msec: 2784
- hash: "9ecc192aec9b15314132b16dd3f43860"
+ hash: "46e1debee4ca606492a36de6191f4594"
}
Frame {
msec: 2800
- hash: "26dc03cf86d6812cfb788599b1c34de0"
+ hash: "f327bb2ea12b2baffc0a98d44a0ded16"
}
Frame {
msec: 2816
- hash: "8752b33ae49ea6d1ee27376d8585776e"
+ hash: "15bc04b65bde5e8ca69b6a1f88647c16"
}
Frame {
msec: 2832
- hash: "a181b264ba729ad1d8ff91a0c56fb98a"
+ hash: "27156c3309835ec20a02877f1188e14a"
}
Frame {
msec: 2848
- hash: "af426cd28c90ac2d46d2b2478ce616f3"
+ hash: "a163019c9feff0f4d1bb4aaedcd2ecd4"
}
Key {
type: 6
@@ -846,7 +846,7 @@ VisualTest {
}
Frame {
msec: 2864
- hash: "7462f7f9c339fc4d8b0c08e54b0ed71d"
+ hash: "c5569c3c06bcf01b7e69e7f7ad6203ef"
}
Frame {
msec: 2880
@@ -854,27 +854,27 @@ VisualTest {
}
Frame {
msec: 2896
- hash: "10f5b360c3809fbe51de55f47199c541"
+ hash: "5d1c41e371b1a95426882b3991383b6b"
}
Frame {
msec: 2912
- hash: "ecab3f62c89e1cb9ff9b10ace4cdb40b"
+ hash: "4b9581a767fc1c94451780c044baf003"
}
Frame {
msec: 2928
- hash: "d3eac9d8cd01bbb44fd61fca497230c0"
+ hash: "39978ba9bb1a535d7735228c650add38"
}
Frame {
msec: 2944
- hash: "33ff6af85e783c617a42ca5021d1463b"
+ hash: "1a2afe394227dcf2da118559e2e58fd7"
}
Frame {
msec: 2960
- hash: "a53cccc463d6f6fc24dc0d6309246640"
+ hash: "2f6bdb7af9bf9334231180b6113b125f"
}
Frame {
msec: 2976
- hash: "8fc354dd6ddbd829240a3c2c9dcafdeb"
+ hash: "85017ca5ca286830e2745abf2f1f963a"
}
Key {
type: 7
@@ -886,63 +886,63 @@ VisualTest {
}
Frame {
msec: 2992
- hash: "0529a6cb7083caf513de4677970ed33f"
+ hash: "3760b42a25e332c6df49bd92109dae98"
}
Frame {
msec: 3008
- hash: "bb38f9cdd67d18bc9297b353d499bb35"
+ hash: "7c0347f97f9e4d7fcf47a90b336d264a"
}
Frame {
msec: 3024
- hash: "bb38f9cdd67d18bc9297b353d499bb35"
+ hash: "7c0347f97f9e4d7fcf47a90b336d264a"
}
Frame {
msec: 3040
- hash: "0529a6cb7083caf513de4677970ed33f"
+ hash: "3760b42a25e332c6df49bd92109dae98"
}
Frame {
msec: 3056
- hash: "8fc354dd6ddbd829240a3c2c9dcafdeb"
+ hash: "85017ca5ca286830e2745abf2f1f963a"
}
Frame {
msec: 3072
- hash: "a53cccc463d6f6fc24dc0d6309246640"
+ hash: "2f6bdb7af9bf9334231180b6113b125f"
}
Frame {
msec: 3088
- hash: "33ff6af85e783c617a42ca5021d1463b"
+ hash: "1a2afe394227dcf2da118559e2e58fd7"
}
Frame {
msec: 3104
- hash: "d3eac9d8cd01bbb44fd61fca497230c0"
+ hash: "39978ba9bb1a535d7735228c650add38"
}
Frame {
msec: 3120
- hash: "ecab3f62c89e1cb9ff9b10ace4cdb40b"
+ hash: "4b9581a767fc1c94451780c044baf003"
}
Frame {
msec: 3136
- hash: "10f5b360c3809fbe51de55f47199c541"
+ hash: "5d1c41e371b1a95426882b3991383b6b"
}
Frame {
msec: 3152
- hash: "2a0b3f5170c31a2f2ae512ab3c4268fc"
+ hash: "73c771b964becb418289e0674571eb6f"
}
Frame {
msec: 3168
- hash: "7462f7f9c339fc4d8b0c08e54b0ed71d"
+ hash: "c5569c3c06bcf01b7e69e7f7ad6203ef"
}
Frame {
msec: 3184
- hash: "0367ee5e3204a54d225791fbd833fc21"
+ hash: "7c55078e04b56c9aba7d227917323021"
}
Frame {
msec: 3200
- hash: "86f96b2b846cad8660d80f7dbda24806"
+ hash: "01c6b78b296c00e4597ae1bd36a65f3a"
}
Frame {
msec: 3216
- hash: "ce05bb9e0a7bd884c12f100b9d219461"
+ hash: "67e9271f71b2d6d9eb2e230953db06c5"
}
Key {
type: 6
@@ -954,31 +954,31 @@ VisualTest {
}
Frame {
msec: 3232
- hash: "8b04473fad0ffec6b56d2dca8d4dd81c"
+ hash: "642a6f4d7b3f467263b8e033578927af"
}
Frame {
msec: 3248
- hash: "cedcf233a83047beef7a8aa3486df671"
+ hash: "9f000f97b33427860cb5daeb259c72ea"
}
Frame {
msec: 3264
- hash: "8117b9590a36bbb4fd0d73c1df2e655e"
+ hash: "d74e3f977b5decb89dda46ea608a933a"
}
Frame {
msec: 3280
- hash: "5c3168c676a7dc35913e365b2acafea1"
+ hash: "f4e446cd96a3eb1a0df83cf032e7a0b2"
}
Frame {
msec: 3296
- hash: "4314ebdafbfbad5f108a4cb9874ed06c"
+ hash: "abe715855a79a8ced43000884c4bf04b"
}
Frame {
msec: 3312
- hash: "d2ffe99b443ecf1188bd3639ddbccda3"
+ hash: "29fd5c17b9a169c1850aa538b4006084"
}
Frame {
msec: 3328
- hash: "a0894a3492ed7e5bf5b834db890325e2"
+ hash: "cefdcaebb9c319ac358b0d7fc9424327"
}
Key {
type: 7
@@ -990,103 +990,103 @@ VisualTest {
}
Frame {
msec: 3344
- hash: "57498e86bdc3cfd37bf29505c289d100"
+ hash: "85bfa23957bb5cd947e0819ffa442ea3"
}
Frame {
msec: 3360
- hash: "57d77411f30c4733f2afec2fc99f3d0b"
+ hash: "48f18d9d12331dc8725ea9e4b7f79823"
}
Frame {
msec: 3376
- hash: "a3c4b4fef44c4019daba366c1e3a58b1"
+ hash: "63cde59ffbbe2b9087ca228733de18dd"
}
Frame {
msec: 3392
- hash: "f8461558248b7da3bdf2df641154171a"
+ hash: "73f5d4594f23ff4aac5e42aee00dce81"
}
Frame {
msec: 3408
- hash: "13e84656ef70bf07e2a444d60ac933e1"
+ hash: "51a1b8e79d209643d55d4cecc6a70ed0"
}
Frame {
msec: 3424
- hash: "186d8a59092cfe4128b46a3c87eb347b"
+ hash: "7f2ae476246b23d79997a2545723ff62"
}
Frame {
msec: 3440
- hash: "ac4898002fdc5ea7894d741cac863c8d"
+ hash: "996da2eff9302908a55308dbcc8fb3c2"
}
Frame {
msec: 3456
- hash: "2e95c1966c94acccd2a44a6c2942d36d"
+ hash: "264f34128dfe563126b9f187c65df61e"
}
Frame {
msec: 3472
- hash: "0173dd60a64da4c06fa9a398d2c98206"
+ hash: "c526315dd5eec117266c68a7b6b64a3f"
}
Frame {
msec: 3488
- hash: "0173dd60a64da4c06fa9a398d2c98206"
+ hash: "c526315dd5eec117266c68a7b6b64a3f"
}
Frame {
msec: 3504
- hash: "0173dd60a64da4c06fa9a398d2c98206"
+ hash: "c526315dd5eec117266c68a7b6b64a3f"
}
Frame {
msec: 3520
- hash: "0173dd60a64da4c06fa9a398d2c98206"
+ hash: "c526315dd5eec117266c68a7b6b64a3f"
}
Frame {
msec: 3536
- hash: "0173dd60a64da4c06fa9a398d2c98206"
+ hash: "c526315dd5eec117266c68a7b6b64a3f"
}
Frame {
msec: 3552
- hash: "0173dd60a64da4c06fa9a398d2c98206"
+ hash: "c526315dd5eec117266c68a7b6b64a3f"
}
Frame {
msec: 3568
- hash: "7f83ba29fd27aa4817b7b84afbc8d6d7"
+ hash: "70d6b73499c36138bee63e07afb0b186"
}
Frame {
msec: 3584
- hash: "8575a99b28bb5b8c2d01a5ed91f25d47"
+ hash: "66500c2cc3d69b9fb48dc46e384aca6d"
}
Frame {
msec: 3600
- hash: "eda67cb2d32f3f605a74a01148f04c99"
+ hash: "6ccc70f6120acb53152b71bcf95514ca"
}
Frame {
msec: 3616
- hash: "1d65e6e7160f092fe65f683df7c10f92"
+ hash: "5c10e6b0e541fe913b589601a55ea6ce"
}
Frame {
msec: 3632
- hash: "274c59f268f667a1f11b8ea04a4f88a0"
+ hash: "2c62584e4c09c1d22f9016aa6fa74e10"
}
Frame {
msec: 3648
- hash: "e46d917e79910b3319c4579776bbdd60"
+ hash: "fd8f53e36a86ae22deb4f7af5aa1eb81"
}
Frame {
msec: 3664
- hash: "42b7662aad44804653101117ca698023"
+ hash: "e33226eb0e81a64bed7bcdb50e99cd13"
}
Frame {
msec: 3680
- hash: "dda5147cb6e4e8f61819de6a90dcb165"
+ hash: "a7053a2b7bc9f4749c290bace6b55634"
}
Frame {
msec: 3696
- hash: "b4a5dcd0bb667d3a42c8f0703d753ed6"
+ hash: "782cb4e647e849ac7299d41f04bc89e3"
}
Frame {
msec: 3712
- hash: "4ae70de6785fdbecf7650637c8e99a71"
+ hash: "0f7d04fe594ae027364a7c2b570c5a27"
}
Frame {
msec: 3728
- hash: "22dc8343eab28b0526d5486405b68478"
+ hash: "dfb00adcdc2f68bfb691bce47845b0e7"
}
Key {
type: 6
@@ -1098,27 +1098,27 @@ VisualTest {
}
Frame {
msec: 3744
- hash: "49de66674e8f38f925f3505c64201076"
+ hash: "cfd85885f59ea80b0b0152446a829fec"
}
Frame {
msec: 3760
- hash: "f8b28cd90fe0c4aa90e8a69d2d9cdce7"
+ hash: "192f80add5f612b07dcb8d69f2161648"
}
Frame {
msec: 3776
- hash: "e545c6ba42edd1e6a055b48f162315ab"
+ hash: "a8fe05178e6339454d57575692fa3df3"
}
Frame {
msec: 3792
- hash: "ecd42368bf2a9058185b9b25b659f4c6"
+ hash: "82e61a4d3f58ee5104893e254a77f13e"
}
Frame {
msec: 3808
- hash: "7937850b86f3611ee1d75da9deb7420d"
+ hash: "5f073a4a89413b6a6c5d6ff52717bb2f"
}
Frame {
msec: 3824
- hash: "8004e4ab3ed02f68f6f5f7f5fb9fe6c6"
+ hash: "b0fd95dc2ac09a1cbd67ad0f86682666"
}
Frame {
msec: 3840
@@ -1134,59 +1134,59 @@ VisualTest {
}
Frame {
msec: 3856
- hash: "c3df3735586ed103d137d4902d7a1cc3"
+ hash: "373c57edb812db59f40710305d80e9e9"
}
Frame {
msec: 3872
- hash: "690aa50862a887edcc9392d1c3ca0424"
+ hash: "a7142c3c1eb9c934e0b258c163fcdfec"
}
Frame {
msec: 3888
- hash: "56cc00965e12254e0133fe1d914fffb2"
+ hash: "bd5395e7e0aa0d50cb30504f9961c954"
}
Frame {
msec: 3904
- hash: "fa7d20c99cb8c20494b558ce8ef860a2"
+ hash: "7031966f014d4acd5b00c46c89f61403"
}
Frame {
msec: 3920
- hash: "315734f8f38efbc810ca2e65bd752ddd"
+ hash: "869624c2ae63b0a447401a955a6fefb1"
}
Frame {
msec: 3936
- hash: "e8cd9511f073ff40a6645ad6aa2b5bee"
+ hash: "97dabf3984492d2f868b36c3e7bfce50"
}
Frame {
msec: 3952
- hash: "b5e956f236ba52cb673af22417d1aabc"
+ hash: "afe0c3fdcb498f1f6b877c5d808b2555"
}
Frame {
msec: 3968
- hash: "b297d098f02fbbeac830b20b0a5194c5"
+ hash: "7610775f69a461d5487e8bc3db6b6e1f"
}
Frame {
msec: 3984
- hash: "c711fd5d0c3900494493f8309b79ad0c"
+ hash: "52641f9d6dfba8bf2b94aa37ade140d1"
}
Frame {
msec: 4000
- hash: "c9bf546976fc17de9ea9e877f4978f02"
+ hash: "9d0e449506ce93052216b7a952af3dea"
}
Frame {
msec: 4016
- hash: "fd83046af94eac26d394a5da986e734c"
+ hash: "c1bb09480464b7813bc10b0093d14745"
}
Frame {
msec: 4032
- hash: "c9bf546976fc17de9ea9e877f4978f02"
+ hash: "9d0e449506ce93052216b7a952af3dea"
}
Frame {
msec: 4048
- hash: "c711fd5d0c3900494493f8309b79ad0c"
+ hash: "52641f9d6dfba8bf2b94aa37ade140d1"
}
Frame {
msec: 4064
- hash: "b297d098f02fbbeac830b20b0a5194c5"
+ hash: "7610775f69a461d5487e8bc3db6b6e1f"
}
Key {
type: 7
@@ -1198,183 +1198,183 @@ VisualTest {
}
Frame {
msec: 4080
- hash: "b5e956f236ba52cb673af22417d1aabc"
+ hash: "afe0c3fdcb498f1f6b877c5d808b2555"
}
Frame {
msec: 4096
- hash: "e8cd9511f073ff40a6645ad6aa2b5bee"
+ hash: "97dabf3984492d2f868b36c3e7bfce50"
}
Frame {
msec: 4112
- hash: "315734f8f38efbc810ca2e65bd752ddd"
+ hash: "869624c2ae63b0a447401a955a6fefb1"
}
Frame {
msec: 4128
- hash: "fa7d20c99cb8c20494b558ce8ef860a2"
+ hash: "7031966f014d4acd5b00c46c89f61403"
}
Frame {
msec: 4144
- hash: "56cc00965e12254e0133fe1d914fffb2"
+ hash: "bd5395e7e0aa0d50cb30504f9961c954"
}
Frame {
msec: 4160
- hash: "690aa50862a887edcc9392d1c3ca0424"
+ hash: "a7142c3c1eb9c934e0b258c163fcdfec"
}
Frame {
msec: 4176
- hash: "c3df3735586ed103d137d4902d7a1cc3"
+ hash: "373c57edb812db59f40710305d80e9e9"
}
Frame {
msec: 4192
- hash: "0a2c07dc17922651d2abd6400fff6e43"
+ hash: "78b16507899c3c8de04b55389ea0ad49"
}
Frame {
msec: 4208
- hash: "8004e4ab3ed02f68f6f5f7f5fb9fe6c6"
+ hash: "b0fd95dc2ac09a1cbd67ad0f86682666"
}
Frame {
msec: 4224
- hash: "7937850b86f3611ee1d75da9deb7420d"
+ hash: "5f073a4a89413b6a6c5d6ff52717bb2f"
}
Frame {
msec: 4240
- hash: "ecd42368bf2a9058185b9b25b659f4c6"
+ hash: "82e61a4d3f58ee5104893e254a77f13e"
}
Frame {
msec: 4256
- hash: "e545c6ba42edd1e6a055b48f162315ab"
+ hash: "a8fe05178e6339454d57575692fa3df3"
}
Frame {
msec: 4272
- hash: "f8b28cd90fe0c4aa90e8a69d2d9cdce7"
+ hash: "192f80add5f612b07dcb8d69f2161648"
}
Frame {
msec: 4288
- hash: "49de66674e8f38f925f3505c64201076"
+ hash: "cfd85885f59ea80b0b0152446a829fec"
}
Frame {
msec: 4304
- hash: "b33880917cae07d038620065ec2c1d1c"
+ hash: "a7295dcc92f80a5f343bf05076a03748"
}
Frame {
msec: 4320
- hash: "97c8af8dc7e5372a3a0f5bed0050127e"
+ hash: "2b0b30cfb1c1e4ed8a51d36fb7ccdf57"
}
Frame {
msec: 4336
- hash: "b0236b8c44398cb9f97324f6ca9ce5c4"
+ hash: "419c538908d0226ff4485f1094eaa08e"
}
Frame {
msec: 4352
- hash: "2695b45a1ea89518d236ef3b8dccd89e"
+ hash: "8afe64448d42419f97ca207487b3b0f8"
}
Frame {
msec: 4368
- hash: "61370b1d04626facfd243176cb4bb79b"
+ hash: "86091218d2d066d8f95a460426266369"
}
Frame {
msec: 4384
- hash: "53c53e501469ca0ef0f0325a13aa4aa4"
+ hash: "fc45978cac92b6cdeeecc2dd4c29aa53"
}
Frame {
msec: 4400
- hash: "c56717a79ccffe756c5423bc5e44a53f"
+ hash: "03a90ae5cbe68cc210e303c78a14e065"
}
Frame {
msec: 4416
- hash: "e5ec3e6d4a7a527e8f2c0afa5fd66c4b"
+ hash: "15603a997aa02afb688aa74cd930f3b4"
}
Frame {
msec: 4432
- hash: "4ccb9af28572e13f961f2057eb98482d"
+ hash: "90bf6b2bf89e1440f0c4d1044c1bd22c"
}
Frame {
msec: 4448
- hash: "0b8ce455fd40c3cd74fb05d4b603cceb"
+ hash: "4dbdc16538cbbf1a87c6a54e09e02b16"
}
Frame {
msec: 4464
- hash: "f5c3754201dbb6f4ca4f4c1611036c5a"
+ hash: "2011ee59d2ec4bb0ae0d63727f091648"
}
Frame {
msec: 4480
- hash: "0173dd60a64da4c06fa9a398d2c98206"
+ hash: "c526315dd5eec117266c68a7b6b64a3f"
}
Frame {
msec: 4496
- hash: "0173dd60a64da4c06fa9a398d2c98206"
+ hash: "c526315dd5eec117266c68a7b6b64a3f"
}
Frame {
msec: 4512
- hash: "0173dd60a64da4c06fa9a398d2c98206"
+ hash: "c526315dd5eec117266c68a7b6b64a3f"
}
Frame {
msec: 4528
- hash: "0173dd60a64da4c06fa9a398d2c98206"
+ hash: "c526315dd5eec117266c68a7b6b64a3f"
}
Frame {
msec: 4544
- hash: "0173dd60a64da4c06fa9a398d2c98206"
+ hash: "c526315dd5eec117266c68a7b6b64a3f"
}
Frame {
msec: 4560
- hash: "0173dd60a64da4c06fa9a398d2c98206"
+ hash: "c526315dd5eec117266c68a7b6b64a3f"
}
Frame {
msec: 4576
- hash: "3c1972940b70a388ebfd007b0b5d9860"
+ hash: "02996bef06c74f34cf8be4cf4d1392d5"
}
Frame {
msec: 4592
- hash: "674707d6ae5ef5109940f1bd62427a63"
+ hash: "2d8cb2d213ce22132ba63a829c07f768"
}
Frame {
msec: 4608
- hash: "8f512390b74d7a545eb60a86d4b8dee6"
+ hash: "0a16c282a18fdc657ea48fb208dea494"
}
Frame {
msec: 4624
- hash: "0502cfe70da38a6ebccd7fdf799be464"
+ hash: "86baec52ccb8ae818439c637c5be1514"
}
Frame {
msec: 4640
- hash: "23c45beae15b893ec4450b0d380aeb17"
+ hash: "72e2415581ba2a96b8f23cf8f5985afb"
}
Frame {
msec: 4656
- hash: "45de58892db757e76c95ddb76e267f6f"
+ hash: "7776d964b2b5f80bac51a29d298a067f"
}
Frame {
msec: 4672
- hash: "ff3f1529c937c4d95cf4dfb8592759dc"
+ hash: "3b5d0a9f961c2102a4118a8e2d2793ae"
}
Frame {
msec: 4688
- hash: "236c6e16bbfab9268f488d6dbf9544be"
+ hash: "048b5e51d9bcf8d1b24c8f8f98b7b4e4"
}
Frame {
msec: 4704
- hash: "3bb19cbddf5e66c08bdd5c881e93db3e"
+ hash: "d30e5d7c27b72ec95c41a87741061a3f"
}
Frame {
msec: 4720
- hash: "057ea6d1007993908c9c398391b85072"
+ hash: "0374cc41cdb6528e212f678e0e049f2b"
}
Frame {
msec: 4736
- hash: "faa124cd5d0a027dc5e3b92125bc9cc5"
+ hash: "c80bc90c90b02d1d42176f16fa992f27"
}
Frame {
msec: 4752
- hash: "234ac2e7f0b87a86e0678e3cbc5a1e30"
+ hash: "70182707dbdf87a2c8db556f030bec17"
}
Frame {
msec: 4768
- hash: "bdee3016f1811188691786bafe305196"
+ hash: "0c6c0c3d27d87128d65b40789714dd6b"
}
Frame {
msec: 4784
- hash: "9ecc192aec9b15314132b16dd3f43860"
+ hash: "46e1debee4ca606492a36de6191f4594"
}
Frame {
msec: 4800
@@ -1382,118 +1382,118 @@ VisualTest {
}
Frame {
msec: 4816
- hash: "8752b33ae49ea6d1ee27376d8585776e"
+ hash: "15bc04b65bde5e8ca69b6a1f88647c16"
}
Frame {
msec: 4832
- hash: "a181b264ba729ad1d8ff91a0c56fb98a"
+ hash: "27156c3309835ec20a02877f1188e14a"
}
Frame {
msec: 4848
- hash: "af426cd28c90ac2d46d2b2478ce616f3"
+ hash: "a163019c9feff0f4d1bb4aaedcd2ecd4"
}
Frame {
msec: 4864
- hash: "d062f03ccc0eb1f56aba411e1078c4ab"
+ hash: "35f243da98f9934d5ac0a7cc1fde73ef"
}
Frame {
msec: 4880
- hash: "793cb0a98cac4a0f5d9a1dc5df5cd0ce"
+ hash: "42d393d75e0c1d5aea0e1694190e4507"
}
Frame {
msec: 4896
- hash: "da1f9732e1d7cd0b82f0c0949937067e"
+ hash: "0ec47c6c74efd66d339d9be13148e334"
}
Frame {
msec: 4912
- hash: "35d38ce67e19453f255241473294f7e9"
+ hash: "2e7597e8d03f0a05cf96fe7e2a3ee540"
}
Frame {
msec: 4928
- hash: "e8c5d9895119167f2fcb4a15b0f1b65e"
+ hash: "093c9e5ac431284de7e81e082868c5db"
}
Frame {
msec: 4944
- hash: "26c0d91942f1cb3313d604804d1e4b9e"
+ hash: "60ae71c4a6c905f47b2b457d9167153b"
}
Frame {
msec: 4960
- hash: "eaf1ba458119f6d3dedcd581d5c04f8c"
+ hash: "e4be7897b1b30ab916a53df2998282d7"
}
Frame {
msec: 4976
- hash: "a54c778d78c9a715ce0429e9c366ef8b"
+ hash: "c082b97799dffdb73ad65b2920507e9c"
}
Frame {
msec: 4992
- hash: "f3a8edba1311c54a12024dbcf1656b85"
+ hash: "aadaab0547a4f15c533589b531f39504"
}
Frame {
msec: 5008
- hash: "7c5c30318c41ab5c5874239bbcfbaae2"
+ hash: "847f0a1faf094e73d533692fa47a030a"
}
Frame {
msec: 5024
- hash: "7c5c30318c41ab5c5874239bbcfbaae2"
+ hash: "847f0a1faf094e73d533692fa47a030a"
}
Frame {
msec: 5040
- hash: "f3a8edba1311c54a12024dbcf1656b85"
+ hash: "aadaab0547a4f15c533589b531f39504"
}
Frame {
msec: 5056
- hash: "a54c778d78c9a715ce0429e9c366ef8b"
+ hash: "c082b97799dffdb73ad65b2920507e9c"
}
Frame {
msec: 5072
- hash: "eaf1ba458119f6d3dedcd581d5c04f8c"
+ hash: "e4be7897b1b30ab916a53df2998282d7"
}
Frame {
msec: 5088
- hash: "26c0d91942f1cb3313d604804d1e4b9e"
+ hash: "60ae71c4a6c905f47b2b457d9167153b"
}
Frame {
msec: 5104
- hash: "e8c5d9895119167f2fcb4a15b0f1b65e"
+ hash: "093c9e5ac431284de7e81e082868c5db"
}
Frame {
msec: 5120
- hash: "35d38ce67e19453f255241473294f7e9"
+ hash: "2e7597e8d03f0a05cf96fe7e2a3ee540"
}
Frame {
msec: 5136
- hash: "da1f9732e1d7cd0b82f0c0949937067e"
+ hash: "0ec47c6c74efd66d339d9be13148e334"
}
Frame {
msec: 5152
- hash: "793cb0a98cac4a0f5d9a1dc5df5cd0ce"
+ hash: "42d393d75e0c1d5aea0e1694190e4507"
}
Frame {
msec: 5168
- hash: "d062f03ccc0eb1f56aba411e1078c4ab"
+ hash: "35f243da98f9934d5ac0a7cc1fde73ef"
}
Frame {
msec: 5184
- hash: "af426cd28c90ac2d46d2b2478ce616f3"
+ hash: "a163019c9feff0f4d1bb4aaedcd2ecd4"
}
Frame {
msec: 5200
- hash: "a181b264ba729ad1d8ff91a0c56fb98a"
+ hash: "27156c3309835ec20a02877f1188e14a"
}
Frame {
msec: 5216
- hash: "8752b33ae49ea6d1ee27376d8585776e"
+ hash: "15bc04b65bde5e8ca69b6a1f88647c16"
}
Frame {
msec: 5232
- hash: "26dc03cf86d6812cfb788599b1c34de0"
+ hash: "f327bb2ea12b2baffc0a98d44a0ded16"
}
Frame {
msec: 5248
- hash: "9ecc192aec9b15314132b16dd3f43860"
+ hash: "46e1debee4ca606492a36de6191f4594"
}
Frame {
msec: 5264
- hash: "bdee3016f1811188691786bafe305196"
+ hash: "0c6c0c3d27d87128d65b40789714dd6b"
}
}
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 c4bf75d..dfd30f6 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.0.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.0.png
Binary files 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 f28b342..9d4eb9b 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.1.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.1.png
Binary files 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 955aed7..968517e 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.2.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.2.png
Binary files 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 02ac575..eb62c19 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.3.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.3.png
Binary files 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 8d14a2b..a7df61f 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: "7fc0cd5e044691bcef6a62d2fb6cd2d4"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 32
- hash: "7fc0cd5e044691bcef6a62d2fb6cd2d4"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 48
- hash: "7fc0cd5e044691bcef6a62d2fb6cd2d4"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 64
- hash: "7fc0cd5e044691bcef6a62d2fb6cd2d4"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 80
- hash: "7fc0cd5e044691bcef6a62d2fb6cd2d4"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 96
- hash: "7fc0cd5e044691bcef6a62d2fb6cd2d4"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 112
- hash: "7fc0cd5e044691bcef6a62d2fb6cd2d4"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 128
- hash: "7fc0cd5e044691bcef6a62d2fb6cd2d4"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 144
- hash: "7fc0cd5e044691bcef6a62d2fb6cd2d4"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 160
- hash: "7fc0cd5e044691bcef6a62d2fb6cd2d4"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 176
- hash: "7fc0cd5e044691bcef6a62d2fb6cd2d4"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 192
- hash: "7fc0cd5e044691bcef6a62d2fb6cd2d4"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 208
- hash: "7fc0cd5e044691bcef6a62d2fb6cd2d4"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 224
- hash: "7fc0cd5e044691bcef6a62d2fb6cd2d4"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 240
- hash: "7fc0cd5e044691bcef6a62d2fb6cd2d4"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 256
- hash: "7fc0cd5e044691bcef6a62d2fb6cd2d4"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 272
- hash: "7fc0cd5e044691bcef6a62d2fb6cd2d4"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 288
- hash: "7fc0cd5e044691bcef6a62d2fb6cd2d4"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 304
- hash: "7fc0cd5e044691bcef6a62d2fb6cd2d4"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 320
- hash: "7fc0cd5e044691bcef6a62d2fb6cd2d4"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 336
- hash: "7fc0cd5e044691bcef6a62d2fb6cd2d4"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 352
- hash: "7fc0cd5e044691bcef6a62d2fb6cd2d4"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 368
- hash: "7fc0cd5e044691bcef6a62d2fb6cd2d4"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 384
- hash: "7fc0cd5e044691bcef6a62d2fb6cd2d4"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Key {
type: 6
@@ -110,15 +110,15 @@ VisualTest {
}
Frame {
msec: 400
- hash: "1e5621ab02591170fabc0d91c4a09c69"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 416
- hash: "1e5621ab02591170fabc0d91c4a09c69"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 432
- hash: "1e5621ab02591170fabc0d91c4a09c69"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Key {
type: 7
@@ -130,27 +130,27 @@ VisualTest {
}
Frame {
msec: 448
- hash: "1e5621ab02591170fabc0d91c4a09c69"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 464
- hash: "1e5621ab02591170fabc0d91c4a09c69"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 480
- hash: "1e5621ab02591170fabc0d91c4a09c69"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 496
- hash: "1e5621ab02591170fabc0d91c4a09c69"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 512
- hash: "1e5621ab02591170fabc0d91c4a09c69"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 528
- hash: "1e5621ab02591170fabc0d91c4a09c69"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Key {
type: 6
@@ -162,15 +162,15 @@ VisualTest {
}
Frame {
msec: 544
- hash: "dbc65e33a133cd8fa7669175de83d94a"
+ hash: "ddf97bfd6216415dd2a56871f19c2d49"
}
Frame {
msec: 560
- hash: "dbc65e33a133cd8fa7669175de83d94a"
+ hash: "ddf97bfd6216415dd2a56871f19c2d49"
}
Frame {
msec: 576
- hash: "dbc65e33a133cd8fa7669175de83d94a"
+ hash: "ddf97bfd6216415dd2a56871f19c2d49"
}
Key {
type: 7
@@ -182,27 +182,27 @@ VisualTest {
}
Frame {
msec: 592
- hash: "dbc65e33a133cd8fa7669175de83d94a"
+ hash: "ddf97bfd6216415dd2a56871f19c2d49"
}
Frame {
msec: 608
- hash: "dbc65e33a133cd8fa7669175de83d94a"
+ hash: "ddf97bfd6216415dd2a56871f19c2d49"
}
Frame {
msec: 624
- hash: "dbc65e33a133cd8fa7669175de83d94a"
+ hash: "ddf97bfd6216415dd2a56871f19c2d49"
}
Frame {
msec: 640
- hash: "dbc65e33a133cd8fa7669175de83d94a"
+ hash: "ddf97bfd6216415dd2a56871f19c2d49"
}
Frame {
msec: 656
- hash: "dbc65e33a133cd8fa7669175de83d94a"
+ hash: "ddf97bfd6216415dd2a56871f19c2d49"
}
Frame {
msec: 672
- hash: "dbc65e33a133cd8fa7669175de83d94a"
+ hash: "ddf97bfd6216415dd2a56871f19c2d49"
}
Key {
type: 6
@@ -214,19 +214,19 @@ VisualTest {
}
Frame {
msec: 688
- hash: "755c3478a46c430b058e99cf433942b8"
+ hash: "5a7abe3d30f7dc66c2cda37b03ff339f"
}
Frame {
msec: 704
- hash: "755c3478a46c430b058e99cf433942b8"
+ hash: "5a7abe3d30f7dc66c2cda37b03ff339f"
}
Frame {
msec: 720
- hash: "755c3478a46c430b058e99cf433942b8"
+ hash: "5a7abe3d30f7dc66c2cda37b03ff339f"
}
Frame {
msec: 736
- hash: "755c3478a46c430b058e99cf433942b8"
+ hash: "5a7abe3d30f7dc66c2cda37b03ff339f"
}
Key {
type: 7
@@ -238,23 +238,23 @@ VisualTest {
}
Frame {
msec: 752
- hash: "755c3478a46c430b058e99cf433942b8"
+ hash: "5a7abe3d30f7dc66c2cda37b03ff339f"
}
Frame {
msec: 768
- hash: "755c3478a46c430b058e99cf433942b8"
+ hash: "5a7abe3d30f7dc66c2cda37b03ff339f"
}
Frame {
msec: 784
- hash: "755c3478a46c430b058e99cf433942b8"
+ hash: "5a7abe3d30f7dc66c2cda37b03ff339f"
}
Frame {
msec: 800
- hash: "755c3478a46c430b058e99cf433942b8"
+ hash: "5a7abe3d30f7dc66c2cda37b03ff339f"
}
Frame {
msec: 816
- hash: "755c3478a46c430b058e99cf433942b8"
+ hash: "5a7abe3d30f7dc66c2cda37b03ff339f"
}
Key {
type: 6
@@ -266,19 +266,19 @@ VisualTest {
}
Frame {
msec: 832
- hash: "dc2b08893d3ec12e2da923215eedf2de"
+ hash: "94d3da7909c84467c62deb2861104d21"
}
Frame {
msec: 848
- hash: "dc2b08893d3ec12e2da923215eedf2de"
+ hash: "94d3da7909c84467c62deb2861104d21"
}
Frame {
msec: 864
- hash: "dc2b08893d3ec12e2da923215eedf2de"
+ hash: "94d3da7909c84467c62deb2861104d21"
}
Frame {
msec: 880
- hash: "dc2b08893d3ec12e2da923215eedf2de"
+ hash: "94d3da7909c84467c62deb2861104d21"
}
Key {
type: 7
@@ -290,19 +290,19 @@ VisualTest {
}
Frame {
msec: 896
- hash: "dc2b08893d3ec12e2da923215eedf2de"
+ hash: "94d3da7909c84467c62deb2861104d21"
}
Frame {
msec: 912
- hash: "dc2b08893d3ec12e2da923215eedf2de"
+ hash: "94d3da7909c84467c62deb2861104d21"
}
Frame {
msec: 928
- hash: "dc2b08893d3ec12e2da923215eedf2de"
+ hash: "94d3da7909c84467c62deb2861104d21"
}
Frame {
msec: 944
- hash: "dc2b08893d3ec12e2da923215eedf2de"
+ hash: "94d3da7909c84467c62deb2861104d21"
}
Key {
type: 6
@@ -318,15 +318,15 @@ VisualTest {
}
Frame {
msec: 976
- hash: "9a3654cf08a913058fd47c072e09a5c8"
+ hash: "0873eebe3bbcb864644811670642028e"
}
Frame {
msec: 992
- hash: "9a3654cf08a913058fd47c072e09a5c8"
+ hash: "0873eebe3bbcb864644811670642028e"
}
Frame {
msec: 1008
- hash: "9a3654cf08a913058fd47c072e09a5c8"
+ hash: "0873eebe3bbcb864644811670642028e"
}
Key {
type: 7
@@ -338,23 +338,23 @@ VisualTest {
}
Frame {
msec: 1024
- hash: "9a3654cf08a913058fd47c072e09a5c8"
+ hash: "0873eebe3bbcb864644811670642028e"
}
Frame {
msec: 1040
- hash: "9a3654cf08a913058fd47c072e09a5c8"
+ hash: "0873eebe3bbcb864644811670642028e"
}
Frame {
msec: 1056
- hash: "9a3654cf08a913058fd47c072e09a5c8"
+ hash: "0873eebe3bbcb864644811670642028e"
}
Frame {
msec: 1072
- hash: "9a3654cf08a913058fd47c072e09a5c8"
+ hash: "0873eebe3bbcb864644811670642028e"
}
Frame {
msec: 1088
- hash: "9a3654cf08a913058fd47c072e09a5c8"
+ hash: "0873eebe3bbcb864644811670642028e"
}
Key {
type: 6
@@ -366,15 +366,15 @@ VisualTest {
}
Frame {
msec: 1104
- hash: "d9af8bbbe324c23f69251847c64497d9"
+ hash: "a88ac2f56d3d75a277b0855e2baeda33"
}
Frame {
msec: 1120
- hash: "d9af8bbbe324c23f69251847c64497d9"
+ hash: "a88ac2f56d3d75a277b0855e2baeda33"
}
Frame {
msec: 1136
- hash: "d9af8bbbe324c23f69251847c64497d9"
+ hash: "a88ac2f56d3d75a277b0855e2baeda33"
}
Key {
type: 7
@@ -386,23 +386,23 @@ VisualTest {
}
Frame {
msec: 1152
- hash: "d9af8bbbe324c23f69251847c64497d9"
+ hash: "a88ac2f56d3d75a277b0855e2baeda33"
}
Frame {
msec: 1168
- hash: "d9af8bbbe324c23f69251847c64497d9"
+ hash: "a88ac2f56d3d75a277b0855e2baeda33"
}
Frame {
msec: 1184
- hash: "d9af8bbbe324c23f69251847c64497d9"
+ hash: "a88ac2f56d3d75a277b0855e2baeda33"
}
Frame {
msec: 1200
- hash: "d9af8bbbe324c23f69251847c64497d9"
+ hash: "a88ac2f56d3d75a277b0855e2baeda33"
}
Frame {
msec: 1216
- hash: "d9af8bbbe324c23f69251847c64497d9"
+ hash: "a88ac2f56d3d75a277b0855e2baeda33"
}
Key {
type: 6
@@ -414,19 +414,19 @@ VisualTest {
}
Frame {
msec: 1232
- hash: "8c9706e5cc1dd8cba4312aa07249ae74"
+ hash: "22bdd816325b5466ca937cf2535a3ef8"
}
Frame {
msec: 1248
- hash: "8c9706e5cc1dd8cba4312aa07249ae74"
+ hash: "22bdd816325b5466ca937cf2535a3ef8"
}
Frame {
msec: 1264
- hash: "8c9706e5cc1dd8cba4312aa07249ae74"
+ hash: "22bdd816325b5466ca937cf2535a3ef8"
}
Frame {
msec: 1280
- hash: "8c9706e5cc1dd8cba4312aa07249ae74"
+ hash: "22bdd816325b5466ca937cf2535a3ef8"
}
Key {
type: 7
@@ -438,19 +438,19 @@ VisualTest {
}
Frame {
msec: 1296
- hash: "8c9706e5cc1dd8cba4312aa07249ae74"
+ hash: "22bdd816325b5466ca937cf2535a3ef8"
}
Frame {
msec: 1312
- hash: "8c9706e5cc1dd8cba4312aa07249ae74"
+ hash: "22bdd816325b5466ca937cf2535a3ef8"
}
Frame {
msec: 1328
- hash: "8c9706e5cc1dd8cba4312aa07249ae74"
+ hash: "22bdd816325b5466ca937cf2535a3ef8"
}
Frame {
msec: 1344
- hash: "8c9706e5cc1dd8cba4312aa07249ae74"
+ hash: "22bdd816325b5466ca937cf2535a3ef8"
}
Key {
type: 6
@@ -462,19 +462,19 @@ VisualTest {
}
Frame {
msec: 1360
- hash: "730ff91304bee489409ea616678a9877"
+ hash: "2ce295d30754b14d889795d2192fef41"
}
Frame {
msec: 1376
- hash: "730ff91304bee489409ea616678a9877"
+ hash: "2ce295d30754b14d889795d2192fef41"
}
Frame {
msec: 1392
- hash: "730ff91304bee489409ea616678a9877"
+ hash: "2ce295d30754b14d889795d2192fef41"
}
Frame {
msec: 1408
- hash: "730ff91304bee489409ea616678a9877"
+ hash: "2ce295d30754b14d889795d2192fef41"
}
Key {
type: 7
@@ -486,23 +486,23 @@ VisualTest {
}
Frame {
msec: 1424
- hash: "730ff91304bee489409ea616678a9877"
+ hash: "2ce295d30754b14d889795d2192fef41"
}
Frame {
msec: 1440
- hash: "730ff91304bee489409ea616678a9877"
+ hash: "2ce295d30754b14d889795d2192fef41"
}
Frame {
msec: 1456
- hash: "730ff91304bee489409ea616678a9877"
+ hash: "2ce295d30754b14d889795d2192fef41"
}
Frame {
msec: 1472
- hash: "730ff91304bee489409ea616678a9877"
+ hash: "2ce295d30754b14d889795d2192fef41"
}
Frame {
msec: 1488
- hash: "730ff91304bee489409ea616678a9877"
+ hash: "2ce295d30754b14d889795d2192fef41"
}
Key {
type: 6
@@ -514,15 +514,15 @@ VisualTest {
}
Frame {
msec: 1504
- hash: "2723a5a18241fd8787c2e298673e61e3"
+ hash: "ab021c71945620eba0b0cd70c7cffe5d"
}
Frame {
msec: 1520
- hash: "2723a5a18241fd8787c2e298673e61e3"
+ hash: "ab021c71945620eba0b0cd70c7cffe5d"
}
Frame {
msec: 1536
- hash: "2723a5a18241fd8787c2e298673e61e3"
+ hash: "ab021c71945620eba0b0cd70c7cffe5d"
}
Key {
type: 7
@@ -534,79 +534,79 @@ VisualTest {
}
Frame {
msec: 1552
- hash: "2723a5a18241fd8787c2e298673e61e3"
+ hash: "ab021c71945620eba0b0cd70c7cffe5d"
}
Frame {
msec: 1568
- hash: "2723a5a18241fd8787c2e298673e61e3"
+ hash: "ab021c71945620eba0b0cd70c7cffe5d"
}
Frame {
msec: 1584
- hash: "2723a5a18241fd8787c2e298673e61e3"
+ hash: "ab021c71945620eba0b0cd70c7cffe5d"
}
Frame {
msec: 1600
- hash: "2723a5a18241fd8787c2e298673e61e3"
+ hash: "ab021c71945620eba0b0cd70c7cffe5d"
}
Frame {
msec: 1616
- hash: "2723a5a18241fd8787c2e298673e61e3"
+ hash: "ab021c71945620eba0b0cd70c7cffe5d"
}
Frame {
msec: 1632
- hash: "2723a5a18241fd8787c2e298673e61e3"
+ hash: "ab021c71945620eba0b0cd70c7cffe5d"
}
Frame {
msec: 1648
- hash: "2723a5a18241fd8787c2e298673e61e3"
+ hash: "ab021c71945620eba0b0cd70c7cffe5d"
}
Frame {
msec: 1664
- hash: "2723a5a18241fd8787c2e298673e61e3"
+ hash: "ab021c71945620eba0b0cd70c7cffe5d"
}
Frame {
msec: 1680
- hash: "2723a5a18241fd8787c2e298673e61e3"
+ hash: "ab021c71945620eba0b0cd70c7cffe5d"
}
Frame {
msec: 1696
- hash: "2723a5a18241fd8787c2e298673e61e3"
+ hash: "ab021c71945620eba0b0cd70c7cffe5d"
}
Frame {
msec: 1712
- hash: "2723a5a18241fd8787c2e298673e61e3"
+ hash: "ab021c71945620eba0b0cd70c7cffe5d"
}
Frame {
msec: 1728
- hash: "2723a5a18241fd8787c2e298673e61e3"
+ hash: "ab021c71945620eba0b0cd70c7cffe5d"
}
Frame {
msec: 1744
- hash: "2723a5a18241fd8787c2e298673e61e3"
+ hash: "ab021c71945620eba0b0cd70c7cffe5d"
}
Frame {
msec: 1760
- hash: "2723a5a18241fd8787c2e298673e61e3"
+ hash: "ab021c71945620eba0b0cd70c7cffe5d"
}
Frame {
msec: 1776
- hash: "2723a5a18241fd8787c2e298673e61e3"
+ hash: "ab021c71945620eba0b0cd70c7cffe5d"
}
Frame {
msec: 1792
- hash: "2723a5a18241fd8787c2e298673e61e3"
+ hash: "ab021c71945620eba0b0cd70c7cffe5d"
}
Frame {
msec: 1808
- hash: "2723a5a18241fd8787c2e298673e61e3"
+ hash: "ab021c71945620eba0b0cd70c7cffe5d"
}
Frame {
msec: 1824
- hash: "2723a5a18241fd8787c2e298673e61e3"
+ hash: "ab021c71945620eba0b0cd70c7cffe5d"
}
Frame {
msec: 1840
- hash: "2723a5a18241fd8787c2e298673e61e3"
+ hash: "ab021c71945620eba0b0cd70c7cffe5d"
}
Key {
type: 6
@@ -618,19 +618,19 @@ VisualTest {
}
Frame {
msec: 1856
- hash: "730ff91304bee489409ea616678a9877"
+ hash: "2ce295d30754b14d889795d2192fef41"
}
Frame {
msec: 1872
- hash: "730ff91304bee489409ea616678a9877"
+ hash: "2ce295d30754b14d889795d2192fef41"
}
Frame {
msec: 1888
- hash: "730ff91304bee489409ea616678a9877"
+ hash: "2ce295d30754b14d889795d2192fef41"
}
Frame {
msec: 1904
- hash: "730ff91304bee489409ea616678a9877"
+ hash: "2ce295d30754b14d889795d2192fef41"
}
Frame {
msec: 1920
@@ -638,19 +638,19 @@ VisualTest {
}
Frame {
msec: 1936
- hash: "730ff91304bee489409ea616678a9877"
+ hash: "2ce295d30754b14d889795d2192fef41"
}
Frame {
msec: 1952
- hash: "730ff91304bee489409ea616678a9877"
+ hash: "2ce295d30754b14d889795d2192fef41"
}
Frame {
msec: 1968
- hash: "730ff91304bee489409ea616678a9877"
+ hash: "2ce295d30754b14d889795d2192fef41"
}
Frame {
msec: 1984
- hash: "730ff91304bee489409ea616678a9877"
+ hash: "2ce295d30754b14d889795d2192fef41"
}
Key {
type: 7
@@ -662,23 +662,23 @@ VisualTest {
}
Frame {
msec: 2000
- hash: "730ff91304bee489409ea616678a9877"
+ hash: "2ce295d30754b14d889795d2192fef41"
}
Frame {
msec: 2016
- hash: "730ff91304bee489409ea616678a9877"
+ hash: "2ce295d30754b14d889795d2192fef41"
}
Frame {
msec: 2032
- hash: "730ff91304bee489409ea616678a9877"
+ hash: "2ce295d30754b14d889795d2192fef41"
}
Frame {
msec: 2048
- hash: "730ff91304bee489409ea616678a9877"
+ hash: "2ce295d30754b14d889795d2192fef41"
}
Frame {
msec: 2064
- hash: "730ff91304bee489409ea616678a9877"
+ hash: "2ce295d30754b14d889795d2192fef41"
}
Key {
type: 6
@@ -690,23 +690,23 @@ VisualTest {
}
Frame {
msec: 2080
- hash: "8c9706e5cc1dd8cba4312aa07249ae74"
+ hash: "22bdd816325b5466ca937cf2535a3ef8"
}
Frame {
msec: 2096
- hash: "8c9706e5cc1dd8cba4312aa07249ae74"
+ hash: "22bdd816325b5466ca937cf2535a3ef8"
}
Frame {
msec: 2112
- hash: "8c9706e5cc1dd8cba4312aa07249ae74"
+ hash: "22bdd816325b5466ca937cf2535a3ef8"
}
Frame {
msec: 2128
- hash: "8c9706e5cc1dd8cba4312aa07249ae74"
+ hash: "22bdd816325b5466ca937cf2535a3ef8"
}
Frame {
msec: 2144
- hash: "8c9706e5cc1dd8cba4312aa07249ae74"
+ hash: "22bdd816325b5466ca937cf2535a3ef8"
}
Key {
type: 7
@@ -718,23 +718,23 @@ VisualTest {
}
Frame {
msec: 2160
- hash: "8c9706e5cc1dd8cba4312aa07249ae74"
+ hash: "22bdd816325b5466ca937cf2535a3ef8"
}
Frame {
msec: 2176
- hash: "8c9706e5cc1dd8cba4312aa07249ae74"
+ hash: "22bdd816325b5466ca937cf2535a3ef8"
}
Frame {
msec: 2192
- hash: "8c9706e5cc1dd8cba4312aa07249ae74"
+ hash: "22bdd816325b5466ca937cf2535a3ef8"
}
Frame {
msec: 2208
- hash: "8c9706e5cc1dd8cba4312aa07249ae74"
+ hash: "22bdd816325b5466ca937cf2535a3ef8"
}
Frame {
msec: 2224
- hash: "8c9706e5cc1dd8cba4312aa07249ae74"
+ hash: "22bdd816325b5466ca937cf2535a3ef8"
}
Key {
type: 6
@@ -746,11 +746,11 @@ VisualTest {
}
Frame {
msec: 2240
- hash: "d9af8bbbe324c23f69251847c64497d9"
+ hash: "a88ac2f56d3d75a277b0855e2baeda33"
}
Frame {
msec: 2256
- hash: "d9af8bbbe324c23f69251847c64497d9"
+ hash: "a88ac2f56d3d75a277b0855e2baeda33"
}
Key {
type: 7
@@ -762,23 +762,23 @@ VisualTest {
}
Frame {
msec: 2272
- hash: "d9af8bbbe324c23f69251847c64497d9"
+ hash: "a88ac2f56d3d75a277b0855e2baeda33"
}
Frame {
msec: 2288
- hash: "d9af8bbbe324c23f69251847c64497d9"
+ hash: "a88ac2f56d3d75a277b0855e2baeda33"
}
Frame {
msec: 2304
- hash: "d9af8bbbe324c23f69251847c64497d9"
+ hash: "a88ac2f56d3d75a277b0855e2baeda33"
}
Frame {
msec: 2320
- hash: "d9af8bbbe324c23f69251847c64497d9"
+ hash: "a88ac2f56d3d75a277b0855e2baeda33"
}
Frame {
msec: 2336
- hash: "d9af8bbbe324c23f69251847c64497d9"
+ hash: "a88ac2f56d3d75a277b0855e2baeda33"
}
Key {
type: 6
@@ -790,15 +790,15 @@ VisualTest {
}
Frame {
msec: 2352
- hash: "9a3654cf08a913058fd47c072e09a5c8"
+ hash: "0873eebe3bbcb864644811670642028e"
}
Frame {
msec: 2368
- hash: "9a3654cf08a913058fd47c072e09a5c8"
+ hash: "0873eebe3bbcb864644811670642028e"
}
Frame {
msec: 2384
- hash: "9a3654cf08a913058fd47c072e09a5c8"
+ hash: "0873eebe3bbcb864644811670642028e"
}
Key {
type: 7
@@ -810,55 +810,55 @@ VisualTest {
}
Frame {
msec: 2400
- hash: "9a3654cf08a913058fd47c072e09a5c8"
+ hash: "0873eebe3bbcb864644811670642028e"
}
Frame {
msec: 2416
- hash: "9a3654cf08a913058fd47c072e09a5c8"
+ hash: "0873eebe3bbcb864644811670642028e"
}
Frame {
msec: 2432
- hash: "9a3654cf08a913058fd47c072e09a5c8"
+ hash: "0873eebe3bbcb864644811670642028e"
}
Frame {
msec: 2448
- hash: "9a3654cf08a913058fd47c072e09a5c8"
+ hash: "0873eebe3bbcb864644811670642028e"
}
Frame {
msec: 2464
- hash: "9a3654cf08a913058fd47c072e09a5c8"
+ hash: "0873eebe3bbcb864644811670642028e"
}
Frame {
msec: 2480
- hash: "9a3654cf08a913058fd47c072e09a5c8"
+ hash: "0873eebe3bbcb864644811670642028e"
}
Frame {
msec: 2496
- hash: "9a3654cf08a913058fd47c072e09a5c8"
+ hash: "0873eebe3bbcb864644811670642028e"
}
Frame {
msec: 2512
- hash: "9a3654cf08a913058fd47c072e09a5c8"
+ hash: "0873eebe3bbcb864644811670642028e"
}
Frame {
msec: 2528
- hash: "9a3654cf08a913058fd47c072e09a5c8"
+ hash: "0873eebe3bbcb864644811670642028e"
}
Frame {
msec: 2544
- hash: "9a3654cf08a913058fd47c072e09a5c8"
+ hash: "0873eebe3bbcb864644811670642028e"
}
Frame {
msec: 2560
- hash: "9a3654cf08a913058fd47c072e09a5c8"
+ hash: "0873eebe3bbcb864644811670642028e"
}
Frame {
msec: 2576
- hash: "9a3654cf08a913058fd47c072e09a5c8"
+ hash: "0873eebe3bbcb864644811670642028e"
}
Frame {
msec: 2592
- hash: "9a3654cf08a913058fd47c072e09a5c8"
+ hash: "0873eebe3bbcb864644811670642028e"
}
Key {
type: 6
@@ -870,23 +870,23 @@ VisualTest {
}
Frame {
msec: 2608
- hash: "dc2b08893d3ec12e2da923215eedf2de"
+ hash: "94d3da7909c84467c62deb2861104d21"
}
Frame {
msec: 2624
- hash: "dc2b08893d3ec12e2da923215eedf2de"
+ hash: "94d3da7909c84467c62deb2861104d21"
}
Frame {
msec: 2640
- hash: "dc2b08893d3ec12e2da923215eedf2de"
+ hash: "94d3da7909c84467c62deb2861104d21"
}
Frame {
msec: 2656
- hash: "dc2b08893d3ec12e2da923215eedf2de"
+ hash: "94d3da7909c84467c62deb2861104d21"
}
Frame {
msec: 2672
- hash: "dc2b08893d3ec12e2da923215eedf2de"
+ hash: "94d3da7909c84467c62deb2861104d21"
}
Key {
type: 7
@@ -898,23 +898,23 @@ VisualTest {
}
Frame {
msec: 2688
- hash: "dc2b08893d3ec12e2da923215eedf2de"
+ hash: "94d3da7909c84467c62deb2861104d21"
}
Frame {
msec: 2704
- hash: "dc2b08893d3ec12e2da923215eedf2de"
+ hash: "94d3da7909c84467c62deb2861104d21"
}
Frame {
msec: 2720
- hash: "dc2b08893d3ec12e2da923215eedf2de"
+ hash: "94d3da7909c84467c62deb2861104d21"
}
Frame {
msec: 2736
- hash: "dc2b08893d3ec12e2da923215eedf2de"
+ hash: "94d3da7909c84467c62deb2861104d21"
}
Frame {
msec: 2752
- hash: "dc2b08893d3ec12e2da923215eedf2de"
+ hash: "94d3da7909c84467c62deb2861104d21"
}
Key {
type: 6
@@ -926,15 +926,15 @@ VisualTest {
}
Frame {
msec: 2768
- hash: "755c3478a46c430b058e99cf433942b8"
+ hash: "5a7abe3d30f7dc66c2cda37b03ff339f"
}
Frame {
msec: 2784
- hash: "755c3478a46c430b058e99cf433942b8"
+ hash: "5a7abe3d30f7dc66c2cda37b03ff339f"
}
Frame {
msec: 2800
- hash: "755c3478a46c430b058e99cf433942b8"
+ hash: "5a7abe3d30f7dc66c2cda37b03ff339f"
}
Key {
type: 7
@@ -946,19 +946,19 @@ VisualTest {
}
Frame {
msec: 2816
- hash: "755c3478a46c430b058e99cf433942b8"
+ hash: "5a7abe3d30f7dc66c2cda37b03ff339f"
}
Frame {
msec: 2832
- hash: "755c3478a46c430b058e99cf433942b8"
+ hash: "5a7abe3d30f7dc66c2cda37b03ff339f"
}
Frame {
msec: 2848
- hash: "755c3478a46c430b058e99cf433942b8"
+ hash: "5a7abe3d30f7dc66c2cda37b03ff339f"
}
Frame {
msec: 2864
- hash: "755c3478a46c430b058e99cf433942b8"
+ hash: "5a7abe3d30f7dc66c2cda37b03ff339f"
}
Key {
type: 6
@@ -974,15 +974,15 @@ VisualTest {
}
Frame {
msec: 2896
- hash: "dbc65e33a133cd8fa7669175de83d94a"
+ hash: "ddf97bfd6216415dd2a56871f19c2d49"
}
Frame {
msec: 2912
- hash: "dbc65e33a133cd8fa7669175de83d94a"
+ hash: "ddf97bfd6216415dd2a56871f19c2d49"
}
Frame {
msec: 2928
- hash: "dbc65e33a133cd8fa7669175de83d94a"
+ hash: "ddf97bfd6216415dd2a56871f19c2d49"
}
Key {
type: 7
@@ -994,23 +994,23 @@ VisualTest {
}
Frame {
msec: 2944
- hash: "dbc65e33a133cd8fa7669175de83d94a"
+ hash: "ddf97bfd6216415dd2a56871f19c2d49"
}
Frame {
msec: 2960
- hash: "dbc65e33a133cd8fa7669175de83d94a"
+ hash: "ddf97bfd6216415dd2a56871f19c2d49"
}
Frame {
msec: 2976
- hash: "dbc65e33a133cd8fa7669175de83d94a"
+ hash: "ddf97bfd6216415dd2a56871f19c2d49"
}
Frame {
msec: 2992
- hash: "dbc65e33a133cd8fa7669175de83d94a"
+ hash: "ddf97bfd6216415dd2a56871f19c2d49"
}
Frame {
msec: 3008
- hash: "dbc65e33a133cd8fa7669175de83d94a"
+ hash: "ddf97bfd6216415dd2a56871f19c2d49"
}
Key {
type: 6
@@ -1022,23 +1022,23 @@ VisualTest {
}
Frame {
msec: 3024
- hash: "1e5621ab02591170fabc0d91c4a09c69"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3040
- hash: "1e5621ab02591170fabc0d91c4a09c69"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3056
- hash: "1e5621ab02591170fabc0d91c4a09c69"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3072
- hash: "1e5621ab02591170fabc0d91c4a09c69"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3088
- hash: "1e5621ab02591170fabc0d91c4a09c69"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Key {
type: 7
@@ -1050,155 +1050,155 @@ VisualTest {
}
Frame {
msec: 3104
- hash: "1e5621ab02591170fabc0d91c4a09c69"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3120
- hash: "1e5621ab02591170fabc0d91c4a09c69"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3136
- hash: "1e5621ab02591170fabc0d91c4a09c69"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3152
- hash: "1e5621ab02591170fabc0d91c4a09c69"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3168
- hash: "1e5621ab02591170fabc0d91c4a09c69"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3184
- hash: "1e5621ab02591170fabc0d91c4a09c69"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3200
- hash: "1e5621ab02591170fabc0d91c4a09c69"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3216
- hash: "1e5621ab02591170fabc0d91c4a09c69"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3232
- hash: "1e5621ab02591170fabc0d91c4a09c69"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3248
- hash: "1e5621ab02591170fabc0d91c4a09c69"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3264
- hash: "1e5621ab02591170fabc0d91c4a09c69"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3280
- hash: "1e5621ab02591170fabc0d91c4a09c69"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3296
- hash: "1e5621ab02591170fabc0d91c4a09c69"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3312
- hash: "1e5621ab02591170fabc0d91c4a09c69"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3328
- hash: "1e5621ab02591170fabc0d91c4a09c69"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3344
- hash: "1e5621ab02591170fabc0d91c4a09c69"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3360
- hash: "1e5621ab02591170fabc0d91c4a09c69"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3376
- hash: "1e5621ab02591170fabc0d91c4a09c69"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3392
- hash: "1e5621ab02591170fabc0d91c4a09c69"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3408
- hash: "1e5621ab02591170fabc0d91c4a09c69"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3424
- hash: "1e5621ab02591170fabc0d91c4a09c69"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3440
- hash: "1e5621ab02591170fabc0d91c4a09c69"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3456
- hash: "1e5621ab02591170fabc0d91c4a09c69"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3472
- hash: "1e5621ab02591170fabc0d91c4a09c69"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3488
- hash: "1e5621ab02591170fabc0d91c4a09c69"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3504
- hash: "1e5621ab02591170fabc0d91c4a09c69"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3520
- hash: "1e5621ab02591170fabc0d91c4a09c69"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3536
- hash: "1e5621ab02591170fabc0d91c4a09c69"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3552
- hash: "1e5621ab02591170fabc0d91c4a09c69"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3568
- hash: "1e5621ab02591170fabc0d91c4a09c69"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3584
- hash: "1e5621ab02591170fabc0d91c4a09c69"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3600
- hash: "1e5621ab02591170fabc0d91c4a09c69"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3616
- hash: "1e5621ab02591170fabc0d91c4a09c69"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3632
- hash: "1e5621ab02591170fabc0d91c4a09c69"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3648
- hash: "1e5621ab02591170fabc0d91c4a09c69"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3664
- hash: "1e5621ab02591170fabc0d91c4a09c69"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3680
- hash: "1e5621ab02591170fabc0d91c4a09c69"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Frame {
msec: 3696
- hash: "1e5621ab02591170fabc0d91c4a09c69"
+ hash: "5db508bc5a66018d9732cf8427461ef2"
}
Key {
type: 6
@@ -1210,27 +1210,27 @@ VisualTest {
}
Frame {
msec: 3712
- hash: "7fc0cd5e044691bcef6a62d2fb6cd2d4"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 3728
- hash: "7fc0cd5e044691bcef6a62d2fb6cd2d4"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 3744
- hash: "7fc0cd5e044691bcef6a62d2fb6cd2d4"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 3760
- hash: "7fc0cd5e044691bcef6a62d2fb6cd2d4"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 3776
- hash: "7fc0cd5e044691bcef6a62d2fb6cd2d4"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 3792
- hash: "7fc0cd5e044691bcef6a62d2fb6cd2d4"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Key {
type: 7
@@ -1242,11 +1242,11 @@ VisualTest {
}
Frame {
msec: 3808
- hash: "7fc0cd5e044691bcef6a62d2fb6cd2d4"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 3824
- hash: "7fc0cd5e044691bcef6a62d2fb6cd2d4"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 3840
@@ -1254,118 +1254,118 @@ VisualTest {
}
Frame {
msec: 3856
- hash: "7fc0cd5e044691bcef6a62d2fb6cd2d4"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 3872
- hash: "7fc0cd5e044691bcef6a62d2fb6cd2d4"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 3888
- hash: "7fc0cd5e044691bcef6a62d2fb6cd2d4"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 3904
- hash: "7fc0cd5e044691bcef6a62d2fb6cd2d4"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 3920
- hash: "7fc0cd5e044691bcef6a62d2fb6cd2d4"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 3936
- hash: "7fc0cd5e044691bcef6a62d2fb6cd2d4"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 3952
- hash: "7fc0cd5e044691bcef6a62d2fb6cd2d4"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 3968
- hash: "7fc0cd5e044691bcef6a62d2fb6cd2d4"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 3984
- hash: "7fc0cd5e044691bcef6a62d2fb6cd2d4"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 4000
- hash: "7fc0cd5e044691bcef6a62d2fb6cd2d4"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 4016
- hash: "7fc0cd5e044691bcef6a62d2fb6cd2d4"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 4032
- hash: "7fc0cd5e044691bcef6a62d2fb6cd2d4"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 4048
- hash: "7fc0cd5e044691bcef6a62d2fb6cd2d4"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 4064
- hash: "7fc0cd5e044691bcef6a62d2fb6cd2d4"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 4080
- hash: "7fc0cd5e044691bcef6a62d2fb6cd2d4"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 4096
- hash: "7fc0cd5e044691bcef6a62d2fb6cd2d4"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 4112
- hash: "7fc0cd5e044691bcef6a62d2fb6cd2d4"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 4128
- hash: "7fc0cd5e044691bcef6a62d2fb6cd2d4"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 4144
- hash: "7fc0cd5e044691bcef6a62d2fb6cd2d4"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 4160
- hash: "7fc0cd5e044691bcef6a62d2fb6cd2d4"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 4176
- hash: "7fc0cd5e044691bcef6a62d2fb6cd2d4"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 4192
- hash: "7fc0cd5e044691bcef6a62d2fb6cd2d4"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 4208
- hash: "7fc0cd5e044691bcef6a62d2fb6cd2d4"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 4224
- hash: "7fc0cd5e044691bcef6a62d2fb6cd2d4"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 4240
- hash: "7fc0cd5e044691bcef6a62d2fb6cd2d4"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 4256
- hash: "7fc0cd5e044691bcef6a62d2fb6cd2d4"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 4272
- hash: "7fc0cd5e044691bcef6a62d2fb6cd2d4"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 4288
- hash: "7fc0cd5e044691bcef6a62d2fb6cd2d4"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
Frame {
msec: 4304
- hash: "7fc0cd5e044691bcef6a62d2fb6cd2d4"
+ hash: "9d4f0f25239a53ed9ac917df0c4a5f8e"
}
}
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 a3f0089..5049c3f 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.0.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.0.png
Binary files 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 95772a9..ee6e16a 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.1.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.1.png
Binary files 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 1b280eb..d9d2252 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.10.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.10.png
Binary files 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 1b280eb..d9d2252 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.11.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.11.png
Binary files 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 cdd3dc0..cf99d98 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.2.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.2.png
Binary files 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 a3115f6..e3937f0 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.3.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.3.png
Binary files 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 d2c895b..2fe3337 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.4.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.4.png
Binary files 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 e0e1ced..97b9913 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.5.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.5.png
Binary files 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 bde3d7d..08e059f 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.6.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.6.png
Binary files 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 38bf8be..bbc5ba2 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.7.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.7.png
Binary files 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 7475f96..465b64e 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.8.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.8.png
Binary files 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 1b280eb..d9d2252 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.9.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.9.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.qml
index c12ee51..a8173be 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: "e931c5f5d15e4f977e1822f2a6dd57df"
+ hash: "e742c08c259034e879b95eea60794e77"
}
Frame {
msec: 32
- hash: "e931c5f5d15e4f977e1822f2a6dd57df"
+ hash: "e742c08c259034e879b95eea60794e77"
}
Frame {
msec: 48
- hash: "e931c5f5d15e4f977e1822f2a6dd57df"
+ hash: "e742c08c259034e879b95eea60794e77"
}
Frame {
msec: 64
- hash: "e931c5f5d15e4f977e1822f2a6dd57df"
+ hash: "e742c08c259034e879b95eea60794e77"
}
Frame {
msec: 80
- hash: "e931c5f5d15e4f977e1822f2a6dd57df"
+ hash: "e742c08c259034e879b95eea60794e77"
}
Frame {
msec: 96
- hash: "e931c5f5d15e4f977e1822f2a6dd57df"
+ hash: "e742c08c259034e879b95eea60794e77"
}
Frame {
msec: 112
- hash: "e931c5f5d15e4f977e1822f2a6dd57df"
+ hash: "e742c08c259034e879b95eea60794e77"
}
Frame {
msec: 128
- hash: "e931c5f5d15e4f977e1822f2a6dd57df"
+ hash: "e742c08c259034e879b95eea60794e77"
}
Frame {
msec: 144
- hash: "e931c5f5d15e4f977e1822f2a6dd57df"
+ hash: "e742c08c259034e879b95eea60794e77"
}
Frame {
msec: 160
- hash: "e931c5f5d15e4f977e1822f2a6dd57df"
+ hash: "e742c08c259034e879b95eea60794e77"
}
Frame {
msec: 176
- hash: "e931c5f5d15e4f977e1822f2a6dd57df"
+ hash: "e742c08c259034e879b95eea60794e77"
}
Frame {
msec: 192
- hash: "e931c5f5d15e4f977e1822f2a6dd57df"
+ hash: "e742c08c259034e879b95eea60794e77"
}
Frame {
msec: 208
- hash: "e931c5f5d15e4f977e1822f2a6dd57df"
+ hash: "e742c08c259034e879b95eea60794e77"
}
Frame {
msec: 224
- hash: "e931c5f5d15e4f977e1822f2a6dd57df"
+ hash: "e742c08c259034e879b95eea60794e77"
}
Frame {
msec: 240
- hash: "e931c5f5d15e4f977e1822f2a6dd57df"
+ hash: "e742c08c259034e879b95eea60794e77"
}
Frame {
msec: 256
- hash: "e931c5f5d15e4f977e1822f2a6dd57df"
+ hash: "e742c08c259034e879b95eea60794e77"
}
Frame {
msec: 272
- hash: "e931c5f5d15e4f977e1822f2a6dd57df"
+ hash: "e742c08c259034e879b95eea60794e77"
}
Frame {
msec: 288
- hash: "e931c5f5d15e4f977e1822f2a6dd57df"
+ hash: "e742c08c259034e879b95eea60794e77"
}
Frame {
msec: 304
- hash: "e931c5f5d15e4f977e1822f2a6dd57df"
+ hash: "e742c08c259034e879b95eea60794e77"
}
Frame {
msec: 320
- hash: "e931c5f5d15e4f977e1822f2a6dd57df"
+ hash: "e742c08c259034e879b95eea60794e77"
}
Mouse {
type: 2
@@ -94,23 +94,23 @@ VisualTest {
}
Frame {
msec: 336
- hash: "e931c5f5d15e4f977e1822f2a6dd57df"
+ hash: "e742c08c259034e879b95eea60794e77"
}
Frame {
msec: 352
- hash: "e931c5f5d15e4f977e1822f2a6dd57df"
+ hash: "e742c08c259034e879b95eea60794e77"
}
Frame {
msec: 368
- hash: "e931c5f5d15e4f977e1822f2a6dd57df"
+ hash: "e742c08c259034e879b95eea60794e77"
}
Frame {
msec: 384
- hash: "e931c5f5d15e4f977e1822f2a6dd57df"
+ hash: "e742c08c259034e879b95eea60794e77"
}
Frame {
msec: 400
- hash: "e931c5f5d15e4f977e1822f2a6dd57df"
+ hash: "e742c08c259034e879b95eea60794e77"
}
Mouse {
type: 3
@@ -122,63 +122,63 @@ VisualTest {
}
Frame {
msec: 416
- hash: "e931c5f5d15e4f977e1822f2a6dd57df"
+ hash: "e742c08c259034e879b95eea60794e77"
}
Frame {
msec: 432
- hash: "e931c5f5d15e4f977e1822f2a6dd57df"
+ hash: "e742c08c259034e879b95eea60794e77"
}
Frame {
msec: 448
- hash: "e931c5f5d15e4f977e1822f2a6dd57df"
+ hash: "e742c08c259034e879b95eea60794e77"
}
Frame {
msec: 464
- hash: "e931c5f5d15e4f977e1822f2a6dd57df"
+ hash: "e742c08c259034e879b95eea60794e77"
}
Frame {
msec: 480
- hash: "e931c5f5d15e4f977e1822f2a6dd57df"
+ hash: "e742c08c259034e879b95eea60794e77"
}
Frame {
msec: 496
- hash: "e931c5f5d15e4f977e1822f2a6dd57df"
+ hash: "e742c08c259034e879b95eea60794e77"
}
Frame {
msec: 512
- hash: "e931c5f5d15e4f977e1822f2a6dd57df"
+ hash: "e742c08c259034e879b95eea60794e77"
}
Frame {
msec: 528
- hash: "e931c5f5d15e4f977e1822f2a6dd57df"
+ hash: "e742c08c259034e879b95eea60794e77"
}
Frame {
msec: 544
- hash: "e931c5f5d15e4f977e1822f2a6dd57df"
+ hash: "e742c08c259034e879b95eea60794e77"
}
Frame {
msec: 560
- hash: "e931c5f5d15e4f977e1822f2a6dd57df"
+ hash: "e742c08c259034e879b95eea60794e77"
}
Frame {
msec: 576
- hash: "e931c5f5d15e4f977e1822f2a6dd57df"
+ hash: "e742c08c259034e879b95eea60794e77"
}
Frame {
msec: 592
- hash: "e931c5f5d15e4f977e1822f2a6dd57df"
+ hash: "e742c08c259034e879b95eea60794e77"
}
Frame {
msec: 608
- hash: "e931c5f5d15e4f977e1822f2a6dd57df"
+ hash: "e742c08c259034e879b95eea60794e77"
}
Frame {
msec: 624
- hash: "e931c5f5d15e4f977e1822f2a6dd57df"
+ hash: "e742c08c259034e879b95eea60794e77"
}
Frame {
msec: 640
- hash: "e931c5f5d15e4f977e1822f2a6dd57df"
+ hash: "e742c08c259034e879b95eea60794e77"
}
Mouse {
type: 2
@@ -190,11 +190,11 @@ VisualTest {
}
Frame {
msec: 656
- hash: "01cf9ccfc86504bc6efe5fec1e68e537"
+ hash: "3eaecb73d32414207c898a36c9c41da3"
}
Frame {
msec: 672
- hash: "01cf9ccfc86504bc6efe5fec1e68e537"
+ hash: "3eaecb73d32414207c898a36c9c41da3"
}
Mouse {
type: 3
@@ -206,71 +206,71 @@ VisualTest {
}
Frame {
msec: 688
- hash: "01cf9ccfc86504bc6efe5fec1e68e537"
+ hash: "3eaecb73d32414207c898a36c9c41da3"
}
Frame {
msec: 704
- hash: "01cf9ccfc86504bc6efe5fec1e68e537"
+ hash: "3eaecb73d32414207c898a36c9c41da3"
}
Frame {
msec: 720
- hash: "01cf9ccfc86504bc6efe5fec1e68e537"
+ hash: "3eaecb73d32414207c898a36c9c41da3"
}
Frame {
msec: 736
- hash: "01cf9ccfc86504bc6efe5fec1e68e537"
+ hash: "3eaecb73d32414207c898a36c9c41da3"
}
Frame {
msec: 752
- hash: "01cf9ccfc86504bc6efe5fec1e68e537"
+ hash: "3eaecb73d32414207c898a36c9c41da3"
}
Frame {
msec: 768
- hash: "01cf9ccfc86504bc6efe5fec1e68e537"
+ hash: "3eaecb73d32414207c898a36c9c41da3"
}
Frame {
msec: 784
- hash: "01cf9ccfc86504bc6efe5fec1e68e537"
+ hash: "3eaecb73d32414207c898a36c9c41da3"
}
Frame {
msec: 800
- hash: "01cf9ccfc86504bc6efe5fec1e68e537"
+ hash: "3eaecb73d32414207c898a36c9c41da3"
}
Frame {
msec: 816
- hash: "01cf9ccfc86504bc6efe5fec1e68e537"
+ hash: "3eaecb73d32414207c898a36c9c41da3"
}
Frame {
msec: 832
- hash: "01cf9ccfc86504bc6efe5fec1e68e537"
+ hash: "3eaecb73d32414207c898a36c9c41da3"
}
Frame {
msec: 848
- hash: "01cf9ccfc86504bc6efe5fec1e68e537"
+ hash: "3eaecb73d32414207c898a36c9c41da3"
}
Frame {
msec: 864
- hash: "01cf9ccfc86504bc6efe5fec1e68e537"
+ hash: "3eaecb73d32414207c898a36c9c41da3"
}
Frame {
msec: 880
- hash: "01cf9ccfc86504bc6efe5fec1e68e537"
+ hash: "3eaecb73d32414207c898a36c9c41da3"
}
Frame {
msec: 896
- hash: "01cf9ccfc86504bc6efe5fec1e68e537"
+ hash: "3eaecb73d32414207c898a36c9c41da3"
}
Frame {
msec: 912
- hash: "01cf9ccfc86504bc6efe5fec1e68e537"
+ hash: "3eaecb73d32414207c898a36c9c41da3"
}
Frame {
msec: 928
- hash: "01cf9ccfc86504bc6efe5fec1e68e537"
+ hash: "3eaecb73d32414207c898a36c9c41da3"
}
Frame {
msec: 944
- hash: "01cf9ccfc86504bc6efe5fec1e68e537"
+ hash: "3eaecb73d32414207c898a36c9c41da3"
}
Frame {
msec: 960
@@ -278,87 +278,87 @@ VisualTest {
}
Frame {
msec: 976
- hash: "01cf9ccfc86504bc6efe5fec1e68e537"
+ hash: "3eaecb73d32414207c898a36c9c41da3"
}
Frame {
msec: 992
- hash: "01cf9ccfc86504bc6efe5fec1e68e537"
+ hash: "3eaecb73d32414207c898a36c9c41da3"
}
Frame {
msec: 1008
- hash: "01cf9ccfc86504bc6efe5fec1e68e537"
+ hash: "3eaecb73d32414207c898a36c9c41da3"
}
Frame {
msec: 1024
- hash: "01cf9ccfc86504bc6efe5fec1e68e537"
+ hash: "3eaecb73d32414207c898a36c9c41da3"
}
Frame {
msec: 1040
- hash: "01cf9ccfc86504bc6efe5fec1e68e537"
+ hash: "3eaecb73d32414207c898a36c9c41da3"
}
Frame {
msec: 1056
- hash: "01cf9ccfc86504bc6efe5fec1e68e537"
+ hash: "3eaecb73d32414207c898a36c9c41da3"
}
Frame {
msec: 1072
- hash: "01cf9ccfc86504bc6efe5fec1e68e537"
+ hash: "3eaecb73d32414207c898a36c9c41da3"
}
Frame {
msec: 1088
- hash: "01cf9ccfc86504bc6efe5fec1e68e537"
+ hash: "3eaecb73d32414207c898a36c9c41da3"
}
Frame {
msec: 1104
- hash: "01cf9ccfc86504bc6efe5fec1e68e537"
+ hash: "3eaecb73d32414207c898a36c9c41da3"
}
Frame {
msec: 1120
- hash: "01cf9ccfc86504bc6efe5fec1e68e537"
+ hash: "3eaecb73d32414207c898a36c9c41da3"
}
Frame {
msec: 1136
- hash: "01cf9ccfc86504bc6efe5fec1e68e537"
+ hash: "3eaecb73d32414207c898a36c9c41da3"
}
Frame {
msec: 1152
- hash: "01cf9ccfc86504bc6efe5fec1e68e537"
+ hash: "3eaecb73d32414207c898a36c9c41da3"
}
Frame {
msec: 1168
- hash: "01cf9ccfc86504bc6efe5fec1e68e537"
+ hash: "3eaecb73d32414207c898a36c9c41da3"
}
Frame {
msec: 1184
- hash: "01cf9ccfc86504bc6efe5fec1e68e537"
+ hash: "3eaecb73d32414207c898a36c9c41da3"
}
Frame {
msec: 1200
- hash: "01cf9ccfc86504bc6efe5fec1e68e537"
+ hash: "3eaecb73d32414207c898a36c9c41da3"
}
Frame {
msec: 1216
- hash: "01cf9ccfc86504bc6efe5fec1e68e537"
+ hash: "3eaecb73d32414207c898a36c9c41da3"
}
Frame {
msec: 1232
- hash: "01cf9ccfc86504bc6efe5fec1e68e537"
+ hash: "3eaecb73d32414207c898a36c9c41da3"
}
Frame {
msec: 1248
- hash: "01cf9ccfc86504bc6efe5fec1e68e537"
+ hash: "3eaecb73d32414207c898a36c9c41da3"
}
Frame {
msec: 1264
- hash: "01cf9ccfc86504bc6efe5fec1e68e537"
+ hash: "3eaecb73d32414207c898a36c9c41da3"
}
Frame {
msec: 1280
- hash: "01cf9ccfc86504bc6efe5fec1e68e537"
+ hash: "3eaecb73d32414207c898a36c9c41da3"
}
Frame {
msec: 1296
- hash: "01cf9ccfc86504bc6efe5fec1e68e537"
+ hash: "3eaecb73d32414207c898a36c9c41da3"
}
Key {
type: 6
@@ -370,23 +370,23 @@ VisualTest {
}
Frame {
msec: 1312
- hash: "bac01431244974a1768d84318f49bf89"
+ hash: "c101a1d74691605f2740452950693e43"
}
Frame {
msec: 1328
- hash: "bac01431244974a1768d84318f49bf89"
+ hash: "c101a1d74691605f2740452950693e43"
}
Frame {
msec: 1344
- hash: "bac01431244974a1768d84318f49bf89"
+ hash: "c101a1d74691605f2740452950693e43"
}
Frame {
msec: 1360
- hash: "bac01431244974a1768d84318f49bf89"
+ hash: "c101a1d74691605f2740452950693e43"
}
Frame {
msec: 1376
- hash: "bac01431244974a1768d84318f49bf89"
+ hash: "c101a1d74691605f2740452950693e43"
}
Key {
type: 7
@@ -398,7 +398,7 @@ VisualTest {
}
Frame {
msec: 1392
- hash: "bac01431244974a1768d84318f49bf89"
+ hash: "c101a1d74691605f2740452950693e43"
}
Key {
type: 6
@@ -410,19 +410,19 @@ VisualTest {
}
Frame {
msec: 1408
- hash: "e22c6376c05d52c8997a67bf21d82a83"
+ hash: "e3e33c9f73352079db2f5e96c0069974"
}
Frame {
msec: 1424
- hash: "e22c6376c05d52c8997a67bf21d82a83"
+ hash: "e3e33c9f73352079db2f5e96c0069974"
}
Frame {
msec: 1440
- hash: "e22c6376c05d52c8997a67bf21d82a83"
+ hash: "e3e33c9f73352079db2f5e96c0069974"
}
Frame {
msec: 1456
- hash: "e22c6376c05d52c8997a67bf21d82a83"
+ hash: "e3e33c9f73352079db2f5e96c0069974"
}
Key {
type: 7
@@ -434,27 +434,27 @@ VisualTest {
}
Frame {
msec: 1472
- hash: "e22c6376c05d52c8997a67bf21d82a83"
+ hash: "e3e33c9f73352079db2f5e96c0069974"
}
Frame {
msec: 1488
- hash: "e22c6376c05d52c8997a67bf21d82a83"
+ hash: "e3e33c9f73352079db2f5e96c0069974"
}
Frame {
msec: 1504
- hash: "e22c6376c05d52c8997a67bf21d82a83"
+ hash: "e3e33c9f73352079db2f5e96c0069974"
}
Frame {
msec: 1520
- hash: "e22c6376c05d52c8997a67bf21d82a83"
+ hash: "e3e33c9f73352079db2f5e96c0069974"
}
Frame {
msec: 1536
- hash: "e22c6376c05d52c8997a67bf21d82a83"
+ hash: "e3e33c9f73352079db2f5e96c0069974"
}
Frame {
msec: 1552
- hash: "e22c6376c05d52c8997a67bf21d82a83"
+ hash: "e3e33c9f73352079db2f5e96c0069974"
}
Key {
type: 6
@@ -466,15 +466,15 @@ VisualTest {
}
Frame {
msec: 1568
- hash: "47f630d2cc3a3fa15309f5f631a36690"
+ hash: "0e79208365ec4b5a609d13b9e6c5c8d8"
}
Frame {
msec: 1584
- hash: "47f630d2cc3a3fa15309f5f631a36690"
+ hash: "0e79208365ec4b5a609d13b9e6c5c8d8"
}
Frame {
msec: 1600
- hash: "47f630d2cc3a3fa15309f5f631a36690"
+ hash: "0e79208365ec4b5a609d13b9e6c5c8d8"
}
Key {
type: 7
@@ -486,7 +486,7 @@ VisualTest {
}
Frame {
msec: 1616
- hash: "47f630d2cc3a3fa15309f5f631a36690"
+ hash: "0e79208365ec4b5a609d13b9e6c5c8d8"
}
Key {
type: 6
@@ -498,23 +498,23 @@ VisualTest {
}
Frame {
msec: 1632
- hash: "b03df007a2e778d3f055ceb12ab61ec1"
+ hash: "5485c9cf4050ef8c1dda227d27326f78"
}
Frame {
msec: 1648
- hash: "b03df007a2e778d3f055ceb12ab61ec1"
+ hash: "5485c9cf4050ef8c1dda227d27326f78"
}
Frame {
msec: 1664
- hash: "b03df007a2e778d3f055ceb12ab61ec1"
+ hash: "5485c9cf4050ef8c1dda227d27326f78"
}
Frame {
msec: 1680
- hash: "b03df007a2e778d3f055ceb12ab61ec1"
+ hash: "5485c9cf4050ef8c1dda227d27326f78"
}
Frame {
msec: 1696
- hash: "b03df007a2e778d3f055ceb12ab61ec1"
+ hash: "5485c9cf4050ef8c1dda227d27326f78"
}
Key {
type: 7
@@ -526,11 +526,11 @@ VisualTest {
}
Frame {
msec: 1712
- hash: "b03df007a2e778d3f055ceb12ab61ec1"
+ hash: "5485c9cf4050ef8c1dda227d27326f78"
}
Frame {
msec: 1728
- hash: "b03df007a2e778d3f055ceb12ab61ec1"
+ hash: "5485c9cf4050ef8c1dda227d27326f78"
}
Key {
type: 6
@@ -542,15 +542,15 @@ VisualTest {
}
Frame {
msec: 1744
- hash: "f73e5dc997ddc56554f914014c376f24"
+ hash: "1063a2e6164b372ba364c15c1c8b6ade"
}
Frame {
msec: 1760
- hash: "f73e5dc997ddc56554f914014c376f24"
+ hash: "1063a2e6164b372ba364c15c1c8b6ade"
}
Frame {
msec: 1776
- hash: "f73e5dc997ddc56554f914014c376f24"
+ hash: "1063a2e6164b372ba364c15c1c8b6ade"
}
Key {
type: 7
@@ -562,15 +562,15 @@ VisualTest {
}
Frame {
msec: 1792
- hash: "f73e5dc997ddc56554f914014c376f24"
+ hash: "1063a2e6164b372ba364c15c1c8b6ade"
}
Frame {
msec: 1808
- hash: "f73e5dc997ddc56554f914014c376f24"
+ hash: "1063a2e6164b372ba364c15c1c8b6ade"
}
Frame {
msec: 1824
- hash: "f73e5dc997ddc56554f914014c376f24"
+ hash: "1063a2e6164b372ba364c15c1c8b6ade"
}
Key {
type: 6
@@ -582,23 +582,23 @@ VisualTest {
}
Frame {
msec: 1840
- hash: "d089f840e514b68fad1edbbce686525f"
+ hash: "213c0057171a86bd4e2d898fac4d6642"
}
Frame {
msec: 1856
- hash: "d089f840e514b68fad1edbbce686525f"
+ hash: "213c0057171a86bd4e2d898fac4d6642"
}
Frame {
msec: 1872
- hash: "d089f840e514b68fad1edbbce686525f"
+ hash: "213c0057171a86bd4e2d898fac4d6642"
}
Frame {
msec: 1888
- hash: "d089f840e514b68fad1edbbce686525f"
+ hash: "213c0057171a86bd4e2d898fac4d6642"
}
Frame {
msec: 1904
- hash: "d089f840e514b68fad1edbbce686525f"
+ hash: "213c0057171a86bd4e2d898fac4d6642"
}
Key {
type: 7
@@ -622,15 +622,15 @@ VisualTest {
}
Frame {
msec: 1936
- hash: "9751cdca40cadacfc28de757b20ed639"
+ hash: "df9766751a5698f84f98faa0ac0e6f1a"
}
Frame {
msec: 1952
- hash: "9751cdca40cadacfc28de757b20ed639"
+ hash: "df9766751a5698f84f98faa0ac0e6f1a"
}
Frame {
msec: 1968
- hash: "9751cdca40cadacfc28de757b20ed639"
+ hash: "df9766751a5698f84f98faa0ac0e6f1a"
}
Key {
type: 6
@@ -642,11 +642,11 @@ VisualTest {
}
Frame {
msec: 1984
- hash: "8fb457eb7c17974786ff239c09101d27"
+ hash: "47cb63f13c81ac6557ecc68d4e6f9c99"
}
Frame {
msec: 2000
- hash: "8fb457eb7c17974786ff239c09101d27"
+ hash: "47cb63f13c81ac6557ecc68d4e6f9c99"
}
Key {
type: 7
@@ -658,7 +658,7 @@ VisualTest {
}
Frame {
msec: 2016
- hash: "8fb457eb7c17974786ff239c09101d27"
+ hash: "47cb63f13c81ac6557ecc68d4e6f9c99"
}
Key {
type: 6
@@ -670,11 +670,11 @@ VisualTest {
}
Frame {
msec: 2032
- hash: "eeb022c3dd997ce86c3a60146d19b540"
+ hash: "4f39251d7a0071a67435d088f46fc4fe"
}
Frame {
msec: 2048
- hash: "eeb022c3dd997ce86c3a60146d19b540"
+ hash: "4f39251d7a0071a67435d088f46fc4fe"
}
Key {
type: 7
@@ -686,19 +686,19 @@ VisualTest {
}
Frame {
msec: 2064
- hash: "eeb022c3dd997ce86c3a60146d19b540"
+ hash: "4f39251d7a0071a67435d088f46fc4fe"
}
Frame {
msec: 2080
- hash: "eeb022c3dd997ce86c3a60146d19b540"
+ hash: "4f39251d7a0071a67435d088f46fc4fe"
}
Frame {
msec: 2096
- hash: "eeb022c3dd997ce86c3a60146d19b540"
+ hash: "4f39251d7a0071a67435d088f46fc4fe"
}
Frame {
msec: 2112
- hash: "eeb022c3dd997ce86c3a60146d19b540"
+ hash: "4f39251d7a0071a67435d088f46fc4fe"
}
Key {
type: 7
@@ -710,11 +710,11 @@ VisualTest {
}
Frame {
msec: 2128
- hash: "eeb022c3dd997ce86c3a60146d19b540"
+ hash: "4f39251d7a0071a67435d088f46fc4fe"
}
Frame {
msec: 2144
- hash: "eeb022c3dd997ce86c3a60146d19b540"
+ hash: "4f39251d7a0071a67435d088f46fc4fe"
}
Key {
type: 6
@@ -726,27 +726,27 @@ VisualTest {
}
Frame {
msec: 2160
- hash: "ba2033e83b5aef2408197ebf7db543a6"
+ hash: "722715a78e99d0f1f9a2830090c98f3c"
}
Frame {
msec: 2176
- hash: "ba2033e83b5aef2408197ebf7db543a6"
+ hash: "722715a78e99d0f1f9a2830090c98f3c"
}
Frame {
msec: 2192
- hash: "ba2033e83b5aef2408197ebf7db543a6"
+ hash: "722715a78e99d0f1f9a2830090c98f3c"
}
Frame {
msec: 2208
- hash: "ba2033e83b5aef2408197ebf7db543a6"
+ hash: "722715a78e99d0f1f9a2830090c98f3c"
}
Frame {
msec: 2224
- hash: "ba2033e83b5aef2408197ebf7db543a6"
+ hash: "722715a78e99d0f1f9a2830090c98f3c"
}
Frame {
msec: 2240
- hash: "ba2033e83b5aef2408197ebf7db543a6"
+ hash: "722715a78e99d0f1f9a2830090c98f3c"
}
Key {
type: 7
@@ -766,23 +766,23 @@ VisualTest {
}
Frame {
msec: 2256
- hash: "8a843083f0415f1e06bfe925b3bd7f52"
+ hash: "aa085c20f74a765297f7904680c7591e"
}
Frame {
msec: 2272
- hash: "8a843083f0415f1e06bfe925b3bd7f52"
+ hash: "aa085c20f74a765297f7904680c7591e"
}
Frame {
msec: 2288
- hash: "8a843083f0415f1e06bfe925b3bd7f52"
+ hash: "aa085c20f74a765297f7904680c7591e"
}
Frame {
msec: 2304
- hash: "8a843083f0415f1e06bfe925b3bd7f52"
+ hash: "aa085c20f74a765297f7904680c7591e"
}
Frame {
msec: 2320
- hash: "8a843083f0415f1e06bfe925b3bd7f52"
+ hash: "aa085c20f74a765297f7904680c7591e"
}
Key {
type: 7
@@ -794,11 +794,11 @@ VisualTest {
}
Frame {
msec: 2336
- hash: "8a843083f0415f1e06bfe925b3bd7f52"
+ hash: "aa085c20f74a765297f7904680c7591e"
}
Frame {
msec: 2352
- hash: "8a843083f0415f1e06bfe925b3bd7f52"
+ hash: "aa085c20f74a765297f7904680c7591e"
}
Key {
type: 6
@@ -810,19 +810,19 @@ VisualTest {
}
Frame {
msec: 2368
- hash: "c3d6b261447c0fa65722c697b60ef415"
+ hash: "0cc1397ce700d4a84647dddee65241b3"
}
Frame {
msec: 2384
- hash: "c3d6b261447c0fa65722c697b60ef415"
+ hash: "0cc1397ce700d4a84647dddee65241b3"
}
Frame {
msec: 2400
- hash: "c3d6b261447c0fa65722c697b60ef415"
+ hash: "0cc1397ce700d4a84647dddee65241b3"
}
Frame {
msec: 2416
- hash: "c3d6b261447c0fa65722c697b60ef415"
+ hash: "0cc1397ce700d4a84647dddee65241b3"
}
Key {
type: 7
@@ -834,7 +834,7 @@ VisualTest {
}
Frame {
msec: 2432
- hash: "c3d6b261447c0fa65722c697b60ef415"
+ hash: "0cc1397ce700d4a84647dddee65241b3"
}
Key {
type: 6
@@ -846,27 +846,27 @@ VisualTest {
}
Frame {
msec: 2448
- hash: "7899672516311904cc7108f975290615"
+ hash: "ac693aa9030cc388dce9004916734aed"
}
Frame {
msec: 2464
- hash: "7899672516311904cc7108f975290615"
+ hash: "ac693aa9030cc388dce9004916734aed"
}
Frame {
msec: 2480
- hash: "7899672516311904cc7108f975290615"
+ hash: "ac693aa9030cc388dce9004916734aed"
}
Frame {
msec: 2496
- hash: "7899672516311904cc7108f975290615"
+ hash: "ac693aa9030cc388dce9004916734aed"
}
Frame {
msec: 2512
- hash: "7899672516311904cc7108f975290615"
+ hash: "ac693aa9030cc388dce9004916734aed"
}
Frame {
msec: 2528
- hash: "7899672516311904cc7108f975290615"
+ hash: "ac693aa9030cc388dce9004916734aed"
}
Key {
type: 7
@@ -878,7 +878,7 @@ VisualTest {
}
Frame {
msec: 2544
- hash: "7899672516311904cc7108f975290615"
+ hash: "ac693aa9030cc388dce9004916734aed"
}
Key {
type: 6
@@ -890,19 +890,19 @@ VisualTest {
}
Frame {
msec: 2560
- hash: "4c9dc2d3538a47f0c5f4e5b8f1863583"
+ hash: "e1f1b75892dc186e7f9546661722e259"
}
Frame {
msec: 2576
- hash: "4c9dc2d3538a47f0c5f4e5b8f1863583"
+ hash: "e1f1b75892dc186e7f9546661722e259"
}
Frame {
msec: 2592
- hash: "4c9dc2d3538a47f0c5f4e5b8f1863583"
+ hash: "e1f1b75892dc186e7f9546661722e259"
}
Frame {
msec: 2608
- hash: "4c9dc2d3538a47f0c5f4e5b8f1863583"
+ hash: "e1f1b75892dc186e7f9546661722e259"
}
Key {
type: 7
@@ -914,23 +914,23 @@ VisualTest {
}
Frame {
msec: 2624
- hash: "4c9dc2d3538a47f0c5f4e5b8f1863583"
+ hash: "e1f1b75892dc186e7f9546661722e259"
}
Frame {
msec: 2640
- hash: "4c9dc2d3538a47f0c5f4e5b8f1863583"
+ hash: "e1f1b75892dc186e7f9546661722e259"
}
Frame {
msec: 2656
- hash: "4c9dc2d3538a47f0c5f4e5b8f1863583"
+ hash: "e1f1b75892dc186e7f9546661722e259"
}
Frame {
msec: 2672
- hash: "4c9dc2d3538a47f0c5f4e5b8f1863583"
+ hash: "e1f1b75892dc186e7f9546661722e259"
}
Frame {
msec: 2688
- hash: "4c9dc2d3538a47f0c5f4e5b8f1863583"
+ hash: "e1f1b75892dc186e7f9546661722e259"
}
Key {
type: 6
@@ -942,27 +942,27 @@ VisualTest {
}
Frame {
msec: 2704
- hash: "0e583b5b8c82af7fe74ff845abb57069"
+ hash: "4c1829c6c263cf290e0e71035f678589"
}
Frame {
msec: 2720
- hash: "0e583b5b8c82af7fe74ff845abb57069"
+ hash: "4c1829c6c263cf290e0e71035f678589"
}
Frame {
msec: 2736
- hash: "0e583b5b8c82af7fe74ff845abb57069"
+ hash: "4c1829c6c263cf290e0e71035f678589"
}
Frame {
msec: 2752
- hash: "0e583b5b8c82af7fe74ff845abb57069"
+ hash: "4c1829c6c263cf290e0e71035f678589"
}
Frame {
msec: 2768
- hash: "0e583b5b8c82af7fe74ff845abb57069"
+ hash: "4c1829c6c263cf290e0e71035f678589"
}
Frame {
msec: 2784
- hash: "0e583b5b8c82af7fe74ff845abb57069"
+ hash: "4c1829c6c263cf290e0e71035f678589"
}
Key {
type: 6
@@ -974,7 +974,7 @@ VisualTest {
}
Frame {
msec: 2800
- hash: "5b282d8041386acfd94eab03a0d40fe8"
+ hash: "fa5cf022b185f178d0121b442af01c00"
}
Key {
type: 7
@@ -986,19 +986,19 @@ VisualTest {
}
Frame {
msec: 2816
- hash: "5b282d8041386acfd94eab03a0d40fe8"
+ hash: "fa5cf022b185f178d0121b442af01c00"
}
Frame {
msec: 2832
- hash: "5b282d8041386acfd94eab03a0d40fe8"
+ hash: "fa5cf022b185f178d0121b442af01c00"
}
Frame {
msec: 2848
- hash: "5b282d8041386acfd94eab03a0d40fe8"
+ hash: "fa5cf022b185f178d0121b442af01c00"
}
Frame {
msec: 2864
- hash: "5b282d8041386acfd94eab03a0d40fe8"
+ hash: "fa5cf022b185f178d0121b442af01c00"
}
Key {
type: 7
@@ -1014,15 +1014,15 @@ VisualTest {
}
Frame {
msec: 2896
- hash: "5b282d8041386acfd94eab03a0d40fe8"
+ hash: "fa5cf022b185f178d0121b442af01c00"
}
Frame {
msec: 2912
- hash: "5b282d8041386acfd94eab03a0d40fe8"
+ hash: "fa5cf022b185f178d0121b442af01c00"
}
Frame {
msec: 2928
- hash: "5b282d8041386acfd94eab03a0d40fe8"
+ hash: "fa5cf022b185f178d0121b442af01c00"
}
Key {
type: 6
@@ -1034,15 +1034,15 @@ VisualTest {
}
Frame {
msec: 2944
- hash: "9b19fe7f4665fdbd471e22cac9d97bab"
+ hash: "b0748cac94695eb95774e0cdfabf47cc"
}
Frame {
msec: 2960
- hash: "9b19fe7f4665fdbd471e22cac9d97bab"
+ hash: "b0748cac94695eb95774e0cdfabf47cc"
}
Frame {
msec: 2976
- hash: "9b19fe7f4665fdbd471e22cac9d97bab"
+ hash: "b0748cac94695eb95774e0cdfabf47cc"
}
Key {
type: 7
@@ -1062,19 +1062,19 @@ VisualTest {
}
Frame {
msec: 2992
- hash: "ed57767e75c850ad9bf2d08050419c56"
+ hash: "b05fc4c21113146463372b1ea981e265"
}
Frame {
msec: 3008
- hash: "ed57767e75c850ad9bf2d08050419c56"
+ hash: "b05fc4c21113146463372b1ea981e265"
}
Frame {
msec: 3024
- hash: "ed57767e75c850ad9bf2d08050419c56"
+ hash: "b05fc4c21113146463372b1ea981e265"
}
Frame {
msec: 3040
- hash: "ed57767e75c850ad9bf2d08050419c56"
+ hash: "b05fc4c21113146463372b1ea981e265"
}
Key {
type: 7
@@ -1086,7 +1086,7 @@ VisualTest {
}
Frame {
msec: 3056
- hash: "ed57767e75c850ad9bf2d08050419c56"
+ hash: "b05fc4c21113146463372b1ea981e265"
}
Key {
type: 6
@@ -1098,15 +1098,15 @@ VisualTest {
}
Frame {
msec: 3072
- hash: "225820f0472a6af17f56687a655b382a"
+ hash: "01b789845bf308fc896d53bbbfe0dd01"
}
Frame {
msec: 3088
- hash: "225820f0472a6af17f56687a655b382a"
+ hash: "01b789845bf308fc896d53bbbfe0dd01"
}
Frame {
msec: 3104
- hash: "225820f0472a6af17f56687a655b382a"
+ hash: "01b789845bf308fc896d53bbbfe0dd01"
}
Key {
type: 6
@@ -1118,7 +1118,7 @@ VisualTest {
}
Frame {
msec: 3120
- hash: "225820f0472a6af17f56687a655b382a"
+ hash: "01b789845bf308fc896d53bbbfe0dd01"
}
Key {
type: 7
@@ -1130,11 +1130,11 @@ VisualTest {
}
Frame {
msec: 3136
- hash: "225820f0472a6af17f56687a655b382a"
+ hash: "01b789845bf308fc896d53bbbfe0dd01"
}
Frame {
msec: 3152
- hash: "225820f0472a6af17f56687a655b382a"
+ hash: "01b789845bf308fc896d53bbbfe0dd01"
}
Key {
type: 6
@@ -1146,19 +1146,19 @@ VisualTest {
}
Frame {
msec: 3168
- hash: "719effbf9211edc87c56cb5628a57ded"
+ hash: "433d805d957203918fc4a8edfc93290e"
}
Frame {
msec: 3184
- hash: "719effbf9211edc87c56cb5628a57ded"
+ hash: "433d805d957203918fc4a8edfc93290e"
}
Frame {
msec: 3200
- hash: "719effbf9211edc87c56cb5628a57ded"
+ hash: "433d805d957203918fc4a8edfc93290e"
}
Frame {
msec: 3216
- hash: "719effbf9211edc87c56cb5628a57ded"
+ hash: "433d805d957203918fc4a8edfc93290e"
}
Key {
type: 7
@@ -1170,7 +1170,7 @@ VisualTest {
}
Frame {
msec: 3232
- hash: "719effbf9211edc87c56cb5628a57ded"
+ hash: "433d805d957203918fc4a8edfc93290e"
}
Key {
type: 7
@@ -1190,19 +1190,19 @@ VisualTest {
}
Frame {
msec: 3248
- hash: "5d8d2ba8c15937cc2f70414a71f87d24"
+ hash: "1ebec912ac11b11d2ba7e5abdfb9ef6d"
}
Frame {
msec: 3264
- hash: "5d8d2ba8c15937cc2f70414a71f87d24"
+ hash: "1ebec912ac11b11d2ba7e5abdfb9ef6d"
}
Frame {
msec: 3280
- hash: "5d8d2ba8c15937cc2f70414a71f87d24"
+ hash: "1ebec912ac11b11d2ba7e5abdfb9ef6d"
}
Frame {
msec: 3296
- hash: "5d8d2ba8c15937cc2f70414a71f87d24"
+ hash: "1ebec912ac11b11d2ba7e5abdfb9ef6d"
}
Key {
type: 7
@@ -1214,7 +1214,7 @@ VisualTest {
}
Frame {
msec: 3312
- hash: "5d8d2ba8c15937cc2f70414a71f87d24"
+ hash: "1ebec912ac11b11d2ba7e5abdfb9ef6d"
}
Key {
type: 6
@@ -1226,23 +1226,23 @@ VisualTest {
}
Frame {
msec: 3328
- hash: "4df9946eb277ca403fd63a2e19535369"
+ hash: "b4bc12141255c91630e775fcf4935f22"
}
Frame {
msec: 3344
- hash: "4df9946eb277ca403fd63a2e19535369"
+ hash: "b4bc12141255c91630e775fcf4935f22"
}
Frame {
msec: 3360
- hash: "4df9946eb277ca403fd63a2e19535369"
+ hash: "b4bc12141255c91630e775fcf4935f22"
}
Frame {
msec: 3376
- hash: "4df9946eb277ca403fd63a2e19535369"
+ hash: "b4bc12141255c91630e775fcf4935f22"
}
Frame {
msec: 3392
- hash: "4df9946eb277ca403fd63a2e19535369"
+ hash: "b4bc12141255c91630e775fcf4935f22"
}
Key {
type: 7
@@ -1254,7 +1254,7 @@ VisualTest {
}
Frame {
msec: 3408
- hash: "4df9946eb277ca403fd63a2e19535369"
+ hash: "b4bc12141255c91630e775fcf4935f22"
}
Key {
type: 6
@@ -1266,23 +1266,23 @@ VisualTest {
}
Frame {
msec: 3424
- hash: "bb1bde5147f4f203f2af3787df0f0c7a"
+ hash: "8d83a3f76fd8b77c6dd9fdfb573d9c52"
}
Frame {
msec: 3440
- hash: "bb1bde5147f4f203f2af3787df0f0c7a"
+ hash: "8d83a3f76fd8b77c6dd9fdfb573d9c52"
}
Frame {
msec: 3456
- hash: "bb1bde5147f4f203f2af3787df0f0c7a"
+ hash: "8d83a3f76fd8b77c6dd9fdfb573d9c52"
}
Frame {
msec: 3472
- hash: "bb1bde5147f4f203f2af3787df0f0c7a"
+ hash: "8d83a3f76fd8b77c6dd9fdfb573d9c52"
}
Frame {
msec: 3488
- hash: "bb1bde5147f4f203f2af3787df0f0c7a"
+ hash: "8d83a3f76fd8b77c6dd9fdfb573d9c52"
}
Key {
type: 7
@@ -1302,27 +1302,27 @@ VisualTest {
}
Frame {
msec: 3504
- hash: "60225c94dc1e1485406d8ba59737d383"
+ hash: "3f154d5eace7e0e688fe609d7eebe80d"
}
Frame {
msec: 3520
- hash: "60225c94dc1e1485406d8ba59737d383"
+ hash: "3f154d5eace7e0e688fe609d7eebe80d"
}
Frame {
msec: 3536
- hash: "60225c94dc1e1485406d8ba59737d383"
+ hash: "3f154d5eace7e0e688fe609d7eebe80d"
}
Frame {
msec: 3552
- hash: "60225c94dc1e1485406d8ba59737d383"
+ hash: "3f154d5eace7e0e688fe609d7eebe80d"
}
Frame {
msec: 3568
- hash: "60225c94dc1e1485406d8ba59737d383"
+ hash: "3f154d5eace7e0e688fe609d7eebe80d"
}
Frame {
msec: 3584
- hash: "60225c94dc1e1485406d8ba59737d383"
+ hash: "3f154d5eace7e0e688fe609d7eebe80d"
}
Key {
type: 7
@@ -1334,7 +1334,7 @@ VisualTest {
}
Frame {
msec: 3600
- hash: "60225c94dc1e1485406d8ba59737d383"
+ hash: "3f154d5eace7e0e688fe609d7eebe80d"
}
Key {
type: 6
@@ -1346,19 +1346,19 @@ VisualTest {
}
Frame {
msec: 3616
- hash: "8321580dd92a92edbf12df43259999f4"
+ hash: "8cecca2b1a586b7121692a8f618a1a50"
}
Frame {
msec: 3632
- hash: "8321580dd92a92edbf12df43259999f4"
+ hash: "8cecca2b1a586b7121692a8f618a1a50"
}
Frame {
msec: 3648
- hash: "8321580dd92a92edbf12df43259999f4"
+ hash: "8cecca2b1a586b7121692a8f618a1a50"
}
Frame {
msec: 3664
- hash: "8321580dd92a92edbf12df43259999f4"
+ hash: "8cecca2b1a586b7121692a8f618a1a50"
}
Key {
type: 6
@@ -1370,7 +1370,7 @@ VisualTest {
}
Frame {
msec: 3680
- hash: "d704cc8d5bbdc8768d25372aa654925c"
+ hash: "90bd87209b6d26785689779641b1f506"
}
Key {
type: 7
@@ -1382,15 +1382,15 @@ VisualTest {
}
Frame {
msec: 3696
- hash: "d704cc8d5bbdc8768d25372aa654925c"
+ hash: "90bd87209b6d26785689779641b1f506"
}
Frame {
msec: 3712
- hash: "d704cc8d5bbdc8768d25372aa654925c"
+ hash: "90bd87209b6d26785689779641b1f506"
}
Frame {
msec: 3728
- hash: "d704cc8d5bbdc8768d25372aa654925c"
+ hash: "90bd87209b6d26785689779641b1f506"
}
Key {
type: 7
@@ -1402,27 +1402,27 @@ VisualTest {
}
Frame {
msec: 3744
- hash: "d704cc8d5bbdc8768d25372aa654925c"
+ hash: "90bd87209b6d26785689779641b1f506"
}
Frame {
msec: 3760
- hash: "d704cc8d5bbdc8768d25372aa654925c"
+ hash: "90bd87209b6d26785689779641b1f506"
}
Frame {
msec: 3776
- hash: "d704cc8d5bbdc8768d25372aa654925c"
+ hash: "90bd87209b6d26785689779641b1f506"
}
Frame {
msec: 3792
- hash: "d704cc8d5bbdc8768d25372aa654925c"
+ hash: "90bd87209b6d26785689779641b1f506"
}
Frame {
msec: 3808
- hash: "d704cc8d5bbdc8768d25372aa654925c"
+ hash: "90bd87209b6d26785689779641b1f506"
}
Frame {
msec: 3824
- hash: "d704cc8d5bbdc8768d25372aa654925c"
+ hash: "90bd87209b6d26785689779641b1f506"
}
Frame {
msec: 3840
@@ -1430,35 +1430,35 @@ VisualTest {
}
Frame {
msec: 3856
- hash: "d704cc8d5bbdc8768d25372aa654925c"
+ hash: "90bd87209b6d26785689779641b1f506"
}
Frame {
msec: 3872
- hash: "d704cc8d5bbdc8768d25372aa654925c"
+ hash: "90bd87209b6d26785689779641b1f506"
}
Frame {
msec: 3888
- hash: "d704cc8d5bbdc8768d25372aa654925c"
+ hash: "90bd87209b6d26785689779641b1f506"
}
Frame {
msec: 3904
- hash: "d704cc8d5bbdc8768d25372aa654925c"
+ hash: "90bd87209b6d26785689779641b1f506"
}
Frame {
msec: 3920
- hash: "d704cc8d5bbdc8768d25372aa654925c"
+ hash: "90bd87209b6d26785689779641b1f506"
}
Frame {
msec: 3936
- hash: "d704cc8d5bbdc8768d25372aa654925c"
+ hash: "90bd87209b6d26785689779641b1f506"
}
Frame {
msec: 3952
- hash: "d704cc8d5bbdc8768d25372aa654925c"
+ hash: "90bd87209b6d26785689779641b1f506"
}
Frame {
msec: 3968
- hash: "d704cc8d5bbdc8768d25372aa654925c"
+ hash: "90bd87209b6d26785689779641b1f506"
}
Key {
type: 6
@@ -1470,23 +1470,23 @@ VisualTest {
}
Frame {
msec: 3984
- hash: "5a73c6a6df5bc4808fd4ed20e44f2ea3"
+ hash: "7fac93ef3184d5a844448c75b0aa8e18"
}
Frame {
msec: 4000
- hash: "5a73c6a6df5bc4808fd4ed20e44f2ea3"
+ hash: "7fac93ef3184d5a844448c75b0aa8e18"
}
Frame {
msec: 4016
- hash: "5a73c6a6df5bc4808fd4ed20e44f2ea3"
+ hash: "7fac93ef3184d5a844448c75b0aa8e18"
}
Frame {
msec: 4032
- hash: "5a73c6a6df5bc4808fd4ed20e44f2ea3"
+ hash: "7fac93ef3184d5a844448c75b0aa8e18"
}
Frame {
msec: 4048
- hash: "5a73c6a6df5bc4808fd4ed20e44f2ea3"
+ hash: "7fac93ef3184d5a844448c75b0aa8e18"
}
Key {
type: 6
@@ -1498,7 +1498,7 @@ VisualTest {
}
Frame {
msec: 4064
- hash: "89613ce626a22573fa41191fcede3273"
+ hash: "591366861f9e23276042250d5b1da7f9"
}
Key {
type: 7
@@ -1510,19 +1510,19 @@ VisualTest {
}
Frame {
msec: 4080
- hash: "89613ce626a22573fa41191fcede3273"
+ hash: "591366861f9e23276042250d5b1da7f9"
}
Frame {
msec: 4096
- hash: "89613ce626a22573fa41191fcede3273"
+ hash: "591366861f9e23276042250d5b1da7f9"
}
Frame {
msec: 4112
- hash: "89613ce626a22573fa41191fcede3273"
+ hash: "591366861f9e23276042250d5b1da7f9"
}
Frame {
msec: 4128
- hash: "89613ce626a22573fa41191fcede3273"
+ hash: "591366861f9e23276042250d5b1da7f9"
}
Key {
type: 6
@@ -1534,11 +1534,11 @@ VisualTest {
}
Frame {
msec: 4144
- hash: "7d9ef94b610cc7e9bcfd04bfac91ae38"
+ hash: "c5c33e5f4429698b1a1bc084a41d303d"
}
Frame {
msec: 4160
- hash: "7d9ef94b610cc7e9bcfd04bfac91ae38"
+ hash: "c5c33e5f4429698b1a1bc084a41d303d"
}
Key {
type: 7
@@ -1550,15 +1550,15 @@ VisualTest {
}
Frame {
msec: 4176
- hash: "7d9ef94b610cc7e9bcfd04bfac91ae38"
+ hash: "c5c33e5f4429698b1a1bc084a41d303d"
}
Frame {
msec: 4192
- hash: "7d9ef94b610cc7e9bcfd04bfac91ae38"
+ hash: "c5c33e5f4429698b1a1bc084a41d303d"
}
Frame {
msec: 4208
- hash: "7d9ef94b610cc7e9bcfd04bfac91ae38"
+ hash: "c5c33e5f4429698b1a1bc084a41d303d"
}
Key {
type: 6
@@ -1570,11 +1570,11 @@ VisualTest {
}
Frame {
msec: 4224
- hash: "9653692fe9292ef0d0559412f68e9cf7"
+ hash: "36223521c9ab06661239329c14e4fabe"
}
Frame {
msec: 4240
- hash: "9653692fe9292ef0d0559412f68e9cf7"
+ hash: "36223521c9ab06661239329c14e4fabe"
}
Key {
type: 7
@@ -1586,11 +1586,11 @@ VisualTest {
}
Frame {
msec: 4256
- hash: "9653692fe9292ef0d0559412f68e9cf7"
+ hash: "36223521c9ab06661239329c14e4fabe"
}
Frame {
msec: 4272
- hash: "9653692fe9292ef0d0559412f68e9cf7"
+ hash: "36223521c9ab06661239329c14e4fabe"
}
Key {
type: 7
@@ -1602,27 +1602,27 @@ VisualTest {
}
Frame {
msec: 4288
- hash: "9653692fe9292ef0d0559412f68e9cf7"
+ hash: "36223521c9ab06661239329c14e4fabe"
}
Frame {
msec: 4304
- hash: "9653692fe9292ef0d0559412f68e9cf7"
+ hash: "36223521c9ab06661239329c14e4fabe"
}
Frame {
msec: 4320
- hash: "9653692fe9292ef0d0559412f68e9cf7"
+ hash: "36223521c9ab06661239329c14e4fabe"
}
Frame {
msec: 4336
- hash: "9653692fe9292ef0d0559412f68e9cf7"
+ hash: "36223521c9ab06661239329c14e4fabe"
}
Frame {
msec: 4352
- hash: "9653692fe9292ef0d0559412f68e9cf7"
+ hash: "36223521c9ab06661239329c14e4fabe"
}
Frame {
msec: 4368
- hash: "9653692fe9292ef0d0559412f68e9cf7"
+ hash: "36223521c9ab06661239329c14e4fabe"
}
Key {
type: 6
@@ -1634,23 +1634,23 @@ VisualTest {
}
Frame {
msec: 4384
- hash: "902831b5d2a134629e04b53c87cdc709"
+ hash: "22ab171b9805302b729afd314e55a0f4"
}
Frame {
msec: 4400
- hash: "902831b5d2a134629e04b53c87cdc709"
+ hash: "22ab171b9805302b729afd314e55a0f4"
}
Frame {
msec: 4416
- hash: "902831b5d2a134629e04b53c87cdc709"
+ hash: "22ab171b9805302b729afd314e55a0f4"
}
Frame {
msec: 4432
- hash: "902831b5d2a134629e04b53c87cdc709"
+ hash: "22ab171b9805302b729afd314e55a0f4"
}
Frame {
msec: 4448
- hash: "902831b5d2a134629e04b53c87cdc709"
+ hash: "22ab171b9805302b729afd314e55a0f4"
}
Key {
type: 7
@@ -1662,7 +1662,7 @@ VisualTest {
}
Frame {
msec: 4464
- hash: "902831b5d2a134629e04b53c87cdc709"
+ hash: "22ab171b9805302b729afd314e55a0f4"
}
Key {
type: 6
@@ -1674,23 +1674,23 @@ VisualTest {
}
Frame {
msec: 4480
- hash: "cc1dc01f123309c70743535f61b18278"
+ hash: "beaad223234484e21f824ceb7f1edc2a"
}
Frame {
msec: 4496
- hash: "cc1dc01f123309c70743535f61b18278"
+ hash: "beaad223234484e21f824ceb7f1edc2a"
}
Frame {
msec: 4512
- hash: "cc1dc01f123309c70743535f61b18278"
+ hash: "beaad223234484e21f824ceb7f1edc2a"
}
Frame {
msec: 4528
- hash: "cc1dc01f123309c70743535f61b18278"
+ hash: "beaad223234484e21f824ceb7f1edc2a"
}
Frame {
msec: 4544
- hash: "cc1dc01f123309c70743535f61b18278"
+ hash: "beaad223234484e21f824ceb7f1edc2a"
}
Key {
type: 7
@@ -1702,15 +1702,15 @@ VisualTest {
}
Frame {
msec: 4560
- hash: "cc1dc01f123309c70743535f61b18278"
+ hash: "beaad223234484e21f824ceb7f1edc2a"
}
Frame {
msec: 4576
- hash: "cc1dc01f123309c70743535f61b18278"
+ hash: "beaad223234484e21f824ceb7f1edc2a"
}
Frame {
msec: 4592
- hash: "cc1dc01f123309c70743535f61b18278"
+ hash: "beaad223234484e21f824ceb7f1edc2a"
}
Key {
type: 6
@@ -1722,51 +1722,51 @@ VisualTest {
}
Frame {
msec: 4608
- hash: "cc1dc01f123309c70743535f61b18278"
+ hash: "beaad223234484e21f824ceb7f1edc2a"
}
Frame {
msec: 4624
- hash: "cc1dc01f123309c70743535f61b18278"
+ hash: "beaad223234484e21f824ceb7f1edc2a"
}
Frame {
msec: 4640
- hash: "cc1dc01f123309c70743535f61b18278"
+ hash: "beaad223234484e21f824ceb7f1edc2a"
}
Frame {
msec: 4656
- hash: "cc1dc01f123309c70743535f61b18278"
+ hash: "beaad223234484e21f824ceb7f1edc2a"
}
Frame {
msec: 4672
- hash: "cc1dc01f123309c70743535f61b18278"
+ hash: "beaad223234484e21f824ceb7f1edc2a"
}
Frame {
msec: 4688
- hash: "cc1dc01f123309c70743535f61b18278"
+ hash: "beaad223234484e21f824ceb7f1edc2a"
}
Frame {
msec: 4704
- hash: "cc1dc01f123309c70743535f61b18278"
+ hash: "beaad223234484e21f824ceb7f1edc2a"
}
Frame {
msec: 4720
- hash: "cc1dc01f123309c70743535f61b18278"
+ hash: "beaad223234484e21f824ceb7f1edc2a"
}
Frame {
msec: 4736
- hash: "cc1dc01f123309c70743535f61b18278"
+ hash: "beaad223234484e21f824ceb7f1edc2a"
}
Frame {
msec: 4752
- hash: "cc1dc01f123309c70743535f61b18278"
+ hash: "beaad223234484e21f824ceb7f1edc2a"
}
Frame {
msec: 4768
- hash: "cc1dc01f123309c70743535f61b18278"
+ hash: "beaad223234484e21f824ceb7f1edc2a"
}
Frame {
msec: 4784
- hash: "cc1dc01f123309c70743535f61b18278"
+ hash: "beaad223234484e21f824ceb7f1edc2a"
}
Frame {
msec: 4800
@@ -1774,11 +1774,11 @@ VisualTest {
}
Frame {
msec: 4816
- hash: "cc1dc01f123309c70743535f61b18278"
+ hash: "beaad223234484e21f824ceb7f1edc2a"
}
Frame {
msec: 4832
- hash: "cc1dc01f123309c70743535f61b18278"
+ hash: "beaad223234484e21f824ceb7f1edc2a"
}
Key {
type: 6
@@ -1790,31 +1790,31 @@ VisualTest {
}
Frame {
msec: 4848
- hash: "652b66d0b62e7fcf9d4fff50296966b0"
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
}
Frame {
msec: 4864
- hash: "652b66d0b62e7fcf9d4fff50296966b0"
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
}
Frame {
msec: 4880
- hash: "652b66d0b62e7fcf9d4fff50296966b0"
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
}
Frame {
msec: 4896
- hash: "652b66d0b62e7fcf9d4fff50296966b0"
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
}
Frame {
msec: 4912
- hash: "652b66d0b62e7fcf9d4fff50296966b0"
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
}
Frame {
msec: 4928
- hash: "652b66d0b62e7fcf9d4fff50296966b0"
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
}
Frame {
msec: 4944
- hash: "652b66d0b62e7fcf9d4fff50296966b0"
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
}
Key {
type: 7
@@ -1826,19 +1826,19 @@ VisualTest {
}
Frame {
msec: 4960
- hash: "652b66d0b62e7fcf9d4fff50296966b0"
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
}
Frame {
msec: 4976
- hash: "652b66d0b62e7fcf9d4fff50296966b0"
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
}
Frame {
msec: 4992
- hash: "652b66d0b62e7fcf9d4fff50296966b0"
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
}
Frame {
msec: 5008
- hash: "652b66d0b62e7fcf9d4fff50296966b0"
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
}
Key {
type: 7
@@ -1850,187 +1850,187 @@ VisualTest {
}
Frame {
msec: 5024
- hash: "652b66d0b62e7fcf9d4fff50296966b0"
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
}
Frame {
msec: 5040
- hash: "652b66d0b62e7fcf9d4fff50296966b0"
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
}
Frame {
msec: 5056
- hash: "652b66d0b62e7fcf9d4fff50296966b0"
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
}
Frame {
msec: 5072
- hash: "652b66d0b62e7fcf9d4fff50296966b0"
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
}
Frame {
msec: 5088
- hash: "652b66d0b62e7fcf9d4fff50296966b0"
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
}
Frame {
msec: 5104
- hash: "652b66d0b62e7fcf9d4fff50296966b0"
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
}
Frame {
msec: 5120
- hash: "652b66d0b62e7fcf9d4fff50296966b0"
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
}
Frame {
msec: 5136
- hash: "652b66d0b62e7fcf9d4fff50296966b0"
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
}
Frame {
msec: 5152
- hash: "652b66d0b62e7fcf9d4fff50296966b0"
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
}
Frame {
msec: 5168
- hash: "652b66d0b62e7fcf9d4fff50296966b0"
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
}
Frame {
msec: 5184
- hash: "652b66d0b62e7fcf9d4fff50296966b0"
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
}
Frame {
msec: 5200
- hash: "652b66d0b62e7fcf9d4fff50296966b0"
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
}
Frame {
msec: 5216
- hash: "652b66d0b62e7fcf9d4fff50296966b0"
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
}
Frame {
msec: 5232
- hash: "652b66d0b62e7fcf9d4fff50296966b0"
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
}
Frame {
msec: 5248
- hash: "652b66d0b62e7fcf9d4fff50296966b0"
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
}
Frame {
msec: 5264
- hash: "652b66d0b62e7fcf9d4fff50296966b0"
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
}
Frame {
msec: 5280
- hash: "652b66d0b62e7fcf9d4fff50296966b0"
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
}
Frame {
msec: 5296
- hash: "652b66d0b62e7fcf9d4fff50296966b0"
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
}
Frame {
msec: 5312
- hash: "652b66d0b62e7fcf9d4fff50296966b0"
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
}
Frame {
msec: 5328
- hash: "652b66d0b62e7fcf9d4fff50296966b0"
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
}
Frame {
msec: 5344
- hash: "652b66d0b62e7fcf9d4fff50296966b0"
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
}
Frame {
msec: 5360
- hash: "652b66d0b62e7fcf9d4fff50296966b0"
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
}
Frame {
msec: 5376
- hash: "652b66d0b62e7fcf9d4fff50296966b0"
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
}
Frame {
msec: 5392
- hash: "652b66d0b62e7fcf9d4fff50296966b0"
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
}
Frame {
msec: 5408
- hash: "652b66d0b62e7fcf9d4fff50296966b0"
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
}
Frame {
msec: 5424
- hash: "652b66d0b62e7fcf9d4fff50296966b0"
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
}
Frame {
msec: 5440
- hash: "652b66d0b62e7fcf9d4fff50296966b0"
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
}
Frame {
msec: 5456
- hash: "652b66d0b62e7fcf9d4fff50296966b0"
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
}
Frame {
msec: 5472
- hash: "652b66d0b62e7fcf9d4fff50296966b0"
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
}
Frame {
msec: 5488
- hash: "652b66d0b62e7fcf9d4fff50296966b0"
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
}
Frame {
msec: 5504
- hash: "652b66d0b62e7fcf9d4fff50296966b0"
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
}
Frame {
msec: 5520
- hash: "652b66d0b62e7fcf9d4fff50296966b0"
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
}
Frame {
msec: 5536
- hash: "652b66d0b62e7fcf9d4fff50296966b0"
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
}
Frame {
msec: 5552
- hash: "652b66d0b62e7fcf9d4fff50296966b0"
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
}
Frame {
msec: 5568
- hash: "652b66d0b62e7fcf9d4fff50296966b0"
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
}
Frame {
msec: 5584
- hash: "652b66d0b62e7fcf9d4fff50296966b0"
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
}
Frame {
msec: 5600
- hash: "652b66d0b62e7fcf9d4fff50296966b0"
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
}
Frame {
msec: 5616
- hash: "652b66d0b62e7fcf9d4fff50296966b0"
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
}
Frame {
msec: 5632
- hash: "652b66d0b62e7fcf9d4fff50296966b0"
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
}
Frame {
msec: 5648
- hash: "652b66d0b62e7fcf9d4fff50296966b0"
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
}
Frame {
msec: 5664
- hash: "652b66d0b62e7fcf9d4fff50296966b0"
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
}
Frame {
msec: 5680
- hash: "652b66d0b62e7fcf9d4fff50296966b0"
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
}
Frame {
msec: 5696
- hash: "652b66d0b62e7fcf9d4fff50296966b0"
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
}
Frame {
msec: 5712
- hash: "652b66d0b62e7fcf9d4fff50296966b0"
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
}
Frame {
msec: 5728
- hash: "652b66d0b62e7fcf9d4fff50296966b0"
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
}
Frame {
msec: 5744
- hash: "652b66d0b62e7fcf9d4fff50296966b0"
+ hash: "49b26f36a10d808fdcb8248a384a4da6"
}
Frame {
msec: 5760
@@ -2046,19 +2046,19 @@ VisualTest {
}
Frame {
msec: 5776
- hash: "a8710131aa2cfcedeb1956319174bd44"
+ hash: "476040951352f144bda4ed7fb817cd7f"
}
Frame {
msec: 5792
- hash: "a8710131aa2cfcedeb1956319174bd44"
+ hash: "476040951352f144bda4ed7fb817cd7f"
}
Frame {
msec: 5808
- hash: "a8710131aa2cfcedeb1956319174bd44"
+ hash: "476040951352f144bda4ed7fb817cd7f"
}
Frame {
msec: 5824
- hash: "a8710131aa2cfcedeb1956319174bd44"
+ hash: "476040951352f144bda4ed7fb817cd7f"
}
Mouse {
type: 5
@@ -2078,7 +2078,7 @@ VisualTest {
}
Frame {
msec: 5840
- hash: "a8710131aa2cfcedeb1956319174bd44"
+ hash: "476040951352f144bda4ed7fb817cd7f"
}
Mouse {
type: 5
@@ -2098,7 +2098,7 @@ VisualTest {
}
Frame {
msec: 5856
- hash: "069e40e23640f303e24f8821907bf907"
+ hash: "9ecb1e68ab724c6f83b1a37aa1cb15c4"
}
Mouse {
type: 5
@@ -2118,7 +2118,7 @@ VisualTest {
}
Frame {
msec: 5872
- hash: "069e40e23640f303e24f8821907bf907"
+ hash: "9ecb1e68ab724c6f83b1a37aa1cb15c4"
}
Mouse {
type: 5
@@ -2138,7 +2138,7 @@ VisualTest {
}
Frame {
msec: 5888
- hash: "3aba0fbccdbbbfc6b452464a35941f01"
+ hash: "9ecb1e68ab724c6f83b1a37aa1cb15c4"
}
Mouse {
type: 5
@@ -2158,7 +2158,7 @@ VisualTest {
}
Frame {
msec: 5904
- hash: "8d68c5797a7a3be6ab1bc83a1adea983"
+ hash: "173735fb4be11da603fb8ae8cffc609d"
}
Mouse {
type: 5
@@ -2178,7 +2178,7 @@ VisualTest {
}
Frame {
msec: 5920
- hash: "633201d777634e5a2e4ccc0ba7a84ada"
+ hash: "173735fb4be11da603fb8ae8cffc609d"
}
Mouse {
type: 5
@@ -2198,7 +2198,7 @@ VisualTest {
}
Frame {
msec: 5936
- hash: "e1d36d4dbdff47e6b6f864dae077bc7f"
+ hash: "b337a09f359fb2a237731c66ab95c92c"
}
Mouse {
type: 5
@@ -2218,7 +2218,7 @@ VisualTest {
}
Frame {
msec: 5952
- hash: "905419e116b2c93145c85456e6e7ccac"
+ hash: "32719becb40f8c6bd49b5f5754786913"
}
Mouse {
type: 5
@@ -2238,7 +2238,7 @@ VisualTest {
}
Frame {
msec: 5968
- hash: "f851ebbbab70e4f283caefc26f304946"
+ hash: "e6bff88d0a5e2e7df4b3355749ecc902"
}
Mouse {
type: 5
@@ -2250,7 +2250,7 @@ VisualTest {
}
Frame {
msec: 5984
- hash: "f851ebbbab70e4f283caefc26f304946"
+ hash: "e6bff88d0a5e2e7df4b3355749ecc902"
}
Mouse {
type: 5
@@ -2270,7 +2270,7 @@ VisualTest {
}
Frame {
msec: 6000
- hash: "f851ebbbab70e4f283caefc26f304946"
+ hash: "e6bff88d0a5e2e7df4b3355749ecc902"
}
Mouse {
type: 5
@@ -2290,7 +2290,7 @@ VisualTest {
}
Frame {
msec: 6016
- hash: "f851ebbbab70e4f283caefc26f304946"
+ hash: "e6bff88d0a5e2e7df4b3355749ecc902"
}
Mouse {
type: 5
@@ -2310,7 +2310,7 @@ VisualTest {
}
Frame {
msec: 6032
- hash: "f851ebbbab70e4f283caefc26f304946"
+ hash: "e6bff88d0a5e2e7df4b3355749ecc902"
}
Mouse {
type: 5
@@ -2330,7 +2330,7 @@ VisualTest {
}
Frame {
msec: 6048
- hash: "f851ebbbab70e4f283caefc26f304946"
+ hash: "e6bff88d0a5e2e7df4b3355749ecc902"
}
Mouse {
type: 5
@@ -2350,7 +2350,7 @@ VisualTest {
}
Frame {
msec: 6064
- hash: "f851ebbbab70e4f283caefc26f304946"
+ hash: "e6bff88d0a5e2e7df4b3355749ecc902"
}
Mouse {
type: 5
@@ -2370,7 +2370,7 @@ VisualTest {
}
Frame {
msec: 6080
- hash: "f851ebbbab70e4f283caefc26f304946"
+ hash: "e6bff88d0a5e2e7df4b3355749ecc902"
}
Mouse {
type: 5
@@ -2390,7 +2390,7 @@ VisualTest {
}
Frame {
msec: 6096
- hash: "f851ebbbab70e4f283caefc26f304946"
+ hash: "e6bff88d0a5e2e7df4b3355749ecc902"
}
Mouse {
type: 5
@@ -2410,7 +2410,7 @@ VisualTest {
}
Frame {
msec: 6112
- hash: "f851ebbbab70e4f283caefc26f304946"
+ hash: "e6bff88d0a5e2e7df4b3355749ecc902"
}
Mouse {
type: 5
@@ -2430,7 +2430,7 @@ VisualTest {
}
Frame {
msec: 6128
- hash: "f851ebbbab70e4f283caefc26f304946"
+ hash: "e6bff88d0a5e2e7df4b3355749ecc902"
}
Mouse {
type: 5
@@ -2450,7 +2450,7 @@ VisualTest {
}
Frame {
msec: 6144
- hash: "f851ebbbab70e4f283caefc26f304946"
+ hash: "e6bff88d0a5e2e7df4b3355749ecc902"
}
Mouse {
type: 5
@@ -2470,7 +2470,7 @@ VisualTest {
}
Frame {
msec: 6160
- hash: "f851ebbbab70e4f283caefc26f304946"
+ hash: "e6bff88d0a5e2e7df4b3355749ecc902"
}
Mouse {
type: 5
@@ -2490,7 +2490,7 @@ VisualTest {
}
Frame {
msec: 6176
- hash: "f851ebbbab70e4f283caefc26f304946"
+ hash: "e6bff88d0a5e2e7df4b3355749ecc902"
}
Mouse {
type: 5
@@ -2502,23 +2502,23 @@ VisualTest {
}
Frame {
msec: 6192
- hash: "f851ebbbab70e4f283caefc26f304946"
+ hash: "e6bff88d0a5e2e7df4b3355749ecc902"
}
Frame {
msec: 6208
- hash: "f851ebbbab70e4f283caefc26f304946"
+ hash: "e6bff88d0a5e2e7df4b3355749ecc902"
}
Frame {
msec: 6224
- hash: "f851ebbbab70e4f283caefc26f304946"
+ hash: "e6bff88d0a5e2e7df4b3355749ecc902"
}
Frame {
msec: 6240
- hash: "f851ebbbab70e4f283caefc26f304946"
+ hash: "e6bff88d0a5e2e7df4b3355749ecc902"
}
Frame {
msec: 6256
- hash: "f851ebbbab70e4f283caefc26f304946"
+ hash: "e6bff88d0a5e2e7df4b3355749ecc902"
}
Mouse {
type: 5
@@ -2530,7 +2530,7 @@ VisualTest {
}
Frame {
msec: 6272
- hash: "f851ebbbab70e4f283caefc26f304946"
+ hash: "e6bff88d0a5e2e7df4b3355749ecc902"
}
Mouse {
type: 5
@@ -2550,7 +2550,7 @@ VisualTest {
}
Frame {
msec: 6288
- hash: "f851ebbbab70e4f283caefc26f304946"
+ hash: "e6bff88d0a5e2e7df4b3355749ecc902"
}
Mouse {
type: 5
@@ -2570,7 +2570,7 @@ VisualTest {
}
Frame {
msec: 6304
- hash: "f851ebbbab70e4f283caefc26f304946"
+ hash: "e6bff88d0a5e2e7df4b3355749ecc902"
}
Mouse {
type: 5
@@ -2590,7 +2590,7 @@ VisualTest {
}
Frame {
msec: 6320
- hash: "f851ebbbab70e4f283caefc26f304946"
+ hash: "e6bff88d0a5e2e7df4b3355749ecc902"
}
Mouse {
type: 5
@@ -2610,7 +2610,7 @@ VisualTest {
}
Frame {
msec: 6336
- hash: "f851ebbbab70e4f283caefc26f304946"
+ hash: "e6bff88d0a5e2e7df4b3355749ecc902"
}
Mouse {
type: 5
@@ -2630,7 +2630,7 @@ VisualTest {
}
Frame {
msec: 6352
- hash: "f851ebbbab70e4f283caefc26f304946"
+ hash: "e6bff88d0a5e2e7df4b3355749ecc902"
}
Mouse {
type: 5
@@ -2650,7 +2650,7 @@ VisualTest {
}
Frame {
msec: 6368
- hash: "f851ebbbab70e4f283caefc26f304946"
+ hash: "e6bff88d0a5e2e7df4b3355749ecc902"
}
Mouse {
type: 5
@@ -2670,7 +2670,7 @@ VisualTest {
}
Frame {
msec: 6384
- hash: "ca385b53209d35e0c78e8124c782d03f"
+ hash: "5de7bbfdf96d84c8fbe74b4817a3c88a"
}
Mouse {
type: 5
@@ -2682,7 +2682,7 @@ VisualTest {
}
Frame {
msec: 6400
- hash: "ca385b53209d35e0c78e8124c782d03f"
+ hash: "5de7bbfdf96d84c8fbe74b4817a3c88a"
}
Mouse {
type: 5
@@ -2702,7 +2702,7 @@ VisualTest {
}
Frame {
msec: 6416
- hash: "730fa19a0deb6e210ee7ca136ecfb4e0"
+ hash: "056d22660f6feedfb453755978aa4c1d"
}
Mouse {
type: 5
@@ -2722,7 +2722,7 @@ VisualTest {
}
Frame {
msec: 6432
- hash: "e749a531bb6b30611bed794e2630555f"
+ hash: "9d8568931fdca572dd31ea62ebbaf76a"
}
Mouse {
type: 5
@@ -2742,7 +2742,7 @@ VisualTest {
}
Frame {
msec: 6448
- hash: "4d7a02eeb0d0ed7eb29fbfb72bce9ba1"
+ hash: "29aa2da8a830d5605a8d2d2543097177"
}
Mouse {
type: 5
@@ -2754,7 +2754,7 @@ VisualTest {
}
Frame {
msec: 6464
- hash: "2476a4d7038b9f1c50557cf077ea4412"
+ hash: "154e312998b32cc09daf1693d07eda2f"
}
Mouse {
type: 5
@@ -2774,7 +2774,7 @@ VisualTest {
}
Frame {
msec: 6480
- hash: "ff9bdea73a03bc51f76b6732176a0bad"
+ hash: "5b3a17fd92fe5117aa405d4c737e6673"
}
Mouse {
type: 5
@@ -2794,7 +2794,7 @@ VisualTest {
}
Frame {
msec: 6496
- hash: "ff9bdea73a03bc51f76b6732176a0bad"
+ hash: "5b3a17fd92fe5117aa405d4c737e6673"
}
Mouse {
type: 5
@@ -2814,7 +2814,7 @@ VisualTest {
}
Frame {
msec: 6512
- hash: "ff9bdea73a03bc51f76b6732176a0bad"
+ hash: "5b3a17fd92fe5117aa405d4c737e6673"
}
Mouse {
type: 5
@@ -2834,7 +2834,7 @@ VisualTest {
}
Frame {
msec: 6528
- hash: "ff9bdea73a03bc51f76b6732176a0bad"
+ hash: "5b3a17fd92fe5117aa405d4c737e6673"
}
Mouse {
type: 5
@@ -2854,7 +2854,7 @@ VisualTest {
}
Frame {
msec: 6544
- hash: "ff9bdea73a03bc51f76b6732176a0bad"
+ hash: "5b3a17fd92fe5117aa405d4c737e6673"
}
Mouse {
type: 5
@@ -2874,7 +2874,7 @@ VisualTest {
}
Frame {
msec: 6560
- hash: "ff9bdea73a03bc51f76b6732176a0bad"
+ hash: "5b3a17fd92fe5117aa405d4c737e6673"
}
Mouse {
type: 5
@@ -2894,7 +2894,7 @@ VisualTest {
}
Frame {
msec: 6576
- hash: "ff9bdea73a03bc51f76b6732176a0bad"
+ hash: "5b3a17fd92fe5117aa405d4c737e6673"
}
Mouse {
type: 5
@@ -2914,27 +2914,27 @@ VisualTest {
}
Frame {
msec: 6592
- hash: "ff9bdea73a03bc51f76b6732176a0bad"
+ hash: "5b3a17fd92fe5117aa405d4c737e6673"
}
Frame {
msec: 6608
- hash: "ff9bdea73a03bc51f76b6732176a0bad"
+ hash: "5b3a17fd92fe5117aa405d4c737e6673"
}
Frame {
msec: 6624
- hash: "ff9bdea73a03bc51f76b6732176a0bad"
+ hash: "5b3a17fd92fe5117aa405d4c737e6673"
}
Frame {
msec: 6640
- hash: "ff9bdea73a03bc51f76b6732176a0bad"
+ hash: "5b3a17fd92fe5117aa405d4c737e6673"
}
Frame {
msec: 6656
- hash: "ff9bdea73a03bc51f76b6732176a0bad"
+ hash: "5b3a17fd92fe5117aa405d4c737e6673"
}
Frame {
msec: 6672
- hash: "ff9bdea73a03bc51f76b6732176a0bad"
+ hash: "5b3a17fd92fe5117aa405d4c737e6673"
}
Mouse {
type: 5
@@ -2954,7 +2954,7 @@ VisualTest {
}
Frame {
msec: 6688
- hash: "ff9bdea73a03bc51f76b6732176a0bad"
+ hash: "5b3a17fd92fe5117aa405d4c737e6673"
}
Mouse {
type: 5
@@ -2974,7 +2974,7 @@ VisualTest {
}
Frame {
msec: 6704
- hash: "ff9bdea73a03bc51f76b6732176a0bad"
+ hash: "5b3a17fd92fe5117aa405d4c737e6673"
}
Mouse {
type: 5
@@ -3014,7 +3014,7 @@ VisualTest {
}
Frame {
msec: 6736
- hash: "ff9bdea73a03bc51f76b6732176a0bad"
+ hash: "5b3a17fd92fe5117aa405d4c737e6673"
}
Mouse {
type: 5
@@ -3034,7 +3034,7 @@ VisualTest {
}
Frame {
msec: 6752
- hash: "ff9bdea73a03bc51f76b6732176a0bad"
+ hash: "5b3a17fd92fe5117aa405d4c737e6673"
}
Mouse {
type: 5
@@ -3054,7 +3054,7 @@ VisualTest {
}
Frame {
msec: 6768
- hash: "ff9bdea73a03bc51f76b6732176a0bad"
+ hash: "5b3a17fd92fe5117aa405d4c737e6673"
}
Mouse {
type: 5
@@ -3074,7 +3074,7 @@ VisualTest {
}
Frame {
msec: 6784
- hash: "ff9bdea73a03bc51f76b6732176a0bad"
+ hash: "5b3a17fd92fe5117aa405d4c737e6673"
}
Mouse {
type: 5
@@ -3094,7 +3094,7 @@ VisualTest {
}
Frame {
msec: 6800
- hash: "ff9bdea73a03bc51f76b6732176a0bad"
+ hash: "5b3a17fd92fe5117aa405d4c737e6673"
}
Mouse {
type: 5
@@ -3114,7 +3114,7 @@ VisualTest {
}
Frame {
msec: 6816
- hash: "ff9bdea73a03bc51f76b6732176a0bad"
+ hash: "5b3a17fd92fe5117aa405d4c737e6673"
}
Mouse {
type: 5
@@ -3134,7 +3134,7 @@ VisualTest {
}
Frame {
msec: 6832
- hash: "ff9bdea73a03bc51f76b6732176a0bad"
+ hash: "5b3a17fd92fe5117aa405d4c737e6673"
}
Mouse {
type: 5
@@ -3154,7 +3154,7 @@ VisualTest {
}
Frame {
msec: 6848
- hash: "2b0458102c2231777202e66e0eaa8c8c"
+ hash: "476040951352f144bda4ed7fb817cd7f"
}
Mouse {
type: 5
@@ -3174,7 +3174,7 @@ VisualTest {
}
Frame {
msec: 6864
- hash: "2b0458102c2231777202e66e0eaa8c8c"
+ hash: "2cb10cb75beb454df7918b6948c6ad8a"
}
Mouse {
type: 5
@@ -3194,7 +3194,7 @@ VisualTest {
}
Frame {
msec: 6880
- hash: "2b0458102c2231777202e66e0eaa8c8c"
+ hash: "2cb10cb75beb454df7918b6948c6ad8a"
}
Mouse {
type: 3
@@ -3206,55 +3206,55 @@ VisualTest {
}
Frame {
msec: 6896
- hash: "2b0458102c2231777202e66e0eaa8c8c"
+ hash: "2cb10cb75beb454df7918b6948c6ad8a"
}
Frame {
msec: 6912
- hash: "2b0458102c2231777202e66e0eaa8c8c"
+ hash: "2cb10cb75beb454df7918b6948c6ad8a"
}
Frame {
msec: 6928
- hash: "2b0458102c2231777202e66e0eaa8c8c"
+ hash: "2cb10cb75beb454df7918b6948c6ad8a"
}
Frame {
msec: 6944
- hash: "2b0458102c2231777202e66e0eaa8c8c"
+ hash: "2cb10cb75beb454df7918b6948c6ad8a"
}
Frame {
msec: 6960
- hash: "2b0458102c2231777202e66e0eaa8c8c"
+ hash: "2cb10cb75beb454df7918b6948c6ad8a"
}
Frame {
msec: 6976
- hash: "2b0458102c2231777202e66e0eaa8c8c"
+ hash: "2cb10cb75beb454df7918b6948c6ad8a"
}
Frame {
msec: 6992
- hash: "2b0458102c2231777202e66e0eaa8c8c"
+ hash: "2cb10cb75beb454df7918b6948c6ad8a"
}
Frame {
msec: 7008
- hash: "2b0458102c2231777202e66e0eaa8c8c"
+ hash: "2cb10cb75beb454df7918b6948c6ad8a"
}
Frame {
msec: 7024
- hash: "2b0458102c2231777202e66e0eaa8c8c"
+ hash: "2cb10cb75beb454df7918b6948c6ad8a"
}
Frame {
msec: 7040
- hash: "2b0458102c2231777202e66e0eaa8c8c"
+ hash: "2cb10cb75beb454df7918b6948c6ad8a"
}
Frame {
msec: 7056
- hash: "2b0458102c2231777202e66e0eaa8c8c"
+ hash: "2cb10cb75beb454df7918b6948c6ad8a"
}
Frame {
msec: 7072
- hash: "2b0458102c2231777202e66e0eaa8c8c"
+ hash: "2cb10cb75beb454df7918b6948c6ad8a"
}
Frame {
msec: 7088
- hash: "2b0458102c2231777202e66e0eaa8c8c"
+ hash: "2cb10cb75beb454df7918b6948c6ad8a"
}
Mouse {
type: 2
@@ -3266,23 +3266,23 @@ VisualTest {
}
Frame {
msec: 7104
- hash: "2ca3f2d1e4673bd97d05b43c4b70174a"
+ hash: "eafa794e0c09cc2558575bafa945ecdf"
}
Frame {
msec: 7120
- hash: "2ca3f2d1e4673bd97d05b43c4b70174a"
+ hash: "eafa794e0c09cc2558575bafa945ecdf"
}
Frame {
msec: 7136
- hash: "2ca3f2d1e4673bd97d05b43c4b70174a"
+ hash: "eafa794e0c09cc2558575bafa945ecdf"
}
Frame {
msec: 7152
- hash: "2ca3f2d1e4673bd97d05b43c4b70174a"
+ hash: "eafa794e0c09cc2558575bafa945ecdf"
}
Frame {
msec: 7168
- hash: "2ca3f2d1e4673bd97d05b43c4b70174a"
+ hash: "eafa794e0c09cc2558575bafa945ecdf"
}
Mouse {
type: 3
@@ -3294,103 +3294,103 @@ VisualTest {
}
Frame {
msec: 7184
- hash: "2ca3f2d1e4673bd97d05b43c4b70174a"
+ hash: "eafa794e0c09cc2558575bafa945ecdf"
}
Frame {
msec: 7200
- hash: "2ca3f2d1e4673bd97d05b43c4b70174a"
+ hash: "eafa794e0c09cc2558575bafa945ecdf"
}
Frame {
msec: 7216
- hash: "2ca3f2d1e4673bd97d05b43c4b70174a"
+ hash: "eafa794e0c09cc2558575bafa945ecdf"
}
Frame {
msec: 7232
- hash: "2ca3f2d1e4673bd97d05b43c4b70174a"
+ hash: "eafa794e0c09cc2558575bafa945ecdf"
}
Frame {
msec: 7248
- hash: "2ca3f2d1e4673bd97d05b43c4b70174a"
+ hash: "eafa794e0c09cc2558575bafa945ecdf"
}
Frame {
msec: 7264
- hash: "2ca3f2d1e4673bd97d05b43c4b70174a"
+ hash: "eafa794e0c09cc2558575bafa945ecdf"
}
Frame {
msec: 7280
- hash: "2ca3f2d1e4673bd97d05b43c4b70174a"
+ hash: "eafa794e0c09cc2558575bafa945ecdf"
}
Frame {
msec: 7296
- hash: "2ca3f2d1e4673bd97d05b43c4b70174a"
+ hash: "eafa794e0c09cc2558575bafa945ecdf"
}
Frame {
msec: 7312
- hash: "2ca3f2d1e4673bd97d05b43c4b70174a"
+ hash: "eafa794e0c09cc2558575bafa945ecdf"
}
Frame {
msec: 7328
- hash: "2ca3f2d1e4673bd97d05b43c4b70174a"
+ hash: "eafa794e0c09cc2558575bafa945ecdf"
}
Frame {
msec: 7344
- hash: "2ca3f2d1e4673bd97d05b43c4b70174a"
+ hash: "eafa794e0c09cc2558575bafa945ecdf"
}
Frame {
msec: 7360
- hash: "2ca3f2d1e4673bd97d05b43c4b70174a"
+ hash: "eafa794e0c09cc2558575bafa945ecdf"
}
Frame {
msec: 7376
- hash: "2ca3f2d1e4673bd97d05b43c4b70174a"
+ hash: "eafa794e0c09cc2558575bafa945ecdf"
}
Frame {
msec: 7392
- hash: "2ca3f2d1e4673bd97d05b43c4b70174a"
+ hash: "eafa794e0c09cc2558575bafa945ecdf"
}
Frame {
msec: 7408
- hash: "2ca3f2d1e4673bd97d05b43c4b70174a"
+ hash: "eafa794e0c09cc2558575bafa945ecdf"
}
Frame {
msec: 7424
- hash: "2ca3f2d1e4673bd97d05b43c4b70174a"
+ hash: "eafa794e0c09cc2558575bafa945ecdf"
}
Frame {
msec: 7440
- hash: "2ca3f2d1e4673bd97d05b43c4b70174a"
+ hash: "eafa794e0c09cc2558575bafa945ecdf"
}
Frame {
msec: 7456
- hash: "2ca3f2d1e4673bd97d05b43c4b70174a"
+ hash: "eafa794e0c09cc2558575bafa945ecdf"
}
Frame {
msec: 7472
- hash: "2ca3f2d1e4673bd97d05b43c4b70174a"
+ hash: "eafa794e0c09cc2558575bafa945ecdf"
}
Frame {
msec: 7488
- hash: "2ca3f2d1e4673bd97d05b43c4b70174a"
+ hash: "eafa794e0c09cc2558575bafa945ecdf"
}
Frame {
msec: 7504
- hash: "2ca3f2d1e4673bd97d05b43c4b70174a"
+ hash: "eafa794e0c09cc2558575bafa945ecdf"
}
Frame {
msec: 7520
- hash: "2ca3f2d1e4673bd97d05b43c4b70174a"
+ hash: "eafa794e0c09cc2558575bafa945ecdf"
}
Frame {
msec: 7536
- hash: "2ca3f2d1e4673bd97d05b43c4b70174a"
+ hash: "eafa794e0c09cc2558575bafa945ecdf"
}
Frame {
msec: 7552
- hash: "2ca3f2d1e4673bd97d05b43c4b70174a"
+ hash: "eafa794e0c09cc2558575bafa945ecdf"
}
Frame {
msec: 7568
- hash: "2ca3f2d1e4673bd97d05b43c4b70174a"
+ hash: "eafa794e0c09cc2558575bafa945ecdf"
}
Key {
type: 6
@@ -3402,15 +3402,15 @@ VisualTest {
}
Frame {
msec: 7584
- hash: "ed7e9042cc805a60b1e8cf58a654ac66"
+ hash: "0444d714b801f88685df9722390faf4f"
}
Frame {
msec: 7600
- hash: "ed7e9042cc805a60b1e8cf58a654ac66"
+ hash: "0444d714b801f88685df9722390faf4f"
}
Frame {
msec: 7616
- hash: "ed7e9042cc805a60b1e8cf58a654ac66"
+ hash: "0444d714b801f88685df9722390faf4f"
}
Key {
type: 7
@@ -3422,15 +3422,15 @@ VisualTest {
}
Frame {
msec: 7632
- hash: "ed7e9042cc805a60b1e8cf58a654ac66"
+ hash: "0444d714b801f88685df9722390faf4f"
}
Frame {
msec: 7648
- hash: "ed7e9042cc805a60b1e8cf58a654ac66"
+ hash: "0444d714b801f88685df9722390faf4f"
}
Frame {
msec: 7664
- hash: "ed7e9042cc805a60b1e8cf58a654ac66"
+ hash: "0444d714b801f88685df9722390faf4f"
}
Frame {
msec: 7680
@@ -3438,11 +3438,11 @@ VisualTest {
}
Frame {
msec: 7696
- hash: "ed7e9042cc805a60b1e8cf58a654ac66"
+ hash: "0444d714b801f88685df9722390faf4f"
}
Frame {
msec: 7712
- hash: "ed7e9042cc805a60b1e8cf58a654ac66"
+ hash: "0444d714b801f88685df9722390faf4f"
}
Key {
type: 6
@@ -3454,63 +3454,63 @@ VisualTest {
}
Frame {
msec: 7728
- hash: "16829fffc675d304661b9ff844a675f3"
+ hash: "250a49b60ad8e9b901977e01063ec20a"
}
Frame {
msec: 7744
- hash: "16829fffc675d304661b9ff844a675f3"
+ hash: "250a49b60ad8e9b901977e01063ec20a"
}
Frame {
msec: 7760
- hash: "16829fffc675d304661b9ff844a675f3"
+ hash: "250a49b60ad8e9b901977e01063ec20a"
}
Frame {
msec: 7776
- hash: "16829fffc675d304661b9ff844a675f3"
+ hash: "250a49b60ad8e9b901977e01063ec20a"
}
Frame {
msec: 7792
- hash: "16829fffc675d304661b9ff844a675f3"
+ hash: "250a49b60ad8e9b901977e01063ec20a"
}
Frame {
msec: 7808
- hash: "16829fffc675d304661b9ff844a675f3"
+ hash: "250a49b60ad8e9b901977e01063ec20a"
}
Frame {
msec: 7824
- hash: "16829fffc675d304661b9ff844a675f3"
+ hash: "250a49b60ad8e9b901977e01063ec20a"
}
Frame {
msec: 7840
- hash: "16829fffc675d304661b9ff844a675f3"
+ hash: "250a49b60ad8e9b901977e01063ec20a"
}
Frame {
msec: 7856
- hash: "16829fffc675d304661b9ff844a675f3"
+ hash: "250a49b60ad8e9b901977e01063ec20a"
}
Frame {
msec: 7872
- hash: "16829fffc675d304661b9ff844a675f3"
+ hash: "250a49b60ad8e9b901977e01063ec20a"
}
Frame {
msec: 7888
- hash: "16829fffc675d304661b9ff844a675f3"
+ hash: "250a49b60ad8e9b901977e01063ec20a"
}
Frame {
msec: 7904
- hash: "16829fffc675d304661b9ff844a675f3"
+ hash: "250a49b60ad8e9b901977e01063ec20a"
}
Frame {
msec: 7920
- hash: "16829fffc675d304661b9ff844a675f3"
+ hash: "250a49b60ad8e9b901977e01063ec20a"
}
Frame {
msec: 7936
- hash: "16829fffc675d304661b9ff844a675f3"
+ hash: "250a49b60ad8e9b901977e01063ec20a"
}
Frame {
msec: 7952
- hash: "16829fffc675d304661b9ff844a675f3"
+ hash: "250a49b60ad8e9b901977e01063ec20a"
}
Key {
type: 7
@@ -3530,11 +3530,11 @@ VisualTest {
}
Frame {
msec: 7968
- hash: "45cfab0823b20b5dc206b42781cd9fb0"
+ hash: "bec2aea61fef64475e638848b96d28c3"
}
Frame {
msec: 7984
- hash: "45cfab0823b20b5dc206b42781cd9fb0"
+ hash: "bec2aea61fef64475e638848b96d28c3"
}
Key {
type: 7
@@ -3554,11 +3554,11 @@ VisualTest {
}
Frame {
msec: 8000
- hash: "01069fb12c399f4d22d4d4ec79779752"
+ hash: "54177e0d53373636850e18399640fee8"
}
Frame {
msec: 8016
- hash: "01069fb12c399f4d22d4d4ec79779752"
+ hash: "54177e0d53373636850e18399640fee8"
}
Key {
type: 7
@@ -3578,11 +3578,11 @@ VisualTest {
}
Frame {
msec: 8032
- hash: "88b6c6cca32a6d4adfc51cc7cce5e4bb"
+ hash: "81c03bd9dfd562e9f13784c906fa0d9e"
}
Frame {
msec: 8048
- hash: "88b6c6cca32a6d4adfc51cc7cce5e4bb"
+ hash: "81c03bd9dfd562e9f13784c906fa0d9e"
}
Key {
type: 7
@@ -3602,11 +3602,11 @@ VisualTest {
}
Frame {
msec: 8064
- hash: "7b8423cfd0806b7d29cdb366133ef828"
+ hash: "2547fbe956bab6566c2b9137c0edc841"
}
Frame {
msec: 8080
- hash: "7b8423cfd0806b7d29cdb366133ef828"
+ hash: "2547fbe956bab6566c2b9137c0edc841"
}
Key {
type: 6
@@ -3626,31 +3626,31 @@ VisualTest {
}
Frame {
msec: 8096
- hash: "7b8423cfd0806b7d29cdb366133ef828"
+ hash: "2547fbe956bab6566c2b9137c0edc841"
}
Frame {
msec: 8112
- hash: "7b8423cfd0806b7d29cdb366133ef828"
+ hash: "2547fbe956bab6566c2b9137c0edc841"
}
Frame {
msec: 8128
- hash: "7b8423cfd0806b7d29cdb366133ef828"
+ hash: "2547fbe956bab6566c2b9137c0edc841"
}
Frame {
msec: 8144
- hash: "7b8423cfd0806b7d29cdb366133ef828"
+ hash: "2547fbe956bab6566c2b9137c0edc841"
}
Frame {
msec: 8160
- hash: "7b8423cfd0806b7d29cdb366133ef828"
+ hash: "2547fbe956bab6566c2b9137c0edc841"
}
Frame {
msec: 8176
- hash: "7b8423cfd0806b7d29cdb366133ef828"
+ hash: "2547fbe956bab6566c2b9137c0edc841"
}
Frame {
msec: 8192
- hash: "7b8423cfd0806b7d29cdb366133ef828"
+ hash: "2547fbe956bab6566c2b9137c0edc841"
}
Key {
type: 6
@@ -3662,19 +3662,19 @@ VisualTest {
}
Frame {
msec: 8208
- hash: "45feb9f7c516693224505726324e07f1"
+ hash: "c757d4e60d18ce16f87c66e42cc81a99"
}
Frame {
msec: 8224
- hash: "45feb9f7c516693224505726324e07f1"
+ hash: "c757d4e60d18ce16f87c66e42cc81a99"
}
Frame {
msec: 8240
- hash: "45feb9f7c516693224505726324e07f1"
+ hash: "c757d4e60d18ce16f87c66e42cc81a99"
}
Frame {
msec: 8256
- hash: "45feb9f7c516693224505726324e07f1"
+ hash: "c757d4e60d18ce16f87c66e42cc81a99"
}
Key {
type: 7
@@ -3686,19 +3686,19 @@ VisualTest {
}
Frame {
msec: 8272
- hash: "45feb9f7c516693224505726324e07f1"
+ hash: "c757d4e60d18ce16f87c66e42cc81a99"
}
Frame {
msec: 8288
- hash: "45feb9f7c516693224505726324e07f1"
+ hash: "c757d4e60d18ce16f87c66e42cc81a99"
}
Frame {
msec: 8304
- hash: "45feb9f7c516693224505726324e07f1"
+ hash: "c757d4e60d18ce16f87c66e42cc81a99"
}
Frame {
msec: 8320
- hash: "45feb9f7c516693224505726324e07f1"
+ hash: "c757d4e60d18ce16f87c66e42cc81a99"
}
Key {
type: 6
@@ -3710,19 +3710,19 @@ VisualTest {
}
Frame {
msec: 8336
- hash: "592811b385809e02c02e5925191fbc0c"
+ hash: "2ef578193024153dc85a2a92d10dc6c0"
}
Frame {
msec: 8352
- hash: "592811b385809e02c02e5925191fbc0c"
+ hash: "2ef578193024153dc85a2a92d10dc6c0"
}
Frame {
msec: 8368
- hash: "592811b385809e02c02e5925191fbc0c"
+ hash: "2ef578193024153dc85a2a92d10dc6c0"
}
Frame {
msec: 8384
- hash: "592811b385809e02c02e5925191fbc0c"
+ hash: "2ef578193024153dc85a2a92d10dc6c0"
}
Key {
type: 7
@@ -3734,23 +3734,23 @@ VisualTest {
}
Frame {
msec: 8400
- hash: "592811b385809e02c02e5925191fbc0c"
+ hash: "2ef578193024153dc85a2a92d10dc6c0"
}
Frame {
msec: 8416
- hash: "592811b385809e02c02e5925191fbc0c"
+ hash: "2ef578193024153dc85a2a92d10dc6c0"
}
Frame {
msec: 8432
- hash: "592811b385809e02c02e5925191fbc0c"
+ hash: "2ef578193024153dc85a2a92d10dc6c0"
}
Frame {
msec: 8448
- hash: "592811b385809e02c02e5925191fbc0c"
+ hash: "2ef578193024153dc85a2a92d10dc6c0"
}
Frame {
msec: 8464
- hash: "592811b385809e02c02e5925191fbc0c"
+ hash: "2ef578193024153dc85a2a92d10dc6c0"
}
Key {
type: 6
@@ -3762,19 +3762,19 @@ VisualTest {
}
Frame {
msec: 8480
- hash: "e9b5feff425d22a5dcecc57ebb3d5379"
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
}
Frame {
msec: 8496
- hash: "e9b5feff425d22a5dcecc57ebb3d5379"
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
}
Frame {
msec: 8512
- hash: "e9b5feff425d22a5dcecc57ebb3d5379"
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
}
Frame {
msec: 8528
- hash: "e9b5feff425d22a5dcecc57ebb3d5379"
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
}
Key {
type: 7
@@ -3786,27 +3786,27 @@ VisualTest {
}
Frame {
msec: 8544
- hash: "e9b5feff425d22a5dcecc57ebb3d5379"
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
}
Frame {
msec: 8560
- hash: "e9b5feff425d22a5dcecc57ebb3d5379"
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
}
Frame {
msec: 8576
- hash: "e9b5feff425d22a5dcecc57ebb3d5379"
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
}
Frame {
msec: 8592
- hash: "e9b5feff425d22a5dcecc57ebb3d5379"
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
}
Frame {
msec: 8608
- hash: "e9b5feff425d22a5dcecc57ebb3d5379"
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
}
Frame {
msec: 8624
- hash: "e9b5feff425d22a5dcecc57ebb3d5379"
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
}
Frame {
msec: 8640
@@ -3814,7 +3814,7 @@ VisualTest {
}
Frame {
msec: 8656
- hash: "e9b5feff425d22a5dcecc57ebb3d5379"
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
}
Key {
type: 7
@@ -3826,139 +3826,139 @@ VisualTest {
}
Frame {
msec: 8672
- hash: "e9b5feff425d22a5dcecc57ebb3d5379"
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
}
Frame {
msec: 8688
- hash: "e9b5feff425d22a5dcecc57ebb3d5379"
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
}
Frame {
msec: 8704
- hash: "e9b5feff425d22a5dcecc57ebb3d5379"
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
}
Frame {
msec: 8720
- hash: "e9b5feff425d22a5dcecc57ebb3d5379"
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
}
Frame {
msec: 8736
- hash: "e9b5feff425d22a5dcecc57ebb3d5379"
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
}
Frame {
msec: 8752
- hash: "e9b5feff425d22a5dcecc57ebb3d5379"
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
}
Frame {
msec: 8768
- hash: "e9b5feff425d22a5dcecc57ebb3d5379"
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
}
Frame {
msec: 8784
- hash: "e9b5feff425d22a5dcecc57ebb3d5379"
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
}
Frame {
msec: 8800
- hash: "e9b5feff425d22a5dcecc57ebb3d5379"
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
}
Frame {
msec: 8816
- hash: "e9b5feff425d22a5dcecc57ebb3d5379"
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
}
Frame {
msec: 8832
- hash: "e9b5feff425d22a5dcecc57ebb3d5379"
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
}
Frame {
msec: 8848
- hash: "e9b5feff425d22a5dcecc57ebb3d5379"
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
}
Frame {
msec: 8864
- hash: "e9b5feff425d22a5dcecc57ebb3d5379"
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
}
Frame {
msec: 8880
- hash: "e9b5feff425d22a5dcecc57ebb3d5379"
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
}
Frame {
msec: 8896
- hash: "e9b5feff425d22a5dcecc57ebb3d5379"
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
}
Frame {
msec: 8912
- hash: "e9b5feff425d22a5dcecc57ebb3d5379"
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
}
Frame {
msec: 8928
- hash: "e9b5feff425d22a5dcecc57ebb3d5379"
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
}
Frame {
msec: 8944
- hash: "e9b5feff425d22a5dcecc57ebb3d5379"
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
}
Frame {
msec: 8960
- hash: "e9b5feff425d22a5dcecc57ebb3d5379"
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
}
Frame {
msec: 8976
- hash: "e9b5feff425d22a5dcecc57ebb3d5379"
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
}
Frame {
msec: 8992
- hash: "e9b5feff425d22a5dcecc57ebb3d5379"
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
}
Frame {
msec: 9008
- hash: "e9b5feff425d22a5dcecc57ebb3d5379"
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
}
Frame {
msec: 9024
- hash: "e9b5feff425d22a5dcecc57ebb3d5379"
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
}
Frame {
msec: 9040
- hash: "e9b5feff425d22a5dcecc57ebb3d5379"
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
}
Frame {
msec: 9056
- hash: "e9b5feff425d22a5dcecc57ebb3d5379"
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
}
Frame {
msec: 9072
- hash: "e9b5feff425d22a5dcecc57ebb3d5379"
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
}
Frame {
msec: 9088
- hash: "e9b5feff425d22a5dcecc57ebb3d5379"
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
}
Frame {
msec: 9104
- hash: "e9b5feff425d22a5dcecc57ebb3d5379"
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
}
Frame {
msec: 9120
- hash: "e9b5feff425d22a5dcecc57ebb3d5379"
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
}
Frame {
msec: 9136
- hash: "e9b5feff425d22a5dcecc57ebb3d5379"
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
}
Frame {
msec: 9152
- hash: "e9b5feff425d22a5dcecc57ebb3d5379"
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
}
Frame {
msec: 9168
- hash: "e9b5feff425d22a5dcecc57ebb3d5379"
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
}
Frame {
msec: 9184
- hash: "e9b5feff425d22a5dcecc57ebb3d5379"
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
}
Frame {
msec: 9200
- hash: "e9b5feff425d22a5dcecc57ebb3d5379"
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
}
Mouse {
type: 2
@@ -3970,11 +3970,11 @@ VisualTest {
}
Frame {
msec: 9216
- hash: "e9b5feff425d22a5dcecc57ebb3d5379"
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
}
Frame {
msec: 9232
- hash: "e9b5feff425d22a5dcecc57ebb3d5379"
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
}
Mouse {
type: 5
@@ -3986,7 +3986,7 @@ VisualTest {
}
Frame {
msec: 9248
- hash: "e9b5feff425d22a5dcecc57ebb3d5379"
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
}
Mouse {
type: 5
@@ -4006,7 +4006,7 @@ VisualTest {
}
Frame {
msec: 9264
- hash: "e9b5feff425d22a5dcecc57ebb3d5379"
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
}
Mouse {
type: 5
@@ -4026,7 +4026,7 @@ VisualTest {
}
Frame {
msec: 9280
- hash: "e9b5feff425d22a5dcecc57ebb3d5379"
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
}
Mouse {
type: 3
@@ -4038,43 +4038,43 @@ VisualTest {
}
Frame {
msec: 9296
- hash: "e9b5feff425d22a5dcecc57ebb3d5379"
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
}
Frame {
msec: 9312
- hash: "e9b5feff425d22a5dcecc57ebb3d5379"
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
}
Frame {
msec: 9328
- hash: "e9b5feff425d22a5dcecc57ebb3d5379"
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
}
Frame {
msec: 9344
- hash: "e9b5feff425d22a5dcecc57ebb3d5379"
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
}
Frame {
msec: 9360
- hash: "e9b5feff425d22a5dcecc57ebb3d5379"
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
}
Frame {
msec: 9376
- hash: "e9b5feff425d22a5dcecc57ebb3d5379"
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
}
Frame {
msec: 9392
- hash: "e9b5feff425d22a5dcecc57ebb3d5379"
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
}
Frame {
msec: 9408
- hash: "e9b5feff425d22a5dcecc57ebb3d5379"
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
}
Frame {
msec: 9424
- hash: "e9b5feff425d22a5dcecc57ebb3d5379"
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
}
Frame {
msec: 9440
- hash: "e9b5feff425d22a5dcecc57ebb3d5379"
+ hash: "47e926162c6d695d2bdb7ec9de05f0cc"
}
Mouse {
type: 2
@@ -4086,27 +4086,27 @@ VisualTest {
}
Frame {
msec: 9456
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 9472
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 9488
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 9504
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 9520
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 9536
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Mouse {
type: 3
@@ -4118,15 +4118,15 @@ VisualTest {
}
Frame {
msec: 9552
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 9568
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 9584
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 9600
@@ -4134,19 +4134,19 @@ VisualTest {
}
Frame {
msec: 9616
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 9632
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 9648
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 9664
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Key {
type: 6
@@ -4158,111 +4158,111 @@ VisualTest {
}
Frame {
msec: 9680
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 9696
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 9712
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 9728
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 9744
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 9760
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 9776
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 9792
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 9808
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 9824
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 9840
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 9856
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 9872
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 9888
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 9904
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 9920
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 9936
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 9952
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 9968
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 9984
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 10000
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 10016
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 10032
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 10048
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 10064
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 10080
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 10096
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Key {
type: 6
@@ -4274,35 +4274,35 @@ VisualTest {
}
Frame {
msec: 10112
- hash: "f3e8f8174b1c995d76e68fea7f21f285"
+ hash: "2ef5e7b2c0edc631765ea12d1f7abf33"
}
Frame {
msec: 10128
- hash: "f3e8f8174b1c995d76e68fea7f21f285"
+ hash: "2ef5e7b2c0edc631765ea12d1f7abf33"
}
Frame {
msec: 10144
- hash: "f3e8f8174b1c995d76e68fea7f21f285"
+ hash: "2ef5e7b2c0edc631765ea12d1f7abf33"
}
Frame {
msec: 10160
- hash: "f3e8f8174b1c995d76e68fea7f21f285"
+ hash: "2ef5e7b2c0edc631765ea12d1f7abf33"
}
Frame {
msec: 10176
- hash: "f3e8f8174b1c995d76e68fea7f21f285"
+ hash: "2ef5e7b2c0edc631765ea12d1f7abf33"
}
Frame {
msec: 10192
- hash: "f3e8f8174b1c995d76e68fea7f21f285"
+ hash: "2ef5e7b2c0edc631765ea12d1f7abf33"
}
Frame {
msec: 10208
- hash: "f3e8f8174b1c995d76e68fea7f21f285"
+ hash: "2ef5e7b2c0edc631765ea12d1f7abf33"
}
Frame {
msec: 10224
- hash: "f3e8f8174b1c995d76e68fea7f21f285"
+ hash: "2ef5e7b2c0edc631765ea12d1f7abf33"
}
Key {
type: 7
@@ -4314,35 +4314,35 @@ VisualTest {
}
Frame {
msec: 10240
- hash: "f3e8f8174b1c995d76e68fea7f21f285"
+ hash: "2ef5e7b2c0edc631765ea12d1f7abf33"
}
Frame {
msec: 10256
- hash: "f3e8f8174b1c995d76e68fea7f21f285"
+ hash: "2ef5e7b2c0edc631765ea12d1f7abf33"
}
Frame {
msec: 10272
- hash: "f3e8f8174b1c995d76e68fea7f21f285"
+ hash: "2ef5e7b2c0edc631765ea12d1f7abf33"
}
Frame {
msec: 10288
- hash: "f3e8f8174b1c995d76e68fea7f21f285"
+ hash: "2ef5e7b2c0edc631765ea12d1f7abf33"
}
Frame {
msec: 10304
- hash: "f3e8f8174b1c995d76e68fea7f21f285"
+ hash: "2ef5e7b2c0edc631765ea12d1f7abf33"
}
Frame {
msec: 10320
- hash: "f3e8f8174b1c995d76e68fea7f21f285"
+ hash: "2ef5e7b2c0edc631765ea12d1f7abf33"
}
Frame {
msec: 10336
- hash: "f3e8f8174b1c995d76e68fea7f21f285"
+ hash: "2ef5e7b2c0edc631765ea12d1f7abf33"
}
Frame {
msec: 10352
- hash: "f3e8f8174b1c995d76e68fea7f21f285"
+ hash: "2ef5e7b2c0edc631765ea12d1f7abf33"
}
Key {
type: 6
@@ -4354,27 +4354,27 @@ VisualTest {
}
Frame {
msec: 10368
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 10384
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 10400
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 10416
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 10432
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 10448
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Key {
type: 7
@@ -4386,27 +4386,27 @@ VisualTest {
}
Frame {
msec: 10464
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 10480
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 10496
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 10512
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 10528
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 10544
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 10560
@@ -4414,23 +4414,23 @@ VisualTest {
}
Frame {
msec: 10576
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 10592
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 10608
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 10624
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 10640
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Key {
type: 7
@@ -4442,219 +4442,219 @@ VisualTest {
}
Frame {
msec: 10656
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 10672
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 10688
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 10704
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 10720
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 10736
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 10752
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 10768
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 10784
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 10800
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 10816
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 10832
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 10848
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 10864
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 10880
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 10896
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 10912
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 10928
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 10944
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 10960
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 10976
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 10992
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 11008
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 11024
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 11040
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 11056
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 11072
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 11088
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 11104
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 11120
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 11136
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 11152
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 11168
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 11184
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 11200
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 11216
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 11232
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 11248
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 11264
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 11280
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 11296
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 11312
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 11328
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 11344
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 11360
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 11376
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 11392
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 11408
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 11424
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 11440
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 11456
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 11472
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 11488
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 11504
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 11520
@@ -4662,26 +4662,26 @@ VisualTest {
}
Frame {
msec: 11536
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 11552
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 11568
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 11584
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 11600
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
Frame {
msec: 11616
- hash: "94c707f2778a4f327f0c49265a42dfb4"
+ hash: "c3914ed0d035a39423a1f2cf9ac6c165"
}
}
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 0d1fa54..61606b2 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.0.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.0.png
Binary files 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 bedf721..a4b28fc 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.1.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.1.png
Binary files 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 f17abe2..5be6bbb 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.2.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.2.png
Binary files 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 a98e8ef..a220f65 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.3.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.3.png
Binary files 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 36801d8..6946707 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.4.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.4.png
Binary files 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 35c39e7..4eeb8ec 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.5.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.5.png
Binary files 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 35c39e7..4eeb8ec 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.6.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.6.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.qml
index 3e36073..f1bb5a9 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: "2bfc2ce5462c1b2e8177159590e8bf9d"
+ hash: "b6611676a7d38162d5c0210ea9d0e291"
}
Key {
type: 6
@@ -18,7 +18,7 @@ VisualTest {
}
Frame {
msec: 32
- hash: "2aebd6f552933d74ad64e953728c44a6"
+ hash: "b7fc43d4344c8d39f4240dadead86b1e"
}
Key {
type: 7
@@ -30,11 +30,11 @@ VisualTest {
}
Frame {
msec: 48
- hash: "2aebd6f552933d74ad64e953728c44a6"
+ hash: "b7fc43d4344c8d39f4240dadead86b1e"
}
Frame {
msec: 64
- hash: "2aebd6f552933d74ad64e953728c44a6"
+ hash: "b7fc43d4344c8d39f4240dadead86b1e"
}
Key {
type: 7
@@ -46,11 +46,11 @@ VisualTest {
}
Frame {
msec: 80
- hash: "2aebd6f552933d74ad64e953728c44a6"
+ hash: "b7fc43d4344c8d39f4240dadead86b1e"
}
Frame {
msec: 96
- hash: "2aebd6f552933d74ad64e953728c44a6"
+ hash: "b7fc43d4344c8d39f4240dadead86b1e"
}
Key {
type: 6
@@ -62,15 +62,15 @@ VisualTest {
}
Frame {
msec: 112
- hash: "96f0f1c8ddc760ddb454c374faa75239"
+ hash: "23006a07263b8b3240c4080fb1d587e9"
}
Frame {
msec: 128
- hash: "96f0f1c8ddc760ddb454c374faa75239"
+ hash: "23006a07263b8b3240c4080fb1d587e9"
}
Frame {
msec: 144
- hash: "96f0f1c8ddc760ddb454c374faa75239"
+ hash: "23006a07263b8b3240c4080fb1d587e9"
}
Key {
type: 6
@@ -82,15 +82,15 @@ VisualTest {
}
Frame {
msec: 160
- hash: "5660942e66cdc499a067b1209b46a593"
+ hash: "8a60fd38fb9c171a15bf7e6e51bee664"
}
Frame {
msec: 176
- hash: "5660942e66cdc499a067b1209b46a593"
+ hash: "8a60fd38fb9c171a15bf7e6e51bee664"
}
Frame {
msec: 192
- hash: "5660942e66cdc499a067b1209b46a593"
+ hash: "8a60fd38fb9c171a15bf7e6e51bee664"
}
Key {
type: 7
@@ -102,11 +102,11 @@ VisualTest {
}
Frame {
msec: 208
- hash: "5660942e66cdc499a067b1209b46a593"
+ hash: "8a60fd38fb9c171a15bf7e6e51bee664"
}
Frame {
msec: 224
- hash: "5660942e66cdc499a067b1209b46a593"
+ hash: "8a60fd38fb9c171a15bf7e6e51bee664"
}
Key {
type: 6
@@ -118,7 +118,7 @@ VisualTest {
}
Frame {
msec: 240
- hash: "dd3b01d6a2a829e6ba7404d5318f7d15"
+ hash: "33cdfa214f071848ed374407b4601c5a"
}
Key {
type: 7
@@ -130,19 +130,19 @@ VisualTest {
}
Frame {
msec: 256
- hash: "dd3b01d6a2a829e6ba7404d5318f7d15"
+ hash: "33cdfa214f071848ed374407b4601c5a"
}
Frame {
msec: 272
- hash: "dd3b01d6a2a829e6ba7404d5318f7d15"
+ hash: "33cdfa214f071848ed374407b4601c5a"
}
Frame {
msec: 288
- hash: "dd3b01d6a2a829e6ba7404d5318f7d15"
+ hash: "33cdfa214f071848ed374407b4601c5a"
}
Frame {
msec: 304
- hash: "dd3b01d6a2a829e6ba7404d5318f7d15"
+ hash: "33cdfa214f071848ed374407b4601c5a"
}
Key {
type: 7
@@ -154,11 +154,11 @@ VisualTest {
}
Frame {
msec: 320
- hash: "dd3b01d6a2a829e6ba7404d5318f7d15"
+ hash: "33cdfa214f071848ed374407b4601c5a"
}
Frame {
msec: 336
- hash: "dd3b01d6a2a829e6ba7404d5318f7d15"
+ hash: "33cdfa214f071848ed374407b4601c5a"
}
Key {
type: 6
@@ -170,19 +170,19 @@ VisualTest {
}
Frame {
msec: 352
- hash: "1cf8dbc4358e3aa51c260a3a40143318"
+ hash: "80794c72fe7dda72997122a89f33e6e4"
}
Frame {
msec: 368
- hash: "1cf8dbc4358e3aa51c260a3a40143318"
+ hash: "80794c72fe7dda72997122a89f33e6e4"
}
Frame {
msec: 384
- hash: "1cf8dbc4358e3aa51c260a3a40143318"
+ hash: "80794c72fe7dda72997122a89f33e6e4"
}
Frame {
msec: 400
- hash: "1cf8dbc4358e3aa51c260a3a40143318"
+ hash: "80794c72fe7dda72997122a89f33e6e4"
}
Key {
type: 7
@@ -194,19 +194,19 @@ VisualTest {
}
Frame {
msec: 416
- hash: "1cf8dbc4358e3aa51c260a3a40143318"
+ hash: "80794c72fe7dda72997122a89f33e6e4"
}
Frame {
msec: 432
- hash: "1cf8dbc4358e3aa51c260a3a40143318"
+ hash: "80794c72fe7dda72997122a89f33e6e4"
}
Frame {
msec: 448
- hash: "1cf8dbc4358e3aa51c260a3a40143318"
+ hash: "80794c72fe7dda72997122a89f33e6e4"
}
Frame {
msec: 464
- hash: "c9f5b9e45b0bb040e669daccf8bb1eb0"
+ hash: "80794c72fe7dda72997122a89f33e6e4"
}
Key {
type: 6
@@ -218,19 +218,19 @@ VisualTest {
}
Frame {
msec: 480
- hash: "fc2972eca4ca510d23c92f712fd1ceb3"
+ hash: "bfcd901aee3d9db796597834bec1f173"
}
Frame {
msec: 496
- hash: "fc2972eca4ca510d23c92f712fd1ceb3"
+ hash: "bfcd901aee3d9db796597834bec1f173"
}
Frame {
msec: 512
- hash: "fc2972eca4ca510d23c92f712fd1ceb3"
+ hash: "bfcd901aee3d9db796597834bec1f173"
}
Frame {
msec: 528
- hash: "fc2972eca4ca510d23c92f712fd1ceb3"
+ hash: "bfcd901aee3d9db796597834bec1f173"
}
Key {
type: 6
@@ -250,23 +250,23 @@ VisualTest {
}
Frame {
msec: 544
- hash: "15313caf999d43a079e51c69323682f3"
+ hash: "965102cb74dcf695b950616ce5c42875"
}
Frame {
msec: 560
- hash: "15313caf999d43a079e51c69323682f3"
+ hash: "965102cb74dcf695b950616ce5c42875"
}
Frame {
msec: 576
- hash: "15313caf999d43a079e51c69323682f3"
+ hash: "965102cb74dcf695b950616ce5c42875"
}
Frame {
msec: 592
- hash: "15313caf999d43a079e51c69323682f3"
+ hash: "965102cb74dcf695b950616ce5c42875"
}
Frame {
msec: 608
- hash: "15313caf999d43a079e51c69323682f3"
+ hash: "965102cb74dcf695b950616ce5c42875"
}
Key {
type: 7
@@ -286,19 +286,19 @@ VisualTest {
}
Frame {
msec: 624
- hash: "80cbbe525c033083248e4a5d636f875c"
+ hash: "73556f0cf2c8d77881a7d3881025e343"
}
Frame {
msec: 640
- hash: "80cbbe525c033083248e4a5d636f875c"
+ hash: "73556f0cf2c8d77881a7d3881025e343"
}
Frame {
msec: 656
- hash: "80cbbe525c033083248e4a5d636f875c"
+ hash: "73556f0cf2c8d77881a7d3881025e343"
}
Frame {
msec: 672
- hash: "80cbbe525c033083248e4a5d636f875c"
+ hash: "73556f0cf2c8d77881a7d3881025e343"
}
Key {
type: 7
@@ -310,11 +310,11 @@ VisualTest {
}
Frame {
msec: 688
- hash: "80cbbe525c033083248e4a5d636f875c"
+ hash: "73556f0cf2c8d77881a7d3881025e343"
}
Frame {
msec: 704
- hash: "80cbbe525c033083248e4a5d636f875c"
+ hash: "73556f0cf2c8d77881a7d3881025e343"
}
Key {
type: 6
@@ -326,23 +326,23 @@ VisualTest {
}
Frame {
msec: 720
- hash: "ccc8cfb1c79d043ec68b2174f3fb5b27"
+ hash: "a75bdb09a48b90936d2d4de647e7323d"
}
Frame {
msec: 736
- hash: "ccc8cfb1c79d043ec68b2174f3fb5b27"
+ hash: "a75bdb09a48b90936d2d4de647e7323d"
}
Frame {
msec: 752
- hash: "ccc8cfb1c79d043ec68b2174f3fb5b27"
+ hash: "a75bdb09a48b90936d2d4de647e7323d"
}
Frame {
msec: 768
- hash: "ccc8cfb1c79d043ec68b2174f3fb5b27"
+ hash: "a75bdb09a48b90936d2d4de647e7323d"
}
Frame {
msec: 784
- hash: "ccc8cfb1c79d043ec68b2174f3fb5b27"
+ hash: "a75bdb09a48b90936d2d4de647e7323d"
}
Key {
type: 7
@@ -354,7 +354,7 @@ VisualTest {
}
Frame {
msec: 800
- hash: "ccc8cfb1c79d043ec68b2174f3fb5b27"
+ hash: "a75bdb09a48b90936d2d4de647e7323d"
}
Key {
type: 6
@@ -366,15 +366,15 @@ VisualTest {
}
Frame {
msec: 816
- hash: "d13548c95a838350f2b3011e643e0182"
+ hash: "f37ab5f03e7cf86e3589fc0711b23a53"
}
Frame {
msec: 832
- hash: "d13548c95a838350f2b3011e643e0182"
+ hash: "f37ab5f03e7cf86e3589fc0711b23a53"
}
Frame {
msec: 848
- hash: "d13548c95a838350f2b3011e643e0182"
+ hash: "f37ab5f03e7cf86e3589fc0711b23a53"
}
Key {
type: 7
@@ -386,15 +386,15 @@ VisualTest {
}
Frame {
msec: 864
- hash: "d13548c95a838350f2b3011e643e0182"
+ hash: "f37ab5f03e7cf86e3589fc0711b23a53"
}
Frame {
msec: 880
- hash: "d13548c95a838350f2b3011e643e0182"
+ hash: "f37ab5f03e7cf86e3589fc0711b23a53"
}
Frame {
msec: 896
- hash: "d13548c95a838350f2b3011e643e0182"
+ hash: "f37ab5f03e7cf86e3589fc0711b23a53"
}
Key {
type: 6
@@ -406,15 +406,15 @@ VisualTest {
}
Frame {
msec: 912
- hash: "1c61611fc6386736782b7d61619ae9af"
+ hash: "219e5edd5f138cd113f0b929460cf074"
}
Frame {
msec: 928
- hash: "1c61611fc6386736782b7d61619ae9af"
+ hash: "219e5edd5f138cd113f0b929460cf074"
}
Frame {
msec: 944
- hash: "1c61611fc6386736782b7d61619ae9af"
+ hash: "219e5edd5f138cd113f0b929460cf074"
}
Frame {
msec: 960
@@ -422,11 +422,11 @@ VisualTest {
}
Frame {
msec: 976
- hash: "224079eaeb708f8cd27326a06857f6aa"
+ hash: "219e5edd5f138cd113f0b929460cf074"
}
Frame {
msec: 992
- hash: "224079eaeb708f8cd27326a06857f6aa"
+ hash: "219e5edd5f138cd113f0b929460cf074"
}
Key {
type: 6
@@ -446,23 +446,23 @@ VisualTest {
}
Frame {
msec: 1008
- hash: "07681c5879322e7ac093c9324b45520d"
+ hash: "79cf23a46fbbeddbef10ef2a62533342"
}
Frame {
msec: 1024
- hash: "07681c5879322e7ac093c9324b45520d"
+ hash: "79cf23a46fbbeddbef10ef2a62533342"
}
Frame {
msec: 1040
- hash: "07681c5879322e7ac093c9324b45520d"
+ hash: "79cf23a46fbbeddbef10ef2a62533342"
}
Frame {
msec: 1056
- hash: "07681c5879322e7ac093c9324b45520d"
+ hash: "79cf23a46fbbeddbef10ef2a62533342"
}
Frame {
msec: 1072
- hash: "07681c5879322e7ac093c9324b45520d"
+ hash: "79cf23a46fbbeddbef10ef2a62533342"
}
Key {
type: 7
@@ -474,31 +474,31 @@ VisualTest {
}
Frame {
msec: 1088
- hash: "07681c5879322e7ac093c9324b45520d"
+ hash: "79cf23a46fbbeddbef10ef2a62533342"
}
Frame {
msec: 1104
- hash: "07681c5879322e7ac093c9324b45520d"
+ hash: "79cf23a46fbbeddbef10ef2a62533342"
}
Frame {
msec: 1120
- hash: "07681c5879322e7ac093c9324b45520d"
+ hash: "79cf23a46fbbeddbef10ef2a62533342"
}
Frame {
msec: 1136
- hash: "07681c5879322e7ac093c9324b45520d"
+ hash: "79cf23a46fbbeddbef10ef2a62533342"
}
Frame {
msec: 1152
- hash: "07681c5879322e7ac093c9324b45520d"
+ hash: "79cf23a46fbbeddbef10ef2a62533342"
}
Frame {
msec: 1168
- hash: "07681c5879322e7ac093c9324b45520d"
+ hash: "79cf23a46fbbeddbef10ef2a62533342"
}
Frame {
msec: 1184
- hash: "07681c5879322e7ac093c9324b45520d"
+ hash: "79cf23a46fbbeddbef10ef2a62533342"
}
Key {
type: 6
@@ -510,23 +510,23 @@ VisualTest {
}
Frame {
msec: 1200
- hash: "9dda4b5fa581a01608d9c3e2ce0bc33b"
+ hash: "ccb17209d85c7e49fbb0b5f9134fc39c"
}
Frame {
msec: 1216
- hash: "9dda4b5fa581a01608d9c3e2ce0bc33b"
+ hash: "ccb17209d85c7e49fbb0b5f9134fc39c"
}
Frame {
msec: 1232
- hash: "9dda4b5fa581a01608d9c3e2ce0bc33b"
+ hash: "ccb17209d85c7e49fbb0b5f9134fc39c"
}
Frame {
msec: 1248
- hash: "9dda4b5fa581a01608d9c3e2ce0bc33b"
+ hash: "ccb17209d85c7e49fbb0b5f9134fc39c"
}
Frame {
msec: 1264
- hash: "9dda4b5fa581a01608d9c3e2ce0bc33b"
+ hash: "ccb17209d85c7e49fbb0b5f9134fc39c"
}
Key {
type: 7
@@ -546,11 +546,11 @@ VisualTest {
}
Frame {
msec: 1280
- hash: "95c62fa8d99d29999ce84b975d6858bc"
+ hash: "29aaa213e4b146199289b5383528bc88"
}
Frame {
msec: 1296
- hash: "95c62fa8d99d29999ce84b975d6858bc"
+ hash: "29aaa213e4b146199289b5383528bc88"
}
Key {
type: 6
@@ -562,15 +562,15 @@ VisualTest {
}
Frame {
msec: 1312
- hash: "c98dada1c82e867bd0d0ff56de86574f"
+ hash: "7f9da386497bca2dc19b1c3ab475f453"
}
Frame {
msec: 1328
- hash: "c98dada1c82e867bd0d0ff56de86574f"
+ hash: "7f9da386497bca2dc19b1c3ab475f453"
}
Frame {
msec: 1344
- hash: "c98dada1c82e867bd0d0ff56de86574f"
+ hash: "7f9da386497bca2dc19b1c3ab475f453"
}
Key {
type: 7
@@ -582,11 +582,11 @@ VisualTest {
}
Frame {
msec: 1360
- hash: "c98dada1c82e867bd0d0ff56de86574f"
+ hash: "7f9da386497bca2dc19b1c3ab475f453"
}
Frame {
msec: 1376
- hash: "c98dada1c82e867bd0d0ff56de86574f"
+ hash: "7f9da386497bca2dc19b1c3ab475f453"
}
Key {
type: 7
@@ -598,19 +598,19 @@ VisualTest {
}
Frame {
msec: 1392
- hash: "c98dada1c82e867bd0d0ff56de86574f"
+ hash: "7f9da386497bca2dc19b1c3ab475f453"
}
Frame {
msec: 1408
- hash: "c98dada1c82e867bd0d0ff56de86574f"
+ hash: "7f9da386497bca2dc19b1c3ab475f453"
}
Frame {
msec: 1424
- hash: "c98dada1c82e867bd0d0ff56de86574f"
+ hash: "7f9da386497bca2dc19b1c3ab475f453"
}
Frame {
msec: 1440
- hash: "c98dada1c82e867bd0d0ff56de86574f"
+ hash: "7f9da386497bca2dc19b1c3ab475f453"
}
Key {
type: 6
@@ -622,23 +622,23 @@ VisualTest {
}
Frame {
msec: 1456
- hash: "30d8ac1ed88cce3df5e8e5ef209caf45"
+ hash: "eb683a6b2a9ed2cf4ea5cb424670c9d2"
}
Frame {
msec: 1472
- hash: "30d8ac1ed88cce3df5e8e5ef209caf45"
+ hash: "eb683a6b2a9ed2cf4ea5cb424670c9d2"
}
Frame {
msec: 1488
- hash: "30d8ac1ed88cce3df5e8e5ef209caf45"
+ hash: "eb683a6b2a9ed2cf4ea5cb424670c9d2"
}
Frame {
msec: 1504
- hash: "30d8ac1ed88cce3df5e8e5ef209caf45"
+ hash: "eb683a6b2a9ed2cf4ea5cb424670c9d2"
}
Frame {
msec: 1520
- hash: "30d8ac1ed88cce3df5e8e5ef209caf45"
+ hash: "eb683a6b2a9ed2cf4ea5cb424670c9d2"
}
Key {
type: 7
@@ -650,11 +650,11 @@ VisualTest {
}
Frame {
msec: 1536
- hash: "30d8ac1ed88cce3df5e8e5ef209caf45"
+ hash: "eb683a6b2a9ed2cf4ea5cb424670c9d2"
}
Frame {
msec: 1552
- hash: "30d8ac1ed88cce3df5e8e5ef209caf45"
+ hash: "eb683a6b2a9ed2cf4ea5cb424670c9d2"
}
Key {
type: 6
@@ -666,23 +666,23 @@ VisualTest {
}
Frame {
msec: 1568
- hash: "d0d0bd91c9ac756c43a0c0fe53797ee3"
+ hash: "c5c789ca287cf673be808f3e10e054a2"
}
Frame {
msec: 1584
- hash: "d0d0bd91c9ac756c43a0c0fe53797ee3"
+ hash: "c5c789ca287cf673be808f3e10e054a2"
}
Frame {
msec: 1600
- hash: "d0d0bd91c9ac756c43a0c0fe53797ee3"
+ hash: "c5c789ca287cf673be808f3e10e054a2"
}
Frame {
msec: 1616
- hash: "d0d0bd91c9ac756c43a0c0fe53797ee3"
+ hash: "c5c789ca287cf673be808f3e10e054a2"
}
Frame {
msec: 1632
- hash: "d0d0bd91c9ac756c43a0c0fe53797ee3"
+ hash: "c5c789ca287cf673be808f3e10e054a2"
}
Key {
type: 6
@@ -702,23 +702,23 @@ VisualTest {
}
Frame {
msec: 1648
- hash: "8a2825dc4d2883fe491819ae34a2eff8"
+ hash: "5e39fc7058b64afa7036002a2dae8976"
}
Frame {
msec: 1664
- hash: "8a2825dc4d2883fe491819ae34a2eff8"
+ hash: "5e39fc7058b64afa7036002a2dae8976"
}
Frame {
msec: 1680
- hash: "8a2825dc4d2883fe491819ae34a2eff8"
+ hash: "5e39fc7058b64afa7036002a2dae8976"
}
Frame {
msec: 1696
- hash: "8a2825dc4d2883fe491819ae34a2eff8"
+ hash: "5e39fc7058b64afa7036002a2dae8976"
}
Frame {
msec: 1712
- hash: "8a2825dc4d2883fe491819ae34a2eff8"
+ hash: "5e39fc7058b64afa7036002a2dae8976"
}
Key {
type: 6
@@ -730,15 +730,15 @@ VisualTest {
}
Frame {
msec: 1728
- hash: "acf73c003e786ca1756f43a2e20962d3"
+ hash: "687e69083430812cd42eff708229a176"
}
Frame {
msec: 1744
- hash: "acf73c003e786ca1756f43a2e20962d3"
+ hash: "687e69083430812cd42eff708229a176"
}
Frame {
msec: 1760
- hash: "acf73c003e786ca1756f43a2e20962d3"
+ hash: "687e69083430812cd42eff708229a176"
}
Key {
type: 7
@@ -750,7 +750,7 @@ VisualTest {
}
Frame {
msec: 1776
- hash: "acf73c003e786ca1756f43a2e20962d3"
+ hash: "687e69083430812cd42eff708229a176"
}
Key {
type: 6
@@ -762,11 +762,11 @@ VisualTest {
}
Frame {
msec: 1792
- hash: "715cce5efb512e76e65b6dd53de988c6"
+ hash: "f33cd379acd2785298aa74f78e22bdfb"
}
Frame {
msec: 1808
- hash: "715cce5efb512e76e65b6dd53de988c6"
+ hash: "f33cd379acd2785298aa74f78e22bdfb"
}
Key {
type: 7
@@ -778,19 +778,19 @@ VisualTest {
}
Frame {
msec: 1824
- hash: "715cce5efb512e76e65b6dd53de988c6"
+ hash: "f33cd379acd2785298aa74f78e22bdfb"
}
Frame {
msec: 1840
- hash: "715cce5efb512e76e65b6dd53de988c6"
+ hash: "f33cd379acd2785298aa74f78e22bdfb"
}
Frame {
msec: 1856
- hash: "715cce5efb512e76e65b6dd53de988c6"
+ hash: "f33cd379acd2785298aa74f78e22bdfb"
}
Frame {
msec: 1872
- hash: "715cce5efb512e76e65b6dd53de988c6"
+ hash: "f33cd379acd2785298aa74f78e22bdfb"
}
Key {
type: 7
@@ -802,11 +802,11 @@ VisualTest {
}
Frame {
msec: 1888
- hash: "715cce5efb512e76e65b6dd53de988c6"
+ hash: "f33cd379acd2785298aa74f78e22bdfb"
}
Frame {
msec: 1904
- hash: "715cce5efb512e76e65b6dd53de988c6"
+ hash: "f33cd379acd2785298aa74f78e22bdfb"
}
Frame {
msec: 1920
@@ -814,11 +814,11 @@ VisualTest {
}
Frame {
msec: 1936
- hash: "715cce5efb512e76e65b6dd53de988c6"
+ hash: "f33cd379acd2785298aa74f78e22bdfb"
}
Frame {
msec: 1952
- hash: "715cce5efb512e76e65b6dd53de988c6"
+ hash: "f33cd379acd2785298aa74f78e22bdfb"
}
Key {
type: 6
@@ -830,27 +830,27 @@ VisualTest {
}
Frame {
msec: 1968
- hash: "eb9217410ea88877b037c9f8d38413ab"
+ hash: "205e79eb4a7e515ffa5bd24677408e79"
}
Frame {
msec: 1984
- hash: "eb9217410ea88877b037c9f8d38413ab"
+ hash: "205e79eb4a7e515ffa5bd24677408e79"
}
Frame {
msec: 2000
- hash: "eb9217410ea88877b037c9f8d38413ab"
+ hash: "205e79eb4a7e515ffa5bd24677408e79"
}
Frame {
msec: 2016
- hash: "eb9217410ea88877b037c9f8d38413ab"
+ hash: "205e79eb4a7e515ffa5bd24677408e79"
}
Frame {
msec: 2032
- hash: "eb9217410ea88877b037c9f8d38413ab"
+ hash: "205e79eb4a7e515ffa5bd24677408e79"
}
Frame {
msec: 2048
- hash: "eb9217410ea88877b037c9f8d38413ab"
+ hash: "205e79eb4a7e515ffa5bd24677408e79"
}
Key {
type: 6
@@ -862,7 +862,7 @@ VisualTest {
}
Frame {
msec: 2064
- hash: "d4b86b88d417e168139671f762a129a9"
+ hash: "2c1570a63d3eff7346c58356610a2f44"
}
Key {
type: 7
@@ -874,15 +874,15 @@ VisualTest {
}
Frame {
msec: 2080
- hash: "d4b86b88d417e168139671f762a129a9"
+ hash: "2c1570a63d3eff7346c58356610a2f44"
}
Frame {
msec: 2096
- hash: "d4b86b88d417e168139671f762a129a9"
+ hash: "2c1570a63d3eff7346c58356610a2f44"
}
Frame {
msec: 2112
- hash: "d4b86b88d417e168139671f762a129a9"
+ hash: "2c1570a63d3eff7346c58356610a2f44"
}
Key {
type: 7
@@ -894,27 +894,27 @@ VisualTest {
}
Frame {
msec: 2128
- hash: "d4b86b88d417e168139671f762a129a9"
+ hash: "2c1570a63d3eff7346c58356610a2f44"
}
Frame {
msec: 2144
- hash: "d4b86b88d417e168139671f762a129a9"
+ hash: "2c1570a63d3eff7346c58356610a2f44"
}
Frame {
msec: 2160
- hash: "d4b86b88d417e168139671f762a129a9"
+ hash: "2c1570a63d3eff7346c58356610a2f44"
}
Frame {
msec: 2176
- hash: "d4b86b88d417e168139671f762a129a9"
+ hash: "2c1570a63d3eff7346c58356610a2f44"
}
Frame {
msec: 2192
- hash: "d4b86b88d417e168139671f762a129a9"
+ hash: "2c1570a63d3eff7346c58356610a2f44"
}
Frame {
msec: 2208
- hash: "d4b86b88d417e168139671f762a129a9"
+ hash: "2c1570a63d3eff7346c58356610a2f44"
}
Key {
type: 6
@@ -926,23 +926,23 @@ VisualTest {
}
Frame {
msec: 2224
- hash: "bce77452be7f54a1f42685acb79ca5a3"
+ hash: "8202436b4e184adc69cdf7dd735afe33"
}
Frame {
msec: 2240
- hash: "bce77452be7f54a1f42685acb79ca5a3"
+ hash: "8202436b4e184adc69cdf7dd735afe33"
}
Frame {
msec: 2256
- hash: "bce77452be7f54a1f42685acb79ca5a3"
+ hash: "8202436b4e184adc69cdf7dd735afe33"
}
Frame {
msec: 2272
- hash: "bce77452be7f54a1f42685acb79ca5a3"
+ hash: "8202436b4e184adc69cdf7dd735afe33"
}
Frame {
msec: 2288
- hash: "bce77452be7f54a1f42685acb79ca5a3"
+ hash: "8202436b4e184adc69cdf7dd735afe33"
}
Key {
type: 6
@@ -954,7 +954,7 @@ VisualTest {
}
Frame {
msec: 2304
- hash: "c8040808e2d582a32d447eb885b6a72d"
+ hash: "855069b52f6714d54f4005751b8e2930"
}
Key {
type: 7
@@ -966,15 +966,15 @@ VisualTest {
}
Frame {
msec: 2320
- hash: "c8040808e2d582a32d447eb885b6a72d"
+ hash: "855069b52f6714d54f4005751b8e2930"
}
Frame {
msec: 2336
- hash: "c8040808e2d582a32d447eb885b6a72d"
+ hash: "855069b52f6714d54f4005751b8e2930"
}
Frame {
msec: 2352
- hash: "c8040808e2d582a32d447eb885b6a72d"
+ hash: "855069b52f6714d54f4005751b8e2930"
}
Key {
type: 6
@@ -986,11 +986,11 @@ VisualTest {
}
Frame {
msec: 2368
- hash: "5beb32a23637b51f1c9b117e93b2c1d0"
+ hash: "6e1a97a3e491f24e34d4b24bf3091afc"
}
Frame {
msec: 2384
- hash: "5beb32a23637b51f1c9b117e93b2c1d0"
+ hash: "6e1a97a3e491f24e34d4b24bf3091afc"
}
Key {
type: 7
@@ -1002,15 +1002,15 @@ VisualTest {
}
Frame {
msec: 2400
- hash: "5beb32a23637b51f1c9b117e93b2c1d0"
+ hash: "6e1a97a3e491f24e34d4b24bf3091afc"
}
Frame {
msec: 2416
- hash: "5beb32a23637b51f1c9b117e93b2c1d0"
+ hash: "6e1a97a3e491f24e34d4b24bf3091afc"
}
Frame {
msec: 2432
- hash: "5beb32a23637b51f1c9b117e93b2c1d0"
+ hash: "6e1a97a3e491f24e34d4b24bf3091afc"
}
Key {
type: 7
@@ -1022,15 +1022,15 @@ VisualTest {
}
Frame {
msec: 2448
- hash: "5beb32a23637b51f1c9b117e93b2c1d0"
+ hash: "6e1a97a3e491f24e34d4b24bf3091afc"
}
Frame {
msec: 2464
- hash: "e1020b6bb8ca2e9f0ce93f9047695f48"
+ hash: "6e1a97a3e491f24e34d4b24bf3091afc"
}
Frame {
msec: 2480
- hash: "e1020b6bb8ca2e9f0ce93f9047695f48"
+ hash: "6e1a97a3e491f24e34d4b24bf3091afc"
}
Key {
type: 6
@@ -1042,19 +1042,19 @@ VisualTest {
}
Frame {
msec: 2496
- hash: "429296196c5ebf0094d5e76379f929c5"
+ hash: "12eb5152181e0bff993dc1be087969f9"
}
Frame {
msec: 2512
- hash: "429296196c5ebf0094d5e76379f929c5"
+ hash: "12eb5152181e0bff993dc1be087969f9"
}
Frame {
msec: 2528
- hash: "429296196c5ebf0094d5e76379f929c5"
+ hash: "12eb5152181e0bff993dc1be087969f9"
}
Frame {
msec: 2544
- hash: "429296196c5ebf0094d5e76379f929c5"
+ hash: "12eb5152181e0bff993dc1be087969f9"
}
Key {
type: 7
@@ -1066,27 +1066,27 @@ VisualTest {
}
Frame {
msec: 2560
- hash: "429296196c5ebf0094d5e76379f929c5"
+ hash: "12eb5152181e0bff993dc1be087969f9"
}
Frame {
msec: 2576
- hash: "429296196c5ebf0094d5e76379f929c5"
+ hash: "12eb5152181e0bff993dc1be087969f9"
}
Frame {
msec: 2592
- hash: "429296196c5ebf0094d5e76379f929c5"
+ hash: "12eb5152181e0bff993dc1be087969f9"
}
Frame {
msec: 2608
- hash: "429296196c5ebf0094d5e76379f929c5"
+ hash: "12eb5152181e0bff993dc1be087969f9"
}
Frame {
msec: 2624
- hash: "429296196c5ebf0094d5e76379f929c5"
+ hash: "12eb5152181e0bff993dc1be087969f9"
}
Frame {
msec: 2640
- hash: "429296196c5ebf0094d5e76379f929c5"
+ hash: "12eb5152181e0bff993dc1be087969f9"
}
Key {
type: 6
@@ -1098,19 +1098,19 @@ VisualTest {
}
Frame {
msec: 2656
- hash: "83a910a91a9c1ca60e8f021b7a96509e"
+ hash: "8a77655cae6c04453e6dc8a2321d1a32"
}
Frame {
msec: 2672
- hash: "83a910a91a9c1ca60e8f021b7a96509e"
+ hash: "8a77655cae6c04453e6dc8a2321d1a32"
}
Frame {
msec: 2688
- hash: "83a910a91a9c1ca60e8f021b7a96509e"
+ hash: "8a77655cae6c04453e6dc8a2321d1a32"
}
Frame {
msec: 2704
- hash: "83a910a91a9c1ca60e8f021b7a96509e"
+ hash: "8a77655cae6c04453e6dc8a2321d1a32"
}
Key {
type: 7
@@ -1122,15 +1122,15 @@ VisualTest {
}
Frame {
msec: 2720
- hash: "83a910a91a9c1ca60e8f021b7a96509e"
+ hash: "8a77655cae6c04453e6dc8a2321d1a32"
}
Frame {
msec: 2736
- hash: "83a910a91a9c1ca60e8f021b7a96509e"
+ hash: "8a77655cae6c04453e6dc8a2321d1a32"
}
Frame {
msec: 2752
- hash: "83a910a91a9c1ca60e8f021b7a96509e"
+ hash: "8a77655cae6c04453e6dc8a2321d1a32"
}
Key {
type: 6
@@ -1142,23 +1142,23 @@ VisualTest {
}
Frame {
msec: 2768
- hash: "4a2af150d069abfff098673375469b08"
+ hash: "c42349fe4b75e5d56a04ec6462cb0780"
}
Frame {
msec: 2784
- hash: "4a2af150d069abfff098673375469b08"
+ hash: "c42349fe4b75e5d56a04ec6462cb0780"
}
Frame {
msec: 2800
- hash: "4a2af150d069abfff098673375469b08"
+ hash: "c42349fe4b75e5d56a04ec6462cb0780"
}
Frame {
msec: 2816
- hash: "4a2af150d069abfff098673375469b08"
+ hash: "c42349fe4b75e5d56a04ec6462cb0780"
}
Frame {
msec: 2832
- hash: "4a2af150d069abfff098673375469b08"
+ hash: "c42349fe4b75e5d56a04ec6462cb0780"
}
Key {
type: 6
@@ -1178,11 +1178,11 @@ VisualTest {
}
Frame {
msec: 2848
- hash: "f1909371c6f44fb7547916340d043ac7"
+ hash: "973c163b1ea4e6189e788b7f37013185"
}
Frame {
msec: 2864
- hash: "f1909371c6f44fb7547916340d043ac7"
+ hash: "973c163b1ea4e6189e788b7f37013185"
}
Frame {
msec: 2880
@@ -1190,7 +1190,7 @@ VisualTest {
}
Frame {
msec: 2896
- hash: "f1909371c6f44fb7547916340d043ac7"
+ hash: "973c163b1ea4e6189e788b7f37013185"
}
Key {
type: 6
@@ -1202,11 +1202,11 @@ VisualTest {
}
Frame {
msec: 2912
- hash: "35fecf3c5feda6afbd4eac5935dca7af"
+ hash: "a847abc1ef9a41a741f8dce6bc68e6a1"
}
Frame {
msec: 2928
- hash: "35fecf3c5feda6afbd4eac5935dca7af"
+ hash: "a847abc1ef9a41a741f8dce6bc68e6a1"
}
Key {
type: 7
@@ -1218,11 +1218,11 @@ VisualTest {
}
Frame {
msec: 2944
- hash: "35fecf3c5feda6afbd4eac5935dca7af"
+ hash: "a847abc1ef9a41a741f8dce6bc68e6a1"
}
Frame {
msec: 2960
- hash: "d8e23c87332aed5105cb6d488efd4a63"
+ hash: "a847abc1ef9a41a741f8dce6bc68e6a1"
}
Key {
type: 7
@@ -1234,35 +1234,35 @@ VisualTest {
}
Frame {
msec: 2976
- hash: "d8e23c87332aed5105cb6d488efd4a63"
+ hash: "a847abc1ef9a41a741f8dce6bc68e6a1"
}
Frame {
msec: 2992
- hash: "d8e23c87332aed5105cb6d488efd4a63"
+ hash: "a847abc1ef9a41a741f8dce6bc68e6a1"
}
Frame {
msec: 3008
- hash: "d8e23c87332aed5105cb6d488efd4a63"
+ hash: "a847abc1ef9a41a741f8dce6bc68e6a1"
}
Frame {
msec: 3024
- hash: "d8e23c87332aed5105cb6d488efd4a63"
+ hash: "a847abc1ef9a41a741f8dce6bc68e6a1"
}
Frame {
msec: 3040
- hash: "d8e23c87332aed5105cb6d488efd4a63"
+ hash: "a847abc1ef9a41a741f8dce6bc68e6a1"
}
Frame {
msec: 3056
- hash: "d8e23c87332aed5105cb6d488efd4a63"
+ hash: "a847abc1ef9a41a741f8dce6bc68e6a1"
}
Frame {
msec: 3072
- hash: "d8e23c87332aed5105cb6d488efd4a63"
+ hash: "a847abc1ef9a41a741f8dce6bc68e6a1"
}
Frame {
msec: 3088
- hash: "d8e23c87332aed5105cb6d488efd4a63"
+ hash: "a847abc1ef9a41a741f8dce6bc68e6a1"
}
Key {
type: 6
@@ -1274,23 +1274,23 @@ VisualTest {
}
Frame {
msec: 3104
- hash: "6c3f38c1180f392082e3879e35a23c5e"
+ hash: "93d3b56a5070a84164169ab1869d6ed0"
}
Frame {
msec: 3120
- hash: "6c3f38c1180f392082e3879e35a23c5e"
+ hash: "93d3b56a5070a84164169ab1869d6ed0"
}
Frame {
msec: 3136
- hash: "6c3f38c1180f392082e3879e35a23c5e"
+ hash: "93d3b56a5070a84164169ab1869d6ed0"
}
Frame {
msec: 3152
- hash: "6c3f38c1180f392082e3879e35a23c5e"
+ hash: "93d3b56a5070a84164169ab1869d6ed0"
}
Frame {
msec: 3168
- hash: "6c3f38c1180f392082e3879e35a23c5e"
+ hash: "93d3b56a5070a84164169ab1869d6ed0"
}
Key {
type: 7
@@ -1302,23 +1302,23 @@ VisualTest {
}
Frame {
msec: 3184
- hash: "6c3f38c1180f392082e3879e35a23c5e"
+ hash: "93d3b56a5070a84164169ab1869d6ed0"
}
Frame {
msec: 3200
- hash: "6c3f38c1180f392082e3879e35a23c5e"
+ hash: "93d3b56a5070a84164169ab1869d6ed0"
}
Frame {
msec: 3216
- hash: "6c3f38c1180f392082e3879e35a23c5e"
+ hash: "93d3b56a5070a84164169ab1869d6ed0"
}
Frame {
msec: 3232
- hash: "6c3f38c1180f392082e3879e35a23c5e"
+ hash: "93d3b56a5070a84164169ab1869d6ed0"
}
Frame {
msec: 3248
- hash: "6c3f38c1180f392082e3879e35a23c5e"
+ hash: "93d3b56a5070a84164169ab1869d6ed0"
}
Key {
type: 6
@@ -1330,15 +1330,15 @@ VisualTest {
}
Frame {
msec: 3264
- hash: "54bbf6e8fbfc6e2a3e4f0886f1feade3"
+ hash: "60480b61f29a34c790da8fe1bfd98755"
}
Frame {
msec: 3280
- hash: "54bbf6e8fbfc6e2a3e4f0886f1feade3"
+ hash: "60480b61f29a34c790da8fe1bfd98755"
}
Frame {
msec: 3296
- hash: "54bbf6e8fbfc6e2a3e4f0886f1feade3"
+ hash: "60480b61f29a34c790da8fe1bfd98755"
}
Key {
type: 7
@@ -1350,15 +1350,15 @@ VisualTest {
}
Frame {
msec: 3312
- hash: "54bbf6e8fbfc6e2a3e4f0886f1feade3"
+ hash: "60480b61f29a34c790da8fe1bfd98755"
}
Frame {
msec: 3328
- hash: "54bbf6e8fbfc6e2a3e4f0886f1feade3"
+ hash: "60480b61f29a34c790da8fe1bfd98755"
}
Frame {
msec: 3344
- hash: "54bbf6e8fbfc6e2a3e4f0886f1feade3"
+ hash: "60480b61f29a34c790da8fe1bfd98755"
}
Key {
type: 6
@@ -1370,23 +1370,23 @@ VisualTest {
}
Frame {
msec: 3360
- hash: "0e7fcbbe36c374e9436e5ecccd8663ee"
+ hash: "c6f235590c03170581dfabc07bf9c20b"
}
Frame {
msec: 3376
- hash: "0e7fcbbe36c374e9436e5ecccd8663ee"
+ hash: "c6f235590c03170581dfabc07bf9c20b"
}
Frame {
msec: 3392
- hash: "0e7fcbbe36c374e9436e5ecccd8663ee"
+ hash: "c6f235590c03170581dfabc07bf9c20b"
}
Frame {
msec: 3408
- hash: "0e7fcbbe36c374e9436e5ecccd8663ee"
+ hash: "c6f235590c03170581dfabc07bf9c20b"
}
Frame {
msec: 3424
- hash: "0e7fcbbe36c374e9436e5ecccd8663ee"
+ hash: "c6f235590c03170581dfabc07bf9c20b"
}
Key {
type: 7
@@ -1398,15 +1398,15 @@ VisualTest {
}
Frame {
msec: 3440
- hash: "0e7fcbbe36c374e9436e5ecccd8663ee"
+ hash: "c6f235590c03170581dfabc07bf9c20b"
}
Frame {
msec: 3456
- hash: "4928b737a83471181066d043b51e939f"
+ hash: "c6f235590c03170581dfabc07bf9c20b"
}
Frame {
msec: 3472
- hash: "4928b737a83471181066d043b51e939f"
+ hash: "c6f235590c03170581dfabc07bf9c20b"
}
Key {
type: 6
@@ -1418,19 +1418,19 @@ VisualTest {
}
Frame {
msec: 3488
- hash: "541901e223b7129edcbd2264da7e13cd"
+ hash: "10a29af771a5c17b1443b10abd45c9aa"
}
Frame {
msec: 3504
- hash: "541901e223b7129edcbd2264da7e13cd"
+ hash: "10a29af771a5c17b1443b10abd45c9aa"
}
Frame {
msec: 3520
- hash: "541901e223b7129edcbd2264da7e13cd"
+ hash: "10a29af771a5c17b1443b10abd45c9aa"
}
Frame {
msec: 3536
- hash: "541901e223b7129edcbd2264da7e13cd"
+ hash: "10a29af771a5c17b1443b10abd45c9aa"
}
Key {
type: 7
@@ -1442,11 +1442,11 @@ VisualTest {
}
Frame {
msec: 3552
- hash: "541901e223b7129edcbd2264da7e13cd"
+ hash: "10a29af771a5c17b1443b10abd45c9aa"
}
Frame {
msec: 3568
- hash: "541901e223b7129edcbd2264da7e13cd"
+ hash: "10a29af771a5c17b1443b10abd45c9aa"
}
Key {
type: 6
@@ -1458,27 +1458,27 @@ VisualTest {
}
Frame {
msec: 3584
- hash: "86aa5d4fdc4f92c2810ccb3d5e990e22"
+ hash: "68449dbef331f4bdf4c4bc443ec98e89"
}
Frame {
msec: 3600
- hash: "86aa5d4fdc4f92c2810ccb3d5e990e22"
+ hash: "68449dbef331f4bdf4c4bc443ec98e89"
}
Frame {
msec: 3616
- hash: "86aa5d4fdc4f92c2810ccb3d5e990e22"
+ hash: "68449dbef331f4bdf4c4bc443ec98e89"
}
Frame {
msec: 3632
- hash: "86aa5d4fdc4f92c2810ccb3d5e990e22"
+ hash: "68449dbef331f4bdf4c4bc443ec98e89"
}
Frame {
msec: 3648
- hash: "86aa5d4fdc4f92c2810ccb3d5e990e22"
+ hash: "68449dbef331f4bdf4c4bc443ec98e89"
}
Frame {
msec: 3664
- hash: "86aa5d4fdc4f92c2810ccb3d5e990e22"
+ hash: "68449dbef331f4bdf4c4bc443ec98e89"
}
Key {
type: 6
@@ -1490,7 +1490,7 @@ VisualTest {
}
Frame {
msec: 3680
- hash: "af1a78eca66ce7523306aaf324a59af6"
+ hash: "5c773045e3ccab933749a3f6a74dc25a"
}
Key {
type: 7
@@ -1502,23 +1502,23 @@ VisualTest {
}
Frame {
msec: 3696
- hash: "af1a78eca66ce7523306aaf324a59af6"
+ hash: "5c773045e3ccab933749a3f6a74dc25a"
}
Frame {
msec: 3712
- hash: "af1a78eca66ce7523306aaf324a59af6"
+ hash: "5c773045e3ccab933749a3f6a74dc25a"
}
Frame {
msec: 3728
- hash: "af1a78eca66ce7523306aaf324a59af6"
+ hash: "5c773045e3ccab933749a3f6a74dc25a"
}
Frame {
msec: 3744
- hash: "af1a78eca66ce7523306aaf324a59af6"
+ hash: "5c773045e3ccab933749a3f6a74dc25a"
}
Frame {
msec: 3760
- hash: "af1a78eca66ce7523306aaf324a59af6"
+ hash: "5c773045e3ccab933749a3f6a74dc25a"
}
Key {
type: 7
@@ -1530,19 +1530,19 @@ VisualTest {
}
Frame {
msec: 3776
- hash: "af1a78eca66ce7523306aaf324a59af6"
+ hash: "5c773045e3ccab933749a3f6a74dc25a"
}
Frame {
msec: 3792
- hash: "af1a78eca66ce7523306aaf324a59af6"
+ hash: "5c773045e3ccab933749a3f6a74dc25a"
}
Frame {
msec: 3808
- hash: "af1a78eca66ce7523306aaf324a59af6"
+ hash: "5c773045e3ccab933749a3f6a74dc25a"
}
Frame {
msec: 3824
- hash: "af1a78eca66ce7523306aaf324a59af6"
+ hash: "5c773045e3ccab933749a3f6a74dc25a"
}
Frame {
msec: 3840
@@ -1550,19 +1550,19 @@ VisualTest {
}
Frame {
msec: 3856
- hash: "af1a78eca66ce7523306aaf324a59af6"
+ hash: "5c773045e3ccab933749a3f6a74dc25a"
}
Frame {
msec: 3872
- hash: "af1a78eca66ce7523306aaf324a59af6"
+ hash: "5c773045e3ccab933749a3f6a74dc25a"
}
Frame {
msec: 3888
- hash: "af1a78eca66ce7523306aaf324a59af6"
+ hash: "5c773045e3ccab933749a3f6a74dc25a"
}
Frame {
msec: 3904
- hash: "af1a78eca66ce7523306aaf324a59af6"
+ hash: "5c773045e3ccab933749a3f6a74dc25a"
}
Key {
type: 6
@@ -1574,23 +1574,23 @@ VisualTest {
}
Frame {
msec: 3920
- hash: "c72ed9cecd1144b7e937c2c3c33ab0b8"
+ hash: "f1ef12790a0548cfaa4176680566680d"
}
Frame {
msec: 3936
- hash: "c72ed9cecd1144b7e937c2c3c33ab0b8"
+ hash: "f1ef12790a0548cfaa4176680566680d"
}
Frame {
msec: 3952
- hash: "c72ed9cecd1144b7e937c2c3c33ab0b8"
+ hash: "f1ef12790a0548cfaa4176680566680d"
}
Frame {
msec: 3968
- hash: "e00d1a6f1ceb15493e87151071d8ad3f"
+ hash: "f1ef12790a0548cfaa4176680566680d"
}
Frame {
msec: 3984
- hash: "e00d1a6f1ceb15493e87151071d8ad3f"
+ hash: "f1ef12790a0548cfaa4176680566680d"
}
Key {
type: 7
@@ -1602,11 +1602,11 @@ VisualTest {
}
Frame {
msec: 4000
- hash: "e00d1a6f1ceb15493e87151071d8ad3f"
+ hash: "f1ef12790a0548cfaa4176680566680d"
}
Frame {
msec: 4016
- hash: "e00d1a6f1ceb15493e87151071d8ad3f"
+ hash: "f1ef12790a0548cfaa4176680566680d"
}
Key {
type: 6
@@ -1618,15 +1618,15 @@ VisualTest {
}
Frame {
msec: 4032
- hash: "9b129865b81189be8c2e59178c009cd9"
+ hash: "22575a03b4c58e4391845d495c2ca48b"
}
Frame {
msec: 4048
- hash: "9b129865b81189be8c2e59178c009cd9"
+ hash: "22575a03b4c58e4391845d495c2ca48b"
}
Frame {
msec: 4064
- hash: "9b129865b81189be8c2e59178c009cd9"
+ hash: "22575a03b4c58e4391845d495c2ca48b"
}
Key {
type: 7
@@ -1638,7 +1638,7 @@ VisualTest {
}
Frame {
msec: 4080
- hash: "9b129865b81189be8c2e59178c009cd9"
+ hash: "22575a03b4c58e4391845d495c2ca48b"
}
Key {
type: 6
@@ -1650,19 +1650,19 @@ VisualTest {
}
Frame {
msec: 4096
- hash: "ccbc7a847315311d9661b7c3fc6057d6"
+ hash: "3243dc4562f073136782415365b7b42d"
}
Frame {
msec: 4112
- hash: "ccbc7a847315311d9661b7c3fc6057d6"
+ hash: "3243dc4562f073136782415365b7b42d"
}
Frame {
msec: 4128
- hash: "ccbc7a847315311d9661b7c3fc6057d6"
+ hash: "3243dc4562f073136782415365b7b42d"
}
Frame {
msec: 4144
- hash: "ccbc7a847315311d9661b7c3fc6057d6"
+ hash: "3243dc4562f073136782415365b7b42d"
}
Key {
type: 7
@@ -1674,15 +1674,15 @@ VisualTest {
}
Frame {
msec: 4160
- hash: "ccbc7a847315311d9661b7c3fc6057d6"
+ hash: "3243dc4562f073136782415365b7b42d"
}
Frame {
msec: 4176
- hash: "ccbc7a847315311d9661b7c3fc6057d6"
+ hash: "3243dc4562f073136782415365b7b42d"
}
Frame {
msec: 4192
- hash: "ccbc7a847315311d9661b7c3fc6057d6"
+ hash: "3243dc4562f073136782415365b7b42d"
}
Key {
type: 6
@@ -1694,23 +1694,23 @@ VisualTest {
}
Frame {
msec: 4208
- hash: "3532604c4d8bb23fc8fd44a153708f23"
+ hash: "44cd04d2a2bf12654cb96ec9af92b9aa"
}
Frame {
msec: 4224
- hash: "3532604c4d8bb23fc8fd44a153708f23"
+ hash: "44cd04d2a2bf12654cb96ec9af92b9aa"
}
Frame {
msec: 4240
- hash: "3532604c4d8bb23fc8fd44a153708f23"
+ hash: "44cd04d2a2bf12654cb96ec9af92b9aa"
}
Frame {
msec: 4256
- hash: "3532604c4d8bb23fc8fd44a153708f23"
+ hash: "44cd04d2a2bf12654cb96ec9af92b9aa"
}
Frame {
msec: 4272
- hash: "3532604c4d8bb23fc8fd44a153708f23"
+ hash: "44cd04d2a2bf12654cb96ec9af92b9aa"
}
Key {
type: 6
@@ -1722,7 +1722,7 @@ VisualTest {
}
Frame {
msec: 4288
- hash: "7a951d7233a41e872aa8f8784edc1bff"
+ hash: "cf1eb35cb9a793769303abee0a2fcad8"
}
Key {
type: 7
@@ -1734,15 +1734,15 @@ VisualTest {
}
Frame {
msec: 4304
- hash: "7a951d7233a41e872aa8f8784edc1bff"
+ hash: "cf1eb35cb9a793769303abee0a2fcad8"
}
Frame {
msec: 4320
- hash: "7a951d7233a41e872aa8f8784edc1bff"
+ hash: "cf1eb35cb9a793769303abee0a2fcad8"
}
Frame {
msec: 4336
- hash: "7a951d7233a41e872aa8f8784edc1bff"
+ hash: "cf1eb35cb9a793769303abee0a2fcad8"
}
Key {
type: 7
@@ -1754,23 +1754,23 @@ VisualTest {
}
Frame {
msec: 4352
- hash: "7a951d7233a41e872aa8f8784edc1bff"
+ hash: "cf1eb35cb9a793769303abee0a2fcad8"
}
Frame {
msec: 4368
- hash: "7a951d7233a41e872aa8f8784edc1bff"
+ hash: "cf1eb35cb9a793769303abee0a2fcad8"
}
Frame {
msec: 4384
- hash: "7a951d7233a41e872aa8f8784edc1bff"
+ hash: "cf1eb35cb9a793769303abee0a2fcad8"
}
Frame {
msec: 4400
- hash: "7a951d7233a41e872aa8f8784edc1bff"
+ hash: "cf1eb35cb9a793769303abee0a2fcad8"
}
Frame {
msec: 4416
- hash: "7a951d7233a41e872aa8f8784edc1bff"
+ hash: "cf1eb35cb9a793769303abee0a2fcad8"
}
Key {
type: 6
@@ -1782,15 +1782,15 @@ VisualTest {
}
Frame {
msec: 4432
- hash: "41683813bcdc1761003a9bece7752516"
+ hash: "252838a495502ba5b836ffd1b20711f4"
}
Frame {
msec: 4448
- hash: "41683813bcdc1761003a9bece7752516"
+ hash: "252838a495502ba5b836ffd1b20711f4"
}
Frame {
msec: 4464
- hash: "be52b6b350696bb8e883bd24750cce06"
+ hash: "252838a495502ba5b836ffd1b20711f4"
}
Key {
type: 7
@@ -1802,23 +1802,23 @@ VisualTest {
}
Frame {
msec: 4480
- hash: "be52b6b350696bb8e883bd24750cce06"
+ hash: "252838a495502ba5b836ffd1b20711f4"
}
Frame {
msec: 4496
- hash: "be52b6b350696bb8e883bd24750cce06"
+ hash: "252838a495502ba5b836ffd1b20711f4"
}
Frame {
msec: 4512
- hash: "be52b6b350696bb8e883bd24750cce06"
+ hash: "252838a495502ba5b836ffd1b20711f4"
}
Frame {
msec: 4528
- hash: "be52b6b350696bb8e883bd24750cce06"
+ hash: "252838a495502ba5b836ffd1b20711f4"
}
Frame {
msec: 4544
- hash: "be52b6b350696bb8e883bd24750cce06"
+ hash: "252838a495502ba5b836ffd1b20711f4"
}
Key {
type: 6
@@ -1830,19 +1830,19 @@ VisualTest {
}
Frame {
msec: 4560
- hash: "f4845e51dfb18617fe31471b0cb3bf16"
+ hash: "4010bb0f50630f067974e6ddb3177693"
}
Frame {
msec: 4576
- hash: "f4845e51dfb18617fe31471b0cb3bf16"
+ hash: "4010bb0f50630f067974e6ddb3177693"
}
Frame {
msec: 4592
- hash: "f4845e51dfb18617fe31471b0cb3bf16"
+ hash: "4010bb0f50630f067974e6ddb3177693"
}
Frame {
msec: 4608
- hash: "f4845e51dfb18617fe31471b0cb3bf16"
+ hash: "4010bb0f50630f067974e6ddb3177693"
}
Key {
type: 7
@@ -1854,19 +1854,19 @@ VisualTest {
}
Frame {
msec: 4624
- hash: "f4845e51dfb18617fe31471b0cb3bf16"
+ hash: "4010bb0f50630f067974e6ddb3177693"
}
Frame {
msec: 4640
- hash: "f4845e51dfb18617fe31471b0cb3bf16"
+ hash: "4010bb0f50630f067974e6ddb3177693"
}
Frame {
msec: 4656
- hash: "f4845e51dfb18617fe31471b0cb3bf16"
+ hash: "4010bb0f50630f067974e6ddb3177693"
}
Frame {
msec: 4672
- hash: "f4845e51dfb18617fe31471b0cb3bf16"
+ hash: "4010bb0f50630f067974e6ddb3177693"
}
Key {
type: 6
@@ -1878,19 +1878,19 @@ VisualTest {
}
Frame {
msec: 4688
- hash: "4e994f63cd763db43435fd39e864585c"
+ hash: "14dc6ee8cd3b4747650f2a458b42a6e3"
}
Frame {
msec: 4704
- hash: "4e994f63cd763db43435fd39e864585c"
+ hash: "14dc6ee8cd3b4747650f2a458b42a6e3"
}
Frame {
msec: 4720
- hash: "4e994f63cd763db43435fd39e864585c"
+ hash: "14dc6ee8cd3b4747650f2a458b42a6e3"
}
Frame {
msec: 4736
- hash: "4e994f63cd763db43435fd39e864585c"
+ hash: "14dc6ee8cd3b4747650f2a458b42a6e3"
}
Key {
type: 7
@@ -1902,15 +1902,15 @@ VisualTest {
}
Frame {
msec: 4752
- hash: "4e994f63cd763db43435fd39e864585c"
+ hash: "14dc6ee8cd3b4747650f2a458b42a6e3"
}
Frame {
msec: 4768
- hash: "4e994f63cd763db43435fd39e864585c"
+ hash: "14dc6ee8cd3b4747650f2a458b42a6e3"
}
Frame {
msec: 4784
- hash: "4e994f63cd763db43435fd39e864585c"
+ hash: "14dc6ee8cd3b4747650f2a458b42a6e3"
}
Key {
type: 6
@@ -1926,7 +1926,7 @@ VisualTest {
}
Frame {
msec: 4816
- hash: "2b5db83aff14077f625dbfc75830b2b0"
+ hash: "7d4a56854715772c92706522d2dcac56"
}
Key {
type: 7
@@ -1938,19 +1938,19 @@ VisualTest {
}
Frame {
msec: 4832
- hash: "2b5db83aff14077f625dbfc75830b2b0"
+ hash: "7d4a56854715772c92706522d2dcac56"
}
Frame {
msec: 4848
- hash: "2b5db83aff14077f625dbfc75830b2b0"
+ hash: "7d4a56854715772c92706522d2dcac56"
}
Frame {
msec: 4864
- hash: "2b5db83aff14077f625dbfc75830b2b0"
+ hash: "7d4a56854715772c92706522d2dcac56"
}
Frame {
msec: 4880
- hash: "2b5db83aff14077f625dbfc75830b2b0"
+ hash: "7d4a56854715772c92706522d2dcac56"
}
Key {
type: 6
@@ -1962,19 +1962,19 @@ VisualTest {
}
Frame {
msec: 4896
- hash: "566cba616a99c92c228a4c312466b96b"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 4912
- hash: "566cba616a99c92c228a4c312466b96b"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 4928
- hash: "566cba616a99c92c228a4c312466b96b"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 4944
- hash: "566cba616a99c92c228a4c312466b96b"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Key {
type: 7
@@ -1986,203 +1986,203 @@ VisualTest {
}
Frame {
msec: 4960
- hash: "f902766808596ea423cbc0b7e9bdd87a"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 4976
- hash: "f902766808596ea423cbc0b7e9bdd87a"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 4992
- hash: "f902766808596ea423cbc0b7e9bdd87a"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 5008
- hash: "f902766808596ea423cbc0b7e9bdd87a"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 5024
- hash: "f902766808596ea423cbc0b7e9bdd87a"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 5040
- hash: "f902766808596ea423cbc0b7e9bdd87a"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 5056
- hash: "f902766808596ea423cbc0b7e9bdd87a"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 5072
- hash: "f902766808596ea423cbc0b7e9bdd87a"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 5088
- hash: "f902766808596ea423cbc0b7e9bdd87a"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 5104
- hash: "f902766808596ea423cbc0b7e9bdd87a"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 5120
- hash: "f902766808596ea423cbc0b7e9bdd87a"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 5136
- hash: "f902766808596ea423cbc0b7e9bdd87a"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 5152
- hash: "f902766808596ea423cbc0b7e9bdd87a"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 5168
- hash: "f902766808596ea423cbc0b7e9bdd87a"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 5184
- hash: "f902766808596ea423cbc0b7e9bdd87a"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 5200
- hash: "f902766808596ea423cbc0b7e9bdd87a"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 5216
- hash: "f902766808596ea423cbc0b7e9bdd87a"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 5232
- hash: "f902766808596ea423cbc0b7e9bdd87a"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 5248
- hash: "f902766808596ea423cbc0b7e9bdd87a"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 5264
- hash: "f902766808596ea423cbc0b7e9bdd87a"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 5280
- hash: "f902766808596ea423cbc0b7e9bdd87a"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 5296
- hash: "f902766808596ea423cbc0b7e9bdd87a"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 5312
- hash: "f902766808596ea423cbc0b7e9bdd87a"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 5328
- hash: "f902766808596ea423cbc0b7e9bdd87a"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 5344
- hash: "f902766808596ea423cbc0b7e9bdd87a"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 5360
- hash: "f902766808596ea423cbc0b7e9bdd87a"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 5376
- hash: "f902766808596ea423cbc0b7e9bdd87a"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 5392
- hash: "f902766808596ea423cbc0b7e9bdd87a"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 5408
- hash: "f902766808596ea423cbc0b7e9bdd87a"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 5424
- hash: "f902766808596ea423cbc0b7e9bdd87a"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 5440
- hash: "f902766808596ea423cbc0b7e9bdd87a"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 5456
- hash: "566cba616a99c92c228a4c312466b96b"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 5472
- hash: "566cba616a99c92c228a4c312466b96b"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 5488
- hash: "566cba616a99c92c228a4c312466b96b"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 5504
- hash: "566cba616a99c92c228a4c312466b96b"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 5520
- hash: "566cba616a99c92c228a4c312466b96b"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 5536
- hash: "566cba616a99c92c228a4c312466b96b"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 5552
- hash: "566cba616a99c92c228a4c312466b96b"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 5568
- hash: "566cba616a99c92c228a4c312466b96b"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 5584
- hash: "566cba616a99c92c228a4c312466b96b"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 5600
- hash: "566cba616a99c92c228a4c312466b96b"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 5616
- hash: "566cba616a99c92c228a4c312466b96b"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 5632
- hash: "566cba616a99c92c228a4c312466b96b"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 5648
- hash: "566cba616a99c92c228a4c312466b96b"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 5664
- hash: "566cba616a99c92c228a4c312466b96b"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 5680
- hash: "566cba616a99c92c228a4c312466b96b"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 5696
- hash: "566cba616a99c92c228a4c312466b96b"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 5712
- hash: "566cba616a99c92c228a4c312466b96b"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 5728
- hash: "566cba616a99c92c228a4c312466b96b"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 5744
- hash: "566cba616a99c92c228a4c312466b96b"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 5760
@@ -2190,239 +2190,239 @@ VisualTest {
}
Frame {
msec: 5776
- hash: "566cba616a99c92c228a4c312466b96b"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 5792
- hash: "566cba616a99c92c228a4c312466b96b"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 5808
- hash: "566cba616a99c92c228a4c312466b96b"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 5824
- hash: "566cba616a99c92c228a4c312466b96b"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 5840
- hash: "566cba616a99c92c228a4c312466b96b"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 5856
- hash: "566cba616a99c92c228a4c312466b96b"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 5872
- hash: "566cba616a99c92c228a4c312466b96b"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 5888
- hash: "566cba616a99c92c228a4c312466b96b"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 5904
- hash: "566cba616a99c92c228a4c312466b96b"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 5920
- hash: "566cba616a99c92c228a4c312466b96b"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 5936
- hash: "566cba616a99c92c228a4c312466b96b"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 5952
- hash: "566cba616a99c92c228a4c312466b96b"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 5968
- hash: "f902766808596ea423cbc0b7e9bdd87a"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 5984
- hash: "f902766808596ea423cbc0b7e9bdd87a"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 6000
- hash: "f902766808596ea423cbc0b7e9bdd87a"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 6016
- hash: "f902766808596ea423cbc0b7e9bdd87a"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 6032
- hash: "f902766808596ea423cbc0b7e9bdd87a"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 6048
- hash: "f902766808596ea423cbc0b7e9bdd87a"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 6064
- hash: "f902766808596ea423cbc0b7e9bdd87a"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 6080
- hash: "f902766808596ea423cbc0b7e9bdd87a"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 6096
- hash: "f902766808596ea423cbc0b7e9bdd87a"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 6112
- hash: "f902766808596ea423cbc0b7e9bdd87a"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 6128
- hash: "f902766808596ea423cbc0b7e9bdd87a"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 6144
- hash: "f902766808596ea423cbc0b7e9bdd87a"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 6160
- hash: "f902766808596ea423cbc0b7e9bdd87a"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 6176
- hash: "f902766808596ea423cbc0b7e9bdd87a"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 6192
- hash: "f902766808596ea423cbc0b7e9bdd87a"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 6208
- hash: "f902766808596ea423cbc0b7e9bdd87a"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 6224
- hash: "f902766808596ea423cbc0b7e9bdd87a"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 6240
- hash: "f902766808596ea423cbc0b7e9bdd87a"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 6256
- hash: "f902766808596ea423cbc0b7e9bdd87a"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 6272
- hash: "f902766808596ea423cbc0b7e9bdd87a"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 6288
- hash: "f902766808596ea423cbc0b7e9bdd87a"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 6304
- hash: "f902766808596ea423cbc0b7e9bdd87a"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 6320
- hash: "f902766808596ea423cbc0b7e9bdd87a"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 6336
- hash: "f902766808596ea423cbc0b7e9bdd87a"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 6352
- hash: "f902766808596ea423cbc0b7e9bdd87a"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 6368
- hash: "f902766808596ea423cbc0b7e9bdd87a"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 6384
- hash: "f902766808596ea423cbc0b7e9bdd87a"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 6400
- hash: "f902766808596ea423cbc0b7e9bdd87a"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 6416
- hash: "f902766808596ea423cbc0b7e9bdd87a"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 6432
- hash: "f902766808596ea423cbc0b7e9bdd87a"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 6448
- hash: "f902766808596ea423cbc0b7e9bdd87a"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 6464
- hash: "566cba616a99c92c228a4c312466b96b"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 6480
- hash: "566cba616a99c92c228a4c312466b96b"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 6496
- hash: "566cba616a99c92c228a4c312466b96b"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 6512
- hash: "566cba616a99c92c228a4c312466b96b"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 6528
- hash: "566cba616a99c92c228a4c312466b96b"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 6544
- hash: "566cba616a99c92c228a4c312466b96b"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 6560
- hash: "566cba616a99c92c228a4c312466b96b"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 6576
- hash: "566cba616a99c92c228a4c312466b96b"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 6592
- hash: "566cba616a99c92c228a4c312466b96b"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 6608
- hash: "566cba616a99c92c228a4c312466b96b"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 6624
- hash: "566cba616a99c92c228a4c312466b96b"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 6640
- hash: "566cba616a99c92c228a4c312466b96b"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 6656
- hash: "566cba616a99c92c228a4c312466b96b"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 6672
- hash: "566cba616a99c92c228a4c312466b96b"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 6688
- hash: "566cba616a99c92c228a4c312466b96b"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 6704
- hash: "566cba616a99c92c228a4c312466b96b"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 6720
@@ -2430,38 +2430,38 @@ VisualTest {
}
Frame {
msec: 6736
- hash: "566cba616a99c92c228a4c312466b96b"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 6752
- hash: "566cba616a99c92c228a4c312466b96b"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 6768
- hash: "566cba616a99c92c228a4c312466b96b"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 6784
- hash: "566cba616a99c92c228a4c312466b96b"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 6800
- hash: "566cba616a99c92c228a4c312466b96b"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 6816
- hash: "566cba616a99c92c228a4c312466b96b"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 6832
- hash: "566cba616a99c92c228a4c312466b96b"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 6848
- hash: "566cba616a99c92c228a4c312466b96b"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
Frame {
msec: 6864
- hash: "566cba616a99c92c228a4c312466b96b"
+ hash: "0c75eb65cf70c883ee4dcd2f7ee092ce"
}
}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.10.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.10.png
index 9c72d52..ae21dca 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.10.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.10.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.11.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.11.png
index 9c72d52..ae21dca 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.11.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.11.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.8.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.8.png
index d49c2ff..5f329b6 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.8.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.8.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.9.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.9.png
index 9c72d52..ae21dca 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.9.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.9.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.qml
index c12094e..5a1f8de 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.qml
@@ -2218,7 +2218,7 @@ VisualTest {
}
Frame {
msec: 5952
- hash: "eba517141a4dc94025801fabc8c5e813"
+ hash: "3d71f15694368397bc8f6a6a0c2c16de"
}
Mouse {
type: 5
@@ -2722,7 +2722,7 @@ VisualTest {
}
Frame {
msec: 6432
- hash: "a609d3c9cb375240e66dd316af27543c"
+ hash: "b7eeca12627f0ca82a0e56179184b3b8"
}
Mouse {
type: 5
@@ -2742,7 +2742,7 @@ VisualTest {
}
Frame {
msec: 6448
- hash: "0d376060ba0f9843ed814a8d8150d047"
+ hash: "abccf1571b12444328188003928a0aea"
}
Mouse {
type: 5
@@ -3554,11 +3554,11 @@ VisualTest {
}
Frame {
msec: 8000
- hash: "a62df700f3209668a813e765a79e7859"
+ hash: "236c237e3f4673d568a8cf2c3665cb49"
}
Frame {
msec: 8016
- hash: "a62df700f3209668a813e765a79e7859"
+ hash: "236c237e3f4673d568a8cf2c3665cb49"
}
Key {
type: 7
@@ -3578,11 +3578,11 @@ VisualTest {
}
Frame {
msec: 8032
- hash: "e8928770969b82523e828e3036bbe106"
+ hash: "cea55dd0cd5b0c2e37808bd38c689ddf"
}
Frame {
msec: 8048
- hash: "e8928770969b82523e828e3036bbe106"
+ hash: "cea55dd0cd5b0c2e37808bd38c689ddf"
}
Key {
type: 7
@@ -3602,11 +3602,11 @@ VisualTest {
}
Frame {
msec: 8064
- hash: "ba0c406580cc0fa02a6b26367a290ec9"
+ hash: "9bf8a1a8a79230f459fcec6d21843f3f"
}
Frame {
msec: 8080
- hash: "ba0c406580cc0fa02a6b26367a290ec9"
+ hash: "9bf8a1a8a79230f459fcec6d21843f3f"
}
Key {
type: 6
@@ -3626,31 +3626,31 @@ VisualTest {
}
Frame {
msec: 8096
- hash: "ba0c406580cc0fa02a6b26367a290ec9"
+ hash: "9bf8a1a8a79230f459fcec6d21843f3f"
}
Frame {
msec: 8112
- hash: "ba0c406580cc0fa02a6b26367a290ec9"
+ hash: "9bf8a1a8a79230f459fcec6d21843f3f"
}
Frame {
msec: 8128
- hash: "ba0c406580cc0fa02a6b26367a290ec9"
+ hash: "9bf8a1a8a79230f459fcec6d21843f3f"
}
Frame {
msec: 8144
- hash: "ba0c406580cc0fa02a6b26367a290ec9"
+ hash: "9bf8a1a8a79230f459fcec6d21843f3f"
}
Frame {
msec: 8160
- hash: "ba0c406580cc0fa02a6b26367a290ec9"
+ hash: "9bf8a1a8a79230f459fcec6d21843f3f"
}
Frame {
msec: 8176
- hash: "ba0c406580cc0fa02a6b26367a290ec9"
+ hash: "9bf8a1a8a79230f459fcec6d21843f3f"
}
Frame {
msec: 8192
- hash: "ba0c406580cc0fa02a6b26367a290ec9"
+ hash: "9bf8a1a8a79230f459fcec6d21843f3f"
}
Key {
type: 6
@@ -3662,19 +3662,19 @@ VisualTest {
}
Frame {
msec: 8208
- hash: "479b5ba3f5b3d38b5e9aba6b5204da03"
+ hash: "261d950728b1628d637e739a72c58e9f"
}
Frame {
msec: 8224
- hash: "479b5ba3f5b3d38b5e9aba6b5204da03"
+ hash: "261d950728b1628d637e739a72c58e9f"
}
Frame {
msec: 8240
- hash: "479b5ba3f5b3d38b5e9aba6b5204da03"
+ hash: "261d950728b1628d637e739a72c58e9f"
}
Frame {
msec: 8256
- hash: "479b5ba3f5b3d38b5e9aba6b5204da03"
+ hash: "261d950728b1628d637e739a72c58e9f"
}
Key {
type: 7
@@ -3686,19 +3686,19 @@ VisualTest {
}
Frame {
msec: 8272
- hash: "479b5ba3f5b3d38b5e9aba6b5204da03"
+ hash: "261d950728b1628d637e739a72c58e9f"
}
Frame {
msec: 8288
- hash: "479b5ba3f5b3d38b5e9aba6b5204da03"
+ hash: "261d950728b1628d637e739a72c58e9f"
}
Frame {
msec: 8304
- hash: "479b5ba3f5b3d38b5e9aba6b5204da03"
+ hash: "261d950728b1628d637e739a72c58e9f"
}
Frame {
msec: 8320
- hash: "479b5ba3f5b3d38b5e9aba6b5204da03"
+ hash: "261d950728b1628d637e739a72c58e9f"
}
Key {
type: 6
@@ -3710,19 +3710,19 @@ VisualTest {
}
Frame {
msec: 8336
- hash: "978ed05f4ea2cc7ddb06807a25883335"
+ hash: "aad904179a9dbda49f411b9ae3efcb53"
}
Frame {
msec: 8352
- hash: "978ed05f4ea2cc7ddb06807a25883335"
+ hash: "aad904179a9dbda49f411b9ae3efcb53"
}
Frame {
msec: 8368
- hash: "978ed05f4ea2cc7ddb06807a25883335"
+ hash: "aad904179a9dbda49f411b9ae3efcb53"
}
Frame {
msec: 8384
- hash: "978ed05f4ea2cc7ddb06807a25883335"
+ hash: "aad904179a9dbda49f411b9ae3efcb53"
}
Key {
type: 7
@@ -3734,23 +3734,23 @@ VisualTest {
}
Frame {
msec: 8400
- hash: "978ed05f4ea2cc7ddb06807a25883335"
+ hash: "aad904179a9dbda49f411b9ae3efcb53"
}
Frame {
msec: 8416
- hash: "978ed05f4ea2cc7ddb06807a25883335"
+ hash: "aad904179a9dbda49f411b9ae3efcb53"
}
Frame {
msec: 8432
- hash: "978ed05f4ea2cc7ddb06807a25883335"
+ hash: "aad904179a9dbda49f411b9ae3efcb53"
}
Frame {
msec: 8448
- hash: "978ed05f4ea2cc7ddb06807a25883335"
+ hash: "aad904179a9dbda49f411b9ae3efcb53"
}
Frame {
msec: 8464
- hash: "978ed05f4ea2cc7ddb06807a25883335"
+ hash: "aad904179a9dbda49f411b9ae3efcb53"
}
Key {
type: 6
@@ -3762,19 +3762,19 @@ VisualTest {
}
Frame {
msec: 8480
- hash: "b65c439a091d3293352de410d28aaca1"
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
}
Frame {
msec: 8496
- hash: "b65c439a091d3293352de410d28aaca1"
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
}
Frame {
msec: 8512
- hash: "b65c439a091d3293352de410d28aaca1"
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
}
Frame {
msec: 8528
- hash: "b65c439a091d3293352de410d28aaca1"
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
}
Key {
type: 7
@@ -3786,27 +3786,27 @@ VisualTest {
}
Frame {
msec: 8544
- hash: "b65c439a091d3293352de410d28aaca1"
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
}
Frame {
msec: 8560
- hash: "b65c439a091d3293352de410d28aaca1"
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
}
Frame {
msec: 8576
- hash: "b65c439a091d3293352de410d28aaca1"
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
}
Frame {
msec: 8592
- hash: "b65c439a091d3293352de410d28aaca1"
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
}
Frame {
msec: 8608
- hash: "b65c439a091d3293352de410d28aaca1"
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
}
Frame {
msec: 8624
- hash: "b65c439a091d3293352de410d28aaca1"
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
}
Frame {
msec: 8640
@@ -3814,7 +3814,7 @@ VisualTest {
}
Frame {
msec: 8656
- hash: "b65c439a091d3293352de410d28aaca1"
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
}
Key {
type: 7
@@ -3826,139 +3826,139 @@ VisualTest {
}
Frame {
msec: 8672
- hash: "b65c439a091d3293352de410d28aaca1"
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
}
Frame {
msec: 8688
- hash: "b65c439a091d3293352de410d28aaca1"
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
}
Frame {
msec: 8704
- hash: "b65c439a091d3293352de410d28aaca1"
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
}
Frame {
msec: 8720
- hash: "b65c439a091d3293352de410d28aaca1"
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
}
Frame {
msec: 8736
- hash: "b65c439a091d3293352de410d28aaca1"
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
}
Frame {
msec: 8752
- hash: "b65c439a091d3293352de410d28aaca1"
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
}
Frame {
msec: 8768
- hash: "b65c439a091d3293352de410d28aaca1"
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
}
Frame {
msec: 8784
- hash: "b65c439a091d3293352de410d28aaca1"
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
}
Frame {
msec: 8800
- hash: "b65c439a091d3293352de410d28aaca1"
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
}
Frame {
msec: 8816
- hash: "b65c439a091d3293352de410d28aaca1"
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
}
Frame {
msec: 8832
- hash: "b65c439a091d3293352de410d28aaca1"
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
}
Frame {
msec: 8848
- hash: "b65c439a091d3293352de410d28aaca1"
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
}
Frame {
msec: 8864
- hash: "b65c439a091d3293352de410d28aaca1"
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
}
Frame {
msec: 8880
- hash: "b65c439a091d3293352de410d28aaca1"
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
}
Frame {
msec: 8896
- hash: "b65c439a091d3293352de410d28aaca1"
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
}
Frame {
msec: 8912
- hash: "b65c439a091d3293352de410d28aaca1"
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
}
Frame {
msec: 8928
- hash: "b65c439a091d3293352de410d28aaca1"
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
}
Frame {
msec: 8944
- hash: "b65c439a091d3293352de410d28aaca1"
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
}
Frame {
msec: 8960
- hash: "b65c439a091d3293352de410d28aaca1"
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
}
Frame {
msec: 8976
- hash: "b65c439a091d3293352de410d28aaca1"
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
}
Frame {
msec: 8992
- hash: "b65c439a091d3293352de410d28aaca1"
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
}
Frame {
msec: 9008
- hash: "b65c439a091d3293352de410d28aaca1"
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
}
Frame {
msec: 9024
- hash: "b65c439a091d3293352de410d28aaca1"
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
}
Frame {
msec: 9040
- hash: "b65c439a091d3293352de410d28aaca1"
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
}
Frame {
msec: 9056
- hash: "b65c439a091d3293352de410d28aaca1"
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
}
Frame {
msec: 9072
- hash: "b65c439a091d3293352de410d28aaca1"
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
}
Frame {
msec: 9088
- hash: "b65c439a091d3293352de410d28aaca1"
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
}
Frame {
msec: 9104
- hash: "b65c439a091d3293352de410d28aaca1"
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
}
Frame {
msec: 9120
- hash: "b65c439a091d3293352de410d28aaca1"
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
}
Frame {
msec: 9136
- hash: "b65c439a091d3293352de410d28aaca1"
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
}
Frame {
msec: 9152
- hash: "b65c439a091d3293352de410d28aaca1"
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
}
Frame {
msec: 9168
- hash: "b65c439a091d3293352de410d28aaca1"
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
}
Frame {
msec: 9184
- hash: "b65c439a091d3293352de410d28aaca1"
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
}
Frame {
msec: 9200
- hash: "b65c439a091d3293352de410d28aaca1"
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
}
Mouse {
type: 2
@@ -3970,11 +3970,11 @@ VisualTest {
}
Frame {
msec: 9216
- hash: "b65c439a091d3293352de410d28aaca1"
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
}
Frame {
msec: 9232
- hash: "b65c439a091d3293352de410d28aaca1"
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
}
Mouse {
type: 5
@@ -3986,7 +3986,7 @@ VisualTest {
}
Frame {
msec: 9248
- hash: "b65c439a091d3293352de410d28aaca1"
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
}
Mouse {
type: 5
@@ -4006,7 +4006,7 @@ VisualTest {
}
Frame {
msec: 9264
- hash: "b65c439a091d3293352de410d28aaca1"
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
}
Mouse {
type: 5
@@ -4026,7 +4026,7 @@ VisualTest {
}
Frame {
msec: 9280
- hash: "b65c439a091d3293352de410d28aaca1"
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
}
Mouse {
type: 3
@@ -4038,43 +4038,43 @@ VisualTest {
}
Frame {
msec: 9296
- hash: "b65c439a091d3293352de410d28aaca1"
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
}
Frame {
msec: 9312
- hash: "b65c439a091d3293352de410d28aaca1"
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
}
Frame {
msec: 9328
- hash: "b65c439a091d3293352de410d28aaca1"
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
}
Frame {
msec: 9344
- hash: "b65c439a091d3293352de410d28aaca1"
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
}
Frame {
msec: 9360
- hash: "b65c439a091d3293352de410d28aaca1"
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
}
Frame {
msec: 9376
- hash: "b65c439a091d3293352de410d28aaca1"
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
}
Frame {
msec: 9392
- hash: "b65c439a091d3293352de410d28aaca1"
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
}
Frame {
msec: 9408
- hash: "b65c439a091d3293352de410d28aaca1"
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
}
Frame {
msec: 9424
- hash: "b65c439a091d3293352de410d28aaca1"
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
}
Frame {
msec: 9440
- hash: "b65c439a091d3293352de410d28aaca1"
+ hash: "b5c199f82cea188d2aafa4fa09f444fc"
}
Mouse {
type: 2
@@ -4086,27 +4086,27 @@ VisualTest {
}
Frame {
msec: 9456
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 9472
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 9488
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 9504
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 9520
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 9536
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Mouse {
type: 3
@@ -4118,15 +4118,15 @@ VisualTest {
}
Frame {
msec: 9552
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 9568
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 9584
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 9600
@@ -4134,19 +4134,19 @@ VisualTest {
}
Frame {
msec: 9616
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 9632
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 9648
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 9664
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Key {
type: 6
@@ -4158,111 +4158,111 @@ VisualTest {
}
Frame {
msec: 9680
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 9696
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 9712
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 9728
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 9744
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 9760
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 9776
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 9792
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 9808
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 9824
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 9840
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 9856
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 9872
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 9888
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 9904
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 9920
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 9936
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 9952
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 9968
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 9984
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 10000
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 10016
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 10032
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 10048
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 10064
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 10080
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 10096
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Key {
type: 6
@@ -4274,35 +4274,35 @@ VisualTest {
}
Frame {
msec: 10112
- hash: "8d9ca5bff73c2c93a0db5787ca7ef76b"
+ hash: "ead21885244133a71e103eb9ae6b61e4"
}
Frame {
msec: 10128
- hash: "8d9ca5bff73c2c93a0db5787ca7ef76b"
+ hash: "ead21885244133a71e103eb9ae6b61e4"
}
Frame {
msec: 10144
- hash: "8d9ca5bff73c2c93a0db5787ca7ef76b"
+ hash: "ead21885244133a71e103eb9ae6b61e4"
}
Frame {
msec: 10160
- hash: "8d9ca5bff73c2c93a0db5787ca7ef76b"
+ hash: "ead21885244133a71e103eb9ae6b61e4"
}
Frame {
msec: 10176
- hash: "8d9ca5bff73c2c93a0db5787ca7ef76b"
+ hash: "ead21885244133a71e103eb9ae6b61e4"
}
Frame {
msec: 10192
- hash: "8d9ca5bff73c2c93a0db5787ca7ef76b"
+ hash: "ead21885244133a71e103eb9ae6b61e4"
}
Frame {
msec: 10208
- hash: "8d9ca5bff73c2c93a0db5787ca7ef76b"
+ hash: "ead21885244133a71e103eb9ae6b61e4"
}
Frame {
msec: 10224
- hash: "8d9ca5bff73c2c93a0db5787ca7ef76b"
+ hash: "ead21885244133a71e103eb9ae6b61e4"
}
Key {
type: 7
@@ -4314,35 +4314,35 @@ VisualTest {
}
Frame {
msec: 10240
- hash: "8d9ca5bff73c2c93a0db5787ca7ef76b"
+ hash: "ead21885244133a71e103eb9ae6b61e4"
}
Frame {
msec: 10256
- hash: "8d9ca5bff73c2c93a0db5787ca7ef76b"
+ hash: "ead21885244133a71e103eb9ae6b61e4"
}
Frame {
msec: 10272
- hash: "8d9ca5bff73c2c93a0db5787ca7ef76b"
+ hash: "ead21885244133a71e103eb9ae6b61e4"
}
Frame {
msec: 10288
- hash: "8d9ca5bff73c2c93a0db5787ca7ef76b"
+ hash: "ead21885244133a71e103eb9ae6b61e4"
}
Frame {
msec: 10304
- hash: "8d9ca5bff73c2c93a0db5787ca7ef76b"
+ hash: "ead21885244133a71e103eb9ae6b61e4"
}
Frame {
msec: 10320
- hash: "8d9ca5bff73c2c93a0db5787ca7ef76b"
+ hash: "ead21885244133a71e103eb9ae6b61e4"
}
Frame {
msec: 10336
- hash: "8d9ca5bff73c2c93a0db5787ca7ef76b"
+ hash: "ead21885244133a71e103eb9ae6b61e4"
}
Frame {
msec: 10352
- hash: "8d9ca5bff73c2c93a0db5787ca7ef76b"
+ hash: "ead21885244133a71e103eb9ae6b61e4"
}
Key {
type: 6
@@ -4354,27 +4354,27 @@ VisualTest {
}
Frame {
msec: 10368
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 10384
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 10400
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 10416
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 10432
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 10448
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Key {
type: 7
@@ -4386,27 +4386,27 @@ VisualTest {
}
Frame {
msec: 10464
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 10480
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 10496
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 10512
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 10528
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 10544
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 10560
@@ -4414,23 +4414,23 @@ VisualTest {
}
Frame {
msec: 10576
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 10592
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 10608
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 10624
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 10640
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Key {
type: 7
@@ -4442,219 +4442,219 @@ VisualTest {
}
Frame {
msec: 10656
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 10672
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 10688
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 10704
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 10720
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 10736
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 10752
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 10768
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 10784
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 10800
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 10816
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 10832
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 10848
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 10864
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 10880
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 10896
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 10912
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 10928
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 10944
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 10960
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 10976
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 10992
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 11008
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 11024
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 11040
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 11056
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 11072
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 11088
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 11104
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 11120
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 11136
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 11152
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 11168
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 11184
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 11200
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 11216
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 11232
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 11248
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 11264
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 11280
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 11296
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 11312
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 11328
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 11344
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 11360
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 11376
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 11392
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 11408
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 11424
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 11440
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 11456
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 11472
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 11488
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 11504
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 11520
@@ -4662,26 +4662,26 @@ VisualTest {
}
Frame {
msec: 11536
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 11552
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 11568
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 11584
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 11600
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
Frame {
msec: 11616
- hash: "3d08eff16edf54f522a75df1734150df"
+ hash: "a6c8b66b0d3f1124a6a316209a1456ff"
}
}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.qml
index defaf78..475aee1 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.qml
@@ -230,7 +230,7 @@ VisualTest {
}
Frame {
msec: 528
- hash: "41fc29e728daf52d54a3acacceabab39"
+ hash: "36fb24a55e2cda02c3001adaa67e82a7"
}
Key {
type: 6
@@ -450,19 +450,19 @@ VisualTest {
}
Frame {
msec: 1024
- hash: "6d8069ea1f16634ebcf94ba45041984f"
+ hash: "f681181b9e889f2fe0ac5ccddaa8c39f"
}
Frame {
msec: 1040
- hash: "6d8069ea1f16634ebcf94ba45041984f"
+ hash: "f681181b9e889f2fe0ac5ccddaa8c39f"
}
Frame {
msec: 1056
- hash: "6d8069ea1f16634ebcf94ba45041984f"
+ hash: "f681181b9e889f2fe0ac5ccddaa8c39f"
}
Frame {
msec: 1072
- hash: "6d8069ea1f16634ebcf94ba45041984f"
+ hash: "f681181b9e889f2fe0ac5ccddaa8c39f"
}
Key {
type: 7
@@ -474,31 +474,31 @@ VisualTest {
}
Frame {
msec: 1088
- hash: "6d8069ea1f16634ebcf94ba45041984f"
+ hash: "f681181b9e889f2fe0ac5ccddaa8c39f"
}
Frame {
msec: 1104
- hash: "6d8069ea1f16634ebcf94ba45041984f"
+ hash: "f681181b9e889f2fe0ac5ccddaa8c39f"
}
Frame {
msec: 1120
- hash: "6d8069ea1f16634ebcf94ba45041984f"
+ hash: "f681181b9e889f2fe0ac5ccddaa8c39f"
}
Frame {
msec: 1136
- hash: "6d8069ea1f16634ebcf94ba45041984f"
+ hash: "f681181b9e889f2fe0ac5ccddaa8c39f"
}
Frame {
msec: 1152
- hash: "6d8069ea1f16634ebcf94ba45041984f"
+ hash: "f681181b9e889f2fe0ac5ccddaa8c39f"
}
Frame {
msec: 1168
- hash: "6d8069ea1f16634ebcf94ba45041984f"
+ hash: "f681181b9e889f2fe0ac5ccddaa8c39f"
}
Frame {
msec: 1184
- hash: "6d8069ea1f16634ebcf94ba45041984f"
+ hash: "f681181b9e889f2fe0ac5ccddaa8c39f"
}
Key {
type: 6
@@ -638,7 +638,7 @@ VisualTest {
}
Frame {
msec: 1520
- hash: "7e63c2f83280eee33bb3c954d769e297"
+ hash: "a086058fa845a399a222c2571ef25442"
}
Key {
type: 7
@@ -650,11 +650,11 @@ VisualTest {
}
Frame {
msec: 1536
- hash: "7e63c2f83280eee33bb3c954d769e297"
+ hash: "a086058fa845a399a222c2571ef25442"
}
Frame {
msec: 1552
- hash: "7e63c2f83280eee33bb3c954d769e297"
+ hash: "a086058fa845a399a222c2571ef25442"
}
Key {
type: 6
@@ -842,15 +842,15 @@ VisualTest {
}
Frame {
msec: 2016
- hash: "6e626464dfc68af86649589a23fe5368"
+ hash: "2ddf4c1b9ec2d5540c456e10c2af775e"
}
Frame {
msec: 2032
- hash: "6e626464dfc68af86649589a23fe5368"
+ hash: "2ddf4c1b9ec2d5540c456e10c2af775e"
}
Frame {
msec: 2048
- hash: "6e626464dfc68af86649589a23fe5368"
+ hash: "2ddf4c1b9ec2d5540c456e10c2af775e"
}
Key {
type: 6
@@ -1050,11 +1050,11 @@ VisualTest {
}
Frame {
msec: 2528
- hash: "0a5589c5877c807b8d9540a1dd86e265"
+ hash: "1475ec7421f2c16f7dbb13eeb35f21c8"
}
Frame {
msec: 2544
- hash: "0a5589c5877c807b8d9540a1dd86e265"
+ hash: "1475ec7421f2c16f7dbb13eeb35f21c8"
}
Key {
type: 7
@@ -1066,27 +1066,27 @@ VisualTest {
}
Frame {
msec: 2560
- hash: "0a5589c5877c807b8d9540a1dd86e265"
+ hash: "1475ec7421f2c16f7dbb13eeb35f21c8"
}
Frame {
msec: 2576
- hash: "0a5589c5877c807b8d9540a1dd86e265"
+ hash: "1475ec7421f2c16f7dbb13eeb35f21c8"
}
Frame {
msec: 2592
- hash: "0a5589c5877c807b8d9540a1dd86e265"
+ hash: "1475ec7421f2c16f7dbb13eeb35f21c8"
}
Frame {
msec: 2608
- hash: "0a5589c5877c807b8d9540a1dd86e265"
+ hash: "1475ec7421f2c16f7dbb13eeb35f21c8"
}
Frame {
msec: 2624
- hash: "0a5589c5877c807b8d9540a1dd86e265"
+ hash: "1475ec7421f2c16f7dbb13eeb35f21c8"
}
Frame {
msec: 2640
- hash: "0a5589c5877c807b8d9540a1dd86e265"
+ hash: "1475ec7421f2c16f7dbb13eeb35f21c8"
}
Key {
type: 6
@@ -1246,23 +1246,23 @@ VisualTest {
}
Frame {
msec: 3024
- hash: "718894676b3feeff1924b9b315838551"
+ hash: "ab08c67bc5c8f53bba66ad48f618d9c9"
}
Frame {
msec: 3040
- hash: "718894676b3feeff1924b9b315838551"
+ hash: "ab08c67bc5c8f53bba66ad48f618d9c9"
}
Frame {
msec: 3056
- hash: "718894676b3feeff1924b9b315838551"
+ hash: "ab08c67bc5c8f53bba66ad48f618d9c9"
}
Frame {
msec: 3072
- hash: "718894676b3feeff1924b9b315838551"
+ hash: "ab08c67bc5c8f53bba66ad48f618d9c9"
}
Frame {
msec: 3088
- hash: "718894676b3feeff1924b9b315838551"
+ hash: "ab08c67bc5c8f53bba66ad48f618d9c9"
}
Key {
type: 6
@@ -1606,7 +1606,7 @@ VisualTest {
}
Frame {
msec: 4016
- hash: "8c949a494d7bd5f9b6e5ac5bf3baec59"
+ hash: "67b49fc16da9390bff9814b34659baca"
}
Key {
type: 6
@@ -1814,11 +1814,11 @@ VisualTest {
}
Frame {
msec: 4528
- hash: "55e236c3b51b7104cf3254a44b0f1c92"
+ hash: "c5ce4fc832787535e66e64c546383d28"
}
Frame {
msec: 4544
- hash: "55e236c3b51b7104cf3254a44b0f1c92"
+ hash: "c5ce4fc832787535e66e64c546383d28"
}
Key {
type: 6
@@ -2002,127 +2002,127 @@ VisualTest {
}
Frame {
msec: 5024
- hash: "a0208b5276f3f26500f40535017563a6"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 5040
- hash: "a0208b5276f3f26500f40535017563a6"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 5056
- hash: "a0208b5276f3f26500f40535017563a6"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 5072
- hash: "a0208b5276f3f26500f40535017563a6"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 5088
- hash: "a0208b5276f3f26500f40535017563a6"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 5104
- hash: "a0208b5276f3f26500f40535017563a6"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 5120
- hash: "a0208b5276f3f26500f40535017563a6"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 5136
- hash: "a0208b5276f3f26500f40535017563a6"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 5152
- hash: "a0208b5276f3f26500f40535017563a6"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 5168
- hash: "a0208b5276f3f26500f40535017563a6"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 5184
- hash: "a0208b5276f3f26500f40535017563a6"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 5200
- hash: "a0208b5276f3f26500f40535017563a6"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 5216
- hash: "a0208b5276f3f26500f40535017563a6"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 5232
- hash: "a0208b5276f3f26500f40535017563a6"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 5248
- hash: "a0208b5276f3f26500f40535017563a6"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 5264
- hash: "a0208b5276f3f26500f40535017563a6"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 5280
- hash: "a0208b5276f3f26500f40535017563a6"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 5296
- hash: "a0208b5276f3f26500f40535017563a6"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 5312
- hash: "a0208b5276f3f26500f40535017563a6"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 5328
- hash: "a0208b5276f3f26500f40535017563a6"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 5344
- hash: "a0208b5276f3f26500f40535017563a6"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 5360
- hash: "a0208b5276f3f26500f40535017563a6"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 5376
- hash: "a0208b5276f3f26500f40535017563a6"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 5392
- hash: "a0208b5276f3f26500f40535017563a6"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 5408
- hash: "a0208b5276f3f26500f40535017563a6"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 5424
- hash: "a0208b5276f3f26500f40535017563a6"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 5440
- hash: "a0208b5276f3f26500f40535017563a6"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 5456
- hash: "a0208b5276f3f26500f40535017563a6"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 5472
- hash: "a0208b5276f3f26500f40535017563a6"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 5488
- hash: "a0208b5276f3f26500f40535017563a6"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 5504
- hash: "a0208b5276f3f26500f40535017563a6"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 5520
@@ -2250,131 +2250,131 @@ VisualTest {
}
Frame {
msec: 6016
- hash: "a0208b5276f3f26500f40535017563a6"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 6032
- hash: "a0208b5276f3f26500f40535017563a6"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 6048
- hash: "a0208b5276f3f26500f40535017563a6"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 6064
- hash: "a0208b5276f3f26500f40535017563a6"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 6080
- hash: "a0208b5276f3f26500f40535017563a6"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 6096
- hash: "a0208b5276f3f26500f40535017563a6"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 6112
- hash: "a0208b5276f3f26500f40535017563a6"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 6128
- hash: "a0208b5276f3f26500f40535017563a6"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 6144
- hash: "a0208b5276f3f26500f40535017563a6"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 6160
- hash: "a0208b5276f3f26500f40535017563a6"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 6176
- hash: "a0208b5276f3f26500f40535017563a6"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 6192
- hash: "a0208b5276f3f26500f40535017563a6"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 6208
- hash: "a0208b5276f3f26500f40535017563a6"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 6224
- hash: "a0208b5276f3f26500f40535017563a6"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 6240
- hash: "a0208b5276f3f26500f40535017563a6"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 6256
- hash: "a0208b5276f3f26500f40535017563a6"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 6272
- hash: "a0208b5276f3f26500f40535017563a6"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 6288
- hash: "a0208b5276f3f26500f40535017563a6"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 6304
- hash: "a0208b5276f3f26500f40535017563a6"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 6320
- hash: "a0208b5276f3f26500f40535017563a6"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 6336
- hash: "a0208b5276f3f26500f40535017563a6"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 6352
- hash: "a0208b5276f3f26500f40535017563a6"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 6368
- hash: "a0208b5276f3f26500f40535017563a6"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 6384
- hash: "a0208b5276f3f26500f40535017563a6"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 6400
- hash: "a0208b5276f3f26500f40535017563a6"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 6416
- hash: "a0208b5276f3f26500f40535017563a6"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 6432
- hash: "a0208b5276f3f26500f40535017563a6"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 6448
- hash: "a0208b5276f3f26500f40535017563a6"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 6464
- hash: "a0208b5276f3f26500f40535017563a6"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 6480
- hash: "a0208b5276f3f26500f40535017563a6"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 6496
- hash: "a0208b5276f3f26500f40535017563a6"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 6512
- hash: "a0208b5276f3f26500f40535017563a6"
+ hash: "41179a181fd4ae8bd15a259b66d90eea"
}
Frame {
msec: 6528
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/qt-669.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/qt-669.qml
index d7054ba..5f80234 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/qt-669.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/qt-669.qml
@@ -1,4 +1,5 @@
import QtQuick 1.0
+import "../shared" 1.0
Rectangle {
Component { id: testableCursor
@@ -10,7 +11,7 @@ Rectangle {
}
width:300;
height:40;
- TextEdit {
+ TestTextEdit {
focus: true;
cursorDelegate: testableCursor
text: "Jackdaws love my big sphinx of Quartz"
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/usingMultilineEdit.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/usingMultilineEdit.qml
index f03e1cc..bf5e7a0 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/usingMultilineEdit.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/usingMultilineEdit.qml
@@ -3,12 +3,12 @@ import QtQuick 1.0
Rectangle{
width: 280
height: 140
- Column{
- MultilineEdit{
+ Column {
+ MultilineEdit {
text: 'I am the very model of a modern major general. I\'ve information vegetable, animal and mineral. I know the kings of england and I quote the fights historical - from Marathon to Waterloo in order categorical.';
width: 182; height: 60;
}
- Rectangle{height: 20; width: 20;}//Spacer
- MultilineEdit{text: 'Hello world'}
+ Rectangle {height: 20; width: 20;}//Spacer
+ MultilineEdit {text: 'Hello world'}
}
}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/wrap.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/wrap.qml
index 4afe417..63400f1 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/wrap.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/wrap.qml
@@ -1,30 +1,31 @@
import QtQuick 1.0
+import "../shared" 1.0
Item {
height:400
width: 200
- TextEdit {
+ TestTextEdit {
width: 200
height: 100
wrapMode: TextEdit.WordWrap
focus: true
}
//With QTBUG-6273 only the bottom one would be wrapped
- TextEdit {
+ TestTextEdit {
width: 200
height: 100
wrapMode: TextEdit.WordWrap
text: "This is a test that text edit wraps correctly."
y:100
}
- TextEdit {
+ TestTextEdit {
width: 150
height: 100
wrapMode: TextEdit.WrapAnywhere
text: "This is a test that text edit wraps correctly. thisisaverylongstringwithnospaces"
y:200
}
- TextEdit {
+ TestTextEdit {
width: 150
height: 100
wrapMode: TextEdit.Wrap
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/LineEdit.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/LineEdit.qml
index 74c16e2..50c3cb4 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/LineEdit.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/LineEdit.qml
@@ -1,4 +1,5 @@
import QtQuick 1.0
+import "../shared" 1.0
Item {
id:lineedit
@@ -7,16 +8,16 @@ Item {
width: textInp.width + 11
height: 13 + 11
- Rectangle{
+ Rectangle {
color: 'lightsteelblue'
anchors.fill: parent
}
clip: true
Component.onCompleted: textInp.cursorPosition = 0;
- TextInput{
+ TestTextInput {
id:textInp
- cursorDelegate: Item{
- Rectangle{
+ cursorDelegate: Item {
+ Rectangle {
visible: parent.parent.focus
color: "#009BCE"
height: 13
@@ -42,7 +43,7 @@ Item {
horizontalAlignment: TextInput.AlignLeft
font.pixelSize:15
}
- MouseArea{
+ MouseArea {
//Implements all line edit mouse handling
id: mainMouseArea
anchors.fill: parent;
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/cursorDelegate.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/cursorDelegate.qml
index 69dc32a..f2a34b7 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/cursorDelegate.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/cursorDelegate.qml
@@ -1,5 +1,7 @@
import QtQuick 1.0
- Rectangle {
+import "../shared" 1.0
+
+Rectangle {
resources: [
Component { id: cursorA
Item { id: cPage;
@@ -22,7 +24,7 @@ import QtQuick 1.0
width: 400
height: 200
color: "white"
- TextInput { id: mainText
+ TestTextInput { id: mainText
text: "Hello World"
cursorDelegate: cursorA
focus: true
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 d889eef..1d96795 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.0.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.0.png
Binary files 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 0c8c250..a3a9bfa 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.1.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.1.png
Binary files 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 76b7fce..b50028c 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.2.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.2.png
Binary files 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 ecc8568..1c4876e 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.3.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.3.png
Binary files 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 766abaf..9d110cb 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.4.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.4.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.qml
index 37f5e46..bd4af6a 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: "79b388ca7d46e1efb38672c6bf8837f8"
+ hash: "c0ffaa97d1be341fafafc18762f5cb67"
}
Frame {
msec: 32
- hash: "79b388ca7d46e1efb38672c6bf8837f8"
+ hash: "c0ffaa97d1be341fafafc18762f5cb67"
}
Frame {
msec: 48
- hash: "79b388ca7d46e1efb38672c6bf8837f8"
+ hash: "c0ffaa97d1be341fafafc18762f5cb67"
}
Frame {
msec: 64
- hash: "79b388ca7d46e1efb38672c6bf8837f8"
+ hash: "c0ffaa97d1be341fafafc18762f5cb67"
}
Frame {
msec: 80
- hash: "79b388ca7d46e1efb38672c6bf8837f8"
+ hash: "c0ffaa97d1be341fafafc18762f5cb67"
}
Frame {
msec: 96
- hash: "79b388ca7d46e1efb38672c6bf8837f8"
+ hash: "c0ffaa97d1be341fafafc18762f5cb67"
}
Frame {
msec: 112
- hash: "79b388ca7d46e1efb38672c6bf8837f8"
+ hash: "c0ffaa97d1be341fafafc18762f5cb67"
}
Frame {
msec: 128
- hash: "79b388ca7d46e1efb38672c6bf8837f8"
+ hash: "c0ffaa97d1be341fafafc18762f5cb67"
}
Frame {
msec: 144
- hash: "79b388ca7d46e1efb38672c6bf8837f8"
+ hash: "c0ffaa97d1be341fafafc18762f5cb67"
}
Frame {
msec: 160
- hash: "79b388ca7d46e1efb38672c6bf8837f8"
+ hash: "c0ffaa97d1be341fafafc18762f5cb67"
}
Frame {
msec: 176
- hash: "79b388ca7d46e1efb38672c6bf8837f8"
+ hash: "c0ffaa97d1be341fafafc18762f5cb67"
}
Frame {
msec: 192
- hash: "79b388ca7d46e1efb38672c6bf8837f8"
+ hash: "c0ffaa97d1be341fafafc18762f5cb67"
}
Frame {
msec: 208
- hash: "79b388ca7d46e1efb38672c6bf8837f8"
+ hash: "c0ffaa97d1be341fafafc18762f5cb67"
}
Frame {
msec: 224
- hash: "79b388ca7d46e1efb38672c6bf8837f8"
+ hash: "c0ffaa97d1be341fafafc18762f5cb67"
}
Frame {
msec: 240
- hash: "79b388ca7d46e1efb38672c6bf8837f8"
+ hash: "c0ffaa97d1be341fafafc18762f5cb67"
}
Frame {
msec: 256
- hash: "79b388ca7d46e1efb38672c6bf8837f8"
+ hash: "c0ffaa97d1be341fafafc18762f5cb67"
}
Frame {
msec: 272
- hash: "79b388ca7d46e1efb38672c6bf8837f8"
+ hash: "c0ffaa97d1be341fafafc18762f5cb67"
}
Frame {
msec: 288
- hash: "79b388ca7d46e1efb38672c6bf8837f8"
+ hash: "c0ffaa97d1be341fafafc18762f5cb67"
}
Frame {
msec: 304
- hash: "79b388ca7d46e1efb38672c6bf8837f8"
+ hash: "c0ffaa97d1be341fafafc18762f5cb67"
}
Frame {
msec: 320
- hash: "79b388ca7d46e1efb38672c6bf8837f8"
+ hash: "c0ffaa97d1be341fafafc18762f5cb67"
}
Frame {
msec: 336
- hash: "79b388ca7d46e1efb38672c6bf8837f8"
+ hash: "c0ffaa97d1be341fafafc18762f5cb67"
}
Frame {
msec: 352
- hash: "79b388ca7d46e1efb38672c6bf8837f8"
+ hash: "c0ffaa97d1be341fafafc18762f5cb67"
}
Frame {
msec: 368
- hash: "79b388ca7d46e1efb38672c6bf8837f8"
+ hash: "c0ffaa97d1be341fafafc18762f5cb67"
}
Frame {
msec: 384
- hash: "79b388ca7d46e1efb38672c6bf8837f8"
+ hash: "c0ffaa97d1be341fafafc18762f5cb67"
}
Frame {
msec: 400
- hash: "79b388ca7d46e1efb38672c6bf8837f8"
+ hash: "c0ffaa97d1be341fafafc18762f5cb67"
}
Frame {
msec: 416
- hash: "79b388ca7d46e1efb38672c6bf8837f8"
+ hash: "c0ffaa97d1be341fafafc18762f5cb67"
}
Frame {
msec: 432
- hash: "79b388ca7d46e1efb38672c6bf8837f8"
+ hash: "c0ffaa97d1be341fafafc18762f5cb67"
}
Frame {
msec: 448
- hash: "79b388ca7d46e1efb38672c6bf8837f8"
+ hash: "c0ffaa97d1be341fafafc18762f5cb67"
}
Key {
type: 6
@@ -126,23 +126,23 @@ VisualTest {
}
Frame {
msec: 464
- hash: "52c03d5681cadb1df400a0974261e05d"
+ hash: "eadbfc95de35a0d1880809b2bbaec562"
}
Frame {
msec: 480
- hash: "52c03d5681cadb1df400a0974261e05d"
+ hash: "eadbfc95de35a0d1880809b2bbaec562"
}
Frame {
msec: 496
- hash: "52c03d5681cadb1df400a0974261e05d"
+ hash: "eadbfc95de35a0d1880809b2bbaec562"
}
Frame {
msec: 512
- hash: "52c03d5681cadb1df400a0974261e05d"
+ hash: "eadbfc95de35a0d1880809b2bbaec562"
}
Frame {
msec: 528
- hash: "9c280c469d12fc0bf1ff42883ffd5155"
+ hash: "227cbfe5fc07906060951e19ebb3ad30"
}
Key {
type: 7
@@ -154,19 +154,19 @@ VisualTest {
}
Frame {
msec: 544
- hash: "655716f3544c6ae649cbda487ed1916f"
+ hash: "066256a59ad290b3725193955e3c48a6"
}
Frame {
msec: 560
- hash: "e9e6a20040bedf4afb670310a7e5c2f0"
+ hash: "6709f77cbcde82886d1c5a07f06b55a5"
}
Frame {
msec: 576
- hash: "842641682f22e370402857b9cb875192"
+ hash: "da0028083048837b4756a2d3ff468378"
}
Frame {
msec: 592
- hash: "4d8258cd2fea9b4bee647b9480a743e3"
+ hash: "5f265351bed34357d603794d868dbcbc"
}
Key {
type: 6
@@ -178,19 +178,19 @@ VisualTest {
}
Frame {
msec: 608
- hash: "eb7d48cbf4cad403eb7d3fa2d10e0f88"
+ hash: "3b8030849229e90b69842219e8b2d3f1"
}
Frame {
msec: 624
- hash: "c6387240c7075e8321fda5348de9b752"
+ hash: "0b08356d9b00313b2d892175dd93095a"
}
Frame {
msec: 640
- hash: "98fb4f03db3a574cf96e88ca940fcd07"
+ hash: "4780555b277d65e3e4c0c60817b63eb4"
}
Frame {
msec: 656
- hash: "19d450ee21b0c525aba2c38e62c5b117"
+ hash: "6b31c8f0569d01d97a371423a0f379c0"
}
Key {
type: 7
@@ -202,19 +202,19 @@ VisualTest {
}
Frame {
msec: 672
- hash: "9943426dd31b393c4831dcfcdb266f76"
+ hash: "e9a5695636f7957d33f1c902a37a605d"
}
Frame {
msec: 688
- hash: "318bd0909d6ab32fc15ee385b69e1dc2"
+ hash: "27a783cd4ef5caab382721a98f7966da"
}
Frame {
msec: 704
- hash: "ca5f62f289b5f86e6d86afdcb0bc05f5"
+ hash: "c50598c0a5f8d501fd3ac9cddecee506"
}
Frame {
msec: 720
- hash: "2158851f276862dd1e2a7d3fee9af938"
+ hash: "2a2d0e202bc3bf7991409391a2ce2934"
}
Key {
type: 6
@@ -226,19 +226,19 @@ VisualTest {
}
Frame {
msec: 736
- hash: "746e28cf8df1bcfd5a07383e4f9e1420"
+ hash: "2d97b8503c739b210615971ad08c2714"
}
Frame {
msec: 752
- hash: "8ae15b54e47c6ba43b6ddad234a65499"
+ hash: "f27fd7f1d8c6dfb7393ab0d39ed5cd02"
}
Frame {
msec: 768
- hash: "8fcb22bd16dafb62a2fdcd40feda5178"
+ hash: "32d256543e3e1ba722860e5143af9f09"
}
Frame {
msec: 784
- hash: "1ef6e14540615967e7c059fb3299c38a"
+ hash: "9123b724613ef4d3d8431afde6e9eb6b"
}
Key {
type: 7
@@ -250,23 +250,23 @@ VisualTest {
}
Frame {
msec: 800
- hash: "cd260f4aa6e9772668b13f1f5e4ab3db"
+ hash: "be5249a7effc94ec2be3d6053eba7b45"
}
Frame {
msec: 816
- hash: "44aaa31fe7183e0088eb9ec12cfef69f"
+ hash: "57f2c119c9eca3d1e4acd2f775af5207"
}
Frame {
msec: 832
- hash: "575b1fbc9fa6587ce9811b5074a47a84"
+ hash: "23b79a2630448e99f27a657fd9789354"
}
Frame {
msec: 848
- hash: "83b1fe02fdbe16418231c8acbbbebcac"
+ hash: "c8faab137cbc014aef5e3212889d00b8"
}
Frame {
msec: 864
- hash: "7bfb6f545fd55e7e336431e6882c9974"
+ hash: "c9616f6fde5d6a8ecf346ece9952f09b"
}
Key {
type: 6
@@ -278,15 +278,15 @@ VisualTest {
}
Frame {
msec: 880
- hash: "bf3a6677b5f815e1b66f6489032f8e1d"
+ hash: "11a861ca71d789e3d97d599608a793be"
}
Frame {
msec: 896
- hash: "cfcd90f1e97e92b0fbe2595275a64a48"
+ hash: "5a6c57df0c33b83985aeb194f291ad6c"
}
Frame {
msec: 912
- hash: "397ad28f60e1f5245b59380968ececd2"
+ hash: "2c047359db6946cb740462b0d6c695be"
}
Key {
type: 7
@@ -298,11 +298,11 @@ VisualTest {
}
Frame {
msec: 928
- hash: "c6ea797bc327a7e31316f44e93d6beb9"
+ hash: "d0bb54caf661be021be8fe2691de24e8"
}
Frame {
msec: 944
- hash: "0e3c15c5328c85a54826b65ec82007f5"
+ hash: "80f0a60239f4d81b18b9cb3e80faf346"
}
Frame {
msec: 960
@@ -310,11 +310,11 @@ VisualTest {
}
Frame {
msec: 976
- hash: "0173dd60a64da4c06fa9a398d2c98206"
+ hash: "c526315dd5eec117266c68a7b6b64a3f"
}
Frame {
msec: 992
- hash: "0173dd60a64da4c06fa9a398d2c98206"
+ hash: "c526315dd5eec117266c68a7b6b64a3f"
}
Key {
type: 6
@@ -326,15 +326,15 @@ VisualTest {
}
Frame {
msec: 1008
- hash: "0173dd60a64da4c06fa9a398d2c98206"
+ hash: "c526315dd5eec117266c68a7b6b64a3f"
}
Frame {
msec: 1024
- hash: "0173dd60a64da4c06fa9a398d2c98206"
+ hash: "c526315dd5eec117266c68a7b6b64a3f"
}
Frame {
msec: 1040
- hash: "0173dd60a64da4c06fa9a398d2c98206"
+ hash: "c526315dd5eec117266c68a7b6b64a3f"
}
Key {
type: 7
@@ -346,23 +346,23 @@ VisualTest {
}
Frame {
msec: 1056
- hash: "0173dd60a64da4c06fa9a398d2c98206"
+ hash: "c526315dd5eec117266c68a7b6b64a3f"
}
Frame {
msec: 1072
- hash: "676e251f10800c2a8860b43c2546524d"
+ hash: "5f6cc0c97e4748aeeaa4a00c8a8c8928"
}
Frame {
msec: 1088
- hash: "db99874ab3656663316931ea0ac4c7c3"
+ hash: "b1d71160d9a8a8edeb4cf7e00df36cfc"
}
Frame {
msec: 1104
- hash: "2c4b2205df96e09a9cd91d5efb86d820"
+ hash: "5bfd4269145cc0962e0fa9c294e8f5aa"
}
Frame {
msec: 1120
- hash: "25e6e81e4769751e9639ee4a3c4ae839"
+ hash: "4e22c95802d83f0099017c6be9d93214"
}
Key {
type: 6
@@ -374,23 +374,23 @@ VisualTest {
}
Frame {
msec: 1136
- hash: "9eaa29386d3ad22b9032b8b345739342"
+ hash: "0f31d8f4867af7c2f4fb8e86aa077afd"
}
Frame {
msec: 1152
- hash: "21ebb054c5df6104bb01e0a8abe9b40c"
+ hash: "21a552133320008a4d4f77752a3cfb55"
}
Frame {
msec: 1168
- hash: "3ab8cdbe65ea34868c1a917e42d31c14"
+ hash: "3a30a4a785de21da0ff939e303202a81"
}
Frame {
msec: 1184
- hash: "05badd00be618fc4395e80936284613f"
+ hash: "b0e3ed2468538aacec354cb96d90c362"
}
Frame {
msec: 1200
- hash: "8a373ed9798a8dd33aab5191db06f190"
+ hash: "56bf6e3fe47e52046b443481fc17a3ec"
}
Key {
type: 7
@@ -402,27 +402,27 @@ VisualTest {
}
Frame {
msec: 1216
- hash: "2a8c6a7cd20fcf7b5c8b75c59f50276b"
+ hash: "ce80807cde9b902ebf33281fce50d9fb"
}
Frame {
msec: 1232
- hash: "2e874a6b741d1cbfde5544fb831bdf84"
+ hash: "ed67b18b5f7b90d3bcd9f662e70dc7b8"
}
Frame {
msec: 1248
- hash: "36e3d3a9a4e7163a1c052f30a97697dc"
+ hash: "930950ce5c6b12da47eea1b92d5176eb"
}
Frame {
msec: 1264
- hash: "fb18565ab22f6b397aef65a992c0dff8"
+ hash: "5a2eeca0f1533d323cc4d7ffbb7ad6aa"
}
Frame {
msec: 1280
- hash: "13763364dd631556988fe18afce23e84"
+ hash: "3f7f3ef2d4c1353dfe7027930505f4fd"
}
Frame {
msec: 1296
- hash: "2ea2995a7c022a4959eb1128d69907cc"
+ hash: "1a3a781ac5a1e90a4415944e0c54ea4e"
}
Key {
type: 6
@@ -434,7 +434,7 @@ VisualTest {
}
Frame {
msec: 1312
- hash: "88485c98b946476b52094c85702939d4"
+ hash: "d11dae0dd461fc82a73bf319905320d4"
}
Key {
type: 6
@@ -446,19 +446,19 @@ VisualTest {
}
Frame {
msec: 1328
- hash: "532586645946f17a274a3f7d1077e55b"
+ hash: "00957049ea51866138cfc33451f12e17"
}
Frame {
msec: 1344
- hash: "1702f1badb65f4039536c7255220a4b9"
+ hash: "386847af9b173db7ef1554d2c85c748e"
}
Frame {
msec: 1360
- hash: "7cd23a8548d9d2d7da78fa541d1ff9ba"
+ hash: "4b715060d29d6228a40217bc769fc140"
}
Frame {
msec: 1376
- hash: "42a4e0f3511d45f56e445737cbda49b5"
+ hash: "e58a9a3623afa08819351c22435ba03f"
}
Key {
type: 6
@@ -470,31 +470,31 @@ VisualTest {
}
Frame {
msec: 1392
- hash: "e326fff480404a41735b1567a784ba80"
+ hash: "6378e3faf5578818fc282de2a077da59"
}
Frame {
msec: 1408
- hash: "4d972a5cfa88e86c72dc1fa7430090e4"
+ hash: "07efb3687d29e65680e1cc831762348f"
}
Frame {
msec: 1424
- hash: "691c28e265d5cd253c06f6feff7ee536"
+ hash: "5292e7c95b3c5b11e4088b5010984257"
}
Frame {
msec: 1440
- hash: "3ebb2496ec085b92a8f130e4f54c26c9"
+ hash: "ffe95603f5fe9d63abb3b77c399c3b11"
}
Frame {
msec: 1456
- hash: "2447e98313dc850f58333c7aa630ef28"
+ hash: "ad7cb73893c27b69704c5b821738a3c1"
}
Frame {
msec: 1472
- hash: "9d8bc16d365e534e4e1feee7185db44f"
+ hash: "e25971a61888ded93b651891ec9661b0"
}
Frame {
msec: 1488
- hash: "9a4b9cb5396857f79eac3a0a4e1dc1b3"
+ hash: "80f90b3623bf34544438dd00abee7037"
}
Key {
type: 7
@@ -506,51 +506,51 @@ VisualTest {
}
Frame {
msec: 1504
- hash: "2d25e8fc011ec795e1596806a81be60d"
+ hash: "797dd70572e532d4acb374230b2c8efe"
}
Frame {
msec: 1520
- hash: "2fce48cf607cc3809ee1a9f59323e23a"
+ hash: "0673db1283d874a5711520f272572cf8"
}
Frame {
msec: 1536
- hash: "0fa177b9aa230dbcd5032a6ecddf604a"
+ hash: "fbc8434912f08a93b5f884258bc754b7"
}
Frame {
msec: 1552
- hash: "2dd53f15e0787337ce0590223e5ce788"
+ hash: "e41ebaf8f2114a6e8f38f731ea164e8a"
}
Frame {
msec: 1568
- hash: "385d08fa990f40a7a1d5fd61fa9fe7ae"
+ hash: "d14bdb5bf1b4756166ecf6f3255bf3cc"
}
Frame {
msec: 1584
- hash: "481401635bd419b8a30435135f61223f"
+ hash: "5fb04569aa0e530b898a3c11725b947e"
}
Frame {
msec: 1600
- hash: "d6600e6fcfd477100b7aab3509888512"
+ hash: "03d24457fae160864fec985765f6d8d1"
}
Frame {
msec: 1616
- hash: "4ede7ec537b56352dec575bbb7dbd482"
+ hash: "56dad740bb9032d113a0dacbe986c9c0"
}
Frame {
msec: 1632
- hash: "d4ff15c0dcf76dd7c97a0bf1901d688e"
+ hash: "70d9acda83aa7db59780cf56f03e38ec"
}
Frame {
msec: 1648
- hash: "d15c7df693dfb0ef48c30d5f73b34126"
+ hash: "a272e39bc1af0f4d1bab9c3f64e746e2"
}
Frame {
msec: 1664
- hash: "6dee0c6a00fb378692277914d22607e6"
+ hash: "cf0379de604b9bb33b4456cb89e09afd"
}
Frame {
msec: 1680
- hash: "8d74e52fca14ec36b266ace5113cac2b"
+ hash: "332e7a10d75c0d21a24fc8be34269629"
}
Key {
type: 6
@@ -562,31 +562,31 @@ VisualTest {
}
Frame {
msec: 1696
- hash: "a33b648bc08e2b0db4e04a28dc7f64a2"
+ hash: "c07eb71d90e74393205338bc946c1e43"
}
Frame {
msec: 1712
- hash: "04af2732e95351448a3a4e5a12eb2c0d"
+ hash: "984477de7c103ff3aebc2634785dce09"
}
Frame {
msec: 1728
- hash: "72795cad18792504420251987d814cc5"
+ hash: "958f79dd7c57387042746df2ca01779e"
}
Frame {
msec: 1744
- hash: "46e3c02ca6ea9c831b276c6f0ef954db"
+ hash: "53bb3f0718d6333ca40dc279b6300b85"
}
Frame {
msec: 1760
- hash: "42173174a90d470901cd543e2bd57225"
+ hash: "c16877cb99997cc47f1fff5af1d22bd7"
}
Frame {
msec: 1776
- hash: "57e7d302246a27430b1e60fdbdfc368a"
+ hash: "dea3e1eb6c72f0d37398e3e301a23c19"
}
Frame {
msec: 1792
- hash: "896b150b47d87ec3d279ab149195758e"
+ hash: "6bb7918f0794e6a7cbdb8847cdcf6e35"
}
Key {
type: 7
@@ -598,19 +598,19 @@ VisualTest {
}
Frame {
msec: 1808
- hash: "041240041c62b4cef6f329328eee2c6f"
+ hash: "6858cd874abb1ed2fec34862f76044fa"
}
Frame {
msec: 1824
- hash: "46e38ca8d4d827dc71719d662d433983"
+ hash: "47b546ea0d5b1d4573991d4738c37f4d"
}
Frame {
msec: 1840
- hash: "7d6ea4d357f0e916eaae3edd662bec9e"
+ hash: "6c9e636dee2bb5f2a72a2c08ab9fb970"
}
Frame {
msec: 1856
- hash: "b1214158b7f01fde56ec436baf88b98f"
+ hash: "42c2b2a7f41c88ae7bb19403e2460a17"
}
Key {
type: 7
@@ -622,7 +622,7 @@ VisualTest {
}
Frame {
msec: 1872
- hash: "22b59737bb8ef5ffc78f1ef4a707d328"
+ hash: "80b7986af693b89dc4d4f9533dae85cb"
}
Key {
type: 6
@@ -634,11 +634,11 @@ VisualTest {
}
Frame {
msec: 1888
- hash: "70b47f9af5373d4d5e0777eb169cbfe3"
+ hash: "631bea21dde9b7647f5843bc3513f3ba"
}
Frame {
msec: 1904
- hash: "d02ddd6f4b7169dcd114c519843eb855"
+ hash: "cc40335abbea0d589180096f7d8f5426"
}
Frame {
msec: 1920
@@ -646,31 +646,31 @@ VisualTest {
}
Frame {
msec: 1936
- hash: "5af4a21ba6e3b5e994557831d7063e92"
+ hash: "1c03b5384a889fe233eb1c6d14a55f36"
}
Frame {
msec: 1952
- hash: "97ef4122641ac4c49b9ef9a9dc1e5a0a"
+ hash: "7762cc4e6cf681311f5296de698c950b"
}
Frame {
msec: 1968
- hash: "7794188761d3efa4b47d4ab4c07208a3"
+ hash: "678eed1d1fec30b02156d690777397c1"
}
Frame {
msec: 1984
- hash: "4ca45c199693e767448016c4ccf1daaf"
+ hash: "96f51fee5c7baf78a3465420d63a9e5f"
}
Frame {
msec: 2000
- hash: "4ca45c199693e767448016c4ccf1daaf"
+ hash: "96f51fee5c7baf78a3465420d63a9e5f"
}
Frame {
msec: 2016
- hash: "4ca45c199693e767448016c4ccf1daaf"
+ hash: "96f51fee5c7baf78a3465420d63a9e5f"
}
Frame {
msec: 2032
- hash: "4ca45c199693e767448016c4ccf1daaf"
+ hash: "96f51fee5c7baf78a3465420d63a9e5f"
}
Key {
type: 7
@@ -682,7 +682,7 @@ VisualTest {
}
Frame {
msec: 2048
- hash: "4ca45c199693e767448016c4ccf1daaf"
+ hash: "96f51fee5c7baf78a3465420d63a9e5f"
}
Key {
type: 7
@@ -694,27 +694,27 @@ VisualTest {
}
Frame {
msec: 2064
- hash: "7794188761d3efa4b47d4ab4c07208a3"
+ hash: "678eed1d1fec30b02156d690777397c1"
}
Frame {
msec: 2080
- hash: "97ef4122641ac4c49b9ef9a9dc1e5a0a"
+ hash: "7762cc4e6cf681311f5296de698c950b"
}
Frame {
msec: 2096
- hash: "5af4a21ba6e3b5e994557831d7063e92"
+ hash: "1c03b5384a889fe233eb1c6d14a55f36"
}
Frame {
msec: 2112
- hash: "6f0f9bfa49f50ffd18ffe695cdc56d73"
+ hash: "2cd264339edc0338fc610e0d766425cc"
}
Frame {
msec: 2128
- hash: "d02ddd6f4b7169dcd114c519843eb855"
+ hash: "cc40335abbea0d589180096f7d8f5426"
}
Frame {
msec: 2144
- hash: "70b47f9af5373d4d5e0777eb169cbfe3"
+ hash: "631bea21dde9b7647f5843bc3513f3ba"
}
Key {
type: 6
@@ -726,27 +726,27 @@ VisualTest {
}
Frame {
msec: 2160
- hash: "9e770dcd2f33ad157e86d08752458daf"
+ hash: "c5199c908df1f550d7c4f133eb926134"
}
Frame {
msec: 2176
- hash: "b6c660ffd14bb756f87adb5cf836e97f"
+ hash: "483eca22c50750e7591785ed60813d1f"
}
Frame {
msec: 2192
- hash: "c498c154fcf2d66fc0981150e575033c"
+ hash: "4091de379d8f6ccc7f19ea39f6c7993a"
}
Frame {
msec: 2208
- hash: "29277da2d1d6251e18ab89331d5df61d"
+ hash: "cd58c0d4f7248315a787542b0edcb4fb"
}
Frame {
msec: 2224
- hash: "3c7588de81cbfbba8735da74de220128"
+ hash: "458895f9ede4d56e0b851c6ed124405d"
}
Frame {
msec: 2240
- hash: "4fa61e0644ce0942a30f05ad8d3f13f6"
+ hash: "29a28a97fc78a1b01252b852fb0446e2"
}
Key {
type: 7
@@ -758,31 +758,31 @@ VisualTest {
}
Frame {
msec: 2256
- hash: "3a90bb8b912d0be07e0e8b78407c54ff"
+ hash: "4fd9f22ad06e02b68319c298c2286e36"
}
Frame {
msec: 2272
- hash: "3d89454f0af4ab88ea67a075cb4e39b7"
+ hash: "a588e9dbeabd7519cd0cf2d26a123529"
}
Frame {
msec: 2288
- hash: "abdd589312402caea0b1c4f26ff6a1bf"
+ hash: "bb74f706477e277284fad50752f078b5"
}
Frame {
msec: 2304
- hash: "e6ab11dfb1965e94f5a42f2642ca0b30"
+ hash: "38f16a7deeaea6828edd15b00024fc19"
}
Frame {
msec: 2320
- hash: "c9fbfb63e19d1281b0c3a59504cd695c"
+ hash: "30c4aa33a6672f4df24186ad1e28bcf9"
}
Frame {
msec: 2336
- hash: "bc250ab3f5da66ecb0792a796b197149"
+ hash: "7f2ac0854ddbcca94a2ad160ead5d4d3"
}
Frame {
msec: 2352
- hash: "c5d26cd3ac3f87c77d716b912875b9de"
+ hash: "e1c083d0235ff5a2e002ce78f43009b0"
}
Key {
type: 6
@@ -802,23 +802,23 @@ VisualTest {
}
Frame {
msec: 2368
- hash: "bbe9837039b7ea1dfab8ed30c8a15724"
+ hash: "eaee6483a2a4a0b09a8e40bb1785a498"
}
Frame {
msec: 2384
- hash: "836f9f207d8197f8e6e8e9c49f83aa4e"
+ hash: "26530bded6311640c4d3f6d1485fa7d3"
}
Frame {
msec: 2400
- hash: "235d20a347a0f7b331e707ad7de93f95"
+ hash: "e54102edbf6cc0c9a32b09858f760ee5"
}
Frame {
msec: 2416
- hash: "7f422b624488525aede06c69996fc583"
+ hash: "27434828de3ba8f6a3b83f042b70eb8b"
}
Frame {
msec: 2432
- hash: "664bef152c87b3eb6729d9b46bad750c"
+ hash: "fdf68e988b988d068ea78a5a09ef349e"
}
Key {
type: 6
@@ -830,23 +830,23 @@ VisualTest {
}
Frame {
msec: 2448
- hash: "d32716cb4cb9fc8145029efb3fd1a32a"
+ hash: "0e1e9a2cf891cf65f30ead539becf408"
}
Frame {
msec: 2464
- hash: "17670e9d61ef2f9a0ec079b413ab546a"
+ hash: "46602c03632f6a47c9d523e1ea61baaf"
}
Frame {
msec: 2480
- hash: "6a3cbc70476d4e145a0e187ad7a73c52"
+ hash: "5c758ee2aa3f92b6506533f6d615bc20"
}
Frame {
msec: 2496
- hash: "aa0f4cf316026154c940261b4df848e3"
+ hash: "25edbdaae72e03426c9dfa75c08c33e6"
}
Frame {
msec: 2512
- hash: "2650d86c6aa82e4cc5e7ec4e2889f028"
+ hash: "a4bd11f15594932b996a069f3098c596"
}
Key {
type: 7
@@ -858,23 +858,23 @@ VisualTest {
}
Frame {
msec: 2528
- hash: "ab392121c99d4f8f5a3622c26761a57e"
+ hash: "e4090b920ce2456149155f61fb586a6f"
}
Frame {
msec: 2544
- hash: "4f1c4006a84d794a7eaf9932a6f7d3ea"
+ hash: "ce71f4dc76f90fa300d715ed77e8a5a8"
}
Frame {
msec: 2560
- hash: "f6387eb0678a78894f607a7ff186bd19"
+ hash: "59414694d42a3942c4832fd7a3e93145"
}
Frame {
msec: 2576
- hash: "b14cb2545cb2cc055b914618d5086425"
+ hash: "1213fc9d9c1d58ceefc213a59f970679"
}
Frame {
msec: 2592
- hash: "e31ebced4421e9d5092950d373f9a4e9"
+ hash: "bbfa8471ab3fa5fc146946a6c8e0ce86"
}
Key {
type: 6
@@ -886,15 +886,15 @@ VisualTest {
}
Frame {
msec: 2608
- hash: "b2177f1eed72624c4f6e4bd59902db16"
+ hash: "22a49c3b5234b4b7a2b935d58027f834"
}
Frame {
msec: 2624
- hash: "9ade9a8b436bb9481e8135b7342070ff"
+ hash: "7b81c14d5350fb55775c1cb0f3945c46"
}
Frame {
msec: 2640
- hash: "4bdbc37f8ecac1a8aae182cb3e6bf1fa"
+ hash: "8ebf266de0df228e47cc6e5a8758a6ea"
}
Key {
type: 7
@@ -906,23 +906,23 @@ VisualTest {
}
Frame {
msec: 2656
- hash: "3bf69edaa0eec73246c52f310079a15d"
+ hash: "6344eb333dc28672f863bcb7ca5d6cfe"
}
Frame {
msec: 2672
- hash: "add80b7fde2865bb23ccb46a03b5604c"
+ hash: "8efc9b4a6c27b8918cba629a5a1c0f24"
}
Frame {
msec: 2688
- hash: "6259b8d763f468054f35c87f4ba47d30"
+ hash: "b586c24ce0c04391a9095c0ac4b7a05a"
}
Frame {
msec: 2704
- hash: "1dd94dcd8c7f651811f1b962a75962be"
+ hash: "191413fe51a6887ae92c135252fdeeae"
}
Frame {
msec: 2720
- hash: "f813c62008a3880d079cb1c0be9a03e1"
+ hash: "fc0b37abf12827af41e7037eab8ba5c8"
}
Key {
type: 6
@@ -934,19 +934,19 @@ VisualTest {
}
Frame {
msec: 2736
- hash: "4e776b52bce5b0e0ee46f9feff684a90"
+ hash: "5efe28d02b93e094192d7fd6fe753acd"
}
Frame {
msec: 2752
- hash: "cd2c2b6e9d05b521214eeab29e89d7c4"
+ hash: "dadc1f7b14fbf9f8a174821c4197da46"
}
Frame {
msec: 2768
- hash: "8605360fcf3f24372463827a1d3f93c6"
+ hash: "124deac57a3eeaef4cb3c0c802bacc05"
}
Frame {
msec: 2784
- hash: "03b734ffb679f8718999c4e060a2febb"
+ hash: "e022a6d66a7b37d72885a7a7f6919433"
}
Key {
type: 7
@@ -958,23 +958,23 @@ VisualTest {
}
Frame {
msec: 2800
- hash: "43e2020cd127ce541b54ba7814c9ba74"
+ hash: "5faa6543469753948b1636351d044329"
}
Frame {
msec: 2816
- hash: "9c1774f8ae01e37aac05d27567d3cec6"
+ hash: "a7dcf5a0b9bb00105eed173b498cb95c"
}
Frame {
msec: 2832
- hash: "6c4a7a200eba8b6c5c0b5b75d8a88811"
+ hash: "29ac83d169af2c74ffd134d771c88718"
}
Frame {
msec: 2848
- hash: "21d88afb0f05ace0710da47af275d827"
+ hash: "0a04648fdc90ec86fb55ad3a165573c4"
}
Frame {
msec: 2864
- hash: "42b56667390aa2db6d593b7af9a5021a"
+ hash: "d699c713ba939612f1e552e48db19b18"
}
Frame {
msec: 2880
@@ -982,51 +982,51 @@ VisualTest {
}
Frame {
msec: 2896
- hash: "5897cafae19f8842f53a54b75e36f22d"
+ hash: "adf564652cfae394869755ff2fe5b534"
}
Frame {
msec: 2912
- hash: "11cacddae5d5361b7e87696808ac2905"
+ hash: "d1453f663217ee45a8462b7d077d7f6a"
}
Frame {
msec: 2928
- hash: "2cc3dcb900ab2bffd52fb61fff108043"
+ hash: "9f1461d63ccc49f83e58245ba75685e1"
}
Frame {
msec: 2944
- hash: "8938b8c7254873197e409206c1c20ad4"
+ hash: "8cece1543e7e9190eefaa92c2024cbd1"
}
Frame {
msec: 2960
- hash: "e343d647f236969530d0b076c3375f1a"
+ hash: "555abf8bc3fdb1eef85b1e4bd54932a3"
}
Frame {
msec: 2976
- hash: "5e39a0f9bdc45a7a288f59b7cbbf749d"
+ hash: "7fc65284b99fc548de0985d94a145fa7"
}
Frame {
msec: 2992
- hash: "5e39a0f9bdc45a7a288f59b7cbbf749d"
+ hash: "7fc65284b99fc548de0985d94a145fa7"
}
Frame {
msec: 3008
- hash: "5e39a0f9bdc45a7a288f59b7cbbf749d"
+ hash: "7fc65284b99fc548de0985d94a145fa7"
}
Frame {
msec: 3024
- hash: "5e39a0f9bdc45a7a288f59b7cbbf749d"
+ hash: "7fc65284b99fc548de0985d94a145fa7"
}
Frame {
msec: 3040
- hash: "5e39a0f9bdc45a7a288f59b7cbbf749d"
+ hash: "7fc65284b99fc548de0985d94a145fa7"
}
Frame {
msec: 3056
- hash: "5e39a0f9bdc45a7a288f59b7cbbf749d"
+ hash: "7fc65284b99fc548de0985d94a145fa7"
}
Frame {
msec: 3072
- hash: "e343d647f236969530d0b076c3375f1a"
+ hash: "555abf8bc3fdb1eef85b1e4bd54932a3"
}
Key {
type: 6
@@ -1038,23 +1038,23 @@ VisualTest {
}
Frame {
msec: 3088
- hash: "ac4898002fdc5ea7894d741cac863c8d"
+ hash: "996da2eff9302908a55308dbcc8fb3c2"
}
Frame {
msec: 3104
- hash: "eda67cb2d32f3f605a74a01148f04c99"
+ hash: "6ccc70f6120acb53152b71bcf95514ca"
}
Frame {
msec: 3120
- hash: "13e84656ef70bf07e2a444d60ac933e1"
+ hash: "51a1b8e79d209643d55d4cecc6a70ed0"
}
Frame {
msec: 3136
- hash: "9d624eebe5824fc5d4a89a04f2d776a3"
+ hash: "944dc7026c6487838ede9ef94003ec90"
}
Frame {
msec: 3152
- hash: "2c7d542f60c68e16377d3c5afea0f4e3"
+ hash: "4abbd51b620ac4ea91af95bc2d0881d7"
}
Key {
type: 7
@@ -1066,27 +1066,27 @@ VisualTest {
}
Frame {
msec: 3168
- hash: "7db8d678bd1890010b2a1b9bb732c17c"
+ hash: "ba721988a1708b8c0762d706820c48fc"
}
Frame {
msec: 3184
- hash: "6d6f4cc1193b73c65db893c3f983d9f0"
+ hash: "5dba56a5bb5f8a6539a0066af35c73b8"
}
Frame {
msec: 3200
- hash: "d4e8985ad4d14436a87db45585fca946"
+ hash: "bc3efeeebe7075cd09a6e57eef43d610"
}
Frame {
msec: 3216
- hash: "495b67926e9002a43e2d251b8c96564f"
+ hash: "0bd9f7de32b01d8144280bf252d9a18f"
}
Frame {
msec: 3232
- hash: "3b2dd937cfb6cd57884f3b813f3d4129"
+ hash: "29db710e47b13f26e2bf92568d52bf52"
}
Frame {
msec: 3248
- hash: "02a5902af43990021465a7df9d479982"
+ hash: "a27c65c0a49deb18b0766bba41a32e54"
}
Key {
type: 6
@@ -1098,31 +1098,31 @@ VisualTest {
}
Frame {
msec: 3264
- hash: "5b14b471fffa401affc954871662e6a8"
+ hash: "484ee552e1a9c5eafcfe1ac583fcdffd"
}
Frame {
msec: 3280
- hash: "bbe03a2ea1e5b788c79d9551bd317a2d"
+ hash: "40b336a0e337b66d813089a82a88c712"
}
Frame {
msec: 3296
- hash: "10b49692f820311b8bfbc0f87c05e993"
+ hash: "b7a8d4b8bb2b83e4c886aa51c1a73895"
}
Frame {
msec: 3312
- hash: "928ee5d4ca3c31a879f82b5b4f6d1912"
+ hash: "43b3bf8425e7a6b7115d8e6a0bcfd677"
}
Frame {
msec: 3328
- hash: "9f3ea4149963d467be28fcf26a43e6d6"
+ hash: "e2ce168241b043db74867fe7ed6de956"
}
Frame {
msec: 3344
- hash: "f2ec87d7c4f6bbecc771270062e25d14"
+ hash: "0c713bbd7bb694d87f0fe14f87098b9b"
}
Frame {
msec: 3360
- hash: "f181b9aeccdecd486550c2a69e57a63f"
+ hash: "316f6bd365ca4b4f2e6fbf34a047e307"
}
Key {
type: 7
@@ -1134,39 +1134,39 @@ VisualTest {
}
Frame {
msec: 3376
- hash: "ce871b1784464b56728eeb0140ad689c"
+ hash: "421fb8881fe7b300dcec0f44ff1743e3"
}
Frame {
msec: 3392
- hash: "8d1b19921c7ee633f423b3f8c1f07e6a"
+ hash: "e8376079434393467b47a56ff00efb2b"
}
Frame {
msec: 3408
- hash: "451973c72f86fc3425c31da3311d625c"
+ hash: "63259de84a6e07d42c9df94ec2a25920"
}
Frame {
msec: 3424
- hash: "64301801af58f7a9c5ea32c33eb988e2"
+ hash: "f9194d82b81f5ac58862c382caf5cf59"
}
Frame {
msec: 3440
- hash: "3406ff52f3829c56ff3b29558d6fd11c"
+ hash: "e185f2594f038532a37b351384dc97ea"
}
Frame {
msec: 3456
- hash: "0952802094d7d7f105d7f50f36c02530"
+ hash: "91edc3ca1e6c532bd92006a761073da2"
}
Frame {
msec: 3472
- hash: "daddc3aa8ae9970cc111e981adcdd9bb"
+ hash: "b47390495539756048ccc71047ebef7b"
}
Frame {
msec: 3488
- hash: "491e3241705cdc2917c6560cece6188e"
+ hash: "7c83d3bdb9abf8ab2cfe7f9464673a49"
}
Frame {
msec: 3504
- hash: "cefbdc87c704e72145e878fc944c621f"
+ hash: "b686f4013f45885ab794aba9ff491286"
}
Key {
type: 7
@@ -1178,11 +1178,11 @@ VisualTest {
}
Frame {
msec: 3520
- hash: "3427e88f200a1ac2d4596cb2fec0ae66"
+ hash: "0c55d6ea330b7365825864d4bdacafcb"
}
Frame {
msec: 3536
- hash: "62eef650b45f3c2fa425d1bff88a01a7"
+ hash: "2bb72f191201572308e461021872fb4c"
}
Key {
type: 7
@@ -1194,75 +1194,75 @@ VisualTest {
}
Frame {
msec: 3552
- hash: "9945cda3cf5c22d8c83b19b0f69e4e09"
+ hash: "81b04a84982698ee80d13d392742edd3"
}
Frame {
msec: 3568
- hash: "80fcd1194d1bc3e010ddc6ba224f3d40"
+ hash: "63f582dc2a9f707c1ec99f4285d13a84"
}
Frame {
msec: 3584
- hash: "59da897870a7e235a67defaff1f8f4e4"
+ hash: "f91cb29101f80f5dcb1e9e8c82e823b7"
}
Frame {
msec: 3600
- hash: "664bef152c87b3eb6729d9b46bad750c"
+ hash: "fdf68e988b988d068ea78a5a09ef349e"
}
Frame {
msec: 3616
- hash: "7f422b624488525aede06c69996fc583"
+ hash: "27434828de3ba8f6a3b83f042b70eb8b"
}
Frame {
msec: 3632
- hash: "235d20a347a0f7b331e707ad7de93f95"
+ hash: "e54102edbf6cc0c9a32b09858f760ee5"
}
Frame {
msec: 3648
- hash: "836f9f207d8197f8e6e8e9c49f83aa4e"
+ hash: "26530bded6311640c4d3f6d1485fa7d3"
}
Frame {
msec: 3664
- hash: "bbe9837039b7ea1dfab8ed30c8a15724"
+ hash: "eaee6483a2a4a0b09a8e40bb1785a498"
}
Frame {
msec: 3680
- hash: "c5d26cd3ac3f87c77d716b912875b9de"
+ hash: "e1c083d0235ff5a2e002ce78f43009b0"
}
Frame {
msec: 3696
- hash: "bc250ab3f5da66ecb0792a796b197149"
+ hash: "7f2ac0854ddbcca94a2ad160ead5d4d3"
}
Frame {
msec: 3712
- hash: "c9fbfb63e19d1281b0c3a59504cd695c"
+ hash: "30c4aa33a6672f4df24186ad1e28bcf9"
}
Frame {
msec: 3728
- hash: "e6ab11dfb1965e94f5a42f2642ca0b30"
+ hash: "38f16a7deeaea6828edd15b00024fc19"
}
Frame {
msec: 3744
- hash: "abdd589312402caea0b1c4f26ff6a1bf"
+ hash: "bb74f706477e277284fad50752f078b5"
}
Frame {
msec: 3760
- hash: "3d89454f0af4ab88ea67a075cb4e39b7"
+ hash: "a588e9dbeabd7519cd0cf2d26a123529"
}
Frame {
msec: 3776
- hash: "3a90bb8b912d0be07e0e8b78407c54ff"
+ hash: "4fd9f22ad06e02b68319c298c2286e36"
}
Frame {
msec: 3792
- hash: "4fa61e0644ce0942a30f05ad8d3f13f6"
+ hash: "29a28a97fc78a1b01252b852fb0446e2"
}
Frame {
msec: 3808
- hash: "3c7588de81cbfbba8735da74de220128"
+ hash: "458895f9ede4d56e0b851c6ed124405d"
}
Frame {
msec: 3824
- hash: "29277da2d1d6251e18ab89331d5df61d"
+ hash: "cd58c0d4f7248315a787542b0edcb4fb"
}
Frame {
msec: 3840
@@ -1270,239 +1270,239 @@ VisualTest {
}
Frame {
msec: 3856
- hash: "b6c660ffd14bb756f87adb5cf836e97f"
+ hash: "483eca22c50750e7591785ed60813d1f"
}
Frame {
msec: 3872
- hash: "9e770dcd2f33ad157e86d08752458daf"
+ hash: "c5199c908df1f550d7c4f133eb926134"
}
Frame {
msec: 3888
- hash: "4c9421ff4dc80e555ac5ba4a02d0c5be"
+ hash: "efaa5e4483ed9cfec792e8f270b5079e"
}
Frame {
msec: 3904
- hash: "dcbfc9f6300363d03aa869ce3d58e6fe"
+ hash: "7ffcff87e27dcb0be0047eb6fbcc9549"
}
Frame {
msec: 3920
- hash: "491f07f2498598cf57b368ff880f85f5"
+ hash: "04339417259ddee10134e1479729ae1b"
}
Frame {
msec: 3936
- hash: "ea356dc3ef6aa6ca67e58b7b2f6912e4"
+ hash: "0f1e6a0d9db7b6b8b874333682866ffa"
}
Frame {
msec: 3952
- hash: "8575a99b28bb5b8c2d01a5ed91f25d47"
+ hash: "66500c2cc3d69b9fb48dc46e384aca6d"
}
Frame {
msec: 3968
- hash: "7f83ba29fd27aa4817b7b84afbc8d6d7"
+ hash: "70d6b73499c36138bee63e07afb0b186"
}
Frame {
msec: 3984
- hash: "0173dd60a64da4c06fa9a398d2c98206"
+ hash: "c526315dd5eec117266c68a7b6b64a3f"
}
Frame {
msec: 4000
- hash: "0173dd60a64da4c06fa9a398d2c98206"
+ hash: "c526315dd5eec117266c68a7b6b64a3f"
}
Frame {
msec: 4016
- hash: "0173dd60a64da4c06fa9a398d2c98206"
+ hash: "c526315dd5eec117266c68a7b6b64a3f"
}
Frame {
msec: 4032
- hash: "0173dd60a64da4c06fa9a398d2c98206"
+ hash: "c526315dd5eec117266c68a7b6b64a3f"
}
Frame {
msec: 4048
- hash: "0173dd60a64da4c06fa9a398d2c98206"
+ hash: "c526315dd5eec117266c68a7b6b64a3f"
}
Frame {
msec: 4064
- hash: "7f83ba29fd27aa4817b7b84afbc8d6d7"
+ hash: "70d6b73499c36138bee63e07afb0b186"
}
Frame {
msec: 4080
- hash: "8575a99b28bb5b8c2d01a5ed91f25d47"
+ hash: "66500c2cc3d69b9fb48dc46e384aca6d"
}
Frame {
msec: 4096
- hash: "ea356dc3ef6aa6ca67e58b7b2f6912e4"
+ hash: "0f1e6a0d9db7b6b8b874333682866ffa"
}
Frame {
msec: 4112
- hash: "491f07f2498598cf57b368ff880f85f5"
+ hash: "04339417259ddee10134e1479729ae1b"
}
Frame {
msec: 4128
- hash: "dcbfc9f6300363d03aa869ce3d58e6fe"
+ hash: "7ffcff87e27dcb0be0047eb6fbcc9549"
}
Frame {
msec: 4144
- hash: "4c9421ff4dc80e555ac5ba4a02d0c5be"
+ hash: "efaa5e4483ed9cfec792e8f270b5079e"
}
Frame {
msec: 4160
- hash: "9e770dcd2f33ad157e86d08752458daf"
+ hash: "c5199c908df1f550d7c4f133eb926134"
}
Frame {
msec: 4176
- hash: "b6c660ffd14bb756f87adb5cf836e97f"
+ hash: "483eca22c50750e7591785ed60813d1f"
}
Frame {
msec: 4192
- hash: "c498c154fcf2d66fc0981150e575033c"
+ hash: "4091de379d8f6ccc7f19ea39f6c7993a"
}
Frame {
msec: 4208
- hash: "29277da2d1d6251e18ab89331d5df61d"
+ hash: "cd58c0d4f7248315a787542b0edcb4fb"
}
Frame {
msec: 4224
- hash: "3c7588de81cbfbba8735da74de220128"
+ hash: "458895f9ede4d56e0b851c6ed124405d"
}
Frame {
msec: 4240
- hash: "4fa61e0644ce0942a30f05ad8d3f13f6"
+ hash: "29a28a97fc78a1b01252b852fb0446e2"
}
Frame {
msec: 4256
- hash: "3a90bb8b912d0be07e0e8b78407c54ff"
+ hash: "4fd9f22ad06e02b68319c298c2286e36"
}
Frame {
msec: 4272
- hash: "3d89454f0af4ab88ea67a075cb4e39b7"
+ hash: "a588e9dbeabd7519cd0cf2d26a123529"
}
Frame {
msec: 4288
- hash: "abdd589312402caea0b1c4f26ff6a1bf"
+ hash: "bb74f706477e277284fad50752f078b5"
}
Frame {
msec: 4304
- hash: "e6ab11dfb1965e94f5a42f2642ca0b30"
+ hash: "38f16a7deeaea6828edd15b00024fc19"
}
Frame {
msec: 4320
- hash: "c9fbfb63e19d1281b0c3a59504cd695c"
+ hash: "30c4aa33a6672f4df24186ad1e28bcf9"
}
Frame {
msec: 4336
- hash: "bc250ab3f5da66ecb0792a796b197149"
+ hash: "7f2ac0854ddbcca94a2ad160ead5d4d3"
}
Frame {
msec: 4352
- hash: "c5d26cd3ac3f87c77d716b912875b9de"
+ hash: "e1c083d0235ff5a2e002ce78f43009b0"
}
Frame {
msec: 4368
- hash: "bbe9837039b7ea1dfab8ed30c8a15724"
+ hash: "eaee6483a2a4a0b09a8e40bb1785a498"
}
Frame {
msec: 4384
- hash: "836f9f207d8197f8e6e8e9c49f83aa4e"
+ hash: "26530bded6311640c4d3f6d1485fa7d3"
}
Frame {
msec: 4400
- hash: "235d20a347a0f7b331e707ad7de93f95"
+ hash: "e54102edbf6cc0c9a32b09858f760ee5"
}
Frame {
msec: 4416
- hash: "7f422b624488525aede06c69996fc583"
+ hash: "27434828de3ba8f6a3b83f042b70eb8b"
}
Frame {
msec: 4432
- hash: "664bef152c87b3eb6729d9b46bad750c"
+ hash: "fdf68e988b988d068ea78a5a09ef349e"
}
Frame {
msec: 4448
- hash: "59da897870a7e235a67defaff1f8f4e4"
+ hash: "f91cb29101f80f5dcb1e9e8c82e823b7"
}
Frame {
msec: 4464
- hash: "80fcd1194d1bc3e010ddc6ba224f3d40"
+ hash: "63f582dc2a9f707c1ec99f4285d13a84"
}
Frame {
msec: 4480
- hash: "9945cda3cf5c22d8c83b19b0f69e4e09"
+ hash: "81b04a84982698ee80d13d392742edd3"
}
Frame {
msec: 4496
- hash: "62eef650b45f3c2fa425d1bff88a01a7"
+ hash: "2bb72f191201572308e461021872fb4c"
}
Frame {
msec: 4512
- hash: "3427e88f200a1ac2d4596cb2fec0ae66"
+ hash: "0c55d6ea330b7365825864d4bdacafcb"
}
Frame {
msec: 4528
- hash: "cefbdc87c704e72145e878fc944c621f"
+ hash: "b686f4013f45885ab794aba9ff491286"
}
Frame {
msec: 4544
- hash: "491e3241705cdc2917c6560cece6188e"
+ hash: "7c83d3bdb9abf8ab2cfe7f9464673a49"
}
Frame {
msec: 4560
- hash: "daddc3aa8ae9970cc111e981adcdd9bb"
+ hash: "b47390495539756048ccc71047ebef7b"
}
Frame {
msec: 4576
- hash: "0952802094d7d7f105d7f50f36c02530"
+ hash: "91edc3ca1e6c532bd92006a761073da2"
}
Frame {
msec: 4592
- hash: "3406ff52f3829c56ff3b29558d6fd11c"
+ hash: "e185f2594f038532a37b351384dc97ea"
}
Frame {
msec: 4608
- hash: "64301801af58f7a9c5ea32c33eb988e2"
+ hash: "f9194d82b81f5ac58862c382caf5cf59"
}
Frame {
msec: 4624
- hash: "451973c72f86fc3425c31da3311d625c"
+ hash: "63259de84a6e07d42c9df94ec2a25920"
}
Frame {
msec: 4640
- hash: "8d1b19921c7ee633f423b3f8c1f07e6a"
+ hash: "e8376079434393467b47a56ff00efb2b"
}
Frame {
msec: 4656
- hash: "ce871b1784464b56728eeb0140ad689c"
+ hash: "421fb8881fe7b300dcec0f44ff1743e3"
}
Frame {
msec: 4672
- hash: "f181b9aeccdecd486550c2a69e57a63f"
+ hash: "316f6bd365ca4b4f2e6fbf34a047e307"
}
Frame {
msec: 4688
- hash: "f2ec87d7c4f6bbecc771270062e25d14"
+ hash: "0c713bbd7bb694d87f0fe14f87098b9b"
}
Frame {
msec: 4704
- hash: "9f3ea4149963d467be28fcf26a43e6d6"
+ hash: "e2ce168241b043db74867fe7ed6de956"
}
Frame {
msec: 4720
- hash: "928ee5d4ca3c31a879f82b5b4f6d1912"
+ hash: "43b3bf8425e7a6b7115d8e6a0bcfd677"
}
Frame {
msec: 4736
- hash: "10b49692f820311b8bfbc0f87c05e993"
+ hash: "b7a8d4b8bb2b83e4c886aa51c1a73895"
}
Frame {
msec: 4752
- hash: "bbe03a2ea1e5b788c79d9551bd317a2d"
+ hash: "40b336a0e337b66d813089a82a88c712"
}
Frame {
msec: 4768
- hash: "5b14b471fffa401affc954871662e6a8"
+ hash: "484ee552e1a9c5eafcfe1ac583fcdffd"
}
Frame {
msec: 4784
- hash: "02a5902af43990021465a7df9d479982"
+ hash: "a27c65c0a49deb18b0766bba41a32e54"
}
Frame {
msec: 4800
@@ -1510,42 +1510,42 @@ VisualTest {
}
Frame {
msec: 4816
- hash: "495b67926e9002a43e2d251b8c96564f"
+ hash: "0bd9f7de32b01d8144280bf252d9a18f"
}
Frame {
msec: 4832
- hash: "d4e8985ad4d14436a87db45585fca946"
+ hash: "bc3efeeebe7075cd09a6e57eef43d610"
}
Frame {
msec: 4848
- hash: "6d6f4cc1193b73c65db893c3f983d9f0"
+ hash: "5dba56a5bb5f8a6539a0066af35c73b8"
}
Frame {
msec: 4864
- hash: "7db8d678bd1890010b2a1b9bb732c17c"
+ hash: "ba721988a1708b8c0762d706820c48fc"
}
Frame {
msec: 4880
- hash: "2c7d542f60c68e16377d3c5afea0f4e3"
+ hash: "4abbd51b620ac4ea91af95bc2d0881d7"
}
Frame {
msec: 4896
- hash: "9d624eebe5824fc5d4a89a04f2d776a3"
+ hash: "944dc7026c6487838ede9ef94003ec90"
}
Frame {
msec: 4912
- hash: "13e84656ef70bf07e2a444d60ac933e1"
+ hash: "51a1b8e79d209643d55d4cecc6a70ed0"
}
Frame {
msec: 4928
- hash: "eda67cb2d32f3f605a74a01148f04c99"
+ hash: "6ccc70f6120acb53152b71bcf95514ca"
}
Frame {
msec: 4944
- hash: "ac4898002fdc5ea7894d741cac863c8d"
+ hash: "996da2eff9302908a55308dbcc8fb3c2"
}
Frame {
msec: 4960
- hash: "2e95c1966c94acccd2a44a6c2942d36d"
+ hash: "264f34128dfe563126b9f187c65df61e"
}
}
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 a4d7bef..57a1599 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.0.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.1.png
index a8aee18..d327d5b 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.1.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.1.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.2.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.2.png
index 799f422..c1e3dce 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.2.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.2.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.qml
index bbeb532..9a26f57 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.qml
@@ -6,11 +6,11 @@ VisualTest {
}
Frame {
msec: 16
- hash: "3ea9888b1213bb799bdb01ed0eff2a78"
+ hash: "0e7c7dc19aab217751411568b58830ef"
}
Frame {
msec: 32
- hash: "3ea9888b1213bb799bdb01ed0eff2a78"
+ hash: "0e7c7dc19aab217751411568b58830ef"
}
Key {
type: 6
@@ -22,83 +22,83 @@ VisualTest {
}
Frame {
msec: 48
- hash: "3ea9888b1213bb799bdb01ed0eff2a78"
+ hash: "0e7c7dc19aab217751411568b58830ef"
}
Frame {
msec: 64
- hash: "3ea9888b1213bb799bdb01ed0eff2a78"
+ hash: "0e7c7dc19aab217751411568b58830ef"
}
Frame {
msec: 80
- hash: "3ea9888b1213bb799bdb01ed0eff2a78"
+ hash: "0e7c7dc19aab217751411568b58830ef"
}
Frame {
msec: 96
- hash: "3ea9888b1213bb799bdb01ed0eff2a78"
+ hash: "0e7c7dc19aab217751411568b58830ef"
}
Frame {
msec: 112
- hash: "3ea9888b1213bb799bdb01ed0eff2a78"
+ hash: "0e7c7dc19aab217751411568b58830ef"
}
Frame {
msec: 128
- hash: "3ea9888b1213bb799bdb01ed0eff2a78"
+ hash: "0e7c7dc19aab217751411568b58830ef"
}
Frame {
msec: 144
- hash: "3ea9888b1213bb799bdb01ed0eff2a78"
+ hash: "0e7c7dc19aab217751411568b58830ef"
}
Frame {
msec: 160
- hash: "3ea9888b1213bb799bdb01ed0eff2a78"
+ hash: "0e7c7dc19aab217751411568b58830ef"
}
Frame {
msec: 176
- hash: "3ea9888b1213bb799bdb01ed0eff2a78"
+ hash: "0e7c7dc19aab217751411568b58830ef"
}
Frame {
msec: 192
- hash: "3ea9888b1213bb799bdb01ed0eff2a78"
+ hash: "0e7c7dc19aab217751411568b58830ef"
}
Frame {
msec: 208
- hash: "3ea9888b1213bb799bdb01ed0eff2a78"
+ hash: "0e7c7dc19aab217751411568b58830ef"
}
Frame {
msec: 224
- hash: "3ea9888b1213bb799bdb01ed0eff2a78"
+ hash: "0e7c7dc19aab217751411568b58830ef"
}
Frame {
msec: 240
- hash: "3ea9888b1213bb799bdb01ed0eff2a78"
+ hash: "0e7c7dc19aab217751411568b58830ef"
}
Frame {
msec: 256
- hash: "3ea9888b1213bb799bdb01ed0eff2a78"
+ hash: "0e7c7dc19aab217751411568b58830ef"
}
Frame {
msec: 272
- hash: "3ea9888b1213bb799bdb01ed0eff2a78"
+ hash: "0e7c7dc19aab217751411568b58830ef"
}
Frame {
msec: 288
- hash: "3ea9888b1213bb799bdb01ed0eff2a78"
+ hash: "0e7c7dc19aab217751411568b58830ef"
}
Frame {
msec: 304
- hash: "3ea9888b1213bb799bdb01ed0eff2a78"
+ hash: "0e7c7dc19aab217751411568b58830ef"
}
Frame {
msec: 320
- hash: "3ea9888b1213bb799bdb01ed0eff2a78"
+ hash: "0e7c7dc19aab217751411568b58830ef"
}
Frame {
msec: 336
- hash: "3ea9888b1213bb799bdb01ed0eff2a78"
+ hash: "0e7c7dc19aab217751411568b58830ef"
}
Frame {
msec: 352
- hash: "3ea9888b1213bb799bdb01ed0eff2a78"
+ hash: "0e7c7dc19aab217751411568b58830ef"
}
Key {
type: 6
@@ -110,23 +110,23 @@ VisualTest {
}
Frame {
msec: 368
- hash: "d070b6581fd109ce278cf4a8c41a6549"
+ hash: "d3151ba24f0011bf1add83377f32ec85"
}
Frame {
msec: 384
- hash: "d070b6581fd109ce278cf4a8c41a6549"
+ hash: "d3151ba24f0011bf1add83377f32ec85"
}
Frame {
msec: 400
- hash: "d070b6581fd109ce278cf4a8c41a6549"
+ hash: "d3151ba24f0011bf1add83377f32ec85"
}
Frame {
msec: 416
- hash: "d070b6581fd109ce278cf4a8c41a6549"
+ hash: "d3151ba24f0011bf1add83377f32ec85"
}
Frame {
msec: 432
- hash: "d070b6581fd109ce278cf4a8c41a6549"
+ hash: "d3151ba24f0011bf1add83377f32ec85"
}
Key {
type: 7
@@ -138,27 +138,27 @@ VisualTest {
}
Frame {
msec: 448
- hash: "d070b6581fd109ce278cf4a8c41a6549"
+ hash: "d3151ba24f0011bf1add83377f32ec85"
}
Frame {
msec: 464
- hash: "d070b6581fd109ce278cf4a8c41a6549"
+ hash: "d3151ba24f0011bf1add83377f32ec85"
}
Frame {
msec: 480
- hash: "6a80a729e85f8dab98155e115a4193cc"
+ hash: "d3151ba24f0011bf1add83377f32ec85"
}
Frame {
msec: 496
- hash: "6a80a729e85f8dab98155e115a4193cc"
+ hash: "d3151ba24f0011bf1add83377f32ec85"
}
Frame {
msec: 512
- hash: "6a80a729e85f8dab98155e115a4193cc"
+ hash: "d3151ba24f0011bf1add83377f32ec85"
}
Frame {
msec: 528
- hash: "6a80a729e85f8dab98155e115a4193cc"
+ hash: "d3151ba24f0011bf1add83377f32ec85"
}
Key {
type: 7
@@ -170,43 +170,43 @@ VisualTest {
}
Frame {
msec: 544
- hash: "6a80a729e85f8dab98155e115a4193cc"
+ hash: "d3151ba24f0011bf1add83377f32ec85"
}
Frame {
msec: 560
- hash: "6a80a729e85f8dab98155e115a4193cc"
+ hash: "d3151ba24f0011bf1add83377f32ec85"
}
Frame {
msec: 576
- hash: "6a80a729e85f8dab98155e115a4193cc"
+ hash: "d3151ba24f0011bf1add83377f32ec85"
}
Frame {
msec: 592
- hash: "6a80a729e85f8dab98155e115a4193cc"
+ hash: "d3151ba24f0011bf1add83377f32ec85"
}
Frame {
msec: 608
- hash: "6a80a729e85f8dab98155e115a4193cc"
+ hash: "d3151ba24f0011bf1add83377f32ec85"
}
Frame {
msec: 624
- hash: "6a80a729e85f8dab98155e115a4193cc"
+ hash: "d3151ba24f0011bf1add83377f32ec85"
}
Frame {
msec: 640
- hash: "6a80a729e85f8dab98155e115a4193cc"
+ hash: "d3151ba24f0011bf1add83377f32ec85"
}
Frame {
msec: 656
- hash: "6a80a729e85f8dab98155e115a4193cc"
+ hash: "d3151ba24f0011bf1add83377f32ec85"
}
Frame {
msec: 672
- hash: "6a80a729e85f8dab98155e115a4193cc"
+ hash: "d3151ba24f0011bf1add83377f32ec85"
}
Frame {
msec: 688
- hash: "6a80a729e85f8dab98155e115a4193cc"
+ hash: "d3151ba24f0011bf1add83377f32ec85"
}
Key {
type: 6
@@ -218,23 +218,23 @@ VisualTest {
}
Frame {
msec: 704
- hash: "fd47d9eaea89d6a731bdd70b39b2bc54"
+ hash: "6b7c333ce19fede43aee84cc66c4c1bc"
}
Frame {
msec: 720
- hash: "fd47d9eaea89d6a731bdd70b39b2bc54"
+ hash: "6b7c333ce19fede43aee84cc66c4c1bc"
}
Frame {
msec: 736
- hash: "fd47d9eaea89d6a731bdd70b39b2bc54"
+ hash: "6b7c333ce19fede43aee84cc66c4c1bc"
}
Frame {
msec: 752
- hash: "fd47d9eaea89d6a731bdd70b39b2bc54"
+ hash: "6b7c333ce19fede43aee84cc66c4c1bc"
}
Frame {
msec: 768
- hash: "fd47d9eaea89d6a731bdd70b39b2bc54"
+ hash: "6b7c333ce19fede43aee84cc66c4c1bc"
}
Key {
type: 7
@@ -246,23 +246,23 @@ VisualTest {
}
Frame {
msec: 784
- hash: "fd47d9eaea89d6a731bdd70b39b2bc54"
+ hash: "6b7c333ce19fede43aee84cc66c4c1bc"
}
Frame {
msec: 800
- hash: "fd47d9eaea89d6a731bdd70b39b2bc54"
+ hash: "6b7c333ce19fede43aee84cc66c4c1bc"
}
Frame {
msec: 816
- hash: "fd47d9eaea89d6a731bdd70b39b2bc54"
+ hash: "6b7c333ce19fede43aee84cc66c4c1bc"
}
Frame {
msec: 832
- hash: "fd47d9eaea89d6a731bdd70b39b2bc54"
+ hash: "6b7c333ce19fede43aee84cc66c4c1bc"
}
Frame {
msec: 848
- hash: "fd47d9eaea89d6a731bdd70b39b2bc54"
+ hash: "6b7c333ce19fede43aee84cc66c4c1bc"
}
Key {
type: 6
@@ -274,15 +274,15 @@ VisualTest {
}
Frame {
msec: 864
- hash: "b643c026fe7570505e72971d3b3f0ea2"
+ hash: "a5386e9b39daa0a5aad8a8cd5191909b"
}
Frame {
msec: 880
- hash: "b643c026fe7570505e72971d3b3f0ea2"
+ hash: "a5386e9b39daa0a5aad8a8cd5191909b"
}
Frame {
msec: 896
- hash: "b643c026fe7570505e72971d3b3f0ea2"
+ hash: "a5386e9b39daa0a5aad8a8cd5191909b"
}
Key {
type: 7
@@ -294,15 +294,15 @@ VisualTest {
}
Frame {
msec: 912
- hash: "b643c026fe7570505e72971d3b3f0ea2"
+ hash: "a5386e9b39daa0a5aad8a8cd5191909b"
}
Frame {
msec: 928
- hash: "b643c026fe7570505e72971d3b3f0ea2"
+ hash: "a5386e9b39daa0a5aad8a8cd5191909b"
}
Frame {
msec: 944
- hash: "b643c026fe7570505e72971d3b3f0ea2"
+ hash: "a5386e9b39daa0a5aad8a8cd5191909b"
}
Frame {
msec: 960
@@ -310,7 +310,7 @@ VisualTest {
}
Frame {
msec: 976
- hash: "cba83dfcd44e4ba3ea44dd8d84bde745"
+ hash: "a5386e9b39daa0a5aad8a8cd5191909b"
}
Key {
type: 6
@@ -322,19 +322,19 @@ VisualTest {
}
Frame {
msec: 992
- hash: "bca450bd2b1a46da72e0ba99a70c18ab"
+ hash: "f9149723166015ed066b794cf86b27d0"
}
Frame {
msec: 1008
- hash: "bca450bd2b1a46da72e0ba99a70c18ab"
+ hash: "f9149723166015ed066b794cf86b27d0"
}
Frame {
msec: 1024
- hash: "bca450bd2b1a46da72e0ba99a70c18ab"
+ hash: "f9149723166015ed066b794cf86b27d0"
}
Frame {
msec: 1040
- hash: "bca450bd2b1a46da72e0ba99a70c18ab"
+ hash: "f9149723166015ed066b794cf86b27d0"
}
Key {
type: 7
@@ -346,51 +346,51 @@ VisualTest {
}
Frame {
msec: 1056
- hash: "bca450bd2b1a46da72e0ba99a70c18ab"
+ hash: "f9149723166015ed066b794cf86b27d0"
}
Frame {
msec: 1072
- hash: "bca450bd2b1a46da72e0ba99a70c18ab"
+ hash: "f9149723166015ed066b794cf86b27d0"
}
Frame {
msec: 1088
- hash: "bca450bd2b1a46da72e0ba99a70c18ab"
+ hash: "f9149723166015ed066b794cf86b27d0"
}
Frame {
msec: 1104
- hash: "bca450bd2b1a46da72e0ba99a70c18ab"
+ hash: "f9149723166015ed066b794cf86b27d0"
}
Frame {
msec: 1120
- hash: "bca450bd2b1a46da72e0ba99a70c18ab"
+ hash: "f9149723166015ed066b794cf86b27d0"
}
Frame {
msec: 1136
- hash: "bca450bd2b1a46da72e0ba99a70c18ab"
+ hash: "f9149723166015ed066b794cf86b27d0"
}
Frame {
msec: 1152
- hash: "bca450bd2b1a46da72e0ba99a70c18ab"
+ hash: "f9149723166015ed066b794cf86b27d0"
}
Frame {
msec: 1168
- hash: "bca450bd2b1a46da72e0ba99a70c18ab"
+ hash: "f9149723166015ed066b794cf86b27d0"
}
Frame {
msec: 1184
- hash: "bca450bd2b1a46da72e0ba99a70c18ab"
+ hash: "f9149723166015ed066b794cf86b27d0"
}
Frame {
msec: 1200
- hash: "bca450bd2b1a46da72e0ba99a70c18ab"
+ hash: "f9149723166015ed066b794cf86b27d0"
}
Frame {
msec: 1216
- hash: "bca450bd2b1a46da72e0ba99a70c18ab"
+ hash: "f9149723166015ed066b794cf86b27d0"
}
Frame {
msec: 1232
- hash: "bca450bd2b1a46da72e0ba99a70c18ab"
+ hash: "f9149723166015ed066b794cf86b27d0"
}
Key {
type: 6
@@ -402,15 +402,15 @@ VisualTest {
}
Frame {
msec: 1248
- hash: "55c33f786e6dc14b038dba96cc154859"
+ hash: "56dd8557435509e5a96c2f2907d474eb"
}
Frame {
msec: 1264
- hash: "55c33f786e6dc14b038dba96cc154859"
+ hash: "56dd8557435509e5a96c2f2907d474eb"
}
Frame {
msec: 1280
- hash: "55c33f786e6dc14b038dba96cc154859"
+ hash: "56dd8557435509e5a96c2f2907d474eb"
}
Key {
type: 7
@@ -422,15 +422,15 @@ VisualTest {
}
Frame {
msec: 1296
- hash: "55c33f786e6dc14b038dba96cc154859"
+ hash: "56dd8557435509e5a96c2f2907d474eb"
}
Frame {
msec: 1312
- hash: "55c33f786e6dc14b038dba96cc154859"
+ hash: "56dd8557435509e5a96c2f2907d474eb"
}
Frame {
msec: 1328
- hash: "55c33f786e6dc14b038dba96cc154859"
+ hash: "56dd8557435509e5a96c2f2907d474eb"
}
Key {
type: 6
@@ -442,39 +442,39 @@ VisualTest {
}
Frame {
msec: 1344
- hash: "693d9e7579752a748d4c8d7fcbd3c022"
+ hash: "b311772a9bf92f4222b1c1c7ddbe96c4"
}
Frame {
msec: 1360
- hash: "693d9e7579752a748d4c8d7fcbd3c022"
+ hash: "b311772a9bf92f4222b1c1c7ddbe96c4"
}
Frame {
msec: 1376
- hash: "693d9e7579752a748d4c8d7fcbd3c022"
+ hash: "b311772a9bf92f4222b1c1c7ddbe96c4"
}
Frame {
msec: 1392
- hash: "693d9e7579752a748d4c8d7fcbd3c022"
+ hash: "b311772a9bf92f4222b1c1c7ddbe96c4"
}
Frame {
msec: 1408
- hash: "693d9e7579752a748d4c8d7fcbd3c022"
+ hash: "b311772a9bf92f4222b1c1c7ddbe96c4"
}
Frame {
msec: 1424
- hash: "693d9e7579752a748d4c8d7fcbd3c022"
+ hash: "b311772a9bf92f4222b1c1c7ddbe96c4"
}
Frame {
msec: 1440
- hash: "693d9e7579752a748d4c8d7fcbd3c022"
+ hash: "b311772a9bf92f4222b1c1c7ddbe96c4"
}
Frame {
msec: 1456
- hash: "693d9e7579752a748d4c8d7fcbd3c022"
+ hash: "b311772a9bf92f4222b1c1c7ddbe96c4"
}
Frame {
msec: 1472
- hash: "9be278fc6ebef108857a414ecb292b46"
+ hash: "b311772a9bf92f4222b1c1c7ddbe96c4"
}
Key {
type: 7
@@ -486,7 +486,7 @@ VisualTest {
}
Frame {
msec: 1488
- hash: "9be278fc6ebef108857a414ecb292b46"
+ hash: "b311772a9bf92f4222b1c1c7ddbe96c4"
}
Key {
type: 6
@@ -498,19 +498,19 @@ VisualTest {
}
Frame {
msec: 1504
- hash: "b1c799fd9f4ebf097ec79448eb9b4a2c"
+ hash: "8feb240ad13e1e9d8392bfeb484261db"
}
Frame {
msec: 1520
- hash: "b1c799fd9f4ebf097ec79448eb9b4a2c"
+ hash: "8feb240ad13e1e9d8392bfeb484261db"
}
Frame {
msec: 1536
- hash: "b1c799fd9f4ebf097ec79448eb9b4a2c"
+ hash: "8feb240ad13e1e9d8392bfeb484261db"
}
Frame {
msec: 1552
- hash: "b1c799fd9f4ebf097ec79448eb9b4a2c"
+ hash: "8feb240ad13e1e9d8392bfeb484261db"
}
Key {
type: 7
@@ -522,27 +522,27 @@ VisualTest {
}
Frame {
msec: 1568
- hash: "b1c799fd9f4ebf097ec79448eb9b4a2c"
+ hash: "8feb240ad13e1e9d8392bfeb484261db"
}
Frame {
msec: 1584
- hash: "b1c799fd9f4ebf097ec79448eb9b4a2c"
+ hash: "8feb240ad13e1e9d8392bfeb484261db"
}
Frame {
msec: 1600
- hash: "b1c799fd9f4ebf097ec79448eb9b4a2c"
+ hash: "8feb240ad13e1e9d8392bfeb484261db"
}
Frame {
msec: 1616
- hash: "b1c799fd9f4ebf097ec79448eb9b4a2c"
+ hash: "8feb240ad13e1e9d8392bfeb484261db"
}
Frame {
msec: 1632
- hash: "b1c799fd9f4ebf097ec79448eb9b4a2c"
+ hash: "8feb240ad13e1e9d8392bfeb484261db"
}
Frame {
msec: 1648
- hash: "b1c799fd9f4ebf097ec79448eb9b4a2c"
+ hash: "8feb240ad13e1e9d8392bfeb484261db"
}
Key {
type: 6
@@ -554,23 +554,23 @@ VisualTest {
}
Frame {
msec: 1664
- hash: "46e977b7614ae6316a64106f6e5326c1"
+ hash: "cd240ccffd4b4a6304b47cfd1e55cf49"
}
Frame {
msec: 1680
- hash: "46e977b7614ae6316a64106f6e5326c1"
+ hash: "cd240ccffd4b4a6304b47cfd1e55cf49"
}
Frame {
msec: 1696
- hash: "46e977b7614ae6316a64106f6e5326c1"
+ hash: "cd240ccffd4b4a6304b47cfd1e55cf49"
}
Frame {
msec: 1712
- hash: "46e977b7614ae6316a64106f6e5326c1"
+ hash: "cd240ccffd4b4a6304b47cfd1e55cf49"
}
Frame {
msec: 1728
- hash: "46e977b7614ae6316a64106f6e5326c1"
+ hash: "cd240ccffd4b4a6304b47cfd1e55cf49"
}
Key {
type: 6
@@ -582,7 +582,7 @@ VisualTest {
}
Frame {
msec: 1744
- hash: "2d7771008d9ec265f70d089bb8436e18"
+ hash: "437370a412fccbeee3d1f095e32c3584"
}
Key {
type: 7
@@ -594,15 +594,15 @@ VisualTest {
}
Frame {
msec: 1760
- hash: "2d7771008d9ec265f70d089bb8436e18"
+ hash: "437370a412fccbeee3d1f095e32c3584"
}
Frame {
msec: 1776
- hash: "2d7771008d9ec265f70d089bb8436e18"
+ hash: "437370a412fccbeee3d1f095e32c3584"
}
Frame {
msec: 1792
- hash: "2d7771008d9ec265f70d089bb8436e18"
+ hash: "437370a412fccbeee3d1f095e32c3584"
}
Key {
type: 7
@@ -614,19 +614,19 @@ VisualTest {
}
Frame {
msec: 1808
- hash: "2d7771008d9ec265f70d089bb8436e18"
+ hash: "437370a412fccbeee3d1f095e32c3584"
}
Frame {
msec: 1824
- hash: "2d7771008d9ec265f70d089bb8436e18"
+ hash: "437370a412fccbeee3d1f095e32c3584"
}
Frame {
msec: 1840
- hash: "2d7771008d9ec265f70d089bb8436e18"
+ hash: "437370a412fccbeee3d1f095e32c3584"
}
Frame {
msec: 1856
- hash: "2d7771008d9ec265f70d089bb8436e18"
+ hash: "437370a412fccbeee3d1f095e32c3584"
}
Key {
type: 6
@@ -638,15 +638,15 @@ VisualTest {
}
Frame {
msec: 1872
- hash: "7d85b2d311514db5988e335110fb8352"
+ hash: "eb4a45722e365b103ff5423117236fd3"
}
Frame {
msec: 1888
- hash: "7d85b2d311514db5988e335110fb8352"
+ hash: "eb4a45722e365b103ff5423117236fd3"
}
Frame {
msec: 1904
- hash: "7d85b2d311514db5988e335110fb8352"
+ hash: "eb4a45722e365b103ff5423117236fd3"
}
Frame {
msec: 1920
@@ -662,27 +662,27 @@ VisualTest {
}
Frame {
msec: 1936
- hash: "7d85b2d311514db5988e335110fb8352"
+ hash: "eb4a45722e365b103ff5423117236fd3"
}
Frame {
msec: 1952
- hash: "7d85b2d311514db5988e335110fb8352"
+ hash: "eb4a45722e365b103ff5423117236fd3"
}
Frame {
msec: 1968
- hash: "7d85b2d311514db5988e335110fb8352"
+ hash: "eb4a45722e365b103ff5423117236fd3"
}
Frame {
msec: 1984
- hash: "9f4258905e76a6523e015701c3278cae"
+ hash: "eb4a45722e365b103ff5423117236fd3"
}
Frame {
msec: 2000
- hash: "9f4258905e76a6523e015701c3278cae"
+ hash: "eb4a45722e365b103ff5423117236fd3"
}
Frame {
msec: 2016
- hash: "9f4258905e76a6523e015701c3278cae"
+ hash: "eb4a45722e365b103ff5423117236fd3"
}
Key {
type: 6
@@ -694,11 +694,11 @@ VisualTest {
}
Frame {
msec: 2032
- hash: "8a2cf6f27a40da75be9d9bcf88b4c022"
+ hash: "b53d0651627d008545e54063ceb8d689"
}
Frame {
msec: 2048
- hash: "8a2cf6f27a40da75be9d9bcf88b4c022"
+ hash: "b53d0651627d008545e54063ceb8d689"
}
Key {
type: 7
@@ -710,11 +710,11 @@ VisualTest {
}
Frame {
msec: 2064
- hash: "8a2cf6f27a40da75be9d9bcf88b4c022"
+ hash: "b53d0651627d008545e54063ceb8d689"
}
Frame {
msec: 2080
- hash: "8a2cf6f27a40da75be9d9bcf88b4c022"
+ hash: "b53d0651627d008545e54063ceb8d689"
}
Key {
type: 6
@@ -726,19 +726,19 @@ VisualTest {
}
Frame {
msec: 2096
- hash: "6c679da9b822fefef626c4308fdc9080"
+ hash: "173b36137940b37001750e02d434b8e8"
}
Frame {
msec: 2112
- hash: "6c679da9b822fefef626c4308fdc9080"
+ hash: "173b36137940b37001750e02d434b8e8"
}
Frame {
msec: 2128
- hash: "6c679da9b822fefef626c4308fdc9080"
+ hash: "173b36137940b37001750e02d434b8e8"
}
Frame {
msec: 2144
- hash: "6c679da9b822fefef626c4308fdc9080"
+ hash: "173b36137940b37001750e02d434b8e8"
}
Key {
type: 6
@@ -758,19 +758,19 @@ VisualTest {
}
Frame {
msec: 2160
- hash: "81399b2d1ffa0a097f9d0eea0ccf26a5"
+ hash: "2e636a964b4a1ab74ad3e23399c2ae8c"
}
Frame {
msec: 2176
- hash: "81399b2d1ffa0a097f9d0eea0ccf26a5"
+ hash: "2e636a964b4a1ab74ad3e23399c2ae8c"
}
Frame {
msec: 2192
- hash: "81399b2d1ffa0a097f9d0eea0ccf26a5"
+ hash: "2e636a964b4a1ab74ad3e23399c2ae8c"
}
Frame {
msec: 2208
- hash: "81399b2d1ffa0a097f9d0eea0ccf26a5"
+ hash: "2e636a964b4a1ab74ad3e23399c2ae8c"
}
Key {
type: 6
@@ -782,7 +782,7 @@ VisualTest {
}
Frame {
msec: 2224
- hash: "aebfaf936f9c4e0f856a2a2d1b2014ee"
+ hash: "631c6034372c2e7675ebce0ec415f230"
}
Key {
type: 7
@@ -794,23 +794,23 @@ VisualTest {
}
Frame {
msec: 2240
- hash: "aebfaf936f9c4e0f856a2a2d1b2014ee"
+ hash: "631c6034372c2e7675ebce0ec415f230"
}
Frame {
msec: 2256
- hash: "aebfaf936f9c4e0f856a2a2d1b2014ee"
+ hash: "631c6034372c2e7675ebce0ec415f230"
}
Frame {
msec: 2272
- hash: "aebfaf936f9c4e0f856a2a2d1b2014ee"
+ hash: "631c6034372c2e7675ebce0ec415f230"
}
Frame {
msec: 2288
- hash: "aebfaf936f9c4e0f856a2a2d1b2014ee"
+ hash: "631c6034372c2e7675ebce0ec415f230"
}
Frame {
msec: 2304
- hash: "aebfaf936f9c4e0f856a2a2d1b2014ee"
+ hash: "631c6034372c2e7675ebce0ec415f230"
}
Key {
type: 7
@@ -822,11 +822,11 @@ VisualTest {
}
Frame {
msec: 2320
- hash: "aebfaf936f9c4e0f856a2a2d1b2014ee"
+ hash: "631c6034372c2e7675ebce0ec415f230"
}
Frame {
msec: 2336
- hash: "aebfaf936f9c4e0f856a2a2d1b2014ee"
+ hash: "631c6034372c2e7675ebce0ec415f230"
}
Key {
type: 6
@@ -838,27 +838,27 @@ VisualTest {
}
Frame {
msec: 2352
- hash: "1e9d2117d8392ea494d28f95ddb57213"
+ hash: "ea5c3cdde73009e1bd46e71e4cc3bf0f"
}
Frame {
msec: 2368
- hash: "1e9d2117d8392ea494d28f95ddb57213"
+ hash: "ea5c3cdde73009e1bd46e71e4cc3bf0f"
}
Frame {
msec: 2384
- hash: "1e9d2117d8392ea494d28f95ddb57213"
+ hash: "ea5c3cdde73009e1bd46e71e4cc3bf0f"
}
Frame {
msec: 2400
- hash: "1e9d2117d8392ea494d28f95ddb57213"
+ hash: "ea5c3cdde73009e1bd46e71e4cc3bf0f"
}
Frame {
msec: 2416
- hash: "1e9d2117d8392ea494d28f95ddb57213"
+ hash: "ea5c3cdde73009e1bd46e71e4cc3bf0f"
}
Frame {
msec: 2432
- hash: "1e9d2117d8392ea494d28f95ddb57213"
+ hash: "ea5c3cdde73009e1bd46e71e4cc3bf0f"
}
Key {
type: 7
@@ -870,19 +870,19 @@ VisualTest {
}
Frame {
msec: 2448
- hash: "1e9d2117d8392ea494d28f95ddb57213"
+ hash: "ea5c3cdde73009e1bd46e71e4cc3bf0f"
}
Frame {
msec: 2464
- hash: "1e9d2117d8392ea494d28f95ddb57213"
+ hash: "ea5c3cdde73009e1bd46e71e4cc3bf0f"
}
Frame {
msec: 2480
- hash: "a016e70b0f98846694ef3ae906faa346"
+ hash: "ea5c3cdde73009e1bd46e71e4cc3bf0f"
}
Frame {
msec: 2496
- hash: "a016e70b0f98846694ef3ae906faa346"
+ hash: "ea5c3cdde73009e1bd46e71e4cc3bf0f"
}
Key {
type: 6
@@ -894,15 +894,15 @@ VisualTest {
}
Frame {
msec: 2512
- hash: "818ad2e56a73599ae69ce5000d5b278f"
+ hash: "91ef7f08d8fec2e0d353b1bf5da99c41"
}
Frame {
msec: 2528
- hash: "818ad2e56a73599ae69ce5000d5b278f"
+ hash: "91ef7f08d8fec2e0d353b1bf5da99c41"
}
Frame {
msec: 2544
- hash: "818ad2e56a73599ae69ce5000d5b278f"
+ hash: "91ef7f08d8fec2e0d353b1bf5da99c41"
}
Key {
type: 7
@@ -914,83 +914,83 @@ VisualTest {
}
Frame {
msec: 2560
- hash: "818ad2e56a73599ae69ce5000d5b278f"
+ hash: "91ef7f08d8fec2e0d353b1bf5da99c41"
}
Frame {
msec: 2576
- hash: "818ad2e56a73599ae69ce5000d5b278f"
+ hash: "91ef7f08d8fec2e0d353b1bf5da99c41"
}
Frame {
msec: 2592
- hash: "818ad2e56a73599ae69ce5000d5b278f"
+ hash: "91ef7f08d8fec2e0d353b1bf5da99c41"
}
Frame {
msec: 2608
- hash: "818ad2e56a73599ae69ce5000d5b278f"
+ hash: "91ef7f08d8fec2e0d353b1bf5da99c41"
}
Frame {
msec: 2624
- hash: "818ad2e56a73599ae69ce5000d5b278f"
+ hash: "91ef7f08d8fec2e0d353b1bf5da99c41"
}
Frame {
msec: 2640
- hash: "818ad2e56a73599ae69ce5000d5b278f"
+ hash: "91ef7f08d8fec2e0d353b1bf5da99c41"
}
Frame {
msec: 2656
- hash: "818ad2e56a73599ae69ce5000d5b278f"
+ hash: "91ef7f08d8fec2e0d353b1bf5da99c41"
}
Frame {
msec: 2672
- hash: "818ad2e56a73599ae69ce5000d5b278f"
+ hash: "91ef7f08d8fec2e0d353b1bf5da99c41"
}
Frame {
msec: 2688
- hash: "818ad2e56a73599ae69ce5000d5b278f"
+ hash: "91ef7f08d8fec2e0d353b1bf5da99c41"
}
Frame {
msec: 2704
- hash: "818ad2e56a73599ae69ce5000d5b278f"
+ hash: "91ef7f08d8fec2e0d353b1bf5da99c41"
}
Frame {
msec: 2720
- hash: "818ad2e56a73599ae69ce5000d5b278f"
+ hash: "91ef7f08d8fec2e0d353b1bf5da99c41"
}
Frame {
msec: 2736
- hash: "818ad2e56a73599ae69ce5000d5b278f"
+ hash: "91ef7f08d8fec2e0d353b1bf5da99c41"
}
Frame {
msec: 2752
- hash: "818ad2e56a73599ae69ce5000d5b278f"
+ hash: "91ef7f08d8fec2e0d353b1bf5da99c41"
}
Frame {
msec: 2768
- hash: "818ad2e56a73599ae69ce5000d5b278f"
+ hash: "91ef7f08d8fec2e0d353b1bf5da99c41"
}
Frame {
msec: 2784
- hash: "818ad2e56a73599ae69ce5000d5b278f"
+ hash: "91ef7f08d8fec2e0d353b1bf5da99c41"
}
Frame {
msec: 2800
- hash: "818ad2e56a73599ae69ce5000d5b278f"
+ hash: "91ef7f08d8fec2e0d353b1bf5da99c41"
}
Frame {
msec: 2816
- hash: "818ad2e56a73599ae69ce5000d5b278f"
+ hash: "91ef7f08d8fec2e0d353b1bf5da99c41"
}
Frame {
msec: 2832
- hash: "818ad2e56a73599ae69ce5000d5b278f"
+ hash: "91ef7f08d8fec2e0d353b1bf5da99c41"
}
Frame {
msec: 2848
- hash: "818ad2e56a73599ae69ce5000d5b278f"
+ hash: "91ef7f08d8fec2e0d353b1bf5da99c41"
}
Frame {
msec: 2864
- hash: "818ad2e56a73599ae69ce5000d5b278f"
+ hash: "91ef7f08d8fec2e0d353b1bf5da99c41"
}
Frame {
msec: 2880
@@ -998,46 +998,46 @@ VisualTest {
}
Frame {
msec: 2896
- hash: "818ad2e56a73599ae69ce5000d5b278f"
+ hash: "91ef7f08d8fec2e0d353b1bf5da99c41"
}
Frame {
msec: 2912
- hash: "818ad2e56a73599ae69ce5000d5b278f"
+ hash: "91ef7f08d8fec2e0d353b1bf5da99c41"
}
Frame {
msec: 2928
- hash: "818ad2e56a73599ae69ce5000d5b278f"
+ hash: "91ef7f08d8fec2e0d353b1bf5da99c41"
}
Frame {
msec: 2944
- hash: "818ad2e56a73599ae69ce5000d5b278f"
+ hash: "91ef7f08d8fec2e0d353b1bf5da99c41"
}
Frame {
msec: 2960
- hash: "818ad2e56a73599ae69ce5000d5b278f"
+ hash: "91ef7f08d8fec2e0d353b1bf5da99c41"
}
Frame {
msec: 2976
- hash: "147568112e60545f440f2109f918a59e"
+ hash: "91ef7f08d8fec2e0d353b1bf5da99c41"
}
Frame {
msec: 2992
- hash: "147568112e60545f440f2109f918a59e"
+ hash: "91ef7f08d8fec2e0d353b1bf5da99c41"
}
Frame {
msec: 3008
- hash: "147568112e60545f440f2109f918a59e"
+ hash: "91ef7f08d8fec2e0d353b1bf5da99c41"
}
Frame {
msec: 3024
- hash: "147568112e60545f440f2109f918a59e"
+ hash: "91ef7f08d8fec2e0d353b1bf5da99c41"
}
Frame {
msec: 3040
- hash: "147568112e60545f440f2109f918a59e"
+ hash: "91ef7f08d8fec2e0d353b1bf5da99c41"
}
Frame {
msec: 3056
- hash: "147568112e60545f440f2109f918a59e"
+ hash: "91ef7f08d8fec2e0d353b1bf5da99c41"
}
}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/hAlign.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/hAlign.qml
index fb56da6..4c402ea 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: "15c91702a80de73ac1abc3db9fa8ca09"
+ hash: "840c5f54c105f90c7b0c2254fee2e434"
}
Frame {
msec: 32
- hash: "15c91702a80de73ac1abc3db9fa8ca09"
+ hash: "840c5f54c105f90c7b0c2254fee2e434"
}
Frame {
msec: 48
- hash: "15c91702a80de73ac1abc3db9fa8ca09"
+ hash: "840c5f54c105f90c7b0c2254fee2e434"
}
Frame {
msec: 64
- hash: "15c91702a80de73ac1abc3db9fa8ca09"
+ hash: "840c5f54c105f90c7b0c2254fee2e434"
}
Frame {
msec: 80
- hash: "15c91702a80de73ac1abc3db9fa8ca09"
+ hash: "840c5f54c105f90c7b0c2254fee2e434"
}
Frame {
msec: 96
- hash: "15c91702a80de73ac1abc3db9fa8ca09"
+ hash: "840c5f54c105f90c7b0c2254fee2e434"
}
Frame {
msec: 112
- hash: "15c91702a80de73ac1abc3db9fa8ca09"
+ hash: "840c5f54c105f90c7b0c2254fee2e434"
}
Frame {
msec: 128
- hash: "15c91702a80de73ac1abc3db9fa8ca09"
+ hash: "840c5f54c105f90c7b0c2254fee2e434"
}
Frame {
msec: 144
- hash: "15c91702a80de73ac1abc3db9fa8ca09"
+ hash: "840c5f54c105f90c7b0c2254fee2e434"
}
Frame {
msec: 160
- hash: "15c91702a80de73ac1abc3db9fa8ca09"
+ hash: "840c5f54c105f90c7b0c2254fee2e434"
}
Frame {
msec: 176
- hash: "15c91702a80de73ac1abc3db9fa8ca09"
+ hash: "840c5f54c105f90c7b0c2254fee2e434"
}
Frame {
msec: 192
- hash: "15c91702a80de73ac1abc3db9fa8ca09"
+ hash: "840c5f54c105f90c7b0c2254fee2e434"
}
Frame {
msec: 208
- hash: "15c91702a80de73ac1abc3db9fa8ca09"
+ hash: "840c5f54c105f90c7b0c2254fee2e434"
}
Frame {
msec: 224
- hash: "15c91702a80de73ac1abc3db9fa8ca09"
+ hash: "840c5f54c105f90c7b0c2254fee2e434"
}
Frame {
msec: 240
- hash: "15c91702a80de73ac1abc3db9fa8ca09"
+ hash: "840c5f54c105f90c7b0c2254fee2e434"
}
Frame {
msec: 256
- hash: "15c91702a80de73ac1abc3db9fa8ca09"
+ hash: "840c5f54c105f90c7b0c2254fee2e434"
}
Frame {
msec: 272
- hash: "15c91702a80de73ac1abc3db9fa8ca09"
+ hash: "840c5f54c105f90c7b0c2254fee2e434"
}
Frame {
msec: 288
- hash: "15c91702a80de73ac1abc3db9fa8ca09"
+ hash: "840c5f54c105f90c7b0c2254fee2e434"
}
Frame {
msec: 304
- hash: "15c91702a80de73ac1abc3db9fa8ca09"
+ hash: "840c5f54c105f90c7b0c2254fee2e434"
}
Frame {
msec: 320
- hash: "15c91702a80de73ac1abc3db9fa8ca09"
+ hash: "840c5f54c105f90c7b0c2254fee2e434"
}
Frame {
msec: 336
- hash: "15c91702a80de73ac1abc3db9fa8ca09"
+ hash: "840c5f54c105f90c7b0c2254fee2e434"
}
Frame {
msec: 352
- hash: "15c91702a80de73ac1abc3db9fa8ca09"
+ hash: "840c5f54c105f90c7b0c2254fee2e434"
}
Frame {
msec: 368
- hash: "15c91702a80de73ac1abc3db9fa8ca09"
+ hash: "840c5f54c105f90c7b0c2254fee2e434"
}
Frame {
msec: 384
- hash: "15c91702a80de73ac1abc3db9fa8ca09"
+ hash: "840c5f54c105f90c7b0c2254fee2e434"
}
Frame {
msec: 400
- hash: "15c91702a80de73ac1abc3db9fa8ca09"
+ hash: "840c5f54c105f90c7b0c2254fee2e434"
}
}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.0.png
index e7e4ad8..551a3de 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.0.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.1.png
index 07a19e2..826d99a 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.1.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.1.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.2.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.2.png
index 075c4d5..727e873 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.2.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.2.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.qml
index 31d3592..c8f1f27 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.qml
@@ -158,7 +158,7 @@ VisualTest {
}
Frame {
msec: 528
- hash: "48b0300c8109a227176bd90e6b8ca682"
+ hash: "86f9d315291a08f35f1c431ae802ada2"
}
Key {
type: 7
@@ -170,43 +170,43 @@ VisualTest {
}
Frame {
msec: 544
- hash: "48b0300c8109a227176bd90e6b8ca682"
+ hash: "86f9d315291a08f35f1c431ae802ada2"
}
Frame {
msec: 560
- hash: "48b0300c8109a227176bd90e6b8ca682"
+ hash: "86f9d315291a08f35f1c431ae802ada2"
}
Frame {
msec: 576
- hash: "48b0300c8109a227176bd90e6b8ca682"
+ hash: "86f9d315291a08f35f1c431ae802ada2"
}
Frame {
msec: 592
- hash: "48b0300c8109a227176bd90e6b8ca682"
+ hash: "86f9d315291a08f35f1c431ae802ada2"
}
Frame {
msec: 608
- hash: "48b0300c8109a227176bd90e6b8ca682"
+ hash: "86f9d315291a08f35f1c431ae802ada2"
}
Frame {
msec: 624
- hash: "48b0300c8109a227176bd90e6b8ca682"
+ hash: "86f9d315291a08f35f1c431ae802ada2"
}
Frame {
msec: 640
- hash: "48b0300c8109a227176bd90e6b8ca682"
+ hash: "86f9d315291a08f35f1c431ae802ada2"
}
Frame {
msec: 656
- hash: "48b0300c8109a227176bd90e6b8ca682"
+ hash: "86f9d315291a08f35f1c431ae802ada2"
}
Frame {
msec: 672
- hash: "48b0300c8109a227176bd90e6b8ca682"
+ hash: "86f9d315291a08f35f1c431ae802ada2"
}
Frame {
msec: 688
- hash: "48b0300c8109a227176bd90e6b8ca682"
+ hash: "86f9d315291a08f35f1c431ae802ada2"
}
Key {
type: 6
@@ -218,23 +218,23 @@ VisualTest {
}
Frame {
msec: 704
- hash: "7de871fbd0f87da5c31216863f6eb0ba"
+ hash: "5c1e01a1dd3004ea3eff7ec215cc8fdc"
}
Frame {
msec: 720
- hash: "7de871fbd0f87da5c31216863f6eb0ba"
+ hash: "5c1e01a1dd3004ea3eff7ec215cc8fdc"
}
Frame {
msec: 736
- hash: "7de871fbd0f87da5c31216863f6eb0ba"
+ hash: "5c1e01a1dd3004ea3eff7ec215cc8fdc"
}
Frame {
msec: 752
- hash: "7de871fbd0f87da5c31216863f6eb0ba"
+ hash: "5c1e01a1dd3004ea3eff7ec215cc8fdc"
}
Frame {
msec: 768
- hash: "7de871fbd0f87da5c31216863f6eb0ba"
+ hash: "5c1e01a1dd3004ea3eff7ec215cc8fdc"
}
Key {
type: 7
@@ -246,23 +246,23 @@ VisualTest {
}
Frame {
msec: 784
- hash: "7de871fbd0f87da5c31216863f6eb0ba"
+ hash: "5c1e01a1dd3004ea3eff7ec215cc8fdc"
}
Frame {
msec: 800
- hash: "7de871fbd0f87da5c31216863f6eb0ba"
+ hash: "5c1e01a1dd3004ea3eff7ec215cc8fdc"
}
Frame {
msec: 816
- hash: "7de871fbd0f87da5c31216863f6eb0ba"
+ hash: "5c1e01a1dd3004ea3eff7ec215cc8fdc"
}
Frame {
msec: 832
- hash: "7de871fbd0f87da5c31216863f6eb0ba"
+ hash: "5c1e01a1dd3004ea3eff7ec215cc8fdc"
}
Frame {
msec: 848
- hash: "7de871fbd0f87da5c31216863f6eb0ba"
+ hash: "5c1e01a1dd3004ea3eff7ec215cc8fdc"
}
Key {
type: 6
@@ -274,15 +274,15 @@ VisualTest {
}
Frame {
msec: 864
- hash: "2fa1f1853e1ebf127fcb42ba072bc66f"
+ hash: "b3504e4dbb653a7c039dcf8ab0351055"
}
Frame {
msec: 880
- hash: "2fa1f1853e1ebf127fcb42ba072bc66f"
+ hash: "b3504e4dbb653a7c039dcf8ab0351055"
}
Frame {
msec: 896
- hash: "2fa1f1853e1ebf127fcb42ba072bc66f"
+ hash: "b3504e4dbb653a7c039dcf8ab0351055"
}
Key {
type: 7
@@ -294,15 +294,15 @@ VisualTest {
}
Frame {
msec: 912
- hash: "2fa1f1853e1ebf127fcb42ba072bc66f"
+ hash: "b3504e4dbb653a7c039dcf8ab0351055"
}
Frame {
msec: 928
- hash: "2fa1f1853e1ebf127fcb42ba072bc66f"
+ hash: "b3504e4dbb653a7c039dcf8ab0351055"
}
Frame {
msec: 944
- hash: "2fa1f1853e1ebf127fcb42ba072bc66f"
+ hash: "b3504e4dbb653a7c039dcf8ab0351055"
}
Frame {
msec: 960
@@ -310,7 +310,7 @@ VisualTest {
}
Frame {
msec: 976
- hash: "2fa1f1853e1ebf127fcb42ba072bc66f"
+ hash: "b3504e4dbb653a7c039dcf8ab0351055"
}
Key {
type: 6
@@ -322,11 +322,11 @@ VisualTest {
}
Frame {
msec: 992
- hash: "7bd52cf50949b283ec40b82cf457841a"
+ hash: "16069bd86f3b8a896087a455e76f1059"
}
Frame {
msec: 1008
- hash: "7bd52cf50949b283ec40b82cf457841a"
+ hash: "16069bd86f3b8a896087a455e76f1059"
}
Frame {
msec: 1024
@@ -502,15 +502,15 @@ VisualTest {
}
Frame {
msec: 1520
- hash: "7b294a04afc0567d321a28930bc43600"
+ hash: "80685804ddaefa46508a3cbe4cd16f59"
}
Frame {
msec: 1536
- hash: "7b294a04afc0567d321a28930bc43600"
+ hash: "80685804ddaefa46508a3cbe4cd16f59"
}
Frame {
msec: 1552
- hash: "7b294a04afc0567d321a28930bc43600"
+ hash: "80685804ddaefa46508a3cbe4cd16f59"
}
Key {
type: 7
@@ -522,27 +522,27 @@ VisualTest {
}
Frame {
msec: 1568
- hash: "7b294a04afc0567d321a28930bc43600"
+ hash: "80685804ddaefa46508a3cbe4cd16f59"
}
Frame {
msec: 1584
- hash: "7b294a04afc0567d321a28930bc43600"
+ hash: "80685804ddaefa46508a3cbe4cd16f59"
}
Frame {
msec: 1600
- hash: "7b294a04afc0567d321a28930bc43600"
+ hash: "80685804ddaefa46508a3cbe4cd16f59"
}
Frame {
msec: 1616
- hash: "7b294a04afc0567d321a28930bc43600"
+ hash: "80685804ddaefa46508a3cbe4cd16f59"
}
Frame {
msec: 1632
- hash: "7b294a04afc0567d321a28930bc43600"
+ hash: "80685804ddaefa46508a3cbe4cd16f59"
}
Frame {
msec: 1648
- hash: "7b294a04afc0567d321a28930bc43600"
+ hash: "80685804ddaefa46508a3cbe4cd16f59"
}
Key {
type: 6
@@ -554,23 +554,23 @@ VisualTest {
}
Frame {
msec: 1664
- hash: "00095464e3f162c2a825f7fdae21ab6f"
+ hash: "270f91762428ce515e0de44dea26d6ed"
}
Frame {
msec: 1680
- hash: "00095464e3f162c2a825f7fdae21ab6f"
+ hash: "270f91762428ce515e0de44dea26d6ed"
}
Frame {
msec: 1696
- hash: "00095464e3f162c2a825f7fdae21ab6f"
+ hash: "270f91762428ce515e0de44dea26d6ed"
}
Frame {
msec: 1712
- hash: "00095464e3f162c2a825f7fdae21ab6f"
+ hash: "270f91762428ce515e0de44dea26d6ed"
}
Frame {
msec: 1728
- hash: "00095464e3f162c2a825f7fdae21ab6f"
+ hash: "270f91762428ce515e0de44dea26d6ed"
}
Key {
type: 6
@@ -582,7 +582,7 @@ VisualTest {
}
Frame {
msec: 1744
- hash: "c25d79796963ca42789725c6621bce01"
+ hash: "5ff3755b130835886503045e45700235"
}
Key {
type: 7
@@ -594,15 +594,15 @@ VisualTest {
}
Frame {
msec: 1760
- hash: "c25d79796963ca42789725c6621bce01"
+ hash: "5ff3755b130835886503045e45700235"
}
Frame {
msec: 1776
- hash: "c25d79796963ca42789725c6621bce01"
+ hash: "5ff3755b130835886503045e45700235"
}
Frame {
msec: 1792
- hash: "c25d79796963ca42789725c6621bce01"
+ hash: "5ff3755b130835886503045e45700235"
}
Key {
type: 7
@@ -614,19 +614,19 @@ VisualTest {
}
Frame {
msec: 1808
- hash: "c25d79796963ca42789725c6621bce01"
+ hash: "5ff3755b130835886503045e45700235"
}
Frame {
msec: 1824
- hash: "c25d79796963ca42789725c6621bce01"
+ hash: "5ff3755b130835886503045e45700235"
}
Frame {
msec: 1840
- hash: "c25d79796963ca42789725c6621bce01"
+ hash: "5ff3755b130835886503045e45700235"
}
Frame {
msec: 1856
- hash: "c25d79796963ca42789725c6621bce01"
+ hash: "5ff3755b130835886503045e45700235"
}
Key {
type: 6
@@ -638,15 +638,15 @@ VisualTest {
}
Frame {
msec: 1872
- hash: "e876aa2aaa6ae2c3a5f048771858c21b"
+ hash: "deab81e7fcc4ecc31d02fccc52a4cc17"
}
Frame {
msec: 1888
- hash: "e876aa2aaa6ae2c3a5f048771858c21b"
+ hash: "deab81e7fcc4ecc31d02fccc52a4cc17"
}
Frame {
msec: 1904
- hash: "e876aa2aaa6ae2c3a5f048771858c21b"
+ hash: "deab81e7fcc4ecc31d02fccc52a4cc17"
}
Frame {
msec: 1920
@@ -662,23 +662,23 @@ VisualTest {
}
Frame {
msec: 1936
- hash: "e876aa2aaa6ae2c3a5f048771858c21b"
+ hash: "deab81e7fcc4ecc31d02fccc52a4cc17"
}
Frame {
msec: 1952
- hash: "e876aa2aaa6ae2c3a5f048771858c21b"
+ hash: "deab81e7fcc4ecc31d02fccc52a4cc17"
}
Frame {
msec: 1968
- hash: "e876aa2aaa6ae2c3a5f048771858c21b"
+ hash: "deab81e7fcc4ecc31d02fccc52a4cc17"
}
Frame {
msec: 1984
- hash: "e876aa2aaa6ae2c3a5f048771858c21b"
+ hash: "deab81e7fcc4ecc31d02fccc52a4cc17"
}
Frame {
msec: 2000
- hash: "e876aa2aaa6ae2c3a5f048771858c21b"
+ hash: "deab81e7fcc4ecc31d02fccc52a4cc17"
}
Frame {
msec: 2016
@@ -898,11 +898,11 @@ VisualTest {
}
Frame {
msec: 2528
- hash: "73ebe3eec273bac501d56451c0c0a828"
+ hash: "34d00f787b814ad82c025c77d6be51a2"
}
Frame {
msec: 2544
- hash: "73ebe3eec273bac501d56451c0c0a828"
+ hash: "34d00f787b814ad82c025c77d6be51a2"
}
Key {
type: 7
@@ -914,83 +914,83 @@ VisualTest {
}
Frame {
msec: 2560
- hash: "73ebe3eec273bac501d56451c0c0a828"
+ hash: "34d00f787b814ad82c025c77d6be51a2"
}
Frame {
msec: 2576
- hash: "73ebe3eec273bac501d56451c0c0a828"
+ hash: "34d00f787b814ad82c025c77d6be51a2"
}
Frame {
msec: 2592
- hash: "73ebe3eec273bac501d56451c0c0a828"
+ hash: "34d00f787b814ad82c025c77d6be51a2"
}
Frame {
msec: 2608
- hash: "73ebe3eec273bac501d56451c0c0a828"
+ hash: "34d00f787b814ad82c025c77d6be51a2"
}
Frame {
msec: 2624
- hash: "73ebe3eec273bac501d56451c0c0a828"
+ hash: "34d00f787b814ad82c025c77d6be51a2"
}
Frame {
msec: 2640
- hash: "73ebe3eec273bac501d56451c0c0a828"
+ hash: "34d00f787b814ad82c025c77d6be51a2"
}
Frame {
msec: 2656
- hash: "73ebe3eec273bac501d56451c0c0a828"
+ hash: "34d00f787b814ad82c025c77d6be51a2"
}
Frame {
msec: 2672
- hash: "73ebe3eec273bac501d56451c0c0a828"
+ hash: "34d00f787b814ad82c025c77d6be51a2"
}
Frame {
msec: 2688
- hash: "73ebe3eec273bac501d56451c0c0a828"
+ hash: "34d00f787b814ad82c025c77d6be51a2"
}
Frame {
msec: 2704
- hash: "73ebe3eec273bac501d56451c0c0a828"
+ hash: "34d00f787b814ad82c025c77d6be51a2"
}
Frame {
msec: 2720
- hash: "73ebe3eec273bac501d56451c0c0a828"
+ hash: "34d00f787b814ad82c025c77d6be51a2"
}
Frame {
msec: 2736
- hash: "73ebe3eec273bac501d56451c0c0a828"
+ hash: "34d00f787b814ad82c025c77d6be51a2"
}
Frame {
msec: 2752
- hash: "73ebe3eec273bac501d56451c0c0a828"
+ hash: "34d00f787b814ad82c025c77d6be51a2"
}
Frame {
msec: 2768
- hash: "73ebe3eec273bac501d56451c0c0a828"
+ hash: "34d00f787b814ad82c025c77d6be51a2"
}
Frame {
msec: 2784
- hash: "73ebe3eec273bac501d56451c0c0a828"
+ hash: "34d00f787b814ad82c025c77d6be51a2"
}
Frame {
msec: 2800
- hash: "73ebe3eec273bac501d56451c0c0a828"
+ hash: "34d00f787b814ad82c025c77d6be51a2"
}
Frame {
msec: 2816
- hash: "73ebe3eec273bac501d56451c0c0a828"
+ hash: "34d00f787b814ad82c025c77d6be51a2"
}
Frame {
msec: 2832
- hash: "73ebe3eec273bac501d56451c0c0a828"
+ hash: "34d00f787b814ad82c025c77d6be51a2"
}
Frame {
msec: 2848
- hash: "73ebe3eec273bac501d56451c0c0a828"
+ hash: "34d00f787b814ad82c025c77d6be51a2"
}
Frame {
msec: 2864
- hash: "73ebe3eec273bac501d56451c0c0a828"
+ hash: "34d00f787b814ad82c025c77d6be51a2"
}
Frame {
msec: 2880
@@ -998,35 +998,35 @@ VisualTest {
}
Frame {
msec: 2896
- hash: "73ebe3eec273bac501d56451c0c0a828"
+ hash: "34d00f787b814ad82c025c77d6be51a2"
}
Frame {
msec: 2912
- hash: "73ebe3eec273bac501d56451c0c0a828"
+ hash: "34d00f787b814ad82c025c77d6be51a2"
}
Frame {
msec: 2928
- hash: "73ebe3eec273bac501d56451c0c0a828"
+ hash: "34d00f787b814ad82c025c77d6be51a2"
}
Frame {
msec: 2944
- hash: "73ebe3eec273bac501d56451c0c0a828"
+ hash: "34d00f787b814ad82c025c77d6be51a2"
}
Frame {
msec: 2960
- hash: "73ebe3eec273bac501d56451c0c0a828"
+ hash: "34d00f787b814ad82c025c77d6be51a2"
}
Frame {
msec: 2976
- hash: "73ebe3eec273bac501d56451c0c0a828"
+ hash: "34d00f787b814ad82c025c77d6be51a2"
}
Frame {
msec: 2992
- hash: "73ebe3eec273bac501d56451c0c0a828"
+ hash: "34d00f787b814ad82c025c77d6be51a2"
}
Frame {
msec: 3008
- hash: "73ebe3eec273bac501d56451c0c0a828"
+ hash: "34d00f787b814ad82c025c77d6be51a2"
}
Frame {
msec: 3024
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/echoMode.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/echoMode.qml
index 5d11403..83ec088 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/echoMode.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/echoMode.qml
@@ -1,10 +1,11 @@
import QtQuick 1.0
+import "../shared" 1.0
-Item{
+Item {
height: 50; width: 200
- Column{
+ Column {
//Not an exhaustive echo mode test, that's in QLineEdit (since the functionality is in QLineControl)
- TextInput{ id: main; focus: true; echoMode: TextInput.Password; passwordCharacter: '.' }
- Text{ text: main.text }
+ TestTextInput { id: main; focus: true; echoMode: TextInput.Password; passwordCharacter: '.' }
+ TestText { text: main.text }
}
}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/hAlign.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/hAlign.qml
index cf29f7c..f36a752 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/hAlign.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/hAlign.qml
@@ -1,39 +1,40 @@
import QtQuick 1.0
+import "../shared" 1.0
Item{
width:600;
height:300;
- Column{
+ Column {
//Because they have auto width, these three should look the same
- TextInput{
- text: "Jackdaws love my big sphinx of quartz";
+ TestTextInput {
+ text: "Jackdaws love my big sphinx of quartz";
horizontalAlignment: TextInput.AlignLeft;
}
- TextInput{
- text: "Jackdaws love my big sphinx of quartz";
+ TestTextInput {
+ text: "Jackdaws love my big sphinx of quartz";
horizontalAlignment: TextInput.AlignHCenter;
}
- TextInput{
- text: "Jackdaws love my big sphinx of quartz";
+ TestTextInput {
+ text: "Jackdaws love my big sphinx of quartz";
horizontalAlignment: TextInput.AlignRight;
}
Rectangle{ width: 600; height: 10; color: "pink" }
- TextInput{
+ TestTextInput {
height: 30;
width: 600;
- text: "Jackdaws love my big sphinx of quartz";
+ text: "Jackdaws love my big sphinx of quartz";
horizontalAlignment: TextInput.AlignLeft;
}
- TextInput{
+ TestTextInput {
height: 30;
width: 600;
- text: "Jackdaws love my big sphinx of quartz";
+ text: "Jackdaws love my big sphinx of quartz";
horizontalAlignment: TextInput.AlignHCenter;
}
- TextInput{
+ TestTextInput {
height: 30;
width: 600;
- text: "Jackdaws love my big sphinx of quartz";
+ text: "Jackdaws love my big sphinx of quartz";
horizontalAlignment: TextInput.AlignRight;
}
}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/usingLineEdit.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/usingLineEdit.qml
index 318af0f..758717e 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/usingLineEdit.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/usingLineEdit.qml
@@ -3,8 +3,8 @@ import QtQuick 1.0
Rectangle{
width: 600
height: 200
- Column{
- LineEdit{text: 'Hello world'}
- LineEdit{text: 'Hello underwhelmingly verbose world'; width: 80; height: 24;}
+ Column {
+ LineEdit {text: 'Hello world'}
+ LineEdit {text: 'Hello underwhelmingly verbose world'; width: 80; height: 24;}
}
}
diff --git a/tests/auto/declarative/qmlvisual/shared/README b/tests/auto/declarative/qmlvisual/shared/README
new file mode 100644
index 0000000..56a88ae
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/shared/README
@@ -0,0 +1,7 @@
+These components provide a standard set of what would otherwise be system dependant settings. These are
+-default font
+-default fontSize
+-cursor blink time (unblinking cursor)
+
+This should probably be replaced with a Test Style/Theme once QtComponents is done.
+Note that having multiple font loaders is probably quite inefficient, so don't use these for performance tests.
diff --git a/tests/auto/declarative/qmlvisual/shared/TestText.qml b/tests/auto/declarative/qmlvisual/shared/TestText.qml
new file mode 100644
index 0000000..be40112
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/shared/TestText.qml
@@ -0,0 +1,8 @@
+import QtQuick 1.0
+import "../shared" 1.0
+
+Text{
+ FontLoader { id: fixedFont; source: "Vera.ttf" }
+ font.family: fixedFont.name
+ font.pixelSize: 12
+}
diff --git a/tests/auto/declarative/qmlvisual/shared/TestTextEdit.qml b/tests/auto/declarative/qmlvisual/shared/TestTextEdit.qml
new file mode 100644
index 0000000..e19e418
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/shared/TestTextEdit.qml
@@ -0,0 +1,14 @@
+import QtQuick 1.0
+import "../shared" 1.0
+
+TextEdit {
+ id: edit
+ FontLoader { id: fixedFont; source: "Vera.ttf" }
+ font.family: fixedFont.name
+ font.pixelSize: 12
+ cursorDelegate: Rectangle {
+ width: 1;
+ color: "black";
+ visible: edit.cursorVisible
+ }
+}
diff --git a/tests/auto/declarative/qmlvisual/shared/TestTextInput.qml b/tests/auto/declarative/qmlvisual/shared/TestTextInput.qml
new file mode 100644
index 0000000..e01c2c2
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/shared/TestTextInput.qml
@@ -0,0 +1,14 @@
+import QtQuick 1.0
+import "../shared" 1.0
+
+TextInput {
+ id: inp
+ FontLoader { id: fixedFont; source: "Vera.ttf" }
+ font.family: fixedFont.name
+ font.pixelSize: 12
+ cursorDelegate: Rectangle {
+ width: 1;
+ color: "black";
+ visible: parent.cursorVisible//bug that 'inp' doesn't seem to work?
+ }
+}
diff --git a/tests/auto/declarative/qmlvisual/shared/Vera.ttf b/tests/auto/declarative/qmlvisual/shared/Vera.ttf
new file mode 100644
index 0000000..58cd6b5
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/shared/Vera.ttf
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/shared/qmldir b/tests/auto/declarative/qmlvisual/shared/qmldir
new file mode 100644
index 0000000..4aebb39
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/shared/qmldir
@@ -0,0 +1,3 @@
+TestText 1.0 TestText.qml
+TestTextEdit 1.0 TestTextEdit.qml
+TestTextInput 1.0 TestTextInput.qml
diff --git a/tests/auto/declarative/qmlvisual/tst_qmlvisual.cpp b/tests/auto/declarative/qmlvisual/tst_qmlvisual.cpp
index b52b430..ce08eab 100644
--- a/tests/auto/declarative/qmlvisual/tst_qmlvisual.cpp
+++ b/tests/auto/declarative/qmlvisual/tst_qmlvisual.cpp
@@ -102,7 +102,7 @@ void tst_qmlvisual::visual_data()
QTest::addColumn<QString>("testdata");
QStringList files;
- if (qgetenv("QMLVISUAL_ALL") != "")
+ if (qgetenv("QMLVISUAL_ALL") != "0")
files << findQmlFiles(QDir(QT_TEST_SOURCE_DIR));
else {
//these are newly added tests we want to try out in CI (then move to the stable list)
@@ -345,6 +345,12 @@ void usage()
"If you ONLY wish to use the 'error' property, you can record your test with\n"
"-recordnovisuals, or discard existing visuals with -removevisuals; the test\n"
"will then only fail on a syntax error, crash, or non-empty 'error' property.\n"
+ "\n"
+ "If your test has anything set to the 'skip' property on the root object then\n"
+ "test failures will be ignored. This allows for an opt-out of automated\n"
+ "aggregation of test results. The value of the 'skip' property (usually a\n"
+ "string) will then be printed to stdout when the test is run as part of the\n"
+ "message saying the test has been skipped.\n"
);
}
diff --git a/tests/auto/exceptionsafety/exceptionsafety.pro b/tests/auto/exceptionsafety/exceptionsafety.pro
index d162219..52ba9e2 100644
--- a/tests/auto/exceptionsafety/exceptionsafety.pro
+++ b/tests/auto/exceptionsafety/exceptionsafety.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_exceptionsafety.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/q_func_info/q_func_info.pro b/tests/auto/q_func_info/q_func_info.pro
index b30e3fb..64f08d4 100644
--- a/tests/auto/q_func_info/q_func_info.pro
+++ b/tests/auto/q_func_info/q_func_info.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_q_func_info.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qanimationgroup/qanimationgroup.pro b/tests/auto/qanimationgroup/qanimationgroup.pro
index 31667a8..5e1be0c 100644
--- a/tests/auto/qanimationgroup/qanimationgroup.pro
+++ b/tests/auto/qanimationgroup/qanimationgroup.pro
@@ -3,3 +3,4 @@ QT = core
SOURCES += tst_qanimationgroup.cpp
+CONFIG += parallel_test
diff --git a/tests/auto/qatomicint/qatomicint.pro b/tests/auto/qatomicint/qatomicint.pro
index 4a09d5f..7850d93 100644
--- a/tests/auto/qatomicint/qatomicint.pro
+++ b/tests/auto/qatomicint/qatomicint.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_qatomicint.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qatomicpointer/qatomicpointer.pro b/tests/auto/qatomicpointer/qatomicpointer.pro
index d192bad..89ff137 100644
--- a/tests/auto/qatomicpointer/qatomicpointer.pro
+++ b/tests/auto/qatomicpointer/qatomicpointer.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_qatomicpointer.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qbitarray/qbitarray.pro b/tests/auto/qbitarray/qbitarray.pro
index ec110c6..358d81b 100644
--- a/tests/auto/qbitarray/qbitarray.pro
+++ b/tests/auto/qbitarray/qbitarray.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_qbitarray.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qbuffer/qbuffer.pro b/tests/auto/qbuffer/qbuffer.pro
index ea83657..b768eb8 100644
--- a/tests/auto/qbuffer/qbuffer.pro
+++ b/tests/auto/qbuffer/qbuffer.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_qbuffer.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qbytearray/qbytearray.pro b/tests/auto/qbytearray/qbytearray.pro
index 35e48ad..f195dc8 100644
--- a/tests/auto/qbytearray/qbytearray.pro
+++ b/tests/auto/qbytearray/qbytearray.pro
@@ -18,3 +18,4 @@ wince* {
DEFINES += SRCDIR=\\\"$$PWD/\\\"
}
+CONFIG += parallel_test
diff --git a/tests/auto/qbytearraymatcher/qbytearraymatcher.pro b/tests/auto/qbytearraymatcher/qbytearraymatcher.pro
index 1618c3e..a2458e6 100644
--- a/tests/auto/qbytearraymatcher/qbytearraymatcher.pro
+++ b/tests/auto/qbytearraymatcher/qbytearraymatcher.pro
@@ -2,3 +2,4 @@ load(qttest_p4)
SOURCES += tst_qbytearraymatcher.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qcache/qcache.pro b/tests/auto/qcache/qcache.pro
index 728b0b6..0da4e14 100644
--- a/tests/auto/qcache/qcache.pro
+++ b/tests/auto/qcache/qcache.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_qcache.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qchar/qchar.pro b/tests/auto/qchar/qchar.pro
index 9cfccc2..9fcf132 100644
--- a/tests/auto/qchar/qchar.pro
+++ b/tests/auto/qchar/qchar.pro
@@ -13,3 +13,4 @@ symbian: {
} else {
DEFINES += SRCDIR=\\\"$$PWD/\\\"
}
+CONFIG += parallel_test
diff --git a/tests/auto/qcomplextext/tst_qcomplextext.cpp b/tests/auto/qcomplextext/tst_qcomplextext.cpp
index 4a96725..c66d452 100644
--- a/tests/auto/qcomplextext/tst_qcomplextext.cpp
+++ b/tests/auto/qcomplextext/tst_qcomplextext.cpp
@@ -45,6 +45,7 @@
#if !defined(Q_WS_MAC)
#include <QtTest/QtTest>
+#include <QtGui/QtGui>
#include <private/qtextengine_p.h>
#include "bidireorderstring.h"
@@ -68,6 +69,8 @@ public slots:
private slots:
void bidiReorderString_data();
void bidiReorderString();
+ void bidiCursor_qtbug2795();
+ void bidiCursor_PDF();
};
tst_QComplexText::tst_QComplexText()
@@ -159,6 +162,42 @@ void tst_QComplexText::bidiReorderString()
QTEST(visual, "VISUAL");
}
+void tst_QComplexText::bidiCursor_qtbug2795()
+{
+ QString str = QString::fromUtf8("الجزيرة نت");
+ QTextLayout l1(str);
+
+ l1.beginLayout();
+ QTextLine line1 = l1.createLine();
+ l1.endLayout();
+
+ qreal x1 = line1.cursorToX(0) - line1.cursorToX(str.size());
+
+ str.append("1");
+ QTextLayout l2(str);
+ l2.beginLayout();
+ QTextLine line2 = l2.createLine();
+ l2.endLayout();
+
+ qreal x2 = line2.cursorToX(0) - line2.cursorToX(str.size());
+
+ // The cursor should remain at the same position after a digit is appended
+ QVERIFY(x1 == x2);
+}
+
+void tst_QComplexText::bidiCursor_PDF()
+{
+ QString str = QString::fromUtf8("\342\200\252hello\342\200\254");
+ QTextLayout layout(str);
+
+ layout.beginLayout();
+ QTextLine line = layout.createLine();
+ layout.endLayout();
+
+ int size = str.size();
+
+ QVERIFY(line.cursorToX(size) == line.cursorToX(size - 1));
+}
QTEST_MAIN(tst_QComplexText)
#include "tst_qcomplextext.moc"
diff --git a/tests/auto/qcontiguouscache/qcontiguouscache.pro b/tests/auto/qcontiguouscache/qcontiguouscache.pro
index 618efed..5951f87 100644
--- a/tests/auto/qcontiguouscache/qcontiguouscache.pro
+++ b/tests/auto/qcontiguouscache/qcontiguouscache.pro
@@ -6,3 +6,4 @@ SOURCES += tst_qcontiguouscache.cpp
+CONFIG += parallel_test
diff --git a/tests/auto/qcoreapplication/qcoreapplication.pro b/tests/auto/qcoreapplication/qcoreapplication.pro
index 27f5e58..031af39 100644
--- a/tests/auto/qcoreapplication/qcoreapplication.pro
+++ b/tests/auto/qcoreapplication/qcoreapplication.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_qcoreapplication.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qcryptographichash/qcryptographichash.pro b/tests/auto/qcryptographichash/qcryptographichash.pro
index 7e1a866..65e31dc 100644
--- a/tests/auto/qcryptographichash/qcryptographichash.pro
+++ b/tests/auto/qcryptographichash/qcryptographichash.pro
@@ -6,3 +6,4 @@ symbian: {
TARGET.EPOCSTACKSIZE =0x5000
TARGET.EPOCHEAPSIZE="0x100000 0x1000000" # // Min 1Mb, max 16Mb
}
+CONFIG += parallel_test
diff --git a/tests/auto/qdate/qdate.pro b/tests/auto/qdate/qdate.pro
index 6e2781b3..1c04100 100644
--- a/tests/auto/qdate/qdate.pro
+++ b/tests/auto/qdate/qdate.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_qdate.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qdatetime/qdatetime.pro b/tests/auto/qdatetime/qdatetime.pro
index 02d3989..08a321e 100644
--- a/tests/auto/qdatetime/qdatetime.pro
+++ b/tests/auto/qdatetime/qdatetime.pro
@@ -12,3 +12,4 @@ win32-msvc|win32-msvc9x {
}
+CONFIG += parallel_test
diff --git a/tests/auto/qdebug/qdebug.pro b/tests/auto/qdebug/qdebug.pro
index 6e75a09..2b57168 100644
--- a/tests/auto/qdebug/qdebug.pro
+++ b/tests/auto/qdebug/qdebug.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_qdebug.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qdiriterator/qdiriterator.pro b/tests/auto/qdiriterator/qdiriterator.pro
index 020b229..140b57d 100644
--- a/tests/auto/qdiriterator/qdiriterator.pro
+++ b/tests/auto/qdiriterator/qdiriterator.pro
@@ -10,3 +10,4 @@ wince*|symbian: {
wince*mips*|wincewm50smart-msvc200*: DEFINES += WINCE_BROKEN_ITERATE=1
}
+CONFIG += parallel_test
diff --git a/tests/auto/qdoublevalidator/tst_qdoublevalidator.cpp b/tests/auto/qdoublevalidator/tst_qdoublevalidator.cpp
index 26890b3..98c4740 100644
--- a/tests/auto/qdoublevalidator/tst_qdoublevalidator.cpp
+++ b/tests/auto/qdoublevalidator/tst_qdoublevalidator.cpp
@@ -214,6 +214,13 @@ void tst_QDoubleValidator::validate_data()
arabicNum += QChar(1643);
arabicNum += QChar(1636);
QTest::newRow("arabic") << "ar" << 0.0 << 20.0 << 2 << arabicNum << ACC << ACC;
+
+ QTest::newRow("data_QTBUG_14935-1") << "de" << 0.0 << 1.0 << 5 << QString("0.31") << ACC << ACC;
+ QTest::newRow("data_QTBUG_14935-2") << "de" << 0.0 << 1000000.0 << 5 << QString("3.123") << ACC << ACC;
+ QTest::newRow("data_QTBUG_14935-3") << "de" << 0.0 << 1000000.0 << 5 << QString("123,345.678") << ACC << ACC;
+
+ QTest::newRow("data_de_problem-1") << "de" << 0.0 << 10.0 << 0 << QString("1.0") << ITM << ITM;
+ QTest::newRow("data_de_problem-2") << "de" << 0.0 << 10.0 << 0 << QString("0.1") << INV << INV;
}
void tst_QDoubleValidator::validate()
@@ -226,6 +233,9 @@ void tst_QDoubleValidator::validate()
QFETCH(QValidator::State, scientific_state);
QFETCH(QValidator::State, standard_state);
+ QEXPECT_FAIL("data_de_problem-1", "To be fixed. See QTBUG-15210.", Abort);
+ QEXPECT_FAIL("data_de_problem-2", "To be fixed. See QTBUG-15210.", Abort);
+
QLocale::setDefault(QLocale(localeName));
QDoubleValidator dv(minimum, maximum, decimals, 0);
@@ -308,6 +318,8 @@ void tst_QDoubleValidator::validateIntEquiv()
QFETCH(QString, input);
QFETCH(QValidator::State, state);
+ QLocale::setDefault(QLocale("C"));
+
QDoubleValidator dv(minimum, maximum, 0, 0);
dv.setNotation(QDoubleValidator::StandardNotation);
int dummy;
diff --git a/tests/auto/qeasingcurve/qeasingcurve.pro b/tests/auto/qeasingcurve/qeasingcurve.pro
index 2b66081..2a3a075 100644
--- a/tests/auto/qeasingcurve/qeasingcurve.pro
+++ b/tests/auto/qeasingcurve/qeasingcurve.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
QT = core
SOURCES += tst_qeasingcurve.cpp
+CONFIG += parallel_test
diff --git a/tests/auto/qelapsedtimer/qelapsedtimer.pro b/tests/auto/qelapsedtimer/qelapsedtimer.pro
index ed75228..8768876 100644
--- a/tests/auto/qelapsedtimer/qelapsedtimer.pro
+++ b/tests/auto/qelapsedtimer/qelapsedtimer.pro
@@ -11,3 +11,4 @@ wince* {
DEFINES += SRCDIR=\\\"$$PWD/\\\"
}
+CONFIG += parallel_test
diff --git a/tests/auto/qevent/qevent.pro b/tests/auto/qevent/qevent.pro
index 5c14299..6042b6c 100644
--- a/tests/auto/qevent/qevent.pro
+++ b/tests/auto/qevent/qevent.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_qevent.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qexplicitlyshareddatapointer/qexplicitlyshareddatapointer.pro b/tests/auto/qexplicitlyshareddatapointer/qexplicitlyshareddatapointer.pro
index 8a45aa2..cf574ff 100644
--- a/tests/auto/qexplicitlyshareddatapointer/qexplicitlyshareddatapointer.pro
+++ b/tests/auto/qexplicitlyshareddatapointer/qexplicitlyshareddatapointer.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_qexplicitlyshareddatapointer.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qflags/qflags.pro b/tests/auto/qflags/qflags.pro
index cd7f759..097a218 100644
--- a/tests/auto/qflags/qflags.pro
+++ b/tests/auto/qflags/qflags.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_qflags.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qfuture/qfuture.pro b/tests/auto/qfuture/qfuture.pro
index c2b16b7..d6faae7 100644
--- a/tests/auto/qfuture/qfuture.pro
+++ b/tests/auto/qfuture/qfuture.pro
@@ -2,3 +2,4 @@ load(qttest_p4)
DEFINES += QT_STRICT_ITERATORS
SOURCES += tst_qfuture.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qfuturewatcher/qfuturewatcher.pro b/tests/auto/qfuturewatcher/qfuturewatcher.pro
index 79d8739..67f04ef 100644
--- a/tests/auto/qfuturewatcher/qfuturewatcher.pro
+++ b/tests/auto/qfuturewatcher/qfuturewatcher.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_qfuturewatcher.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qgetputenv/qgetputenv.pro b/tests/auto/qgetputenv/qgetputenv.pro
index cbde272..df94f14 100644
--- a/tests/auto/qgetputenv/qgetputenv.pro
+++ b/tests/auto/qgetputenv/qgetputenv.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_qgetputenv.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qgl/tst_qgl.cpp b/tests/auto/qgl/tst_qgl.cpp
index dfcfb47..7f9ee04 100644
--- a/tests/auto/qgl/tst_qgl.cpp
+++ b/tests/auto/qgl/tst_qgl.cpp
@@ -96,6 +96,7 @@ private slots:
void shareRegister();
void qglContextDefaultBindTexture();
void textureCleanup();
+ void threadImages();
};
tst_QGL::tst_QGL()
@@ -2245,6 +2246,127 @@ void tst_QGL::textureCleanup()
#endif
}
+namespace ThreadImages {
+
+class Producer : public QObject
+{
+ Q_OBJECT
+public:
+ Producer()
+ {
+ startTimer(20);
+
+ QThread *thread = new QThread;
+ thread->start();
+
+ connect(this, SIGNAL(destroyed()), thread, SLOT(quit()));
+
+ moveToThread(thread);
+ connect(thread, SIGNAL(finished()), thread, SLOT(deleteLater()));
+ }
+
+signals:
+ void imageReady(const QImage &image);
+
+protected:
+ void timerEvent(QTimerEvent *)
+ {
+ QImage image(256, 256, QImage::Format_RGB32);
+ QLinearGradient g(0, 0, 0, 256);
+ g.setColorAt(0, QColor(255, 180, 180));
+ g.setColorAt(1, Qt::white);
+ g.setSpread(QGradient::ReflectSpread);
+
+ QBrush brush(g);
+ brush.setTransform(QTransform::fromTranslate(0, delta));
+ delta += 10;
+
+ QPainter p(&image);
+ p.fillRect(image.rect(), brush);
+
+ if (images.size() > 10)
+ images.removeFirst();
+
+ images.append(image);
+
+ emit imageReady(image);
+ }
+
+private:
+ QList<QImage> images;
+ int delta;
+};
+
+
+class DisplayWidget : public QGLWidget
+{
+ Q_OBJECT
+public:
+ DisplayWidget(QWidget *parent) : QGLWidget(parent) {}
+ void paintEvent(QPaintEvent *)
+ {
+ QPainter p(this);
+ p.drawImage(rect(), m_image);
+ }
+
+public slots:
+ void setImage(const QImage &image)
+ {
+ m_image = image;
+ update();
+ }
+
+private:
+ QImage m_image;
+};
+
+class Widget : public QWidget
+{
+ Q_OBJECT
+public:
+ Widget()
+ : iterations(0)
+ , display(0)
+ , producer(new Producer)
+ {
+ startTimer(400);
+ connect(this, SIGNAL(destroyed()), producer, SLOT(deleteLater()));
+ }
+
+ int iterations;
+
+protected:
+ void timerEvent(QTimerEvent *)
+ {
+ ++iterations;
+
+ delete display;
+ display = new DisplayWidget(this);
+ connect(producer, SIGNAL(imageReady(const QImage &)), display, SLOT(setImage(const QImage &)));
+
+ display->setGeometry(rect());
+ display->show();
+ }
+
+private:
+ DisplayWidget *display;
+ Producer *producer;
+};
+
+}
+
+void tst_QGL::threadImages()
+{
+ ThreadImages::Widget *widget = new ThreadImages::Widget;
+ widget->show();
+
+ while (widget->iterations <= 5) {
+ qApp->processEvents();
+ }
+
+ delete widget;
+}
+
class tst_QGLDummy : public QObject
{
Q_OBJECT
diff --git a/tests/auto/qglobal/qglobal.pro b/tests/auto/qglobal/qglobal.pro
index 8f1e00a..a4dffac 100644
--- a/tests/auto/qglobal/qglobal.pro
+++ b/tests/auto/qglobal/qglobal.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_qglobal.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qhash/qhash.pro b/tests/auto/qhash/qhash.pro
index 86b98a2..16c9eab 100644
--- a/tests/auto/qhash/qhash.pro
+++ b/tests/auto/qhash/qhash.pro
@@ -6,3 +6,4 @@ symbian: {
TARGET.EPOCSTACKSIZE =0x5000
TARGET.EPOCHEAPSIZE="0x100000 0x1000000" # // Min 1Mb, max 16Mb
}
+CONFIG += parallel_test
diff --git a/tests/auto/qinputcontext/tst_qinputcontext.cpp b/tests/auto/qinputcontext/tst_qinputcontext.cpp
index 7811a53..5a258a9 100644
--- a/tests/auto/qinputcontext/tst_qinputcontext.cpp
+++ b/tests/auto/qinputcontext/tst_qinputcontext.cpp
@@ -158,8 +158,8 @@ public:
}
// For some reason, the test fails if using processEvents instead of an event loop
- // with a zero timer to quit it, so use the timer.
-#define KEY_WAIT 0
+ // with a timer to quit it, so use the timer.
+#define KEY_WAIT 10
void replay(QWidget *w)
{
diff --git a/tests/auto/qlibrary/qlibrary.pro b/tests/auto/qlibrary/qlibrary.pro
index fd5790b..5dc129f 100644
--- a/tests/auto/qlibrary/qlibrary.pro
+++ b/tests/auto/qlibrary/qlibrary.pro
@@ -15,3 +15,4 @@ TARGET = tst_qlibrary
# no special install rule for subdir
INSTALLS =
+CONFIG += parallel_test
diff --git a/tests/auto/qline/qline.pro b/tests/auto/qline/qline.pro
index 4651fd3..6e9af24 100644
--- a/tests/auto/qline/qline.pro
+++ b/tests/auto/qline/qline.pro
@@ -4,3 +4,4 @@ SOURCES += tst_qline.cpp
unix:!mac:!symbian:!vxworks:LIBS+=-lm
+CONFIG += parallel_test
diff --git a/tests/auto/qmap/qmap.pro b/tests/auto/qmap/qmap.pro
index 00b84d1..eaed926 100644
--- a/tests/auto/qmap/qmap.pro
+++ b/tests/auto/qmap/qmap.pro
@@ -4,3 +4,4 @@ QT = core
SOURCES += tst_qmap.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qmargins/qmargins.pro b/tests/auto/qmargins/qmargins.pro
index 5a6aa4f..0404da0 100644
--- a/tests/auto/qmargins/qmargins.pro
+++ b/tests/auto/qmargins/qmargins.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_qmargins.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qmath/qmath.pro b/tests/auto/qmath/qmath.pro
index 03134ee..e5784ce 100644
--- a/tests/auto/qmath/qmath.pro
+++ b/tests/auto/qmath/qmath.pro
@@ -4,3 +4,4 @@ QT = core
SOURCES += tst_qmath.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qmetatype/qmetatype.pro b/tests/auto/qmetatype/qmetatype.pro
index a84d238..ed1de83 100644
--- a/tests/auto/qmetatype/qmetatype.pro
+++ b/tests/auto/qmetatype/qmetatype.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_qmetatype.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qmutex/qmutex.pro b/tests/auto/qmutex/qmutex.pro
index bd24dcb..760dcfd 100644
--- a/tests/auto/qmutex/qmutex.pro
+++ b/tests/auto/qmutex/qmutex.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_qmutex.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qmutexlocker/qmutexlocker.pro b/tests/auto/qmutexlocker/qmutexlocker.pro
index ff8a3da..01c3691 100644
--- a/tests/auto/qmutexlocker/qmutexlocker.pro
+++ b/tests/auto/qmutexlocker/qmutexlocker.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_qmutexlocker.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qnumeric/qnumeric.pro b/tests/auto/qnumeric/qnumeric.pro
index 162f980..c0af962 100644
--- a/tests/auto/qnumeric/qnumeric.pro
+++ b/tests/auto/qnumeric/qnumeric.pro
@@ -4,3 +4,4 @@ QT = core
SOURCES += tst_qnumeric.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qobject/qobject.pro b/tests/auto/qobject/qobject.pro
index b6b3f20..113e14a 100644
--- a/tests/auto/qobject/qobject.pro
+++ b/tests/auto/qobject/qobject.pro
@@ -1,2 +1,3 @@
TEMPLATE = subdirs
SUBDIRS = tst_qobject.pro signalbug.pro
+CONFIG += parallel_test
diff --git a/tests/auto/qobjectrace/qobjectrace.pro b/tests/auto/qobjectrace/qobjectrace.pro
index 322adff..526875b 100644
--- a/tests/auto/qobjectrace/qobjectrace.pro
+++ b/tests/auto/qobjectrace/qobjectrace.pro
@@ -3,3 +3,4 @@ SOURCES += tst_qobjectrace.cpp
QT = core
TARGET.EPOCHEAPSIZE = 20000000 40000000
+CONFIG += parallel_test
diff --git a/tests/auto/qpainter/tst_qpainter.cpp b/tests/auto/qpainter/tst_qpainter.cpp
index 42303d2..ab380a6 100644
--- a/tests/auto/qpainter/tst_qpainter.cpp
+++ b/tests/auto/qpainter/tst_qpainter.cpp
@@ -260,6 +260,7 @@ private slots:
void drawPointScaled();
void QTBUG14614_gradientCacheRaceCondition();
+ void drawTextOpacity();
private:
void fillData();
@@ -4581,32 +4582,6 @@ void tst_QPainter::drawText_subPixelPositionsInRaster_qtbug5053()
#if !defined(Q_WS_MAC) || !defined(QT_MAC_USE_COCOA)
QSKIP("Only Mac/Cocoa supports sub pixel positions in raster engine currently", SkipAll);
#endif
-
- int w = 10, h = 10;
- QImage image(w, h, QImage::Format_RGB32);
- image.fill(0xffffffff);
- QPainter p(&image);
- p.drawText(0, h, "X\\");
- p.end();
-
- bool foundNonGrayPixel = false;
- const int *bits = (const int *) ((const QImage &) image).bits();
- int bpl = image.bytesPerLine() / 4;
- for (int y=0; y<w; ++y) {
- for (int x=0; x<h; ++x) {
- int r = qRed(bits[x]);
- int g = qGreen(bits[x]);
- int b = qBlue(bits[x]);
- if (r != g || r != b) {
- foundNonGrayPixel = true;
- break;
- }
- }
- bits += bpl;
- }
- if (!foundNonGrayPixel)
- QSKIP("Font smoothing must be turned on for this test", SkipAll);
-
QFontMetricsF fm(qApp->font());
QImage baseLine(fm.width(QChar::fromLatin1('e')), fm.height(), QImage::Format_RGB32);
@@ -4685,6 +4660,30 @@ void tst_QPainter::QTBUG14614_gradientCacheRaceCondition()
producers[i].wait();
}
+void tst_QPainter::drawTextOpacity()
+{
+ QImage image(32, 32, QImage::Format_RGB32);
+ image.fill(0xffffffff);
+
+ QPainter p(&image);
+ p.setPen(QColor("#6F6F6F"));
+ p.setOpacity(0.5);
+ p.drawText(5, 30, QLatin1String("Qt"));
+ p.end();
+
+ QImage copy = image;
+ image.fill(0xffffffff);
+
+ p.begin(&image);
+ p.setPen(QColor("#6F6F6F"));
+ p.drawLine(-10, -10, -1, -1);
+ p.setOpacity(0.5);
+ p.drawText(5, 30, QLatin1String("Qt"));
+ p.end();
+
+ QCOMPARE(image, copy);
+}
+
QTEST_MAIN(tst_QPainter)
#include "tst_qpainter.moc"
diff --git a/tests/auto/qpauseanimation/tst_qpauseanimation.cpp b/tests/auto/qpauseanimation/tst_qpauseanimation.cpp
index 605cee6..378eb1c 100644
--- a/tests/auto/qpauseanimation/tst_qpauseanimation.cpp
+++ b/tests/auto/qpauseanimation/tst_qpauseanimation.cpp
@@ -394,7 +394,10 @@ void tst_QPauseAnimation::multipleSequentialGroups()
QVERIFY(subgroup3.state() == QAbstractAnimation::Running);
QVERIFY(subgroup4.state() == QAbstractAnimation::Running);
- QTest::qWait(group.totalDuration() + 100);
+ // This is a pretty long animation so it tends to get rather out of sync
+ // when using the consistent timer, so run for an extra half second for good
+ // measure...
+ QTest::qWait(group.totalDuration() + 500);
#ifdef Q_OS_WIN
if (group.state() != QAbstractAnimation::Stopped)
diff --git a/tests/auto/qpixmap/tst_qpixmap.cpp b/tests/auto/qpixmap/tst_qpixmap.cpp
index 551e261..2cbd4f1 100644
--- a/tests/auto/qpixmap/tst_qpixmap.cpp
+++ b/tests/auto/qpixmap/tst_qpixmap.cpp
@@ -828,33 +828,43 @@ void tst_QPixmap::drawBitmap()
void tst_QPixmap::grabWidget()
{
- QWidget widget;
- QImage image(128, 128, QImage::Format_ARGB32_Premultiplied);
- for (int row = 0; row < image.height(); ++row) {
- QRgb *line = reinterpret_cast<QRgb *>(image.scanLine(row));
- for (int col = 0; col < image.width(); ++col)
- line[col] = qRgb(rand() & 255, row, col);
- }
+ for (int opaque = 0; opaque < 2; ++opaque) {
+ QWidget widget;
+ QImage image(128, 128, opaque ? QImage::Format_RGB32 : QImage::Format_ARGB32_Premultiplied);
+ for (int row = 0; row < image.height(); ++row) {
+ QRgb *line = reinterpret_cast<QRgb *>(image.scanLine(row));
+ for (int col = 0; col < image.width(); ++col)
+ line[col] = qRgba(rand() & 255, row, col, opaque ? 255 : 127);
+ }
- QPalette pal = widget.palette();
- pal.setBrush(QPalette::Window, QBrush(image));
- widget.setPalette(pal);
- widget.resize(128, 128);
+ QPalette pal = widget.palette();
+ pal.setBrush(QPalette::Window, QBrush(image));
+ widget.setPalette(pal);
+ widget.resize(128, 128);
- QPixmap expected = QPixmap::fromImage(QImage(image.scanLine(64) + 64 * 4, 64, 64, image.bytesPerLine(), image.format()));
- QPixmap actual = QPixmap::grabWidget(&widget, QRect(64, 64, 64, 64));
- QVERIFY(lenientCompare(actual, expected));
+ QPixmap expected(64, 64);
+ if (!opaque)
+ expected.fill(Qt::transparent);
- actual = QPixmap::grabWidget(&widget, 64, 64);
- QVERIFY(lenientCompare(actual, expected));
+ QPainter p(&expected);
+ p.translate(-64, -64);
+ p.drawTiledPixmap(0, 0, 128, 128, pal.brush(QPalette::Window).texture(), 0, 0);
+ p.end();
- // Make sure a widget that is not yet shown is grabbed correctly.
- QTreeWidget widget2;
- actual = QPixmap::grabWidget(&widget2);
- widget2.show();
- expected = QPixmap::grabWidget(&widget2);
+ QPixmap actual = QPixmap::grabWidget(&widget, QRect(64, 64, 64, 64));
+ QVERIFY(lenientCompare(actual, expected));
- QVERIFY(lenientCompare(actual, expected));
+ actual = QPixmap::grabWidget(&widget, 64, 64);
+ QVERIFY(lenientCompare(actual, expected));
+
+ // Make sure a widget that is not yet shown is grabbed correctly.
+ QTreeWidget widget2;
+ actual = QPixmap::grabWidget(&widget2);
+ widget2.show();
+ expected = QPixmap::grabWidget(&widget2);
+
+ QVERIFY(lenientCompare(actual, expected));
+ }
}
void tst_QPixmap::grabWindow()
diff --git a/tests/auto/qplugin/qplugin.pro b/tests/auto/qplugin/qplugin.pro
index aafcb36..37a12da 100644
--- a/tests/auto/qplugin/qplugin.pro
+++ b/tests/auto/qplugin/qplugin.pro
@@ -25,3 +25,4 @@ mac {
SUBDIRS += tst_qplugin.pro
+CONFIG += parallel_test
diff --git a/tests/auto/qpluginloader/qpluginloader.pro b/tests/auto/qpluginloader/qpluginloader.pro
index 382d6e4..6e41b4c 100644
--- a/tests/auto/qpluginloader/qpluginloader.pro
+++ b/tests/auto/qpluginloader/qpluginloader.pro
@@ -11,3 +11,4 @@ TARGET = tst_qpluginloader
INSTALLS =
+CONFIG += parallel_test
diff --git a/tests/auto/qpoint/qpoint.pro b/tests/auto/qpoint/qpoint.pro
index 8b006c2..fd24046 100644
--- a/tests/auto/qpoint/qpoint.pro
+++ b/tests/auto/qpoint/qpoint.pro
@@ -5,3 +5,4 @@
load(qttest_p4)
SOURCES += tst_qpoint.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qprocessenvironment/qprocessenvironment.pro b/tests/auto/qprocessenvironment/qprocessenvironment.pro
index 398facc..60dba50 100644
--- a/tests/auto/qprocessenvironment/qprocessenvironment.pro
+++ b/tests/auto/qprocessenvironment/qprocessenvironment.pro
@@ -3,3 +3,4 @@ load(qttest_p4)
QT = core
SOURCES += tst_qprocessenvironment.cpp
+CONFIG += parallel_test
diff --git a/tests/auto/qqueue/qqueue.pro b/tests/auto/qqueue/qqueue.pro
index ed489f9..ce0d8c3 100644
--- a/tests/auto/qqueue/qqueue.pro
+++ b/tests/auto/qqueue/qqueue.pro
@@ -4,3 +4,4 @@ QT = core
SOURCES += tst_qqueue.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qrand/qrand.pro b/tests/auto/qrand/qrand.pro
index c868ed4..0db8af8 100644
--- a/tests/auto/qrand/qrand.pro
+++ b/tests/auto/qrand/qrand.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_qrand.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qreadlocker/qreadlocker.pro b/tests/auto/qreadlocker/qreadlocker.pro
index 5919102..ee53307 100644
--- a/tests/auto/qreadlocker/qreadlocker.pro
+++ b/tests/auto/qreadlocker/qreadlocker.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_qreadlocker.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qreadwritelock/qreadwritelock.pro b/tests/auto/qreadwritelock/qreadwritelock.pro
index 4318b18..93f7c68 100644
--- a/tests/auto/qreadwritelock/qreadwritelock.pro
+++ b/tests/auto/qreadwritelock/qreadwritelock.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_qreadwritelock.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qrect/qrect.pro b/tests/auto/qrect/qrect.pro
index 75940b3..f1ad046e 100644
--- a/tests/auto/qrect/qrect.pro
+++ b/tests/auto/qrect/qrect.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_qrect.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qregexp/qregexp.pro b/tests/auto/qregexp/qregexp.pro
index 80b6827..e0fef12 100644
--- a/tests/auto/qregexp/qregexp.pro
+++ b/tests/auto/qregexp/qregexp.pro
@@ -6,3 +6,4 @@ QT = core
QT = core
SOURCES += tst_qregexp.cpp
+CONFIG += parallel_test
diff --git a/tests/auto/qresourceengine/qresourceengine.pro b/tests/auto/qresourceengine/qresourceengine.pro
index 6bdeb1e..c0db52f 100644
--- a/tests/auto/qresourceengine/qresourceengine.pro
+++ b/tests/auto/qresourceengine/qresourceengine.pro
@@ -43,3 +43,4 @@ wince*|symbian:{
} else {
DEFINES += SRCDIR=\\\"$$PWD/\\\"
}
+CONFIG += parallel_test
diff --git a/tests/auto/qringbuffer/qringbuffer.pro b/tests/auto/qringbuffer/qringbuffer.pro
index 91fb0a0..2e4f166 100644
--- a/tests/auto/qringbuffer/qringbuffer.pro
+++ b/tests/auto/qringbuffer/qringbuffer.pro
@@ -4,3 +4,4 @@ SOURCES += tst_qringbuffer.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qscopedpointer/qscopedpointer.pro b/tests/auto/qscopedpointer/qscopedpointer.pro
index 13d8425..4a3d5b8d 100644
--- a/tests/auto/qscopedpointer/qscopedpointer.pro
+++ b/tests/auto/qscopedpointer/qscopedpointer.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_qscopedpointer.cpp
QT -= gui
+CONFIG += parallel_test
diff --git a/tests/auto/qscriptclass/tst_qscriptclass.cpp b/tests/auto/qscriptclass/tst_qscriptclass.cpp
index 2c669f3..20d62b4 100644
--- a/tests/auto/qscriptclass/tst_qscriptclass.cpp
+++ b/tests/auto/qscriptclass/tst_qscriptclass.cpp
@@ -66,6 +66,7 @@ public:
private slots:
void newInstance();
void getAndSetProperty();
+ void getProperty_invalidValue();
void enumerate();
void extension();
void defaultImplementations();
@@ -752,6 +753,26 @@ void tst_QScriptClass::getAndSetProperty()
QVERIFY(!obj1.property(bar).isValid());
}
+void tst_QScriptClass::getProperty_invalidValue()
+{
+ QScriptEngine eng;
+ TestClass cls(&eng);
+ cls.addCustomProperty(eng.toStringHandle("foo"), QScriptClass::HandlesReadAccess,
+ /*id=*/0, QScriptValue::ReadOnly, QScriptValue());
+ QScriptValue obj = eng.newObject(&cls);
+
+ QVERIFY(obj.property("foo").isUndefined());
+
+ eng.globalObject().setProperty("obj", obj);
+ QVERIFY(eng.evaluate("obj.hasOwnProperty('foo'))").toBool());
+ // The JS environment expects that a valid value is returned,
+ // otherwise we could crash.
+ QVERIFY(eng.evaluate("obj.foo").isUndefined());
+ QVERIFY(eng.evaluate("obj.foo + ''").isString());
+ QVERIFY(eng.evaluate("Object.getOwnPropertyDescriptor(obj, 'foo').value").isUndefined());
+ QVERIFY(eng.evaluate("Object.getOwnPropertyDescriptor(obj, 'foo').value +''").isString());
+}
+
void tst_QScriptClass::enumerate()
{
QScriptEngine eng;
diff --git a/tests/auto/qscriptcontext/tst_qscriptcontext.cpp b/tests/auto/qscriptcontext/tst_qscriptcontext.cpp
index cbcd16a..5e7ede8 100644
--- a/tests/auto/qscriptcontext/tst_qscriptcontext.cpp
+++ b/tests/auto/qscriptcontext/tst_qscriptcontext.cpp
@@ -50,6 +50,7 @@
//TESTED_FILES=
Q_DECLARE_METATYPE(QScriptValueList)
+Q_DECLARE_METATYPE(QScriptContext::Error)
QT_BEGIN_NAMESPACE
extern bool qt_script_isJITEnabled();
@@ -91,6 +92,10 @@ private slots:
void qobjectAsActivationObject();
void parentContextCallee_QT2270();
void popNativeContextScope();
+ void throwErrorInGlobalContext();
+ void throwErrorWithTypeInGlobalContext_data();
+ void throwErrorWithTypeInGlobalContext();
+ void throwValueInGlobalContext();
};
tst_QScriptContext::tst_QScriptContext()
@@ -1323,5 +1328,49 @@ void tst_QScriptContext::parentContextCallee_QT2270()
QVERIFY(callee.equals(fun));
}
+void tst_QScriptContext::throwErrorInGlobalContext()
+{
+ QScriptEngine eng;
+ QScriptValue ret = eng.currentContext()->throwError("foo");
+ QVERIFY(ret.isError());
+ QVERIFY(eng.hasUncaughtException());
+ QVERIFY(eng.uncaughtException().strictlyEquals(ret));
+ QCOMPARE(ret.toString(), QString::fromLatin1("Error: foo"));
+}
+
+void tst_QScriptContext::throwErrorWithTypeInGlobalContext_data()
+{
+ QTest::addColumn<QScriptContext::Error>("error");
+ QTest::addColumn<QString>("stringRepresentation");
+ QTest::newRow("ReferenceError") << QScriptContext::ReferenceError << QString::fromLatin1("ReferenceError: foo");
+ QTest::newRow("SyntaxError") << QScriptContext::SyntaxError << QString::fromLatin1("SyntaxError: foo");
+ QTest::newRow("TypeError") << QScriptContext::TypeError << QString::fromLatin1("TypeError: foo");
+ QTest::newRow("RangeError") << QScriptContext::RangeError << QString::fromLatin1("RangeError: foo");
+ QTest::newRow("URIError") << QScriptContext::URIError << QString::fromLatin1("URIError: foo");
+ QTest::newRow("UnknownError") << QScriptContext::UnknownError << QString::fromLatin1("Error: foo");
+}
+
+void tst_QScriptContext::throwErrorWithTypeInGlobalContext()
+{
+ QFETCH(QScriptContext::Error, error);
+ QFETCH(QString, stringRepresentation);
+ QScriptEngine eng;
+ QScriptValue ret = eng.currentContext()->throwError(error, "foo");
+ QVERIFY(ret.isError());
+ QVERIFY(eng.hasUncaughtException());
+ QVERIFY(eng.uncaughtException().strictlyEquals(ret));
+ QCOMPARE(ret.toString(), stringRepresentation);
+}
+
+void tst_QScriptContext::throwValueInGlobalContext()
+{
+ QScriptEngine eng;
+ QScriptValue val(&eng, 123);
+ QScriptValue ret = eng.currentContext()->throwValue(val);
+ QVERIFY(ret.strictlyEquals(val));
+ QVERIFY(eng.hasUncaughtException());
+ QVERIFY(eng.uncaughtException().strictlyEquals(val));
+}
+
QTEST_MAIN(tst_QScriptContext)
#include "tst_qscriptcontext.moc"
diff --git a/tests/auto/qscriptengine/idtranslatable-unicode.js b/tests/auto/qscriptengine/idtranslatable-unicode.js
new file mode 100644
index 0000000..e17d617
--- /dev/null
+++ b/tests/auto/qscriptengine/idtranslatable-unicode.js
@@ -0,0 +1,5 @@
+qsTrId('\u01F8\u01D2\u0199\u01D0\u01E1');
+
+QT_TRID_NOOP("\u0191\u01CE\u0211\u0229\u019C\u018E\u019A\u01D0");
+
+qsTrId("\u0181\u01A1\u0213\u018F\u018C", 10);
diff --git a/tests/auto/qscriptengine/qscriptengine.qrc b/tests/auto/qscriptengine/qscriptengine.qrc
index fa55a5b..d05d115 100644
--- a/tests/auto/qscriptengine/qscriptengine.qrc
+++ b/tests/auto/qscriptengine/qscriptengine.qrc
@@ -2,5 +2,7 @@
<qresource>
<file>translations/translatable_la.qm</file>
<file>translations/idtranslatable_la.qm</file>
+ <file>translations/translatable-unicode.qm</file>
+ <file>translations/idtranslatable-unicode.qm</file>
</qresource>
</RCC>
diff --git a/tests/auto/qscriptengine/translatable-unicode.js b/tests/auto/qscriptengine/translatable-unicode.js
new file mode 100644
index 0000000..afe2aff
--- /dev/null
+++ b/tests/auto/qscriptengine/translatable-unicode.js
@@ -0,0 +1,9 @@
+qsTr("H\u2082O");
+qsTranslate("\u010C\u0101\u011F\u0115", "CO\u2082");
+
+var unicode_strings = [
+ QT_TR_NOOP("\u0391\u0392\u0393"),
+ QT_TRANSLATE_NOOP("\u010C\u0101\u011F\u0115", "\u0414\u0415\u0416")
+];
+
+qsTr("H\u2082O", "not the same H\u2082O");
diff --git a/tests/auto/qscriptengine/translations/idtranslatable-unicode.qm b/tests/auto/qscriptengine/translations/idtranslatable-unicode.qm
new file mode 100644
index 0000000..8c5fb91
--- /dev/null
+++ b/tests/auto/qscriptengine/translations/idtranslatable-unicode.qm
Binary files differ
diff --git a/tests/auto/qscriptengine/translations/idtranslatable-unicode.ts b/tests/auto/qscriptengine/translations/idtranslatable-unicode.ts
new file mode 100644
index 0000000..74ebf43
--- /dev/null
+++ b/tests/auto/qscriptengine/translations/idtranslatable-unicode.ts
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="nb_NO">
+<defaultcodec>UTF-8</defaultcodec>
+<context>
+ <name></name>
+ <message id="Ǹǒƙǐǡ">
+ <location filename="idtranslatable-unicode.js" line="1"/>
+ <source></source>
+ <translation>Ƨưƈȼȝȿș</translation>
+ </message>
+ <message id="ƑǎȑȩƜƎƚǐ">
+ <location filename="idtranslatable-unicode.js" line="3"/>
+ <source></source>
+ <translation>Ǡȡȋȅȕ</translation>
+ </message>
+ <message id="ƁơȓƏƌ" numerus="yes">
+ <location filename="idtranslatable-unicode.js" line="5"/>
+ <source></source>
+ <translation>
+ <numerusform>Ƒưǹ</numerusform>
+ <numerusform>%n ƒơǒ(ș)</numerusform>
+ </translation>
+ </message>
+</context>
+</TS>
diff --git a/tests/auto/qscriptengine/translations/translatable-unicode.qm b/tests/auto/qscriptengine/translations/translatable-unicode.qm
new file mode 100644
index 0000000..aa75ce6
--- /dev/null
+++ b/tests/auto/qscriptengine/translations/translatable-unicode.qm
Binary files differ
diff --git a/tests/auto/qscriptengine/translations/translatable-unicode.ts b/tests/auto/qscriptengine/translations/translatable-unicode.ts
new file mode 100644
index 0000000..1b8b4d2
--- /dev/null
+++ b/tests/auto/qscriptengine/translations/translatable-unicode.ts
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0">
+<defaultcodec>UTF-8</defaultcodec>
+<context>
+ <name>translatable-unicode</name>
+ <message>
+ <location filename="translatable-unicode.js" line="1"/>
+ <source>H₂O</source>
+ <translation>ͻͼͽ</translation>
+ </message>
+ <message>
+ <location filename="translatable-unicode.js" line="5"/>
+ <source>ΑΒΓ</source>
+ <translation>ӜҴѼ</translation>
+ </message>
+ <message>
+ <location filename="translatable-unicode.js" line="9"/>
+ <source>H₂O</source>
+ <comment>not the same H₂O</comment>
+ <translation>ԶՊՒ</translation>
+ </message>
+</context>
+<context>
+ <name>Čāğĕ</name>
+ <message>
+ <location filename="translatable-unicode.js" line="2"/>
+ <source>CO₂</source>
+ <translation>בךע</translation>
+ </message>
+ <message>
+ <location filename="translatable-unicode.js" line="6"/>
+ <source>ДЕЖ</source>
+ <translation>خسس</translation>
+ </message>
+</context>
+</TS>
diff --git a/tests/auto/qscriptengine/tst_qscriptengine.cpp b/tests/auto/qscriptengine/tst_qscriptengine.cpp
index 5f38c22..d529b8b 100644
--- a/tests/auto/qscriptengine/tst_qscriptengine.cpp
+++ b/tests/auto/qscriptengine/tst_qscriptengine.cpp
@@ -186,6 +186,10 @@ private slots:
void translationContext_data();
void translationContext();
void translateScriptIdBased();
+ void translateScriptUnicode_data();
+ void translateScriptUnicode();
+ void translateScriptUnicodeIdBased_data();
+ void translateScriptUnicodeIdBased();
void functionScopes();
void nativeFunctionScopes();
void evaluateProgram();
@@ -4950,6 +4954,93 @@ void tst_QScriptEngine::translateScriptIdBased()
QString::fromLatin1("qtn_foo_bar")); // Doesn't have plural
}
+// How to add a new test row:
+// - Find a nice list of Unicode characters to choose from
+// - Write source string/context/comment in .js using Unicode escape sequences (\uABCD)
+// - Update corresponding .ts file (e.g. lupdate foo.js -ts foo.ts -codecfortr UTF-8)
+// - Enter translation in Linguist
+// - Update corresponding .qm file (e.g. lrelease foo.ts)
+// - Evaluate script that performs translation; make sure the correct result is returned
+// (e.g. by setting the resulting string as the text of a QLabel and visually verifying
+// that it looks the same as what you entered in Linguist :-) )
+// - Generate the expectedTranslation column data using toUtf8().toHex()
+void tst_QScriptEngine::translateScriptUnicode_data()
+{
+ QTest::addColumn<QString>("expression");
+ QTest::addColumn<QString>("fileName");
+ QTest::addColumn<QString>("expectedTranslation");
+
+ QString fileName = QString::fromLatin1("translatable-unicode.js");
+ QTest::newRow("qsTr('H\\u2082O')@translatable-unicode.js")
+ << QString::fromLatin1("qsTr('H\\u2082O')") << fileName << QString::fromUtf8("\xcd\xbb\xcd\xbc\xcd\xbd");
+ QTest::newRow("qsTranslate('\\u010C\\u0101\\u011F\\u0115', 'CO\\u2082')@translatable-unicode.js")
+ << QString::fromLatin1("qsTranslate('\\u010C\\u0101\\u011F\\u0115', 'CO\\u2082')") << fileName << QString::fromUtf8("\xd7\x91\xd7\x9a\xd7\xa2");
+ QTest::newRow("qsTr('\\u0391\\u0392\\u0393')@translatable-unicode.js")
+ << QString::fromLatin1("qsTr('\\u0391\\u0392\\u0393')") << fileName << QString::fromUtf8("\xd3\x9c\xd2\xb4\xd1\xbc");
+ QTest::newRow("qsTranslate('\\u010C\\u0101\\u011F\\u0115', '\\u0414\\u0415\\u0416')@translatable-unicode.js")
+ << QString::fromLatin1("qsTranslate('\\u010C\\u0101\\u011F\\u0115', '\\u0414\\u0415\\u0416')") << fileName << QString::fromUtf8("\xd8\xae\xd8\xb3\xd8\xb3");
+ QTest::newRow("qsTr('H\\u2082O', 'not the same H\\u2082O')@translatable-unicode.js")
+ << QString::fromLatin1("qsTr('H\\u2082O', 'not the same H\\u2082O')") << fileName << QString::fromUtf8("\xd4\xb6\xd5\x8a\xd5\x92");
+ QTest::newRow("qsTr('H\\u2082O')")
+ << QString::fromLatin1("qsTr('H\\u2082O')") << QString() << QString::fromUtf8("\x48\xe2\x82\x82\x4f");
+ QTest::newRow("qsTranslate('\\u010C\\u0101\\u011F\\u0115', 'CO\\u2082')")
+ << QString::fromLatin1("qsTranslate('\\u010C\\u0101\\u011F\\u0115', 'CO\\u2082')") << QString() << QString::fromUtf8("\xd7\x91\xd7\x9a\xd7\xa2");
+}
+
+void tst_QScriptEngine::translateScriptUnicode()
+{
+ QFETCH(QString, expression);
+ QFETCH(QString, fileName);
+ QFETCH(QString, expectedTranslation);
+
+ QScriptEngine engine;
+
+ QTranslator translator;
+ QVERIFY(translator.load(":/translations/translatable-unicode"));
+ QCoreApplication::instance()->installTranslator(&translator);
+ engine.installTranslatorFunctions();
+
+ QCOMPARE(engine.evaluate(expression, fileName).toString(), expectedTranslation);
+ QVERIFY(!engine.hasUncaughtException());
+
+ QCoreApplication::instance()->removeTranslator(&translator);
+}
+
+void tst_QScriptEngine::translateScriptUnicodeIdBased_data()
+{
+ QTest::addColumn<QString>("expression");
+ QTest::addColumn<QString>("expectedTranslation");
+
+ QTest::newRow("qsTrId('\\u01F8\\u01D2\\u0199\\u01D0\\u01E1'')")
+ << QString::fromLatin1("qsTrId('\\u01F8\\u01D2\\u0199\\u01D0\\u01E1')") << QString::fromUtf8("\xc6\xa7\xc6\xb0\xc6\x88\xc8\xbc\xc8\x9d\xc8\xbf\xc8\x99");
+ QTest::newRow("qsTrId('\\u0191\\u01CE\\u0211\\u0229\\u019C\\u018E\\u019A\\u01D0')")
+ << QString::fromLatin1("qsTrId('\\u0191\\u01CE\\u0211\\u0229\\u019C\\u018E\\u019A\\u01D0')") << QString::fromUtf8("\xc7\xa0\xc8\xa1\xc8\x8b\xc8\x85\xc8\x95");
+ QTest::newRow("qsTrId('\\u0181\\u01A1\\u0213\\u018F\\u018C', 10)")
+ << QString::fromLatin1("qsTrId('\\u0181\\u01A1\\u0213\\u018F\\u018C', 10)") << QString::fromUtf8("\x31\x30\x20\xc6\x92\xc6\xa1\xc7\x92\x28\xc8\x99\x29");
+ QTest::newRow("qsTrId('\\u0181\\u01A1\\u0213\\u018F\\u018C')")
+ << QString::fromLatin1("qsTrId('\\u0181\\u01A1\\u0213\\u018F\\u018C')") << QString::fromUtf8("\xc6\x91\xc6\xb0\xc7\xb9");
+ QTest::newRow("qsTrId('\\u01CD\\u0180\\u01A8\\u0190\\u019E\\u01AB')")
+ << QString::fromLatin1("qsTrId('\\u01CD\\u0180\\u01A8\\u0190\\u019E\\u01AB')") << QString::fromUtf8("\xc7\x8d\xc6\x80\xc6\xa8\xc6\x90\xc6\x9e\xc6\xab");
+}
+
+void tst_QScriptEngine::translateScriptUnicodeIdBased()
+{
+ QFETCH(QString, expression);
+ QFETCH(QString, expectedTranslation);
+
+ QScriptEngine engine;
+
+ QTranslator translator;
+ QVERIFY(translator.load(":/translations/idtranslatable-unicode"));
+ QCoreApplication::instance()->installTranslator(&translator);
+ engine.installTranslatorFunctions();
+
+ QCOMPARE(engine.evaluate(expression).toString(), expectedTranslation);
+ QVERIFY(!engine.hasUncaughtException());
+
+ QCoreApplication::instance()->removeTranslator(&translator);
+}
+
void tst_QScriptEngine::functionScopes()
{
QScriptEngine eng;
diff --git a/tests/auto/qscriptenginedebugger/tst_qscriptenginedebugger.cpp b/tests/auto/qscriptenginedebugger/tst_qscriptenginedebugger.cpp
index c5e4954..6b49858 100644
--- a/tests/auto/qscriptenginedebugger/tst_qscriptenginedebugger.cpp
+++ b/tests/auto/qscriptenginedebugger/tst_qscriptenginedebugger.cpp
@@ -50,24 +50,11 @@
#include <qmenu.h>
#include <qplaintextedit.h>
#include <qtoolbar.h>
+#include "../../shared/util.h"
//TESTED_CLASS=
//TESTED_FILES=
-// Will try to wait for the condition while allowing event processing
-#define QTRY_COMPARE(__expr, __expected) \
- do { \
- const int __step = 50; \
- const int __timeout = 5000; \
- if ((__expr) != (__expected)) { \
- QTest::qWait(0); \
- } \
- for (int __i = 0; __i < __timeout && ((__expr) != (__expected)); __i+=__step) { \
- QTest::qWait(__step); \
- } \
- QCOMPARE(__expr, __expected); \
- } while(0)
-
// Can't use QTest::qWait() because it causes event loop to hang on some platforms
static void qsWait(int ms)
{
@@ -89,6 +76,9 @@ public:
tst_QScriptEngineDebugger();
virtual ~tst_QScriptEngineDebugger();
+protected slots:
+ void recordDebuggerStateAndContinue();
+
private slots:
void attachAndDetach();
void action();
@@ -97,6 +87,11 @@ private slots:
void debuggerSignals();
void consoleCommands();
void multithreadedDebugging();
+ void autoShowStandardWindow();
+ void standardWindowOwnership();
+
+private:
+ QScriptEngineDebugger::DebuggerState m_recordedDebuggerState;
};
tst_QScriptEngineDebugger::tst_QScriptEngineDebugger()
@@ -107,6 +102,14 @@ tst_QScriptEngineDebugger::~tst_QScriptEngineDebugger()
{
}
+void tst_QScriptEngineDebugger::recordDebuggerStateAndContinue()
+{
+ QScriptEngineDebugger *debugger = qobject_cast<QScriptEngineDebugger*>(sender());
+ Q_ASSERT(debugger != 0);
+ m_recordedDebuggerState = debugger->state();
+ debugger->action(QScriptEngineDebugger::ContinueAction)->trigger();
+}
+
void tst_QScriptEngineDebugger::attachAndDetach()
{
#if defined(Q_OS_WINCE) && _WIN32_WCE < 0x600
@@ -784,5 +787,68 @@ void tst_QScriptEngineDebugger::multithreadedDebugging()
QTRY_COMPARE(threadFinishedSpy.count(), 1);
}
+void tst_QScriptEngineDebugger::autoShowStandardWindow()
+{
+ {
+ QScriptEngine engine;
+ QScriptEngineDebugger debugger;
+ QCOMPARE(debugger.autoShowStandardWindow(), true);
+ debugger.attachTo(&engine);
+ QObject::connect(&debugger, SIGNAL(evaluationSuspended()),
+ debugger.action(QScriptEngineDebugger::ContinueAction),
+ SLOT(trigger()));
+ engine.evaluate("debugger");
+ QTRY_VERIFY(debugger.standardWindow()->isVisible());
+
+ debugger.setAutoShowStandardWindow(true);
+ QCOMPARE(debugger.autoShowStandardWindow(), true);
+
+ debugger.setAutoShowStandardWindow(false);
+ QCOMPARE(debugger.autoShowStandardWindow(), false);
+
+ debugger.setAutoShowStandardWindow(true);
+ QCOMPARE(debugger.autoShowStandardWindow(), true);
+
+ debugger.standardWindow()->hide();
+
+ engine.evaluate("debugger");
+ QTRY_VERIFY(debugger.standardWindow()->isVisible());
+ }
+
+ {
+ QScriptEngine engine;
+ QScriptEngineDebugger debugger;
+ debugger.setAutoShowStandardWindow(false);
+ debugger.attachTo(&engine);
+ QObject::connect(&debugger, SIGNAL(evaluationSuspended()),
+ debugger.action(QScriptEngineDebugger::ContinueAction),
+ SLOT(trigger()));
+ QSignalSpy evaluationResumedSpy(&debugger, SIGNAL(evaluationResumed()));
+ engine.evaluate("debugger");
+ QTRY_COMPARE(evaluationResumedSpy.count(), 1);
+ QVERIFY(!debugger.standardWindow()->isVisible());
+ }
+}
+
+void tst_QScriptEngineDebugger::standardWindowOwnership()
+{
+ QScriptEngine engine;
+ QPointer<QMainWindow> win;
+ {
+ QScriptEngineDebugger debugger;
+ win = debugger.standardWindow();
+ }
+ QVERIFY(win == 0);
+
+ // Reparent the window.
+ QWidget widget;
+ {
+ QScriptEngineDebugger debugger;
+ win = debugger.standardWindow();
+ win->setParent(&widget);
+ }
+ QVERIFY(win != 0);
+}
+
QTEST_MAIN(tst_QScriptEngineDebugger)
#include "tst_qscriptenginedebugger.moc"
diff --git a/tests/auto/qscriptextqobject/tst_qscriptextqobject.cpp b/tests/auto/qscriptextqobject/tst_qscriptextqobject.cpp
index 1562118..29934d5 100644
--- a/tests/auto/qscriptextqobject/tst_qscriptextqobject.cpp
+++ b/tests/auto/qscriptextqobject/tst_qscriptextqobject.cpp
@@ -528,6 +528,20 @@ protected slots:
private slots:
void registeredTypes();
void getSetStaticProperty();
+ void getSetStaticProperty_propertyFlags();
+ void getSetStaticProperty_changeInCpp();
+ void getSetStaticProperty_changeInJS();
+ void getSetStaticProperty_compatibleVariantTypes();
+ void getSetStaticProperty_conversion();
+ void getSetStaticProperty_delete();
+ void getSetStaticProperty_nonScriptable();
+ void getSetStaticProperty_writeOnly();
+ void getSetStaticProperty_readOnly();
+ void getSetStaticProperty_enum();
+ void getSetStaticProperty_qflags();
+ void getSetStaticProperty_pointerDeref();
+ void getSetStaticProperty_customGetterSetter();
+ void getSetStaticProperty_methodPersistence();
void getSetDynamicProperty();
void getSetChildren();
void callQtInvokable();
@@ -655,7 +669,10 @@ void tst_QScriptExtQObject::getSetStaticProperty()
QCOMPARE(m_engine->evaluate("myObject.stringListProperty[1]").isString(), true);
QCOMPARE(m_engine->evaluate("myObject.stringListProperty[1]").toString(),
QLatin1String("zag"));
+}
+void tst_QScriptExtQObject::getSetStaticProperty_propertyFlags()
+{
// default flags for "normal" properties
{
QScriptValue mobj = m_engine->globalObject().property("myObject");
@@ -677,7 +694,10 @@ void tst_QScriptExtQObject::getSetStaticProperty()
QVERIFY(!(mobj.propertyFlags("mySlot()") & QScriptValue::SkipInEnumeration));
QVERIFY(mobj.propertyFlags("mySlot()") & QScriptValue::QObjectMember);
}
+}
+void tst_QScriptExtQObject::getSetStaticProperty_changeInCpp()
+{
// property change in C++ should be reflected in script
m_myObject->setIntProperty(456);
QCOMPARE(m_engine->evaluate("myObject.intProperty")
@@ -701,7 +721,10 @@ void tst_QScriptExtQObject::getSetStaticProperty()
m_myObject->setStringProperty(QLatin1String("zab"));
QCOMPARE(m_engine->evaluate("myObject.stringProperty")
.equals(QScriptValue(m_engine, QLatin1String("zab"))), true);
+}
+void tst_QScriptExtQObject::getSetStaticProperty_changeInJS()
+{
// property change in script should be reflected in C++
QCOMPARE(m_engine->evaluate("myObject.intProperty = 123")
.strictlyEquals(QScriptValue(m_engine, 123)), true);
@@ -784,7 +807,10 @@ void tst_QScriptExtQObject::getSetStaticProperty()
<< QLatin1String("two")
<< QLatin1String("true"));
}
+}
+void tst_QScriptExtQObject::getSetStaticProperty_compatibleVariantTypes()
+{
// test setting properties where we can't convert the type natively but where the
// types happen to be compatible variant types already
{
@@ -803,7 +829,10 @@ void tst_QScriptExtQObject::getSetStaticProperty()
mobj.setProperty("propWithCustomType", m_engine->newVariant(qVariantFromValue(t)));
QVERIFY(m_myObject->propWithCustomType().string == t.string);
}
+}
+void tst_QScriptExtQObject::getSetStaticProperty_conversion()
+{
// test that we do value conversion if necessary when setting properties
{
QScriptValue br = m_engine->evaluate("myObject.brushProperty");
@@ -823,28 +852,41 @@ void tst_QScriptExtQObject::getSetStaticProperty()
m_engine->globalObject().setProperty("myColor", QScriptValue());
}
+}
+void tst_QScriptExtQObject::getSetStaticProperty_delete()
+{
// try to delete
QCOMPARE(m_engine->evaluate("delete myObject.intProperty").toBoolean(), false);
QCOMPARE(m_engine->evaluate("myObject.intProperty").toNumber(), 123.0);
+ m_myObject->setVariantProperty(42);
QCOMPARE(m_engine->evaluate("delete myObject.variantProperty").toBoolean(), false);
QCOMPARE(m_engine->evaluate("myObject.variantProperty").toNumber(), 42.0);
+}
+void tst_QScriptExtQObject::getSetStaticProperty_nonScriptable()
+{
// non-scriptable property
QCOMPARE(m_myObject->hiddenProperty(), 456.0);
QCOMPARE(m_engine->evaluate("myObject.hiddenProperty").isUndefined(), true);
QCOMPARE(m_engine->evaluate("myObject.hiddenProperty = 123;"
"myObject.hiddenProperty").toInt32(), 123);
QCOMPARE(m_myObject->hiddenProperty(), 456.0);
+}
+void tst_QScriptExtQObject::getSetStaticProperty_writeOnly()
+{
// write-only property
QCOMPARE(m_myObject->writeOnlyProperty(), 789);
QCOMPARE(m_engine->evaluate("myObject.writeOnlyProperty").isUndefined(), true);
QCOMPARE(m_engine->evaluate("myObject.writeOnlyProperty = 123;"
"myObject.writeOnlyProperty").isUndefined(), true);
QCOMPARE(m_myObject->writeOnlyProperty(), 123);
+}
+void tst_QScriptExtQObject::getSetStaticProperty_readOnly()
+{
// read-only property
QCOMPARE(m_myObject->readOnlyProperty(), 987);
QCOMPARE(m_engine->evaluate("myObject.readOnlyProperty").toInt32(), 987);
@@ -856,7 +898,10 @@ void tst_QScriptExtQObject::getSetStaticProperty()
QCOMPARE(mobj.propertyFlags("readOnlyProperty") & QScriptValue::ReadOnly,
QScriptValue::ReadOnly);
}
+}
+void tst_QScriptExtQObject::getSetStaticProperty_enum()
+{
// enum property
QCOMPARE(m_myObject->enumProperty(), MyQObject::BarPolicy);
{
@@ -881,7 +926,10 @@ void tst_QScriptExtQObject::getSetStaticProperty()
QCOMPARE(m_myObject->enumProperty(), MyQObject::BazPolicy);
m_engine->evaluate("myObject.enumProperty = 'nada'");
QCOMPARE(m_myObject->enumProperty(), (MyQObject::Policy)-1);
+}
+void tst_QScriptExtQObject::getSetStaticProperty_qflags()
+{
// flags property
QCOMPARE(m_myObject->flagsProperty(), MyQObject::FooAbility);
{
@@ -900,7 +948,10 @@ void tst_QScriptExtQObject::getSetStaticProperty()
m_engine->evaluate("myObject.flagsProperty = 'ScoobyDoo'");
// ### ouch! Shouldn't QMetaProperty::write() rather not change the value...?
QCOMPARE(m_myObject->flagsProperty(), (MyQObject::Ability)-1);
+}
+void tst_QScriptExtQObject::getSetStaticProperty_pointerDeref()
+{
// auto-dereferencing of pointers
{
QBrush b = QColor(0xCA, 0xFE, 0xBA, 0xBE);
@@ -920,7 +971,10 @@ void tst_QScriptExtQObject::getSetStaticProperty()
}
m_engine->globalObject().setProperty("brushPointer", QScriptValue());
}
+}
+void tst_QScriptExtQObject::getSetStaticProperty_customGetterSetter()
+{
// install custom property getter+setter
{
QScriptValue mobj = m_engine->globalObject().property("myObject");
@@ -930,7 +984,10 @@ void tst_QScriptExtQObject::getSetStaticProperty()
mobj.setProperty("intProperty", 321);
QCOMPARE(mobj.property("intProperty").toInt32(), 321);
}
+}
+void tst_QScriptExtQObject::getSetStaticProperty_methodPersistence()
+{
// method properties are persistent
{
QScriptValue slot = m_engine->evaluate("myObject.mySlot");
diff --git a/tests/auto/qscriptvalue/tst_qscriptvalue.cpp b/tests/auto/qscriptvalue/tst_qscriptvalue.cpp
index be51cf2..de753d2 100644
--- a/tests/auto/qscriptvalue/tst_qscriptvalue.cpp
+++ b/tests/auto/qscriptvalue/tst_qscriptvalue.cpp
@@ -2332,6 +2332,54 @@ void tst_QScriptValue::getSetPrototype_twoEngines()
}
+void tst_QScriptValue::getSetPrototype_null()
+{
+ QScriptEngine eng;
+ QScriptValue object = eng.newObject();
+ object.setPrototype(QScriptValue(QScriptValue::NullValue));
+ QVERIFY(object.prototype().isNull());
+
+ QScriptValue newProto = eng.newObject();
+ object.setPrototype(newProto);
+ QVERIFY(object.prototype().equals(newProto));
+
+ object.setPrototype(QScriptValue(&eng, QScriptValue::NullValue));
+ QVERIFY(object.prototype().isNull());
+}
+
+void tst_QScriptValue::getSetPrototype_notObjectOrNull()
+{
+ QScriptEngine eng;
+ QScriptValue object = eng.newObject();
+ QScriptValue originalProto = object.prototype();
+
+ QEXPECT_FAIL("", "QTBUG-15154: QScriptValue::setPrototype() allows a non-Object value to be set as prototype", Abort);
+
+ // bool
+ object.setPrototype(true);
+ QVERIFY(object.prototype().equals(originalProto));
+ object.setPrototype(QScriptValue(&eng, true));
+ QVERIFY(object.prototype().equals(originalProto));
+
+ // number
+ object.setPrototype(123);
+ QVERIFY(object.prototype().equals(originalProto));
+ object.setPrototype(QScriptValue(&eng, 123));
+ QVERIFY(object.prototype().equals(originalProto));
+
+ // string
+ object.setPrototype("foo");
+ QVERIFY(object.prototype().equals(originalProto));
+ object.setPrototype(QScriptValue(&eng, "foo"));
+ QVERIFY(object.prototype().equals(originalProto));
+
+ // undefined
+ object.setPrototype(QScriptValue(QScriptValue::UndefinedValue));
+ QVERIFY(object.prototype().equals(originalProto));
+ object.setPrototype(QScriptValue(&eng, QScriptValue::UndefinedValue));
+ QVERIFY(object.prototype().equals(originalProto));
+}
+
void tst_QScriptValue::getSetPrototype()
{
QScriptEngine eng;
@@ -2442,6 +2490,20 @@ void tst_QScriptValue::getSetData_nonObjects()
QVERIFY(!value.data().isValid());
}
+void tst_QScriptValue::setData_QTBUG15144()
+{
+ QScriptEngine eng;
+ QScriptValue obj = eng.newObject();
+ for (int i = 0; i < 10000; ++i) {
+ // Create an object with property 'fooN' on it, and immediately kill
+ // the reference to the object so it and the property name become garbage.
+ eng.evaluate(QString::fromLatin1("o = {}; o.foo%0 = 10; o = null;").arg(i));
+ // Setting the data will cause a JS string to be allocated, which could
+ // trigger a GC. This should not cause a crash.
+ obj.setData("foodfight");
+ }
+}
+
class TestScriptClass : public QScriptClass
{
public:
diff --git a/tests/auto/qscriptvalue/tst_qscriptvalue.h b/tests/auto/qscriptvalue/tst_qscriptvalue.h
index 45a109e..7bf0b66 100644
--- a/tests/auto/qscriptvalue/tst_qscriptvalue.h
+++ b/tests/auto/qscriptvalue/tst_qscriptvalue.h
@@ -115,6 +115,8 @@ private slots:
void getSetPrototype_eval();
void getSetPrototype_invalidPrototype();
void getSetPrototype_twoEngines();
+ void getSetPrototype_null();
+ void getSetPrototype_notObjectOrNull();
void getSetPrototype();
void getSetScope();
void getSetProperty_HooliganTask162051();
@@ -134,6 +136,7 @@ private slots:
void getSetData_objects();
void getSetData_nonObjects_data();
void getSetData_nonObjects();
+ void setData_QTBUG15144();
void getSetScriptClass_emptyClass_data();
void getSetScriptClass_emptyClass();
void getSetScriptClass_JSObjectFromCpp();
@@ -163,6 +166,7 @@ private slots:
void nestedObjectToVariant_data();
void nestedObjectToVariant();
+
private:
void newEngine()
{
diff --git a/tests/auto/qscriptvaluegenerated/testgen/data.txt b/tests/auto/qscriptvaluegenerated/testgen/data.txt
index 73677ec..2cc1229 100644
--- a/tests/auto/qscriptvaluegenerated/testgen/data.txt
+++ b/tests/auto/qscriptvaluegenerated/testgen/data.txt
@@ -116,6 +116,11 @@ engine->evaluate("/foo/")
engine->evaluate("new Object()")
engine->evaluate("new Array()")
engine->evaluate("new Error()")
+engine->evaluate("new Boolean(true)")
+engine->evaluate("new Boolean(false)")
+engine->evaluate("new Number(123)")
+engine->evaluate("new RegExp('foo', 'gim')")
+engine->evaluate("new String('ciao')")
engine->evaluate("a = new Object(); a.foo = 22; a.foo")
engine->evaluate("Undefined")
engine->evaluate("Null")
@@ -154,8 +159,9 @@ engine->newArray()
engine->newArray(10)
engine->newDate(QDateTime())
engine->newQMetaObject(&QObject::staticMetaObject)
+engine->newRegExp("foo", "gim")
engine->newVariant(QVariant())
engine->newVariant(QVariant(123))
engine->newVariant(QVariant(false))
engine->newQObject(0)
-engine->newQObject(engine) \ No newline at end of file
+engine->newQObject(engine)
diff --git a/tests/auto/qscriptvaluegenerated/testgen/testgenerator.cpp b/tests/auto/qscriptvaluegenerated/testgen/testgenerator.cpp
index 9d7d33d..183b62c 100644
--- a/tests/auto/qscriptvaluegenerated/testgen/testgenerator.cpp
+++ b/tests/auto/qscriptvaluegenerated/testgen/testgenerator.cpp
@@ -156,14 +156,14 @@ static QString generateLicence()
static QString generateIsXXXDef(const QString& name, const QList<QString>& list)
{
- static const QString templ("void tst_QScriptValue::%1_initData()\n"\
+ static const QString templ("void tst_QScriptValueGenerated::%1_initData()\n"\
"{\n"\
" QTest::addColumn<bool>(\"expected\");\n"\
" initScriptValues();\n"\
"}\n"\
"\n"\
"static QString %1_array[] = {%2};\n\n"\
- "void tst_QScriptValue::%1_makeData(const char* expr)\n"\
+ "void tst_QScriptValueGenerated::%1_makeData(const char* expr)\n"\
"{\n"\
" static QSet<QString> %1;\n"\
" if (%1.isEmpty()) {\n"\
@@ -174,7 +174,7 @@ static QString generateIsXXXDef(const QString& name, const QList<QString>& list)
" newRow(expr) << %1.contains(expr);\n"\
"}\n"\
"\n"\
- "void tst_QScriptValue::%1_test(const char*, const QScriptValue& value)\n"\
+ "void tst_QScriptValueGenerated::%1_test(const char*, const QScriptValue& value)\n"\
"{\n"\
" QFETCH(bool, expected);\n"\
" QCOMPARE(value.%1(), expected);\n"\
@@ -197,8 +197,9 @@ static QString generateIsXXXDef(const QString& name, const QList<QString>& list)
set.append("\",");
set.append("\n \"");
set.append(escape(t));
- set.append("\"");
}
+ if (!list.isEmpty())
+ set.append("\"\n");
return result.arg(name, set.join(QString()), QString::number(list.count()));
}
@@ -207,7 +208,7 @@ template<typename T>
static QString generateToXXXDef(const QString& name, const QList<QPair<QString, T> >& list)
{
static const QString templ = "\n"\
- "void tst_QScriptValue::%1_initData()\n"\
+ "void tst_QScriptValueGenerated::%1_initData()\n"\
"{\n"\
" QTest::addColumn<%2>(\"expected\");\n"\
" initScriptValues();\n"\
@@ -215,7 +216,7 @@ static QString generateToXXXDef(const QString& name, const QList<QPair<QString,
"\n"\
"static QString %1_tagArray[] = {%4};\n\n"\
"static %2 %1_valueArray[] = {%5};\n\n"\
- "void tst_QScriptValue::%1_makeData(const char* expr)\n"\
+ "void tst_QScriptValueGenerated::%1_makeData(const char* expr)\n"\
"{\n"\
" static QHash<QString, %2> %1;\n"\
" if (%1.isEmpty()) {\n"\
@@ -226,7 +227,7 @@ static QString generateToXXXDef(const QString& name, const QList<QPair<QString,
" newRow(expr) << %1.value(expr);\n"\
"}\n"\
"\n"\
- "void tst_QScriptValue::%1_test(const char*, const QScriptValue& value)\n"\
+ "void tst_QScriptValueGenerated::%1_test(const char*, const QScriptValue& value)\n"\
"{\n"\
" QFETCH(%2, expected);\n"\
" QCOMPARE(value.%1(), expected);\n"\
@@ -268,7 +269,7 @@ template<>
QString generateToXXXDef<qsreal>(const QString& name, const QList<QPair<QString, qsreal> >& list)
{
static const QString templ = "\n"\
- "void tst_QScriptValue::%1_initData()\n"\
+ "void tst_QScriptValueGenerated::%1_initData()\n"\
"{\n"\
" QTest::addColumn<%2>(\"expected\");\n"\
" initScriptValues();\n"\
@@ -276,7 +277,7 @@ QString generateToXXXDef<qsreal>(const QString& name, const QList<QPair<QString,
"\n"\
"static QString %1_tagArray[] = {%3};\n"\
"static %2 %1_valueArray[] = {%4};\n"\
- "void tst_QScriptValue::%1_makeData(const char* expr)\n"\
+ "void tst_QScriptValueGenerated::%1_makeData(const char* expr)\n"\
"{\n"\
" static QHash<QString, %2> %1;\n"\
" if (%1.isEmpty()) {\n"\
@@ -287,7 +288,7 @@ QString generateToXXXDef<qsreal>(const QString& name, const QList<QPair<QString,
" newRow(expr) << %1.value(expr);\n"\
"}\n"\
"\n"\
- "void tst_QScriptValue::%1_test(const char*, const QScriptValue& value)\n"\
+ "void tst_QScriptValueGenerated::%1_test(const char*, const QScriptValue& value)\n"\
"{\n"\
" QFETCH(%2, expected);\n"\
"%666"
@@ -345,7 +346,7 @@ template<typename T>
static QString generateCastDef(const QList<QPair<QString, T> >& list)
{
static const QString templ = "\n"\
- "void tst_QScriptValue::qscriptvalue_cast%1_initData()\n"\
+ "void tst_QScriptValueGenerated::qscriptvalue_cast%1_initData()\n"\
"{\n"\
" QTest::addColumn<%1>(\"expected\");\n"\
" initScriptValues();\n"\
@@ -353,7 +354,7 @@ static QString generateCastDef(const QList<QPair<QString, T> >& list)
"\n"\
"static QString qscriptvalue_cast%1_tagArray[] = {%2};\n"\
"static %1 qscriptvalue_cast%1_valueArray[] = {%3};\n"\
- "void tst_QScriptValue::qscriptvalue_cast%1_makeData(const char* expr)\n"\
+ "void tst_QScriptValueGenerated::qscriptvalue_cast%1_makeData(const char* expr)\n"\
"{\n"\
" static QHash<QString, %1> value;\n"\
" if (value.isEmpty()) {\n"\
@@ -364,7 +365,7 @@ static QString generateCastDef(const QList<QPair<QString, T> >& list)
" newRow(expr) << value.value(expr);\n"\
"}\n"\
"\n"\
- "void tst_QScriptValue::qscriptvalue_cast%1_test(const char*, const QScriptValue& value)\n"\
+ "void tst_QScriptValueGenerated::qscriptvalue_cast%1_test(const char*, const QScriptValue& value)\n"\
"{\n"\
" QFETCH(%1, expected);\n"\
" QCOMPARE(qscriptvalue_cast<%1>(value), expected);\n"\
@@ -401,7 +402,7 @@ template<>
QString generateCastDef<qsreal>(const QList<QPair<QString, qsreal> >& list)
{
static const QString templ = "\n"\
- "void tst_QScriptValue::qscriptvalue_cast%1_initData()\n"\
+ "void tst_QScriptValueGenerated::qscriptvalue_cast%1_initData()\n"\
"{\n"\
" QTest::addColumn<%1>(\"expected\");\n"\
" initScriptValues();\n"\
@@ -409,7 +410,7 @@ QString generateCastDef<qsreal>(const QList<QPair<QString, qsreal> >& list)
"\n"\
"static QString qscriptvalue_cast%1_tagArray[] = {%2};\n"\
"static %1 qscriptvalue_cast%1_valueArray[] = {%3};\n"\
- "void tst_QScriptValue::qscriptvalue_cast%1_makeData(const char* expr)\n"\
+ "void tst_QScriptValueGenerated::qscriptvalue_cast%1_makeData(const char* expr)\n"\
"{\n"\
" static QHash<QString, %1> value;\n"\
" if (value.isEmpty()) {\n"\
@@ -420,7 +421,7 @@ QString generateCastDef<qsreal>(const QList<QPair<QString, qsreal> >& list)
" newRow(expr) << value.value(expr);\n"\
"}\n"\
"\n"\
- "void tst_QScriptValue::qscriptvalue_cast%1_test(const char*, const QScriptValue& value)\n"\
+ "void tst_QScriptValueGenerated::qscriptvalue_cast%1_test(const char*, const QScriptValue& value)\n"\
"{\n"\
" QFETCH(%1, expected);\n"\
" if (qIsNaN(expected)) {\n"
@@ -469,7 +470,7 @@ QString generateCastDef<qsreal>(const QList<QPair<QString, qsreal> >& list)
static QString generateCompareDef(const QString& comparisionType, const QList<QString> tags)
{
static const QString templ = "\n"\
- "void tst_QScriptValue::%1_initData()\n"\
+ "void tst_QScriptValueGenerated::%1_initData()\n"\
"{\n"\
" QTest::addColumn<QScriptValue>(\"other\");\n"\
" QTest::addColumn<bool>(\"expected\");\n"\
@@ -477,7 +478,7 @@ static QString generateCompareDef(const QString& comparisionType, const QList<QS
"}\n"\
"\n"\
"static QString %1_array[] = {%2};\n\n"\
- "void tst_QScriptValue::%1_makeData(const char *expr)\n"\
+ "void tst_QScriptValueGenerated::%1_makeData(const char *expr)\n"\
"{\n"\
" static QSet<QString> equals;\n"\
" if (equals.isEmpty()) {\n"\
@@ -492,7 +493,7 @@ static QString generateCompareDef(const QString& comparisionType, const QList<QS
" }\n"\
"}\n"\
"\n"\
- "void tst_QScriptValue::%1_test(const char *, const QScriptValue& value)\n"\
+ "void tst_QScriptValueGenerated::%1_test(const char *, const QScriptValue& value)\n"\
"{\n"\
" QFETCH(QScriptValue, other);\n"\
" QFETCH(bool, expected);\n"\
@@ -520,7 +521,7 @@ static QString generateCompareDef(const QString& comparisionType, const QList<QS
static QString generateInitDef(const QVector<QString>& allDataTags)
{
- static const QString templ = "void tst_QScriptValue::initScriptValues()\n"\
+ static const QString templ = "void tst_QScriptValueGenerated::initScriptValues()\n"\
"{\n"\
" m_values.clear();\n"\
" if (engine)\n"\
diff --git a/tests/auto/qscriptvaluegenerated/tst_qscriptvalue_generated_cast.cpp b/tests/auto/qscriptvaluegenerated/tst_qscriptvalue_generated_cast.cpp
index 90bc104..2353116 100644
--- a/tests/auto/qscriptvaluegenerated/tst_qscriptvalue_generated_cast.cpp
+++ b/tests/auto/qscriptvaluegenerated/tst_qscriptvalue_generated_cast.cpp
@@ -53,7 +53,7 @@ void tst_QScriptValueGenerated::qscriptvalue_castQString_initData()
initScriptValues();
}
-static QString qscriptvalue_castQString_tagArray [] = {
+static QString qscriptvalue_castQString_tagArray[] = {
"QScriptValue()",
"QScriptValue(QScriptValue::UndefinedValue)",
"QScriptValue(QScriptValue::NullValue)",
@@ -157,6 +157,11 @@ static QString qscriptvalue_castQString_tagArray [] = {
"engine->evaluate(\"new Object()\")",
"engine->evaluate(\"new Array()\")",
"engine->evaluate(\"new Error()\")",
+ "engine->evaluate(\"new Boolean(true)\")",
+ "engine->evaluate(\"new Boolean(false)\")",
+ "engine->evaluate(\"new Number(123)\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "engine->evaluate(\"new String('ciao')\")",
"engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"engine->evaluate(\"Undefined\")",
"engine->evaluate(\"Null\")",
@@ -191,89 +196,93 @@ static QString qscriptvalue_castQString_tagArray [] = {
"engine->newArray(10)",
"engine->newDate(QDateTime())",
"engine->newQMetaObject(&QObject::staticMetaObject)",
+ "engine->newRegExp(\"foo\", \"gim\")",
"engine->newVariant(QVariant())",
"engine->newVariant(QVariant(123))",
"engine->newVariant(QVariant(false))",
"engine->newQObject(0)",
- "engine->newQObject(engine)",};
-static QString qscriptvalue_castQString_valueArray [] = {
- "", "",
- "", "true",
- "false", "122",
- "124", "0",
- "0", "123",
- "6.37e-8", "-6.37e-8",
- "1126240820", "65536",
- "65537", "NaN",
- "NaN", "Infinity",
- "-Infinity", "NaN",
- "Infinity", "-Infinity",
- "ciao", "ciao",
- "", "",
- "0", "123",
- "12.4", "",
- "", "true",
- "false", "122",
- "124", "0",
- "0", "123",
- "6.37e-8", "-6.37e-8",
- "1126240820", "65536",
- "65537", "NaN",
- "NaN", "Infinity",
- "-Infinity", "NaN",
- "Infinity", "-Infinity",
- "ciao", "ciao",
- "", "",
- "0", "123",
- "12.3", "",
- "", "true",
- "false", "122",
- "124", "0",
- "0", "123",
- "6.37e-8", "-6.37e-8",
- "1126240820", "65536",
- "65537", "NaN",
- "NaN", "Infinity",
- "-Infinity", "NaN",
- "Infinity", "-Infinity",
- "ciao", "ciao",
- "", "",
- "0", "123",
- "1.23", "",
- "", "[object Object]",
- "Invalid Date", "",
- "function () {\n [native code]\n}", "Error: Unknown error",
- "function Object() {\n [native code]\n}", "function Array() {\n [native code]\n}",
- "function Number() {\n [native code]\n}", "function Function() {\n [native code]\n}",
- "function () { return 1; }", "function () { return 'ciao'; }",
- "function () { throw new Error('foo'); }", "/foo/",
- "[object Object]", "",
- "Error: Unknown error", "22",
- "ReferenceError: Can't find variable: Undefined", "ReferenceError: Can't find variable: Null",
- "ReferenceError: Can't find variable: True", "ReferenceError: Can't find variable: False",
- "", "",
- "true", "false",
- "122", "124",
- "0", "0",
- "123", "6.37e-8",
- "-6.37e-8", "1126240820",
- "65536", "65537",
- "NaN", "Infinity",
- "-Infinity", "ciao",
- "", "0",
- "123", "12.4",
- "", "",
- "[object Object]", "",
- ",,,,,,,,,", "Invalid Date",
- "[object QMetaObject]", "undefined",
- "123", "false",
- "", "QScriptEngine(name = \"\")", };
+ "engine->newQObject(engine)"};
+static QString qscriptvalue_castQString_valueArray[] = {
+ "", "",
+ "", "true",
+ "false", "122",
+ "124", "0",
+ "0", "123",
+ "6.37e-8", "-6.37e-8",
+ "1126240820", "65536",
+ "65537", "NaN",
+ "NaN", "Infinity",
+ "-Infinity", "NaN",
+ "Infinity", "-Infinity",
+ "ciao", "ciao",
+ "", "",
+ "0", "123",
+ "12.4", "",
+ "", "true",
+ "false", "122",
+ "124", "0",
+ "0", "123",
+ "6.37e-8", "-6.37e-8",
+ "1126240820", "65536",
+ "65537", "NaN",
+ "NaN", "Infinity",
+ "-Infinity", "NaN",
+ "Infinity", "-Infinity",
+ "ciao", "ciao",
+ "", "",
+ "0", "123",
+ "12.3", "",
+ "", "true",
+ "false", "122",
+ "124", "0",
+ "0", "123",
+ "6.37e-8", "-6.37e-8",
+ "1126240820", "65536",
+ "65537", "NaN",
+ "NaN", "Infinity",
+ "-Infinity", "NaN",
+ "Infinity", "-Infinity",
+ "ciao", "ciao",
+ "", "",
+ "0", "123",
+ "1.23", "",
+ "", "[object Object]",
+ "Invalid Date", "",
+ "function () {\n [native code]\n}", "Error: Unknown error",
+ "function Object() {\n [native code]\n}", "function Array() {\n [native code]\n}",
+ "function Number() {\n [native code]\n}", "function Function() {\n [native code]\n}",
+ "function () { return 1; }", "function () { return 'ciao'; }",
+ "function () { throw new Error('foo'); }", "/foo/",
+ "[object Object]", "",
+ "Error: Unknown error", "true",
+ "false", "123",
+ "/foo/gim", "ciao",
+ "22", "ReferenceError: Can't find variable: Undefined",
+ "ReferenceError: Can't find variable: Null", "ReferenceError: Can't find variable: True",
+ "ReferenceError: Can't find variable: False", "",
+ "", "true",
+ "false", "122",
+ "124", "0",
+ "0", "123",
+ "6.37e-8", "-6.37e-8",
+ "1126240820", "65536",
+ "65537", "NaN",
+ "Infinity", "-Infinity",
+ "ciao", "",
+ "0", "123",
+ "12.4", "",
+ "", "[object Object]",
+ "", ",,,,,,,,,",
+ "Invalid Date", "[object QMetaObject]",
+ "/foo/gim", "undefined",
+ "123", "false",
+ "", "QScriptEngine(name = \"\")"};
void tst_QScriptValueGenerated::qscriptvalue_castQString_makeData(const char* expr)
{
static QHash<QString, QString> value;
if (value.isEmpty()) {
- value.reserve(142);
- for (unsigned i = 0; i < 142; ++i)
+ value.reserve(148);
+ for (unsigned i = 0; i < 148; ++i)
value.insert(qscriptvalue_castQString_tagArray[i], qscriptvalue_castQString_valueArray[i]);
}
newRow(expr) << value.value(expr);
@@ -295,7 +304,7 @@ void tst_QScriptValueGenerated::qscriptvalue_castqsreal_initData()
initScriptValues();
}
-static QString qscriptvalue_castqsreal_tagArray [] = {
+static QString qscriptvalue_castqsreal_tagArray[] = {
"QScriptValue()",
"QScriptValue(QScriptValue::UndefinedValue)",
"QScriptValue(QScriptValue::NullValue)",
@@ -399,6 +408,11 @@ static QString qscriptvalue_castqsreal_tagArray [] = {
"engine->evaluate(\"new Object()\")",
"engine->evaluate(\"new Array()\")",
"engine->evaluate(\"new Error()\")",
+ "engine->evaluate(\"new Boolean(true)\")",
+ "engine->evaluate(\"new Boolean(false)\")",
+ "engine->evaluate(\"new Number(123)\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "engine->evaluate(\"new String('ciao')\")",
"engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"engine->evaluate(\"Undefined\")",
"engine->evaluate(\"Null\")",
@@ -433,33 +447,34 @@ static QString qscriptvalue_castqsreal_tagArray [] = {
"engine->newArray(10)",
"engine->newDate(QDateTime())",
"engine->newQMetaObject(&QObject::staticMetaObject)",
+ "engine->newRegExp(\"foo\", \"gim\")",
"engine->newVariant(QVariant())",
"engine->newVariant(QVariant(123))",
"engine->newVariant(QVariant(false))",
"engine->newQObject(0)",
- "engine->newQObject(engine)",};
-static qsreal qscriptvalue_castqsreal_valueArray [] = {
- 0, qQNaN(), 0, 1, 0, 122, 124, 0, 0, 123,
- 6.369999999999999e-08, -6.369999999999999e-08, 1126240820, 65536, 65537, qQNaN(), qQNaN(), qInf(), qInf(), qQNaN(),
- qInf(), qInf(), qQNaN(), qQNaN(), 0, 0, 0, 123, 12.4, qQNaN(),
- 0, 1, 0, 122, 124, 0, 0, 123, 6.369999999999999e-08, -6.369999999999999e-08,
- 1126240820, 65536, 65537, qQNaN(), qQNaN(), qInf(), qInf(), qQNaN(), qInf(), qInf(),
- qQNaN(), qQNaN(), 0, 0, 0, 123, 12.3, qQNaN(), 0, 1,
- 0, 122, 124, 0, 0, 123, 6.369999999999999e-08, -6.369999999999999e-08, 1126240820, 65536,
- 65537, qQNaN(), qQNaN(), qInf(), qInf(), qQNaN(), qInf(), qInf(), qQNaN(), qQNaN(),
- 0, 0, 0, 123, 1.23, 0, qQNaN(), qQNaN(), qQNaN(), 0,
- qQNaN(), qQNaN(), qQNaN(), qQNaN(), qQNaN(), qQNaN(), qQNaN(), qQNaN(), qQNaN(), qQNaN(),
- qQNaN(), 0, qQNaN(), 22, qQNaN(), qQNaN(), qQNaN(), qQNaN(), qQNaN(), 0,
- 1, 0, 122, 124, 0, 0, 123, 6.369999999999999e-08, -6.369999999999999e-08, 1126240820,
- 65536, 65537, qQNaN(), qInf(), qInf(), qQNaN(), 0, 0, 123, 12.4,
- 0, qQNaN(), qQNaN(), 0, qQNaN(), qQNaN(), qQNaN(), qQNaN(), 123, 0,
- 0, qQNaN(), };
+ "engine->newQObject(engine)"};
+static qsreal qscriptvalue_castqsreal_valueArray[] = {
+ 0, qQNaN(), 0, 1, 0, 122, 124, 0, 0, 123,
+ 6.369999999999999e-08, -6.369999999999999e-08, 1126240820, 65536, 65537, qQNaN(), qQNaN(), qInf(), qInf(), qQNaN(),
+ qInf(), qInf(), qQNaN(), qQNaN(), 0, 0, 0, 123, 12.4, qQNaN(),
+ 0, 1, 0, 122, 124, 0, 0, 123, 6.369999999999999e-08, -6.369999999999999e-08,
+ 1126240820, 65536, 65537, qQNaN(), qQNaN(), qInf(), qInf(), qQNaN(), qInf(), qInf(),
+ qQNaN(), qQNaN(), 0, 0, 0, 123, 12.3, qQNaN(), 0, 1,
+ 0, 122, 124, 0, 0, 123, 6.369999999999999e-08, -6.369999999999999e-08, 1126240820, 65536,
+ 65537, qQNaN(), qQNaN(), qInf(), qInf(), qQNaN(), qInf(), qInf(), qQNaN(), qQNaN(),
+ 0, 0, 0, 123, 1.23, 0, qQNaN(), qQNaN(), qQNaN(), 0,
+ qQNaN(), qQNaN(), qQNaN(), qQNaN(), qQNaN(), qQNaN(), qQNaN(), qQNaN(), qQNaN(), qQNaN(),
+ qQNaN(), 0, qQNaN(), 1, 0, 123, qQNaN(), qQNaN(), 22, qQNaN(),
+ qQNaN(), qQNaN(), qQNaN(), qQNaN(), 0, 1, 0, 122, 124, 0,
+ 0, 123, 6.369999999999999e-08, -6.369999999999999e-08, 1126240820, 65536, 65537, qQNaN(), qInf(), qInf(),
+ qQNaN(), 0, 0, 123, 12.4, 0, qQNaN(), qQNaN(), 0, qQNaN(),
+ qQNaN(), qQNaN(), qQNaN(), qQNaN(), 123, 0, 0, qQNaN()};
void tst_QScriptValueGenerated::qscriptvalue_castqsreal_makeData(const char* expr)
{
static QHash<QString, qsreal> value;
if (value.isEmpty()) {
- value.reserve(142);
- for (unsigned i = 0; i < 142; ++i)
+ value.reserve(148);
+ for (unsigned i = 0; i < 148; ++i)
value.insert(qscriptvalue_castqsreal_tagArray[i], qscriptvalue_castqsreal_valueArray[i]);
}
newRow(expr) << value.value(expr);
@@ -491,7 +506,7 @@ void tst_QScriptValueGenerated::qscriptvalue_castbool_initData()
initScriptValues();
}
-static QString qscriptvalue_castbool_tagArray [] = {
+static QString qscriptvalue_castbool_tagArray[] = {
"QScriptValue()",
"QScriptValue(QScriptValue::UndefinedValue)",
"QScriptValue(QScriptValue::NullValue)",
@@ -595,6 +610,11 @@ static QString qscriptvalue_castbool_tagArray [] = {
"engine->evaluate(\"new Object()\")",
"engine->evaluate(\"new Array()\")",
"engine->evaluate(\"new Error()\")",
+ "engine->evaluate(\"new Boolean(true)\")",
+ "engine->evaluate(\"new Boolean(false)\")",
+ "engine->evaluate(\"new Number(123)\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "engine->evaluate(\"new String('ciao')\")",
"engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"engine->evaluate(\"Undefined\")",
"engine->evaluate(\"Null\")",
@@ -629,89 +649,93 @@ static QString qscriptvalue_castbool_tagArray [] = {
"engine->newArray(10)",
"engine->newDate(QDateTime())",
"engine->newQMetaObject(&QObject::staticMetaObject)",
+ "engine->newRegExp(\"foo\", \"gim\")",
"engine->newVariant(QVariant())",
"engine->newVariant(QVariant(123))",
"engine->newVariant(QVariant(false))",
"engine->newQObject(0)",
- "engine->newQObject(engine)",};
-static bool qscriptvalue_castbool_valueArray [] = {
- false, false,
- false, true,
- false, true,
- true, false,
- false, true,
- true, true,
- true, true,
- true, false,
- false, true,
- true, true,
- true, true,
- true, true,
- false, false,
- true, true,
- true, false,
- false, true,
- false, true,
- true, false,
- false, true,
- true, true,
- true, true,
- true, false,
- false, true,
- true, true,
- true, true,
- true, true,
- false, false,
- true, true,
- true, false,
- false, true,
- false, true,
- true, false,
- false, true,
- true, true,
- true, true,
- true, false,
- false, true,
- true, true,
- true, true,
- true, true,
- false, false,
- true, true,
- true, true,
- false, true,
- true, true,
- true, true,
- true, true,
- true, true,
- true, true,
- true, true,
- true, true,
- true, true,
- true, true,
- true, true,
- false, false,
- true, false,
- true, true,
- false, false,
- true, true,
- true, true,
- true, true,
- false, true,
- true, true,
- false, true,
- true, true,
- false, false,
- true, true,
- true, true,
- true, true,
- true, true,
- false, true, };
+ "engine->newQObject(engine)"};
+static bool qscriptvalue_castbool_valueArray[] = {
+ false, false,
+ false, true,
+ false, true,
+ true, false,
+ false, true,
+ true, true,
+ true, true,
+ true, false,
+ false, true,
+ true, true,
+ true, true,
+ true, true,
+ false, false,
+ true, true,
+ true, false,
+ false, true,
+ false, true,
+ true, false,
+ false, true,
+ true, true,
+ true, true,
+ true, false,
+ false, true,
+ true, true,
+ true, true,
+ true, true,
+ false, false,
+ true, true,
+ true, false,
+ false, true,
+ false, true,
+ true, false,
+ false, true,
+ true, true,
+ true, true,
+ true, false,
+ false, true,
+ true, true,
+ true, true,
+ true, true,
+ false, false,
+ true, true,
+ true, true,
+ false, true,
+ true, true,
+ true, true,
+ true, true,
+ true, true,
+ true, true,
+ true, true,
+ true, true,
+ true, true,
+ true, true,
+ true, true,
+ true, true,
+ true, true,
+ true, false,
+ false, true,
+ false, true,
+ true, false,
+ false, true,
+ true, true,
+ true, true,
+ true, false,
+ true, true,
+ true, false,
+ true, true,
+ true, false,
+ false, true,
+ true, true,
+ true, true,
+ true, true,
+ true, true,
+ false, true};
void tst_QScriptValueGenerated::qscriptvalue_castbool_makeData(const char* expr)
{
static QHash<QString, bool> value;
if (value.isEmpty()) {
- value.reserve(142);
- for (unsigned i = 0; i < 142; ++i)
+ value.reserve(148);
+ for (unsigned i = 0; i < 148; ++i)
value.insert(qscriptvalue_castbool_tagArray[i], qscriptvalue_castbool_valueArray[i]);
}
newRow(expr) << value.value(expr);
@@ -733,7 +757,7 @@ void tst_QScriptValueGenerated::qscriptvalue_castqint32_initData()
initScriptValues();
}
-static QString qscriptvalue_castqint32_tagArray [] = {
+static QString qscriptvalue_castqint32_tagArray[] = {
"QScriptValue()",
"QScriptValue(QScriptValue::UndefinedValue)",
"QScriptValue(QScriptValue::NullValue)",
@@ -837,6 +861,11 @@ static QString qscriptvalue_castqint32_tagArray [] = {
"engine->evaluate(\"new Object()\")",
"engine->evaluate(\"new Array()\")",
"engine->evaluate(\"new Error()\")",
+ "engine->evaluate(\"new Boolean(true)\")",
+ "engine->evaluate(\"new Boolean(false)\")",
+ "engine->evaluate(\"new Number(123)\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "engine->evaluate(\"new String('ciao')\")",
"engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"engine->evaluate(\"Undefined\")",
"engine->evaluate(\"Null\")",
@@ -871,89 +900,93 @@ static QString qscriptvalue_castqint32_tagArray [] = {
"engine->newArray(10)",
"engine->newDate(QDateTime())",
"engine->newQMetaObject(&QObject::staticMetaObject)",
+ "engine->newRegExp(\"foo\", \"gim\")",
"engine->newVariant(QVariant())",
"engine->newVariant(QVariant(123))",
"engine->newVariant(QVariant(false))",
"engine->newQObject(0)",
- "engine->newQObject(engine)",};
-static qint32 qscriptvalue_castqint32_valueArray [] = {
- 0, 0,
- 0, 1,
- 0, 122,
- 124, 0,
- 0, 123,
- 0, 0,
- 1126240820, 65536,
- 65537, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 123,
- 12, 0,
- 0, 1,
- 0, 122,
- 124, 0,
- 0, 123,
- 0, 0,
- 1126240820, 65536,
- 65537, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 123,
- 12, 0,
- 0, 1,
- 0, 122,
- 124, 0,
- 0, 123,
- 0, 0,
- 1126240820, 65536,
- 65537, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 123,
- 1, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 22,
- 0, 0,
- 0, 0,
- 0, 0,
- 1, 0,
- 122, 124,
- 0, 0,
- 123, 0,
- 0, 1126240820,
- 65536, 65537,
- 0, 0,
- 0, 0,
- 0, 0,
- 123, 12,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 123, 0,
- 0, 0, };
+ "engine->newQObject(engine)"};
+static qint32 qscriptvalue_castqint32_valueArray[] = {
+ 0, 0,
+ 0, 1,
+ 0, 122,
+ 124, 0,
+ 0, 123,
+ 0, 0,
+ 1126240820, 65536,
+ 65537, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 123,
+ 12, 0,
+ 0, 1,
+ 0, 122,
+ 124, 0,
+ 0, 123,
+ 0, 0,
+ 1126240820, 65536,
+ 65537, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 123,
+ 12, 0,
+ 0, 1,
+ 0, 122,
+ 124, 0,
+ 0, 123,
+ 0, 0,
+ 1126240820, 65536,
+ 65537, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 123,
+ 1, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 1,
+ 0, 123,
+ 0, 0,
+ 22, 0,
+ 0, 0,
+ 0, 0,
+ 0, 1,
+ 0, 122,
+ 124, 0,
+ 0, 123,
+ 0, 0,
+ 1126240820, 65536,
+ 65537, 0,
+ 0, 0,
+ 0, 0,
+ 0, 123,
+ 12, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 123, 0,
+ 0, 0};
void tst_QScriptValueGenerated::qscriptvalue_castqint32_makeData(const char* expr)
{
static QHash<QString, qint32> value;
if (value.isEmpty()) {
- value.reserve(142);
- for (unsigned i = 0; i < 142; ++i)
+ value.reserve(148);
+ for (unsigned i = 0; i < 148; ++i)
value.insert(qscriptvalue_castqint32_tagArray[i], qscriptvalue_castqint32_valueArray[i]);
}
newRow(expr) << value.value(expr);
@@ -975,7 +1008,7 @@ void tst_QScriptValueGenerated::qscriptvalue_castquint32_initData()
initScriptValues();
}
-static QString qscriptvalue_castquint32_tagArray [] = {
+static QString qscriptvalue_castquint32_tagArray[] = {
"QScriptValue()",
"QScriptValue(QScriptValue::UndefinedValue)",
"QScriptValue(QScriptValue::NullValue)",
@@ -1079,6 +1112,11 @@ static QString qscriptvalue_castquint32_tagArray [] = {
"engine->evaluate(\"new Object()\")",
"engine->evaluate(\"new Array()\")",
"engine->evaluate(\"new Error()\")",
+ "engine->evaluate(\"new Boolean(true)\")",
+ "engine->evaluate(\"new Boolean(false)\")",
+ "engine->evaluate(\"new Number(123)\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "engine->evaluate(\"new String('ciao')\")",
"engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"engine->evaluate(\"Undefined\")",
"engine->evaluate(\"Null\")",
@@ -1113,89 +1151,93 @@ static QString qscriptvalue_castquint32_tagArray [] = {
"engine->newArray(10)",
"engine->newDate(QDateTime())",
"engine->newQMetaObject(&QObject::staticMetaObject)",
+ "engine->newRegExp(\"foo\", \"gim\")",
"engine->newVariant(QVariant())",
"engine->newVariant(QVariant(123))",
"engine->newVariant(QVariant(false))",
"engine->newQObject(0)",
- "engine->newQObject(engine)",};
-static quint32 qscriptvalue_castquint32_valueArray [] = {
- 0, 0,
- 0, 1,
- 0, 122,
- 124, 0,
- 0, 123,
- 0, 0,
- 1126240820, 65536,
- 65537, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 123,
- 12, 0,
- 0, 1,
- 0, 122,
- 124, 0,
- 0, 123,
- 0, 0,
- 1126240820, 65536,
- 65537, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 123,
- 12, 0,
- 0, 1,
- 0, 122,
- 124, 0,
- 0, 123,
- 0, 0,
- 1126240820, 65536,
- 65537, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 123,
- 1, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 22,
- 0, 0,
- 0, 0,
- 0, 0,
- 1, 0,
- 122, 124,
- 0, 0,
- 123, 0,
- 0, 1126240820,
- 65536, 65537,
- 0, 0,
- 0, 0,
- 0, 0,
- 123, 12,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 123, 0,
- 0, 0, };
+ "engine->newQObject(engine)"};
+static quint32 qscriptvalue_castquint32_valueArray[] = {
+ 0, 0,
+ 0, 1,
+ 0, 122,
+ 124, 0,
+ 0, 123,
+ 0, 0,
+ 1126240820, 65536,
+ 65537, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 123,
+ 12, 0,
+ 0, 1,
+ 0, 122,
+ 124, 0,
+ 0, 123,
+ 0, 0,
+ 1126240820, 65536,
+ 65537, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 123,
+ 12, 0,
+ 0, 1,
+ 0, 122,
+ 124, 0,
+ 0, 123,
+ 0, 0,
+ 1126240820, 65536,
+ 65537, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 123,
+ 1, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 1,
+ 0, 123,
+ 0, 0,
+ 22, 0,
+ 0, 0,
+ 0, 0,
+ 0, 1,
+ 0, 122,
+ 124, 0,
+ 0, 123,
+ 0, 0,
+ 1126240820, 65536,
+ 65537, 0,
+ 0, 0,
+ 0, 0,
+ 0, 123,
+ 12, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 123, 0,
+ 0, 0};
void tst_QScriptValueGenerated::qscriptvalue_castquint32_makeData(const char* expr)
{
static QHash<QString, quint32> value;
if (value.isEmpty()) {
- value.reserve(142);
- for (unsigned i = 0; i < 142; ++i)
+ value.reserve(148);
+ for (unsigned i = 0; i < 148; ++i)
value.insert(qscriptvalue_castquint32_tagArray[i], qscriptvalue_castquint32_valueArray[i]);
}
newRow(expr) << value.value(expr);
@@ -1217,7 +1259,7 @@ void tst_QScriptValueGenerated::qscriptvalue_castquint16_initData()
initScriptValues();
}
-static QString qscriptvalue_castquint16_tagArray [] = {
+static QString qscriptvalue_castquint16_tagArray[] = {
"QScriptValue()",
"QScriptValue(QScriptValue::UndefinedValue)",
"QScriptValue(QScriptValue::NullValue)",
@@ -1321,6 +1363,11 @@ static QString qscriptvalue_castquint16_tagArray [] = {
"engine->evaluate(\"new Object()\")",
"engine->evaluate(\"new Array()\")",
"engine->evaluate(\"new Error()\")",
+ "engine->evaluate(\"new Boolean(true)\")",
+ "engine->evaluate(\"new Boolean(false)\")",
+ "engine->evaluate(\"new Number(123)\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "engine->evaluate(\"new String('ciao')\")",
"engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"engine->evaluate(\"Undefined\")",
"engine->evaluate(\"Null\")",
@@ -1355,89 +1402,93 @@ static QString qscriptvalue_castquint16_tagArray [] = {
"engine->newArray(10)",
"engine->newDate(QDateTime())",
"engine->newQMetaObject(&QObject::staticMetaObject)",
+ "engine->newRegExp(\"foo\", \"gim\")",
"engine->newVariant(QVariant())",
"engine->newVariant(QVariant(123))",
"engine->newVariant(QVariant(false))",
"engine->newQObject(0)",
- "engine->newQObject(engine)",};
-static quint16 qscriptvalue_castquint16_valueArray [] = {
- 0, 0,
- 0, 1,
- 0, 122,
- 124, 0,
- 0, 123,
- 0, 0,
- 4660, 0,
- 1, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 123,
- 12, 0,
- 0, 1,
- 0, 122,
- 124, 0,
- 0, 123,
- 0, 0,
- 4660, 0,
- 1, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 123,
- 12, 0,
- 0, 1,
- 0, 122,
- 124, 0,
- 0, 123,
- 0, 0,
- 4660, 0,
- 1, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 123,
- 1, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 22,
- 0, 0,
- 0, 0,
- 0, 0,
- 1, 0,
- 122, 124,
- 0, 0,
- 123, 0,
- 0, 4660,
- 0, 1,
- 0, 0,
- 0, 0,
- 0, 0,
- 123, 12,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 123, 0,
- 0, 0, };
+ "engine->newQObject(engine)"};
+static quint16 qscriptvalue_castquint16_valueArray[] = {
+ 0, 0,
+ 0, 1,
+ 0, 122,
+ 124, 0,
+ 0, 123,
+ 0, 0,
+ 4660, 0,
+ 1, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 123,
+ 12, 0,
+ 0, 1,
+ 0, 122,
+ 124, 0,
+ 0, 123,
+ 0, 0,
+ 4660, 0,
+ 1, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 123,
+ 12, 0,
+ 0, 1,
+ 0, 122,
+ 124, 0,
+ 0, 123,
+ 0, 0,
+ 4660, 0,
+ 1, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 123,
+ 1, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 1,
+ 0, 123,
+ 0, 0,
+ 22, 0,
+ 0, 0,
+ 0, 0,
+ 0, 1,
+ 0, 122,
+ 124, 0,
+ 0, 123,
+ 0, 0,
+ 4660, 0,
+ 1, 0,
+ 0, 0,
+ 0, 0,
+ 0, 123,
+ 12, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 123, 0,
+ 0, 0};
void tst_QScriptValueGenerated::qscriptvalue_castquint16_makeData(const char* expr)
{
static QHash<QString, quint16> value;
if (value.isEmpty()) {
- value.reserve(142);
- for (unsigned i = 0; i < 142; ++i)
+ value.reserve(148);
+ for (unsigned i = 0; i < 148; ++i)
value.insert(qscriptvalue_castquint16_tagArray[i], qscriptvalue_castquint16_valueArray[i]);
}
newRow(expr) << value.value(expr);
diff --git a/tests/auto/qscriptvaluegenerated/tst_qscriptvalue_generated_comparison.cpp b/tests/auto/qscriptvaluegenerated/tst_qscriptvalue_generated_comparison.cpp
index 02243de..f8a6cda 100644
--- a/tests/auto/qscriptvaluegenerated/tst_qscriptvalue_generated_comparison.cpp
+++ b/tests/auto/qscriptvaluegenerated/tst_qscriptvalue_generated_comparison.cpp
@@ -54,7 +54,7 @@ void tst_QScriptValueGenerated::equals_initData()
initScriptValues();
}
-static QString equals_array [] = {
+static QString equals_array[] = {
"QScriptValue() <=> QScriptValue()",
"QScriptValue(QScriptValue::UndefinedValue) <=> QScriptValue(QScriptValue::UndefinedValue)",
"QScriptValue(QScriptValue::UndefinedValue) <=> QScriptValue(QScriptValue::NullValue)",
@@ -83,6 +83,7 @@ static QString equals_array [] = {
"QScriptValue(true) <=> QScriptValue(true)",
"QScriptValue(true) <=> QScriptValue(0, true)",
"QScriptValue(true) <=> QScriptValue(engine, true)",
+ "QScriptValue(true) <=> engine->evaluate(\"new Boolean(true)\")",
"QScriptValue(true) <=> engine->evaluate(\"true\")",
"QScriptValue(false) <=> QScriptValue(false)",
"QScriptValue(false) <=> QScriptValue(0)",
@@ -105,6 +106,7 @@ static QString equals_array [] = {
"QScriptValue(false) <=> engine->evaluate(\"[]\")",
"QScriptValue(false) <=> engine->evaluate(\"Array.prototype\")",
"QScriptValue(false) <=> engine->evaluate(\"new Array()\")",
+ "QScriptValue(false) <=> engine->evaluate(\"new Boolean(false)\")",
"QScriptValue(false) <=> engine->evaluate(\"false\")",
"QScriptValue(false) <=> engine->evaluate(\"0\")",
"QScriptValue(false) <=> engine->evaluate(\"0.0\")",
@@ -141,6 +143,7 @@ static QString equals_array [] = {
"QScriptValue(0) <=> engine->evaluate(\"[]\")",
"QScriptValue(0) <=> engine->evaluate(\"Array.prototype\")",
"QScriptValue(0) <=> engine->evaluate(\"new Array()\")",
+ "QScriptValue(0) <=> engine->evaluate(\"new Boolean(false)\")",
"QScriptValue(0) <=> engine->evaluate(\"false\")",
"QScriptValue(0) <=> engine->evaluate(\"0\")",
"QScriptValue(0) <=> engine->evaluate(\"0.0\")",
@@ -169,6 +172,7 @@ static QString equals_array [] = {
"QScriptValue(0.0) <=> engine->evaluate(\"[]\")",
"QScriptValue(0.0) <=> engine->evaluate(\"Array.prototype\")",
"QScriptValue(0.0) <=> engine->evaluate(\"new Array()\")",
+ "QScriptValue(0.0) <=> engine->evaluate(\"new Boolean(false)\")",
"QScriptValue(0.0) <=> engine->evaluate(\"false\")",
"QScriptValue(0.0) <=> engine->evaluate(\"0\")",
"QScriptValue(0.0) <=> engine->evaluate(\"0.0\")",
@@ -182,6 +186,7 @@ static QString equals_array [] = {
"QScriptValue(123.0) <=> QScriptValue(0, QString(\"123\"))",
"QScriptValue(123.0) <=> QScriptValue(engine, 123.0)",
"QScriptValue(123.0) <=> QScriptValue(engine, QString(\"123\"))",
+ "QScriptValue(123.0) <=> engine->evaluate(\"new Number(123)\")",
"QScriptValue(123.0) <=> engine->evaluate(\"123.0\")",
"QScriptValue(123.0) <=> engine->evaluate(\"'123'\")",
"QScriptValue(123.0) <=> engine->newVariant(QVariant(123))",
@@ -242,6 +247,7 @@ static QString equals_array [] = {
"QScriptValue(\"ciao\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
"QScriptValue(\"ciao\") <=> QScriptValue(engine, \"ciao\")",
"QScriptValue(\"ciao\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(\"ciao\") <=> engine->evaluate(\"new String('ciao')\")",
"QScriptValue(\"ciao\") <=> engine->evaluate(\"'ciao'\")",
"QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(\"ciao\")",
"QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
@@ -249,6 +255,7 @@ static QString equals_array [] = {
"QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
"QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, \"ciao\")",
"QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"new String('ciao')\")",
"QScriptValue(QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"'ciao'\")",
"QScriptValue(QString(\"\")) <=> QScriptValue(false)",
"QScriptValue(QString(\"\")) <=> QScriptValue(0)",
@@ -268,6 +275,7 @@ static QString equals_array [] = {
"QScriptValue(QString(\"\")) <=> engine->evaluate(\"[]\")",
"QScriptValue(QString(\"\")) <=> engine->evaluate(\"Array.prototype\")",
"QScriptValue(QString(\"\")) <=> engine->evaluate(\"new Array()\")",
+ "QScriptValue(QString(\"\")) <=> engine->evaluate(\"new Boolean(false)\")",
"QScriptValue(QString(\"\")) <=> engine->evaluate(\"false\")",
"QScriptValue(QString(\"\")) <=> engine->evaluate(\"0\")",
"QScriptValue(QString(\"\")) <=> engine->evaluate(\"0.0\")",
@@ -292,6 +300,7 @@ static QString equals_array [] = {
"QScriptValue(QString()) <=> engine->evaluate(\"[]\")",
"QScriptValue(QString()) <=> engine->evaluate(\"Array.prototype\")",
"QScriptValue(QString()) <=> engine->evaluate(\"new Array()\")",
+ "QScriptValue(QString()) <=> engine->evaluate(\"new Boolean(false)\")",
"QScriptValue(QString()) <=> engine->evaluate(\"false\")",
"QScriptValue(QString()) <=> engine->evaluate(\"0\")",
"QScriptValue(QString()) <=> engine->evaluate(\"0.0\")",
@@ -310,6 +319,7 @@ static QString equals_array [] = {
"QScriptValue(QString(\"0\")) <=> QScriptValue(engine, 0)",
"QScriptValue(QString(\"0\")) <=> QScriptValue(engine, 0.0)",
"QScriptValue(QString(\"0\")) <=> QScriptValue(engine, QString(\"0\"))",
+ "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"new Boolean(false)\")",
"QScriptValue(QString(\"0\")) <=> engine->evaluate(\"false\")",
"QScriptValue(QString(\"0\")) <=> engine->evaluate(\"0\")",
"QScriptValue(QString(\"0\")) <=> engine->evaluate(\"0.0\")",
@@ -321,6 +331,7 @@ static QString equals_array [] = {
"QScriptValue(QString(\"123\")) <=> QScriptValue(0, QString(\"123\"))",
"QScriptValue(QString(\"123\")) <=> QScriptValue(engine, 123.0)",
"QScriptValue(QString(\"123\")) <=> QScriptValue(engine, QString(\"123\"))",
+ "QScriptValue(QString(\"123\")) <=> engine->evaluate(\"new Number(123)\")",
"QScriptValue(QString(\"123\")) <=> engine->evaluate(\"123.0\")",
"QScriptValue(QString(\"123\")) <=> engine->evaluate(\"'123'\")",
"QScriptValue(QString(\"123\")) <=> engine->newVariant(QVariant(123))",
@@ -353,6 +364,7 @@ static QString equals_array [] = {
"QScriptValue(0, true) <=> QScriptValue(true)",
"QScriptValue(0, true) <=> QScriptValue(0, true)",
"QScriptValue(0, true) <=> QScriptValue(engine, true)",
+ "QScriptValue(0, true) <=> engine->evaluate(\"new Boolean(true)\")",
"QScriptValue(0, true) <=> engine->evaluate(\"true\")",
"QScriptValue(0, false) <=> QScriptValue(false)",
"QScriptValue(0, false) <=> QScriptValue(0)",
@@ -375,6 +387,7 @@ static QString equals_array [] = {
"QScriptValue(0, false) <=> engine->evaluate(\"[]\")",
"QScriptValue(0, false) <=> engine->evaluate(\"Array.prototype\")",
"QScriptValue(0, false) <=> engine->evaluate(\"new Array()\")",
+ "QScriptValue(0, false) <=> engine->evaluate(\"new Boolean(false)\")",
"QScriptValue(0, false) <=> engine->evaluate(\"false\")",
"QScriptValue(0, false) <=> engine->evaluate(\"0\")",
"QScriptValue(0, false) <=> engine->evaluate(\"0.0\")",
@@ -411,6 +424,7 @@ static QString equals_array [] = {
"QScriptValue(0, 0) <=> engine->evaluate(\"[]\")",
"QScriptValue(0, 0) <=> engine->evaluate(\"Array.prototype\")",
"QScriptValue(0, 0) <=> engine->evaluate(\"new Array()\")",
+ "QScriptValue(0, 0) <=> engine->evaluate(\"new Boolean(false)\")",
"QScriptValue(0, 0) <=> engine->evaluate(\"false\")",
"QScriptValue(0, 0) <=> engine->evaluate(\"0\")",
"QScriptValue(0, 0) <=> engine->evaluate(\"0.0\")",
@@ -439,6 +453,7 @@ static QString equals_array [] = {
"QScriptValue(0, 0.0) <=> engine->evaluate(\"[]\")",
"QScriptValue(0, 0.0) <=> engine->evaluate(\"Array.prototype\")",
"QScriptValue(0, 0.0) <=> engine->evaluate(\"new Array()\")",
+ "QScriptValue(0, 0.0) <=> engine->evaluate(\"new Boolean(false)\")",
"QScriptValue(0, 0.0) <=> engine->evaluate(\"false\")",
"QScriptValue(0, 0.0) <=> engine->evaluate(\"0\")",
"QScriptValue(0, 0.0) <=> engine->evaluate(\"0.0\")",
@@ -452,6 +467,7 @@ static QString equals_array [] = {
"QScriptValue(0, 123.0) <=> QScriptValue(0, QString(\"123\"))",
"QScriptValue(0, 123.0) <=> QScriptValue(engine, 123.0)",
"QScriptValue(0, 123.0) <=> QScriptValue(engine, QString(\"123\"))",
+ "QScriptValue(0, 123.0) <=> engine->evaluate(\"new Number(123)\")",
"QScriptValue(0, 123.0) <=> engine->evaluate(\"123.0\")",
"QScriptValue(0, 123.0) <=> engine->evaluate(\"'123'\")",
"QScriptValue(0, 123.0) <=> engine->newVariant(QVariant(123))",
@@ -512,6 +528,7 @@ static QString equals_array [] = {
"QScriptValue(0, \"ciao\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
"QScriptValue(0, \"ciao\") <=> QScriptValue(engine, \"ciao\")",
"QScriptValue(0, \"ciao\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(0, \"ciao\") <=> engine->evaluate(\"new String('ciao')\")",
"QScriptValue(0, \"ciao\") <=> engine->evaluate(\"'ciao'\")",
"QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(\"ciao\")",
"QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
@@ -519,6 +536,7 @@ static QString equals_array [] = {
"QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
"QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, \"ciao\")",
"QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"new String('ciao')\")",
"QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"'ciao'\")",
"QScriptValue(0, QString(\"\")) <=> QScriptValue(false)",
"QScriptValue(0, QString(\"\")) <=> QScriptValue(0)",
@@ -538,6 +556,7 @@ static QString equals_array [] = {
"QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"[]\")",
"QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"Array.prototype\")",
"QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"new Array()\")",
+ "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"new Boolean(false)\")",
"QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"false\")",
"QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"0\")",
"QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"0.0\")",
@@ -562,6 +581,7 @@ static QString equals_array [] = {
"QScriptValue(0, QString()) <=> engine->evaluate(\"[]\")",
"QScriptValue(0, QString()) <=> engine->evaluate(\"Array.prototype\")",
"QScriptValue(0, QString()) <=> engine->evaluate(\"new Array()\")",
+ "QScriptValue(0, QString()) <=> engine->evaluate(\"new Boolean(false)\")",
"QScriptValue(0, QString()) <=> engine->evaluate(\"false\")",
"QScriptValue(0, QString()) <=> engine->evaluate(\"0\")",
"QScriptValue(0, QString()) <=> engine->evaluate(\"0.0\")",
@@ -580,6 +600,7 @@ static QString equals_array [] = {
"QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, 0)",
"QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, 0.0)",
"QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, QString(\"0\"))",
+ "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"new Boolean(false)\")",
"QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"false\")",
"QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"0\")",
"QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"0.0\")",
@@ -591,6 +612,7 @@ static QString equals_array [] = {
"QScriptValue(0, QString(\"123\")) <=> QScriptValue(0, QString(\"123\"))",
"QScriptValue(0, QString(\"123\")) <=> QScriptValue(engine, 123.0)",
"QScriptValue(0, QString(\"123\")) <=> QScriptValue(engine, QString(\"123\"))",
+ "QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"new Number(123)\")",
"QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"123.0\")",
"QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"'123'\")",
"QScriptValue(0, QString(\"123\")) <=> engine->newVariant(QVariant(123))",
@@ -622,6 +644,7 @@ static QString equals_array [] = {
"QScriptValue(engine, true) <=> QScriptValue(true)",
"QScriptValue(engine, true) <=> QScriptValue(0, true)",
"QScriptValue(engine, true) <=> QScriptValue(engine, true)",
+ "QScriptValue(engine, true) <=> engine->evaluate(\"new Boolean(true)\")",
"QScriptValue(engine, true) <=> engine->evaluate(\"true\")",
"QScriptValue(engine, false) <=> QScriptValue(false)",
"QScriptValue(engine, false) <=> QScriptValue(0)",
@@ -644,6 +667,7 @@ static QString equals_array [] = {
"QScriptValue(engine, false) <=> engine->evaluate(\"[]\")",
"QScriptValue(engine, false) <=> engine->evaluate(\"Array.prototype\")",
"QScriptValue(engine, false) <=> engine->evaluate(\"new Array()\")",
+ "QScriptValue(engine, false) <=> engine->evaluate(\"new Boolean(false)\")",
"QScriptValue(engine, false) <=> engine->evaluate(\"false\")",
"QScriptValue(engine, false) <=> engine->evaluate(\"0\")",
"QScriptValue(engine, false) <=> engine->evaluate(\"0.0\")",
@@ -680,6 +704,7 @@ static QString equals_array [] = {
"QScriptValue(engine, 0) <=> engine->evaluate(\"[]\")",
"QScriptValue(engine, 0) <=> engine->evaluate(\"Array.prototype\")",
"QScriptValue(engine, 0) <=> engine->evaluate(\"new Array()\")",
+ "QScriptValue(engine, 0) <=> engine->evaluate(\"new Boolean(false)\")",
"QScriptValue(engine, 0) <=> engine->evaluate(\"false\")",
"QScriptValue(engine, 0) <=> engine->evaluate(\"0\")",
"QScriptValue(engine, 0) <=> engine->evaluate(\"0.0\")",
@@ -708,6 +733,7 @@ static QString equals_array [] = {
"QScriptValue(engine, 0.0) <=> engine->evaluate(\"[]\")",
"QScriptValue(engine, 0.0) <=> engine->evaluate(\"Array.prototype\")",
"QScriptValue(engine, 0.0) <=> engine->evaluate(\"new Array()\")",
+ "QScriptValue(engine, 0.0) <=> engine->evaluate(\"new Boolean(false)\")",
"QScriptValue(engine, 0.0) <=> engine->evaluate(\"false\")",
"QScriptValue(engine, 0.0) <=> engine->evaluate(\"0\")",
"QScriptValue(engine, 0.0) <=> engine->evaluate(\"0.0\")",
@@ -721,6 +747,7 @@ static QString equals_array [] = {
"QScriptValue(engine, 123.0) <=> QScriptValue(0, QString(\"123\"))",
"QScriptValue(engine, 123.0) <=> QScriptValue(engine, 123.0)",
"QScriptValue(engine, 123.0) <=> QScriptValue(engine, QString(\"123\"))",
+ "QScriptValue(engine, 123.0) <=> engine->evaluate(\"new Number(123)\")",
"QScriptValue(engine, 123.0) <=> engine->evaluate(\"123.0\")",
"QScriptValue(engine, 123.0) <=> engine->evaluate(\"'123'\")",
"QScriptValue(engine, 123.0) <=> engine->newVariant(QVariant(123))",
@@ -781,6 +808,7 @@ static QString equals_array [] = {
"QScriptValue(engine, \"ciao\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
"QScriptValue(engine, \"ciao\") <=> QScriptValue(engine, \"ciao\")",
"QScriptValue(engine, \"ciao\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(engine, \"ciao\") <=> engine->evaluate(\"new String('ciao')\")",
"QScriptValue(engine, \"ciao\") <=> engine->evaluate(\"'ciao'\")",
"QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(\"ciao\")",
"QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
@@ -788,6 +816,7 @@ static QString equals_array [] = {
"QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
"QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, \"ciao\")",
"QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
+ "QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"new String('ciao')\")",
"QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"'ciao'\")",
"QScriptValue(engine, QString(\"\")) <=> QScriptValue(false)",
"QScriptValue(engine, QString(\"\")) <=> QScriptValue(0)",
@@ -807,6 +836,7 @@ static QString equals_array [] = {
"QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"[]\")",
"QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"Array.prototype\")",
"QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"new Array()\")",
+ "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"new Boolean(false)\")",
"QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"false\")",
"QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"0\")",
"QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"0.0\")",
@@ -831,6 +861,7 @@ static QString equals_array [] = {
"QScriptValue(engine, QString()) <=> engine->evaluate(\"[]\")",
"QScriptValue(engine, QString()) <=> engine->evaluate(\"Array.prototype\")",
"QScriptValue(engine, QString()) <=> engine->evaluate(\"new Array()\")",
+ "QScriptValue(engine, QString()) <=> engine->evaluate(\"new Boolean(false)\")",
"QScriptValue(engine, QString()) <=> engine->evaluate(\"false\")",
"QScriptValue(engine, QString()) <=> engine->evaluate(\"0\")",
"QScriptValue(engine, QString()) <=> engine->evaluate(\"0.0\")",
@@ -849,6 +880,7 @@ static QString equals_array [] = {
"QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, 0)",
"QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, 0.0)",
"QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, QString(\"0\"))",
+ "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"new Boolean(false)\")",
"QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"false\")",
"QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"0\")",
"QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"0.0\")",
@@ -860,6 +892,7 @@ static QString equals_array [] = {
"QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0, QString(\"123\"))",
"QScriptValue(engine, QString(\"123\")) <=> QScriptValue(engine, 123.0)",
"QScriptValue(engine, QString(\"123\")) <=> QScriptValue(engine, QString(\"123\"))",
+ "QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"new Number(123)\")",
"QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"123.0\")",
"QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"'123'\")",
"QScriptValue(engine, QString(\"123\")) <=> engine->newVariant(QVariant(123))",
@@ -950,6 +983,53 @@ static QString equals_array [] = {
"engine->evaluate(\"new Array()\") <=> engine->evaluate(\"0.0\")",
"engine->evaluate(\"new Array()\") <=> engine->evaluate(\"''\")",
"engine->evaluate(\"new Error()\") <=> engine->evaluate(\"new Error()\")",
+ "engine->evaluate(\"new Boolean(true)\") <=> QScriptValue(true)",
+ "engine->evaluate(\"new Boolean(true)\") <=> QScriptValue(0, true)",
+ "engine->evaluate(\"new Boolean(true)\") <=> QScriptValue(engine, true)",
+ "engine->evaluate(\"new Boolean(true)\") <=> engine->evaluate(\"new Boolean(true)\")",
+ "engine->evaluate(\"new Boolean(true)\") <=> engine->evaluate(\"true\")",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(false)",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(0)",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(0.0)",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(QString(\"\"))",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(QString())",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(QString(\"0\"))",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(0, false)",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(0, 0)",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(0, 0.0)",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(0, QString(\"\"))",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(0, QString())",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(0, QString(\"0\"))",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(engine, false)",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(engine, 0)",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(engine, 0.0)",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(engine, QString(\"\"))",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(engine, QString())",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(engine, QString(\"0\"))",
+ "engine->evaluate(\"new Boolean(false)\") <=> engine->evaluate(\"new Boolean(false)\")",
+ "engine->evaluate(\"new Boolean(false)\") <=> engine->evaluate(\"false\")",
+ "engine->evaluate(\"new Boolean(false)\") <=> engine->evaluate(\"0\")",
+ "engine->evaluate(\"new Boolean(false)\") <=> engine->evaluate(\"0.0\")",
+ "engine->evaluate(\"new Boolean(false)\") <=> engine->evaluate(\"''\")",
+ "engine->evaluate(\"new Boolean(false)\") <=> engine->evaluate(\"'0'\")",
+ "engine->evaluate(\"new Number(123)\") <=> QScriptValue(123.0)",
+ "engine->evaluate(\"new Number(123)\") <=> QScriptValue(QString(\"123\"))",
+ "engine->evaluate(\"new Number(123)\") <=> QScriptValue(0, 123.0)",
+ "engine->evaluate(\"new Number(123)\") <=> QScriptValue(0, QString(\"123\"))",
+ "engine->evaluate(\"new Number(123)\") <=> QScriptValue(engine, 123.0)",
+ "engine->evaluate(\"new Number(123)\") <=> QScriptValue(engine, QString(\"123\"))",
+ "engine->evaluate(\"new Number(123)\") <=> engine->evaluate(\"new Number(123)\")",
+ "engine->evaluate(\"new Number(123)\") <=> engine->evaluate(\"123.0\")",
+ "engine->evaluate(\"new Number(123)\") <=> engine->evaluate(\"'123'\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "engine->evaluate(\"new String('ciao')\") <=> QScriptValue(\"ciao\")",
+ "engine->evaluate(\"new String('ciao')\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
+ "engine->evaluate(\"new String('ciao')\") <=> QScriptValue(0, \"ciao\")",
+ "engine->evaluate(\"new String('ciao')\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
+ "engine->evaluate(\"new String('ciao')\") <=> QScriptValue(engine, \"ciao\")",
+ "engine->evaluate(\"new String('ciao')\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
+ "engine->evaluate(\"new String('ciao')\") <=> engine->evaluate(\"new String('ciao')\")",
+ "engine->evaluate(\"new String('ciao')\") <=> engine->evaluate(\"'ciao'\")",
"engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"engine->evaluate(\"Undefined\") <=> engine->evaluate(\"Undefined\")",
"engine->evaluate(\"Null\") <=> engine->evaluate(\"Null\")",
@@ -982,6 +1062,7 @@ static QString equals_array [] = {
"engine->evaluate(\"true\") <=> QScriptValue(true)",
"engine->evaluate(\"true\") <=> QScriptValue(0, true)",
"engine->evaluate(\"true\") <=> QScriptValue(engine, true)",
+ "engine->evaluate(\"true\") <=> engine->evaluate(\"new Boolean(true)\")",
"engine->evaluate(\"true\") <=> engine->evaluate(\"true\")",
"engine->evaluate(\"false\") <=> QScriptValue(false)",
"engine->evaluate(\"false\") <=> QScriptValue(0)",
@@ -1004,6 +1085,7 @@ static QString equals_array [] = {
"engine->evaluate(\"false\") <=> engine->evaluate(\"[]\")",
"engine->evaluate(\"false\") <=> engine->evaluate(\"Array.prototype\")",
"engine->evaluate(\"false\") <=> engine->evaluate(\"new Array()\")",
+ "engine->evaluate(\"false\") <=> engine->evaluate(\"new Boolean(false)\")",
"engine->evaluate(\"false\") <=> engine->evaluate(\"false\")",
"engine->evaluate(\"false\") <=> engine->evaluate(\"0\")",
"engine->evaluate(\"false\") <=> engine->evaluate(\"0.0\")",
@@ -1040,6 +1122,7 @@ static QString equals_array [] = {
"engine->evaluate(\"0\") <=> engine->evaluate(\"[]\")",
"engine->evaluate(\"0\") <=> engine->evaluate(\"Array.prototype\")",
"engine->evaluate(\"0\") <=> engine->evaluate(\"new Array()\")",
+ "engine->evaluate(\"0\") <=> engine->evaluate(\"new Boolean(false)\")",
"engine->evaluate(\"0\") <=> engine->evaluate(\"false\")",
"engine->evaluate(\"0\") <=> engine->evaluate(\"0\")",
"engine->evaluate(\"0\") <=> engine->evaluate(\"0.0\")",
@@ -1068,6 +1151,7 @@ static QString equals_array [] = {
"engine->evaluate(\"0.0\") <=> engine->evaluate(\"[]\")",
"engine->evaluate(\"0.0\") <=> engine->evaluate(\"Array.prototype\")",
"engine->evaluate(\"0.0\") <=> engine->evaluate(\"new Array()\")",
+ "engine->evaluate(\"0.0\") <=> engine->evaluate(\"new Boolean(false)\")",
"engine->evaluate(\"0.0\") <=> engine->evaluate(\"false\")",
"engine->evaluate(\"0.0\") <=> engine->evaluate(\"0\")",
"engine->evaluate(\"0.0\") <=> engine->evaluate(\"0.0\")",
@@ -1081,6 +1165,7 @@ static QString equals_array [] = {
"engine->evaluate(\"123.0\") <=> QScriptValue(0, QString(\"123\"))",
"engine->evaluate(\"123.0\") <=> QScriptValue(engine, 123.0)",
"engine->evaluate(\"123.0\") <=> QScriptValue(engine, QString(\"123\"))",
+ "engine->evaluate(\"123.0\") <=> engine->evaluate(\"new Number(123)\")",
"engine->evaluate(\"123.0\") <=> engine->evaluate(\"123.0\")",
"engine->evaluate(\"123.0\") <=> engine->evaluate(\"'123'\")",
"engine->evaluate(\"123.0\") <=> engine->newVariant(QVariant(123))",
@@ -1124,6 +1209,7 @@ static QString equals_array [] = {
"engine->evaluate(\"'ciao'\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
"engine->evaluate(\"'ciao'\") <=> QScriptValue(engine, \"ciao\")",
"engine->evaluate(\"'ciao'\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
+ "engine->evaluate(\"'ciao'\") <=> engine->evaluate(\"new String('ciao')\")",
"engine->evaluate(\"'ciao'\") <=> engine->evaluate(\"'ciao'\")",
"engine->evaluate(\"''\") <=> QScriptValue(false)",
"engine->evaluate(\"''\") <=> QScriptValue(0)",
@@ -1143,6 +1229,7 @@ static QString equals_array [] = {
"engine->evaluate(\"''\") <=> engine->evaluate(\"[]\")",
"engine->evaluate(\"''\") <=> engine->evaluate(\"Array.prototype\")",
"engine->evaluate(\"''\") <=> engine->evaluate(\"new Array()\")",
+ "engine->evaluate(\"''\") <=> engine->evaluate(\"new Boolean(false)\")",
"engine->evaluate(\"''\") <=> engine->evaluate(\"false\")",
"engine->evaluate(\"''\") <=> engine->evaluate(\"0\")",
"engine->evaluate(\"''\") <=> engine->evaluate(\"0.0\")",
@@ -1161,6 +1248,7 @@ static QString equals_array [] = {
"engine->evaluate(\"'0'\") <=> QScriptValue(engine, 0)",
"engine->evaluate(\"'0'\") <=> QScriptValue(engine, 0.0)",
"engine->evaluate(\"'0'\") <=> QScriptValue(engine, QString(\"0\"))",
+ "engine->evaluate(\"'0'\") <=> engine->evaluate(\"new Boolean(false)\")",
"engine->evaluate(\"'0'\") <=> engine->evaluate(\"false\")",
"engine->evaluate(\"'0'\") <=> engine->evaluate(\"0\")",
"engine->evaluate(\"'0'\") <=> engine->evaluate(\"0.0\")",
@@ -1172,6 +1260,7 @@ static QString equals_array [] = {
"engine->evaluate(\"'123'\") <=> QScriptValue(0, QString(\"123\"))",
"engine->evaluate(\"'123'\") <=> QScriptValue(engine, 123.0)",
"engine->evaluate(\"'123'\") <=> QScriptValue(engine, QString(\"123\"))",
+ "engine->evaluate(\"'123'\") <=> engine->evaluate(\"new Number(123)\")",
"engine->evaluate(\"'123'\") <=> engine->evaluate(\"123.0\")",
"engine->evaluate(\"'123'\") <=> engine->evaluate(\"'123'\")",
"engine->evaluate(\"'123'\") <=> engine->newVariant(QVariant(123))",
@@ -1225,6 +1314,7 @@ static QString equals_array [] = {
"engine->newArray(10) <=> engine->newArray(10)",
"engine->newDate(QDateTime()) <=> engine->newDate(QDateTime())",
"engine->newQMetaObject(&QObject::staticMetaObject) <=> engine->newQMetaObject(&QObject::staticMetaObject)",
+ "engine->newRegExp(\"foo\", \"gim\") <=> engine->newRegExp(\"foo\", \"gim\")",
"engine->newVariant(QVariant()) <=> engine->newVariant(QVariant())",
"engine->newVariant(QVariant(123)) <=> QScriptValue(123.0)",
"engine->newVariant(QVariant(123)) <=> QScriptValue(QString(\"123\"))",
@@ -1271,14 +1361,14 @@ static QString equals_array [] = {
"engine->newQObject(0) <=> engine->nullValue()",
"engine->newQObject(0) <=> engine->undefinedValue()",
"engine->newQObject(0) <=> engine->newQObject(0)",
- "engine->newQObject(engine) <=> engine->newQObject(engine)",};
+ "engine->newQObject(engine) <=> engine->newQObject(engine)"};
void tst_QScriptValueGenerated::equals_makeData(const char *expr)
{
static QSet<QString> equals;
if (equals.isEmpty()) {
- equals.reserve(1217);
- for (unsigned i = 0; i < 1217; ++i)
+ equals.reserve(1307);
+ for (unsigned i = 0; i < 1307; ++i)
equals.insert(equals_array[i]);
}
QHash<QString, QScriptValue>::const_iterator it;
@@ -1305,7 +1395,7 @@ void tst_QScriptValueGenerated::strictlyEquals_initData()
initScriptValues();
}
-static QString strictlyEquals_array [] = {
+static QString strictlyEquals_array[] = {
"QScriptValue() <=> QScriptValue()",
"QScriptValue(QScriptValue::UndefinedValue) <=> QScriptValue(QScriptValue::UndefinedValue)",
"QScriptValue(QScriptValue::UndefinedValue) <=> QScriptValue(0, QScriptValue::UndefinedValue)",
@@ -1697,6 +1787,11 @@ static QString strictlyEquals_array [] = {
"engine->evaluate(\"new Object()\") <=> engine->evaluate(\"new Object()\")",
"engine->evaluate(\"new Array()\") <=> engine->evaluate(\"new Array()\")",
"engine->evaluate(\"new Error()\") <=> engine->evaluate(\"new Error()\")",
+ "engine->evaluate(\"new Boolean(true)\") <=> engine->evaluate(\"new Boolean(true)\")",
+ "engine->evaluate(\"new Boolean(false)\") <=> engine->evaluate(\"new Boolean(false)\")",
+ "engine->evaluate(\"new Number(123)\") <=> engine->evaluate(\"new Number(123)\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "engine->evaluate(\"new String('ciao')\") <=> engine->evaluate(\"new String('ciao')\")",
"engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"engine->evaluate(\"Undefined\") <=> engine->evaluate(\"Undefined\")",
"engine->evaluate(\"Null\") <=> engine->evaluate(\"Null\")",
@@ -1819,6 +1914,7 @@ static QString strictlyEquals_array [] = {
"engine->newArray(10) <=> engine->newArray(10)",
"engine->newDate(QDateTime()) <=> engine->newDate(QDateTime())",
"engine->newQMetaObject(&QObject::staticMetaObject) <=> engine->newQMetaObject(&QObject::staticMetaObject)",
+ "engine->newRegExp(\"foo\", \"gim\") <=> engine->newRegExp(\"foo\", \"gim\")",
"engine->newVariant(QVariant()) <=> engine->newVariant(QVariant())",
"engine->newVariant(QVariant(123)) <=> engine->newVariant(QVariant(123))",
"engine->newVariant(QVariant(false)) <=> engine->newVariant(QVariant(false))",
@@ -1828,14 +1924,14 @@ static QString strictlyEquals_array [] = {
"engine->newQObject(0) <=> engine->evaluate(\"null\")",
"engine->newQObject(0) <=> engine->nullValue()",
"engine->newQObject(0) <=> engine->newQObject(0)",
- "engine->newQObject(engine) <=> engine->newQObject(engine)",};
+ "engine->newQObject(engine) <=> engine->newQObject(engine)"};
void tst_QScriptValueGenerated::strictlyEquals_makeData(const char *expr)
{
static QSet<QString> equals;
if (equals.isEmpty()) {
- equals.reserve(523);
- for (unsigned i = 0; i < 523; ++i)
+ equals.reserve(529);
+ for (unsigned i = 0; i < 529; ++i)
equals.insert(strictlyEquals_array[i]);
}
QHash<QString, QScriptValue>::const_iterator it;
@@ -1862,7 +1958,7 @@ void tst_QScriptValueGenerated::lessThan_initData()
initScriptValues();
}
-static QString lessThan_array [] = {
+static QString lessThan_array[] = {
"QScriptValue(QScriptValue::NullValue) <=> QScriptValue(true)",
"QScriptValue(QScriptValue::NullValue) <=> QScriptValue(int(122))",
"QScriptValue(QScriptValue::NullValue) <=> QScriptValue(uint(124))",
@@ -1899,6 +1995,8 @@ static QString lessThan_array [] = {
"QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, \"Infinity\")",
"QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, QString(\"123\"))",
"QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, QString(\"1.23\"))",
+ "QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"new Boolean(true)\")",
+ "QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"new Number(123)\")",
"QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"true\")",
"QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"122\")",
@@ -1942,6 +2040,7 @@ static QString lessThan_array [] = {
"QScriptValue(true) <=> QScriptValue(engine, \"Infinity\")",
"QScriptValue(true) <=> QScriptValue(engine, QString(\"123\"))",
"QScriptValue(true) <=> QScriptValue(engine, QString(\"1.23\"))",
+ "QScriptValue(true) <=> engine->evaluate(\"new Number(123)\")",
"QScriptValue(true) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"QScriptValue(true) <=> engine->evaluate(\"122\")",
"QScriptValue(true) <=> engine->evaluate(\"124\")",
@@ -1989,6 +2088,8 @@ static QString lessThan_array [] = {
"QScriptValue(false) <=> QScriptValue(engine, \"Infinity\")",
"QScriptValue(false) <=> QScriptValue(engine, QString(\"123\"))",
"QScriptValue(false) <=> QScriptValue(engine, QString(\"1.23\"))",
+ "QScriptValue(false) <=> engine->evaluate(\"new Boolean(true)\")",
+ "QScriptValue(false) <=> engine->evaluate(\"new Number(123)\")",
"QScriptValue(false) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"QScriptValue(false) <=> engine->evaluate(\"true\")",
"QScriptValue(false) <=> engine->evaluate(\"122\")",
@@ -2026,6 +2127,7 @@ static QString lessThan_array [] = {
"QScriptValue(int(122)) <=> QScriptValue(engine, qInf())",
"QScriptValue(int(122)) <=> QScriptValue(engine, \"Infinity\")",
"QScriptValue(int(122)) <=> QScriptValue(engine, QString(\"123\"))",
+ "QScriptValue(int(122)) <=> engine->evaluate(\"new Number(123)\")",
"QScriptValue(int(122)) <=> engine->evaluate(\"124\")",
"QScriptValue(int(122)) <=> engine->evaluate(\"123.0\")",
"QScriptValue(int(122)) <=> engine->evaluate(\"0x43211234\")",
@@ -2089,6 +2191,8 @@ static QString lessThan_array [] = {
"QScriptValue(0) <=> QScriptValue(engine, \"Infinity\")",
"QScriptValue(0) <=> QScriptValue(engine, QString(\"123\"))",
"QScriptValue(0) <=> QScriptValue(engine, QString(\"1.23\"))",
+ "QScriptValue(0) <=> engine->evaluate(\"new Boolean(true)\")",
+ "QScriptValue(0) <=> engine->evaluate(\"new Number(123)\")",
"QScriptValue(0) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"QScriptValue(0) <=> engine->evaluate(\"true\")",
"QScriptValue(0) <=> engine->evaluate(\"122\")",
@@ -2138,6 +2242,8 @@ static QString lessThan_array [] = {
"QScriptValue(0.0) <=> QScriptValue(engine, \"Infinity\")",
"QScriptValue(0.0) <=> QScriptValue(engine, QString(\"123\"))",
"QScriptValue(0.0) <=> QScriptValue(engine, QString(\"1.23\"))",
+ "QScriptValue(0.0) <=> engine->evaluate(\"new Boolean(true)\")",
+ "QScriptValue(0.0) <=> engine->evaluate(\"new Number(123)\")",
"QScriptValue(0.0) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"QScriptValue(0.0) <=> engine->evaluate(\"true\")",
"QScriptValue(0.0) <=> engine->evaluate(\"122\")",
@@ -2207,6 +2313,8 @@ static QString lessThan_array [] = {
"QScriptValue(6.37e-8) <=> QScriptValue(engine, \"Infinity\")",
"QScriptValue(6.37e-8) <=> QScriptValue(engine, QString(\"123\"))",
"QScriptValue(6.37e-8) <=> QScriptValue(engine, QString(\"1.23\"))",
+ "QScriptValue(6.37e-8) <=> engine->evaluate(\"new Boolean(true)\")",
+ "QScriptValue(6.37e-8) <=> engine->evaluate(\"new Number(123)\")",
"QScriptValue(6.37e-8) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"QScriptValue(6.37e-8) <=> engine->evaluate(\"true\")",
"QScriptValue(6.37e-8) <=> engine->evaluate(\"122\")",
@@ -2279,6 +2387,9 @@ static QString lessThan_array [] = {
"QScriptValue(-6.37e-8) <=> engine->evaluate(\"[]\")",
"QScriptValue(-6.37e-8) <=> engine->evaluate(\"Array.prototype\")",
"QScriptValue(-6.37e-8) <=> engine->evaluate(\"new Array()\")",
+ "QScriptValue(-6.37e-8) <=> engine->evaluate(\"new Boolean(true)\")",
+ "QScriptValue(-6.37e-8) <=> engine->evaluate(\"new Boolean(false)\")",
+ "QScriptValue(-6.37e-8) <=> engine->evaluate(\"new Number(123)\")",
"QScriptValue(-6.37e-8) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"QScriptValue(-6.37e-8) <=> engine->evaluate(\"null\")",
"QScriptValue(-6.37e-8) <=> engine->evaluate(\"true\")",
@@ -2398,6 +2509,9 @@ static QString lessThan_array [] = {
"QScriptValue(-qInf()) <=> engine->evaluate(\"[]\")",
"QScriptValue(-qInf()) <=> engine->evaluate(\"Array.prototype\")",
"QScriptValue(-qInf()) <=> engine->evaluate(\"new Array()\")",
+ "QScriptValue(-qInf()) <=> engine->evaluate(\"new Boolean(true)\")",
+ "QScriptValue(-qInf()) <=> engine->evaluate(\"new Boolean(false)\")",
+ "QScriptValue(-qInf()) <=> engine->evaluate(\"new Number(123)\")",
"QScriptValue(-qInf()) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"QScriptValue(-qInf()) <=> engine->evaluate(\"null\")",
"QScriptValue(-qInf()) <=> engine->evaluate(\"true\")",
@@ -2438,6 +2552,7 @@ static QString lessThan_array [] = {
"QScriptValue(\"NaN\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
"QScriptValue(\"NaN\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
"QScriptValue(\"NaN\") <=> engine->evaluate(\"new Object()\")",
+ "QScriptValue(\"NaN\") <=> engine->evaluate(\"new String('ciao')\")",
"QScriptValue(\"NaN\") <=> engine->evaluate(\"Undefined\")",
"QScriptValue(\"NaN\") <=> engine->evaluate(\"Null\")",
"QScriptValue(\"NaN\") <=> engine->evaluate(\"True\")",
@@ -2465,6 +2580,7 @@ static QString lessThan_array [] = {
"QScriptValue(\"Infinity\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
"QScriptValue(\"Infinity\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
"QScriptValue(\"Infinity\") <=> engine->evaluate(\"new Object()\")",
+ "QScriptValue(\"Infinity\") <=> engine->evaluate(\"new String('ciao')\")",
"QScriptValue(\"Infinity\") <=> engine->evaluate(\"Undefined\")",
"QScriptValue(\"Infinity\") <=> engine->evaluate(\"Null\")",
"QScriptValue(\"Infinity\") <=> engine->evaluate(\"True\")",
@@ -2549,6 +2665,11 @@ static QString lessThan_array [] = {
"QScriptValue(\"-Infinity\") <=> engine->evaluate(\"/foo/\")",
"QScriptValue(\"-Infinity\") <=> engine->evaluate(\"new Object()\")",
"QScriptValue(\"-Infinity\") <=> engine->evaluate(\"new Error()\")",
+ "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"new Boolean(true)\")",
+ "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"new Boolean(false)\")",
+ "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"new Number(123)\")",
+ "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"new String('ciao')\")",
"QScriptValue(\"-Infinity\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"QScriptValue(\"-Infinity\") <=> engine->evaluate(\"Undefined\")",
"QScriptValue(\"-Infinity\") <=> engine->evaluate(\"Null\")",
@@ -2575,6 +2696,7 @@ static QString lessThan_array [] = {
"QScriptValue(\"-Infinity\") <=> engine->nullValue()",
"QScriptValue(\"-Infinity\") <=> engine->newObject()",
"QScriptValue(\"-Infinity\") <=> engine->newQMetaObject(&QObject::staticMetaObject)",
+ "QScriptValue(\"-Infinity\") <=> engine->newRegExp(\"foo\", \"gim\")",
"QScriptValue(\"-Infinity\") <=> engine->newVariant(QVariant(123))",
"QScriptValue(\"-Infinity\") <=> engine->newVariant(QVariant(false))",
"QScriptValue(\"-Infinity\") <=> engine->newQObject(0)",
@@ -2659,6 +2781,10 @@ static QString lessThan_array [] = {
"QScriptValue(QString(\"\")) <=> engine->evaluate(\"/foo/\")",
"QScriptValue(QString(\"\")) <=> engine->evaluate(\"new Object()\")",
"QScriptValue(QString(\"\")) <=> engine->evaluate(\"new Error()\")",
+ "QScriptValue(QString(\"\")) <=> engine->evaluate(\"new Boolean(true)\")",
+ "QScriptValue(QString(\"\")) <=> engine->evaluate(\"new Number(123)\")",
+ "QScriptValue(QString(\"\")) <=> engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "QScriptValue(QString(\"\")) <=> engine->evaluate(\"new String('ciao')\")",
"QScriptValue(QString(\"\")) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"QScriptValue(QString(\"\")) <=> engine->evaluate(\"Undefined\")",
"QScriptValue(QString(\"\")) <=> engine->evaluate(\"Null\")",
@@ -2680,6 +2806,7 @@ static QString lessThan_array [] = {
"QScriptValue(QString(\"\")) <=> engine->newObject()",
"QScriptValue(QString(\"\")) <=> engine->newArray(10)",
"QScriptValue(QString(\"\")) <=> engine->newQMetaObject(&QObject::staticMetaObject)",
+ "QScriptValue(QString(\"\")) <=> engine->newRegExp(\"foo\", \"gim\")",
"QScriptValue(QString(\"\")) <=> engine->newVariant(QVariant(123))",
"QScriptValue(QString(\"\")) <=> engine->newQObject(engine)",
"QScriptValue(QString()) <=> QScriptValue(true)",
@@ -2746,6 +2873,10 @@ static QString lessThan_array [] = {
"QScriptValue(QString()) <=> engine->evaluate(\"/foo/\")",
"QScriptValue(QString()) <=> engine->evaluate(\"new Object()\")",
"QScriptValue(QString()) <=> engine->evaluate(\"new Error()\")",
+ "QScriptValue(QString()) <=> engine->evaluate(\"new Boolean(true)\")",
+ "QScriptValue(QString()) <=> engine->evaluate(\"new Number(123)\")",
+ "QScriptValue(QString()) <=> engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "QScriptValue(QString()) <=> engine->evaluate(\"new String('ciao')\")",
"QScriptValue(QString()) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"QScriptValue(QString()) <=> engine->evaluate(\"Undefined\")",
"QScriptValue(QString()) <=> engine->evaluate(\"Null\")",
@@ -2767,6 +2898,7 @@ static QString lessThan_array [] = {
"QScriptValue(QString()) <=> engine->newObject()",
"QScriptValue(QString()) <=> engine->newArray(10)",
"QScriptValue(QString()) <=> engine->newQMetaObject(&QObject::staticMetaObject)",
+ "QScriptValue(QString()) <=> engine->newRegExp(\"foo\", \"gim\")",
"QScriptValue(QString()) <=> engine->newVariant(QVariant(123))",
"QScriptValue(QString()) <=> engine->newQObject(engine)",
"QScriptValue(QString(\"0\")) <=> QScriptValue(true)",
@@ -2826,6 +2958,9 @@ static QString lessThan_array [] = {
"QScriptValue(QString(\"0\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
"QScriptValue(QString(\"0\")) <=> engine->evaluate(\"new Object()\")",
"QScriptValue(QString(\"0\")) <=> engine->evaluate(\"new Error()\")",
+ "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"new Boolean(true)\")",
+ "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"new Number(123)\")",
+ "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"new String('ciao')\")",
"QScriptValue(QString(\"0\")) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"QScriptValue(QString(\"0\")) <=> engine->evaluate(\"Undefined\")",
"QScriptValue(QString(\"0\")) <=> engine->evaluate(\"Null\")",
@@ -2886,6 +3021,7 @@ static QString lessThan_array [] = {
"QScriptValue(QString(\"123\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
"QScriptValue(QString(\"123\")) <=> engine->evaluate(\"new Object()\")",
"QScriptValue(QString(\"123\")) <=> engine->evaluate(\"new Error()\")",
+ "QScriptValue(QString(\"123\")) <=> engine->evaluate(\"new String('ciao')\")",
"QScriptValue(QString(\"123\")) <=> engine->evaluate(\"Undefined\")",
"QScriptValue(QString(\"123\")) <=> engine->evaluate(\"Null\")",
"QScriptValue(QString(\"123\")) <=> engine->evaluate(\"True\")",
@@ -2947,6 +3083,8 @@ static QString lessThan_array [] = {
"QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
"QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"new Object()\")",
"QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"new Error()\")",
+ "QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"new Number(123)\")",
+ "QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"new String('ciao')\")",
"QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"Undefined\")",
"QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"Null\")",
@@ -3001,6 +3139,8 @@ static QString lessThan_array [] = {
"QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, \"Infinity\")",
"QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, QString(\"123\"))",
"QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, QString(\"1.23\"))",
+ "QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"new Boolean(true)\")",
+ "QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"new Number(123)\")",
"QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"true\")",
"QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"122\")",
@@ -3044,6 +3184,7 @@ static QString lessThan_array [] = {
"QScriptValue(0, true) <=> QScriptValue(engine, \"Infinity\")",
"QScriptValue(0, true) <=> QScriptValue(engine, QString(\"123\"))",
"QScriptValue(0, true) <=> QScriptValue(engine, QString(\"1.23\"))",
+ "QScriptValue(0, true) <=> engine->evaluate(\"new Number(123)\")",
"QScriptValue(0, true) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"QScriptValue(0, true) <=> engine->evaluate(\"122\")",
"QScriptValue(0, true) <=> engine->evaluate(\"124\")",
@@ -3091,6 +3232,8 @@ static QString lessThan_array [] = {
"QScriptValue(0, false) <=> QScriptValue(engine, \"Infinity\")",
"QScriptValue(0, false) <=> QScriptValue(engine, QString(\"123\"))",
"QScriptValue(0, false) <=> QScriptValue(engine, QString(\"1.23\"))",
+ "QScriptValue(0, false) <=> engine->evaluate(\"new Boolean(true)\")",
+ "QScriptValue(0, false) <=> engine->evaluate(\"new Number(123)\")",
"QScriptValue(0, false) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"QScriptValue(0, false) <=> engine->evaluate(\"true\")",
"QScriptValue(0, false) <=> engine->evaluate(\"122\")",
@@ -3128,6 +3271,7 @@ static QString lessThan_array [] = {
"QScriptValue(0, int(122)) <=> QScriptValue(engine, qInf())",
"QScriptValue(0, int(122)) <=> QScriptValue(engine, \"Infinity\")",
"QScriptValue(0, int(122)) <=> QScriptValue(engine, QString(\"123\"))",
+ "QScriptValue(0, int(122)) <=> engine->evaluate(\"new Number(123)\")",
"QScriptValue(0, int(122)) <=> engine->evaluate(\"124\")",
"QScriptValue(0, int(122)) <=> engine->evaluate(\"123.0\")",
"QScriptValue(0, int(122)) <=> engine->evaluate(\"0x43211234\")",
@@ -3191,6 +3335,8 @@ static QString lessThan_array [] = {
"QScriptValue(0, 0) <=> QScriptValue(engine, \"Infinity\")",
"QScriptValue(0, 0) <=> QScriptValue(engine, QString(\"123\"))",
"QScriptValue(0, 0) <=> QScriptValue(engine, QString(\"1.23\"))",
+ "QScriptValue(0, 0) <=> engine->evaluate(\"new Boolean(true)\")",
+ "QScriptValue(0, 0) <=> engine->evaluate(\"new Number(123)\")",
"QScriptValue(0, 0) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"QScriptValue(0, 0) <=> engine->evaluate(\"true\")",
"QScriptValue(0, 0) <=> engine->evaluate(\"122\")",
@@ -3240,6 +3386,8 @@ static QString lessThan_array [] = {
"QScriptValue(0, 0.0) <=> QScriptValue(engine, \"Infinity\")",
"QScriptValue(0, 0.0) <=> QScriptValue(engine, QString(\"123\"))",
"QScriptValue(0, 0.0) <=> QScriptValue(engine, QString(\"1.23\"))",
+ "QScriptValue(0, 0.0) <=> engine->evaluate(\"new Boolean(true)\")",
+ "QScriptValue(0, 0.0) <=> engine->evaluate(\"new Number(123)\")",
"QScriptValue(0, 0.0) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"QScriptValue(0, 0.0) <=> engine->evaluate(\"true\")",
"QScriptValue(0, 0.0) <=> engine->evaluate(\"122\")",
@@ -3309,6 +3457,8 @@ static QString lessThan_array [] = {
"QScriptValue(0, 6.37e-8) <=> QScriptValue(engine, \"Infinity\")",
"QScriptValue(0, 6.37e-8) <=> QScriptValue(engine, QString(\"123\"))",
"QScriptValue(0, 6.37e-8) <=> QScriptValue(engine, QString(\"1.23\"))",
+ "QScriptValue(0, 6.37e-8) <=> engine->evaluate(\"new Boolean(true)\")",
+ "QScriptValue(0, 6.37e-8) <=> engine->evaluate(\"new Number(123)\")",
"QScriptValue(0, 6.37e-8) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"QScriptValue(0, 6.37e-8) <=> engine->evaluate(\"true\")",
"QScriptValue(0, 6.37e-8) <=> engine->evaluate(\"122\")",
@@ -3381,6 +3531,9 @@ static QString lessThan_array [] = {
"QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"[]\")",
"QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"Array.prototype\")",
"QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"new Array()\")",
+ "QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"new Boolean(true)\")",
+ "QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"new Boolean(false)\")",
+ "QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"new Number(123)\")",
"QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"null\")",
"QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"true\")",
@@ -3500,6 +3653,9 @@ static QString lessThan_array [] = {
"QScriptValue(0, -qInf()) <=> engine->evaluate(\"[]\")",
"QScriptValue(0, -qInf()) <=> engine->evaluate(\"Array.prototype\")",
"QScriptValue(0, -qInf()) <=> engine->evaluate(\"new Array()\")",
+ "QScriptValue(0, -qInf()) <=> engine->evaluate(\"new Boolean(true)\")",
+ "QScriptValue(0, -qInf()) <=> engine->evaluate(\"new Boolean(false)\")",
+ "QScriptValue(0, -qInf()) <=> engine->evaluate(\"new Number(123)\")",
"QScriptValue(0, -qInf()) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"QScriptValue(0, -qInf()) <=> engine->evaluate(\"null\")",
"QScriptValue(0, -qInf()) <=> engine->evaluate(\"true\")",
@@ -3540,6 +3696,7 @@ static QString lessThan_array [] = {
"QScriptValue(0, \"NaN\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
"QScriptValue(0, \"NaN\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
"QScriptValue(0, \"NaN\") <=> engine->evaluate(\"new Object()\")",
+ "QScriptValue(0, \"NaN\") <=> engine->evaluate(\"new String('ciao')\")",
"QScriptValue(0, \"NaN\") <=> engine->evaluate(\"Undefined\")",
"QScriptValue(0, \"NaN\") <=> engine->evaluate(\"Null\")",
"QScriptValue(0, \"NaN\") <=> engine->evaluate(\"True\")",
@@ -3567,6 +3724,7 @@ static QString lessThan_array [] = {
"QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
"QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
"QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"new Object()\")",
+ "QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"new String('ciao')\")",
"QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"Undefined\")",
"QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"Null\")",
"QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"True\")",
@@ -3651,6 +3809,11 @@ static QString lessThan_array [] = {
"QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"/foo/\")",
"QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"new Object()\")",
"QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"new Error()\")",
+ "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"new Boolean(true)\")",
+ "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"new Boolean(false)\")",
+ "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"new Number(123)\")",
+ "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"new String('ciao')\")",
"QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"Undefined\")",
"QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"Null\")",
@@ -3677,6 +3840,7 @@ static QString lessThan_array [] = {
"QScriptValue(0, \"-Infinity\") <=> engine->nullValue()",
"QScriptValue(0, \"-Infinity\") <=> engine->newObject()",
"QScriptValue(0, \"-Infinity\") <=> engine->newQMetaObject(&QObject::staticMetaObject)",
+ "QScriptValue(0, \"-Infinity\") <=> engine->newRegExp(\"foo\", \"gim\")",
"QScriptValue(0, \"-Infinity\") <=> engine->newVariant(QVariant(123))",
"QScriptValue(0, \"-Infinity\") <=> engine->newVariant(QVariant(false))",
"QScriptValue(0, \"-Infinity\") <=> engine->newQObject(0)",
@@ -3761,6 +3925,10 @@ static QString lessThan_array [] = {
"QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"/foo/\")",
"QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"new Object()\")",
"QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"new Error()\")",
+ "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"new Boolean(true)\")",
+ "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"new Number(123)\")",
+ "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"new String('ciao')\")",
"QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"Undefined\")",
"QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"Null\")",
@@ -3782,6 +3950,7 @@ static QString lessThan_array [] = {
"QScriptValue(0, QString(\"\")) <=> engine->newObject()",
"QScriptValue(0, QString(\"\")) <=> engine->newArray(10)",
"QScriptValue(0, QString(\"\")) <=> engine->newQMetaObject(&QObject::staticMetaObject)",
+ "QScriptValue(0, QString(\"\")) <=> engine->newRegExp(\"foo\", \"gim\")",
"QScriptValue(0, QString(\"\")) <=> engine->newVariant(QVariant(123))",
"QScriptValue(0, QString(\"\")) <=> engine->newQObject(engine)",
"QScriptValue(0, QString()) <=> QScriptValue(true)",
@@ -3848,6 +4017,10 @@ static QString lessThan_array [] = {
"QScriptValue(0, QString()) <=> engine->evaluate(\"/foo/\")",
"QScriptValue(0, QString()) <=> engine->evaluate(\"new Object()\")",
"QScriptValue(0, QString()) <=> engine->evaluate(\"new Error()\")",
+ "QScriptValue(0, QString()) <=> engine->evaluate(\"new Boolean(true)\")",
+ "QScriptValue(0, QString()) <=> engine->evaluate(\"new Number(123)\")",
+ "QScriptValue(0, QString()) <=> engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "QScriptValue(0, QString()) <=> engine->evaluate(\"new String('ciao')\")",
"QScriptValue(0, QString()) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"QScriptValue(0, QString()) <=> engine->evaluate(\"Undefined\")",
"QScriptValue(0, QString()) <=> engine->evaluate(\"Null\")",
@@ -3869,6 +4042,7 @@ static QString lessThan_array [] = {
"QScriptValue(0, QString()) <=> engine->newObject()",
"QScriptValue(0, QString()) <=> engine->newArray(10)",
"QScriptValue(0, QString()) <=> engine->newQMetaObject(&QObject::staticMetaObject)",
+ "QScriptValue(0, QString()) <=> engine->newRegExp(\"foo\", \"gim\")",
"QScriptValue(0, QString()) <=> engine->newVariant(QVariant(123))",
"QScriptValue(0, QString()) <=> engine->newQObject(engine)",
"QScriptValue(0, QString(\"0\")) <=> QScriptValue(true)",
@@ -3928,6 +4102,9 @@ static QString lessThan_array [] = {
"QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
"QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"new Object()\")",
"QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"new Error()\")",
+ "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"new Boolean(true)\")",
+ "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"new Number(123)\")",
+ "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"new String('ciao')\")",
"QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"Undefined\")",
"QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"Null\")",
@@ -3988,6 +4165,7 @@ static QString lessThan_array [] = {
"QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
"QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"new Object()\")",
"QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"new Error()\")",
+ "QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"new String('ciao')\")",
"QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"Undefined\")",
"QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"Null\")",
"QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"True\")",
@@ -4050,6 +4228,8 @@ static QString lessThan_array [] = {
"QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
"QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"new Object()\")",
"QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"new Error()\")",
+ "QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"new Number(123)\")",
+ "QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"new String('ciao')\")",
"QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"Undefined\")",
"QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"Null\")",
@@ -4105,6 +4285,8 @@ static QString lessThan_array [] = {
"QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, \"Infinity\")",
"QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, QString(\"123\"))",
"QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, QString(\"1.23\"))",
+ "QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"new Boolean(true)\")",
+ "QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"new Number(123)\")",
"QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"true\")",
"QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"122\")",
@@ -4148,6 +4330,7 @@ static QString lessThan_array [] = {
"QScriptValue(engine, true) <=> QScriptValue(engine, \"Infinity\")",
"QScriptValue(engine, true) <=> QScriptValue(engine, QString(\"123\"))",
"QScriptValue(engine, true) <=> QScriptValue(engine, QString(\"1.23\"))",
+ "QScriptValue(engine, true) <=> engine->evaluate(\"new Number(123)\")",
"QScriptValue(engine, true) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"QScriptValue(engine, true) <=> engine->evaluate(\"122\")",
"QScriptValue(engine, true) <=> engine->evaluate(\"124\")",
@@ -4195,6 +4378,8 @@ static QString lessThan_array [] = {
"QScriptValue(engine, false) <=> QScriptValue(engine, \"Infinity\")",
"QScriptValue(engine, false) <=> QScriptValue(engine, QString(\"123\"))",
"QScriptValue(engine, false) <=> QScriptValue(engine, QString(\"1.23\"))",
+ "QScriptValue(engine, false) <=> engine->evaluate(\"new Boolean(true)\")",
+ "QScriptValue(engine, false) <=> engine->evaluate(\"new Number(123)\")",
"QScriptValue(engine, false) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"QScriptValue(engine, false) <=> engine->evaluate(\"true\")",
"QScriptValue(engine, false) <=> engine->evaluate(\"122\")",
@@ -4232,6 +4417,7 @@ static QString lessThan_array [] = {
"QScriptValue(engine, int(122)) <=> QScriptValue(engine, qInf())",
"QScriptValue(engine, int(122)) <=> QScriptValue(engine, \"Infinity\")",
"QScriptValue(engine, int(122)) <=> QScriptValue(engine, QString(\"123\"))",
+ "QScriptValue(engine, int(122)) <=> engine->evaluate(\"new Number(123)\")",
"QScriptValue(engine, int(122)) <=> engine->evaluate(\"124\")",
"QScriptValue(engine, int(122)) <=> engine->evaluate(\"123.0\")",
"QScriptValue(engine, int(122)) <=> engine->evaluate(\"0x43211234\")",
@@ -4295,6 +4481,8 @@ static QString lessThan_array [] = {
"QScriptValue(engine, 0) <=> QScriptValue(engine, \"Infinity\")",
"QScriptValue(engine, 0) <=> QScriptValue(engine, QString(\"123\"))",
"QScriptValue(engine, 0) <=> QScriptValue(engine, QString(\"1.23\"))",
+ "QScriptValue(engine, 0) <=> engine->evaluate(\"new Boolean(true)\")",
+ "QScriptValue(engine, 0) <=> engine->evaluate(\"new Number(123)\")",
"QScriptValue(engine, 0) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"QScriptValue(engine, 0) <=> engine->evaluate(\"true\")",
"QScriptValue(engine, 0) <=> engine->evaluate(\"122\")",
@@ -4344,6 +4532,8 @@ static QString lessThan_array [] = {
"QScriptValue(engine, 0.0) <=> QScriptValue(engine, \"Infinity\")",
"QScriptValue(engine, 0.0) <=> QScriptValue(engine, QString(\"123\"))",
"QScriptValue(engine, 0.0) <=> QScriptValue(engine, QString(\"1.23\"))",
+ "QScriptValue(engine, 0.0) <=> engine->evaluate(\"new Boolean(true)\")",
+ "QScriptValue(engine, 0.0) <=> engine->evaluate(\"new Number(123)\")",
"QScriptValue(engine, 0.0) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"QScriptValue(engine, 0.0) <=> engine->evaluate(\"true\")",
"QScriptValue(engine, 0.0) <=> engine->evaluate(\"122\")",
@@ -4413,6 +4603,8 @@ static QString lessThan_array [] = {
"QScriptValue(engine, 6.37e-8) <=> QScriptValue(engine, \"Infinity\")",
"QScriptValue(engine, 6.37e-8) <=> QScriptValue(engine, QString(\"123\"))",
"QScriptValue(engine, 6.37e-8) <=> QScriptValue(engine, QString(\"1.23\"))",
+ "QScriptValue(engine, 6.37e-8) <=> engine->evaluate(\"new Boolean(true)\")",
+ "QScriptValue(engine, 6.37e-8) <=> engine->evaluate(\"new Number(123)\")",
"QScriptValue(engine, 6.37e-8) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"QScriptValue(engine, 6.37e-8) <=> engine->evaluate(\"true\")",
"QScriptValue(engine, 6.37e-8) <=> engine->evaluate(\"122\")",
@@ -4485,6 +4677,9 @@ static QString lessThan_array [] = {
"QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"[]\")",
"QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"Array.prototype\")",
"QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"new Array()\")",
+ "QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"new Boolean(true)\")",
+ "QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"new Boolean(false)\")",
+ "QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"new Number(123)\")",
"QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"null\")",
"QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"true\")",
@@ -4604,6 +4799,9 @@ static QString lessThan_array [] = {
"QScriptValue(engine, -qInf()) <=> engine->evaluate(\"[]\")",
"QScriptValue(engine, -qInf()) <=> engine->evaluate(\"Array.prototype\")",
"QScriptValue(engine, -qInf()) <=> engine->evaluate(\"new Array()\")",
+ "QScriptValue(engine, -qInf()) <=> engine->evaluate(\"new Boolean(true)\")",
+ "QScriptValue(engine, -qInf()) <=> engine->evaluate(\"new Boolean(false)\")",
+ "QScriptValue(engine, -qInf()) <=> engine->evaluate(\"new Number(123)\")",
"QScriptValue(engine, -qInf()) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"QScriptValue(engine, -qInf()) <=> engine->evaluate(\"null\")",
"QScriptValue(engine, -qInf()) <=> engine->evaluate(\"true\")",
@@ -4644,6 +4842,7 @@ static QString lessThan_array [] = {
"QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
"QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
"QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"new Object()\")",
+ "QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"new String('ciao')\")",
"QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"Undefined\")",
"QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"Null\")",
"QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"True\")",
@@ -4671,6 +4870,7 @@ static QString lessThan_array [] = {
"QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
"QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
"QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"new Object()\")",
+ "QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"new String('ciao')\")",
"QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"Undefined\")",
"QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"Null\")",
"QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"True\")",
@@ -4755,6 +4955,11 @@ static QString lessThan_array [] = {
"QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"/foo/\")",
"QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"new Object()\")",
"QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"new Error()\")",
+ "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"new Boolean(true)\")",
+ "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"new Boolean(false)\")",
+ "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"new Number(123)\")",
+ "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"new String('ciao')\")",
"QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"Undefined\")",
"QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"Null\")",
@@ -4781,6 +4986,7 @@ static QString lessThan_array [] = {
"QScriptValue(engine, \"-Infinity\") <=> engine->nullValue()",
"QScriptValue(engine, \"-Infinity\") <=> engine->newObject()",
"QScriptValue(engine, \"-Infinity\") <=> engine->newQMetaObject(&QObject::staticMetaObject)",
+ "QScriptValue(engine, \"-Infinity\") <=> engine->newRegExp(\"foo\", \"gim\")",
"QScriptValue(engine, \"-Infinity\") <=> engine->newVariant(QVariant(123))",
"QScriptValue(engine, \"-Infinity\") <=> engine->newVariant(QVariant(false))",
"QScriptValue(engine, \"-Infinity\") <=> engine->newQObject(0)",
@@ -4865,6 +5071,10 @@ static QString lessThan_array [] = {
"QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"/foo/\")",
"QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"new Object()\")",
"QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"new Error()\")",
+ "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"new Boolean(true)\")",
+ "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"new Number(123)\")",
+ "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"new String('ciao')\")",
"QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"Undefined\")",
"QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"Null\")",
@@ -4886,6 +5096,7 @@ static QString lessThan_array [] = {
"QScriptValue(engine, QString(\"\")) <=> engine->newObject()",
"QScriptValue(engine, QString(\"\")) <=> engine->newArray(10)",
"QScriptValue(engine, QString(\"\")) <=> engine->newQMetaObject(&QObject::staticMetaObject)",
+ "QScriptValue(engine, QString(\"\")) <=> engine->newRegExp(\"foo\", \"gim\")",
"QScriptValue(engine, QString(\"\")) <=> engine->newVariant(QVariant(123))",
"QScriptValue(engine, QString(\"\")) <=> engine->newQObject(engine)",
"QScriptValue(engine, QString()) <=> QScriptValue(true)",
@@ -4952,6 +5163,10 @@ static QString lessThan_array [] = {
"QScriptValue(engine, QString()) <=> engine->evaluate(\"/foo/\")",
"QScriptValue(engine, QString()) <=> engine->evaluate(\"new Object()\")",
"QScriptValue(engine, QString()) <=> engine->evaluate(\"new Error()\")",
+ "QScriptValue(engine, QString()) <=> engine->evaluate(\"new Boolean(true)\")",
+ "QScriptValue(engine, QString()) <=> engine->evaluate(\"new Number(123)\")",
+ "QScriptValue(engine, QString()) <=> engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "QScriptValue(engine, QString()) <=> engine->evaluate(\"new String('ciao')\")",
"QScriptValue(engine, QString()) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"QScriptValue(engine, QString()) <=> engine->evaluate(\"Undefined\")",
"QScriptValue(engine, QString()) <=> engine->evaluate(\"Null\")",
@@ -4973,6 +5188,7 @@ static QString lessThan_array [] = {
"QScriptValue(engine, QString()) <=> engine->newObject()",
"QScriptValue(engine, QString()) <=> engine->newArray(10)",
"QScriptValue(engine, QString()) <=> engine->newQMetaObject(&QObject::staticMetaObject)",
+ "QScriptValue(engine, QString()) <=> engine->newRegExp(\"foo\", \"gim\")",
"QScriptValue(engine, QString()) <=> engine->newVariant(QVariant(123))",
"QScriptValue(engine, QString()) <=> engine->newQObject(engine)",
"QScriptValue(engine, QString(\"0\")) <=> QScriptValue(true)",
@@ -5032,6 +5248,9 @@ static QString lessThan_array [] = {
"QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
"QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"new Object()\")",
"QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"new Error()\")",
+ "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"new Boolean(true)\")",
+ "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"new Number(123)\")",
+ "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"new String('ciao')\")",
"QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"Undefined\")",
"QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"Null\")",
@@ -5092,6 +5311,7 @@ static QString lessThan_array [] = {
"QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
"QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"new Object()\")",
"QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"new Error()\")",
+ "QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"new String('ciao')\")",
"QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"Undefined\")",
"QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"Null\")",
"QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"True\")",
@@ -5155,6 +5375,8 @@ static QString lessThan_array [] = {
"QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
"QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"new Object()\")",
"QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"new Error()\")",
+ "QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"new Number(123)\")",
+ "QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"new String('ciao')\")",
"QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"Undefined\")",
"QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"Null\")",
@@ -5238,6 +5460,10 @@ static QString lessThan_array [] = {
"engine->evaluate(\"[]\") <=> engine->evaluate(\"/foo/\")",
"engine->evaluate(\"[]\") <=> engine->evaluate(\"new Object()\")",
"engine->evaluate(\"[]\") <=> engine->evaluate(\"new Error()\")",
+ "engine->evaluate(\"[]\") <=> engine->evaluate(\"new Boolean(true)\")",
+ "engine->evaluate(\"[]\") <=> engine->evaluate(\"new Number(123)\")",
+ "engine->evaluate(\"[]\") <=> engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "engine->evaluate(\"[]\") <=> engine->evaluate(\"new String('ciao')\")",
"engine->evaluate(\"[]\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"engine->evaluate(\"[]\") <=> engine->evaluate(\"Undefined\")",
"engine->evaluate(\"[]\") <=> engine->evaluate(\"Null\")",
@@ -5259,6 +5485,7 @@ static QString lessThan_array [] = {
"engine->evaluate(\"[]\") <=> engine->newObject()",
"engine->evaluate(\"[]\") <=> engine->newArray(10)",
"engine->evaluate(\"[]\") <=> engine->newQMetaObject(&QObject::staticMetaObject)",
+ "engine->evaluate(\"[]\") <=> engine->newRegExp(\"foo\", \"gim\")",
"engine->evaluate(\"[]\") <=> engine->newVariant(QVariant(123))",
"engine->evaluate(\"[]\") <=> engine->newQObject(engine)",
"engine->evaluate(\"Object.prototype\") <=> QScriptValue(\"ciao\")",
@@ -5275,6 +5502,7 @@ static QString lessThan_array [] = {
"engine->evaluate(\"Object.prototype\") <=> engine->evaluate(\"(function() { return 1; })\")",
"engine->evaluate(\"Object.prototype\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
"engine->evaluate(\"Object.prototype\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
+ "engine->evaluate(\"Object.prototype\") <=> engine->evaluate(\"new String('ciao')\")",
"engine->evaluate(\"Object.prototype\") <=> engine->evaluate(\"'ciao'\")",
"engine->evaluate(\"Object.prototype\") <=> engine->newQMetaObject(&QObject::staticMetaObject)",
"engine->evaluate(\"Array.prototype\") <=> QScriptValue(true)",
@@ -5341,6 +5569,10 @@ static QString lessThan_array [] = {
"engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"/foo/\")",
"engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"new Object()\")",
"engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"new Error()\")",
+ "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"new Boolean(true)\")",
+ "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"new Number(123)\")",
+ "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"new String('ciao')\")",
"engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"Undefined\")",
"engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"Null\")",
@@ -5362,6 +5594,7 @@ static QString lessThan_array [] = {
"engine->evaluate(\"Array.prototype\") <=> engine->newObject()",
"engine->evaluate(\"Array.prototype\") <=> engine->newArray(10)",
"engine->evaluate(\"Array.prototype\") <=> engine->newQMetaObject(&QObject::staticMetaObject)",
+ "engine->evaluate(\"Array.prototype\") <=> engine->newRegExp(\"foo\", \"gim\")",
"engine->evaluate(\"Array.prototype\") <=> engine->newVariant(QVariant(123))",
"engine->evaluate(\"Array.prototype\") <=> engine->newQObject(engine)",
"engine->evaluate(\"Function.prototype\") <=> engine->evaluate(\"Object\")",
@@ -5393,6 +5626,7 @@ static QString lessThan_array [] = {
"engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
"engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
"engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"new Object()\")",
+ "engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"new String('ciao')\")",
"engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"Undefined\")",
"engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"Null\")",
"engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"True\")",
@@ -5455,6 +5689,8 @@ static QString lessThan_array [] = {
"engine->evaluate(\"/foo/\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
"engine->evaluate(\"/foo/\") <=> engine->evaluate(\"new Object()\")",
"engine->evaluate(\"/foo/\") <=> engine->evaluate(\"new Error()\")",
+ "engine->evaluate(\"/foo/\") <=> engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "engine->evaluate(\"/foo/\") <=> engine->evaluate(\"new String('ciao')\")",
"engine->evaluate(\"/foo/\") <=> engine->evaluate(\"Undefined\")",
"engine->evaluate(\"/foo/\") <=> engine->evaluate(\"Null\")",
"engine->evaluate(\"/foo/\") <=> engine->evaluate(\"True\")",
@@ -5465,6 +5701,7 @@ static QString lessThan_array [] = {
"engine->evaluate(\"/foo/\") <=> engine->evaluate(\"'12.4'\")",
"engine->evaluate(\"/foo/\") <=> engine->newObject()",
"engine->evaluate(\"/foo/\") <=> engine->newQMetaObject(&QObject::staticMetaObject)",
+ "engine->evaluate(\"/foo/\") <=> engine->newRegExp(\"foo\", \"gim\")",
"engine->evaluate(\"/foo/\") <=> engine->newQObject(engine)",
"engine->evaluate(\"new Object()\") <=> QScriptValue(\"ciao\")",
"engine->evaluate(\"new Object()\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
@@ -5480,6 +5717,7 @@ static QString lessThan_array [] = {
"engine->evaluate(\"new Object()\") <=> engine->evaluate(\"(function() { return 1; })\")",
"engine->evaluate(\"new Object()\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
"engine->evaluate(\"new Object()\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
+ "engine->evaluate(\"new Object()\") <=> engine->evaluate(\"new String('ciao')\")",
"engine->evaluate(\"new Object()\") <=> engine->evaluate(\"'ciao'\")",
"engine->evaluate(\"new Object()\") <=> engine->newQMetaObject(&QObject::staticMetaObject)",
"engine->evaluate(\"new Array()\") <=> QScriptValue(true)",
@@ -5546,6 +5784,10 @@ static QString lessThan_array [] = {
"engine->evaluate(\"new Array()\") <=> engine->evaluate(\"/foo/\")",
"engine->evaluate(\"new Array()\") <=> engine->evaluate(\"new Object()\")",
"engine->evaluate(\"new Array()\") <=> engine->evaluate(\"new Error()\")",
+ "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"new Boolean(true)\")",
+ "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"new Number(123)\")",
+ "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"new String('ciao')\")",
"engine->evaluate(\"new Array()\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"engine->evaluate(\"new Array()\") <=> engine->evaluate(\"Undefined\")",
"engine->evaluate(\"new Array()\") <=> engine->evaluate(\"Null\")",
@@ -5567,6 +5809,7 @@ static QString lessThan_array [] = {
"engine->evaluate(\"new Array()\") <=> engine->newObject()",
"engine->evaluate(\"new Array()\") <=> engine->newArray(10)",
"engine->evaluate(\"new Array()\") <=> engine->newQMetaObject(&QObject::staticMetaObject)",
+ "engine->evaluate(\"new Array()\") <=> engine->newRegExp(\"foo\", \"gim\")",
"engine->evaluate(\"new Array()\") <=> engine->newVariant(QVariant(123))",
"engine->evaluate(\"new Array()\") <=> engine->newQObject(engine)",
"engine->evaluate(\"new Error()\") <=> QScriptValue(\"NaN\")",
@@ -5591,6 +5834,7 @@ static QString lessThan_array [] = {
"engine->evaluate(\"new Error()\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
"engine->evaluate(\"new Error()\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
"engine->evaluate(\"new Error()\") <=> engine->evaluate(\"new Object()\")",
+ "engine->evaluate(\"new Error()\") <=> engine->evaluate(\"new String('ciao')\")",
"engine->evaluate(\"new Error()\") <=> engine->evaluate(\"Undefined\")",
"engine->evaluate(\"new Error()\") <=> engine->evaluate(\"Null\")",
"engine->evaluate(\"new Error()\") <=> engine->evaluate(\"True\")",
@@ -5599,6 +5843,175 @@ static QString lessThan_array [] = {
"engine->evaluate(\"new Error()\") <=> engine->newObject()",
"engine->evaluate(\"new Error()\") <=> engine->newQMetaObject(&QObject::staticMetaObject)",
"engine->evaluate(\"new Error()\") <=> engine->newQObject(engine)",
+ "engine->evaluate(\"new Boolean(true)\") <=> QScriptValue(int(122))",
+ "engine->evaluate(\"new Boolean(true)\") <=> QScriptValue(uint(124))",
+ "engine->evaluate(\"new Boolean(true)\") <=> QScriptValue(123.0)",
+ "engine->evaluate(\"new Boolean(true)\") <=> QScriptValue(0x43211234)",
+ "engine->evaluate(\"new Boolean(true)\") <=> QScriptValue(0x10000)",
+ "engine->evaluate(\"new Boolean(true)\") <=> QScriptValue(0x10001)",
+ "engine->evaluate(\"new Boolean(true)\") <=> QScriptValue(qInf())",
+ "engine->evaluate(\"new Boolean(true)\") <=> QScriptValue(\"Infinity\")",
+ "engine->evaluate(\"new Boolean(true)\") <=> QScriptValue(QString(\"123\"))",
+ "engine->evaluate(\"new Boolean(true)\") <=> QScriptValue(QString(\"12.4\"))",
+ "engine->evaluate(\"new Boolean(true)\") <=> QScriptValue(0, int(122))",
+ "engine->evaluate(\"new Boolean(true)\") <=> QScriptValue(0, uint(124))",
+ "engine->evaluate(\"new Boolean(true)\") <=> QScriptValue(0, 123.0)",
+ "engine->evaluate(\"new Boolean(true)\") <=> QScriptValue(0, 0x43211234)",
+ "engine->evaluate(\"new Boolean(true)\") <=> QScriptValue(0, 0x10000)",
+ "engine->evaluate(\"new Boolean(true)\") <=> QScriptValue(0, 0x10001)",
+ "engine->evaluate(\"new Boolean(true)\") <=> QScriptValue(0, qInf())",
+ "engine->evaluate(\"new Boolean(true)\") <=> QScriptValue(0, \"Infinity\")",
+ "engine->evaluate(\"new Boolean(true)\") <=> QScriptValue(0, QString(\"123\"))",
+ "engine->evaluate(\"new Boolean(true)\") <=> QScriptValue(0, QString(\"12.3\"))",
+ "engine->evaluate(\"new Boolean(true)\") <=> QScriptValue(engine, int(122))",
+ "engine->evaluate(\"new Boolean(true)\") <=> QScriptValue(engine, uint(124))",
+ "engine->evaluate(\"new Boolean(true)\") <=> QScriptValue(engine, 123.0)",
+ "engine->evaluate(\"new Boolean(true)\") <=> QScriptValue(engine, 0x43211234)",
+ "engine->evaluate(\"new Boolean(true)\") <=> QScriptValue(engine, 0x10000)",
+ "engine->evaluate(\"new Boolean(true)\") <=> QScriptValue(engine, 0x10001)",
+ "engine->evaluate(\"new Boolean(true)\") <=> QScriptValue(engine, qInf())",
+ "engine->evaluate(\"new Boolean(true)\") <=> QScriptValue(engine, \"Infinity\")",
+ "engine->evaluate(\"new Boolean(true)\") <=> QScriptValue(engine, QString(\"123\"))",
+ "engine->evaluate(\"new Boolean(true)\") <=> QScriptValue(engine, QString(\"1.23\"))",
+ "engine->evaluate(\"new Boolean(true)\") <=> engine->evaluate(\"new Number(123)\")",
+ "engine->evaluate(\"new Boolean(true)\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
+ "engine->evaluate(\"new Boolean(true)\") <=> engine->evaluate(\"122\")",
+ "engine->evaluate(\"new Boolean(true)\") <=> engine->evaluate(\"124\")",
+ "engine->evaluate(\"new Boolean(true)\") <=> engine->evaluate(\"123.0\")",
+ "engine->evaluate(\"new Boolean(true)\") <=> engine->evaluate(\"0x43211234\")",
+ "engine->evaluate(\"new Boolean(true)\") <=> engine->evaluate(\"0x10000\")",
+ "engine->evaluate(\"new Boolean(true)\") <=> engine->evaluate(\"0x10001\")",
+ "engine->evaluate(\"new Boolean(true)\") <=> engine->evaluate(\"Infinity\")",
+ "engine->evaluate(\"new Boolean(true)\") <=> engine->evaluate(\"'123'\")",
+ "engine->evaluate(\"new Boolean(true)\") <=> engine->evaluate(\"'12.4'\")",
+ "engine->evaluate(\"new Boolean(true)\") <=> engine->newVariant(QVariant(123))",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(true)",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(int(122))",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(uint(124))",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(123.0)",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(6.37e-8)",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(0x43211234)",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(0x10000)",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(0x10001)",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(qInf())",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(\"Infinity\")",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(QString(\"123\"))",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(QString(\"12.4\"))",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(0, true)",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(0, int(122))",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(0, uint(124))",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(0, 123.0)",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(0, 6.37e-8)",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(0, 0x43211234)",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(0, 0x10000)",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(0, 0x10001)",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(0, qInf())",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(0, \"Infinity\")",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(0, QString(\"123\"))",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(0, QString(\"12.3\"))",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(engine, true)",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(engine, int(122))",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(engine, uint(124))",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(engine, 123.0)",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(engine, 6.37e-8)",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(engine, 0x43211234)",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(engine, 0x10000)",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(engine, 0x10001)",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(engine, qInf())",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(engine, \"Infinity\")",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(engine, QString(\"123\"))",
+ "engine->evaluate(\"new Boolean(false)\") <=> QScriptValue(engine, QString(\"1.23\"))",
+ "engine->evaluate(\"new Boolean(false)\") <=> engine->evaluate(\"new Boolean(true)\")",
+ "engine->evaluate(\"new Boolean(false)\") <=> engine->evaluate(\"new Number(123)\")",
+ "engine->evaluate(\"new Boolean(false)\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
+ "engine->evaluate(\"new Boolean(false)\") <=> engine->evaluate(\"true\")",
+ "engine->evaluate(\"new Boolean(false)\") <=> engine->evaluate(\"122\")",
+ "engine->evaluate(\"new Boolean(false)\") <=> engine->evaluate(\"124\")",
+ "engine->evaluate(\"new Boolean(false)\") <=> engine->evaluate(\"123.0\")",
+ "engine->evaluate(\"new Boolean(false)\") <=> engine->evaluate(\"6.37e-8\")",
+ "engine->evaluate(\"new Boolean(false)\") <=> engine->evaluate(\"0x43211234\")",
+ "engine->evaluate(\"new Boolean(false)\") <=> engine->evaluate(\"0x10000\")",
+ "engine->evaluate(\"new Boolean(false)\") <=> engine->evaluate(\"0x10001\")",
+ "engine->evaluate(\"new Boolean(false)\") <=> engine->evaluate(\"Infinity\")",
+ "engine->evaluate(\"new Boolean(false)\") <=> engine->evaluate(\"'123'\")",
+ "engine->evaluate(\"new Boolean(false)\") <=> engine->evaluate(\"'12.4'\")",
+ "engine->evaluate(\"new Boolean(false)\") <=> engine->newVariant(QVariant(123))",
+ "engine->evaluate(\"new Number(123)\") <=> QScriptValue(uint(124))",
+ "engine->evaluate(\"new Number(123)\") <=> QScriptValue(0x43211234)",
+ "engine->evaluate(\"new Number(123)\") <=> QScriptValue(0x10000)",
+ "engine->evaluate(\"new Number(123)\") <=> QScriptValue(0x10001)",
+ "engine->evaluate(\"new Number(123)\") <=> QScriptValue(qInf())",
+ "engine->evaluate(\"new Number(123)\") <=> QScriptValue(\"Infinity\")",
+ "engine->evaluate(\"new Number(123)\") <=> QScriptValue(0, uint(124))",
+ "engine->evaluate(\"new Number(123)\") <=> QScriptValue(0, 0x43211234)",
+ "engine->evaluate(\"new Number(123)\") <=> QScriptValue(0, 0x10000)",
+ "engine->evaluate(\"new Number(123)\") <=> QScriptValue(0, 0x10001)",
+ "engine->evaluate(\"new Number(123)\") <=> QScriptValue(0, qInf())",
+ "engine->evaluate(\"new Number(123)\") <=> QScriptValue(0, \"Infinity\")",
+ "engine->evaluate(\"new Number(123)\") <=> QScriptValue(engine, uint(124))",
+ "engine->evaluate(\"new Number(123)\") <=> QScriptValue(engine, 0x43211234)",
+ "engine->evaluate(\"new Number(123)\") <=> QScriptValue(engine, 0x10000)",
+ "engine->evaluate(\"new Number(123)\") <=> QScriptValue(engine, 0x10001)",
+ "engine->evaluate(\"new Number(123)\") <=> QScriptValue(engine, qInf())",
+ "engine->evaluate(\"new Number(123)\") <=> QScriptValue(engine, \"Infinity\")",
+ "engine->evaluate(\"new Number(123)\") <=> engine->evaluate(\"124\")",
+ "engine->evaluate(\"new Number(123)\") <=> engine->evaluate(\"0x43211234\")",
+ "engine->evaluate(\"new Number(123)\") <=> engine->evaluate(\"0x10000\")",
+ "engine->evaluate(\"new Number(123)\") <=> engine->evaluate(\"0x10001\")",
+ "engine->evaluate(\"new Number(123)\") <=> engine->evaluate(\"Infinity\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> QScriptValue(\"NaN\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> QScriptValue(\"Infinity\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> QScriptValue(\"ciao\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> QScriptValue(QString(\"0\"))",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> QScriptValue(QString(\"123\"))",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> QScriptValue(QString(\"12.4\"))",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> QScriptValue(0, \"NaN\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> QScriptValue(0, \"Infinity\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> QScriptValue(0, \"ciao\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> QScriptValue(0, QString(\"0\"))",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> QScriptValue(0, QString(\"123\"))",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> QScriptValue(0, QString(\"12.3\"))",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> QScriptValue(engine, \"NaN\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> QScriptValue(engine, \"Infinity\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> QScriptValue(engine, \"ciao\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> QScriptValue(engine, QString(\"0\"))",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> QScriptValue(engine, QString(\"123\"))",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> QScriptValue(engine, QString(\"1.23\"))",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> engine->evaluate(\"Object.prototype\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> engine->evaluate(\"Function.prototype\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> engine->evaluate(\"Error.prototype\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> engine->evaluate(\"Object\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> engine->evaluate(\"Array\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> engine->evaluate(\"Number\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> engine->evaluate(\"Function\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> engine->evaluate(\"(function() { return 1; })\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> engine->evaluate(\"new Object()\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> engine->evaluate(\"new Error()\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> engine->evaluate(\"new String('ciao')\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> engine->evaluate(\"Undefined\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> engine->evaluate(\"Null\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> engine->evaluate(\"True\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> engine->evaluate(\"False\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> engine->evaluate(\"'ciao'\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> engine->evaluate(\"'0'\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> engine->evaluate(\"'123'\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> engine->evaluate(\"'12.4'\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> engine->newObject()",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> engine->newQMetaObject(&QObject::staticMetaObject)",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> engine->newQObject(engine)",
+ "engine->evaluate(\"new String('ciao')\") <=> engine->evaluate(\"Function.prototype\")",
+ "engine->evaluate(\"new String('ciao')\") <=> engine->evaluate(\"Object\")",
+ "engine->evaluate(\"new String('ciao')\") <=> engine->evaluate(\"Array\")",
+ "engine->evaluate(\"new String('ciao')\") <=> engine->evaluate(\"Number\")",
+ "engine->evaluate(\"new String('ciao')\") <=> engine->evaluate(\"Function\")",
+ "engine->evaluate(\"new String('ciao')\") <=> engine->evaluate(\"(function() { return 1; })\")",
+ "engine->evaluate(\"new String('ciao')\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
+ "engine->evaluate(\"new String('ciao')\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
"engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(int(122))",
"engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(uint(124))",
"engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(123.0)",
@@ -5626,6 +6039,7 @@ static QString lessThan_array [] = {
"engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(engine, qInf())",
"engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(engine, \"Infinity\")",
"engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(engine, QString(\"123\"))",
+ "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> engine->evaluate(\"new Number(123)\")",
"engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> engine->evaluate(\"122\")",
"engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> engine->evaluate(\"124\")",
"engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> engine->evaluate(\"123.0\")",
@@ -5651,6 +6065,7 @@ static QString lessThan_array [] = {
"engine->evaluate(\"Undefined\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
"engine->evaluate(\"Undefined\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
"engine->evaluate(\"Undefined\") <=> engine->evaluate(\"new Object()\")",
+ "engine->evaluate(\"Undefined\") <=> engine->evaluate(\"new String('ciao')\")",
"engine->evaluate(\"Undefined\") <=> engine->evaluate(\"'ciao'\")",
"engine->evaluate(\"Undefined\") <=> engine->newObject()",
"engine->evaluate(\"Undefined\") <=> engine->newQMetaObject(&QObject::staticMetaObject)",
@@ -5670,6 +6085,7 @@ static QString lessThan_array [] = {
"engine->evaluate(\"Null\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
"engine->evaluate(\"Null\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
"engine->evaluate(\"Null\") <=> engine->evaluate(\"new Object()\")",
+ "engine->evaluate(\"Null\") <=> engine->evaluate(\"new String('ciao')\")",
"engine->evaluate(\"Null\") <=> engine->evaluate(\"Undefined\")",
"engine->evaluate(\"Null\") <=> engine->evaluate(\"True\")",
"engine->evaluate(\"Null\") <=> engine->evaluate(\"'ciao'\")",
@@ -5691,6 +6107,7 @@ static QString lessThan_array [] = {
"engine->evaluate(\"True\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
"engine->evaluate(\"True\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
"engine->evaluate(\"True\") <=> engine->evaluate(\"new Object()\")",
+ "engine->evaluate(\"True\") <=> engine->evaluate(\"new String('ciao')\")",
"engine->evaluate(\"True\") <=> engine->evaluate(\"Undefined\")",
"engine->evaluate(\"True\") <=> engine->evaluate(\"'ciao'\")",
"engine->evaluate(\"True\") <=> engine->newObject()",
@@ -5711,6 +6128,7 @@ static QString lessThan_array [] = {
"engine->evaluate(\"False\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
"engine->evaluate(\"False\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
"engine->evaluate(\"False\") <=> engine->evaluate(\"new Object()\")",
+ "engine->evaluate(\"False\") <=> engine->evaluate(\"new String('ciao')\")",
"engine->evaluate(\"False\") <=> engine->evaluate(\"Undefined\")",
"engine->evaluate(\"False\") <=> engine->evaluate(\"Null\")",
"engine->evaluate(\"False\") <=> engine->evaluate(\"True\")",
@@ -5753,6 +6171,8 @@ static QString lessThan_array [] = {
"engine->evaluate(\"null\") <=> QScriptValue(engine, \"Infinity\")",
"engine->evaluate(\"null\") <=> QScriptValue(engine, QString(\"123\"))",
"engine->evaluate(\"null\") <=> QScriptValue(engine, QString(\"1.23\"))",
+ "engine->evaluate(\"null\") <=> engine->evaluate(\"new Boolean(true)\")",
+ "engine->evaluate(\"null\") <=> engine->evaluate(\"new Number(123)\")",
"engine->evaluate(\"null\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"engine->evaluate(\"null\") <=> engine->evaluate(\"true\")",
"engine->evaluate(\"null\") <=> engine->evaluate(\"122\")",
@@ -5796,6 +6216,7 @@ static QString lessThan_array [] = {
"engine->evaluate(\"true\") <=> QScriptValue(engine, \"Infinity\")",
"engine->evaluate(\"true\") <=> QScriptValue(engine, QString(\"123\"))",
"engine->evaluate(\"true\") <=> QScriptValue(engine, QString(\"1.23\"))",
+ "engine->evaluate(\"true\") <=> engine->evaluate(\"new Number(123)\")",
"engine->evaluate(\"true\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"engine->evaluate(\"true\") <=> engine->evaluate(\"122\")",
"engine->evaluate(\"true\") <=> engine->evaluate(\"124\")",
@@ -5843,6 +6264,8 @@ static QString lessThan_array [] = {
"engine->evaluate(\"false\") <=> QScriptValue(engine, \"Infinity\")",
"engine->evaluate(\"false\") <=> QScriptValue(engine, QString(\"123\"))",
"engine->evaluate(\"false\") <=> QScriptValue(engine, QString(\"1.23\"))",
+ "engine->evaluate(\"false\") <=> engine->evaluate(\"new Boolean(true)\")",
+ "engine->evaluate(\"false\") <=> engine->evaluate(\"new Number(123)\")",
"engine->evaluate(\"false\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"engine->evaluate(\"false\") <=> engine->evaluate(\"true\")",
"engine->evaluate(\"false\") <=> engine->evaluate(\"122\")",
@@ -5880,6 +6303,7 @@ static QString lessThan_array [] = {
"engine->evaluate(\"122\") <=> QScriptValue(engine, qInf())",
"engine->evaluate(\"122\") <=> QScriptValue(engine, \"Infinity\")",
"engine->evaluate(\"122\") <=> QScriptValue(engine, QString(\"123\"))",
+ "engine->evaluate(\"122\") <=> engine->evaluate(\"new Number(123)\")",
"engine->evaluate(\"122\") <=> engine->evaluate(\"124\")",
"engine->evaluate(\"122\") <=> engine->evaluate(\"123.0\")",
"engine->evaluate(\"122\") <=> engine->evaluate(\"0x43211234\")",
@@ -5943,6 +6367,8 @@ static QString lessThan_array [] = {
"engine->evaluate(\"0\") <=> QScriptValue(engine, \"Infinity\")",
"engine->evaluate(\"0\") <=> QScriptValue(engine, QString(\"123\"))",
"engine->evaluate(\"0\") <=> QScriptValue(engine, QString(\"1.23\"))",
+ "engine->evaluate(\"0\") <=> engine->evaluate(\"new Boolean(true)\")",
+ "engine->evaluate(\"0\") <=> engine->evaluate(\"new Number(123)\")",
"engine->evaluate(\"0\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"engine->evaluate(\"0\") <=> engine->evaluate(\"true\")",
"engine->evaluate(\"0\") <=> engine->evaluate(\"122\")",
@@ -5992,6 +6418,8 @@ static QString lessThan_array [] = {
"engine->evaluate(\"0.0\") <=> QScriptValue(engine, \"Infinity\")",
"engine->evaluate(\"0.0\") <=> QScriptValue(engine, QString(\"123\"))",
"engine->evaluate(\"0.0\") <=> QScriptValue(engine, QString(\"1.23\"))",
+ "engine->evaluate(\"0.0\") <=> engine->evaluate(\"new Boolean(true)\")",
+ "engine->evaluate(\"0.0\") <=> engine->evaluate(\"new Number(123)\")",
"engine->evaluate(\"0.0\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"engine->evaluate(\"0.0\") <=> engine->evaluate(\"true\")",
"engine->evaluate(\"0.0\") <=> engine->evaluate(\"122\")",
@@ -6061,6 +6489,8 @@ static QString lessThan_array [] = {
"engine->evaluate(\"6.37e-8\") <=> QScriptValue(engine, \"Infinity\")",
"engine->evaluate(\"6.37e-8\") <=> QScriptValue(engine, QString(\"123\"))",
"engine->evaluate(\"6.37e-8\") <=> QScriptValue(engine, QString(\"1.23\"))",
+ "engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"new Boolean(true)\")",
+ "engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"new Number(123)\")",
"engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"true\")",
"engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"122\")",
@@ -6133,6 +6563,9 @@ static QString lessThan_array [] = {
"engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"[]\")",
"engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"Array.prototype\")",
"engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"new Array()\")",
+ "engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"new Boolean(true)\")",
+ "engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"new Boolean(false)\")",
+ "engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"new Number(123)\")",
"engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"null\")",
"engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"true\")",
@@ -6252,6 +6685,9 @@ static QString lessThan_array [] = {
"engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"[]\")",
"engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"Array.prototype\")",
"engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"new Array()\")",
+ "engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"new Boolean(true)\")",
+ "engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"new Boolean(false)\")",
+ "engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"new Number(123)\")",
"engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"null\")",
"engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"true\")",
@@ -6348,6 +6784,10 @@ static QString lessThan_array [] = {
"engine->evaluate(\"''\") <=> engine->evaluate(\"/foo/\")",
"engine->evaluate(\"''\") <=> engine->evaluate(\"new Object()\")",
"engine->evaluate(\"''\") <=> engine->evaluate(\"new Error()\")",
+ "engine->evaluate(\"''\") <=> engine->evaluate(\"new Boolean(true)\")",
+ "engine->evaluate(\"''\") <=> engine->evaluate(\"new Number(123)\")",
+ "engine->evaluate(\"''\") <=> engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "engine->evaluate(\"''\") <=> engine->evaluate(\"new String('ciao')\")",
"engine->evaluate(\"''\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"engine->evaluate(\"''\") <=> engine->evaluate(\"Undefined\")",
"engine->evaluate(\"''\") <=> engine->evaluate(\"Null\")",
@@ -6369,6 +6809,7 @@ static QString lessThan_array [] = {
"engine->evaluate(\"''\") <=> engine->newObject()",
"engine->evaluate(\"''\") <=> engine->newArray(10)",
"engine->evaluate(\"''\") <=> engine->newQMetaObject(&QObject::staticMetaObject)",
+ "engine->evaluate(\"''\") <=> engine->newRegExp(\"foo\", \"gim\")",
"engine->evaluate(\"''\") <=> engine->newVariant(QVariant(123))",
"engine->evaluate(\"''\") <=> engine->newQObject(engine)",
"engine->evaluate(\"'0'\") <=> QScriptValue(true)",
@@ -6428,6 +6869,9 @@ static QString lessThan_array [] = {
"engine->evaluate(\"'0'\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
"engine->evaluate(\"'0'\") <=> engine->evaluate(\"new Object()\")",
"engine->evaluate(\"'0'\") <=> engine->evaluate(\"new Error()\")",
+ "engine->evaluate(\"'0'\") <=> engine->evaluate(\"new Boolean(true)\")",
+ "engine->evaluate(\"'0'\") <=> engine->evaluate(\"new Number(123)\")",
+ "engine->evaluate(\"'0'\") <=> engine->evaluate(\"new String('ciao')\")",
"engine->evaluate(\"'0'\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"engine->evaluate(\"'0'\") <=> engine->evaluate(\"Undefined\")",
"engine->evaluate(\"'0'\") <=> engine->evaluate(\"Null\")",
@@ -6488,6 +6932,7 @@ static QString lessThan_array [] = {
"engine->evaluate(\"'123'\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
"engine->evaluate(\"'123'\") <=> engine->evaluate(\"new Object()\")",
"engine->evaluate(\"'123'\") <=> engine->evaluate(\"new Error()\")",
+ "engine->evaluate(\"'123'\") <=> engine->evaluate(\"new String('ciao')\")",
"engine->evaluate(\"'123'\") <=> engine->evaluate(\"Undefined\")",
"engine->evaluate(\"'123'\") <=> engine->evaluate(\"Null\")",
"engine->evaluate(\"'123'\") <=> engine->evaluate(\"True\")",
@@ -6549,6 +6994,8 @@ static QString lessThan_array [] = {
"engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
"engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"new Object()\")",
"engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"new Error()\")",
+ "engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"new Number(123)\")",
+ "engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"new String('ciao')\")",
"engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"Undefined\")",
"engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"Null\")",
@@ -6603,6 +7050,8 @@ static QString lessThan_array [] = {
"engine->nullValue() <=> QScriptValue(engine, \"Infinity\")",
"engine->nullValue() <=> QScriptValue(engine, QString(\"123\"))",
"engine->nullValue() <=> QScriptValue(engine, QString(\"1.23\"))",
+ "engine->nullValue() <=> engine->evaluate(\"new Boolean(true)\")",
+ "engine->nullValue() <=> engine->evaluate(\"new Number(123)\")",
"engine->nullValue() <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"engine->nullValue() <=> engine->evaluate(\"true\")",
"engine->nullValue() <=> engine->evaluate(\"122\")",
@@ -6630,6 +7079,7 @@ static QString lessThan_array [] = {
"engine->newObject() <=> engine->evaluate(\"(function() { return 1; })\")",
"engine->newObject() <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
"engine->newObject() <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
+ "engine->newObject() <=> engine->evaluate(\"new String('ciao')\")",
"engine->newObject() <=> engine->evaluate(\"'ciao'\")",
"engine->newObject() <=> engine->newQMetaObject(&QObject::staticMetaObject)",
"engine->newArray() <=> QScriptValue(true)",
@@ -6696,6 +7146,10 @@ static QString lessThan_array [] = {
"engine->newArray() <=> engine->evaluate(\"/foo/\")",
"engine->newArray() <=> engine->evaluate(\"new Object()\")",
"engine->newArray() <=> engine->evaluate(\"new Error()\")",
+ "engine->newArray() <=> engine->evaluate(\"new Boolean(true)\")",
+ "engine->newArray() <=> engine->evaluate(\"new Number(123)\")",
+ "engine->newArray() <=> engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "engine->newArray() <=> engine->evaluate(\"new String('ciao')\")",
"engine->newArray() <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"engine->newArray() <=> engine->evaluate(\"Undefined\")",
"engine->newArray() <=> engine->evaluate(\"Null\")",
@@ -6717,6 +7171,7 @@ static QString lessThan_array [] = {
"engine->newArray() <=> engine->newObject()",
"engine->newArray() <=> engine->newArray(10)",
"engine->newArray() <=> engine->newQMetaObject(&QObject::staticMetaObject)",
+ "engine->newArray() <=> engine->newRegExp(\"foo\", \"gim\")",
"engine->newArray() <=> engine->newVariant(QVariant(123))",
"engine->newArray() <=> engine->newQObject(engine)",
"engine->newArray(10) <=> QScriptValue(\"NaN\")",
@@ -6756,6 +7211,8 @@ static QString lessThan_array [] = {
"engine->newArray(10) <=> engine->evaluate(\"/foo/\")",
"engine->newArray(10) <=> engine->evaluate(\"new Object()\")",
"engine->newArray(10) <=> engine->evaluate(\"new Error()\")",
+ "engine->newArray(10) <=> engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "engine->newArray(10) <=> engine->evaluate(\"new String('ciao')\")",
"engine->newArray(10) <=> engine->evaluate(\"Undefined\")",
"engine->newArray(10) <=> engine->evaluate(\"Null\")",
"engine->newArray(10) <=> engine->evaluate(\"True\")",
@@ -6766,6 +7223,7 @@ static QString lessThan_array [] = {
"engine->newArray(10) <=> engine->evaluate(\"'12.4'\")",
"engine->newArray(10) <=> engine->newObject()",
"engine->newArray(10) <=> engine->newQMetaObject(&QObject::staticMetaObject)",
+ "engine->newArray(10) <=> engine->newRegExp(\"foo\", \"gim\")",
"engine->newArray(10) <=> engine->newQObject(engine)",
"engine->newQMetaObject(&QObject::staticMetaObject) <=> QScriptValue(\"ciao\")",
"engine->newQMetaObject(&QObject::staticMetaObject) <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
@@ -6781,7 +7239,53 @@ static QString lessThan_array [] = {
"engine->newQMetaObject(&QObject::staticMetaObject) <=> engine->evaluate(\"(function() { return 1; })\")",
"engine->newQMetaObject(&QObject::staticMetaObject) <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
"engine->newQMetaObject(&QObject::staticMetaObject) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
+ "engine->newQMetaObject(&QObject::staticMetaObject) <=> engine->evaluate(\"new String('ciao')\")",
"engine->newQMetaObject(&QObject::staticMetaObject) <=> engine->evaluate(\"'ciao'\")",
+ "engine->newRegExp(\"foo\", \"gim\") <=> QScriptValue(\"NaN\")",
+ "engine->newRegExp(\"foo\", \"gim\") <=> QScriptValue(\"Infinity\")",
+ "engine->newRegExp(\"foo\", \"gim\") <=> QScriptValue(\"ciao\")",
+ "engine->newRegExp(\"foo\", \"gim\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))",
+ "engine->newRegExp(\"foo\", \"gim\") <=> QScriptValue(QString(\"0\"))",
+ "engine->newRegExp(\"foo\", \"gim\") <=> QScriptValue(QString(\"123\"))",
+ "engine->newRegExp(\"foo\", \"gim\") <=> QScriptValue(QString(\"12.4\"))",
+ "engine->newRegExp(\"foo\", \"gim\") <=> QScriptValue(0, \"NaN\")",
+ "engine->newRegExp(\"foo\", \"gim\") <=> QScriptValue(0, \"Infinity\")",
+ "engine->newRegExp(\"foo\", \"gim\") <=> QScriptValue(0, \"ciao\")",
+ "engine->newRegExp(\"foo\", \"gim\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))",
+ "engine->newRegExp(\"foo\", \"gim\") <=> QScriptValue(0, QString(\"0\"))",
+ "engine->newRegExp(\"foo\", \"gim\") <=> QScriptValue(0, QString(\"123\"))",
+ "engine->newRegExp(\"foo\", \"gim\") <=> QScriptValue(0, QString(\"12.3\"))",
+ "engine->newRegExp(\"foo\", \"gim\") <=> QScriptValue(engine, \"NaN\")",
+ "engine->newRegExp(\"foo\", \"gim\") <=> QScriptValue(engine, \"Infinity\")",
+ "engine->newRegExp(\"foo\", \"gim\") <=> QScriptValue(engine, \"ciao\")",
+ "engine->newRegExp(\"foo\", \"gim\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
+ "engine->newRegExp(\"foo\", \"gim\") <=> QScriptValue(engine, QString(\"0\"))",
+ "engine->newRegExp(\"foo\", \"gim\") <=> QScriptValue(engine, QString(\"123\"))",
+ "engine->newRegExp(\"foo\", \"gim\") <=> QScriptValue(engine, QString(\"1.23\"))",
+ "engine->newRegExp(\"foo\", \"gim\") <=> engine->evaluate(\"Object.prototype\")",
+ "engine->newRegExp(\"foo\", \"gim\") <=> engine->evaluate(\"Function.prototype\")",
+ "engine->newRegExp(\"foo\", \"gim\") <=> engine->evaluate(\"Error.prototype\")",
+ "engine->newRegExp(\"foo\", \"gim\") <=> engine->evaluate(\"Object\")",
+ "engine->newRegExp(\"foo\", \"gim\") <=> engine->evaluate(\"Array\")",
+ "engine->newRegExp(\"foo\", \"gim\") <=> engine->evaluate(\"Number\")",
+ "engine->newRegExp(\"foo\", \"gim\") <=> engine->evaluate(\"Function\")",
+ "engine->newRegExp(\"foo\", \"gim\") <=> engine->evaluate(\"(function() { return 1; })\")",
+ "engine->newRegExp(\"foo\", \"gim\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
+ "engine->newRegExp(\"foo\", \"gim\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
+ "engine->newRegExp(\"foo\", \"gim\") <=> engine->evaluate(\"new Object()\")",
+ "engine->newRegExp(\"foo\", \"gim\") <=> engine->evaluate(\"new Error()\")",
+ "engine->newRegExp(\"foo\", \"gim\") <=> engine->evaluate(\"new String('ciao')\")",
+ "engine->newRegExp(\"foo\", \"gim\") <=> engine->evaluate(\"Undefined\")",
+ "engine->newRegExp(\"foo\", \"gim\") <=> engine->evaluate(\"Null\")",
+ "engine->newRegExp(\"foo\", \"gim\") <=> engine->evaluate(\"True\")",
+ "engine->newRegExp(\"foo\", \"gim\") <=> engine->evaluate(\"False\")",
+ "engine->newRegExp(\"foo\", \"gim\") <=> engine->evaluate(\"'ciao'\")",
+ "engine->newRegExp(\"foo\", \"gim\") <=> engine->evaluate(\"'0'\")",
+ "engine->newRegExp(\"foo\", \"gim\") <=> engine->evaluate(\"'123'\")",
+ "engine->newRegExp(\"foo\", \"gim\") <=> engine->evaluate(\"'12.4'\")",
+ "engine->newRegExp(\"foo\", \"gim\") <=> engine->newObject()",
+ "engine->newRegExp(\"foo\", \"gim\") <=> engine->newQMetaObject(&QObject::staticMetaObject)",
+ "engine->newRegExp(\"foo\", \"gim\") <=> engine->newQObject(engine)",
"engine->newVariant(QVariant(123)) <=> QScriptValue(uint(124))",
"engine->newVariant(QVariant(123)) <=> QScriptValue(0x43211234)",
"engine->newVariant(QVariant(123)) <=> QScriptValue(0x10000)",
@@ -6841,6 +7345,8 @@ static QString lessThan_array [] = {
"engine->newVariant(QVariant(false)) <=> QScriptValue(engine, \"Infinity\")",
"engine->newVariant(QVariant(false)) <=> QScriptValue(engine, QString(\"123\"))",
"engine->newVariant(QVariant(false)) <=> QScriptValue(engine, QString(\"1.23\"))",
+ "engine->newVariant(QVariant(false)) <=> engine->evaluate(\"new Boolean(true)\")",
+ "engine->newVariant(QVariant(false)) <=> engine->evaluate(\"new Number(123)\")",
"engine->newVariant(QVariant(false)) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"engine->newVariant(QVariant(false)) <=> engine->evaluate(\"true\")",
"engine->newVariant(QVariant(false)) <=> engine->evaluate(\"122\")",
@@ -6890,6 +7396,8 @@ static QString lessThan_array [] = {
"engine->newQObject(0) <=> QScriptValue(engine, \"Infinity\")",
"engine->newQObject(0) <=> QScriptValue(engine, QString(\"123\"))",
"engine->newQObject(0) <=> QScriptValue(engine, QString(\"1.23\"))",
+ "engine->newQObject(0) <=> engine->evaluate(\"new Boolean(true)\")",
+ "engine->newQObject(0) <=> engine->evaluate(\"new Number(123)\")",
"engine->newQObject(0) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"engine->newQObject(0) <=> engine->evaluate(\"true\")",
"engine->newQObject(0) <=> engine->evaluate(\"122\")",
@@ -6919,20 +7427,21 @@ static QString lessThan_array [] = {
"engine->newQObject(engine) <=> engine->evaluate(\"(function() { return 'ciao'; })\")",
"engine->newQObject(engine) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")",
"engine->newQObject(engine) <=> engine->evaluate(\"new Object()\")",
+ "engine->newQObject(engine) <=> engine->evaluate(\"new String('ciao')\")",
"engine->newQObject(engine) <=> engine->evaluate(\"Undefined\")",
"engine->newQObject(engine) <=> engine->evaluate(\"Null\")",
"engine->newQObject(engine) <=> engine->evaluate(\"True\")",
"engine->newQObject(engine) <=> engine->evaluate(\"False\")",
"engine->newQObject(engine) <=> engine->evaluate(\"'ciao'\")",
"engine->newQObject(engine) <=> engine->newObject()",
- "engine->newQObject(engine) <=> engine->newQMetaObject(&QObject::staticMetaObject)",};
+ "engine->newQObject(engine) <=> engine->newQMetaObject(&QObject::staticMetaObject)"};
void tst_QScriptValueGenerated::lessThan_makeData(const char *expr)
{
static QSet<QString> equals;
if (equals.isEmpty()) {
- equals.reserve(5063);
- for (unsigned i = 0; i < 5063; ++i)
+ equals.reserve(5476);
+ for (unsigned i = 0; i < 5476; ++i)
equals.insert(lessThan_array[i]);
}
QHash<QString, QScriptValue>::const_iterator it;
@@ -6959,7 +7468,7 @@ void tst_QScriptValueGenerated::instanceOf_initData()
initScriptValues();
}
-static QString instanceOf_array [] = {
+static QString instanceOf_array[] = {
"engine->evaluate(\"[]\") <=> engine->evaluate(\"Object\")",
"engine->evaluate(\"[]\") <=> engine->evaluate(\"Array\")",
"engine->evaluate(\"Date.prototype\") <=> engine->evaluate(\"Object\")",
@@ -6985,6 +7494,12 @@ static QString instanceOf_array [] = {
"engine->evaluate(\"new Array()\") <=> engine->evaluate(\"Object\")",
"engine->evaluate(\"new Array()\") <=> engine->evaluate(\"Array\")",
"engine->evaluate(\"new Error()\") <=> engine->evaluate(\"Object\")",
+ "engine->evaluate(\"new Boolean(true)\") <=> engine->evaluate(\"Object\")",
+ "engine->evaluate(\"new Boolean(false)\") <=> engine->evaluate(\"Object\")",
+ "engine->evaluate(\"new Number(123)\") <=> engine->evaluate(\"Object\")",
+ "engine->evaluate(\"new Number(123)\") <=> engine->evaluate(\"Number\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\") <=> engine->evaluate(\"Object\")",
+ "engine->evaluate(\"new String('ciao')\") <=> engine->evaluate(\"Object\")",
"engine->evaluate(\"Undefined\") <=> engine->evaluate(\"Object\")",
"engine->evaluate(\"Null\") <=> engine->evaluate(\"Object\")",
"engine->evaluate(\"True\") <=> engine->evaluate(\"Object\")",
@@ -6996,17 +7511,18 @@ static QString instanceOf_array [] = {
"engine->newArray(10) <=> engine->evaluate(\"Array\")",
"engine->newDate(QDateTime()) <=> engine->evaluate(\"Object\")",
"engine->newQMetaObject(&QObject::staticMetaObject) <=> engine->evaluate(\"Object\")",
+ "engine->newRegExp(\"foo\", \"gim\") <=> engine->evaluate(\"Object\")",
"engine->newVariant(QVariant()) <=> engine->evaluate(\"Object\")",
"engine->newVariant(QVariant(123)) <=> engine->evaluate(\"Object\")",
"engine->newVariant(QVariant(false)) <=> engine->evaluate(\"Object\")",
- "engine->newQObject(engine) <=> engine->evaluate(\"Object\")",};
+ "engine->newQObject(engine) <=> engine->evaluate(\"Object\")"};
void tst_QScriptValueGenerated::instanceOf_makeData(const char *expr)
{
static QSet<QString> equals;
if (equals.isEmpty()) {
- equals.reserve(40);
- for (unsigned i = 0; i < 40; ++i)
+ equals.reserve(47);
+ for (unsigned i = 0; i < 47; ++i)
equals.insert(instanceOf_array[i]);
}
QHash<QString, QScriptValue>::const_iterator it;
diff --git a/tests/auto/qscriptvaluegenerated/tst_qscriptvalue_generated_init.cpp b/tests/auto/qscriptvaluegenerated/tst_qscriptvalue_generated_init.cpp
index 8c8a7d1..ae40684 100644
--- a/tests/auto/qscriptvaluegenerated/tst_qscriptvalue_generated_init.cpp
+++ b/tests/auto/qscriptvaluegenerated/tst_qscriptvalue_generated_init.cpp
@@ -49,7 +49,7 @@
void tst_QScriptValueGenerated::initScriptValues()
{
m_values.clear();
- if (engine)
+ if (engine)
delete engine;
engine = new QScriptEngine;
DEFINE_TEST_VALUE(QScriptValue());
@@ -155,6 +155,11 @@ void tst_QScriptValueGenerated::initScriptValues()
DEFINE_TEST_VALUE(engine->evaluate("new Object()"));
DEFINE_TEST_VALUE(engine->evaluate("new Array()"));
DEFINE_TEST_VALUE(engine->evaluate("new Error()"));
+ DEFINE_TEST_VALUE(engine->evaluate("new Boolean(true)"));
+ DEFINE_TEST_VALUE(engine->evaluate("new Boolean(false)"));
+ DEFINE_TEST_VALUE(engine->evaluate("new Number(123)"));
+ DEFINE_TEST_VALUE(engine->evaluate("new RegExp('foo', 'gim')"));
+ DEFINE_TEST_VALUE(engine->evaluate("new String('ciao')"));
DEFINE_TEST_VALUE(engine->evaluate("a = new Object(); a.foo = 22; a.foo"));
DEFINE_TEST_VALUE(engine->evaluate("Undefined"));
DEFINE_TEST_VALUE(engine->evaluate("Null"));
@@ -189,6 +194,7 @@ void tst_QScriptValueGenerated::initScriptValues()
DEFINE_TEST_VALUE(engine->newArray(10));
DEFINE_TEST_VALUE(engine->newDate(QDateTime()));
DEFINE_TEST_VALUE(engine->newQMetaObject(&QObject::staticMetaObject));
+ DEFINE_TEST_VALUE(engine->newRegExp("foo", "gim"));
DEFINE_TEST_VALUE(engine->newVariant(QVariant()));
DEFINE_TEST_VALUE(engine->newVariant(QVariant(123)));
DEFINE_TEST_VALUE(engine->newVariant(QVariant(false)));
diff --git a/tests/auto/qscriptvaluegenerated/tst_qscriptvalue_generated_isXXX.cpp b/tests/auto/qscriptvaluegenerated/tst_qscriptvalue_generated_isXXX.cpp
index 71a5c1d..26b8c62 100644
--- a/tests/auto/qscriptvaluegenerated/tst_qscriptvalue_generated_isXXX.cpp
+++ b/tests/auto/qscriptvaluegenerated/tst_qscriptvalue_generated_isXXX.cpp
@@ -52,7 +52,7 @@ void tst_QScriptValueGenerated::isValid_initData()
initScriptValues();
}
-static QString isValid_array [] = {
+static QString isValid_array[] = {
"QScriptValue(QScriptValue::UndefinedValue)",
"QScriptValue(QScriptValue::NullValue)",
"QScriptValue(true)",
@@ -155,6 +155,11 @@ static QString isValid_array [] = {
"engine->evaluate(\"new Object()\")",
"engine->evaluate(\"new Array()\")",
"engine->evaluate(\"new Error()\")",
+ "engine->evaluate(\"new Boolean(true)\")",
+ "engine->evaluate(\"new Boolean(false)\")",
+ "engine->evaluate(\"new Number(123)\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "engine->evaluate(\"new String('ciao')\")",
"engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"engine->evaluate(\"Undefined\")",
"engine->evaluate(\"Null\")",
@@ -189,18 +194,20 @@ static QString isValid_array [] = {
"engine->newArray(10)",
"engine->newDate(QDateTime())",
"engine->newQMetaObject(&QObject::staticMetaObject)",
+ "engine->newRegExp(\"foo\", \"gim\")",
"engine->newVariant(QVariant())",
"engine->newVariant(QVariant(123))",
"engine->newVariant(QVariant(false))",
"engine->newQObject(0)",
- "engine->newQObject(engine)",};
+ "engine->newQObject(engine)"
+};
void tst_QScriptValueGenerated::isValid_makeData(const char* expr)
{
static QSet<QString> isValid;
if (isValid.isEmpty()) {
- isValid.reserve(141);
- for (unsigned i = 0; i < 141; ++i)
+ isValid.reserve(147);
+ for (unsigned i = 0; i < 147; ++i)
isValid.insert(isValid_array[i]);
}
newRow(expr) << isValid.contains(expr);
@@ -222,7 +229,7 @@ void tst_QScriptValueGenerated::isBool_initData()
initScriptValues();
}
-static QString isBool_array [] = {
+static QString isBool_array[] = {
"QScriptValue(true)",
"QScriptValue(false)",
"QScriptValue(0, true)",
@@ -230,7 +237,8 @@ static QString isBool_array [] = {
"QScriptValue(engine, true)",
"QScriptValue(engine, false)",
"engine->evaluate(\"true\")",
- "engine->evaluate(\"false\")",};
+ "engine->evaluate(\"false\")"
+};
void tst_QScriptValueGenerated::isBool_makeData(const char* expr)
{
@@ -259,7 +267,7 @@ void tst_QScriptValueGenerated::isBoolean_initData()
initScriptValues();
}
-static QString isBoolean_array [] = {
+static QString isBoolean_array[] = {
"QScriptValue(true)",
"QScriptValue(false)",
"QScriptValue(0, true)",
@@ -267,7 +275,8 @@ static QString isBoolean_array [] = {
"QScriptValue(engine, true)",
"QScriptValue(engine, false)",
"engine->evaluate(\"true\")",
- "engine->evaluate(\"false\")",};
+ "engine->evaluate(\"false\")"
+};
void tst_QScriptValueGenerated::isBoolean_makeData(const char* expr)
{
@@ -296,7 +305,7 @@ void tst_QScriptValueGenerated::isNumber_initData()
initScriptValues();
}
-static QString isNumber_array [] = {
+static QString isNumber_array[] = {
"QScriptValue(int(122))",
"QScriptValue(uint(124))",
"QScriptValue(0)",
@@ -352,7 +361,8 @@ static QString isNumber_array [] = {
"engine->evaluate(\"0x10001\")",
"engine->evaluate(\"NaN\")",
"engine->evaluate(\"Infinity\")",
- "engine->evaluate(\"-Infinity\")",};
+ "engine->evaluate(\"-Infinity\")"
+};
void tst_QScriptValueGenerated::isNumber_makeData(const char* expr)
{
@@ -381,7 +391,7 @@ void tst_QScriptValueGenerated::isFunction_initData()
initScriptValues();
}
-static QString isFunction_array [] = {
+static QString isFunction_array[] = {
"engine->evaluate(\"Function.prototype\")",
"engine->evaluate(\"Object\")",
"engine->evaluate(\"Array\")",
@@ -391,14 +401,17 @@ static QString isFunction_array [] = {
"engine->evaluate(\"(function() { return 'ciao'; })\")",
"engine->evaluate(\"(function() { throw new Error('foo'); })\")",
"engine->evaluate(\"/foo/\")",
- "engine->newQMetaObject(&QObject::staticMetaObject)",};
+ "engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "engine->newQMetaObject(&QObject::staticMetaObject)",
+ "engine->newRegExp(\"foo\", \"gim\")"
+};
void tst_QScriptValueGenerated::isFunction_makeData(const char* expr)
{
static QSet<QString> isFunction;
if (isFunction.isEmpty()) {
- isFunction.reserve(10);
- for (unsigned i = 0; i < 10; ++i)
+ isFunction.reserve(12);
+ for (unsigned i = 0; i < 12; ++i)
isFunction.insert(isFunction_array[i]);
}
newRow(expr) << isFunction.contains(expr);
@@ -420,13 +433,14 @@ void tst_QScriptValueGenerated::isNull_initData()
initScriptValues();
}
-static QString isNull_array [] = {
+static QString isNull_array[] = {
"QScriptValue(QScriptValue::NullValue)",
"QScriptValue(0, QScriptValue::NullValue)",
"QScriptValue(engine, QScriptValue::NullValue)",
"engine->evaluate(\"null\")",
"engine->nullValue()",
- "engine->newQObject(0)",};
+ "engine->newQObject(0)"
+};
void tst_QScriptValueGenerated::isNull_makeData(const char* expr)
{
@@ -455,7 +469,7 @@ void tst_QScriptValueGenerated::isString_initData()
initScriptValues();
}
-static QString isString_array [] = {
+static QString isString_array[] = {
"QScriptValue(\"NaN\")",
"QScriptValue(\"Infinity\")",
"QScriptValue(\"-Infinity\")",
@@ -490,7 +504,8 @@ static QString isString_array [] = {
"engine->evaluate(\"''\")",
"engine->evaluate(\"'0'\")",
"engine->evaluate(\"'123'\")",
- "engine->evaluate(\"'12.4'\")",};
+ "engine->evaluate(\"'12.4'\")"
+};
void tst_QScriptValueGenerated::isString_makeData(const char* expr)
{
@@ -519,13 +534,14 @@ void tst_QScriptValueGenerated::isUndefined_initData()
initScriptValues();
}
-static QString isUndefined_array [] = {
+static QString isUndefined_array[] = {
"QScriptValue(QScriptValue::UndefinedValue)",
"QScriptValue(0, QScriptValue::UndefinedValue)",
"QScriptValue(engine, QScriptValue::UndefinedValue)",
"engine->evaluate(\"{}\")",
"engine->evaluate(\"undefined\")",
- "engine->undefinedValue()",};
+ "engine->undefinedValue()"
+};
void tst_QScriptValueGenerated::isUndefined_makeData(const char* expr)
{
@@ -554,10 +570,11 @@ void tst_QScriptValueGenerated::isVariant_initData()
initScriptValues();
}
-static QString isVariant_array [] = {
+static QString isVariant_array[] = {
"engine->newVariant(QVariant())",
"engine->newVariant(QVariant(123))",
- "engine->newVariant(QVariant(false))",};
+ "engine->newVariant(QVariant(false))"
+};
void tst_QScriptValueGenerated::isVariant_makeData(const char* expr)
{
@@ -586,8 +603,9 @@ void tst_QScriptValueGenerated::isQObject_initData()
initScriptValues();
}
-static QString isQObject_array [] = {
- "engine->newQObject(engine)",};
+static QString isQObject_array[] = {
+ "engine->newQObject(engine)"
+};
void tst_QScriptValueGenerated::isQObject_makeData(const char* expr)
{
@@ -616,8 +634,9 @@ void tst_QScriptValueGenerated::isQMetaObject_initData()
initScriptValues();
}
-static QString isQMetaObject_array [] = {
- "engine->newQMetaObject(&QObject::staticMetaObject)",};
+static QString isQMetaObject_array[] = {
+ "engine->newQMetaObject(&QObject::staticMetaObject)"
+};
void tst_QScriptValueGenerated::isQMetaObject_makeData(const char* expr)
{
@@ -646,7 +665,7 @@ void tst_QScriptValueGenerated::isObject_initData()
initScriptValues();
}
-static QString isObject_array [] = {
+static QString isObject_array[] = {
"engine->evaluate(\"[]\")",
"engine->evaluate(\"Object.prototype\")",
"engine->evaluate(\"Date.prototype\")",
@@ -664,6 +683,11 @@ static QString isObject_array [] = {
"engine->evaluate(\"new Object()\")",
"engine->evaluate(\"new Array()\")",
"engine->evaluate(\"new Error()\")",
+ "engine->evaluate(\"new Boolean(true)\")",
+ "engine->evaluate(\"new Boolean(false)\")",
+ "engine->evaluate(\"new Number(123)\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "engine->evaluate(\"new String('ciao')\")",
"engine->evaluate(\"Undefined\")",
"engine->evaluate(\"Null\")",
"engine->evaluate(\"True\")",
@@ -673,17 +697,19 @@ static QString isObject_array [] = {
"engine->newArray(10)",
"engine->newDate(QDateTime())",
"engine->newQMetaObject(&QObject::staticMetaObject)",
+ "engine->newRegExp(\"foo\", \"gim\")",
"engine->newVariant(QVariant())",
"engine->newVariant(QVariant(123))",
"engine->newVariant(QVariant(false))",
- "engine->newQObject(engine)",};
+ "engine->newQObject(engine)"
+};
void tst_QScriptValueGenerated::isObject_makeData(const char* expr)
{
static QSet<QString> isObject;
if (isObject.isEmpty()) {
- isObject.reserve(30);
- for (unsigned i = 0; i < 30; ++i)
+ isObject.reserve(36);
+ for (unsigned i = 0; i < 36; ++i)
isObject.insert(isObject_array[i]);
}
newRow(expr) << isObject.contains(expr);
@@ -705,9 +731,10 @@ void tst_QScriptValueGenerated::isDate_initData()
initScriptValues();
}
-static QString isDate_array [] = {
+static QString isDate_array[] = {
"engine->evaluate(\"Date.prototype\")",
- "engine->newDate(QDateTime())",};
+ "engine->newDate(QDateTime())"
+};
void tst_QScriptValueGenerated::isDate_makeData(const char* expr)
{
@@ -736,15 +763,18 @@ void tst_QScriptValueGenerated::isRegExp_initData()
initScriptValues();
}
-static QString isRegExp_array [] = {
- "engine->evaluate(\"/foo/\")",};
+static QString isRegExp_array[] = {
+ "engine->evaluate(\"/foo/\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "engine->newRegExp(\"foo\", \"gim\")"
+};
void tst_QScriptValueGenerated::isRegExp_makeData(const char* expr)
{
static QSet<QString> isRegExp;
if (isRegExp.isEmpty()) {
- isRegExp.reserve(1);
- for (unsigned i = 0; i < 1; ++i)
+ isRegExp.reserve(3);
+ for (unsigned i = 0; i < 3; ++i)
isRegExp.insert(isRegExp_array[i]);
}
newRow(expr) << isRegExp.contains(expr);
@@ -766,12 +796,13 @@ void tst_QScriptValueGenerated::isArray_initData()
initScriptValues();
}
-static QString isArray_array [] = {
+static QString isArray_array[] = {
"engine->evaluate(\"[]\")",
"engine->evaluate(\"Array.prototype\")",
"engine->evaluate(\"new Array()\")",
"engine->newArray()",
- "engine->newArray(10)",};
+ "engine->newArray(10)"
+};
void tst_QScriptValueGenerated::isArray_makeData(const char* expr)
{
@@ -800,13 +831,14 @@ void tst_QScriptValueGenerated::isError_initData()
initScriptValues();
}
-static QString isError_array [] = {
+static QString isError_array[] = {
"engine->evaluate(\"Error.prototype\")",
"engine->evaluate(\"new Error()\")",
"engine->evaluate(\"Undefined\")",
"engine->evaluate(\"Null\")",
"engine->evaluate(\"True\")",
- "engine->evaluate(\"False\")",};
+ "engine->evaluate(\"False\")"
+};
void tst_QScriptValueGenerated::isError_makeData(const char* expr)
{
diff --git a/tests/auto/qscriptvaluegenerated/tst_qscriptvalue_generated_toXXX.cpp b/tests/auto/qscriptvaluegenerated/tst_qscriptvalue_generated_toXXX.cpp
index cb75ded..e663645 100644
--- a/tests/auto/qscriptvaluegenerated/tst_qscriptvalue_generated_toXXX.cpp
+++ b/tests/auto/qscriptvaluegenerated/tst_qscriptvalue_generated_toXXX.cpp
@@ -53,7 +53,7 @@ void tst_QScriptValueGenerated::toString_initData()
initScriptValues();
}
-static QString toString_tagArray [] = {
+static QString toString_tagArray[] = {
"QScriptValue()",
"QScriptValue(QScriptValue::UndefinedValue)",
"QScriptValue(QScriptValue::NullValue)",
@@ -157,6 +157,11 @@ static QString toString_tagArray [] = {
"engine->evaluate(\"new Object()\")",
"engine->evaluate(\"new Array()\")",
"engine->evaluate(\"new Error()\")",
+ "engine->evaluate(\"new Boolean(true)\")",
+ "engine->evaluate(\"new Boolean(false)\")",
+ "engine->evaluate(\"new Number(123)\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "engine->evaluate(\"new String('ciao')\")",
"engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"engine->evaluate(\"Undefined\")",
"engine->evaluate(\"Null\")",
@@ -191,91 +196,95 @@ static QString toString_tagArray [] = {
"engine->newArray(10)",
"engine->newDate(QDateTime())",
"engine->newQMetaObject(&QObject::staticMetaObject)",
+ "engine->newRegExp(\"foo\", \"gim\")",
"engine->newVariant(QVariant())",
"engine->newVariant(QVariant(123))",
"engine->newVariant(QVariant(false))",
"engine->newQObject(0)",
- "engine->newQObject(engine)",};
+ "engine->newQObject(engine)"};
-static QString toString_valueArray [] = {
- "", "undefined",
- "null", "true",
- "false", "122",
- "124", "0",
- "0", "123",
- "6.37e-8", "-6.37e-8",
- "1126240820", "65536",
- "65537", "NaN",
- "NaN", "Infinity",
- "-Infinity", "NaN",
- "Infinity", "-Infinity",
- "ciao", "ciao",
- "", "",
- "0", "123",
- "12.4", "undefined",
- "null", "true",
- "false", "122",
- "124", "0",
- "0", "123",
- "6.37e-8", "-6.37e-8",
- "1126240820", "65536",
- "65537", "NaN",
- "NaN", "Infinity",
- "-Infinity", "NaN",
- "Infinity", "-Infinity",
- "ciao", "ciao",
- "", "",
- "0", "123",
- "12.3", "undefined",
- "null", "true",
- "false", "122",
- "124", "0",
- "0", "123",
- "6.37e-8", "-6.37e-8",
- "1126240820", "65536",
- "65537", "NaN",
- "NaN", "Infinity",
- "-Infinity", "NaN",
- "Infinity", "-Infinity",
- "ciao", "ciao",
- "", "",
- "0", "123",
- "1.23", "",
- "undefined", "[object Object]",
- "Invalid Date", "",
- "function () {\n [native code]\n}", "Error: Unknown error",
- "function Object() {\n [native code]\n}", "function Array() {\n [native code]\n}",
- "function Number() {\n [native code]\n}", "function Function() {\n [native code]\n}",
- "function () { return 1; }", "function () { return 'ciao'; }",
- "function () { throw new Error('foo'); }", "/foo/",
- "[object Object]", "",
- "Error: Unknown error", "22",
- "ReferenceError: Can't find variable: Undefined", "ReferenceError: Can't find variable: Null",
- "ReferenceError: Can't find variable: True", "ReferenceError: Can't find variable: False",
- "undefined", "null",
- "true", "false",
- "122", "124",
- "0", "0",
- "123", "6.37e-8",
- "-6.37e-8", "1126240820",
- "65536", "65537",
- "NaN", "Infinity",
- "-Infinity", "ciao",
- "", "0",
- "123", "12.4",
- "null", "undefined",
- "[object Object]", "",
- ",,,,,,,,,", "Invalid Date",
- "[object QMetaObject]", "undefined",
- "123", "false",
- "null", "QScriptEngine(name = \"\")", };
+static QString toString_valueArray[] = {
+ "", "undefined",
+ "null", "true",
+ "false", "122",
+ "124", "0",
+ "0", "123",
+ "6.37e-8", "-6.37e-8",
+ "1126240820", "65536",
+ "65537", "NaN",
+ "NaN", "Infinity",
+ "-Infinity", "NaN",
+ "Infinity", "-Infinity",
+ "ciao", "ciao",
+ "", "",
+ "0", "123",
+ "12.4", "undefined",
+ "null", "true",
+ "false", "122",
+ "124", "0",
+ "0", "123",
+ "6.37e-8", "-6.37e-8",
+ "1126240820", "65536",
+ "65537", "NaN",
+ "NaN", "Infinity",
+ "-Infinity", "NaN",
+ "Infinity", "-Infinity",
+ "ciao", "ciao",
+ "", "",
+ "0", "123",
+ "12.3", "undefined",
+ "null", "true",
+ "false", "122",
+ "124", "0",
+ "0", "123",
+ "6.37e-8", "-6.37e-8",
+ "1126240820", "65536",
+ "65537", "NaN",
+ "NaN", "Infinity",
+ "-Infinity", "NaN",
+ "Infinity", "-Infinity",
+ "ciao", "ciao",
+ "", "",
+ "0", "123",
+ "1.23", "",
+ "undefined", "[object Object]",
+ "Invalid Date", "",
+ "function () {\n [native code]\n}", "Error: Unknown error",
+ "function Object() {\n [native code]\n}", "function Array() {\n [native code]\n}",
+ "function Number() {\n [native code]\n}", "function Function() {\n [native code]\n}",
+ "function () { return 1; }", "function () { return 'ciao'; }",
+ "function () { throw new Error('foo'); }", "/foo/",
+ "[object Object]", "",
+ "Error: Unknown error", "true",
+ "false", "123",
+ "/foo/gim", "ciao",
+ "22", "ReferenceError: Can't find variable: Undefined",
+ "ReferenceError: Can't find variable: Null", "ReferenceError: Can't find variable: True",
+ "ReferenceError: Can't find variable: False", "undefined",
+ "null", "true",
+ "false", "122",
+ "124", "0",
+ "0", "123",
+ "6.37e-8", "-6.37e-8",
+ "1126240820", "65536",
+ "65537", "NaN",
+ "Infinity", "-Infinity",
+ "ciao", "",
+ "0", "123",
+ "12.4", "null",
+ "undefined", "[object Object]",
+ "", ",,,,,,,,,",
+ "Invalid Date", "[object QMetaObject]",
+ "/foo/gim", "undefined",
+ "123", "false",
+ "null", "QScriptEngine(name = \"\")"};
void tst_QScriptValueGenerated::toString_makeData(const char* expr)
{
static QHash<QString, QString> toString;
if (toString.isEmpty()) {
- toString.reserve(142);
- for (unsigned i = 0; i < 142; ++i)
+ toString.reserve(148);
+ for (unsigned i = 0; i < 148; ++i)
toString.insert(toString_tagArray[i], toString_valueArray[i]);
}
newRow(expr) << toString.value(expr);
@@ -297,7 +306,7 @@ void tst_QScriptValueGenerated::toNumber_initData()
initScriptValues();
}
-static QString toNumber_tagArray [] = {
+static QString toNumber_tagArray[] = {
"QScriptValue()",
"QScriptValue(QScriptValue::UndefinedValue)",
"QScriptValue(QScriptValue::NullValue)",
@@ -401,6 +410,11 @@ static QString toNumber_tagArray [] = {
"engine->evaluate(\"new Object()\")",
"engine->evaluate(\"new Array()\")",
"engine->evaluate(\"new Error()\")",
+ "engine->evaluate(\"new Boolean(true)\")",
+ "engine->evaluate(\"new Boolean(false)\")",
+ "engine->evaluate(\"new Number(123)\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "engine->evaluate(\"new String('ciao')\")",
"engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"engine->evaluate(\"Undefined\")",
"engine->evaluate(\"Null\")",
@@ -435,33 +449,34 @@ static QString toNumber_tagArray [] = {
"engine->newArray(10)",
"engine->newDate(QDateTime())",
"engine->newQMetaObject(&QObject::staticMetaObject)",
+ "engine->newRegExp(\"foo\", \"gim\")",
"engine->newVariant(QVariant())",
"engine->newVariant(QVariant(123))",
"engine->newVariant(QVariant(false))",
"engine->newQObject(0)",
- "engine->newQObject(engine)",};
-static qsreal toNumber_valueArray [] = {
- 0, qQNaN(), 0, 1, 0, 122, 124, 0, 0, 123,
- 6.369999999999999e-08, -6.369999999999999e-08, 1126240820, 65536, 65537, qQNaN(), qQNaN(), qInf(), qInf(), qQNaN(),
- qInf(), qInf(), qQNaN(), qQNaN(), 0, 0, 0, 123, 12.4, qQNaN(),
- 0, 1, 0, 122, 124, 0, 0, 123, 6.369999999999999e-08, -6.369999999999999e-08,
- 1126240820, 65536, 65537, qQNaN(), qQNaN(), qInf(), qInf(), qQNaN(), qInf(), qInf(),
- qQNaN(), qQNaN(), 0, 0, 0, 123, 12.3, qQNaN(), 0, 1,
- 0, 122, 124, 0, 0, 123, 6.369999999999999e-08, -6.369999999999999e-08, 1126240820, 65536,
- 65537, qQNaN(), qQNaN(), qInf(), qInf(), qQNaN(), qInf(), qInf(), qQNaN(), qQNaN(),
- 0, 0, 0, 123, 1.23, 0, qQNaN(), qQNaN(), qQNaN(), 0,
- qQNaN(), qQNaN(), qQNaN(), qQNaN(), qQNaN(), qQNaN(), qQNaN(), qQNaN(), qQNaN(), qQNaN(),
- qQNaN(), 0, qQNaN(), 22, qQNaN(), qQNaN(), qQNaN(), qQNaN(), qQNaN(), 0,
- 1, 0, 122, 124, 0, 0, 123, 6.369999999999999e-08, -6.369999999999999e-08, 1126240820,
- 65536, 65537, qQNaN(), qInf(), qInf(), qQNaN(), 0, 0, 123, 12.4,
- 0, qQNaN(), qQNaN(), 0, qQNaN(), qQNaN(), qQNaN(), qQNaN(), 123, 0,
- 0, qQNaN(), };
+ "engine->newQObject(engine)"};
+static qsreal toNumber_valueArray[] = {
+ 0, qQNaN(), 0, 1, 0, 122, 124, 0, 0, 123,
+ 6.369999999999999e-08, -6.369999999999999e-08, 1126240820, 65536, 65537, qQNaN(), qQNaN(), qInf(), qInf(), qQNaN(),
+ qInf(), qInf(), qQNaN(), qQNaN(), 0, 0, 0, 123, 12.4, qQNaN(),
+ 0, 1, 0, 122, 124, 0, 0, 123, 6.369999999999999e-08, -6.369999999999999e-08,
+ 1126240820, 65536, 65537, qQNaN(), qQNaN(), qInf(), qInf(), qQNaN(), qInf(), qInf(),
+ qQNaN(), qQNaN(), 0, 0, 0, 123, 12.3, qQNaN(), 0, 1,
+ 0, 122, 124, 0, 0, 123, 6.369999999999999e-08, -6.369999999999999e-08, 1126240820, 65536,
+ 65537, qQNaN(), qQNaN(), qInf(), qInf(), qQNaN(), qInf(), qInf(), qQNaN(), qQNaN(),
+ 0, 0, 0, 123, 1.23, 0, qQNaN(), qQNaN(), qQNaN(), 0,
+ qQNaN(), qQNaN(), qQNaN(), qQNaN(), qQNaN(), qQNaN(), qQNaN(), qQNaN(), qQNaN(), qQNaN(),
+ qQNaN(), 0, qQNaN(), 1, 0, 123, qQNaN(), qQNaN(), 22, qQNaN(),
+ qQNaN(), qQNaN(), qQNaN(), qQNaN(), 0, 1, 0, 122, 124, 0,
+ 0, 123, 6.369999999999999e-08, -6.369999999999999e-08, 1126240820, 65536, 65537, qQNaN(), qInf(), qInf(),
+ qQNaN(), 0, 0, 123, 12.4, 0, qQNaN(), qQNaN(), 0, qQNaN(),
+ qQNaN(), qQNaN(), qQNaN(), qQNaN(), 123, 0, 0, qQNaN()};
void tst_QScriptValueGenerated::toNumber_makeData(const char* expr)
{
static QHash<QString, qsreal> toNumber;
if (toNumber.isEmpty()) {
- toNumber.reserve(142);
- for (unsigned i = 0; i < 142; ++i)
+ toNumber.reserve(148);
+ for (unsigned i = 0; i < 148; ++i)
toNumber.insert(toNumber_tagArray[i], toNumber_valueArray[i]);
}
newRow(expr) << toNumber.value(expr);
@@ -492,7 +507,7 @@ void tst_QScriptValueGenerated::toBool_initData()
initScriptValues();
}
-static QString toBool_tagArray [] = {
+static QString toBool_tagArray[] = {
"QScriptValue()",
"QScriptValue(QScriptValue::UndefinedValue)",
"QScriptValue(QScriptValue::NullValue)",
@@ -596,6 +611,11 @@ static QString toBool_tagArray [] = {
"engine->evaluate(\"new Object()\")",
"engine->evaluate(\"new Array()\")",
"engine->evaluate(\"new Error()\")",
+ "engine->evaluate(\"new Boolean(true)\")",
+ "engine->evaluate(\"new Boolean(false)\")",
+ "engine->evaluate(\"new Number(123)\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "engine->evaluate(\"new String('ciao')\")",
"engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"engine->evaluate(\"Undefined\")",
"engine->evaluate(\"Null\")",
@@ -630,91 +650,95 @@ static QString toBool_tagArray [] = {
"engine->newArray(10)",
"engine->newDate(QDateTime())",
"engine->newQMetaObject(&QObject::staticMetaObject)",
+ "engine->newRegExp(\"foo\", \"gim\")",
"engine->newVariant(QVariant())",
"engine->newVariant(QVariant(123))",
"engine->newVariant(QVariant(false))",
"engine->newQObject(0)",
- "engine->newQObject(engine)",};
+ "engine->newQObject(engine)"};
-static bool toBool_valueArray [] = {
- false, false,
- false, true,
- false, true,
- true, false,
- false, true,
- true, true,
- true, true,
- true, false,
- false, true,
- true, true,
- true, true,
- true, true,
- false, false,
- true, true,
- true, false,
- false, true,
- false, true,
- true, false,
- false, true,
- true, true,
- true, true,
- true, false,
- false, true,
- true, true,
- true, true,
- true, true,
- false, false,
- true, true,
- true, false,
- false, true,
- false, true,
- true, false,
- false, true,
- true, true,
- true, true,
- true, false,
- false, true,
- true, true,
- true, true,
- true, true,
- false, false,
- true, true,
- true, true,
- false, true,
- true, true,
- true, true,
- true, true,
- true, true,
- true, true,
- true, true,
- true, true,
- true, true,
- true, true,
- true, true,
- false, false,
- true, false,
- true, true,
- false, false,
- true, true,
- true, true,
- true, true,
- false, true,
- true, true,
- false, true,
- true, true,
- false, false,
- true, true,
- true, true,
- true, true,
- true, true,
- false, true, };
+static bool toBool_valueArray[] = {
+ false, false,
+ false, true,
+ false, true,
+ true, false,
+ false, true,
+ true, true,
+ true, true,
+ true, false,
+ false, true,
+ true, true,
+ true, true,
+ true, true,
+ false, false,
+ true, true,
+ true, false,
+ false, true,
+ false, true,
+ true, false,
+ false, true,
+ true, true,
+ true, true,
+ true, false,
+ false, true,
+ true, true,
+ true, true,
+ true, true,
+ false, false,
+ true, true,
+ true, false,
+ false, true,
+ false, true,
+ true, false,
+ false, true,
+ true, true,
+ true, true,
+ true, false,
+ false, true,
+ true, true,
+ true, true,
+ true, true,
+ false, false,
+ true, true,
+ true, true,
+ false, true,
+ true, true,
+ true, true,
+ true, true,
+ true, true,
+ true, true,
+ true, true,
+ true, true,
+ true, true,
+ true, true,
+ true, true,
+ true, true,
+ true, true,
+ true, false,
+ false, true,
+ false, true,
+ true, false,
+ false, true,
+ true, true,
+ true, true,
+ true, false,
+ true, true,
+ true, false,
+ true, true,
+ true, false,
+ false, true,
+ true, true,
+ true, true,
+ true, true,
+ true, true,
+ false, true};
void tst_QScriptValueGenerated::toBool_makeData(const char* expr)
{
static QHash<QString, bool> toBool;
if (toBool.isEmpty()) {
- toBool.reserve(142);
- for (unsigned i = 0; i < 142; ++i)
+ toBool.reserve(148);
+ for (unsigned i = 0; i < 148; ++i)
toBool.insert(toBool_tagArray[i], toBool_valueArray[i]);
}
newRow(expr) << toBool.value(expr);
@@ -736,7 +760,7 @@ void tst_QScriptValueGenerated::toBoolean_initData()
initScriptValues();
}
-static QString toBoolean_tagArray [] = {
+static QString toBoolean_tagArray[] = {
"QScriptValue()",
"QScriptValue(QScriptValue::UndefinedValue)",
"QScriptValue(QScriptValue::NullValue)",
@@ -840,6 +864,11 @@ static QString toBoolean_tagArray [] = {
"engine->evaluate(\"new Object()\")",
"engine->evaluate(\"new Array()\")",
"engine->evaluate(\"new Error()\")",
+ "engine->evaluate(\"new Boolean(true)\")",
+ "engine->evaluate(\"new Boolean(false)\")",
+ "engine->evaluate(\"new Number(123)\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "engine->evaluate(\"new String('ciao')\")",
"engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"engine->evaluate(\"Undefined\")",
"engine->evaluate(\"Null\")",
@@ -874,91 +903,95 @@ static QString toBoolean_tagArray [] = {
"engine->newArray(10)",
"engine->newDate(QDateTime())",
"engine->newQMetaObject(&QObject::staticMetaObject)",
+ "engine->newRegExp(\"foo\", \"gim\")",
"engine->newVariant(QVariant())",
"engine->newVariant(QVariant(123))",
"engine->newVariant(QVariant(false))",
"engine->newQObject(0)",
- "engine->newQObject(engine)",};
+ "engine->newQObject(engine)"};
-static bool toBoolean_valueArray [] = {
- false, false,
- false, true,
- false, true,
- true, false,
- false, true,
- true, true,
- true, true,
- true, false,
- false, true,
- true, true,
- true, true,
- true, true,
- false, false,
- true, true,
- true, false,
- false, true,
- false, true,
- true, false,
- false, true,
- true, true,
- true, true,
- true, false,
- false, true,
- true, true,
- true, true,
- true, true,
- false, false,
- true, true,
- true, false,
- false, true,
- false, true,
- true, false,
- false, true,
- true, true,
- true, true,
- true, false,
- false, true,
- true, true,
- true, true,
- true, true,
- false, false,
- true, true,
- true, true,
- false, true,
- true, true,
- true, true,
- true, true,
- true, true,
- true, true,
- true, true,
- true, true,
- true, true,
- true, true,
- true, true,
- false, false,
- true, false,
- true, true,
- false, false,
- true, true,
- true, true,
- true, true,
- false, true,
- true, true,
- false, true,
- true, true,
- false, false,
- true, true,
- true, true,
- true, true,
- true, true,
- false, true, };
+static bool toBoolean_valueArray[] = {
+ false, false,
+ false, true,
+ false, true,
+ true, false,
+ false, true,
+ true, true,
+ true, true,
+ true, false,
+ false, true,
+ true, true,
+ true, true,
+ true, true,
+ false, false,
+ true, true,
+ true, false,
+ false, true,
+ false, true,
+ true, false,
+ false, true,
+ true, true,
+ true, true,
+ true, false,
+ false, true,
+ true, true,
+ true, true,
+ true, true,
+ false, false,
+ true, true,
+ true, false,
+ false, true,
+ false, true,
+ true, false,
+ false, true,
+ true, true,
+ true, true,
+ true, false,
+ false, true,
+ true, true,
+ true, true,
+ true, true,
+ false, false,
+ true, true,
+ true, true,
+ false, true,
+ true, true,
+ true, true,
+ true, true,
+ true, true,
+ true, true,
+ true, true,
+ true, true,
+ true, true,
+ true, true,
+ true, true,
+ true, true,
+ true, true,
+ true, false,
+ false, true,
+ false, true,
+ true, false,
+ false, true,
+ true, true,
+ true, true,
+ true, false,
+ true, true,
+ true, false,
+ true, true,
+ true, false,
+ false, true,
+ true, true,
+ true, true,
+ true, true,
+ true, true,
+ false, true};
void tst_QScriptValueGenerated::toBoolean_makeData(const char* expr)
{
static QHash<QString, bool> toBoolean;
if (toBoolean.isEmpty()) {
- toBoolean.reserve(142);
- for (unsigned i = 0; i < 142; ++i)
+ toBoolean.reserve(148);
+ for (unsigned i = 0; i < 148; ++i)
toBoolean.insert(toBoolean_tagArray[i], toBoolean_valueArray[i]);
}
newRow(expr) << toBoolean.value(expr);
@@ -980,7 +1013,7 @@ void tst_QScriptValueGenerated::toInteger_initData()
initScriptValues();
}
-static QString toInteger_tagArray [] = {
+static QString toInteger_tagArray[] = {
"QScriptValue()",
"QScriptValue(QScriptValue::UndefinedValue)",
"QScriptValue(QScriptValue::NullValue)",
@@ -1084,6 +1117,11 @@ static QString toInteger_tagArray [] = {
"engine->evaluate(\"new Object()\")",
"engine->evaluate(\"new Array()\")",
"engine->evaluate(\"new Error()\")",
+ "engine->evaluate(\"new Boolean(true)\")",
+ "engine->evaluate(\"new Boolean(false)\")",
+ "engine->evaluate(\"new Number(123)\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "engine->evaluate(\"new String('ciao')\")",
"engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"engine->evaluate(\"Undefined\")",
"engine->evaluate(\"Null\")",
@@ -1118,33 +1156,34 @@ static QString toInteger_tagArray [] = {
"engine->newArray(10)",
"engine->newDate(QDateTime())",
"engine->newQMetaObject(&QObject::staticMetaObject)",
+ "engine->newRegExp(\"foo\", \"gim\")",
"engine->newVariant(QVariant())",
"engine->newVariant(QVariant(123))",
"engine->newVariant(QVariant(false))",
"engine->newQObject(0)",
- "engine->newQObject(engine)",};
-static qsreal toInteger_valueArray [] = {
- 0, 0, 0, 1, 0, 122, 124, 0, 0, 123,
- 0, 0, 1126240820, 65536, 65537, 0, 0, qInf(), qInf(), 0,
- qInf(), qInf(), 0, 0, 0, 0, 0, 123, 12, 0,
- 0, 1, 0, 122, 124, 0, 0, 123, 0, 0,
- 1126240820, 65536, 65537, 0, 0, qInf(), qInf(), 0, qInf(), qInf(),
- 0, 0, 0, 0, 0, 123, 12, 0, 0, 1,
- 0, 122, 124, 0, 0, 123, 0, 0, 1126240820, 65536,
- 65537, 0, 0, qInf(), qInf(), 0, qInf(), qInf(), 0, 0,
- 0, 0, 0, 123, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 22, 0, 0, 0, 0, 0, 0,
- 1, 0, 122, 124, 0, 0, 123, 0, 0, 1126240820,
- 65536, 65537, 0, qInf(), qInf(), 0, 0, 0, 123, 12,
- 0, 0, 0, 0, 0, 0, 0, 0, 123, 0,
- 0, 0, };
+ "engine->newQObject(engine)"};
+static qsreal toInteger_valueArray[] = {
+ 0, 0, 0, 1, 0, 122, 124, 0, 0, 123,
+ 0, 0, 1126240820, 65536, 65537, 0, 0, qInf(), qInf(), 0,
+ qInf(), qInf(), 0, 0, 0, 0, 0, 123, 12, 0,
+ 0, 1, 0, 122, 124, 0, 0, 123, 0, 0,
+ 1126240820, 65536, 65537, 0, 0, qInf(), qInf(), 0, qInf(), qInf(),
+ 0, 0, 0, 0, 0, 123, 12, 0, 0, 1,
+ 0, 122, 124, 0, 0, 123, 0, 0, 1126240820, 65536,
+ 65537, 0, 0, qInf(), qInf(), 0, qInf(), qInf(), 0, 0,
+ 0, 0, 0, 123, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1, 0, 123, 0, 0, 22, 0,
+ 0, 0, 0, 0, 0, 1, 0, 122, 124, 0,
+ 0, 123, 0, 0, 1126240820, 65536, 65537, 0, qInf(), qInf(),
+ 0, 0, 0, 123, 12, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 123, 0, 0, 0};
void tst_QScriptValueGenerated::toInteger_makeData(const char* expr)
{
static QHash<QString, qsreal> toInteger;
if (toInteger.isEmpty()) {
- toInteger.reserve(142);
- for (unsigned i = 0; i < 142; ++i)
+ toInteger.reserve(148);
+ for (unsigned i = 0; i < 148; ++i)
toInteger.insert(toInteger_tagArray[i], toInteger_valueArray[i]);
}
newRow(expr) << toInteger.value(expr);
@@ -1171,7 +1210,7 @@ void tst_QScriptValueGenerated::toInt32_initData()
initScriptValues();
}
-static QString toInt32_tagArray [] = {
+static QString toInt32_tagArray[] = {
"QScriptValue()",
"QScriptValue(QScriptValue::UndefinedValue)",
"QScriptValue(QScriptValue::NullValue)",
@@ -1275,6 +1314,11 @@ static QString toInt32_tagArray [] = {
"engine->evaluate(\"new Object()\")",
"engine->evaluate(\"new Array()\")",
"engine->evaluate(\"new Error()\")",
+ "engine->evaluate(\"new Boolean(true)\")",
+ "engine->evaluate(\"new Boolean(false)\")",
+ "engine->evaluate(\"new Number(123)\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "engine->evaluate(\"new String('ciao')\")",
"engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"engine->evaluate(\"Undefined\")",
"engine->evaluate(\"Null\")",
@@ -1309,91 +1353,95 @@ static QString toInt32_tagArray [] = {
"engine->newArray(10)",
"engine->newDate(QDateTime())",
"engine->newQMetaObject(&QObject::staticMetaObject)",
+ "engine->newRegExp(\"foo\", \"gim\")",
"engine->newVariant(QVariant())",
"engine->newVariant(QVariant(123))",
"engine->newVariant(QVariant(false))",
"engine->newQObject(0)",
- "engine->newQObject(engine)",};
+ "engine->newQObject(engine)"};
-static qint32 toInt32_valueArray [] = {
- 0, 0,
- 0, 1,
- 0, 122,
- 124, 0,
- 0, 123,
- 0, 0,
- 1126240820, 65536,
- 65537, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 123,
- 12, 0,
- 0, 1,
- 0, 122,
- 124, 0,
- 0, 123,
- 0, 0,
- 1126240820, 65536,
- 65537, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 123,
- 12, 0,
- 0, 1,
- 0, 122,
- 124, 0,
- 0, 123,
- 0, 0,
- 1126240820, 65536,
- 65537, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 123,
- 1, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 22,
- 0, 0,
- 0, 0,
- 0, 0,
- 1, 0,
- 122, 124,
- 0, 0,
- 123, 0,
- 0, 1126240820,
- 65536, 65537,
- 0, 0,
- 0, 0,
- 0, 0,
- 123, 12,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 123, 0,
- 0, 0, };
+static qint32 toInt32_valueArray[] = {
+ 0, 0,
+ 0, 1,
+ 0, 122,
+ 124, 0,
+ 0, 123,
+ 0, 0,
+ 1126240820, 65536,
+ 65537, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 123,
+ 12, 0,
+ 0, 1,
+ 0, 122,
+ 124, 0,
+ 0, 123,
+ 0, 0,
+ 1126240820, 65536,
+ 65537, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 123,
+ 12, 0,
+ 0, 1,
+ 0, 122,
+ 124, 0,
+ 0, 123,
+ 0, 0,
+ 1126240820, 65536,
+ 65537, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 123,
+ 1, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 1,
+ 0, 123,
+ 0, 0,
+ 22, 0,
+ 0, 0,
+ 0, 0,
+ 0, 1,
+ 0, 122,
+ 124, 0,
+ 0, 123,
+ 0, 0,
+ 1126240820, 65536,
+ 65537, 0,
+ 0, 0,
+ 0, 0,
+ 0, 123,
+ 12, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 123, 0,
+ 0, 0};
void tst_QScriptValueGenerated::toInt32_makeData(const char* expr)
{
static QHash<QString, qint32> toInt32;
if (toInt32.isEmpty()) {
- toInt32.reserve(142);
- for (unsigned i = 0; i < 142; ++i)
+ toInt32.reserve(148);
+ for (unsigned i = 0; i < 148; ++i)
toInt32.insert(toInt32_tagArray[i], toInt32_valueArray[i]);
}
newRow(expr) << toInt32.value(expr);
@@ -1415,7 +1463,7 @@ void tst_QScriptValueGenerated::toUInt32_initData()
initScriptValues();
}
-static QString toUInt32_tagArray [] = {
+static QString toUInt32_tagArray[] = {
"QScriptValue()",
"QScriptValue(QScriptValue::UndefinedValue)",
"QScriptValue(QScriptValue::NullValue)",
@@ -1519,6 +1567,11 @@ static QString toUInt32_tagArray [] = {
"engine->evaluate(\"new Object()\")",
"engine->evaluate(\"new Array()\")",
"engine->evaluate(\"new Error()\")",
+ "engine->evaluate(\"new Boolean(true)\")",
+ "engine->evaluate(\"new Boolean(false)\")",
+ "engine->evaluate(\"new Number(123)\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "engine->evaluate(\"new String('ciao')\")",
"engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"engine->evaluate(\"Undefined\")",
"engine->evaluate(\"Null\")",
@@ -1553,91 +1606,95 @@ static QString toUInt32_tagArray [] = {
"engine->newArray(10)",
"engine->newDate(QDateTime())",
"engine->newQMetaObject(&QObject::staticMetaObject)",
+ "engine->newRegExp(\"foo\", \"gim\")",
"engine->newVariant(QVariant())",
"engine->newVariant(QVariant(123))",
"engine->newVariant(QVariant(false))",
"engine->newQObject(0)",
- "engine->newQObject(engine)",};
+ "engine->newQObject(engine)"};
-static quint32 toUInt32_valueArray [] = {
- 0, 0,
- 0, 1,
- 0, 122,
- 124, 0,
- 0, 123,
- 0, 0,
- 1126240820, 65536,
- 65537, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 123,
- 12, 0,
- 0, 1,
- 0, 122,
- 124, 0,
- 0, 123,
- 0, 0,
- 1126240820, 65536,
- 65537, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 123,
- 12, 0,
- 0, 1,
- 0, 122,
- 124, 0,
- 0, 123,
- 0, 0,
- 1126240820, 65536,
- 65537, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 123,
- 1, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 22,
- 0, 0,
- 0, 0,
- 0, 0,
- 1, 0,
- 122, 124,
- 0, 0,
- 123, 0,
- 0, 1126240820,
- 65536, 65537,
- 0, 0,
- 0, 0,
- 0, 0,
- 123, 12,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 123, 0,
- 0, 0, };
+static quint32 toUInt32_valueArray[] = {
+ 0, 0,
+ 0, 1,
+ 0, 122,
+ 124, 0,
+ 0, 123,
+ 0, 0,
+ 1126240820, 65536,
+ 65537, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 123,
+ 12, 0,
+ 0, 1,
+ 0, 122,
+ 124, 0,
+ 0, 123,
+ 0, 0,
+ 1126240820, 65536,
+ 65537, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 123,
+ 12, 0,
+ 0, 1,
+ 0, 122,
+ 124, 0,
+ 0, 123,
+ 0, 0,
+ 1126240820, 65536,
+ 65537, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 123,
+ 1, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 1,
+ 0, 123,
+ 0, 0,
+ 22, 0,
+ 0, 0,
+ 0, 0,
+ 0, 1,
+ 0, 122,
+ 124, 0,
+ 0, 123,
+ 0, 0,
+ 1126240820, 65536,
+ 65537, 0,
+ 0, 0,
+ 0, 0,
+ 0, 123,
+ 12, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 123, 0,
+ 0, 0};
void tst_QScriptValueGenerated::toUInt32_makeData(const char* expr)
{
static QHash<QString, quint32> toUInt32;
if (toUInt32.isEmpty()) {
- toUInt32.reserve(142);
- for (unsigned i = 0; i < 142; ++i)
+ toUInt32.reserve(148);
+ for (unsigned i = 0; i < 148; ++i)
toUInt32.insert(toUInt32_tagArray[i], toUInt32_valueArray[i]);
}
newRow(expr) << toUInt32.value(expr);
@@ -1659,7 +1716,7 @@ void tst_QScriptValueGenerated::toUInt16_initData()
initScriptValues();
}
-static QString toUInt16_tagArray [] = {
+static QString toUInt16_tagArray[] = {
"QScriptValue()",
"QScriptValue(QScriptValue::UndefinedValue)",
"QScriptValue(QScriptValue::NullValue)",
@@ -1763,6 +1820,11 @@ static QString toUInt16_tagArray [] = {
"engine->evaluate(\"new Object()\")",
"engine->evaluate(\"new Array()\")",
"engine->evaluate(\"new Error()\")",
+ "engine->evaluate(\"new Boolean(true)\")",
+ "engine->evaluate(\"new Boolean(false)\")",
+ "engine->evaluate(\"new Number(123)\")",
+ "engine->evaluate(\"new RegExp('foo', 'gim')\")",
+ "engine->evaluate(\"new String('ciao')\")",
"engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
"engine->evaluate(\"Undefined\")",
"engine->evaluate(\"Null\")",
@@ -1797,91 +1859,95 @@ static QString toUInt16_tagArray [] = {
"engine->newArray(10)",
"engine->newDate(QDateTime())",
"engine->newQMetaObject(&QObject::staticMetaObject)",
+ "engine->newRegExp(\"foo\", \"gim\")",
"engine->newVariant(QVariant())",
"engine->newVariant(QVariant(123))",
"engine->newVariant(QVariant(false))",
"engine->newQObject(0)",
- "engine->newQObject(engine)",};
+ "engine->newQObject(engine)"};
-static quint16 toUInt16_valueArray [] = {
- 0, 0,
- 0, 1,
- 0, 122,
- 124, 0,
- 0, 123,
- 0, 0,
- 4660, 0,
- 1, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 123,
- 12, 0,
- 0, 1,
- 0, 122,
- 124, 0,
- 0, 123,
- 0, 0,
- 4660, 0,
- 1, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 123,
- 12, 0,
- 0, 1,
- 0, 122,
- 124, 0,
- 0, 123,
- 0, 0,
- 4660, 0,
- 1, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 123,
- 1, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 22,
- 0, 0,
- 0, 0,
- 0, 0,
- 1, 0,
- 122, 124,
- 0, 0,
- 123, 0,
- 0, 4660,
- 0, 1,
- 0, 0,
- 0, 0,
- 0, 0,
- 123, 12,
- 0, 0,
- 0, 0,
- 0, 0,
- 0, 0,
- 123, 0,
- 0, 0, };
+static quint16 toUInt16_valueArray[] = {
+ 0, 0,
+ 0, 1,
+ 0, 122,
+ 124, 0,
+ 0, 123,
+ 0, 0,
+ 4660, 0,
+ 1, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 123,
+ 12, 0,
+ 0, 1,
+ 0, 122,
+ 124, 0,
+ 0, 123,
+ 0, 0,
+ 4660, 0,
+ 1, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 123,
+ 12, 0,
+ 0, 1,
+ 0, 122,
+ 124, 0,
+ 0, 123,
+ 0, 0,
+ 4660, 0,
+ 1, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 123,
+ 1, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 1,
+ 0, 123,
+ 0, 0,
+ 22, 0,
+ 0, 0,
+ 0, 0,
+ 0, 1,
+ 0, 122,
+ 124, 0,
+ 0, 123,
+ 0, 0,
+ 4660, 0,
+ 1, 0,
+ 0, 0,
+ 0, 0,
+ 0, 123,
+ 12, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 0, 0,
+ 123, 0,
+ 0, 0};
void tst_QScriptValueGenerated::toUInt16_makeData(const char* expr)
{
static QHash<QString, quint16> toUInt16;
if (toUInt16.isEmpty()) {
- toUInt16.reserve(142);
- for (unsigned i = 0; i < 142; ++i)
+ toUInt16.reserve(148);
+ for (unsigned i = 0; i < 148; ++i)
toUInt16.insert(toUInt16_tagArray[i], toUInt16_valueArray[i]);
}
newRow(expr) << toUInt16.value(expr);
diff --git a/tests/auto/qsemaphore/qsemaphore.pro b/tests/auto/qsemaphore/qsemaphore.pro
index f720c0b..5978215 100644
--- a/tests/auto/qsemaphore/qsemaphore.pro
+++ b/tests/auto/qsemaphore/qsemaphore.pro
@@ -3,3 +3,4 @@ SOURCES += tst_qsemaphore.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qsequentialanimationgroup/qsequentialanimationgroup.pro b/tests/auto/qsequentialanimationgroup/qsequentialanimationgroup.pro
index 01ef68a..c0c10c0 100644
--- a/tests/auto/qsequentialanimationgroup/qsequentialanimationgroup.pro
+++ b/tests/auto/qsequentialanimationgroup/qsequentialanimationgroup.pro
@@ -3,3 +3,4 @@ QT = core
SOURCES += tst_qsequentialanimationgroup.cpp
+CONFIG += parallel_test
diff --git a/tests/auto/qset/qset.pro b/tests/auto/qset/qset.pro
index b45a015..ebdf0d6 100644
--- a/tests/auto/qset/qset.pro
+++ b/tests/auto/qset/qset.pro
@@ -6,3 +6,4 @@ symbian: {
TARGET.EPOCSTACKSIZE =0x5000
TARGET.EPOCHEAPSIZE="0x100000 0x1000000" # // Min 1Mb, max 16Mb
}
+CONFIG += parallel_test
diff --git a/tests/auto/qsharedpointer/qsharedpointer.pro b/tests/auto/qsharedpointer/qsharedpointer.pro
index bbd31d7..014006e 100644
--- a/tests/auto/qsharedpointer/qsharedpointer.pro
+++ b/tests/auto/qsharedpointer/qsharedpointer.pro
@@ -12,3 +12,4 @@ QT = core
!symbian:DEFINES += SRCDIR=\\\"$$PWD/\\\"
include(externaltests.pri)
+CONFIG += parallel_test
diff --git a/tests/auto/qsignalspy/qsignalspy.pro b/tests/auto/qsignalspy/qsignalspy.pro
index 4bc4a7b..d3ae63b 100644
--- a/tests/auto/qsignalspy/qsignalspy.pro
+++ b/tests/auto/qsignalspy/qsignalspy.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_qsignalspy.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qsize/qsize.pro b/tests/auto/qsize/qsize.pro
index 14786b8..a1814ac 100644
--- a/tests/auto/qsize/qsize.pro
+++ b/tests/auto/qsize/qsize.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_qsize.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qsizef/qsizef.pro b/tests/auto/qsizef/qsizef.pro
index 703d721..5aa07d7 100644
--- a/tests/auto/qsizef/qsizef.pro
+++ b/tests/auto/qsizef/qsizef.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_qsizef.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qsqldatabase/tst_databases.h b/tests/auto/qsqldatabase/tst_databases.h
index 5837719..80535df 100644
--- a/tests/auto/qsqldatabase/tst_databases.h
+++ b/tests/auto/qsqldatabase/tst_databases.h
@@ -208,7 +208,7 @@ public:
// addDb( "QOCI8", "//horsehead.nokia.troll.no:1521/ustest.troll.no", "scott", "tiger", "" ); // Oracle 9i on horsehead
// addDb( "QOCI8", "//iceblink.nokia.troll.no:1521/ice.troll.no", "scott", "tiger", "" ); // Oracle 8 on iceblink (not currently working)
// addDb( "QOCI", "//silence.nokia.troll.no:1521/testdb", "scott", "tiger" ); // Oracle 10g on silence
-// addDb( "QOCI", "//oracle10g-nokia.trolltech.com.au:1521/XE", "scott", "tiger" ); // Oracle 10gexpress on xen
+// addDb( "QOCI", "//bq-oracle10g.apac.nokia.com:1521/XE", "scott", "tiger" ); // Oracle 10gexpress
// This requires a local ODBC data source to be configured( pointing to a MySql database )
// addDb( "QODBC", "mysqlodbc", "troll", "trond" );
diff --git a/tests/auto/qsqlquery/tst_qsqlquery.cpp b/tests/auto/qsqlquery/tst_qsqlquery.cpp
index c7a61a5..b4a3e08 100644
--- a/tests/auto/qsqlquery/tst_qsqlquery.cpp
+++ b/tests/auto/qsqlquery/tst_qsqlquery.cpp
@@ -139,6 +139,8 @@ private slots:
void oraClob();
void oraLong_data() { generic_data("QOCI"); }
void oraLong();
+ void oraOCINumber_data() { generic_data("QOCI"); }
+ void oraOCINumber();
void outValuesDB2_data() { generic_data("QDB2"); }
void outValuesDB2();
void storedProceduresIBase_data() {generic_data("QIBASE"); }
@@ -209,6 +211,9 @@ private slots:
void QTBUG_6852();
void QTBUG_5765_data() { generic_data("QMYSQL"); }
void QTBUG_5765();
+ void QTBUG_14132_data() { generic_data("QOCI"); }
+ void QTBUG_14132();
+
void sqlite_constraint_data() { generic_data("QSQLITE"); }
void sqlite_constraint();
@@ -327,7 +332,8 @@ void tst_QSqlQuery::dropTestTables( QSqlDatabase db )
<< qTableName( "Planet", __FILE__ )
<< qTableName( "task_250026", __FILE__ )
<< qTableName( "task_234422", __FILE__ )
- << qTableName("test141895", __FILE__);
+ << qTableName("test141895", __FILE__)
+ << qTableName("qtest_oraOCINumber", __FILE__);
if ( db.driverName().startsWith("QPSQL") )
tablenames << qTableName("task_233829", __FILE__);
@@ -2933,6 +2939,25 @@ void tst_QSqlQuery::QTBUG_551()
QCOMPARE(res_outLst[2].toString(), QLatin1String("3. Value is 2"));
}
+void tst_QSqlQuery::QTBUG_14132()
+{
+ QFETCH( QString, dbName );
+ QSqlDatabase db = QSqlDatabase::database( dbName );
+ CHECK_DATABASE( db );
+ QSqlQuery q(db);
+ const QString procedureName(qTableName("procedure", __FILE__));
+ QVERIFY_SQL(q, exec("CREATE OR REPLACE PROCEDURE "+ procedureName + " (outStr OUT varchar2) \n\
+ is \n\
+ begin \n\
+ outStr := 'OUTSTRING'; \n\
+ end;"));
+ QString placeholder = "XXXXXXXXX";
+ QVERIFY(q.prepare("CALL "+procedureName+"(?)"));
+ q.addBindValue(placeholder, QSql::Out);
+ QVERIFY_SQL(q, exec());
+ QCOMPARE(q.boundValue(0).toString(), QLatin1String("OUTSTRING"));
+}
+
void tst_QSqlQuery::QTBUG_5251()
{
QFETCH( QString, dbName );
@@ -3080,6 +3105,110 @@ void tst_QSqlQuery::QTBUG_5765()
QCOMPARE(q.value(0).toInt(), 123);
}
+void tst_QSqlQuery::oraOCINumber()
+{
+ QFETCH( QString, dbName );
+ QSqlDatabase db = QSqlDatabase::database( dbName );
+ CHECK_DATABASE( db );
+ const QString qtest_oraOCINumber(qTableName("qtest_oraOCINumber", __FILE__));
+
+ QSqlQuery q( db );
+ q.setForwardOnly( true );
+ QVERIFY_SQL( q, exec( "create table " + qtest_oraOCINumber +
+ " (col1 number(20), col2 number(20))" ) );
+ QVERIFY(q.prepare("insert into " + qtest_oraOCINumber + " values (?, ?)"));
+ QVariantList col1Values;
+ QVariantList col2Values;
+ col1Values << (qulonglong)(1)
+ << (qulonglong)(0)
+ << (qulonglong)(INT_MAX)
+ << (qulonglong)(UINT_MAX)
+ << (qulonglong)(LONG_MAX)
+ << (qulonglong)(ULONG_MAX)
+ << (qulonglong)(LLONG_MAX)
+ << (qulonglong)(ULLONG_MAX);
+
+ col2Values << (qlonglong)(1)
+ << (qlonglong)(0)
+ << (qlonglong)(-1)
+ << (qlonglong)(LONG_MAX)
+ << (qlonglong)(LONG_MIN)
+ << (qlonglong)(ULONG_MAX)
+ << (qlonglong)(LLONG_MAX)
+ << (qlonglong)(LLONG_MIN);
+
+ q.addBindValue(col1Values);
+ q.addBindValue(col2Values);
+ QVERIFY(q.execBatch());
+ QString sqlStr = "select * from " + qtest_oraOCINumber + " where col1 = :bindValue0 AND col2 = :bindValue1";
+ QVERIFY(q.prepare(sqlStr));
+
+ q.bindValue(":bindValue0", (qulonglong)(1), QSql::InOut);
+ q.bindValue(":bindValue1", (qlonglong)(1), QSql::InOut);
+
+ QVERIFY_SQL( q, exec() );
+ QVERIFY( q.next() );
+ QCOMPARE(q.boundValue( 0 ).toULongLong(), qulonglong(1));
+ QCOMPARE(q.boundValue( 1 ).toLongLong(), (qlonglong)(1));
+
+ q.bindValue(":bindValue0", (qulonglong)(0), QSql::InOut);
+ q.bindValue(":bindValue1", (qlonglong)(0), QSql::InOut);
+ QVERIFY_SQL( q, exec() );
+
+ QVERIFY( q.next() );
+ QCOMPARE(q.boundValue( 0 ).toULongLong(), (qulonglong)(0));
+ QCOMPARE(q.boundValue( 1 ).toLongLong(), (qlonglong)(0));
+
+ q.bindValue(":bindValue0", (qulonglong)(INT_MAX), QSql::InOut);
+ q.bindValue(":bindValue1", (qlonglong)(-1), QSql::InOut);
+ QVERIFY_SQL( q, exec() );
+
+ QVERIFY( q.next() );
+ QCOMPARE(q.boundValue( 0 ).toULongLong(), (qulonglong)(INT_MAX));
+ QCOMPARE(q.boundValue( 1 ).toLongLong(), (qlonglong)(-1));
+
+ q.bindValue(":bindValue0", (qulonglong)(UINT_MAX), QSql::InOut);
+ q.bindValue(":bindValue1", (qlonglong)(LONG_MAX), QSql::InOut);
+ QVERIFY_SQL( q, exec() );
+
+ QVERIFY( q.next() );
+ QCOMPARE(q.boundValue( 0 ).toULongLong(), (qulonglong)(UINT_MAX));
+ QCOMPARE(q.boundValue( 1 ).toLongLong(), (qlonglong)(LONG_MAX));
+
+ q.bindValue(":bindValue0", (qulonglong)(LONG_MAX), QSql::InOut);
+ q.bindValue(":bindValue1", (qlonglong)(LONG_MIN), QSql::InOut);
+ QVERIFY_SQL( q, exec() );
+
+ QVERIFY( q.next() );
+ QCOMPARE(q.boundValue( 0 ).toULongLong(), (qulonglong)(LONG_MAX));
+ QCOMPARE(q.boundValue( 1 ).toLongLong(), (qlonglong)(LONG_MIN));
+
+ q.bindValue(":bindValue0", (qulonglong)(ULONG_MAX), QSql::InOut);
+ q.bindValue(":bindValue1", (qlonglong)(ULONG_MAX), QSql::InOut);
+ QVERIFY_SQL( q, exec() );
+
+ QVERIFY( q.next() );
+ QCOMPARE(q.boundValue( 0 ).toULongLong(), (qulonglong)(ULONG_MAX));
+ QCOMPARE(q.boundValue( 1 ).toLongLong(), (qlonglong)(ULONG_MAX));
+
+ q.bindValue(":bindValue0", (qulonglong)(LLONG_MAX), QSql::InOut);
+ q.bindValue(":bindValue1", (qlonglong)(LLONG_MAX), QSql::InOut);
+ QVERIFY_SQL( q, exec() );
+
+ QVERIFY( q.next() );
+ QCOMPARE(q.boundValue( 0 ).toULongLong(), (qulonglong)(LLONG_MAX));
+ QCOMPARE(q.boundValue( 1 ).toLongLong(), (qlonglong)(LLONG_MAX));
+
+ q.bindValue(":bindValue0", (qulonglong)(ULLONG_MAX), QSql::InOut);
+ q.bindValue(":bindValue1", (qlonglong)(LLONG_MIN), QSql::InOut);
+ QVERIFY_SQL( q, exec() );
+
+ QVERIFY( q.next() );
+ QCOMPARE(q.boundValue( 0 ).toULongLong(), (qulonglong)(ULLONG_MAX));
+ QCOMPARE(q.boundValue( 1 ).toLongLong(), (qlonglong)(LLONG_MIN));
+
+}
+
void tst_QSqlQuery::sqlite_constraint()
{
QFETCH( QString, dbName );
diff --git a/tests/auto/qsslcertificate/qsslcertificate.pro b/tests/auto/qsslcertificate/qsslcertificate.pro
index e21587b..05cce8e 100644
--- a/tests/auto/qsslcertificate/qsslcertificate.pro
+++ b/tests/auto/qsslcertificate/qsslcertificate.pro
@@ -24,5 +24,6 @@ wince*: {
DEFINES += SRCDIR=\\\".\\\"
} else:!symbian {
DEFINES += SRCDIR=\\\"$$PWD/\\\"
- TARGET.CAPABILITY = NetworkServices
}
+
+symbian:TARGET.CAPABILITY = NetworkServices ReadUserData
diff --git a/tests/auto/qstate/qstate.pro b/tests/auto/qstate/qstate.pro
index 9131fa8..6ee7e0c 100644
--- a/tests/auto/qstate/qstate.pro
+++ b/tests/auto/qstate/qstate.pro
@@ -3,3 +3,4 @@ QT = core
SOURCES += tst_qstate.cpp
+CONFIG += parallel_test
diff --git a/tests/auto/qstl/qstl.pro b/tests/auto/qstl/qstl.pro
index 5c99874..a0c9db1 100644
--- a/tests/auto/qstl/qstl.pro
+++ b/tests/auto/qstl/qstl.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_qstl.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qstring/qstring.pro b/tests/auto/qstring/qstring.pro
index ed758c6..e980042 100644
--- a/tests/auto/qstring/qstring.pro
+++ b/tests/auto/qstring/qstring.pro
@@ -6,3 +6,4 @@ symbian:LIBS += -llibm
QT = core
DEFINES += QT_NO_CAST_TO_ASCII
+CONFIG += parallel_test
diff --git a/tests/auto/qstringbuilder1/qstringbuilder1.pro b/tests/auto/qstringbuilder1/qstringbuilder1.pro
index 5bb14d4..dc9062f 100644
--- a/tests/auto/qstringbuilder1/qstringbuilder1.pro
+++ b/tests/auto/qstringbuilder1/qstringbuilder1.pro
@@ -4,3 +4,4 @@ QT = core
SOURCES += tst_qstringbuilder1.cpp
+CONFIG += parallel_test
diff --git a/tests/auto/qstringbuilder2/qstringbuilder2.pro b/tests/auto/qstringbuilder2/qstringbuilder2.pro
index 4152dc3..a57c6f1 100644
--- a/tests/auto/qstringbuilder2/qstringbuilder2.pro
+++ b/tests/auto/qstringbuilder2/qstringbuilder2.pro
@@ -3,3 +3,4 @@ load(qttest_p4)
QT = core
SOURCES += tst_qstringbuilder2.cpp
+CONFIG += parallel_test
diff --git a/tests/auto/qstringbuilder3/qstringbuilder3.pro b/tests/auto/qstringbuilder3/qstringbuilder3.pro
index b4d2225..5aced7c 100644
--- a/tests/auto/qstringbuilder3/qstringbuilder3.pro
+++ b/tests/auto/qstringbuilder3/qstringbuilder3.pro
@@ -3,3 +3,4 @@ load(qttest_p4)
QT = core
SOURCES += tst_qstringbuilder3.cpp
+CONFIG += parallel_test
diff --git a/tests/auto/qstringbuilder4/qstringbuilder4.pro b/tests/auto/qstringbuilder4/qstringbuilder4.pro
index 6ec5228..0532a9b 100644
--- a/tests/auto/qstringbuilder4/qstringbuilder4.pro
+++ b/tests/auto/qstringbuilder4/qstringbuilder4.pro
@@ -3,3 +3,4 @@ load(qttest_p4)
QT = core
SOURCES += tst_qstringbuilder4.cpp
+CONFIG += parallel_test
diff --git a/tests/auto/qstringlist/qstringlist.pro b/tests/auto/qstringlist/qstringlist.pro
index aee074b..d82a348 100644
--- a/tests/auto/qstringlist/qstringlist.pro
+++ b/tests/auto/qstringlist/qstringlist.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_qstringlist.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qstringmatcher/qstringmatcher.pro b/tests/auto/qstringmatcher/qstringmatcher.pro
index 2c15097..c5249ec 100644
--- a/tests/auto/qstringmatcher/qstringmatcher.pro
+++ b/tests/auto/qstringmatcher/qstringmatcher.pro
@@ -3,3 +3,4 @@ SOURCES += tst_qstringmatcher.cpp
QT = core
DEFINES += QT_NO_CAST_TO_ASCII
+CONFIG += parallel_test
diff --git a/tests/auto/qstringref/qstringref.pro b/tests/auto/qstringref/qstringref.pro
index 48e7ddf..34f2de4 100644
--- a/tests/auto/qstringref/qstringref.pro
+++ b/tests/auto/qstringref/qstringref.pro
@@ -2,3 +2,4 @@ load(qttest_p4)
SOURCES += tst_qstringref.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qtconcurrentfilter/qtconcurrentfilter.pro b/tests/auto/qtconcurrentfilter/qtconcurrentfilter.pro
index e93c5d2..ee2b77d 100644
--- a/tests/auto/qtconcurrentfilter/qtconcurrentfilter.pro
+++ b/tests/auto/qtconcurrentfilter/qtconcurrentfilter.pro
@@ -2,3 +2,5 @@ load(qttest_p4)
DEFINES += QT_STRICT_ITERATORS
SOURCES += tst_qtconcurrentfilter.cpp
QT = core
+CONFIG += parallel_test
+CONFIG += parallel_test
diff --git a/tests/auto/qtconcurrentiteratekernel/qtconcurrentiteratekernel.pro b/tests/auto/qtconcurrentiteratekernel/qtconcurrentiteratekernel.pro
index 4fdcc22..a61d275 100644
--- a/tests/auto/qtconcurrentiteratekernel/qtconcurrentiteratekernel.pro
+++ b/tests/auto/qtconcurrentiteratekernel/qtconcurrentiteratekernel.pro
@@ -1,3 +1,5 @@
load(qttest_p4)
SOURCES += tst_qtconcurrentiteratekernel.cpp
QT = core
+CONFIG += parallel_test
+CONFIG += parallel_test
diff --git a/tests/auto/qtconcurrentmap/qtconcurrentmap.pro b/tests/auto/qtconcurrentmap/qtconcurrentmap.pro
index 8cae714..6fc3585 100644
--- a/tests/auto/qtconcurrentmap/qtconcurrentmap.pro
+++ b/tests/auto/qtconcurrentmap/qtconcurrentmap.pro
@@ -2,3 +2,5 @@ load(qttest_p4)
DEFINES += QT_STRICT_ITERATORS
SOURCES += tst_qtconcurrentmap.cpp
QT = core
+CONFIG += parallel_test
+CONFIG += parallel_test
diff --git a/tests/auto/qtconcurrentrun/qtconcurrentrun.pro b/tests/auto/qtconcurrentrun/qtconcurrentrun.pro
index ac29dd4..2457604 100644
--- a/tests/auto/qtconcurrentrun/qtconcurrentrun.pro
+++ b/tests/auto/qtconcurrentrun/qtconcurrentrun.pro
@@ -1,3 +1,5 @@
load(qttest_p4)
SOURCES += tst_qtconcurrentrun.cpp
QT = core
+CONFIG += parallel_test
+CONFIG += parallel_test
diff --git a/tests/auto/qtconcurrentrun/tst_qtconcurrentrun.cpp b/tests/auto/qtconcurrentrun/tst_qtconcurrentrun.cpp
index 8fdc50c..8b10ea4 100644
--- a/tests/auto/qtconcurrentrun/tst_qtconcurrentrun.cpp
+++ b/tests/auto/qtconcurrentrun/tst_qtconcurrentrun.cpp
@@ -61,6 +61,9 @@ private slots:
void implicitConvertibleTypes();
void runWaitLoop();
void recursive();
+#ifndef QT_NO_EXCEPTIONS
+ void exceptions();
+#endif
#if 0
void createFunctor();
#endif
@@ -374,6 +377,41 @@ int fn2(double, int *)
return 1;
}
+
+#ifndef QT_NO_EXCEPTIONS
+void throwFunction()
+{
+ throw QtConcurrent::Exception();
+}
+
+int throwFunctionReturn()
+{
+ throw QtConcurrent::Exception();
+ return 0;
+}
+
+void tst_QtConcurrentRun::exceptions()
+{
+ bool caught = false;
+ try {
+ QtConcurrent::run(throwFunction).waitForFinished();
+ } catch (Exception &e) {
+ caught = true;
+ }
+ if (!caught)
+ QFAIL("did not get exception");
+
+ caught = false;
+ try {
+ QtConcurrent::run(throwFunctionReturn).waitForFinished();
+ } catch (Exception &e) {
+ caught = true;
+ }
+ if (!caught)
+ QFAIL("did not get exception");
+}
+#endif
+
#if 0
void tst_QtConcurrentRun::createFunctor()
{
diff --git a/tests/auto/qtconcurrentthreadengine/qtconcurrentthreadengine.pro b/tests/auto/qtconcurrentthreadengine/qtconcurrentthreadengine.pro
index cd8d74e..bbfcf5e 100644
--- a/tests/auto/qtconcurrentthreadengine/qtconcurrentthreadengine.pro
+++ b/tests/auto/qtconcurrentthreadengine/qtconcurrentthreadengine.pro
@@ -1,3 +1,5 @@
load(qttest_p4)
SOURCES += tst_qtconcurrentthreadengine.cpp
QT = core
+CONFIG += parallel_test
+CONFIG += parallel_test
diff --git a/tests/auto/qtextboundaryfinder/qtextboundaryfinder.pro b/tests/auto/qtextboundaryfinder/qtextboundaryfinder.pro
index e8fb9cb..5f3cb11 100644
--- a/tests/auto/qtextboundaryfinder/qtextboundaryfinder.pro
+++ b/tests/auto/qtextboundaryfinder/qtextboundaryfinder.pro
@@ -9,3 +9,4 @@ wince*|symbian:{
addFiles.path = .
DEPLOYMENT += addFiles
}
+CONFIG += parallel_test
diff --git a/tests/auto/qtextdocument/tst_qtextdocument.cpp b/tests/auto/qtextdocument/tst_qtextdocument.cpp
index 808299b..23f6a6c 100644
--- a/tests/auto/qtextdocument/tst_qtextdocument.cpp
+++ b/tests/auto/qtextdocument/tst_qtextdocument.cpp
@@ -2054,6 +2054,7 @@ void tst_QTextDocument::clonePreservesIndentWidth()
doc->setIndentWidth(42);
QTextDocument *clone = doc->clone();
QCOMPARE(clone->indentWidth(), qreal(42));
+ delete clone;
}
void tst_QTextDocument::blockCount()
diff --git a/tests/auto/qthread/qthread.pro b/tests/auto/qthread/qthread.pro
index 0b042ab..d3b1028 100644
--- a/tests/auto/qthread/qthread.pro
+++ b/tests/auto/qthread/qthread.pro
@@ -2,3 +2,4 @@ load(qttest_p4)
SOURCES += tst_qthread.cpp
QT = core
symbian:LIBS += -llibpthread
+CONFIG += parallel_test
diff --git a/tests/auto/qthreadonce/qthreadonce.pro b/tests/auto/qthreadonce/qthreadonce.pro
index a672a03..d7ef4d4 100644
--- a/tests/auto/qthreadonce/qthreadonce.pro
+++ b/tests/auto/qthreadonce/qthreadonce.pro
@@ -10,3 +10,4 @@ QT = core
# Temporary:
SOURCES += qthreadonce.cpp
+CONFIG += parallel_test
diff --git a/tests/auto/qthreadpool/qthreadpool.pro b/tests/auto/qthreadpool/qthreadpool.pro
index 3f6ea64..dbaeb20 100644
--- a/tests/auto/qthreadpool/qthreadpool.pro
+++ b/tests/auto/qthreadpool/qthreadpool.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_qthreadpool.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qthreadstorage/qthreadstorage.pro b/tests/auto/qthreadstorage/qthreadstorage.pro
index a06f89c..0dc8d08 100644
--- a/tests/auto/qthreadstorage/qthreadstorage.pro
+++ b/tests/auto/qthreadstorage/qthreadstorage.pro
@@ -2,3 +2,4 @@ TEMPLATE = subdirs
SUBDIRS = \
tst_qthreadstorage.pro \
crashOnExit.pro
+CONFIG += parallel_test
diff --git a/tests/auto/qtime/qtime.pro b/tests/auto/qtime/qtime.pro
index 88277a0..ce4f7ae 100644
--- a/tests/auto/qtime/qtime.pro
+++ b/tests/auto/qtime/qtime.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_qtime.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qtimeline/qtimeline.pro b/tests/auto/qtimeline/qtimeline.pro
index 7820455..9be717d 100644
--- a/tests/auto/qtimeline/qtimeline.pro
+++ b/tests/auto/qtimeline/qtimeline.pro
@@ -2,3 +2,4 @@ load(qttest_p4)
QT = core
SOURCES += tst_qtimeline.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qtimer/qtimer.pro b/tests/auto/qtimer/qtimer.pro
index 79ae7db..086df1d 100644
--- a/tests/auto/qtimer/qtimer.pro
+++ b/tests/auto/qtimer/qtimer.pro
@@ -2,3 +2,4 @@ load(qttest_p4)
QT = core
SOURCES += tst_qtimer.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qtmd5/qtmd5.pro b/tests/auto/qtmd5/qtmd5.pro
index cb4a539..0afc6b1 100644
--- a/tests/auto/qtmd5/qtmd5.pro
+++ b/tests/auto/qtmd5/qtmd5.pro
@@ -12,3 +12,4 @@ SOURCES += tst_qtmd5.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qtokenautomaton/qtokenautomaton.pro b/tests/auto/qtokenautomaton/qtokenautomaton.pro
index 6ebf7c4..5e2e590 100644
--- a/tests/auto/qtokenautomaton/qtokenautomaton.pro
+++ b/tests/auto/qtokenautomaton/qtokenautomaton.pro
@@ -15,3 +15,4 @@ HEADERS += tokenizers/basic/basic.h \
tokenizers/withNamespace/withNamespace.h
QT -= gui
+CONFIG += parallel_test
diff --git a/tests/auto/qurl/qurl.pro b/tests/auto/qurl/qurl.pro
index 018bb38..a5c39a5 100644
--- a/tests/auto/qurl/qurl.pro
+++ b/tests/auto/qurl/qurl.pro
@@ -2,3 +2,4 @@ load(qttest_p4)
SOURCES += tst_qurl.cpp
QT = core
symbian: TARGET.CAPABILITY = NetworkServices
+CONFIG += parallel_test
diff --git a/tests/auto/quuid/quuid.pro b/tests/auto/quuid/quuid.pro
index 25e2456..461956f 100644
--- a/tests/auto/quuid/quuid.pro
+++ b/tests/auto/quuid/quuid.pro
@@ -4,3 +4,4 @@ SUBDIRS = testProcessUniqueness
SUBDIRS += test
+CONFIG += parallel_test
diff --git a/tests/auto/qvarlengtharray/qvarlengtharray.pro b/tests/auto/qvarlengtharray/qvarlengtharray.pro
index 7a02790..183da1b 100644
--- a/tests/auto/qvarlengtharray/qvarlengtharray.pro
+++ b/tests/auto/qvarlengtharray/qvarlengtharray.pro
@@ -2,3 +2,4 @@ load(qttest_p4)
QT = core
SOURCES += tst_qvarlengtharray.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qvector/qvector.pro b/tests/auto/qvector/qvector.pro
index 80311b4..a7c3957 100644
--- a/tests/auto/qvector/qvector.pro
+++ b/tests/auto/qvector/qvector.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_qvector.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qwaitcondition/qwaitcondition.pro b/tests/auto/qwaitcondition/qwaitcondition.pro
index 4d9a082..9af0c71 100644
--- a/tests/auto/qwaitcondition/qwaitcondition.pro
+++ b/tests/auto/qwaitcondition/qwaitcondition.pro
@@ -3,3 +3,4 @@ SOURCES += tst_qwaitcondition.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qwineventnotifier/qwineventnotifier.pro b/tests/auto/qwineventnotifier/qwineventnotifier.pro
index 0c8bd2b..62da3a3 100644
--- a/tests/auto/qwineventnotifier/qwineventnotifier.pro
+++ b/tests/auto/qwineventnotifier/qwineventnotifier.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_qwineventnotifier.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/qwritelocker/qwritelocker.pro b/tests/auto/qwritelocker/qwritelocker.pro
index acae4ef..39a98aa 100644
--- a/tests/auto/qwritelocker/qwritelocker.pro
+++ b/tests/auto/qwritelocker/qwritelocker.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
SOURCES += tst_qwritelocker.cpp
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/selftests/selftests.pro b/tests/auto/selftests/selftests.pro
index d854b5e..2f1c327 100644
--- a/tests/auto/selftests/selftests.pro
+++ b/tests/auto/selftests/selftests.pro
@@ -12,3 +12,4 @@ INSTALLS =
QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/utf8/utf8.pro b/tests/auto/utf8/utf8.pro
index 4ec6851..aa133fe 100644
--- a/tests/auto/utf8/utf8.pro
+++ b/tests/auto/utf8/utf8.pro
@@ -1,3 +1,4 @@
load(qttest_p4)
QT -= gui
SOURCES += tst_utf8.cpp
+CONFIG += parallel_test
diff --git a/tests/benchmarks/corelib/tools/qstring/data.cpp b/tests/benchmarks/corelib/tools/qstring/data.cpp
index 6d1a069..d44a796 100644
--- a/tests/benchmarks/corelib/tools/qstring/data.cpp
+++ b/tests/benchmarks/corelib/tools/qstring/data.cpp
@@ -1,5 +1,8 @@
// This is a generated file - DO NOT EDIT
-static const ushort stringCollectionData[] __attribute__((aligned(16))) = {
+
+#include "data.h"
+
+const ushort stringCollectionData[] __attribute__((aligned(16))) = {
// #0
65535,
99, 111, 109, 112, 105, 108, 101, 114, 32, 118, 101, 114, 115, 105, 111, 110, 115, 47,
@@ -1123,15 +1126,9 @@ static const ushort stringCollectionData[] __attribute__((aligned(16))) = {
65535,
84, 69, 65, 77, 66, 85, 73, 76, 68, 69, 82, 61,
65535,65534,65533, // 5216
-
-
};
-static struct StringCollection
-{
- int len;
- int offset1, offset2;
- ushort align1, align2;
-} stringCollection[] = {
+
+const struct StringCollection stringCollection[] = {
{18, 1, 29, 3666, 106}, // #0
{18, 53, 77, 106, 1978}, // #1
{20, 97, 125, 2850, 3210}, // #2
@@ -1274,8 +1271,8 @@ static struct StringCollection
{12, 5153, 5169, 130, 2930}, // #139
{12, 5185, 5201, 242, 2930}, // #140
};
-static const int stringCollectionCount = 141;
-static const int stringCollectionMaxLen = 51;
+const int stringCollectionCount = 141;
+const int stringCollectionMaxLen = 51;
// average comparison length: 12.0922
// cache-line crosses: 6 (2.1%)
// alignment histogram:
diff --git a/tests/benchmarks/corelib/tools/qstring/data.h b/tests/benchmarks/corelib/tools/qstring/data.h
index c7a7467..ce733fb 100644
--- a/tests/benchmarks/corelib/tools/qstring/data.h
+++ b/tests/benchmarks/corelib/tools/qstring/data.h
@@ -39,6 +39,9 @@
**
****************************************************************************/
+#ifndef DATA_H
+#define DATA_H
+
#include <qglobal.h>
struct StringCollection
@@ -49,5 +52,7 @@ struct StringCollection
};
extern const ushort stringCollectionData[];
-extern StringCollection stringCollection[];
+extern const StringCollection stringCollection[];
extern const int stringCollectionCount;
+
+#endif // DATA_H
diff --git a/tests/benchmarks/corelib/tools/qstring/generatelist.pl b/tests/benchmarks/corelib/tools/qstring/generatelist.pl
index d027adb..48a8518 100644
--- a/tests/benchmarks/corelib/tools/qstring/generatelist.pl
+++ b/tests/benchmarks/corelib/tools/qstring/generatelist.pl
@@ -103,9 +103,10 @@ sub printUshortArray($$$) {
return ($offset + $headpadding, $offset + $headpadding + $len + $tailpadding);
}
+print "// This is a generated file - DO NOT EDIT\n\n";
+
print "#include \"data.h\"\n\n";
-print "// This is a generated file - DO NOT EDIT\n";
print "const ushort stringCollectionData[] __attribute__((aligned(64))) = {\n";
$count = 0;
$offset = 0;
@@ -160,11 +161,10 @@ while (1) {
$totalsize += $len;
$maxlen = $len if $len > $maxlen;
}
-print "\n};\n";
+print "};\n";
close IN;
-print "struct StringCollection stringCollection[] = {\n";
-
+print "const struct StringCollection stringCollection[] = {\n";
for $i (0..$count-1) {
print " {",
$data[$i]->{len}, ", ",
diff --git a/tests/benchmarks/script/qscriptqobject/tst_qscriptqobject.cpp b/tests/benchmarks/script/qscriptqobject/tst_qscriptqobject.cpp
index e68db06..62f3c2a 100644
--- a/tests/benchmarks/script/qscriptqobject/tst_qscriptqobject.cpp
+++ b/tests/benchmarks/script/qscriptqobject/tst_qscriptqobject.cpp
@@ -309,6 +309,9 @@ private slots:
void qobjectSignalHandler();
void customTypeSignalHandler();
+ void emitSignal_data();
+ void emitSignal();
+
void readButtonMetaProperty_data();
void readButtonMetaProperty();
@@ -948,6 +951,31 @@ void tst_QScriptQObject::customTypeSignalHandler()
}
}
+void tst_QScriptQObject::emitSignal_data()
+{
+ QTest::addColumn<QString>("propertyName");
+ QTest::addColumn<QString>("arguments");
+
+ QTest::newRow("voidSignal()") << "voidSignal" << "";
+
+ QTest::newRow("boolSignal(true)") << "boolSignal" << "true";
+ QTest::newRow("intSignal(123)") << "intSignal" << "123";
+ QTest::newRow("doubleSignal(123)") << "doubleSignal" << "123";
+ QTest::newRow("stringSignal('hello')") << "stringSignal" << "'hello'";
+ QTest::newRow("variantSignal(123)") << "variantSignal" << "123";
+ QTest::newRow("qobjectSignal(this)") << "qobjectSignal" << "this"; // assumes 'this' is a QObject
+}
+
+void tst_QScriptQObject::emitSignal()
+{
+ QFETCH(QString, propertyName);
+ QFETCH(QString, arguments);
+
+ QScriptEngine engine;
+ SignalTestObject testObject;
+ callMethodHelper(engine, &testObject, propertyName, arguments);
+}
+
void tst_QScriptQObject::readButtonMetaProperty_data()
{
readMetaProperty_dataHelper(&QPushButton::staticMetaObject);
diff --git a/tests/benchmarks/script/sunspider/tests/VERSION b/tests/benchmarks/script/sunspider/tests/VERSION
new file mode 100644
index 0000000..6aa91fb
--- /dev/null
+++ b/tests/benchmarks/script/sunspider/tests/VERSION
@@ -0,0 +1 @@
+SunSpider 0.9.1
diff --git a/tests/benchmarks/script/v8/tests/README.txt b/tests/benchmarks/script/v8/tests/README.txt
new file mode 100644
index 0000000..6676f37
--- /dev/null
+++ b/tests/benchmarks/script/v8/tests/README.txt
@@ -0,0 +1,79 @@
+V8 Benchmark Suite
+==================
+
+This is the V8 benchmark suite: A collection of pure JavaScript
+benchmarks that we have used to tune V8. The licenses for the
+individual benchmarks are included in the JavaScript files.
+
+In addition to the benchmarks, the suite consists of the benchmark
+framework (base.js), which must be loaded before any of the individual
+benchmark files, and two benchmark runners: An HTML version (run.html)
+and a standalone JavaScript version (run.js).
+
+
+Changes From Version 1 To Version 2
+===================================
+
+For version 2 the crypto benchmark was fixed. Previously, the
+decryption stage was given plaintext as input, which resulted in an
+error. Now, the decryption stage is given the output of the
+encryption stage as input. The result is checked against the original
+plaintext. For this to give the correct results the crypto objects
+are reset for each iteration of the benchmark. In addition, the size
+of the plain text has been increased a little and the use of
+Math.random() and new Date() to build an RNG pool has been removed.
+
+Other benchmarks were fixed to do elementary verification of the
+results of their calculations. This is to avoid accidentally
+obtaining scores that are the result of an incorrect JavaScript engine
+optimization.
+
+
+Changes From Version 2 To Version 3
+===================================
+
+Version 3 adds a new benchmark, RegExp. The RegExp benchmark is
+generated by loading 50 of the most popular pages on the web and
+logging all regexp operations performed. Each operation is given a
+weight that is calculated from an estimate of the popularity of the
+pages where it occurs and the number of times it is executed while
+loading each page. Finally the literal letters in the data are
+encoded using ROT13 in a way that does not affect how the regexps
+match their input.
+
+
+Changes from Version 3 to Version 4
+===================================
+
+The Splay benchmark is a newcomer in version 4. It manipulates a
+splay tree by adding and removing data nodes, thus exercising the
+memory management subsystem of the JavaScript engine.
+
+Furthermore, all the unused parts of the Prototype library were
+removed from the RayTrace benchmark. This does not affect the running
+of the benchmark.
+
+
+Changes from Version 4 to Version 5
+===================================
+
+Removed duplicate line in random seed code, and changed the name of
+the Object.prototype.inherits function in the DeltaBlue benchmark to
+inheritsFrom to avoid name clashes when running in Chromium with
+extensions enabled.
+
+
+Changes from Version 5 to Version 6
+===================================
+
+Removed dead code from the RayTrace benchmark and fixed a couple of
+typos in the DeltaBlue implementation. Changed the Splay benchmark to
+avoid converting the same numeric key to a string over and over again
+and to avoid inserting and removing the same element repeatedly thus
+increasing pressure on the memory subsystem. Changed the RegExp
+benchmark to exercise the regular expression engine on different
+input strings.
+
+Furthermore, the benchmark runner was changed to run the benchmarks
+for at least a few times to stabilize the reported numbers on slower
+machines.
diff --git a/tools/linguist/linguist/mainwindow.cpp b/tools/linguist/linguist/mainwindow.cpp
index 8520cf7..4896272 100644
--- a/tools/linguist/linguist/mainwindow.cpp
+++ b/tools/linguist/linguist/mainwindow.cpp
@@ -2498,8 +2498,8 @@ void MainWindow::updateDanger(const MultiDataIndex &index, bool verbose)
}
if (m_ui.actionPlaceMarkerMatches->isChecked()) {
- // Stores the occurence count of the place markers in the map placeMarkerIndexes.
- // i.e. the occurence count of %1 is stored at placeMarkerIndexes[1],
+ // Stores the occurrence count of the place markers in the map placeMarkerIndexes.
+ // i.e. the occurrence count of %1 is stored at placeMarkerIndexes[1],
// count of %2 is stored at placeMarkerIndexes[2] etc.
// In the first pass, it counts all place markers in the sourcetext.
// In the second pass it (de)counts all place markers in the translation.
diff --git a/tools/linguist/linguist/printout.cpp b/tools/linguist/linguist/printout.cpp
index 581dc00..7ec6875 100644
--- a/tools/linguist/linguist/printout.cpp
+++ b/tools/linguist/linguist/printout.cpp
@@ -130,7 +130,7 @@ void PrintOut::addBox(int percent, const QString &text, Style style, Qt::Alignme
cp.rect.setSize(QSize(cp.rect.width() + wd, qMax(cp.rect.height(), ht)));
}
-// use init if inital vsize should be calculated (first breakPage call)
+// use init if initial vsize should be calculated (first breakPage call)
void PrintOut::breakPage(bool init)
{
static const int LeftAlign = Qt::AlignLeft | Qt::AlignTop;
diff --git a/tools/macdeployqt/shared/shared.cpp b/tools/macdeployqt/shared/shared.cpp
index 52cf04b..c7d23c0 100644
--- a/tools/macdeployqt/shared/shared.cpp
+++ b/tools/macdeployqt/shared/shared.cpp
@@ -388,7 +388,7 @@ DeploymentInfo deployQtFrameworks(QList<FrameworkInfo> frameworks,
foreach (FrameworkInfo dependency, dependencies) {
changeInstallName(dependency.installName, dependency.deployedInstallName, deployedBinaryPath);
- // Deploy framework if neccesary.
+ // Deploy framework if necessary.
if (copiedFrameworks.contains(dependency.frameworkName) == false && frameworks.contains(dependency) == false) {
frameworks.append(dependency);
}
diff --git a/tools/porting/src/preprocessorcontrol.cpp b/tools/porting/src/preprocessorcontrol.cpp
index 673ed08..31adc32 100644
--- a/tools/porting/src/preprocessorcontrol.cpp
+++ b/tools/porting/src/preprocessorcontrol.cpp
@@ -154,7 +154,7 @@ QByteArray PreprocessorCache::readFile(const QString &filename) const
// read the file for us.
if (receivers(SIGNAL(readFile(QByteArray&,QString))) > 0) {
QByteArray array;
- // Workaround for "not beeing able to emit from const function"
+ // Workaround for "not being able to emit from const function"
PreprocessorCache *cache = const_cast<PreprocessorCache *>(this);
emit cache->readFile(array, filename);
return array;
diff --git a/tools/porting/src/textreplacement.h b/tools/porting/src/textreplacement.h
index f90fb82..f351552 100644
--- a/tools/porting/src/textreplacement.h
+++ b/tools/porting/src/textreplacement.h
@@ -53,7 +53,7 @@ class TextReplacement
public:
QByteArray newText;
int insertPosition;
- int currentLenght; //lenght of the text that is going to be replaced.
+ int currentLenght; //length of the text that is going to be replaced.
bool operator<(const TextReplacement &other) const
{
return (insertPosition < other.insertPosition);
@@ -70,7 +70,7 @@ public:
insert maintains the TextReplacement list in sorted order.
- Returns true if the insert was successfull, false otherwise;
+ Returns true if the insert was successful, false otherwise;
*/
bool insert(QByteArray newText, int insertPosition, int currentLenght);
void clear();
diff --git a/tools/qconfig/qconfig.pro b/tools/qconfig/qconfig.pro
index efbfcf2..171924f 100644
--- a/tools/qconfig/qconfig.pro
+++ b/tools/qconfig/qconfig.pro
@@ -6,5 +6,4 @@ build_all:!build_pass {
}
HEADERS = feature.h featuretreemodel.h graphics.h
SOURCES = main.cpp feature.cpp featuretreemodel.cpp
-INTERFACES =
TARGET = qconfig
diff --git a/tools/qdoc3/ditaxmlgenerator.cpp b/tools/qdoc3/ditaxmlgenerator.cpp
index a83a321..d43ad96 100644
--- a/tools/qdoc3/ditaxmlgenerator.cpp
+++ b/tools/qdoc3/ditaxmlgenerator.cpp
@@ -2015,7 +2015,7 @@ void DitaXmlGenerator::generateIncludes(const InnerNode *inner, CodeMarker *mark
}
/*!
- Generates a table of contents begining at \a node.
+ Generates a table of contents beginning at \a node.
*/
void DitaXmlGenerator::generateTableOfContents(const Node *node,
CodeMarker *marker,
@@ -2101,7 +2101,7 @@ void DitaXmlGenerator::generateTableOfContents(const Node *node,
/*!
Revised for the new doc format.
- Generates a table of contents begining at \a node.
+ Generates a table of contents beginning at \a node.
*/
void DitaXmlGenerator::generateTableOfContents(const Node *node,
CodeMarker *marker,
diff --git a/tools/qdoc3/doc/qdoc-manual.qdocconf b/tools/qdoc3/doc/qdoc-manual.qdocconf
index 5a725b9..9514d63 100644
--- a/tools/qdoc3/doc/qdoc-manual.qdocconf
+++ b/tools/qdoc3/doc/qdoc-manual.qdocconf
@@ -1,7 +1,7 @@
project = QDoc
description = QDoc3 Manual
-indexes = $QTDIR/doc/html/qt.index
+indexes = ../../../doc/html/qt.index
outputdir = html
@@ -9,41 +9,226 @@ sources = qdoc-manual.qdoc
sourcedirs = $PWD
exampledirs += $PWD \
- $QTDIR/examples
+ ../../../examples
imagedirs += images
extraimages.HTML = qt-logo
-HTML.stylesheets = classic.css
-
-HTML.style = "h3.fn,span.fn { margin-left: 1cm; text-indent: -1cm; }\n" \
- "a:link { color: #004faf; text-decoration: none }\n" \
- "a:visited { color: #672967; text-decoration: none }\n" \
- "td.postheader { font-family: sans-serif }\n" \
- "tr.address { font-family: sans-serif }\n" \
- "body { background: #ffffff; color: black; }"
-
-HTML.postheader = "<table border=\"0\" cellpadding=\"0\" cellspacing=\"5\" width=\"100%\">\n" \
- "<tr>\n" \
- "<td align=\"left\" valign=\"top\" width=\"32\">" \
- "<a href=\"http://qt.nokia.com/\"><img src=\"images/qt-logo.png\" align=\"left\" border=\"0\" /></a>" \
- "</td>\n" \
- "<td class=\"postheader\" valign=\"center\">" \
- "<a href=\"01-qdoc-manual.html\">" \
- "<font color=\"#004faf\">Home: QDoc Manual</font></a>&nbsp;&middot;" \
- "<a href=\"http://qt.nokia.com/doc/4.8\">" \
- "<font color=\"#004faf\"> Qt Reference Documentation</font></a>" \
- "</td>\n" \
- "</tr></table>"
-
-HTML.footer = "<p /><address><hr /><div align=\"center\">\n" \
- "<table width=\"100%\" cellspacing=\"0\" border=\"0\"><tr class=\"address\">\n" \
- "<td width=\"40%\" align=\"left\">Copyright &copy; 2010 Nokia Corporation and/or its subsidiary(-ies)</td>\n" \
- "<td width=\"20%\" align=\"center\"><a href=\"trademarks.html\">Trademarks</a></td>\n" \
- "<td width=\"40%\" align=\"right\"><div align=\"right\">Qt \\version</div></td>\n" \
- "</tr></table></div></address>"
-
-spurious += "Missing '\\}'"
-spurious += "Cannot use .*"
-spurious += "Unexpected .*"
+HTML.stylesheets = style/style.css \
+ style/OfflineStyle.css \
+ style/style_ie7.css \
+ style/style_ie8.css \
+ style/style_ie6.css
+
+HTML.postheader = " <div class=\"header\" id=\"qtdocheader\">\n" \
+ " <div class=\"content\"> \n" \
+ " <div id=\"nav-logo\">\n" \
+ " <a href=\"index.html\">Home</a></div>\n" \
+ " <a href=\"index.html\" class=\"qtref\"><span>Qt Reference Documentation</span></a>\n" \
+ " <div id=\"narrowsearch\"></div>\n" \
+ " <div id=\"nav-topright\">\n" \
+ " <ul>\n" \
+ " <li class=\"nav-topright-home\"><a href=\"http://qt.nokia.com/\">Qt HOME</a></li>\n" \
+ " <li class=\"nav-topright-dev\"><a href=\"http://developer.qt.nokia.com/\">DEV</a></li>\n" \
+ " <li class=\"nav-topright-labs\"><a href=\"http://labs.qt.nokia.com/blogs/\">LABS</a></li>\n" \
+ " <li class=\"nav-topright-doc nav-topright-doc-active\"><a href=\"http://doc.qt.nokia.com/\">\n" \
+ " DOC</a></li>\n" \
+ " <li class=\"nav-topright-blog\"><a href=\"http://blog.qt.nokia.com/\">BLOG</a></li>\n" \
+ " </ul>\n" \
+ " </div>\n" \
+ " <div id=\"shortCut\">\n" \
+ " <ul>\n" \
+ " <li class=\"shortCut-topleft-inactive\"><span><a href=\"index.html\">Qt 4.8</a></span></li>\n" \
+ " <li class=\"shortCut-topleft-active\"><a href=\"http://doc.qt.nokia.com\">ALL VERSIONS" \
+ " </a></li>\n" \
+ " </ul>\n" \
+ " </div>\n" \
+ " <ul class=\"sf-menu\" id=\"narrowmenu\"> \n" \
+ " <li><a href=\"#\">API Lookup</a> \n" \
+ " <ul> \n" \
+ " <li><a href=\"classes.html\">Class index</a></li> \n" \
+ " <li><a href=\"functions.html\">Function index</a></li> \n" \
+ " <li><a href=\"modules.html\">Modules</a></li> \n" \
+ " <li><a href=\"namespaces.html\">Namespaces</a></li> \n" \
+ " <li><a href=\"qtglobal.html\">Global Declarations</a></li> \n" \
+ " <li><a href=\"qdeclarativeelements.html\">QML elements</a></li> \n" \
+ " </ul> \n" \
+ " </li> \n" \
+ " <li><a href=\"#\">Qt Topics</a> \n" \
+ " <ul> \n" \
+ " <li><a href=\"qt-basic-concepts.html\">Programming with Qt</a></li> \n" \
+ " <li><a href=\"qtquick.html\">Device UIs &amp; Qt Quick</a></li> \n" \
+ " <li><a href=\"qt-gui-concepts.html\">UI Design with Qt</a></li> \n" \
+ " <li><a href=\"developing-with-qt.html\">Cross-platform and Platform-specific</a></li> \n" \
+ " <li><a href=\"platform-specific.html\">Platform-specific info</a></li> \n" \
+ " <li><a href=\"technology-apis.html\">Qt and Key Technologies</a></li> \n" \
+ " <li><a href=\"best-practices.html\">How-To's and Best Practices</a></li> \n" \
+ " </ul> \n" \
+ " </li> \n" \
+ " <li><a href=\"#\">Examples</a> \n" \
+ " <ul> \n" \
+ " <li><a href=\"all-examples.html\">Examples</a></li> \n" \
+ " <li><a href=\"tutorials.html\">Tutorials</a></li> \n" \
+ " <li><a href=\"demos.html\">Demos</a></li> \n" \
+ " <li><a href=\"qdeclarativeexamples.html\">QML Examples</a></li> \n" \
+ " </ul> \n" \
+ " </li> \n" \
+ " </ul> \n" \
+ " </div>\n" \
+ " </div>\n" \
+ " <div class=\"wrapper\">\n" \
+ " <div class=\"hd\">\n" \
+ " <span></span>\n" \
+ " </div>\n" \
+ " <div class=\"bd group\">\n" \
+ " <div class=\"sidebar\">\n" \
+ " <div class=\"searchlabel\">\n" \
+ " Search index:</div>\n" \
+ " <div class=\"search\" id=\"sidebarsearch\">\n" \
+ " <form id=\"qtdocsearch\" action=\"\" onsubmit=\"return false;\">\n" \
+ " <fieldset>\n" \
+ " <input type=\"text\" name=\"searchstring\" id=\"pageType\" value=\"\" />\n" \
+ " <div id=\"resultdialog\"> \n" \
+ " <a href=\"#\" id=\"resultclose\">Close</a> \n" \
+ " <p id=\"resultlinks\" class=\"all\"><a href=\"#\" id=\"showallresults\">All</a> | <a href=\"#\" id=\"showapiresults\">API</a> | <a href=\"#\" id=\"showarticleresults\">Articles</a> | <a href=\"#\" id=\"showexampleresults\">Examples</a></p> \n" \
+ " <p id=\"searchcount\" class=\"all\"><span id=\"resultcount\"></span><span id=\"apicount\"></span><span id=\"articlecount\"></span><span id=\"examplecount\"></span>&nbsp;results:</p> \n" \
+ " <ul id=\"resultlist\" class=\"all\"> \n" \
+ " </ul> \n" \
+ " </div> \n" \
+ " </fieldset>\n" \
+ " </form>\n" \
+ " </div>\n" \
+ " <div class=\"box first bottombar\" id=\"lookup\">\n" \
+ " <h2 title=\"API Lookup\"><span></span>\n" \
+ " API Lookup</h2>\n" \
+ " <div id=\"list001\" class=\"list\">\n" \
+ " <ul id=\"ul001\" >\n" \
+ " <li class=\"defaultLink\"><a href=\"classes.html\">Class index</a></li>\n" \
+ " <li class=\"defaultLink\"><a href=\"functions.html\">Function index</a></li>\n" \
+ " <li class=\"defaultLink\"><a href=\"modules.html\">Modules</a></li>\n" \
+ " <li class=\"defaultLink\"><a href=\"namespaces.html\">Namespaces</a></li>\n" \
+ " <li class=\"defaultLink\"><a href=\"qtglobal.html\">Global Declarations</a></li>\n" \
+ " <li class=\"defaultLink\"><a href=\"qdeclarativeelements.html\">QML elements</a></li>\n" \
+ " </ul> \n" \
+ " </div>\n" \
+ " </div>\n" \
+ " <div class=\"box bottombar\" id=\"topics\">\n" \
+ " <h2 title=\"Qt Topics\"><span></span>\n" \
+ " Qt Topics</h2>\n" \
+ " <div id=\"list002\" class=\"list\">\n" \
+ " <ul id=\"ul002\" >\n" \
+ " <li class=\"defaultLink\"><a href=\"qt-basic-concepts.html\">Programming with Qt</a></li> \n" \
+ " <li class=\"defaultLink\"><a href=\"qtquick.html\">Device UIs &amp; Qt Quick</a></li> \n" \
+ " <li class=\"defaultLink\"><a href=\"qt-gui-concepts.html\">UI Design with Qt</a></li> \n" \
+ " <li class=\"defaultLink\"><a href=\"developing-with-qt.html\">Cross-platform and Platform-specific</a></li> \n" \
+ " <li class=\"defaultLink\"><a href=\"platform-specific.html\">Platform-specific info</a></li> \n" \
+ " <li class=\"defaultLink\"><a href=\"technology-apis.html\">Qt and Key Technologies</a></li> \n" \
+ " <li class=\"defaultLink\"><a href=\"best-practices.html\">How-To's and Best Practices</a></li> \n" \
+ " </ul> \n" \
+ " </div>\n" \
+ " </div>\n" \
+ " <div class=\"box\" id=\"examples\">\n" \
+ " <h2 title=\"Examples\"><span></span>\n" \
+ " Examples</h2>\n" \
+ " <div id=\"list003\" class=\"list\">\n" \
+ " <ul id=\"ul003\">\n" \
+ " <li class=\"defaultLink\"><a href=\"all-examples.html\">Examples</a></li>\n" \
+ " <li class=\"defaultLink\"><a href=\"tutorials.html\">Tutorials</a></li>\n" \
+ " <li class=\"defaultLink\"><a href=\"demos.html\">Demos</a></li>\n" \
+ " <li class=\"defaultLink\"><a href=\"qdeclarativeexamples.html\">QML Examples</a></li>\n" \
+ " </ul> \n" \
+ " </div>\n" \
+ " </div>\n" \
+ " </div>\n" \
+ " <div class=\"wrap\">\n" \
+ " <div class=\"toolbar\">\n" \
+ " <div class=\"breadcrumb toolblock\">\n" \
+ " <ul>\n" \
+ " <li class=\"first\"><a href=\"index.html\">Home</a></li>\n" \
+ " <!-- Bread crumbs goes here -->\n"
+
+HTML.postpostheader = " </ul>\n" \
+ " </div>\n" \
+ " <div class=\"toolbuttons toolblock\">\n" \
+ " <ul>\n" \
+ " <li id=\"smallA\" class=\"t_button\">A</li>\n" \
+ " <li id=\"medA\" class=\"t_button active\">A</li>\n" \
+ " <li id=\"bigA\" class=\"t_button\">A</li>\n" \
+ " <li id=\"print\" class=\"t_button\"><a href=\"javascript:this.print();\">\n" \
+ " <span>Print</span></a></li>\n" \
+ " </ul>\n" \
+ " </div>\n" \
+ " </div>\n" \
+ " <div class=\"content mainContent\">\n"
+
+HTML.footer = "" \
+ " <div class=\"feedback t_button\">\n" \
+ " [+] Documentation Feedback</div>\n" \
+ " </div>\n" \
+ " </div>\n" \
+ " </div> \n" \
+ " <div class=\"ft\">\n" \
+ " <span></span>\n" \
+ " </div>\n" \
+ " </div> \n" \
+ " <div class=\"footer\">\n" \
+ " <p>\n" \
+ " <acronym title=\"Copyright\">&copy;</acronym> 2008-2010 Nokia Corporation and/or its\n" \
+ " subsidiaries. Nokia, Qt and their respective logos are trademarks of Nokia Corporation \n" \
+ " in Finland and/or other countries worldwide.</p>\n" \
+ " <p>\n" \
+ " All other trademarks are property of their respective owners. <a title=\"Privacy Policy\"\n" \
+ " href=\"http://qt.nokia.com/about/privacy-policy\">Privacy Policy</a></p>\n" \
+ " <br />\n" \
+ " <p>\n" \
+ " Licensees holding valid Qt Commercial licenses may use this document 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.</p>\n" \
+ " <p>\n" \
+ " Alternatively, this document may be used under the terms of the <a href=\"http://www.gnu.org/licenses/fdl.html\">GNU\n" \
+ " Free Documentation License version 1.3</a>\n" \
+ " as published by the Free Software Foundation.</p>\n" \
+ " </div>\n" \
+ " <div id=\"feedbackBox\">\n" \
+ " <div id=\"feedcloseX\" class=\"feedclose t_button\">X</div>\n" \
+ " <form id=\"feedform\" action=\"http://doc.qt.nokia.com/docFeedbck/feedback.php\" method=\"get\">\n" \
+ " <p id=\"noteHead\">Thank you for giving your feedback.</p> <p class=\"note\">Make sure it is related to this specific page. For more general bugs and \n" \
+ " requests, please use the <a href=\"http://bugreports.qt.nokia.com/secure/Dashboard.jspa\">Qt Bug Tracker</a>.</p>\n" \
+ " <p><textarea id=\"feedbox\" name=\"feedText\" rows=\"5\" cols=\"40\"></textarea></p>\n" \
+ " <p><input id=\"feedsubmit\" class=\"feedclose\" type=\"submit\" name=\"feedback\" /></p>\n" \
+ " </form>\n" \
+ " </div>\n" \
+ " <div id=\"blurpage\">\n" \
+ " </div>\n"
+
+# This stuff is used by the Qt 4.7 doc format.
+scriptdirs = ../../../doc/src/template/scripts
+styledirs = ../../../doc/src/template/style
+
+scripts.HTML = functions.js \
+ narrow.js \
+ superfish.js \
+ jquery.js
+
+styles.HTML = style.css \
+ narrow.css \
+ superfish.css \
+ superfish_skin.css \
+ style_ie6.css \
+ style_ie7.css \
+ style_ie8.css
+
+# Files not referenced in any qdoc file (last four are needed by qtdemo)
+# See also extraimages.HTML
+qhp.Qt.extraFiles = scripts/functions.js \
+ scripts/jquery.js \
+ scripts/narrow.js \
+ scripts/superfish.js \
+ style/narrow.css \
+ style/superfish.css \
+ style/style_ie6.css \
+ style/style_ie7.css \
+ style/style_ie8.css \
+ style/style.css
+
diff --git a/tools/qdoc3/htmlgenerator.cpp b/tools/qdoc3/htmlgenerator.cpp
index fb04175..9e45f8c 100644
--- a/tools/qdoc3/htmlgenerator.cpp
+++ b/tools/qdoc3/htmlgenerator.cpp
@@ -1930,7 +1930,7 @@ void HtmlGenerator::generateHeader(const QString& title,
}
if (node && !node->links().empty())
- out() << "<p>\n" << navigationLinks << "</p><p/>\n";
+ out() << "<p class=\"naviNextPrevious headerNavi\">\n" << navigationLinks << "</p><p/>\n";
}
void HtmlGenerator::generateTitle(const QString& title,
@@ -1955,7 +1955,7 @@ void HtmlGenerator::generateTitle(const QString& title,
void HtmlGenerator::generateFooter(const Node *node)
{
if (node && !node->links().empty())
- out() << "<p>\n" << navigationLinks << "</p>\n";
+ out() << "<p class=\"naviNextPrevious footerNavi\">\n" << navigationLinks << "</p>\n";
out() << QString(footer).replace("\\" + COMMAND_VERSION, myTree->version())
<< QString(address).replace("\\" + COMMAND_VERSION, myTree->version());
@@ -3719,7 +3719,11 @@ void HtmlGenerator::findAllClasses(const InnerNode *node)
(*c)->subType() == Node::QmlClass &&
!(*c)->doc().isEmpty()) {
QString qmlClassName = (*c)->name();
- qmlClasses.insert(qmlClassName,*c);
+ // Remove the "QML:" prefix if present.
+ if (qmlClassName.startsWith(QLatin1String("QML:")))
+ qmlClasses.insert(qmlClassName.mid(4),*c);
+ else
+ qmlClasses.insert(qmlClassName,*c);
}
else if ((*c)->isInnerNode()) {
findAllClasses(static_cast<InnerNode *>(*c));
diff --git a/tools/qdoc3/tokenizer.h b/tools/qdoc3/tokenizer.h
index bd35965..1b33f6f 100644
--- a/tools/qdoc3/tokenizer.h
+++ b/tools/qdoc3/tokenizer.h
@@ -145,7 +145,7 @@ class Tokenizer
int ch = getch();
if (ch == EOF)
return EOF;
- // cast explicitely to make sure the value of ch
+ // cast explicitly to make sure the value of ch
// is in range [0..255] to avoid assert messages
// when using debug CRT that checks its input.
return int(uint(uchar(ch)));
diff --git a/tools/qdoc3/tree.cpp b/tools/qdoc3/tree.cpp
index 540ffa9..d1e2c60 100644
--- a/tools/qdoc3/tree.cpp
+++ b/tools/qdoc3/tree.cpp
@@ -1543,8 +1543,72 @@ bool Tree::generateIndexSection(QXmlStreamWriter &writer,
return true;
}
+
/*!
- */
+ Returns true if the node \a n1 is less than node \a n2.
+ The comparison is performed by comparing properties of the nodes in order
+ of increasing complexity.
+*/
+bool compareNodes(const Node *n1, const Node *n2)
+{
+ // Private nodes can occur in any order since they won't normally be
+ // written to the index.
+ if (n1->access() == Node::Private && n2->access() == Node::Private)
+ return true;
+
+ if (n1->location().filePath() < n2->location().filePath())
+ return true;
+ else if (n1->location().filePath() > n2->location().filePath())
+ return false;
+
+ if (n1->type() < n2->type())
+ return true;
+ else if (n1->type() > n2->type())
+ return false;
+
+ if (n1->name() < n2->name())
+ return true;
+ else if (n1->name() > n2->name())
+ return false;
+
+ if (n1->access() < n2->access())
+ return true;
+ else if (n1->access() > n2->access())
+ return false;
+
+ if (n1->type() == Node::Function && n2->type() == Node::Function) {
+ const FunctionNode *f1 = static_cast<const FunctionNode *>(n1);
+ const FunctionNode *f2 = static_cast<const FunctionNode *>(n2);
+
+ if (f1->isConst() < f2->isConst())
+ return true;
+ else if (f1->isConst() > f2->isConst())
+ return false;
+
+ if (f1->signature() < f2->signature())
+ return true;
+ else if (f1->signature() > f2->signature())
+ return false;
+ }
+
+ if (n1->type() == Node::Fake && n2->type() == Node::Fake) {
+ const FakeNode *f1 = static_cast<const FakeNode *>(n1);
+ const FakeNode *f2 = static_cast<const FakeNode *>(n2);
+ if (f1->fullTitle() < f2->fullTitle())
+ return true;
+ else if (f1->fullTitle() > f2->fullTitle())
+ return false;
+ }
+
+ return false;
+}
+
+/*!
+ Generate index sections for the child nodes of the given \a node
+ using the \a writer specified. If \a generateInternalNodes is true,
+ nodes marked as internal will be included in the index; otherwise,
+ they will be omitted.
+*/
void Tree::generateIndexSections(QXmlStreamWriter &writer,
const Node *node,
bool generateInternalNodes) const
@@ -1554,7 +1618,10 @@ void Tree::generateIndexSections(QXmlStreamWriter &writer,
if (node->isInnerNode()) {
const InnerNode *inner = static_cast<const InnerNode *>(node);
- foreach (const Node *child, inner->childNodes()) {
+ NodeList cnodes = inner->childNodes();
+ qSort(cnodes.begin(), cnodes.end(), compareNodes);
+
+ foreach (const Node *child, cnodes) {
/*
Don't generate anything for a QML property group node.
It is just a place holder for a collection of QML property
diff --git a/tools/qmeegographicssystemhelper/qmeegofencesync.cpp b/tools/qmeegographicssystemhelper/qmeegofencesync.cpp
new file mode 100644
index 0000000..499e102
--- /dev/null
+++ b/tools/qmeegographicssystemhelper/qmeegofencesync.cpp
@@ -0,0 +1,79 @@
+/****************************************************************************
+**
+** 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 "qmeegofencesync.h"
+#include "qmeegofencesync_p.h"
+#include "qmeegoruntime.h"
+
+/* QMeeGoFenceSyncPrivate */
+
+QMeeGoFenceSyncPrivate::QMeeGoFenceSyncPrivate() : syncObject(NULL)
+{
+}
+
+QMeeGoFenceSyncPrivate::~QMeeGoFenceSyncPrivate()
+{
+ if (syncObject) {
+ QMeeGoRuntime::destroyFenceSync(syncObject);
+ syncObject = NULL;
+ }
+}
+
+/* QMeeGoFenceSync */
+
+QMeeGoFenceSync::QMeeGoFenceSync(QWidget *parent) : QObject(parent), d_ptr(new QMeeGoFenceSyncPrivate())
+{
+ Q_D(QMeeGoFenceSync);
+ d->q_ptr = this;
+}
+
+QMeeGoFenceSync::~QMeeGoFenceSync()
+{
+}
+
+void QMeeGoFenceSync::setSyncPoint()
+{
+ Q_D(QMeeGoFenceSync);
+ if (d->syncObject)
+ QMeeGoRuntime::destroyFenceSync(d->syncObject);
+
+ d->syncObject = QMeeGoRuntime::createFenceSync();
+}
diff --git a/tools/qmeegographicssystemhelper/qmeegofencesync.h b/tools/qmeegographicssystemhelper/qmeegofencesync.h
new file mode 100644
index 0000000..2d3f5c5
--- /dev/null
+++ b/tools/qmeegographicssystemhelper/qmeegofencesync.h
@@ -0,0 +1,101 @@
+/****************************************************************************
+**
+** 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$
+**
+****************************************************************************/
+
+#ifndef QMEEGOFENCESYNC_H
+#define QMEEGOFENCESYNC_H
+
+#include <QWidget>
+
+class QMeeGoFenceSyncPrivate;
+
+//! A synchronization helper for GL pipeline.
+/*!
+ Fence syncs provide a mechanism for synchronizing access to certain GL primitives
+ and make it possible for the application developer to be sure that a certain point
+ in the GL processing pipeline has been already executed before continuing operation.
+
+ Currently fence syncs are only useful in conjunction with QMeeGoLivePixmaps.
+ \code
+ ...
+ // In your paint/expose event:
+ QImage *image = livePixmap->lock(&someGlobalFenceSync);
+ // Modify the image...
+ livePixmap->release(image);
+
+ painter->drawPixmap(0, 0, *livePixmap);
+ someGlobalFenceSync.setSyncPoint();
+ ...
+ \endcode
+
+ Assuming the paint/expose events come repeatedly, the lock operation
+ will block till the previous event completed painting the livePixmap.
+*/
+
+class Q_DECL_EXPORT QMeeGoFenceSync : public QObject
+{
+public:
+ //! Constructs a new fence sync.
+ /*!
+ The fence sync is created without a sync point. You need to set the sync point manually.
+ */
+ QMeeGoFenceSync(QWidget *parent = 0);
+
+ //! Destructor for the fence sync.
+ virtual ~QMeeGoFenceSync();
+
+ //! Sets the fence sync.
+ /*!
+ The fence sync synchronization point should be set after all drawing has been scheduled.
+ Setting a synchronization point always overrides the previous point -- whetver is was
+ used (waited upon) or not.
+ */
+ void setSyncPoint();
+
+private:
+ Q_DISABLE_COPY(QMeeGoFenceSync)
+ Q_DECLARE_PRIVATE(QMeeGoFenceSync)
+
+protected:
+ QScopedPointer<QMeeGoFenceSyncPrivate> d_ptr; //! Private bits.
+ friend class QMeeGoLivePixmap;
+};
+
+#endif
diff --git a/tools/qmeegographicssystemhelper/qmeegofencesync_p.h b/tools/qmeegographicssystemhelper/qmeegofencesync_p.h
new file mode 100644
index 0000000..8a5d26e
--- /dev/null
+++ b/tools/qmeegographicssystemhelper/qmeegofencesync_p.h
@@ -0,0 +1,60 @@
+/****************************************************************************
+**
+** 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 "qmeegofencesync.h"
+
+#ifndef QMEEGOFENCESYNC_P_H
+#define QMEEGOFENCESYNC_P_H
+
+class QMeeGoFenceSyncPrivate
+{
+public:
+ Q_DECLARE_PUBLIC(QMeeGoFenceSync);
+ QMeeGoFenceSyncPrivate();
+
+ virtual ~QMeeGoFenceSyncPrivate();
+
+ void* syncObject;
+
+ QMeeGoFenceSync *q_ptr;
+};
+
+#endif
diff --git a/tools/qmeegographicssystemhelper/qmeegographicssystemhelper.pro b/tools/qmeegographicssystemhelper/qmeegographicssystemhelper.pro
index 7412fc3..161a31b 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
-SOURCES = qmeegographicssystemhelper.cpp qmeegooverlaywidget.cpp qmeegoruntime.cpp qmeegolivepixmap.cpp qmeegographicssystemhelper.h qmeegooverlaywidget.h qmeegolivepixmap.h qmeegoruntime.h qmeegolivepixmap_p.h
+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
diff --git a/tools/qmeegographicssystemhelper/qmeegolivepixmap.cpp b/tools/qmeegographicssystemhelper/qmeegolivepixmap.cpp
index d43efe2..9700581f 100644
--- a/tools/qmeegographicssystemhelper/qmeegolivepixmap.cpp
+++ b/tools/qmeegographicssystemhelper/qmeegolivepixmap.cpp
@@ -41,6 +41,7 @@
#include "qmeegolivepixmap.h"
#include "qmeegolivepixmap_p.h"
+#include "qmeegofencesync_p.h"
#include "qmeegoruntime.h"
/* QMeeGoLivePixmapPrivate */
@@ -102,10 +103,12 @@ QMeeGoLivePixmap::~QMeeGoLivePixmap()
{
}
-QImage* QMeeGoLivePixmap::lock()
+QImage* QMeeGoLivePixmap::lock(QMeeGoFenceSync *fenceSync)
{
- return QMeeGoRuntime::lockLiveTexture(this);
-
+ if (fenceSync)
+ return QMeeGoRuntime::lockLiveTexture(this, fenceSync->d_func()->syncObject);
+ else
+ return QMeeGoRuntime::lockLiveTexture(this, NULL);
}
void QMeeGoLivePixmap::release(QImage *img)
diff --git a/tools/qmeegographicssystemhelper/qmeegolivepixmap.h b/tools/qmeegographicssystemhelper/qmeegolivepixmap.h
index 7be2c4b..51b5976 100644
--- a/tools/qmeegographicssystemhelper/qmeegolivepixmap.h
+++ b/tools/qmeegographicssystemhelper/qmeegolivepixmap.h
@@ -43,6 +43,7 @@
#define QMEEGOLIVEPIXMAP_H
#include <QPixmap>
+#include "qmeegofencesync.h"
class QMeeGoLivePixmapPrivate;
class QSharedMemory;
@@ -82,8 +83,12 @@ public:
//! Locks the access to the pixmap.
/*!
The returned image can be used for direct access.
+ You can optionally specify a fence sync to wait upon before unlocking. When
+ you specify a fence sync, you can be sure that this function will return only
+ when the previsouly set QMeeGoFenceSync synchronization point has been executed/passed
+ by the GL processing pipeline.
*/
- QImage* lock();
+ QImage* lock(QMeeGoFenceSync *fenceSync = NULL);
//! Unlocks the access to the pixmap.
/*!
diff --git a/tools/qmeegographicssystemhelper/qmeegoruntime.cpp b/tools/qmeegographicssystemhelper/qmeegoruntime.cpp
index ac627e5..2d3ee3c 100644
--- a/tools/qmeegographicssystemhelper/qmeegoruntime.cpp
+++ b/tools/qmeegographicssystemhelper/qmeegoruntime.cpp
@@ -60,9 +60,11 @@ typedef void (*QMeeGoSetSurfaceScalingFunc) (int x, int y, int w, int h);
typedef void (*QMeeGoSetTranslucentFunc) (bool translucent);
typedef QPixmapData* (*QMeeGoPixmapDataWithNewLiveTextureFunc) (int w, int h, QImage::Format format);
typedef QPixmapData* (*QMeeGoPixmapDataFromLiveTextureHandleFunc) (Qt::HANDLE h);
-typedef QImage* (*QMeeGoLiveTextureLockFunc) (QPixmap*);
+typedef QImage* (*QMeeGoLiveTextureLockFunc) (QPixmap*, void* fenceSync);
typedef bool (*QMeeGoLiveTextureReleaseFunc) (QPixmap*, QImage *i);
typedef Qt::HANDLE (*QMeeGoLiveTextureGetHandleFunc) (QPixmap*);
+typedef void* (*QMeeGoCreateFenceSyncFunc) (void);
+typedef void (*QMeeGoDestroyFenceSyncFunc) (void *fs);
static QMeeGoImageToEglSharedImageFunc qt_meego_image_to_egl_shared_image = NULL;
static QMeeGoPixmapDataFromEglSharedImageFunc qt_meego_pixmapdata_from_egl_shared_image = NULL;
@@ -77,6 +79,8 @@ static QMeeGoPixmapDataFromLiveTextureHandleFunc qt_meego_pixmapdata_from_live_t
static QMeeGoLiveTextureLockFunc qt_meego_live_texture_lock = NULL;
static QMeeGoLiveTextureReleaseFunc qt_meego_live_texture_release = NULL;
static QMeeGoLiveTextureGetHandleFunc qt_meego_live_texture_get_handle = NULL;
+static QMeeGoCreateFenceSyncFunc qt_meego_create_fence_sync = NULL;
+static QMeeGoDestroyFenceSyncFunc qt_meego_destroy_fence_sync = NULL;
void QMeeGoRuntime::initialize()
{
@@ -103,12 +107,15 @@ void QMeeGoRuntime::initialize()
qt_meego_live_texture_lock = (QMeeGoLiveTextureLockFunc) library.resolve("qt_meego_live_texture_lock");
qt_meego_live_texture_release = (QMeeGoLiveTextureReleaseFunc) library.resolve("qt_meego_live_texture_release");
qt_meego_live_texture_get_handle = (QMeeGoLiveTextureGetHandleFunc) library.resolve("qt_meego_live_texture_get_handle");
+ qt_meego_create_fence_sync = (QMeeGoCreateFenceSyncFunc) library.resolve("qt_meego_create_fence_sync");
+ qt_meego_destroy_fence_sync = (QMeeGoDestroyFenceSyncFunc) library.resolve("qt_meego_destroy_fence_sync");
if (qt_meego_image_to_egl_shared_image && qt_meego_pixmapdata_from_egl_shared_image &&
qt_meego_pixmapdata_with_gl_texture && qt_meego_destroy_egl_shared_image && qt_meego_update_egl_shared_image_pixmap &&
qt_meego_set_surface_fixed_size && qt_meego_set_surface_scaling && qt_meego_set_translucent &&
qt_meego_pixmapdata_with_new_live_texture && qt_meego_pixmapdata_from_live_texture_handle &&
- qt_meego_live_texture_lock && qt_meego_live_texture_release && qt_meego_live_texture_get_handle)
+ qt_meego_live_texture_lock && qt_meego_live_texture_release && qt_meego_live_texture_get_handle &&
+ qt_meego_create_fence_sync && qt_meego_destroy_fence_sync)
{
qDebug("Successfully resolved MeeGo graphics system: %s %s\n", qPrintable(libraryPrivate->fileName), qPrintable(libraryPrivate->fullVersion));
} else {
@@ -191,11 +198,11 @@ QPixmapData* QMeeGoRuntime::pixmapDataFromLiveTextureHandle(Qt::HANDLE h)
return qt_meego_pixmapdata_from_live_texture_handle(h);
}
-QImage* QMeeGoRuntime::lockLiveTexture(QPixmap *p)
+QImage* QMeeGoRuntime::lockLiveTexture(QPixmap *p, void* fenceSync)
{
ENSURE_INITIALIZED;
Q_ASSERT(qt_meego_live_texture_lock);
- return qt_meego_live_texture_lock(p);
+ return qt_meego_live_texture_lock(p, fenceSync);
}
bool QMeeGoRuntime::releaseLiveTexture(QPixmap *p, QImage *i)
@@ -211,3 +218,17 @@ Qt::HANDLE QMeeGoRuntime::getLiveTextureHandle(QPixmap *pixmap)
Q_ASSERT(qt_meego_live_texture_get_handle);
return qt_meego_live_texture_get_handle(pixmap);
}
+
+void* QMeeGoRuntime::createFenceSync()
+{
+ ENSURE_INITIALIZED;
+ Q_ASSERT(qt_meego_create_fence_sync);
+ return qt_meego_create_fence_sync();
+}
+
+void QMeeGoRuntime::destroyFenceSync(void *fs)
+{
+ ENSURE_INITIALIZED;
+ Q_ASSERT(qt_meego_destroy_fence_sync);
+ qt_meego_destroy_fence_sync(fs);
+}
diff --git a/tools/qmeegographicssystemhelper/qmeegoruntime.h b/tools/qmeegographicssystemhelper/qmeegoruntime.h
index 6b34836..be6ff6b 100644
--- a/tools/qmeegographicssystemhelper/qmeegoruntime.h
+++ b/tools/qmeegographicssystemhelper/qmeegoruntime.h
@@ -57,9 +57,11 @@ public:
static void setTranslucent(bool translucent);
static QPixmapData* pixmapDataWithNewLiveTexture(int w, int h, QImage::Format format);
static QPixmapData* pixmapDataFromLiveTextureHandle(Qt::HANDLE h);
- static QImage* lockLiveTexture(QPixmap *pixmap);
+ static QImage* lockLiveTexture(QPixmap *pixmap, void *fenceSync);
static bool releaseLiveTexture(QPixmap *pixmap, QImage *image);
static Qt::HANDLE getLiveTextureHandle(QPixmap *pixmap);
+ static void* createFenceSync();
+ static void destroyFenceSync(void *fs);
private:
static bool initialized;